Developing smif¶
smif is under active development at github.com/nismod/smif
Testing¶
We use pytest for testing, with tests under tests/ matching the module
and class structure of smif/.
Install requirements for testing:
pip install -r test-requirements.txt
Run tests:
python setup.py test
Versioning¶
smif is currently pre-1.0, so API and usage are liable to change. After
releasing a first major version, we intend to follow semantic versioning, with
major versions for any incompatible changes to the public API.
Releases¶
smif is deployed as a package on the Python Package Index, PyPI. A full guide to packaging and distributing projects is available online.
Deployment to PyPI is handled by Travis CI.
To make a release, create an annotated tag, and submit a pull request:
git tag -a v0.2.0 # create annotated tag (will need a message)
git describe # show current commit in relation to tags
You’ll need to specify you tag to push either using the --tags flag or
the tag name:
git push upstream master --tags
git push upstream v0.2.0 # alternatively
Conventions¶
The numpydoc docstring conventions are used for inline documentation, which
is used to generate the module reference documentation visible at readthedocs
and which can also be generated by running python setup.py docs
Linting is handled by pre-commit hooks, which can be installed from the root of the repository using:
pre-commit install
Module import relationship diagram¶
Class diagrams¶
Decision - simulation class interaction/interface design¶