In case you are not aware of the possibility, what I have been doing for this case is the "standard" python approach, i.e., simply guard the part that shouldn't run upon import with if __name__=='__main__': statements. When you execute a notebook interactively, __name__ is defined as '__main__', so the code will run, but when you import it with the hooks you mention, __name__ is set to the module name, and the code behind the if doesn't run. Of course it makes the notebook look a bit more ugly, but it works well, allows to develop modules as notebooks with included tests, and has the advantage of being immediately visible/obvious (as opposed to metadata).
Best, Johannes On Thu, Mar 22, 2018 at 11:23 AM Tony Hirst <[email protected]> wrote: > Recipes such as > http://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Importing%20Notebooks.html > provide a means for importing the contents of a notebook as a module, but > they do so by executing all code cells. > > My development notebooks tend to have functions defined as well as lots of > little test cells that test the functions, or that include literal bits of > code that I'm trying to test before working them up into a function. > > Sometimes I want to make use of the functions in other notebooks, but > don't want to run all the other bits of code. > > I was thinking it might be handy to define some code cell metadata > ('exportable':boolean, perhaps), that I could set on a code cell to say > whether that cell was exportable as a notebook-module function or just > littering a notebook as a bit of development testing. > > The notebook-as-module recipe would then test to see whether a notebook > cell was not just a code cell, but an exportable code cell, before running > it. The metadata could also hook into a custom template that could export > the notebook as python with the code cells set to *exportable:False* > commented out. > > Is anyone using such a recipe? Does it help with workflow? > > --tony > > -- > You received this message because you are subscribed to the Google Groups > "Project Jupyter" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jupyter/eba8e9fe-2173-4917-adb4-89a802f35b26%40googlegroups.com > <https://groups.google.com/d/msgid/jupyter/eba8e9fe-2173-4917-adb4-89a802f35b26%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Johannes Feist IFIMAC & Departamento de Física Teórica de la Materia Condensada Universidad Autónoma de Madrid [email protected] -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/CAPERba13U6Ek3dzOegCRWZVYco0pPnPJJ4i7VPA9YUSTsrnxsQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
