diff --git a/jupyter_mentor/_modidx.py b/jupyter_mentor/_modidx.py index 0619162..16782da 100644 --- a/jupyter_mentor/_modidx.py +++ b/jupyter_mentor/_modidx.py @@ -69,7 +69,11 @@ 'jupyter_mentor/madlib.py'), 'jupyter_mentor.madlib.MadLibView.observe_value_change': ( 'madlib.html#madlibview.observe_value_change', 'jupyter_mentor/madlib.py')}, - 'jupyter_mentor.student_course_overview': { 'jupyter_mentor.student_course_overview.StudentCourseOverview': ( 'student_course_overview.html#studentcourseoverview', + 'jupyter_mentor.student_course_overview': { 'jupyter_mentor.student_course_overview.FileDownloader': ( 'student_course_overview.html#filedownloader', + 'jupyter_mentor/student_course_overview.py'), + 'jupyter_mentor.student_course_overview.FileDownloader.__init__': ( 'student_course_overview.html#filedownloader.__init__', + 'jupyter_mentor/student_course_overview.py'), + 'jupyter_mentor.student_course_overview.StudentCourseOverview': ( 'student_course_overview.html#studentcourseoverview', 'jupyter_mentor/student_course_overview.py'), 'jupyter_mentor.student_course_overview.StudentCourseOverview.__init__': ( 'student_course_overview.html#studentcourseoverview.__init__', 'jupyter_mentor/student_course_overview.py')}, diff --git a/jupyter_mentor/chatbot_tab.py b/jupyter_mentor/chatbot_tab.py index 285b78a..308dfb3 100644 --- a/jupyter_mentor/chatbot_tab.py +++ b/jupyter_mentor/chatbot_tab.py @@ -56,14 +56,15 @@ def prompt(self): kwargs = {key:value for key, value in zip(keys,values)} prompt = chat_prompt.format_prompt( **kwargs ) bot = self.llm.invoke(prompt).content - user = "\n".join([desc + ' ' + val for desc, val in zip(self.madlib_models[self.selected_index].descriptions, self.madlib_models[self.selected_index].values)]) + interm= [desc + ' ' + val for desc, val in zip(self.madlib_models[self.selected_index].descriptions, self.madlib_models[self.selected_index].values)] + user = "\n".join(interm) return (user, bot) def prompt_with_kwargs(self, kwargs): ret = self.llm.invoke(self.chat_prompt.format_prompt(**kwargs)) return ret.content -# %% ../nbs/06_chatbot.ipynb 8 +# %% ../nbs/06_chatbot.ipynb 9 class ChatBotView(widgets.VBox): """ This view also exists in 04_chatbot, but wea are overwriting it here @@ -94,7 +95,7 @@ def __init__(self): self.hbox.children = (self.stack, self.submit_button) self.children = (self.chat, self.radio_buttons, self.hbox ) -# %% ../nbs/06_chatbot.ipynb 10 +# %% ../nbs/06_chatbot.ipynb 11 class ChatBot(ChatBotView): """ This view also exists in 04_chatbot, but wea are overwriting it here @@ -122,9 +123,9 @@ def __init__(self, model): self.submit_button.on_click(self.on_click) def on_click(self, change): - for child in self.stack.children[self.selected_index].children: - child.value = '' user, bot = self.model.prompt() self.chat.value = "USER: " + user + '\n\n' + "CHATBOT: " + bot + '\n\n' self.selected_index = 0 + for child in self.stack.children[self.selected_index].children: + child.value = '' diff --git a/jupyter_mentor/educator_course_overview.py b/jupyter_mentor/educator_course_overview.py index 6aed794..8068ec6 100644 --- a/jupyter_mentor/educator_course_overview.py +++ b/jupyter_mentor/educator_course_overview.py @@ -4,6 +4,7 @@ __all__ = ['EducatorCourseOverview'] # %% ../nbs/04_educator_course_overview.ipynb 1 +from .llm import FileModel from .file_viewer import FileViewer import ipywidgets as widgets from ipywidgets import VBox, HBox, HTML, Button, Label, Text, Textarea, Checkbox, Accordion, FileUpload @@ -11,10 +12,10 @@ import ipyvuetify as v from traitlets import observe -# %% ../nbs/04_educator_course_overview.ipynb 2 +# %% ../nbs/04_educator_course_overview.ipynb 3 class EducatorCourseOverview(VBox): - def __init__(self, file_viewer): + def __init__(self): super().__init__() # File Upload button diff --git a/jupyter_mentor/student_course_overview.py b/jupyter_mentor/student_course_overview.py index 1489ffa..4cc6f0d 100644 --- a/jupyter_mentor/student_course_overview.py +++ b/jupyter_mentor/student_course_overview.py @@ -25,6 +25,7 @@ def __init__(self): children=["Download All"] ) self.children = [self.file_chooser, self.download_button] + # %% ../nbs/14_student_course_overview.ipynb 3 class StudentCourseOverview(VBox): diff --git a/nbs/00_main.ipynb b/nbs/00_main.ipynb index ff89410..192dd82 100644 --- a/nbs/00_main.ipynb +++ b/nbs/00_main.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "89293f18-ab92-426e-abf4-249f3e17727d", "metadata": {}, "outputs": [], @@ -32,13 +32,13 @@ "from jupyter_mentor.student_profile import StudentProfile\n", "from jupyter_mentor.educator_course_overview import EducatorCourseOverview\n", "from jupyter_mentor.student_course_overview import StudentCourseOverview\n", - "from jupyter_mentor.chatbot_tab import ChatBot, ChatBotModel, StudentChatBot, EducatorChatBot\n", + "from jupyter_mentor.chatbot_tab import ChatBot, ChatBotModel\n", "from jupyter_mentor.file_viewer import FileViewerView" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "af80f333-81cd-4f2d-8f92-195b79a8e307", "metadata": {}, "outputs": [], @@ -55,35 +55,71 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "d25ddd77-b1e3-41e6-9254-686a04ee7633", "metadata": {}, "outputs": [], "source": [ - "madlibs_list = [\n", - " {'name': 'Open Prompt',\n", - " 'description': '',\n", - " 'variables': {\n", - " 'input_text': 'value'\n", - " }, \n", - " 'template': '{input_text}' ,\n", - " 'placeholder': 'Message AI chatbot...',\n", - " },\n", - " {\n", - " 'name': 'Metaphor',\n", - " 'variables': {\n", - " 'concept': 'value'\n", - " }, \n", - " 'template': \"I'm having trouble understanding {concept}. Explain it as a metaphor\",\n", - " 'description': \"I'm having trouble understanding...\", \n", - " 'placeholder': 'why the sky is blue'\n", + "student_madlibs = [\n", + " { 'name': 'Open Prompt',\n", + " 'template': '{input_text}',\n", + " 'variables': ['input_text'],\n", + " 'descriptions': [''],\n", + " 'placeholders': ['Message AI chatbot...']\n", + " }, {'name': 'Metaphor',\n", + " 'template': \"I'm having trouble understanding {concept}. Please explain it as a metaphor\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I'm having trouble understanding\"],\n", + " 'placeholders': ['']\n", + " }, {'name': 'Step-by-Step',\n", + " 'template': \"I'm having trouble understanding {concept}. Please help me break it down into steps.\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I'm having trouble understanding\"],\n", + " 'placeholders': ['']\n", + " }, {'name': 'Debate Partner',\n", + " 'template': \"I want to debate about {concept}. Let's use the Socratic method. You are subject matter expert who is trying to convince me about it. You will speak first and then wait for me to respond.\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I want to debate about\"],\n", + " 'placeholders': ['']\n", + " }\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19a93c82-481e-4e50-8e88-85f37b964d3d", + "metadata": {}, + "outputs": [], + "source": [ + "educator_madlibs = [\n", + " { 'name': 'Open Prompt',\n", + " 'template': '{input_text}',\n", + " 'variables': ['input_text'],\n", + " 'descriptions': [''],\n", + " 'placeholders': ['Message AI chatbot...']\n", + " }, {'name': 'Metaphor',\n", + " 'template': \"I'm having trouble understanding {concept}. Please explain it as a metaphor\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I'm having trouble understanding\"],\n", + " 'placeholders': ['']\n", + " }, {'name': 'Translate',\n", + " 'template': \"Help me translate the following text into {language}: {text}\",\n", + " 'variables': ['language', 'text'],\n", + " 'descriptions': [\"Text\", \"Language\"],\n", + " 'placeholders': ['', '']\n", + " }, {'name': 'Quiz Questions',\n", + " 'template': \"Help me generate 10 quiz questions about {concept}.\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"Quiz Topic\"],\n", + " 'placeholders': ['']\n", " }\n", "]" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "ff4ce152-adef-4c60-828a-8bbf68129209", "metadata": {}, "outputs": [], @@ -96,14 +132,14 @@ " \n", " # initialize models\n", " # self.model = DataModel(FILENAME)\n", - " self.educator_chatbot_model = ChatBotModel(madlibs_list)\n", + " self.educator_chatbot_model = ChatBotModel(educator_madlibs)\n", "\n", " \n", " # initialize views\n", " self.first = Login()\n", " self.second = EducatorProfileView()\n", " self.file_viewer = FileViewerView()\n", - " self.third = EducatorCourseOverview(self.file_viewer)\n", + " self.third = EducatorCourseOverview()\n", " self.fourth = ChatBot(self.educator_chatbot_model)\n", " \n", " # Add tabs to the Tab widget\n", @@ -127,32 +163,15 @@ " self.selected_index = 2\n", " \n", " def switch_to_fourth(self, button):\n", - " self.selected_index = 3\n", - " " + " self.selected_index = 3" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "9ca28623-ed1f-4f1c-b671-462ee582040f", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "45777c8ce5e544ccb75ef60ea2d3f504", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "EducatorMain(children=(Login(children=(Container(children=[Html(attributes={'title': 'a title'}, children=['Lo…" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "educator_main = EducatorMain()\n", "educator_main" @@ -160,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "7548d87a-94e3-4cdc-bb20-fe46ec366425", "metadata": {}, "outputs": [], @@ -173,13 +192,12 @@ " \n", " # initialize models\n", " # self.model = EducatorModel(FILENAME)\n", - " self.student_chatbot_model = ChatBotModel(madlibs_list)\n", + " self.student_chatbot_model = ChatBotModel(student_madlibs)\n", "\n", " # initialize views\n", " self.first = Login()\n", " self.second = StudentProfile()\n", " self.file_viewer = FileViewerView()\n", - " #self.third = StudentCourseOverview(self.file_viewer\n", " self.third = StudentCourseOverview()\n", " self.fourth = ChatBot(self.student_chatbot_model)\n", "\n", @@ -190,7 +208,7 @@ " self.set_title(0, 'LogIn')\n", " self.set_title(1, 'User Profile')\n", " self.set_title(2, 'Course Overview')\n", - " self.set_title(3, 'Student Chatbox')\n", + " self.set_title(3, 'Test/Assn Generator')\n", "\n", "\n", " # Add event handlers to \"Next\" buttons in each tab\n", @@ -210,26 +228,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "36cabf8d-427b-4d24-9c5d-8a6f8e4ab6b5", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5ba5c5efdcdb42fa8efc2fcc9c77d2b5", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "StudentMain(children=(Login(children=(Container(children=[Html(attributes={'title': 'a title'}, children=['Log…" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "student_main = StudentMain()\n", "student_main" @@ -257,21 +259,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.19" } }, "nbformat": 4, diff --git a/nbs/04_educator_course_overview.ipynb b/nbs/04_educator_course_overview.ipynb index f00ce96..a6dc7ec 100644 --- a/nbs/04_educator_course_overview.ipynb +++ b/nbs/04_educator_course_overview.ipynb @@ -12,12 +12,13 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": null, "id": "0320fe7e-0ec7-4dd1-90c2-74a3e25bab86", "metadata": {}, "outputs": [], "source": [ "#| export\n", + "from jupyter_mentor.llm import FileModel\n", "from jupyter_mentor.file_viewer import FileViewer\n", "import ipywidgets as widgets\n", "from ipywidgets import VBox, HBox, HTML, Button, Label, Text, Textarea, Checkbox, Accordion, FileUpload\n", @@ -28,7 +29,39 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": null, + "id": "35cce225-a4c0-425f-a390-c85dadd075d2", + "metadata": {}, + "outputs": [], + "source": [ + "student_madlibs = [\n", + " { 'name': 'Open Prompt',\n", + " 'template': '{input_text}',\n", + " 'variables': ['input_text'],\n", + " 'descriptions': [''],\n", + " 'placeholders': ['Message AI chatbot...']\n", + " }, {'name': 'Metaphor',\n", + " 'template': \"I'm having trouble understanding {concept}. Please explain it as a metaphor\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I'm having trouble understanding\"],\n", + " 'placeholders': ['']\n", + " }, {'name': 'Step-by-Step',\n", + " 'template': \"I'm having trouble understanding {concept}. Please help me break it down into steps.\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I'm having trouble understanding\"],\n", + " 'placeholders': ['']\n", + " }, {'name': 'Debate Partner',\n", + " 'template': \"I want to debate about {concept}. Let's use the Socratic method. You are subject matter expert who is trying to convince me about it. You will speak first and then wait for me to respond.\",\n", + " 'variables': ['concept'],\n", + " 'descriptions': [\"I want to debate about\"],\n", + " 'placeholders': ['']\n", + " }\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, "id": "f0e47085-1303-4292-b752-0ee05eef872d", "metadata": {}, "outputs": [], @@ -36,7 +69,7 @@ "#| export\n", "class EducatorCourseOverview(VBox):\n", " \n", - " def __init__(self, file_viewer):\n", + " def __init__(self):\n", " super().__init__()\n", "\n", " # File Upload button\n", @@ -90,35 +123,20 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": null, "id": "54fb4f23-dabc-4109-a482-feee5c130f36", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7dfa2b4a73e240a78060c514e3c1cc29", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "EducatorCourseOverview(children=(Container(children=[Html(attributes={'title': 'a title'}, children=['Educator…" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "file_viewer = FileViewer()\n", - "main = EducatorCourseOverview(file_viewer)\n", + "#file_model = FileModel()\n", + "#file_viewer = FileViewer(file_model)\n", + "main = EducatorCourseOverview()\n", "main" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": null, "id": "11872b33-a907-4acb-9537-0a2f4237d791", "metadata": {}, "outputs": [], @@ -138,21 +156,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.19" } }, "nbformat": 4, diff --git a/nbs/05_madlib.ipynb b/nbs/05_madlib.ipynb index 979217c..ecee021 100644 --- a/nbs/05_madlib.ipynb +++ b/nbs/05_madlib.ipynb @@ -130,7 +130,7 @@ "metadata": {}, "outputs": [], "source": [ - "madlib_model.variables" + "madlib_model.values" ] }, { @@ -193,11 +193,11 @@ { "cell_type": "code", "execution_count": null, - "id": "f5aae3a7-d025-4145-a6d0-54ccc66a4d2a", + "id": "58abe5ec-a1a1-4151-ad5a-d13ab05b4eeb", "metadata": {}, "outputs": [], "source": [ - "madlib_model.variables" + "madlib_model.values" ] }, { diff --git a/nbs/06_chatbot.ipynb b/nbs/06_chatbot.ipynb index 04e0bc8..fec9a3b 100644 --- a/nbs/06_chatbot.ipynb +++ b/nbs/06_chatbot.ipynb @@ -78,7 +78,8 @@ " kwargs = {key:value for key, value in zip(keys,values)}\n", " prompt = chat_prompt.format_prompt( **kwargs )\n", " bot = self.llm.invoke(prompt).content\n", - " user = \"\\n\".join([desc + ' ' + val for desc, val in zip(self.madlib_models[self.selected_index].descriptions, self.madlib_models[self.selected_index].values)])\n", + " interm= [desc + ' ' + val for desc, val in zip(self.madlib_models[self.selected_index].descriptions, self.madlib_models[self.selected_index].values)]\n", + " user = \"\\n\".join(interm)\n", " return (user, bot)\n", " \n", " def prompt_with_kwargs(self, kwargs):\n", @@ -130,9 +131,40 @@ { "cell_type": "code", "execution_count": null, - "id": "3d176ad3-1c26-4824-9d6b-3d294b100f85", + "id": "6169e5bc-f4d1-4b9f-be8d-0c12a9b73269", "metadata": {}, "outputs": [], + "source": [ + "chatbot_model.madlib_models[1].values = ['evolution']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d176ad3-1c26-4824-9d6b-3d294b100f85", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\"I'm having trouble understanding\"]\n", + "['evolution']\n", + "[\"I'm having trouble understanding evolution\"]\n" + ] + }, + { + "data": { + "text/plain": [ + "(\"I'm having trouble understanding evolution\",\n", + " \"Sure! Imagine a tree that starts as a single seed. Over time, this tree grows branches and leaves, each one slightly different from the others due to variations in sunlight, water, and nutrients. Some branches grow stronger and more successful, while others may wither and die.\\n\\nIn the same way, evolution is like a tree of life, where all living organisms are connected through a process of gradual change and adaptation. Just as the tree's branches represent the diversity of life, different species evolve and change over time, with some adaptations proving to be more beneficial for survival and reproduction.\\n\\nThese beneficial traits are passed down to future generations, leading to the development of new species that are better suited to their environment. This process of natural selection is like the tree pruning its branches, allowing the strongest and most successful ones to thrive and grow.\\n\\nIn essence, evolution is the ongoing journey of life, where each species is like a unique branch on the tree of life, constantly changing and adapting to the ever-changing environment.\")" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "chatbot_model.prompt()" ] @@ -142,7 +174,18 @@ "execution_count": null, "id": "142e2664-b0b2-4a10-8901-67ec87a562c1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['input_text']" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "chatbot_model.madlib_models[0].variables" ] @@ -191,7 +234,23 @@ "execution_count": null, "id": "61722b3b-4731-4a32-98bc-ea94c5237807", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "eda9be086a2a426783a5c6697600724c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "ChatBotView(children=(Textarea(value='', disabled=True, layout=Layout(height='400px', width='90%')), RadioButt…" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "chatbotview = ChatBotView()\n", "chatbotview" @@ -232,11 +291,11 @@ " self.submit_button.on_click(self.on_click)\n", "\n", " def on_click(self, change):\n", - " for child in self.stack.children[self.selected_index].children:\n", - " child.value = ''\n", " user, bot = self.model.prompt()\n", " self.chat.value = \"USER: \" + user + '\\n\\n' + \"CHATBOT: \" + bot + '\\n\\n'\n", - " self.selected_index = 0\n" + " self.selected_index = 0\n", + " for child in self.stack.children[self.selected_index].children:\n", + " child.value = ''\n" ] }, { @@ -244,7 +303,23 @@ "execution_count": null, "id": "157aa5c9-7068-4f5c-a8f6-8c27286f8a80", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "724ce8f8916b4d74b057807158f8ee4f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "ChatBot(children=(Textarea(value='', disabled=True, layout=Layout(height='400px', width='90%')), RadioButtons(…" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "chatbot = ChatBot(chatbot_model)\n", "chatbot" @@ -255,7 +330,18 @@ "execution_count": null, "id": "eb40de44-b1f4-4654-a3d8-8626dd9e192e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "chatbot.model.selected_index" ] @@ -265,7 +351,26 @@ "execution_count": null, "id": "acf72e11-5e48-40cf-a1fc-89f2f201aaac", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/homebrew/Caskroom/miniconda/base/envs/jupyter-mentor/lib/python3.11/site-packages/nbdev/export.py:54: UserWarning: Notebook '/Users/nabrewer/Repos/Jupyter4Science/jupyter-mentor/nbs/00_educator.ipynb' uses `#|export` without `#|default_exp` cell.\n", + "Note nbdev2 no longer supports nbdev1 syntax. Run `nbdev_migrate` to upgrade.\n", + "See https://nbdev.fast.ai/getting_started.html for more information.\n", + " warn(f\"Notebook '{nbname}' uses `#|export` without `#|default_exp` cell.\\n\"\n", + "/opt/homebrew/Caskroom/miniconda/base/envs/jupyter-mentor/lib/python3.11/site-packages/nbdev/export.py:54: UserWarning: Notebook '/Users/nabrewer/Repos/Jupyter4Science/jupyter-mentor/nbs/00_main.ipynb' uses `#|export` without `#|default_exp` cell.\n", + "Note nbdev2 no longer supports nbdev1 syntax. Run `nbdev_migrate` to upgrade.\n", + "See https://nbdev.fast.ai/getting_started.html for more information.\n", + " warn(f\"Notebook '{nbname}' uses `#|export` without `#|default_exp` cell.\\n\"\n", + "/opt/homebrew/Caskroom/miniconda/base/envs/jupyter-mentor/lib/python3.11/site-packages/nbdev/export.py:54: UserWarning: Notebook '/Users/nabrewer/Repos/Jupyter4Science/jupyter-mentor/nbs/00_student.ipynb' uses `#|export` without `#|default_exp` cell.\n", + "Note nbdev2 no longer supports nbdev1 syntax. Run `nbdev_migrate` to upgrade.\n", + "See https://nbdev.fast.ai/getting_started.html for more information.\n", + " warn(f\"Notebook '{nbname}' uses `#|export` without `#|default_exp` cell.\\n\"\n" + ] + } + ], "source": [ "#| hide\n", "import nbdev; nbdev.nbdev_export()" diff --git a/nbs/14_student_course_overview.ipynb b/nbs/14_student_course_overview.ipynb index 0f3a42a..e137193 100644 --- a/nbs/14_student_course_overview.ipynb +++ b/nbs/14_student_course_overview.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "0320fe7e-0ec7-4dd1-90c2-74a3e25bab86", "metadata": {}, "outputs": [], @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "ab283a97-289b-49ba-94ce-4b7c34353e04", "metadata": {}, "outputs": [], @@ -47,12 +47,13 @@ " attributes={\"download\": \"hussey2015.pdf\"},\n", " children=[\"Download All\"]\n", " )\n", - " self.children = [self.file_chooser, self.download_button]" + " self.children = [self.file_chooser, self.download_button]\n", + "\t\t" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "f0e47085-1303-4292-b752-0ee05eef872d", "metadata": {}, "outputs": [], @@ -95,26 +96,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "54fb4f23-dabc-4109-a482-feee5c130f36", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "504e53f418464756a1b33d67d9d4fc64", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "StudentCourseOverview(children=(Container(children=[Html(attributes={'title': 'a title'}, children=['Student C…" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "#file_viewer = FileViewer()\n", "main = StudentCourseOverview()\n", @@ -123,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "11872b33-a907-4acb-9537-0a2f4237d791", "metadata": {}, "outputs": [], @@ -143,21 +128,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.19" } }, "nbformat": 4,