Skip to content

Contributing to pymmcore-plus

All development for this library happens in the pymmcore-plus/pymmcore-plus repo on GitHub. The general setup (cloning, uv sync, prek, running the tests) is the same as for the other packages, and is described on the main Contributing page. This page has a few notes that are specific to pymmcore-plus.

Without uv

If you're using a different virtual environment manager (like conda) instead of uv, you can install the package and its development dependencies with:

pip install -e . --group dev

This requires a newer version of pip (>= 25.1) to work.

Device adapters for the tests

Most of the tests use Micro-Manager's demo devices, so you'll need a compatible set of device adapters:

uv run mmcore install

On Linux and Apple Silicon this installs just the test adapters (which is all the tests need). Alternatively, pip install mm-test-adapters puts them in your environment, where pymmcore-plus will find them (this can be handy on CI). You can confirm that everything works by running:

from pymmcore_plus import CMMCorePlus

core = CMMCorePlus()
core.loadSystemConfiguration()
core.snap()

If you want to test against device adapters built from the current mmCoreAndDevices source (on macOS or Linux), run uv run mmcore build-dev. This will download the micro-manager repo, build it, and drop the DemoCamera, Utilities and SequenceTester devices into the pymmcore-plus user data folder (by default ~/Library/Application Support/pymmcore-plus/mm on macOS), which is on the default search path. (On macOS you must have homebrew installed.)

Contributing documentation

These docs live in the docs/ folder of this repository (and in docstrings), but the site itself is built by pymmcore-plus.github.io, which combines the docs of all the pymmcore-plus packages. See How these docs work to preview your changes locally. The CMMCorePlus method table and the CLI reference are generated by docs/_gen.py.