Notes for developers
Checklist for releasing a new Rockpool version
Make a release candidate branch
rc/<version>fromdevelopbranch on internal gitlabMake sure the version number in
version.pyhas been bumped. We use semantic versioning:major.minor.maintenance.(postN), where(postN)is only for hotfixesMerge
masterintorc/...to make sure all changes are mergedPush
rc/..tooriginMake a merge request from
rc/...intomasterGet 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.mdby checking file and removing empty sections and adding the release dateCheck if copyright date needs to be update in
docs/conf.pyOnce the merge has succeeded, delete the
rc/...branchMake and push a tag to the
masterbranch for the new version (i.e. “vX.Y.Z”)When version update is major or minor, a new color should be picked to be used in the logo. The color should be register in Wrike.
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-forgeMerge
masterback intodevelopBump the version number in the
developbranch to something like “vX.Y.Z.dev”Update
CHANGELOG.md``in the ``developbranch 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,StateorSimulationParameterobjects 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__.pyhave 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.mdupdated? [ ] Does it contains an one-line description of the functionality?
[ ] Does the dev version have been updated?
- [ ] Is
[ ] Is
version.pyupdated and is it matchingCHANGELOG.md?[ ] Is the implementation minimal? i.e. the simplest possible way of implementing the functionality