Skip to main content

MonOrm

PyPI Python npm Checks License: MIT

An async ORM for Python and TypeScript with one Rust core. You write the schema once in Prisma syntax. The Rust core plans the SQL and runs it on PostgreSQL or SQLite. Both languages get the same queries, the same migrations and generated, typed models.

Under active development. It works today, and the author runs it in production. It is version 0.1.1: install it with pip install monorm or npm install monorm@npm:@ufstack/monorm. The npm package is @ufstack/monorm for now; always install it under the alias monorm, because the code imports monorm. Other people should not use it in production yet, or do so at their own risk. Evaluate it against your own app before you rely on it.

About 1.97× faster end to end than Django (async), up to 3.55×. Source: the geometric mean of 20 cases in one run on one machine, with the database round trip included (results). Method, limits and the cases where it is not faster: Benchmarks.

The name is MonOrm.

Example

The schema (the same in both languages):

model User {
  id    Int @id @default(autoincrement())
  name  String
  posts Post[]
}
model Post {
  id        Int @id @default(autoincrement())
  title     String
  published Boolean
  author_id Int
  author    User @relation(fields: [author_id], references: [id])
}

Python:

users = await User.objects.filter(User.posts.published).load(User.posts)

TypeScript:

const users = await User.objects.filter(User.posts.published).load(User.posts);

Both examples run as they are: examples/quickstart (in-memory SQLite).

Why

One ORM for every language

You want to move your web server to another language, but you do not want to learn a new data stack. Many libraries already work this way: one Rust core with a package for each language, for example OpenDAL for file storage. MonOrm does the same for the database layer. The schema, the migrations, the query API and the behavior are the same in Python and TypeScript, because one Rust engine does the work for both. A team can keep one schema when it adds a second service in another language, or when it moves from one language to the other.

The Rust core is not tied to Python and TypeScript. Any language that can call native code can get a MonOrm package with the same schema, migrations and query API. Contributors can add a language: see language-bindings.md.

Language Status Bridge
Python Shipped (PyPI monorm) PyO3 (languages/python/native)
TypeScript (Node, Bun) Shipped (npm @ufstack/monorm) napi (languages/js/native)
Rust In the repo, not published (monorm-client has publish = false) Direct use of monorm-engine, no bridge
Go Open for contributors A C ABI library
PHP Open for contributors A PHP extension (for example with the ext-php-rs crate)
Java Open for contributors JNI (for example with the jni crate)

All of SQL, in the ORM

An ORM should not stop you from doing what SQL can do. With MonOrm you write less raw SQL and install fewer separate packages. These come with the ORM:

  • Queries: window functions, CTEs (also recursive), subqueries and EXISTS, aggregates over relations, full-text search, JSON and array columns, cursor pagination.
  • Writes: upsert (ON CONFLICT), bulk insert, bulk update, update and delete with RETURNING.
  • Schema: check and exclusion constraints, partial and non-btree indexes, triggers and SQL functions, declarative partitions, all with migrations.
  • Operations: row and advisory locks, read replicas, tenants with row-level security, N+1 detection, query hooks and OpenTelemetry.
  • Raw SQL is still there when you need it.

Some features are PostgreSQL only; schema.md lists the SQLite limits.

Django packages, built in

In Django, many of these features come from separate packages. In MonOrm they are part of the ORM or a built-in extension:

In Django In MonOrm
django-pgtrigger @@trigger and function blocks in the schema (docs)
django-safedelete the soft-delete extension (docs)
django-cte WITH and recursive CTEs (docs)
django-postgres-extra (partitions, upsert) @@partition and on_conflict (partitions)
django-concurrency the optimistic-locking extension (docs)
django-model-utils (TimeStampedModel) the updated_at extension (docs)
django-storages the file-storage extension, on OpenDAL (docs)
nplusone monorm.debug (docs)

Familiar design

  • The schema language is Prisma's. One schema.prisma file, with the editor tooling that already exists (docs).
  • The model API is Django-style. Model.objects, filter(), load() and migrations that come from the schema.
  • Typed expressions in the style of SQLAlchemy, and generated typed models (docs).

Inspired by

Thank you to the projects below. We claim only what we took from each.

  • Robyn: a Python surface with the hot path in Rust through PyO3. We use the same split for the database layer.
  • Prisma: the schema-first idea and the schema.prisma language. MonOrm is independent of Prisma (details). It is not a drop-in replacement for Prisma Client, and its query API is its own.
  • Django: the model API (Model.objects, querysets) and migrations from the schema (monorm makemigrations, monorm migrate, see schema.md).

Quickstart

There is one package for each registry:

pip install monorm      # the engine, every built-in extension and the auth app; `python -m monorm generate`
npm install monorm@npm:@ufstack/monorm      # the same for Node and Bun (the alias is required); `npx monorm generate`

The monorm command line comes with the Python and npm packages. Both packages hold PostgreSQL and SQLite. They build for 4 platforms: Linux x86-64, Linux arm64, macOS arm64 and Windows x86-64. An extension that is not built in is a separate package that you install next to monorm (optional-packaging.md).

To build from source:

uv venv .venv && . .venv/bin/activate
uv pip install maturin
python languages/python/packaging/stage.py   # the extension libraries of this platform
maturin develop                              # the one monorm package
python examples/quickstart/quickstart.py     # Python 3.11 or later

cd languages/js && npm install && npm run assemble
cd ../../examples/quickstart && npm install && node quickstart.ts   # Node 23.6 or later

Upgrade from the split packages

Before v0.1.0 the project had a thin monorm package, a native package for each profile and one package for each extension. Remove them, then install monorm:

pip uninstall monorm-native-postgres monorm-native-sqlite monorm-native-combined monorm-native-tooling \
  monorm-timestamps monorm-soft-delete monorm-locking monorm-inherit monorm-query-defaults \
  monorm-generic monorm-proxy monorm-composition monorm-file-storage monorm-auth
pip install monorm
npm uninstall @ufstack/monorm @ufstack/monorm-native-postgres @ufstack/monorm-native-sqlite @ufstack/monorm-native-combined @ufstack/monorm-native-tooling @ufstack/monorm-auth \
  @ufstack/monorm-timestamps @ufstack/monorm-soft-delete @ufstack/monorm-locking @ufstack/monorm-inherit @ufstack/monorm-query-defaults \
  @ufstack/monorm-generic @ufstack/monorm-proxy @ufstack/monorm-composition @ufstack/monorm-file-storage
npm install monorm@npm:@ufstack/monorm

The monorm[postgres] and monorm[sqlite] extras are gone: the wheel has both drivers. Two copies of one extension id stop the load with the error "installed twice", which names the package to uninstall. In a schema, import "app:monorm-auth" is the Python name of the auth app and import "app:auth" is the Node name. Change the imports in your code from @ufstack/monorm to monorm and from @ufstack/monorm-<name> to monorm/extensions/<name>.

You need uv, Rust (cargo), and Node 20.19+ or 22.12+ (or Bun) for the TypeScript package.

Features

Feature Read
Schema language, SQLite and PostgreSQL types, client defaults, code generation schema.md
Python API: queries, pagination, subqueries, windows, CTEs, writes, transactions, locks, hooks python-api.md
TypeScript API with the same sections typescript-api.md
Migrations from the schema schema.md
Protected writes, cursor pagination, the N+1 finder (monorm.debug) python-api.md
Packaging: one package for each registry, outside extension packages optional-packaging.md
Auth app (in the monorm package) auth.md

Build-time extensions are Rust crates. The monorm package has these built in: proxy models, query defaults, model composition, file storage, generic relations, timestamps, soft delete, locking and inheritance. See the extension index.

Databases and platforms

Databases PostgreSQL and SQLite
Python 3.11 to 3.14
TypeScript Node 20.19+ or 22.12+, and Bun
Rust Coming soon. A typed read client is in languages/rust/ and is not published.
CI Linux, macOS and Windows (package builds); Linux with PostgreSQL 18 (feature check)

Benchmarks

Measured in one run (d428e01, 2026-10-28) on a shared cloud VM (vm, Linux 6.18.44 x86_64) with PostgreSQL 16.15. Contenders: Django 6.1.2 (sync and async), SQLAlchemy 2.1.6 (sync and async, asyncpg), Prisma 7.10.1, Drizzle 0.45.4 and pg 8.23.1. "N× faster" is the contender median time divided by the monorm median time. Every number is measured and end to end: it includes the database round trip.

