Skip to content

feat(python): add pydantic extra and restamp docs to 1.2.0 - #513

Merged
dmealing merged 3 commits into
mainfrom
fm/mo-post-1-2-0-docs
Oct 30, 2026
Merged

dmealing merged 3 commits into
mainfrom
fm/mo-post-1-2-0-docs

Conversation

@dmealing

@dmealing dmealing commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

What Changed

  • Adds a pydantic optional extra to the Python package (server/python/pyproject.toml, lockfile updated). pip install "metaobjects[pydantic]" installs pydantic>=2.8, the minimum generated Python models need. The base install is unchanged, and the dev extra keeps its own pin.
  • Documents the new extra in docs/ports/python.md (install section and the Pydantic/FastAPI consumer note), and adds a CHANGELOG entry under Unreleased.
  • Restamps current-version claims from 1.1.4 / 8.1.4 to 1.2.0 / 8.2.0 in README.md, AGENTS.md, docs/ports/{csharp,java,kotlin,typescript}.md and server/java/README.md.
Validation

Risk Assessment

✅ Low: Docs-only version restamp plus one optional pydantic extra; the extra is consistent with uv.lock and leaves the base dependencies unchanged.

Testing

Built the 1.2.0 wheel from this commit and installed it into disposable venvs in the evidence directory. Verified that the pydantic extra pulls pydantic 2.14.2, the base install stays free of pydantic, and an explicit pydantic 2.7.4 is refused under the extra, so the 2.8 floor holds. Python unit suite: 4001 passed. tests/integration was excluded because it needs Docker/Testcontainers, which this run did not have. The docs restamp (README, AGENTS/CLAUDE status, docs/ports) has no runtime surface and was checked by reading the diff only. Overall: passing, with the integration suite and the docs checks untested.

  • Live validation: ✅ go - 4 of 6 scenarios driven live against the product
Scenario Result Live Evidence
pip install metaobjects[pydantic] installs pydantic>=2.8 with the package ✅ pass live uv pip install of built wheel with [pydantic] extra into a fresh venv -> pydantic 2.14.2 present
Plain pip install metaobjects leaves base install unchanged (no pydantic pulled) ✅ pass live fresh venv, base wheel install -> find_spec('pydantic') is None
Adopter pinning pydantic below 2.8 with the extra is refused (enforced floor) ✅ pass live uv pip install --dry-run '<wheel>[pydantic]' 'pydantic==2.7.4' -> 'requirements are unsatisfiable' because all metaobjects[pydantic] require pydantic>=2.8
Docs restamp to 1.2.0 / 8.2.0 across README, AGENTS.md/CLAUDE.md, docs/ports ⏸️ untested no Docs-only change with no runtime product surface; checked by reading the diff. A text grep would not prove the docs are correct, so no live scenario applies.
Python regression suite (unit, excluding integration) still passes ✅ pass live cd server/python && uv run --all-extras --all-groups pytest -q --ignore=tests/integration -> 4001 passed
Python integration suite (Testcontainers) passes ⏸️ untested no tests/integration needs Docker for Testcontainers Postgres; no Docker in this run. Change touches only packaging metadata, so low risk.
  • Evidence: Built 1.2.0 wheel and sdist (local file: /dist/metaobjects-1.2.0-py3-none-any.whl)

Pipeline

Updates from git push no-mistakes

✅ **Intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • Live validation: ✅ go - 4 of 6 scenarios driven live against the product
Scenario Result Live Evidence
pip install metaobjects[pydantic] installs pydantic>=2.8 with the package ✅ pass live uv pip install of built wheel with [pydantic] extra into a fresh venv -> pydantic 2.14.2 present
Plain pip install metaobjects leaves base install unchanged (no pydantic pulled) ✅ pass live fresh venv, base wheel install -> find_spec('pydantic') is None
Adopter pinning pydantic below 2.8 with the extra is refused (enforced floor) ✅ pass live uv pip install --dry-run '<wheel>[pydantic]' 'pydantic==2.7.4' -> 'requirements are unsatisfiable' because all metaobjects[pydantic] require pydantic>=2.8
Docs restamp to 1.2.0 / 8.2.0 across README, AGENTS.md/CLAUDE.md, docs/ports ⏸️ untested no Docs-only change with no runtime product surface; checked by reading the diff. A text grep would not prove the docs are correct, so no live scenario applies.
Python regression suite (unit, excluding integration) still passes ✅ pass live cd server/python && uv run --all-extras --all-groups pytest -q --ignore=tests/integration -> 4001 passed
Python integration suite (Testcontainers) passes ⏸️ untested no tests/integration needs Docker for Testcontainers Postgres; no Docker in this run. Change touches only packaging metadata, so low risk.
  • scripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchains
  • cd server/python && uv build --out-dir <evidence>/dist (wheel metaobjects-1.2.0-py3-none-any.whl)
  • uv venv + uv pip install <wheel> (base) -> pydantic absent
  • uv pip install '<wheel>[pydantic]' -> pydantic 2.14.2 resolved; uv pip check clean
  • uv pip install --dry-run '<wheel>[pydantic]' 'pydantic==2.7.4' -> unsatisfiable (floor enforced)
  • cd server/python && uv run --all-extras --all-groups pytest -q --ignore=tests/integration -> 4001 passed
  • git status: tracked tree clean after testing
🔧 **Document** - 1 issue found → auto-fixed ✅
  • ⚠️ agent-context/skills/metaobjects-fit-assessment/SKILL.md:11 - Capability sheet labelled 'at 1.1.4 / Maven 8.1.4' (also references/capability-sheet.md:1 and SKILL.md:461). Stale version label. Fixing needs regenerating fixtures/agent-context-conformance and checking the sheet's content against 1.2.0, so left for a follow-up.

🔧 Fix applied.
✅ Re-checked - no issues remain.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

…ocs already at 1.2.0 / 8.2.0 in this branch; pydantic extra and its docs were already in target commit.
…n restamp already complete; no other stale facts found.
@dmealing
dmealing merged commit 676706f into main Oct 30, 2026
8 checks passed
@dmealing
dmealing deleted the fm/mo-post-1-2-0-docs branch October 30, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant