Repository navigation
build(release): prepare synchronized PyPI publishing - #113
Conversation
12609e6 to
18a2121
Compare
f0b3d67 to
5a9679f
Compare
Prepare public metadata for motrix-env-core, motrix-deploy, and motrix-rl. Pin cross-workspace dependencies to the shared workspace version and enforce the contract in tests. Use Commitizen, reviewed release pull requests, and Trusted Publishing to automate package releases. Refs Motphys#108
5a9679f to
4720699
Compare
There was a problem hiding this comment.
🔵 Needs a closer look
It introduces release automation involving publishing credentials (OIDC Trusted Publishing), branch/tag protection policy, and version governance that cannot be fully validated without live CI/registry execution and warrants final human review.
0 open findings
What changed in this PR
This PR prepares the MotrixLab workspace for synchronized public distribution on PyPI/TestPyPI (closes #108). It makes motrix-env-core, motrix-deploy, and motrix-rl publishable with complete package metadata, widens their supported Python range to >=3.10,<3.14, pins every cross-workspace dependency to the shared workspace version, and adds Commitizen-driven version bumping plus a full set of release/publishing GitHub workflows with human review gates. It also drops the unused python-abc dependency and refactors Docker publishing to manual dispatch from stable.
Changes:
- Packaging: add
LICENSE,py.typed,license-files, keywords, classifiers, and project URLs to the three published packages; widenrequires-pythonto>=3.10,<3.14; removepython-abc. - Version policy: pin all internal
motrix-*deps to==0.4.0b0, add[tool.commitizen]synchronized bumping, and add workspace version/dependency-pin contract tests plus a release-version validation script. - Release automation: new
release.yml,pypi-publish.yml(OIDC Trusted Publishing in dependency order), Docker switched to manual dispatch, pinned action SHAs, and extensive release documentation.
| File | Description |
|---|---|
pyproject.toml |
Widen root requires-python, pin internal deps, add commitizen dev dep and [tool.commitizen] config |
motrix_{env_core,deploy,rl}/pyproject.toml |
Publishable metadata: license-files, keywords, classifiers, URLs, widened Python range, pinned internal deps |
motrix_{env_core,deploy,rl}/LICENSE, .../py.typed |
Add per-package Apache-2.0 license and typing markers for distribution |
motrix_{robots,envs,env_motrixsim,env_mujoco,rl_builtin,rl_skrl,rl_rslrl,deploy_*}/pyproject.toml |
Pin cross-workspace deps to ==0.4.0b0 |
uv.lock |
Add commitizen + transitive deps, remove python-abc, bump packaging |
.github/scripts/validate_release_version.py |
PEP 440 release-target validation (normal vs stable-patch) |
tests/test_workspace_versions.py, tests/test_release_version_validation.py |
Contract tests for shared version, pins, lockfile, and version selection |
.github/workflows/release.yml, pypi-publish.yml |
New release and OIDC publishing pipelines |
.github/workflows/docker-build.yml |
Switch to manual dispatch; add major.minor tag extraction |
.github/workflows/{tests,pr-checks,codeql,branch-policy}.yml |
Pin action SHAs; stable-patch wording |
.github/workflows/{RELEASE,README}.md, .github/{REPOSITORY_SETTINGS,PULL_REQUEST_TEMPLATE}.md |
Document release/publishing process and required checks |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
motrix-env-core,motrix-deploy, andmotrix-rlto PyPI/TestPyPI.>=3.10,<3.14.py.typed.python-abcdependency.stable.Closes #108