Contributing#
Thanks for thinking of a way to help improve this library! Remember that contributions come in all shapes and sizes beyond writing bug fixes. Contributing to documentation, opening new issues for bugs, asking for clarification on things you find unclear, and requesting new features, are all super valuable contributions.
Contributing Code#
All development for this library happens in the pymmcore-plus/pymmcore-plus repo on GitHub. We recommend you work with uv, but any virtual environment manager should work.
Using uv
:
git clone <your fork>
cd pymmcore-plus
uv sync
pre-commit install
uv run pytest
or activate the virtual environment (source .venv/bin/activate
on
Linux/macOS, .venv\Scripts\activate
on Windows) and run:
pytest
If using a different virtual environment manager (like conda) instead of uv, you can install the dependencies with:
pip install -e . --group dev
This requires a newer version of
pip
(>= 25.1) to work.
Contributing Documentation#
Our documentation is built with mkdocs from the files
in the docs
folder. To build docs locally:
# build docs and serve locally
uv run --group docs mkdocs serve
The docs should be live at http://127.0.0.1:8000 and will update automatically as you edit and save them.
Developing on Apple Silicon#
To build a native version of the DemoCamera for local testing on apple silicon, you can run the following command (you must have homebrew installed)
uv run mmcore build-dev
This will download the micro-manager repo, build it, and drop the DemoCamera and
Utilities devices into a folder in your pymmcore-plus install folder (by default
~/Library/Application Support/pymmcore-plus/mm
). This path is on the default
search path so you should be good to go. You can confirm by running:
from pymmcore_plus import CMMCorePlus
core = CMMCorePlus()
core.loadSystemConfiguration()
core.snap()