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.