Skip to content

Commit 676706f

Browse files
authored
feat(python): add pydantic extra and restamp docs to 1.2.0 (#513)
* docs: restamp current-version claims to 1.2.0 / 8.2.0; add pydantic extra to the Python package * no-mistakes(document): Restamped Java README to 8.2.0. Other listed docs already at 1.2.0 / 8.2.0 in this branch; pydantic extra and its docs were already in target commit. * no-mistakes(document): Fixed one stale Python install snippet. Version restamp already complete; no other stale facts found.
1 parent 89a6774 commit 676706f

11 files changed

Lines changed: 45 additions & 28 deletions

File tree

‎AGENTS.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The first four ship per-language today across the five ports (TS / C# / Java / P
2222

2323
## Status
2424

25-
_Last refreshed 2026-10-26._
25+
_Last refreshed 2026-10-30._
2626

2727
**1.0 gating — the quiet period is RETIRED (2026-09-06).** `docs/1.0-readiness.md` §G3 no
2828
longer asks for "one coordinated release with no metamodel-breaking change." It measured a
@@ -39,9 +39,9 @@ because a conformance corpus gates the ports against each other and never agains
3939
in ADR-0035 **Amendment 3**. Do not reintroduce a waiting gate in any form.
4040

4141

42-
**Where the versions are.** `latest` is **`1.1.4`** on npm, **`8.1.4`** on Maven Central,
43-
**`1.1.4`** on PyPI and **`1.1.4`** on NuGet (the Maven major is always **npm major + 7**, so
44-
1.1.4 is 8.1.4). **1.1.0, 1.1.1, 1.1.2, 1.1.3 and 1.1.4 are released.** 1.0.13 is the last 1.0.x release; the four registries moved together on 1.0.13, 1.0.12, 1.0.11, 1.0.10 and 1.0.9 (Maven skipped 8.0.8), and earlier Maven alone took 1.0.6 (8.0.6) while the other three skipped that
42+
**Where the versions are.** `latest` is **`1.2.0`** on npm, **`8.2.0`** on Maven Central,
43+
**`1.2.0`** on PyPI and **`1.2.0`** on NuGet (the Maven major is always **npm major + 7**, so
44+
1.2.0 is 8.2.0). **1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4 and 1.2.0 are released.** 1.0.13 is the last 1.0.x release; the four registries moved together on 1.0.13, 1.0.12, 1.0.11, 1.0.10 and 1.0.9 (Maven skipped 8.0.8), and earlier Maven alone took 1.0.6 (8.0.6) while the other three skipped that
4545
number. Both patterns are the convergent-publishing rule working as intended. **1.0 is CUT** and **1.1 is released**: the 1.0.0-rc candidates through 1.0.13 are superseded, and npm's `next` tag is REPOINTED onto each release — not deleted, because
4646
`dist-tag rm` 403s for every token we hold (`docs/RELEASING.md` §4).
4747
`metamodelVersion` read **`1.0`** through 1.0.13 — C4 landed and G4 shipped it, and no 1.0.x patch
@@ -80,7 +80,7 @@ PyPI has had no product change since `0.25.0` — nothing is broken.
8080

8181
**Key cross-language features shipped:** FR5 family (a/b/c/d/e + WARN envelope-shape — actionable loader errors per ADR-0009); FR-003 (Java RDB runtime persistence + projections; schema migrations are TS-only — the Java migration engine was removed); FR-006 (template.output parser-on-receipt codegen per ADR-0010 in all 5 ports); FR-008 + FR-009 (cross-port REST API contract + the nine filter operators); FR-018 (M:N relationship codegen in all 5 ports — entity navigation + idiomatic ORM wiring [Drizzle m2m / EF Core `UsingEntity` / Spring repo+JPA / Exposed / Pydantic+route as the SQLAlchemy-secondary equivalent] + REST traversal `GET /<source-plural>/{id}/<relation>` + Tier-2 docs, gated by the shared api-contract m2m corpus in both lanes + persistence-conformance; the TanStack M:N client hook is a deferred client-ergonomics follow-up); SP-H (field-subtype end-to-end hardening: every concrete `field.*` subtype write+read round-trips cross-port via the persistence `op: roundtrip` gate; cut `field.byte`/`field.short`/`field.class` non-functional stubs; cross-port filter-op reconciliation for uuid/currency); source v2 paradigm (ADR-0007); metadata-ktx Kotlin facade; per-target output directories (TS codegen); FR-044 (the reporting vocabulary — `dimension.attribute`/`dimension.time`, `measure.aggregate`/`measure.ratio`, `segment.filter`, `object.report`, `@spine` on a report to take rows from a to-one dimension entity, `@default` on a measure for empty aggregates, plus the relative-date filter value — registered and loader-validated in all five ports; a report that declares a read-only `source.rdb @kind: view` is lowered to a SQL view by `meta migrate` and read by every port, and served by a generated read-only list route in every port, gated by the api-contract `report/` sub-corpus; the TypeScript `cube-model` reference generator writes the vocabulary as Cube data-model files, gated by the `fixtures/cube-model/` corpus and a `cube` lane that loads the output into a real Cube; a served report gets the generated TanStack list hook (`use<R>List`) but no grid or form, see [docs/features/reporting.md](docs/features/reporting.md) and [docs/features/cube-export.md](docs/features/cube-export.md)).
8282

83-
**Release 1.1.0** (released; npm `1.1.0`, PyPI `1.1.0`, NuGet `1.1.0` and Maven Central `8.1.0`; the latest is 1.1.4 / 8.1.4). The reporting release (FR-044): declare dimensions, measures, segments and an `object.report`, and get a SQL view, a served read-only list route in every port, a generated TanStack list hook, and a Cube data model, with `@spine` for rows that have no facts and `@default` for an empty measure. Also carries the first slice of requirements (the gate in every port's `verify`), the derived-key parity fix across the ports, and the list-hook and nested-average fixes found by the first adopter. See the `CHANGELOG.md` 1.1.0 section for the full scope, pre-release RC history, and the diffs to expect when you upgrade (ejected generators and keyless projections). It also makes documentation a set of generators in every port (ADR-0034 Amendment 9): the docs commands are removed, and `docs/features/migrations/docs-are-generators.md` is the upgrade path. The last 1.0.x release, 1.0.13 (2026-10-03), was a PATCH on 1.0.x.
83+
**Release 1.1.0** (released; npm `1.1.0`, PyPI `1.1.0`, NuGet `1.1.0` and Maven Central `8.1.0`; the latest is 1.2.0 / 8.2.0). The reporting release (FR-044): declare dimensions, measures, segments and an `object.report`, and get a SQL view, a served read-only list route in every port, a generated TanStack list hook, and a Cube data model, with `@spine` for rows that have no facts and `@default` for an empty measure. Also carries the first slice of requirements (the gate in every port's `verify`), the derived-key parity fix across the ports, and the list-hook and nested-average fixes found by the first adopter. See the `CHANGELOG.md` 1.1.0 section for the full scope, pre-release RC history, and the diffs to expect when you upgrade (ejected generators and keyless projections). It also makes documentation a set of generators in every port (ADR-0034 Amendment 9): the docs commands are removed, and `docs/features/migrations/docs-are-generators.md` is the upgrade path. The last 1.0.x release, 1.0.13 (2026-10-03), was a PATCH on 1.0.x.
8484

8585
Active and planned work lives in GitHub: issues labelled `FR`, milestones for releases, and the MetaObjects Roadmap project board. `spec/roadmap.md` keeps the release direction and the FR → issue → spec index. Process: `docs/ROADMAP-PROCESS.md`.
8686

‎CHANGELOG.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ here.**
1010

1111
## [Unreleased]
1212

13+
### Added
14+
15+
- **A `pydantic` extra on the Python package.** `pip install "metaobjects[pydantic]"` installs
16+
`pydantic>=2.8`, the minimum the generated Python models need, so an adopter can get the enforced
17+
floor with the package. The base install is unchanged.
18+
1319
## [1.2.0] — 2026-10-30
1420

1521
_npm `1.2.0` (full lockstep across all 14 `@metaobjectsdev/*` publish candidates)._

‎README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,11 @@ first-week wedge plan — and `meta init` picks up from there.
160160

161161
| Language | Status | Quickstart | Source |
162162
|---|---|---|---|
163-
| TypeScript | **npm `1.1.4`** — the `@metaobjectsdev/*` packages | [`docs/ports/typescript.md`](docs/ports/typescript.md) | [`server/typescript/`](server/typescript/) · [`client/web/`](client/web/) |
164-
| Java | **Maven Central `8.1.4`** (`com.metaobjects:*` — the JVM major is npm major + 7) — loader + OMDB + render + Maven plugin all shipped; full conformance green | [`docs/ports/java.md`](docs/ports/java.md) | [`server/java/`](server/java/) |
165-
| Kotlin | **Maven Central `8.1.4`** — codegen tier on top of Java: 17 generators (entity, Exposed table, names, relations, repository, output-parser, output-prompt, render-helper, extractor, filter-allowlist, validator, Spring config, storedProc, Spring controller, requirement-tests, api-docs, report-export); 24 / 24 persistence-conformance | [`docs/ports/kotlin.md`](docs/ports/kotlin.md) | [`server/java/codegen-kotlin/`](server/java/codegen-kotlin/) · [`server/java/metadata-ktx/`](server/java/metadata-ktx/) |
166-
| C# | **NuGet `1.1.4`** — loader + conformance + EF Core codegen + render engine + `dotnet meta` CLI all shipped | [`docs/ports/csharp.md`](docs/ports/csharp.md) | [`server/csharp/`](server/csharp/) |
167-
| Python | **PyPI `1.1.4`** — loader + conformance + render + entity-model codegen + ObjectManager runtime shipped; schema migrations are TS-owned (ADR-0015) | [`docs/ports/python.md`](docs/ports/python.md) | [`server/python/`](server/python/) |
163+
| TypeScript | **npm `1.2.0`** — the `@metaobjectsdev/*` packages | [`docs/ports/typescript.md`](docs/ports/typescript.md) | [`server/typescript/`](server/typescript/) · [`client/web/`](client/web/) |
164+
| Java | **Maven Central `8.2.0`** (`com.metaobjects:*` — the JVM major is npm major + 7) — loader + OMDB + render + Maven plugin all shipped; full conformance green | [`docs/ports/java.md`](docs/ports/java.md) | [`server/java/`](server/java/) |
165+
| Kotlin | **Maven Central `8.2.0`** — codegen tier on top of Java: 17 generators (entity, Exposed table, names, relations, repository, output-parser, output-prompt, render-helper, extractor, filter-allowlist, validator, Spring config, storedProc, Spring controller, requirement-tests, api-docs, report-export); 24 / 24 persistence-conformance | [`docs/ports/kotlin.md`](docs/ports/kotlin.md) | [`server/java/codegen-kotlin/`](server/java/codegen-kotlin/) · [`server/java/metadata-ktx/`](server/java/metadata-ktx/) |
166+
| C# | **NuGet `1.2.0`** — loader + conformance + EF Core codegen + render engine + `dotnet meta` CLI all shipped | [`docs/ports/csharp.md`](docs/ports/csharp.md) | [`server/csharp/`](server/csharp/) |
167+
| Python | **PyPI `1.2.0`** — loader + conformance + render + entity-model codegen + ObjectManager runtime shipped; schema migrations are TS-owned (ADR-0015) | [`docs/ports/python.md`](docs/ports/python.md) | [`server/python/`](server/python/) |
168168

169169
## Capability matrix
170170

‎docs/ports/csharp.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ objects you keep sourceless.
4242

4343
## Install
4444

45-
Published to [NuGet](https://www.nuget.org/packages/MetaObjects) at `1.1.4` — four
45+
Published to [NuGet](https://www.nuget.org/packages/MetaObjects) at `1.2.0` — four
4646
packages, version-locked to the C# port version: `MetaObjects` (loader), `MetaObjects.Codegen`,
4747
`MetaObjects.Render` and the `MetaObjects.Cli` tool.
4848

@@ -69,7 +69,7 @@ SQLite so it runs with nothing else installed; the same generated code runs on P
6969
<Nullable>enable</Nullable>
7070
</PropertyGroup>
7171
<ItemGroup>
72-
<PackageReference Include="MetaObjects.Codegen" Version="1.1.4" />
72+
<PackageReference Include="MetaObjects.Codegen" Version="1.2.0" />
7373
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.11" />
7474
</ItemGroup>
7575
<ItemGroup>

‎docs/ports/java.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ requirement gate) and `eject -Dlist` (owned-copy status) are the diagnostics the
5454

5555
## Install
5656

57-
Set `${metaobjects.version}` to the current Maven Central release (`8.1.4`) — both
57+
Set `${metaobjects.version}` to the current Maven Central release (`8.2.0`) — both
5858
the dependency and plugin blocks below resolve it from one `<properties>` entry. The
5959
artifacts and the generated records need Java 21, so set the compiler level here too (Maven
6060
defaults to Java 8, where `mvn compile` fails with "records are not supported in -source 8"):
6161

6262
```xml
6363
<!-- pom.xml -->
6464
<properties>
65-
<metaobjects.version>8.1.4</metaobjects.version>
65+
<metaobjects.version>8.2.0</metaobjects.version>
6666
<spring-boot.version>3.3.5</spring-boot.version>
6767
<maven.compiler.release>21</maven.compiler.release>
6868
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

‎docs/ports/kotlin.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ your own `<groupId>`, `<artifactId>` and `<version>`:
6161
```xml
6262
<!-- pom.xml -->
6363
<properties>
64-
<metaobjects.version>8.1.4</metaobjects.version>
64+
<metaobjects.version>8.2.0</metaobjects.version>
6565
<kotlin.version>2.0.21</kotlin.version>
6666
<spring-boot.version>3.3.5</spring-boot.version>
6767
<exposed.version>0.55.0</exposed.version>

‎docs/ports/python.md‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ Requires **Python 3.11+**. Published to PyPI as **`metaobjects`**:
2525
pip install metaobjects # or: uv add metaobjects
2626
```
2727

28+
Generated models import Pydantic 2.8 or newer. `pip install "metaobjects[pydantic]"` installs
29+
that minimum alongside the package.
30+
2831
> **On an older default interpreter?** Many systems (e.g. Ubuntu 22.04) still
2932
> ship `python3` = 3.10, where `pip install metaobjects` fails with a confusing
3033
> `ERROR: No matching distribution found for metaobjects` (the wheel is
@@ -256,12 +259,13 @@ When `verify --codegen` finds the committed output was generated with another ru
256259
so rather than telling you to regenerate. (A field carrying an explicit `@column` is
257260
unaffected either way.)
258261

259-
**Both `pydantic` and `fastapi` are consumer-installed, not transitive deps of
262+
**`fastapi` and `pydantic` are consumer-installed, not transitive deps of
260263
`metaobjects` itself** — the entity/router files this emits `import pydantic`
261-
and `import fastapi`, so add them before importing the generated code:
264+
and `import fastapi`, so add them before importing the generated code. The
265+
`pydantic` extra installs the 2.8 minimum (see [Install](#install) above):
262266

263267
```bash
264-
pip install pydantic fastapi
268+
pip install "metaobjects[pydantic]" fastapi
265269
```
266270

267271
The entity-model generator emits one Pydantic **`BaseModel`** per entity (not

‎docs/ports/typescript.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TypeScript port
22

3-
The reference implementation. Published to npm at `1.1.4` as 14
3+
The reference implementation. Published to npm at `1.2.0` as 14
44
`@metaobjectsdev/*` packages on the `latest` tag. Targets Node-compatible
55
runtimes: the generated code and the CLI run on stock Node (via `tsx` or after a `tsc`
66
build), and Bun is simply the fastest dev workflow in this repo.

‎server/java/README.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MetaObjects — Java
22

3-
The Java port of the cross-language MetaObjects metadata standard. Published to Maven Central under `com.metaobjects:*` across 14 modules, at `8.1.0` for the 1.1.0 release (the Maven major is the npm major + 7). Apache 2.0.
3+
The Java port of the cross-language MetaObjects metadata standard. Published to Maven Central under `com.metaobjects:*` across 14 modules, at `8.2.0` for the 1.2.0 release (the Maven major is the npm major + 7). Apache 2.0.
44

55
For the standard itself (metamodel, conformance corpora, ADRs) see the [repository-level docs](../../spec/) and the parent [README](../../README.md). This document is scoped to the Java implementation.
66

@@ -25,7 +25,7 @@ so they are maintained in one place rather than restated per port.
2525

2626
## Modules
2727

28-
All published to Maven Central under `com.metaobjects:*` (`8.1.0` for the 1.1.0 release):
28+
All published to Maven Central under `com.metaobjects:*` (`8.2.0` for the 1.2.0 release):
2929

3030
| Module | Purpose |
3131
|---|---|
@@ -52,7 +52,7 @@ The `archetype` and `examples` directories were removed in 7.1.0 (they had been
5252
<dependency>
5353
<groupId>com.metaobjects</groupId>
5454
<artifactId>metaobjects-metadata</artifactId>
55-
<version>8.1.0</version>
55+
<version>8.2.0</version>
5656
</dependency>
5757
```
5858

@@ -62,12 +62,12 @@ Spring REST stack (repository interface is consumer-implemented):
6262
<dependency>
6363
<groupId>com.metaobjects</groupId>
6464
<artifactId>metaobjects-codegen-spring</artifactId>
65-
<version>8.1.0</version>
65+
<version>8.2.0</version>
6666
</dependency>
6767
<dependency>
6868
<groupId>com.metaobjects</groupId>
6969
<artifactId>metaobjects-core-spring</artifactId>
70-
<version>8.1.0</version>
70+
<version>8.2.0</version>
7171
</dependency>
7272
```
7373

@@ -77,7 +77,7 @@ Maven plugin for `metaobjects:generate` / `metaobjects:verify` / `metaobjects:ed
7777
<plugin>
7878
<groupId>com.metaobjects</groupId>
7979
<artifactId>metaobjects-maven-plugin</artifactId>
80-
<version>8.1.0</version>
80+
<version>8.2.0</version>
8181
<executions>
8282
<execution>
8383
<goals><goal>generate</goal></goals>
@@ -101,12 +101,12 @@ Kotlin entry point — adds the Kotlin facade and the KotlinPoet codegen pipelin
101101
<dependency>
102102
<groupId>com.metaobjects</groupId>
103103
<artifactId>metaobjects-metadata-ktx</artifactId>
104-
<version>8.1.0</version>
104+
<version>8.2.0</version>
105105
</dependency>
106106
<dependency>
107107
<groupId>com.metaobjects</groupId>
108108
<artifactId>metaobjects-codegen-kotlin</artifactId>
109-
<version>8.1.0</version>
109+
<version>8.2.0</version>
110110
</dependency>
111111
```
112112

‎server/python/pyproject.toml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ mysql = ["PyMySQL>=1.1"]
6666
# `.jinja` / `.j2` / `.jinja2` template is rendered or checked, so a Mustache-only project
6767
# installs nothing extra.
6868
jinja = ["jinja2>=3.1"]
69+
# Pydantic 2.8 is the minimum for generated Python models (1.2.0). Generated code imports
70+
# pydantic; the core loader does not, so it stays out of the base dependencies.
71+
pydantic = ["pydantic>=2.8"]
6972

7073
[[tool.mypy.overrides]]
7174
# PyMySQL ships no type information.

0 commit comments

Comments
 (0)