Case Python vs Django async Python vs SQLAlchemy async Node vs Prisma Node vs Drizzle
read-pk 2.31× faster 2.72× faster 2.30× faster 1.56× faster
read-1000 3.26× faster 2.77× faster 1.96× faster 1.43× faster
prefetch-to-many 3.20× faster 2.64× faster 1.87× faster 3.63× faster
m2m 3.55× faster 2.62× faster 2.40× faster 3.95× faster
bulk-insert-1000 1.87× faster 13.23× faster 4.47× faster 2.11× faster
concurrent 3.32× faster 2.77× faster 1.59× faster 1.78× faster
tx-5 1.10× faster (level) 1.19× faster 1.40× faster 0.97× (slower, level)
Geometric mean of 20 cases 1.97× faster 2.56× faster 1.90× faster 1.50× faster
  • The Python work alone (build the query and make the SQL, no database) is 4.39× faster than Django async (geometric mean of 10 cases). This number is approximate.
  • Level or slower cases: a case is level when the interval of its speed-up includes 1.00.
    • Python vs Django async: tx-5 (1.10×, level).
    • Python vs Django sync: insert-1 (1.07×), bulk-update-100 (1.10×) and tx-5 (1.03×) are level.
    • Python vs SQLAlchemy sync: tx-5 is 0.92× (slower, level). Against SQLAlchemy async, no case is level.
    • Node vs Prisma: bulk-update-100 (1.08×) and delete-100 (1.03×) are level.
    • Node vs Drizzle: projection-1000 (1.01×), filter (1.11×), update-1 (1.08×), bulk-update-100 (0.99×, slower), delete-100 (1.05×) and tx-5 (0.97×, slower) are level.
  • Bun has only 3 cases (read-pk, read-1000, bulk-insert-1000): 2.48× faster than Prisma and 1.46× faster than Drizzle (geometric means), none level.
  • Against Django sync the Python geometric mean is 1.59× faster, against SQLAlchemy sync 2.25×.
  • It is one run on a shared VM. Treat a difference whose interval overlaps 1.00 as no difference. Django async has no async atomic(), which affects tx-5.

Full tables, the method and the raw data: bench/RESULTS.md and bench/compare/README.md. Run the comparison yourself before you decide.

Status and limits

Both API docs list what is not done yet: Python and schema. The API is async only. There is no MySQL driver. The crate on crates.io comes later.

Docs

Contributing

Read CONTRIBUTING.md for the setup, the checks and the pull request rules. Report a security problem as described in SECURITY.md.

License

MIT. See LICENSE.

Metadata

Release files for monorm 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for monorm 0.1.2
File Actions
monorm-0.1.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for monorm-0.1.2-cp314-cp314-win_amd64.whl
monorm-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for monorm-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl
monorm-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for monorm-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
monorm-0.1.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for monorm-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
monorm-0.1.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for monorm-0.1.2-cp313-cp313-win_amd64.whl
monorm-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for monorm-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
monorm-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for monorm-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
monorm-0.1.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for monorm-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
monorm-0.1.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for monorm-0.1.2-cp312-cp312-win_amd64.whl
monorm-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for monorm-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
monorm-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for monorm-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
monorm-0.1.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for monorm-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
monorm-0.1.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for monorm-0.1.2-cp311-cp311-win_amd64.whl
monorm-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for monorm-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
monorm-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for monorm-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
monorm-0.1.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for monorm-0.1.2-cp311-cp311-macosx_11_0_arm64.whl

Total release size: 217.2 MB

Release files / monorm-0.1.2-cp314-cp314-win_amd64.whl

Download URL monorm-0.1.2-cp314-cp314-win_amd64.whl
Size 14.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
d343512edf2a7d2a5d995f8a400296cc8231ae59bf6b4a6bb635bfdade9a5bc8
BLAKE2b-256 checksum
How to use checksums
7d3c1d699e5d5c2e7870b35ef9dc68ea16ae04a263d810f2818435ec719285cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL monorm-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl
Size 14.0 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e844d7038652fc23ffc1ca6dab9b58b8e1992ac5e43fbf11853918edacb5850e
BLAKE2b-256 checksum
How to use checksums
14fff0983303bb63f761dc35ef7eb46273e7c1d25634801c7f402cfdf69ce5eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL monorm-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
Size 13.0 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9aa991bebf907c04c9c3677e07ff75276eba7c45a4433c0dd9f09a9adbdfba0c
BLAKE2b-256 checksum
How to use checksums
31037b82385d7d6980744962c851675f78e69ba742b22cfd5daf9266863622a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL monorm-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Size 13.3 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cad3427eac884c2b147607cdb8908e4c18cdc25c513e21df7b133c1f777f7510
BLAKE2b-256 checksum
How to use checksums
169f182db1662569b7bd0a07a8cffe75220c4c6f745f064de758003f37dc43f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp313-cp313-win_amd64.whl

