{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# thumb\n", "\n", "> Fill in a module description here" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#| default_exp thumb" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "import io, base64, re\n", "import nbformat\n", "from PIL import Image\n", "from fastcore.foundation import L\n", "from fastcore.test import test_fail\n", "from io import BytesIO" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get an image from a notebook\n", "\n", "Note: this only works for `png` images. Other file types will not work at the moment." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "def _decode_img(base64_str):\n", " img = Image.open(BytesIO(base64.b64decode(base64_str)))\n", " if img.mode == \"RGBA\":\n", " img = img.convert(\"RGB\")\n", " return img\n", "\n", "def get_img(nb_path, label='thumbnail'):\n", " \"Get image from notebook with a quarto cell directive with `#|label: {label}`\"\n", " out_plots = None\n", " lbl = re.compile(f'#\\|(\\s*)label:(\\s*){label}')\n", " nb = nbformat.read(open(nb_path), as_version=4)\n", " for cell in nb.cells:\n", " if lbl.search(cell.source):\n", " out_plots = [x for x in cell.outputs if x.output_type == \"display_data\" and 'data' in x]\n", " if out_plots:\n", " data = out_plots[0]['data']\n", " if 'image/png' not in data: \n", " raise Exception(f'{nb_path}: thumbnails are only supported for `image/png`, found {data.keys()}')\n", " return _decode_img(data['image/png'])\n", " else:\n", " raise Exception(f'{nb_path}: cell with `#|label: {label}` does not have an output type of `display_data`')\n", " if out_plots is None:\n", " raise Exception(f'{nb_path} does not contain a cell with `#|label: {label}`')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`get_img` allows you to get images from cells that contain a certain label. For example, consider the following cell in `test_nbs/geom_col.ipynb`:\n", "\n", "```python\n", "#|label: two_variable_bar_plot\n", "#|fig-cap: Two variable bar plot\n", "\n", "(ggplot(df, aes(x='variable', y='value', fill='category'))\n", " + geom_col(stat='identity', position='dodge'))\n", "```\n", "\n", "You can extract the plot from that notebook like this:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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rKwMb2ZycHDYvHlz9+7d85Z68+bNgQMH/vPPP0aX4O7uvnfv3tatW+v1+nHjxq1atcqw6fTp07169TLciba2tlqt1lC2p6fn4cOH807qDgkJUaaF//jjj0pEL8wrr7yycuVK5fPcuXMN62OXD0aAAQAAAKDY3N3dQ0JCXnrpJWWANy0tTUm/dnZ2b7/99o4dOwzTmJcsWfLmm28qb/rJyclRYmSzZs327Nkzd+5cw/O6KSkpeZe2WrNmTadOnaytra2srBo3bmxot7Oz271797vvvqtMcn7w4IGSfjUaTffu3U+dOmWUfkWkTp06p06d+uabb9q3b+/g4GBjY1O/fv033njjzJkzDRo0UKK10Sud2rRpc+LECcOqXenp6UrZWq128ODBp06dKvCR5qIwrPms0WhGjRpVsoOUGCPAj8AIMIqFEWCVYwS4MIwAAygi7lMUi2lHgA2ioqL2798fHR2trNLcuXNnJyen/N0iIiL27dsXHx/v6en55JNPtmnTxrDp4sWL27ZtMzc379WrV/PmzYt43vv37+/bt+/69evZ2dk1a9bs1KlT3bp1i1t8eHi4srL0nDlz8k6cNrh+/frhw4fv3r1rZWXl5eXVpUsXT0/P4p4lr+zsbHt7+6ysrI4dOx4+fPhxDlUCvAcYAAAAAErOy8trzJgxj+zm4+Pz6quvFripSZMmTZo0Ke55HRwchgwZ8shud+/ezcnJMTc3r169ev6toaGhygclBudXr169evXqFbe2hzh06JDyIPTLL79cioctIqZAAwAAAECV5efnV7t2bW9vb6MFpRVr1qxRPnTs2LF86lEecnZycho6dGj5nDEvAjAAAAAAVFmdOnUSkezs7Pfee89o0zfffBMcHCwiPXv29Pb2Lodibt68uXnzZhEZN26cra1tOZzRCFOgAQAAAKDKmjx58rJly1JTU7/66qs///yzb9++Li4usbGxu3btUlaZtrOzW7ZsWZnW8Pvvv+/Zs8fOzm7NmjVZWVnm5uZTp04t0zMWhgAMAAAAAFWWt7f35s2b/f3979279+eff/755595t1avXn3Dhg3169cv0xoiIyM/++wzw5dTp0718fEp0zMWhgAMAAAAAFVZjx49wsLCli1btn379suXLz948MDDw6Nu3bovvPDC6NGj3dzcyroAFxcXGxubnJwcHx+fcePGzZo1q6zP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ub311lvm5uY3b948evSoCcoFAAAAgHLn4uLSp0+f7OzsjRs35m2/devW0aNHXV1de/XqZbTLjBkzHjx4MGTIkLi4uNu3b8fExFy7dq1Dhw45OTkffPDBQ841e/bsoKCg2rVr7969+/79+xEREXFxcZMnT05JSRkyZMidO3dK//KKr1IG4AcPHixcuFCj0cyYMcNoU0REhDLPuX///nnb3dzcWrRoISLHjx8vtzoBAAAAwLQKnAW9YcMGvV7/wgsvGK2AlZmZ+ddff5mbm//4449ubm5KY926defMmSMiN27cKOwsERERX375pZmZ2ebNm3v37q3RaETE2dn566+/7tq1a1pa2rJly0r90kqgUgbg77//Pjo6evTo0XXr1jXaFBoaKiIuLi61atUy2tS4cWMRuXLlSvkUCQAAAAAmN3DgQDs7uyNHjuRdEamw+c8WFha3bt2KjIx0dHTM23737l0RecjzpBs2bNDpdM2bN2/durXRphEjRohISEjIY11GKTE3dQHFdujQod9//71ly5YDBw7Mv/XWrVsi4uXllX9TjRo1RCQxMTEzM9PKyqqs6wQAAAAAk7O1tR00aFBgYGBQUNDMmTNFJCws7OzZszVq1OjcubNRZ61WW6tWrdzc3L///vvkyZMRERGRkZHXr18/efLkw89y9uxZEbl69aoy7phXWlqaiNy8ebPULukxVLIAfPfu3WXLljk6Ok6dOlUZVTdy//59EXFycsq/yd7eXvmQnp5OAAYAAACgEsOHDw8MDFy/fr0SgJXhX39/f622gBnBu3fvnjx58rVr15QvbW1tn3zyydGjR69ateohp0hMTBSRtLS0wqbcpqenP+ZVlIrKNAVap9N98cUX6enpkydPdnV1LbCP8tsFS0vL/JvMzc0Nxym7IgEAAACgQundu7erq+vZs2fDwsKk8PnPInLkyJH+/ftfu3Zt9OjRBw4cuHv3bmpq6vHjx0eNGvXwU9ja2orIoEGD9IWIj48vgysrtsoUgNevX3/58uXevXu3a9eusD5Kys3MzMy/KTs7W/lgbW1dRhUCAAAAQEVjYWHxwgsviEhgYOC5c+euXLlSr169tm3b5u/5ww8/6HQ6Pz+/NWvWdOvWrVq1asrEW2WA9yEaNWokIuHh4fk3hYWFrVu37vfffy+FK3lslWYK9KVLl3799VcvL69XXnnlId0cHBzkv+PARlJTU0XE0tLSzs4u/9Z169Yp708y8uKLL44ZM6aERZe2JFMXgKLQarUuLi6mrgImkmTqAiqqCnJTKBO9uEmBioz7FCgjI0aMWL58+fr165WpyMOGDSuwW0xMjPw3zea1evXqhx9/wIABn3/++YULF44dO/bcc88Z2vV6/YQJEw4dOjR37txu3bo9ziWUikoTgMPCwnJzc6OiooYOHZp/66xZs0Skbdu29evXF5EC3zGl/Fl6eXkV+PBwWlpabGxs/vb09HTlZcJAUYTvDjB1CXgE3z5Bpi5BjSrUX6QajaZC1QMgvyp2n4YHVLUfPb5B/IOn8unUqVPNmjXDwsKU1xEVOP9ZRJo2bbpv376ffvrppZdeat68uYiEhoZ++OGHO3bsEBGdTpednW305iRFx44de/XqtXfv3rFjxwYFBSlrQcfGxs6YMePQoUOenp5vvvlmGV5ekVWaAOzg4FDg2s5RUVEi4unpaWFh4ebm1qRJExGJi4uLi4vz8PDI2/PSpUsi0qxZswKPb2dn5+npmb/d1taWZ4aBqoQ72iQqyLddq9VqNBq9Xp+bm2vqWgAUjPu0Uqggf6tLBfsFawWn1WqHDRu2ePHi1NTUpk2bKuE2v5kzZ65fvz46OvrJJ5/08vJ68OBBQkKCs7Pzli1b/P39MzIyfHx8li9f3rdv3/z7BgYGPv/886dOnWrTpk21atVsbGwiIyNzc3M9PT2Dg4MLW8WpnFWaANytW7cCR8yVlyHNnDlTWW5bp9O5u7vHx8fv3Lkz79Tl27dv//XXXyLStWvXAo8/cuTIkSNH5m+Pj4+/d+9eaVwBgAqBO9okKsi33cXFxczMLDc3t4LUAyA/7tNKoeL86bi7u5u6hMpk+PDhixcvFpGAgELH8L28vP7444/Zs2fv3bs3Li7O29t77NixM2bMqFGjxpdffvnuu++mpKQo613l5+bmduTIkWXLlq1du/by5cvp6elNmjTp37//tGnTqlWrVlZXVUwavV5v6hoeixKAP/vsM8P7pvbu3bt06VIzM7M33nije/fuGo3m+vXrn3/+eVRUVMeOHd96661iHb+CLFamSJo52dQl4FGYEFThObdZWnYH35/ETVqwHs5l+G0vOuUf1jqdruL80w2AkSp5nyZN3m/qEkqZ89Iepi7h/5gkAFeER954pKvEKs0IcNH16tUrLCxs7969X3311cqVK62trRMSEkSkQYMGEydONHV1AAAAAADTqIIBWEQmT57cokWLXbt2RUREpKWl1alTp0uXLv3797eysjJ1aQAAAAAA06j0AXjr1q0Ftnfq1KlTp07lXAwAAAAAoMLSmroAAAAAAADKAwEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqmBu6gIAAAAAoNLw7RNk6hJQcowAAwAAAABUgQAMAAAAAFAFAjAAAAAAQBUIwAAAAAAAVSAAAwAAAABUgVWgAQAAAKCogsIDTF2CBPiyEnUJMQIMAAAAAFAFAjAAAAAAQBUIwAAAAAAAVSAAAwAAAABUgQAMAAAAAFAFAjAAAAAAQBUIwAAAAAAAVSAAAwAAAABUgQAMAAAAAFAFAjAAAAAAQBUIwAAAAABQZf31118ajWbSpEnF2mvnzp1+fn61atWysrJydXXt1KnTsmXLsrOzH7JLbm5u586dNRrNggULHq/kMkQABgAAAIAqa8WKFcXd5a233urXr19wcHBCQkKNGjXS0tKOHDny+uuv9+vX7yEZeN68eYcPH368YsscARgAAAAAqqCYmJhPPvlk2bJlxdpr69atCxcu1Gg0n332WWJiYkRERFpa2jfffGNhYbFv376PPvqowL2OHz/+4YcflkbVZYsADAAAAABVyrx587y9vatXr/7OO+/k5uYWa99vvvlGRF5++eW33nrLxsZGRMzNzV9//fWZM2eKyJIlS/IPAicnJ7/00ktWVlY+Pj6lcwFlhgAMAAAAAFVKbGxsVlZWtWrVqlWrZm1tXax9Dx06JCLDhw83ah8wYICIpKSkXLhwwWjTpEmTIiIivvjiizp16jxG1eWBAAwAAAAAVcqSJUvu/tewYcOKvmNiYmJmZqaI5B/LNTc3Vz4oHQxWr14dFBQ0aNCgiRMnPlbR5cLc1AUAAAAAACoEFxeX+/fvi4idnZ3Rpl9//VVEzM3NGzVqZGi8evXqm2++WaNGjRIstWUSBGAAAAAAgIiIRqOxt7fP375x48ZFixaJyLBhw5ydnZXG7Ozs4cOHp6Wl/fbbb+7u7uVZZ4kxBRoAAAAAULDExMSXX37Z399fp9M98cQTX331lWHTO++8c+bMmalTp/bq1cuEFRYLARgAAAAA1GXp0qWN/9fSpUuN+uh0uqVLlzZo0GDVqlUi4ufnd/ToUVdXV2Xrvn37Fi1a1KJFiwULFpR39Y+BKdAAAAAAoC7x8fFXrlwxasn75Z9//vnqq6+GhoaKSN26dRcuXDhkyBDD1qSkpDFjxlhZWQUGBlpZWZVPzaWCEWAAAAAAUJe5c+fq/9fcuXMNW5cvX96hQ4fQ0FAnJ6dFixZdvnw5b/oVkYiIiOjo6IyMjGbNmmnyUF6hNHv2bI1GY3hUuEJhBBgAAAAA8H927do1ceJEvV7fvXv3devWVa9ePX8fa2vrvGtBG0RGRj548MDDw8PV1dXR0bHsiy02AjAAAAAA4P/Mnj1br9d36tRpx44dhU1vbty48eXLl/O3d+nS5dChQ9OnT3/77bfLuMwSYgo0AAAAAEBE5MqVK3///bdGo1m+fHnleri3iBgBBgAAAACIiJw+fVpEzMzMBg4cWFifAwcOeHl5lWNRpYkADAAAAAAQEYmOjhaRnJwcozWi88rOzi7HikoZARgAAAAAqqzVq1evXr26iJ1nzpw5c+bMEp8rJCSkxPuWD54BBgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCqYm7oAAAAAAKg0AnyDTF0CSo4RYAAAAACAKhCAAQAAAACqQAAGAAAAAKgCARgAAAAAoAosggUAAAAARRUQPtbUJUiQ72pTl1BZMQIMAAAAAFAFAjAAAAAAQBUIwAAAAAAAVSAAAwAAAABUgQAMAAAAAFAFAjAAAAAAQBUIwAAAAAAAVSAAAwAAAABUgQAMAAAAAFAFAjAAAAAAQBUIwAAAAABQBUVGRk6bNq1x48b29vZ2dnaNGzeeMmXKrVu38vbp1auXphD79+9/5Cn0er2NjU1hR8jJySlsx+joaA8PD41G88cff5TCpRaZeXmeDAAAAABQDo4dO9avX7/k5GSNRlOzZs309PQrV65cuXLl559/3rdvX6tWrZRu4eHhWq22QYMG+Y9gZ2f3yLPcunUrIyPD3t7ey8sr/1aNRlPgXnq9fvTo0fHx8cW5oNJBAAYAAACAKiUjI8Pf3z85Oblbt24rV6708fERkTNnzowePfrixYv+/v6XLl2ysLDIzs6OjIysW7fu5cuXS3aia9euiciwYcNWrFhR9L0+//zzogwvlwWmQAMAAABAlbJ58+Y7d+64ublt2rRJSb8i0rp1619//dXMzOzatWubN28WkYiICJ1O5+vrW+IThYeHi0ixjnD69On33nuvadOmJT7p4yAAAwAAAECVcujQIRHp27evk5NT3vYnnniifv36InL8+HH57/it0lIyxT1Camrq8OHDtVptYGBgiU/6OJgCDQAAAABVyp07d0TEMPabl7m5uYhkZmbKf8dvHycAF/cIkydPDg8P/+KLL1q0aFHikz6OUgjAOTk5J06c+Oeff+Li4tLT04cMGdKuXbvo6OisrKw6deo8/vEBAAAAAEX3yy+/5OTkWFlZGbVfuHBBedxXmYGsjN8qS1IdOHAgLi7O2dm5bdu2kydP7t27d1FOpBwhIiJi9uzZp06dSk1NrVGjRo8ePWbOnPnEE08YdV6/fv2aNWt69eo1bdq0x77EEnqsKdCpqalvv/22m5tbly5dpkyZ8tFHHy1atOiff/4Rkd9//71evXr9+vW7ePFiKZUKAAAAAHg0a2tre3t7CwuLvI23b98eNmxYbm6uk5PT8OHD5b/jtzNnzly7dm1OTo6bm1tcXNz27dv79Onzxhtv6PX6R55ICcAvvPDC/v377ezsbG1tIyMjV61a1bJly59++ilvzxs3bkyaNMnd3X316tWFrQ5dDkoegKOjo5977rnPP//8/v37+v/K20Gv1+/evbt169ZBQUGPXScAAAAAoCT0ev2PP/741FNPXbhwwcLC4qeffnJzc5P/xtdOnTr9888/MTEx0dHRUVFRY8aMEZFvv/32s88+e/hhY2Nj79+/LyKTJk26c+fOrVu3kpKSTp8+3a5du8zMzPHjxytPGotITk7OSy+9lJKSsmLFiho1apTt1T5UyQPw6NGjQ0ND9Xp93bp1586du3379rxbn3vuuREjRohIZmbm2LFjT5069biVAgAAAACK6dSpU88+++z48eMTEhK8vb337ds3cOBAZdO8efM2bNiwd+/e5s2bKy01a9ZcvXq1EuUWLFiQnZ0tIqNHj278v06ePCkiVlZW69ev37Vr17Jly6pVq6YcoXXr1gcO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MzPz7Nmz//73v1u1anXz5s283WbOnLl27dqcnBw3N7e4uLjt27f36dPnjTfe0Ov1pryGslHCADxx4kQPDw8RWbRokZub2/fffy8ibdu2VaaYv/jii59//nlwcPD7778/efJkEdFqtT179iy9sgEAAAAABVOGdl1cXNatW5eUlBQREZGenv799987OztfuXJlwIAByiCl0q1Tp07//PNPTExMdHR0VFTUmDFjROTbb7/97LPPTHsVZaGEr0FycHDYvHnzkCFDYmNjMzMzExISRMTMzGzJkiXDhg1LTk5+++23lZ7Krw3eeOMNb2/v0ioaAAAAAFCYXr16eXt7t2zZslGjRkqLhYXFhAkT6tat26tXr9DQ0M2bNw8dOnTevHnZ2dmDBg2ysrJSutWsWXP16tXZ2dmBgYELFiyYPn26hYWF6a6j9JVwBFhEnn322bCwsJUrV77xxhvNmzdXGocOHTp37lxzc3P9f2k0mtdff/2LL74opYIBAAAAAA/z1FNPBQQEGNKvQc+ePZV39xw/flxEBg8e7O/vb0i/BhMnThSRpKSkixcvisjYsWM1eYwbN05E1qxZk7fRx8en7C+rFJRwBFjh6Og4btw45foNPvjgg/Hjx+/bt+/u3bsuLi49evRQ1XulAAAAAKDC8vDwuHHjhrJQ8UP6KB+UbjVq1MibpZOTk+/evevo6FijRg1Do5eXV9nUW8pKGIA7dOgwcuTIoUOHurm55d9aq1Yto1QMAAAAACgHMTEx7777rogsWrTIyckp76bc3FzltbX16tXbtGnTzp07mzZt+q9//cvoCJcuXVI+KMPFn3zyySeffGLYunr16nHjxg0ePHj16tVleR1looRToI8fP/7GG2/UrFlzwIABQUFBDx48KN2yAAAAAAAl4OzsvH79+pUrV/72229Gm1atWpWUlKTRaAYMGJCenr5y5coPP/zw3r17Rt0WL14sIu3bt/f09CynostLyZ8B1uv12dnZO3fufOmll6pVqzZq1Kjdu3fn5uaWYnEAAAAAgGKxsrIaP368iEybNm3Dhg3Kgs86ne7XX3+dPn26iIwePbpx48Z+fn7Vq1dPTk4eMGCAYcg3MTFx0qRJR48e1Wg08+bNM+FVlJESToEOCwv77bfffvvtt9OnT4tIampqYGBgYGCgh4fHsGHDRowY0bZt21KtEwAAAABQJJ98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FQjAAAAAAABVIAADAAAAAFSBAAwAAAAAUAUCMAAAAABUKRERERqNRqPRhISElOmJfHx8lBP5+fk9pNtLL72kdPPx8Sn1sxfrGgnAAAAAAIDHsmvXrqSkpAI3paenBwcHl285hSIAAwAAAABKzsLCIisra9OmTQVu3bZtW1pamoWFRTlXVSBzUxdQbHFxcVu2bDl79mxCQoJer3d3d2/ZsuXgwYM9PDzydjt//vymTZtu3Lhx//59V1fX1q1b+/n5VatWzVRlAwAAAECV1LNnz507dwYGBo4fPz7/1vXr14tIr169duzYUe6lGatkI8AXL16cMmXKtm3b7ty5Y2dnZ2FhERUVtX379mnTpl27ds3Qbfv27e+8887p06dTU1OdnZ3j4+N37Ngxbdq0ixcvmrB4AAAAAKhogoOD+/bt6+HhYWVl5e3tPXr06L///rtYR/Dz87OxsQkJCbl7967RpqSkpF27dtnY2AwaNKjAfc+cOTN8+HAvLy8rK6vatWuPGTPmzJkz+bv9/fff/v7+1apVs7a29vX1fe+999LT04tVpKIyBeCsrKzPPvssLS2tRYsWP/zww48//hgYGPjFF1/Url37/v37n376aU5OjohcuXJl+fLlIjJ06NCff/55xYoVq1evfvbZZ9PS0j777LPU1FRTXwcAAAAAmF5ubu748eP9/Px27dqVnZ1ds2bN2NjYtWvXtmnT5ptvvin6cRwcHPr376/T6X755RejTZs2bcrKyurXr5+Dg0P+Hb/66qunn346KCgoLi6uRo0aiYmJP/300zPPPDN//vy83Xbu3Pn0009v3LgxISGhevXq8fHx8+bN6927d2ZmZnEvuTIF4BMnTiQmJjo4OMyePdswmdnX1/ftt9/WarV37979448/RCQwMFCv17dp02bUqFGWlpYi4ujoOG3aNCcnp8TExF27dpnyGgAAAACgYliwYMGPP/7o4ODw22+/JSYm3rhxIyEhYf78+Tqd7s0339y9e3fRDzV8+HARCQwMNGpX5j8rW41s27Zt6tSpVlZWS5YsSUtLi4iIuHfv3ooVK8zMzN59913DulmxsbEvvfRSdnb24MGDb9++HRERkZCQsGLFipMnT+YfcH6kyhSAL1y4ICJt2rSxs7PL2167du0aNWqIyKVLl1JTU5Xx+n79+uXtY21t3b59exE5fvx4+VUMAAAA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p7Zs2WLUGBISUoQa/0elCcB6vf7atWsicvDgwePHjxfYp1+/fv3792/ZsuVLL720bt26tWvX/vrrr/b29vHx8Xq9vnr16tOnTy9sDjoAAAAAoGqrNAH4/v37OTk5IlLYM9wikpKSonzw9/f39fXdunVreHh4cnJyzZo1n3322UGDBjk6OpZTuQAAAACACqbSBGBHR8etW7cWvX+rVq1atWpVdvUAAAAAACqX4r3WCQAAAACASooADAAAAABQBQIwAAAAAEAVCMAAAAAAAFUgAAMAAAAAVIEADAAAAABQBQIwAAAAAEAVCMAAAAAAAFUgAAMAAAAAVIEADAAAAABQBQIwAAAAAEAVCMAAAAAAAFUwN3UBAAAAAFBprA7yNXUJKDlGgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCqwCBYAAAAAFNXugHBTlyB9WIirpBgBBgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAgCoQgAEAAAAAqkAABgAAAACoAgEYAAAAAKAKBGAAAAAAqFJCQkI0/7Vly5bCut2/f9/GxkbpNnfu3FI8tY+PT6kcrdQRgAEAAACgylq/fn1hmzZv3pyRkVGexZgcARgAAAAAqiCtVqvVardt25aamlpgByUbW1hYlG9dpkQABgAAAIAqyMLCokuXLg8ePChwFnR8fPz+/fvt7e3bt29f7qWZDAEYAAAAAKqm4cOHSyGzoDdu3JiTkzNo0CAbGxujTTqdbvny5R06dHB2drazs3vyySf/85//JCcnG3XT6/UrV65s166dg4ODk5NTx44dH/K8cQVBAAYAAACAqumFF16wtLTct29fQkKC0SYlFSsJOa/79+/36NFjwoQJx44dExE3N7fz58/PmTOncePGf/31l6GbXq8fPXr0K6+88ueffyrd/vjjj8GDB3/zzTdlekWPiQAMAAAAAFWTi4tLnz59srOzN27cmLf91q1bR48edXV17dWrl9Eu48aNCwkJadas2R9//JGUlBQZGRkVFfXiiy/evXu3f//+6enpSrfly5evW7fOwsLiu+++S0xMvH79enR09NChQ3/99ddyurYSIQADAAAAQJVV4CzoDRs26PX6F154wWgFrKNHj/7222+Ojo47d+5s27at0li9evX169c3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", "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "img = get_img('test_nbs/geom_col.ipynb', label='two_variable_bar_plot')\n", "img" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# test if you provide a label that doesn't exist\n", "test_fail(get_img, contains='test_nbs/geom_col.ipynb does not contain a cell with `#|label: does_not_exist`', \n", " args=('test_nbs/geom_col.ipynb', 'does_not_exist'))\n", "\n", "# test if you label a cell that doesn't have a plot like a dataframe\n", "test_fail(get_img, contains='test_nbs/geom_col.ipynb: cell with `#|label: no_plot` does not have an output type of `display_data`',\n", " args=('test_nbs/geom_col.ipynb', 'no_plot'))\n", "\n", "# make sure image is a PngImageFile\n", "assert isinstance(img, Image.Image)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Turn image into thumbnail\n", "\n", "The image above is too big! We can turn it into a thumbnail like so:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "def img2thumb(img:Image.Image, size=(260,260)):\n", " \"Convert image to thumbnail.\"\n", " thumb_size = size[0] * 2, size[1] * 2\n", " img.thumbnail(thumb_size)\n", " return img" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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uW/fvkGDBplMpitXrvTt21eSpDp16kyePHnp0qWSJF26dKlXr16lpaVxcXGfffbZtGnTCCFnz5594403jh8/3rJly3Pnzq1YsUKpxpdffpmenl6RVCBoMQAA2NXixYtDQkKWLVtGCKlTp86xY8eCg4MXLVo0aNAgQsiNGzeOHDkycuTIjh075ufnx8fH//TTT9euXTt58iTP86+88kp0dPTx48d37twZGRm5ePFiQkhYWNi4ceM0Gs38+fObN2/+xRdfEEI6d+4cHx8/ZcoUQRCaNGmyfPlyQkhubu6sWbNEUSwuLk5KSlq1alUF64xgAACwo+PHj8fHxyuPBw8ePHjwYFEU161bN2rUqDt37pw8ebJ///6EEFEUZVkmhJw5cyY1NfWpp56SJInjuPz8/KtXr164cKFNmzbKkzRr1szT07OkpOTs2bPDhw9XFjZq1MjLy+vKlSuEkIiICGVh165d33nnneTk5KysLHd39xYtWlSwzggGAAA7kmW5bISlkpKS7Ozs+fPnHz58eNy4cbGxsV9//bXZ/L9xX5QR5ERRDAkJmTVrlsVi4TjObDZHRUV9//33ZcMIFRUViaLIGGOMlQ06ZzKZTCaTi4uLslxZ6O/v36pVq//+97/KRYiKD2OFawwAAHbUvHnzffv2KY8//PDDt99+++DBg6+++uqIESPi4uLOnTsnCAIhhDEmiqKyfm5ubosWLbp06RIbGzt37lxRFJs3b/7zzz8XFxdLkrR8+fKCggI3N7eoqKitW7cqz3zo0CHGWOPGjS0Wy72lDxgwYN26dXv37lXaJRWEFgMAgB1NmDChd+/e/fv39/b23rFjx/r167dv3z579uyzZ8/evHlTkqTdu3efPXs2JiZmxowZM2fOnDlz5nfffde9e/fWrVvv378/Li6ubt26r7322t69ezt16uTh4cEY8/DwsFgsU6ZM6dWrV79+/erUqbN169Z3333XxcXFbDYrAaPo2rXrm2++GRgYWPF+JIJgAACwq5CQkJ07d27YsMFsNm/fvj06Orp58+ZhYWE3b94cNGhQ48aNly9frtFounXrtnPnTp1Op9VqV61atWnTposXL86YMaNPnz48z3t4ePz444+nTp3ieV4QhNGjR1NKQ0ND9+zZs2nTpqKiotWrV7dv354Q8sILLxQWFpaV7uPjExUV1bFjR63WiqGRafUP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", "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "img2thumb(img)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get a thumbnail directly from a notebook" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|export\n", "def nb2thumb(nb_path, label='thumbnail', size=(260,260)) -> Image.Image:\n", " \"Extract thumbnail corresponding to the cell with the comment `#|label: {label}` from a notebook.\"\n", " img = get_img(nb_path=nb_path, label=label)\n", " return img2thumb(img, size=size)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`nb2thumb` allows us to get a thumbnail directly from a notebook:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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uW/fvkGDBplMpitXrvTt21eSpDp16kyePHnp0qWSJF26dKlXr16lpaVxcXGfffbZtGnTCCFnz5594403jh8/3rJly3Pnzq1YsUKpxpdffpmenl6RVCBoMQAA2NXixYtDQkKWLVtGCKlTp86xY8eCg4MXLVo0aNAgQsiNGzeOHDkycuTIjh075ufnx8fH//TTT9euXTt58iTP86+88kp0dPTx48d37twZGRm5ePFiQkhYWNi4ceM0Gs38+fObN2/+xRdfEEI6d+4cHx8/ZcoUQRCaNGmyfPlyQkhubu6sWbNEUSwuLk5KSlq1alUF64xgAACwo+PHj8fHxyuPBw8ePHjwYFEU161bN2rUqDt37pw8ebJ///6EEFEUZVkmhJw5cyY1NfWpp56SJInjuPz8/KtXr164cKFNmzbKkzRr1szT07OkpOTs2bPDhw9XFjZq1MjLy+vKlSuEkIiICGVh165d33nnneTk5KysLHd39xYtWlSwzggGAAA7kmW5bISlkpKS7Ozs+fPnHz58eNy4cbGxsV9//bXZ/L9xX5QR5ERRDAkJmTVrlsVi4TjObDZHRUV9//33ZcMIFRUViaLIGGOMlQ06ZzKZTCaTi4uLslxZ6O/v36pVq//+97/KRYiKD2OFawwAAHbUvHnzffv2KY8//PDDt99+++DBg6+++uqIESPi4uLOnTsnCAIhhDEmiqKyfm5ubosWLbp06RIbGzt37lxRFJs3b/7zzz8XFxdLkrR8+fKCggI3N7eoqKitW7cqz3zo0CHGWOPGjS0Wy72lDxgwYN26dXv37lXaJRWEFgMAgB1NmDChd+/e/fv39/b23rFjx/r167dv3z579uyzZ8/evHlTkqTdu3efPXs2JiZmxowZM2fOnDlz5nfffde9e/fWrVvv378/Li6ubt26r7322t69ezt16uTh4cEY8/DwsFgsU6ZM6dWrV79+/erUqbN169Z3333XxcXFbDYrAaPo2rXrm2++GRgYWPF+JIJgAACwq5CQkJ07d27YsMFsNm/fvj06Orp58+ZhYWE3b94cNGhQ48aNly9frtFounXrtnPnTp1Op9VqV61atWnTposXL86YMaNPnz48z3t4ePz444+nTp3ieV4QhNGjR1NKQ0ND9+zZs2nTpqKiotWrV7dv354Q8sILLxQWFpaV7uPjExUV1bFjR63WiqGRafUP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", "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "thumb = nb2thumb('test_nbs/geom_col.ipynb', label='two_variable_bar_plot')\n", "thumb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tests -" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#|hide\n", "t1 = nb2thumb('test_nbs/geom_col.ipynb', label='two_variable_bar_plot')\n", "t2 = nb2thumb('test_nbs/PlotnineAnimation.ipynb', label='spiral')\n", "t3 = nb2thumb('test_nbs/geom_density.ipynb', label='density_curve')\n", "t4 = nb2thumb('test_nbs/geom_map.ipynb', label='map')\n", "t5 = nb2thumb('test_nbs/geom_segment.ipynb', label='ranges')\n", "t6 = nb2thumb('test_nbs/geom_segment.ipynb', label='rank')\n", "\n", "images = L([t1, t2, t3, t4, t5, t6])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "python3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 4 }