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 a Conda environment (or an
alternative virtual environment like
venv
).
The below instructions also use
Mamba
which is a very fast implementation of conda
.
git clone <your fork>
cd pymmcore-plus
mamba create -n pymm-dev -c conda-forge python
conda activate pymm-dev
pip install -e ".[test,docs]"
pip install pre-commit
pre-commit install
The -e .
flag installs pymmcore_plus
in "editable"
mode and
[test,docs]
installs the optional dependencies you need for developing
pymmcore-plus
.
Note
pymmcore-plus
is developed using the github
flow. Using
Git/GitHub can confusing , so if you're new to Git, you
may find it helpful to use a program like GitHub
Desktop and to follow a
guide.
Also feel free to ask for help/advice on the relevant GitHub issue.
Contributing Documentation#
Our documentation is built with mkdocs from the files
in the docs
folder. To build docs locally:
# install docs dependencies
pip install -e ".[docs]"
# build docs and serve locally
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)
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()