Download URL monorm-0.1.2-cp313-cp313-win_amd64.whl
Size 14.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4e889232f6e3c316d7410175a683caac1eb80ccb8eed895a2b7c8ec61e6da375
BLAKE2b-256 checksum
How to use checksums
63f0b30e50cc0a20221d797c0b42492160f555ef59eed737792a64dcb255ae12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL monorm-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 14.0 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
303d675ef3cccc1080b03123a51855949b2228b410a16f101918a9e33a2f7508
BLAKE2b-256 checksum
How to use checksums
f734e5e6d0e294cc715b6d7062e8bf885c41a3148f6f6be024fcc2cc2e191614
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL monorm-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
Size 13.0 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
78d3ad094f5322a526ea4303c306ba4b0048c94c650351965ce02fb84ba2389d
BLAKE2b-256 checksum
How to use checksums
846e1661142f100b59eaa026ed381b1cbcb009af4e782b7c5e3ecf14cd5acf29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL monorm-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Size 13.3 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c7c1bf45e7cf33e41473816faac7e1b12c8bd612720c2e441c0aa10c280fd97a
BLAKE2b-256 checksum
How to use checksums
9a8b0cf4c50b1344d34a3ab427520488c25fcd4202935aa16b8072850781b01f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp312-cp312-win_amd64.whl

Download URL monorm-0.1.2-cp312-cp312-win_amd64.whl
Size 14.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8ad60667fa1af25220c25573664ae1b0d1332339831652d4276f4b5ab4477688
BLAKE2b-256 checksum
How to use checksums
1c531295de26f9af6467a3ea87b257b9628bb8b0bd8fd0b80a9d38c26e969e43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL monorm-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 14.0 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0343a017d686487f41e664b6bc4028e5266e811b05960811d97afe0f9cd77d8a
BLAKE2b-256 checksum
How to use checksums
934f629446a40572ba5d0055b522564902b6ad6f61b0640179dc0babef7be9b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL monorm-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
Size 13.0 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
19bd90d708b3a9986d8c4180b92ff15461c72f602dc39cdb7b963a52eb906f0c
BLAKE2b-256 checksum
How to use checksums
61fe983d5aa914cbe0faeb6488e04eeda7d1357deacc037423eaec12f2b9449b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL monorm-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Size 13.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4911e42caa888436a2f0fd456a622c700a680c1565394b12f555a074812cdea9
BLAKE2b-256 checksum
How to use checksums
df88da0169dd9d30b187f9a60d1268f285d92331343eb7771ffe717243a2b881
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp311-cp311-win_amd64.whl

Download URL monorm-0.1.2-cp311-cp311-win_amd64.whl
Size 14.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2e15ec42eae2064eb6ca0d95fad1b644c72c65be23ff556761b2caf7e38c8324
BLAKE2b-256 checksum
How to use checksums
cee791a4b678e2e98227a55bce73b56d0eb26cbe734c6b75b58ec9d188d80e66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL monorm-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 14.0 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e4d1e1fad60c86325f949a6d15db4d0dcdc387d8435938a274d70431313e25e3
BLAKE2b-256 checksum
How to use checksums
03e22ad571ae76b15fe6ae315b9b7ed6593db7a6ce95afd851cf28841edb4704
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL monorm-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
Size 13.0 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
09cb17756307a045e8a2fb94d5b078874021f082fc9a470bf5d2fa086c1aaf62
BLAKE2b-256 checksum
How to use checksums
dcef09a918d07e50be69f91c5700b82a6b838dddd348e594a29a1a53f5897a13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / monorm-0.1.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL monorm-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Size 13.3 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8a7da17c06626ed83351997f5a47e58b8ac62e24c27ca51fd8913e4abfaab421
BLAKE2b-256 checksum
How to use checksums
b146b71931ba653e265a56bc1a72936970733d758b4985200a65e51e15767998
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Security for monorm 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 16 files in this release have been uploaded with provenance metadata.

Select from 16 files

Attestation for monorm-0.1.2-cp314-cp314-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page