Developers Guide
|
|
################
|
|
|
|
.. _testing-label:
|
|
|
|
Testing
|
|
=======
|
|
|
|
The {{cookiecutter.package_display_name}} project implements a regression
|
|
test suite that improves developer productivity by identifying capability
|
|
regressions early.
|
|
|
|
Developers implementing fixes or enhancements must ensure that they have
|
|
not broken existing functionality. The {{cookiecutter.package_display_name}}
|
|
project provides some convenience tools so this testing step can be quickly
|
|
performed.
|
|
|
|
.. code-block:: console
|
|
|
|
({{cookiecutter.package_name}}) $ pytest -v
|
|
|
|
Individual unit tests can be run also.
|
|
|
|
.. code-block:: console
|
|
|
|
({{cookiecutter.package_name}}) $ pytest -v test_name
|
|
|
|
|
|
Code Style
|
|
==========
|
|
|
|
Adopting a consistent code style assists with maintenance. This project uses
|
|
Black to format code, flake8, and isort to sort imports
|
|
|
|
.. _annotations-label:
|
|
|
|
Type Annotations
|
|
----------------
|
|
|
|
The code base contains type annotations to provide helpful type information
|
|
that can improve code maintenance.
|
|
|
|
|
|
.. _documentation-label:
|
|
|
|
Documentation
|
|
=============
|
|
|
|
To simplify testing and generation, give `sphinx-autobuild` a shot, which will build and start a server for testing:
|
|
|
|
.. code-block:: console
|
|
|
|
({{cookiecutter.package_name}}) $ sphinx-autobuild docs/source docs/build/html
|
|
|
|
In the future, we may integrate and automate doc autobuild as well.
|
|
|
|
|
|
.. _release-label:
|
|
|
|
Release Process
|
|
===============
|
|
|
|
The following steps are used to make a new software release.
|
|
|
|
The steps assume they are executed from within a development virtual
|
|
environment.
|
|
|
|
- Check that the package version label in ``pyproject.toml`` is correct.
|
|
|
|
- Create and push a repo tag to Github. As a convention use the package
|
|
version number (e.g. YY.MM.MICRO) as the tag.
|
|
|
|
.. code-block:: console
|
|
|
|
$ git checkout master
|
|
$ git tag YY.MM.MICRO -m "A meaningful release tag comment"
|
|
$ git tag # check release tag is in list
|
|
$ git push --tags origin master
|
|
|
|
- This will trigger Github to create a release at:
|
|
|
|
::
|
|
|
|
https://github.com/{username}/{{cookiecutter.package_name}}/releases/{tag}
|