Notes for developers
Checklist for releasing a new Rockpool version
Make a release candidate branch
rc/<version>
fromdevelop
branch on internal gitlabMake sure the version number in
version.py
has been bumped. We use semantic versioning:major.minor.maintenance.(postN)
, where(postN)
is only for hotfixesMerge
master
intorc/...
to make sure all changes are mergedPush
rc/..
toorigin
Make a merge request from
rc/...
intomaster
Get all primary developers to review the merge request, ensure that all suggested modifications are included
Ensure that all pipelines pass, including manual pipelines
Update
CHANGELOG.md
by checking file and removing empty sections and adding the release dateCheck if copyright date needs to be update in
docs/conf.py
Once the merge has succeeded, delete the
rc/...
branchMake and push a tag to the
master
branch for the new version (i.e. “vX.Y.Z”)Once all CI tasks have succeeded, a manual CI task “pypi_deploy” will be available. Run this task to deploy to PyPI. This task must be run from the internal Rockpool repository and after the commit has been tagged
A pull request for the conda feedstock should be created automatically by a conda-forge bot. Check and merge this PR to bump the version on
conda-forge
Merge
master
back intodevelop
Bump the version number in the
develop
branch to something like “vX.Y.Z.dev”Update
CHANGELOG.md``in the ``develop
branch to “[Unreleased]” and complete headings (as listed below)Notify all the developer a new version is out and that they need to update their branches
Headings for CHANGELOG.md
### Added
### Changed
### Fixed
### Deprecated
### Removed
### Security
Questions to resolve for each merge request
During code review for each merge request, make sure all of the following questions are addresssed. If any boxes are not ticked, there should be a good reason why not.
- [ ] Are there user-facing tutorials?
[ ] what does the feature do? how to use it?
[ ] what are the limitations of the feature? what it doesn’t do?
[ ] troubleshooting guide: what to do in case of issues/bugs/problems?
[ ] FAQ: what are the most common mistakes or confusions?
[ ] Is each tutorial minimal and relatively self-contained?
[ ] Is each tutorial didactic?
[ ] Are all class / method / function / file links in the tutorials working correctly?
[ ] Is the developer documentation updated with any new modules or changes?
[ ] Are the packages / tutorials integrated into the documentation TOC?
[ ] Do all user-facing class attributes have docstrings in
__init__()
?[ ] Do all non-user-facing class attributes have a leading underscore? (e.g.
_attr
)[ ] Are all user-facing class attributes either
Parameter
,State
orSimulationParameter
objects in__init__()
?[ ] Do Rockpool modules obey the standard Rockpool API for
evolve()
?[ ]
as_graph()
implemented, if at all possible, for any new modules[ ] Does every
__init__.py
have an initial docstring block, describing what the package / sub-package does and contains?- [ ] Are there tests implemented?
[ ] unit tests?
[ ] integration tests?
[ ] interface tests?
[ ] performance tests?
[ ] code coverage measured?
- [ ] Is
CHANGELOG.md
updated? [ ] Does it contains an one-line description of the functionality?
[ ] Does the dev version have been updated?
- [ ] Is
[ ] Is
version.py
updated and is it matchingCHANGELOG.md
?[ ] Is the implementation minimal? i.e. the simplest possible way of implementing the functionality