_images/toyplot.png

Development

Getting Started

If you haven’t already, you’ll want to get familiar with the Toyplot repository at http://github.com/sandialabs/toyplot … there, you’ll find the Toyplot source code, issue tracker, discussions, and wiki.

You’ll need to install ffmpeg and pandoc, neither of which can be installed via pip. If you use Conda (which we strongly recommend), you can install them as follows:

$ conda install ffmpeg pandoc

Next, you’ll need to install all of the extra dependencies needed for Toyplot development:

$ pip install toyplot[all]

Then, you’ll be ready to obtain Toyplot’s source code and install it using “editable mode”. Editable mode is a feature provided by pip that links the Toyplot source code into the install directory instead of copying it … that way you can edit the source code in your git sandbox, and you don’t have to keep re-installing it to test your changes:

$ git clone https://github.com/sandialabs/toyplot.git
$ cd toyplot
$ pip install --editable .

Versioning

Toyplot version numbers follow the Semantic Versioning standard.

Coding Style

The Toyplot source code follows the PEP-8 Style Guide for Python Code.

Running Regression Tests

To run the Toyplot test suite, simply run regression.py from the top-level source directory:

$ cd toyplot
$ python regression.py

The tests will run, providing feedback on successes / failures.

Writing Regression Tests

Many of Toyplot’s tests function by comparing the SVG representation of a toyplot.canvas.Canvas against a reference stored in features/reference. These tests all end with a Behave step along the lines of Then the figure should match the <test-name> reference image, which compares the canvas to the file tests/reference/test-name.svg. The first time to you run a new test that uses this step, it will generate and store the new reference file, then fail, prompting you to examine the reference file to ensure that it’s correct. The next time you run the test, it will function normally, comparing the canvas against the reference file.

If you make changes that cause an existing test to fail, the failed SVG will be written to features/failed/test-name.svg, so you can compare it against the corresponding reference SVG in features/reference/test-name.svg.

Test Coverage

When you run the test suite with regression.py, it also automatically generates code coverage statistics. To see the coverage results, open .cover/index.html in a web browser.

Building the Documentation

To build the documentation, run:

$ cd toyplot/docs
$ make html

Once the documentation is built, you can view it by opening docs/_build/html/index.html in a web browser.