Experimental python bindings for CMMCore using nanobind.
git clone https://github.com/pymmcore-plus/pymmcore-nano.git
git submodule update --init
Make sure you have uv installed: https://docs.astral.sh/uv/getting-started/installation/
This project uses just
as a task runner.
If you have just
installed (e.g. brew install just
), you can fully setup the project with:
just install
If you prefer not to install just
globally, you can install it with the rest of the
project dependencies using uv. Then activate the environment and call just install
uv sync --no-install-project
. .venv/bin/activate # Windows: .venv\Scripts\activate
just install
Regardless of whether the environment is active, you can run:
just test
# or
just test-cov
or, if the environment is active:
pytest
This repo contains a few device adapters that are useful for testing, in src/mmCoreAndDevices/DeviceAdapters. To build these, you can run:
just build-devices
Or, to build a specific device within the DeviceAdapters subdirectory, you can run:
just build-adapter DemoCamera
To release a new version:
- update the
PYMMCORE_NANO_VERSION
value in_pymmcore_nano.cc
- run
just version
- commit changes to main
- run
just release
Rather than using git submodules, this repository checks in the
mmCoreAndDevices
source
code. This makes measuring C++ code coverage easier, as the mmCoreAndDevices
code is included in the same repository (see codecov results
here),
and it also makes it easier to make changes to the mmCoreAndDevices
code
directly from this repository (e.g., to fix bugs or add features that are
pending in the upstream repo).
To bring in new changes from the upstream mmCoreAndDevices
repository, you can
run two scripts:
python scripts/update_sources.py
python scripts/patch_sources.py
The first script (update_sources.py
) will update the src/mmCoreAndDevices
directory with the latest changes from the mmCoreAndDevices
repository,
overwriting any changes in the local repo.
The second script (patch_sources.py
) replays all of the changes that we
want to make to the sources in order to build the project. This includes changes
to the CMakeLists.txt
files. This essentially means that all changes to the
source MUST be patch_sources.py
, which serves as a nice record of changes that
should be upstreamed.
After running these scripts, you can test the build and python code as usual.
just build
pytest