Contributing
June 13, 2026 ยท View on GitHub
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:uv syncOr 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-featureNow you can make your changes locally.
-
When you're done making changes, check that your changes pass the tests:
pytestIf 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.
- 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"