This release is a pre-release and may not be stable for production use.
MetaObjects (Python)
The Python port of the MetaObjects cross-language metadata standard: declare your typed entity model once, then generate idiomatic, drift-checked code across TypeScript, Java, C#, Python, and Kotlin. The metamodel is the durable spine; generated code is the disposable artifact.
Behavior is verified byte-for-byte against the same shared conformance corpora as every other language port.
Install
Requires Python 3.11+.
pip install metaobjects
The only runtime dependency is PyYAML.
Quick start
Load a directory of metadata (*.json canonical or sigil-free *.yaml):
from metaobjects import load_directory
result = load_directory("metaobjects/") # your *.json / *.yaml metadata files
if result.errors:
for err in result.errors:
print(err) # structured MetaError with a stable ErrorCode
else:
root = result.root # the merged metadata tree (a MetaData node)
print(root)
load_directory, load_uris, and load_string are module-level shortcuts over
MetaDataLoader; all return a LoadResult with the same field shape as the other ports.
What's in the package
The primary public API is the loader (load_directory / load_uris /
load_string, MetaDataLoader, LoadResult, ErrorCode, MetaError). The
distribution also ships the Python implementations of the other pillars used by the CLI
and tooling: codegen (Pydantic + FastAPI emit — reference generators you own:
metaobjects eject <name> copies one into your repo), render (Mustache + payload-VO +
verify), and runtime (a DB-API 2 ObjectManager — pg8000 / psycopg — no SQLAlchemy).
Schema migrations are owned by the TypeScript meta CLI (ADR-0015); there is
no migrate module in this distribution.
Authoring formats
- Canonical JSON (
*.json) — the cross-language interchange shape. - Sigil-free YAML (
*.yaml/*.yml) — the AI-first authoring front-end (ADR-0006). Desugared to canonical JSON at load time. A directory may mix both freely.
AI assistant context
To scaffold MetaObjects context files (.metaobjects/AGENTS.md, .metaobjects/CLAUDE.md, and
.claude/skills/metaobjects-*/) into your project so your AI assistant understands how to
author metadata and run codegen, use the Node meta CLI:
npx meta agent-docs --server python
(Running metaobjects agent-docs in the Python CLI prints this redirect and exits.)
Links
- Standard, docs, and the other four ports: https://metaobjects.dev
- Source & issues: https://github.com/metaobjectsdev/metaobjects
- Full docs: https://github.com/metaobjectsdev/metaobjects/tree/main/docs
License
Apache-2.0. See LICENSE.
Metadata
Release files for metaobjects 1.0.9rc6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| metaobjects-1.0.9rc6.tar.gz | 937.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| metaobjects-1.0.9rc6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / metaobjects-1.0.9rc6.tar.gz
| Download URL | metaobjects-1.0.9rc6.tar.gz |
|---|---|
| Size | 937.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2c2448a954ad215d0bf7303554f50b4b608f3bd10282044a01caada1b5e0a9b8
|
|
BLAKE2b-256 checksum How to use checksums |
4c7d971e1742d2c003f6fb6eaa0991c6e22a107a8d6f71253f4d58915d7ccde9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / metaobjects-1.0.9rc6-py3-none-any.whl
| Download URL | metaobjects-1.0.9rc6-py3-none-any.whl |
|---|---|
| Size | 614.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cc80565aa928707e4bacb769bc9a5b49ab7dd32aa88ac81632c346d04a4b7c52
|
|
BLAKE2b-256 checksum How to use checksums |
c1d3057f9602100cdfaeed7c3037a0330b3d0e968f8c5e3ab6ba1b102c8a3629
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|