Jupyter notebook magics to embed pythontutor.com within an IFrame in the Jupyter (classic or Lab) notebook using the code from a Jupyter code cell.
MIT License
Have a look to nbtutor <https://github.com/lgpage/nbtutor>
_, a more polished and better solution.
Jupyter notebook magics to embed http://www.pythontutor.com within an IFrame in the Jupyter notebook or to open a new tab in the browser using the code from a notebook code cell (using the IPython kernel).
.. code:: python
pip install tutormagic
or with conda
.. code:: python
conda install -c kikocorreoso tutormagic
or (for the development version)
.. code:: python
pip install git+https://github.com/kikocorreoso/tutormagic.git
Tested on Python 2.7.x/3.4.x/3.5.x/3.6.x/3.7.x/3.8.x/3.9.x and Jupyter 3.x/4.x/5.x/6.x.
First, load the extension:
.. code:: python
%load_ext tutormagic
Once loaded, in a code cell in the notebook type the following:
.. code:: python
%%tutor --lang python3
# some python code
# ...
to create an IFrame within the notebook with the http://www.pythontutor.com page with the code included in the Jupyter code cell or:
.. code:: python
%%tutor --lang python3 --tab
# some python code
# ...
to open http://www.pythontutor.com page in a new browser tab with the code included in the Jupyter code cell.
--lang
or -l
: it allows you to
choose one of the available languages supported by
pythontutor <http://www.pythontutor.com>
__. If this option is not used then
it will consider the code in the cell as Python3 code.
%%tutor --lang python3
or %%tutor -l python3
or %%tutor
%%tutor --lang python2
or %%tutor -l python2
to show a%%tutor --lang py3anaconda
or %%tutor -l py3anaconda
to show anumpy
. This is experimental.%%tutor --lang java
or %%tutor -l java
to show a pythontutor%%tutor --lang javascript
or %%tutor -l javascript
to show a%%tutor --lang typescript
or %%tutor -l typescript
to show a%%tutor --lang ruby
or %%tutor -l ruby
to show a%%tutor --lang c
or %%tutor -l c
to show a%%tutor --lang c++
or %%tutor -l c++
to show a.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/normal.png :width: 500 px
--height
or -h
: it changes the height of the output area display in pixels. It is used to define the height of the IFrame used to embed http://pythontutor.com within the notebook. If the --tab
option is used
this option will be ignored.
.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/height.png :width: 500 px
--tab
or -t
: it will open http://pythontutor.com in a new tab
instead of within an IFrame within the notebook.
--secure
or -s
: it will use HTTPS to open PythonTutor.com. This is useful when being used in a notebook that uses SSL.
--link
or -k
: it will display a link to PythonTutor, not via an iFrame.
.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/link1.png :width: 500 px
--run
or -r
: Use this option if you also want to run the code in the cell in the notebook.
.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/run1.png :width: 500 px
You can customize how PythonTutor is rendered via the options available below in the URL params. The following options are available:
--cumulative
option to tell PythonTutor to the cumulative to True.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/cumulative1.png :width: 500 px
--heapPrimitives
option to tell PythonTutor to render objects on the heap.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/test_heap1.png :width: 500 px
--textReferences
option to tell PythonTutor to use text labels for references--curInstr
followed by a number to start the visualisation at the defined step.. image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/current1.png :width: 500 px
--verticalStack
to set visualization to stack atop one another... image:: https://raw.githubusercontent.com/kikocorreoso/tutormagic/master/imgs/vertical1.png :width: 500 px
Example notebook included in the repository <http://nbviewer.jupyter.org/github/kikocorreoso/tutormagic/blob/master/examples/Examples.ipynb>
__.
Example (in spanish) notebook <http://nbviewer.ipython.org/github/Pybonacci/notebooks/blob/master/tutormagic.ipynb>
__.
The name of the extension was suggested by Doug S. Blank
(@dsblank <https://github.com/dsblank>
__).
--lang py3anaconda
(thanks to @naereen <https://github.com/naereen>
__).Version 0.3.0
- Added options ``--secure``, ``--link``, ``--cumulative``, ``--heapPrimitives`` and ``--textReferences`` (thanks to James Quacinella (`@jquacinella <https://github.com/jquacinella>`__)).
- Added options ``--run``, ``--curInstr`` and ``--verticalStack``.
Version 0.2.0
--tab
option (thanks to Holger Karl (@hkarl <https://github.com/hkarl>
__)).--height
option (thanks to Tom Simonart(@tomsimonart <https://github.com/tomsimonart>
__)).Version 0.1.0
- Initial version