Releasing (development alpha)¶
MMML versions are derived from git tags by
versioningit (see [tool.versioningit] in
pyproject.toml). A clean, tagged commit produces an exact version; anything after a
tag gets a dev/local suffix.
Fast install (what end users get)¶
The alpha is distributed as a Python package, not a git clone:
pip install mmml # or: uv pip install mmml
The wheel/sdist are ~11 MB (they exclude large repo data such as mmml/models/EF/data/,
trajectories, and setup/charmm.tar.xz). pyCHARMM and a GPU are optional — see the README
and Getting started.
Cut an alpha release¶
- Make sure
mainis green and the working tree is clean. - Choose a PEP 440 pre-release version and tag it (annotated):
git tag -a v0.1.0a1 -m "mmml 0.1.0a1 (alpha)" git push origin v0.1.0a1versioningitturnsv0.1.0a1into version0.1.0a1. - Build and check the artifacts:
uv build # writes dist/*.whl and dist/*.tar.gz uv run --with twine twine check dist/* - (Optional) Publish to PyPI / TestPyPI:
uv run --with twine twine upload --repository testpypi dist/* - Create the GitHub Release from the tag and attach
dist/*(and, if wanted,setup/charmm.tar.xzas a release asset rather than tracking it in git).
Keeping the git repo small¶
git clone is large because of binaries committed to history. To reduce it:
- Users (no rewrite needed):
git clone --filter=blob:none <url>orgit clone --depth 1 <url>. - Maintainers (destructive, rewrites history, requires force-push and everyone re-clones):
run
scripts/slim_repo_history.sh --analyzethen--rewrite. Do this only when active branches/PRs can be coordinated, and reclaim Git LFS storage afterwards (GitHub does not garbage-collect LFS objects automatically).
Do not commit new large/regenerable artifacts; .gitignore already covers
node_modules/, *.dcd, *.traj, *.parquet, mmml/models/EF/data/, etc.