Skip to content

Contributing

Thanks for thinking of a way to help! Remember that contributions come in all shapes and sizes beyond writing bug fixes. Improving documentation, opening issues for bugs, asking for clarification on things you find unclear, and requesting new features are all super valuable contributions.

Where things live

Each package has its own repository, issue tracker, and contributing notes:

Package Repository Contributing notes
pymmcore-plus pymmcore-plus/pymmcore-plus Contributing to pymmcore-plus
useq-schema pymmcore-plus/useq-schema
pymmcore-widgets pymmcore-plus/pymmcore-widgets Contributing to pymmcore-widgets
pymmcore-gui pymmcore-plus/pymmcore-gui CONTRIBUTING.md
napari-micromanager pymmcore-plus/napari-micromanager
this website pymmcore-plus/pymmcore-plus.github.io How these docs work

Not sure where something belongs? Open it wherever seems closest (we can move issues between repositories), or ask us on the image.sc forum or Zulip.

Development setup

We use uv in all of the repositories (but any virtual environment manager should work), and prek (or pre-commit) for linting:

git clone <your fork>
cd <repo>
uv sync
uv run prek install  # or: uv run pre-commit install
uv run pytest

Most of the tests need Micro-Manager's demo device adapters, so run uv run mmcore install once if you haven't already.

Improving the docs

Most pages have an edit button (top right) that opens the source file in the right repository. (Pages in the API reference are generated from docstrings, so edit those in the package's src/ folder.) Each package's docs live in its own docs/ folder, so a pull request that changes code can update the documentation at the same time. To preview the full site locally, see How these docs work.