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 <https://packaging.python.org/distributing/>
To make a release, first register with PyPI and contact a project owner (currently Will Usher or Tom Russell) to be made a maintainer.
Set up a .pypirc file in your home directory with your access details:
[distutils]
index-servers =
pypi
[pypi]
repository: https://pypi.python.org/pypi
username: <username>
password: <password>
Create an annotated tag for release:
git tag -a v0.2.0 # create annotated tag (will need a message)
git describe # show current commit in relation to tags
git push origin v0.2.0 # push the tag to the origin remote repository
Create a source distribution (this creates a gzipped package in dist):
python setup.py sdist
ls dist/
Use twine to upload the distribution:
pip install twine
twine upload dist/smif-0.2.0.tar.gz
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