Developer Resources¶
Style Guide¶
Follow the Python Style Guide.
Running from source¶
While developing, it is convenient to run the changed code without uninstalling/installing. Nodeworks can be run from the top level source directory by:
python -m nodeworks
Or, nodeworks can be installed in develop mode:
python setup.py develop
Documentation¶
This documentation is created using sphinx. The source files for this
documentation can be found in the docs/userguide
directory.
To build the html documentation, go to the docs
directory and use
the following command:
$ make html
Basic reStructuredText syntax can be referenced here.
Testing¶
The test harness is run using pytest. A plugin for testing qt applications,
named pytest-qt
is also required. To install with pip:
$ pip install pytest pytest-qt
Tests should located in the tests
directory. The name of the test files
starts with ‘test_’ followed by the module that is being tested.
To run the test harness, run pytest
from the command line:
$ pytest
To run a specific test file, use this command:
$ pytest tests/test_foobar.py
To run a specific test by name:
$ pytest -k TestCase
pytest can also measure the code coverage of the tests by using the coverage plugin. To get the coverage plugin, install it using pip:
$ pip install pytest-cov
To get a report on the command line, use these flags when running pytest:
$ pytest --color=yes --no-cov-on-fail --cov=tests --cov-report=term-missing:skip-covered tests
To generate a nice html report showing all the lines that are covered, use the following flags:
$ pytest --color=yes --no-cov-on-fail --cov=tests --cov-report=html tests
html files will be created in nodeworksdocstestcoverage, with index.html being the entry point.
Qt provides testing tools to mimic user interaction.
from qtpy import QtGui, QtCore, QtTest
# click <widget> with left mouse button
QtTest.QTest.mouseClick(<widget>, QtCore.Qt.LeftButton)
Building conda package¶
First install/update conda build:
# conda install conda-build
The conda package can be constructed by running the following command in the top level of the repository:
$ conda build -c mfix -c anaconda conda_recipe/nodeworks
The package can then be tested by installing with:
$ conda install --offline path\to\conda-bld\noarch\nodeworks*.tar.bz2
Building whl file¶
Since Nodeworks is pure python, a universal wheel file can be built with the following command:
$ python setup.py bdist_wheel --universal
This wheel file can be installed in both python 2 and python 3 installations by running:
$ pip install nodeworks.whl