pymergetic-common is the PymergeticOS foundation package.
It centralizes:
- Python dependency groups (extras) used across Pymergetic packages
- Shared low-level Python utilities (e.g., header/impl wiring)
C++ extension builds use pymergetic-easybind via the easybind extra below.
Install with pip install pymergetic-common[GROUP] or uv pip install -e "packages/common[GROUP]".
| Extra | Purpose |
|---|---|
config |
pydantic, pydantic-settings, pyyaml (included in base install) |
api |
fastapi, httpx (HTTP API smoke tests) |
console |
fire, rich, textual |
objects |
pyzmq |
pki |
cryptography |
builder |
pyinstaller |
nanobind |
nanobind~=… pin |
bind |
nanobind + scikit-build stack (no pymergetic-easybind — for building easybind itself) |
easybind |
bind + pymergetic-easybind~=… — C++ extension consumer stack |
test |
pytest, pytest-asyncio |
release |
build, twine |
all |
all of the above |
dev |
alias for all |
Other packages should re-export these groups instead of duplicating pins, e.g.:
[project.optional-dependencies]
dev = ["pymergetic-common[dev]"]C++ extension packages (pymergetic-cppdantic, pymergetic-cruspy, synapse, axon): use pymergetic-common[easybind].
From the os-sdk repo root:
uv syncOr:
./scripts/dev-install.shStandalone package install:
uv pip install -e "packages/common[dev]"Versioning, tagging, and PyPI CI mirror pymergetic-easybind. See RELEASING.md.
pymergetic-release-tag --project-root packages/common --dry-run
pymergetic-release-tag --project-root packages/commonDev CLIs (install pymergetic-common[release] from PyPI, or uv sync in os-sdk). Use --project-root when not cd'd into the package repo:
pymergetic-release-tag— nextv*tag + pushpymergetic-pin-pyproject— bump{distribution}~=…pinspymergetic-wait-pypi— poll until a pinned release is on PyPI
Implementation: pymergetic.common.devtools. See RELEASING.md.