Electrophysiological data analysis library used by phy, a spike sorting visualization software, and ibllib.
- participation in phylib is governed by the project Code of Conduct
- run all tests using pytest
pytest phylib - PR to master
- keep
phylib/__init__.pyon the next development version (for example,2.7.1.dev0) - for a release, follow the steps below
- after publishing, immediately bump
phylib/__init__.pyto the next.dev0version
Before merging the release PR, confirm maintainer approval and green CI. Update
CHANGELOG.md with all changes since the previous release, replace the pending
release date with the actual release date, and remove the .dev0 suffix from
phylib/__init__.py.
Validate the final release checkout in a dedicated environment:
uv venv --python 3.12 .venv-release
uv pip install --python .venv-release -r requirements-dev.txt -e . setuptools build twine
.venv-release/bin/python -m flake8 phylib
.venv-release/bin/python -m pytest phylibAfter the approved PR is merged, create an annotated tag from the merged release
commit (for example, git tag -a 2.7.1 -m "phylib 2.7.1"). Build fresh artifacts
from that tagged checkout into an empty output directory:
.venv-release/bin/python -m build --outdir dist/2.7.1
.venv-release/bin/python -m twine check dist/2.7.1/*Install the wheel in a separate clean environment and verify its version and imports. Verify the downstream phy template-less waveform regression against this wheel before publishing. Upload only the artifacts just checked:
.venv-release/bin/python -m twine upload dist/2.7.1/*Verify installation of the published version from PyPI in another clean
environment. Then bump master to 2.7.2.dev0 and add an Unreleased changelog
section. Substitute the appropriate version numbers for subsequent releases.