Skip to main content

IPython custom cell magic to test Python and R code snippets typed into notebook cells.

Project description

README

IPython custom cell magic to test code snippets typed into notebook cells.

Installation

This package depends on IPython and RPy2, you may need to install them first.

Install from PyPI

As of 2022-07-01, tmagic is available at https://pypi.org/project/tmagic/. Install it as usual: pip3 install tmagic.

Install from BitBucket

To install the package for yourself as user:

pip install git+ssh://git@bitbucket.org/interquadrat/testmagic.git

You will need to have the appropriate credentials to get this working.

Install from a local repository

To get around BitBucket authentication issues, the trick is to install from the local Git repository.

Assuming that this local repo belongs to the user "teacher" that also has sudo rights, then install the package for all users like this:

sudo -H pip3 install git+file:///home/teacher/PROJECTS/training/testmagic

where you may need to modify the path to the local repo.

Preparation

Import the ExerMagic class and create an instance of it. This instance stores exercise name / expected value pairs, which can be passed either to the ExerMagic() constructor or to the register_tests() method, or be read from a JSON file.

In the example below we set up an exercise called "answer" so that the correct value generated at the end should be 42:

from tmagic import ExerMagic
magic = ExerMagic({"answer":42})

Python exercises

Start a notebook cell with %%pyexer <testname> where <testname> is the name of the test that you registered with the ExerMagic object ("answer" in the above example). Then add one or more Python statements to the cell. The last statement must evaluate to the "expected value" (42) registered with the "answer" test.

The following exercise will fail:

%%pyexer answer
a = 6
b = 8
a*b

When executing this cell, the output will be:

Test failed :-(
48

This, however, will succeed:

%%pyexer answer
a = 6
b = 7
a*b

producing the output:

Test passed :-)
42

R exercises

The R programming language exercises can be set up with the %%rexer cell magic. These cells "see" the results of previous notebook cells run with Rpy2's %%R magic. The above example in R would look like this:

%%rexer answer
a <- 6
b <- 7
a*b

The response would be:

Test passed :-)
array([42.0,])

due to the peculiarities of the R<->Python variable mapping.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tmagic-0.1.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tmagic-0.1.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file tmagic-0.1.0.tar.gz.

File metadata

  • Download URL: tmagic-0.1.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.2

File hashes

Hashes for tmagic-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2878a6b1118491dc4204dccdf1671a387a002ec77689803ebe0e115f08385ec0
MD5 a936b8de33019eb4b267713fd34be40e
BLAKE2b-256 656e0a0a0af12c283766a2493f956de3583be2ca954b2f6f6a08636873c17896

See more details on using hashes here.

File details

Details for the file tmagic-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tmagic-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.2

File hashes

Hashes for tmagic-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 044fd6bc2403aa5082d2bef8adce3f4136b8cc6a7fc96ac7616989fd75c02005
MD5 95c727d39124cdd21faec6d5477a7e7f
BLAKE2b-256 acf671a50f1b622e7428ab8a5717490d7b465c63eded6903671ad51c6a4b9399

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page