# Contributing to pymmcore-plus

All development for this library happens in the [pymmcore-plus/pymmcore-plus](<https://github.com/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](<https://pymmcore-plus.github.io/contributing/index.md>) 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:

```bash
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:

```bash
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:

```py
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](<https://brew.sh>) 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](<https://github.com/pymmcore-plus/pymmcore-plus.github.io>), which combines the docs of all the pymmcore-plus packages. See [How these docs work](<https://pymmcore-plus.github.io/contributing/docs/index.md>) to preview your changes locally. The `CMMCorePlus` method table and the CLI reference are generated by `docs/_gen.py`.
