Contributing#
Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
You can contribute in many ways:
Types of Contributions#
Report Bugs#
Report bugs in the cellpy repository at GitHub.
If you are reporting a bug, please include:
Your operating system name and version.
Any details about your local setup that might be helpful in troubleshooting.
Detailed steps to reproduce the bug.
Fix Bugs#
Look through the GitHub issues for bugs. Anything tagged with “bug” and “help wanted” is open to whoever wants to implement it.
Implement Features#
Look through the GitHub issues for features. Anything tagged with “enhancement” and “help wanted” is open to whoever wants to implement it.
Write Documentation#
cellpy could always use more documentation, whether as part of the official cellpy docs, in docstrings, or even on the web in blog posts, articles, and such.
Submit Feedback#
The best way to send feedback is to file an issue in the cellpy repository at GitHub.
If you are proposing a feature:
Explain in detail how it would work.
Keep the scope as narrow as possible, to make it easier to implement.
Remember that this is a volunteer-driven project, and that contributions are welcome :)
Get Started#
Ready to contribute? Here’s how to set up cellpy for local development.
Fork the
cellpyrepo on GitHub.Clone your fork locally:
git clone git@github.com:your_name_here/cellpy.git
Create the development environment with uv (recommended). This creates
.venvand installs the project plus thedevdependency group from the lockeduv.lock(cellpycoreresolves from PyPI):uv sync --no-sources
Dual-repo development (cellpy + a sibling
cellpy-corecheckout): after sync, install core editable so local core changes are picked up immediately:uv pip install -e ../cellpy-core
Or run the helper script (expects
../cellpy-corerelative to the cellpy root):scripts/dev_sync.sh
Do not commit a
[tool.uv.sources]path override inpyproject.toml— it breaks Dependabotuv.lockupdates. Regenerate the lock from PyPI pins withUV_NO_SOURCES=1 uv lockbefore pushing lockfile changes.Or create a plain virtual environment manually:
python -m venv .venv source .venv/bin/activate # or .venv\Scripts\activate on Windows uv pip install -e .
Or use
condaenvironments. See the conda documentation for more information. A suitable environment yaml configuration file can be found in the root of the repository (environment_dev.yml; to create the environment, runconda env create -f environment_dev.yml).Run commands inside the environment with
uv run, e.g.:uv run pytest
Create a branch for local development:
git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
When you’re done making changes, check that your changes pass the tests:
pytest
If there are any libraries missing (it could happen) just pip install them into your virtual environment (or conda install them into your conda environment).
Commit your changes and push your branch to GitHub:
git add . git commit -m "Your detailed description of your changes." git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website (or your IDE if that option exists).
Building the package#
The build is defined entirely in pyproject.toml (hatchling backend). The
version is derived from the latest git tag via uv-dynamic-versioning (tag
new releases as vX.Y.Z).
Build the sdist and wheel locally:
uv build
To verify the build in a clean, isolated environment (catches packaging problems such as missing data files or a broken CLI entry point), run the Docker-based build test (requires Docker):
scripts/build_test.sh
This builds the wheel inside a fresh container, installs it, and smoke-tests
import cellpy and the cellpy CLI.
Pull Request Guidelines#
Before you submit a pull request, check that it meets these guidelines:
The pull request should include tests.
Deprecation shims must use
cellpy._deprecation.warn_once(warn once per call site) and register inDEPRECATIONS.md.The pull request should not include any gluten.
Tips#
To self-hypnotize yourself to sleep well at night::
echo "You feel sleepy"
echo "You are a great person"