Contributions are welcome in the form of feedback and discussion in issues, or pull requests for changes to the code.
Once the implementation of a piece of functionality is considered to be free of
bugs and properly documented, it can be incorporated into the main
branch.
To help developing pybv
,
you will need a few adjustments to your installation as shown below.
All contributions are expected to follow the Code of Conduct of the bids-standard GitHub organization.
First make a fork of the repository under your USERNAME
GitHub account.
Then, in your Python environment follow these steps:
git clone https://github.com/USERNAME/pybv
cd pybv
git fetch --tags --prune --prune-tags
python -m pip install -e ".[dev]"
pre-commit install
You may also clone the repository via ssh, depending on your preferred workflow
(git clone [email protected]:USERNAME/pybv.git
).
Note that we are working with "pre-commit hooks". See https://pre-commit.com/ for more information.
If you have followed the steps to get the development version, you can run tests as follows. From the project root, call:
pytest
to run tests and coveragepre-commit run -a
to run style checks (Ruff and some additional hooks)
The documentation can be built using Sphinx.
The publicly accessible documentation is built and hosted by Read the Docs. Credentials for Read the Docs are currently held by:
We follow a semantic versioning scheme. This is implemented via hatch-vcs.
pybv
is regularly released on
GitHub,
PyPI,
and Conda-Forge.
Credentials are currently held by:
- GitHub
- Admin
- any admin of the bids-standard GitHub organization
- @sappelhoff
- @choldgraf
- @cbrnr
- Write
- Admin
- PyPi
- Owner
- Maintainer
- Conda-Forge
Releasing on GitHub will automatically trigger a release on PyPi via a GitHub Action
(see .github/workflows/release.yml
).
A release on PyPi in turn will automatically trigger a release on Conda-Forge.
The release protocol can be briefly described as follows:
- Activate your Python environment for
pybv
. - Make sure all tests pass and the docs are built cleanly.
- If applicable, append new authors to the author metadata in the
CITATION.cff
file. - Update
docs/changes.rst
, renaming the "current" headline to the new version - Commit the change and git push to upstream
main
. Include "REL" in your commit message. - Then, make an annotated tag, for example for the version
v1.2.3
:git tag -a -m "v1.2.3" v1.2.3 upstream/main
(This assumes that you have a git remote configured with the name "upstream" and pointing to https://github.com/bids-standard/pybv). NOTE: Make sure you have yourmain
branch up to date for this step! git push --follow-tags upstream
- Make a release on GitHub,
using the git tag from the previous step (e.g.,
v1.2.3
). Fill the tag name into the "Release title" field, and fill the "Description" field as you see fit. - This will trigger a GitHub Action that will build the package and release it to PyPi.
Then the release is done and main
has to be prepared for development of
the next release:
- Add a "Current (unreleased)" headline to
docs/changes.rst
. - Commit the changes and git push to
main
(or make a pull request).