Skip to main content

omi_physics

A renderer-agnostic, real-time rigid-body physics engine for Python, built natively on the OMI glTF physics data model. State lives in flat NumPy arrays, the whole step pipeline is vectorized, and optional compiled Cython accelerators drop in transparently for the hot paths (the contact solver and box/sphere collision).

  • NumPy is the only hard dependency. No graphics library is required to simulate.
  • PyOpenGL is optional — used solely by the experimental GPU compute backend (omi_physics.glcompute).
  • Deterministic on the CPU backend: the same inputs produce the same trajectory, run to run.
  • Fast: sweep-and-prune broadphase, SAT/GJK narrowphase, an island-parallel sequential-impulse solver, sleeping, and a background-threaded simulation loop that overlaps with a consumer's render/IO thread.

⚠️ This code is largely LLM-written. It has a test suite and the CPU backend is deterministic, but it comes with no guarantees of correctness, accuracy, or fitness for any purpose (see LICENSE, MIT). Review it before relying on it for anything that matters.

Install

pip install omi_physics            # core engine (NumPy only)
pip install "omi_physics[gl]"      # + PyOpenGL for the GPU compute backend

Prebuilt wheels ship the compiled accelerators, so no C compiler is needed. A source install without a compiler still works — the engine falls back to the identical pure-NumPy code paths.

Quick start

import numpy as np
from omi_physics import PhysicsWorld, model

world = PhysicsWorld(gravity=model.Gravity(gravity=9.81, direction=(0, -1, 0)))

# A static ground box and a dynamic box that falls onto it.
ground = world.add_shape(model.Shape.box((20, 1, 20)))
box    = world.add_shape(model.Shape.box((1, 1, 1)))
wood   = world.add_material(model.Material())

world.add_body(model.Motion(type=model.STATIC),
               collider=model.Collider(shape=ground, physicsMaterial=wood),
               position=(0, 0, 0))
falling = world.add_body(model.Motion(type=model.DYNAMIC, mass=1.0),
                         collider=model.Collider(shape=box, physicsMaterial=wood),
                         position=(0, 5, 0))

for _ in range(120):                       # 2 seconds at 60 Hz
    world.step(1 / 60)

print(world.position[falling])             # resting on the ground

The exact add_body/add_shape signatures are the source of truth in world.py; see the tests for worked examples.

Off-thread simulation

ThreadedSimulation steps the world on a daemon thread and publishes an immutable pose snapshot each tick. A renderer reads the latest snapshot every frame without ever blocking on the solver:

from omi_physics.threaded import ThreadedSimulation

sim = ThreadedSimulation(world, sim_hz=120)
sim.start()
# ... each render frame:
snapshot, version = sim.latest()           # (position, axis_angle, awake, dynamic)
# ... on shutdown:
sim.stop()

How it works

One world.step(dt) runs this fixed-timestep pipeline over the world's structure-of-arrays state:

flowchart LR
    A[integrate forces<br/>gravity · damping · drag] --> B[refit AABBs]
    B --> C[broadphase<br/>sweep & prune]
    C --> D[narrowphase<br/>SAT · GJK/EPA]
    D --> E[solver<br/>sequential impulse]
    E --> F[joints]
    F --> G[integrate positions]
    G --> H[sleeping]

The data model is OMI glTF physics (model.Shape, Motion, Collider, Material, Joint, ...), so scenes round-trip to and from glTF documents (omi_physics.omi_gltf).

How hard something was hit

world.impact_on(body) answers what struck a body in the step just run and how fast the two were closing along the contact when they met, in metres per second — the number damage, a crash, an impact sound or a jolt of force feedback is decided from.

for _ in range(steps):
    world.step(1 / 120)
    struck = world.impact_on(player, above=1.0, skip_static=True)
    if struck is not None:
        other, closing = struck
        crunch(closing)

Ask once a step, not once a frame. A frame is several steps, contacts are rebuilt in each of them, and the speed on a contact is taken before the solve — because resolving a contact is precisely cancelling the velocity that measures it. Sampled a step late, a square-on impact reads as nothing while a glancing one reads almost undiminished, which is the wrong way round for anything that has to tell a crash from a scrape.

above is the speed below which a contact is not a blow. A body held against something is closing on it slightly on every step: over one step gravity gives it g·dt for the solver to take away again, so a box resting on the floor at 120 Hz reads about 0.08 m/s for as long as it sits there. skip_static leaves out what a body landed on, for a caller that wants to know what it hit.

A body the game moves itself has to be told its velocity as well as its pose (place_body, then a write to linear_velocity). Without one it is a wall: the solver resolves against the difference between two bodies' velocities, so a moving platform written down as still throws off whatever lands on it and reads as having been hit at the full speed of anything that merely caught it up.

Driving a car

RaycastVehicle is the model every driving game uses: a rigid body with no wheels in it, each wheel a ray cast down from where its suspension is mounted, a spring pushing the body up off whatever the ray finds, and a patch of friction at that point driving, braking and steering. WheelSpec says where a wheel is and what it is for; VehicleTuning says what the pedals and the wheel are worth.

The four wheels are cast together. They all look at very nearly the same piece of the world, so raycast_many decides which bodies are worth testing once and asks a landscape's mesh once for the triangles near all four rather than once per wheel; on a streamed world that is most of a physics step.

Every wheel is worked out against the same body. Four wheels push on one chassis in the same step, and they touch the ground at the same instant. Working each one out against a body the wheel before it has already moved makes the four asymmetric, and the car wanders to whichever side is worked out first — a road's width in a few seconds of straight-line acceleration, and to the other side if the wheels are listed in another order. So a step reads one stance of the body, asks every wheel about that, and applies what they all asked for together.

The air is carried by the wheels holding the car up. Drag is a force on the body, handed to the contacts so that a tyre with nothing to push against cannot hold the car back with it — and shared out by how much of the car each wheel is carrying, not in equal parts. A wheel the weight has come off under acceleration has almost no friction to spend, and an equal share of the drag spends all of it; what it gives up to find that is the sideways hold, since driving and gripping come out of one budget.

The steering lock falls with the square of the speed. A lock is chosen for a car park — full lock at walking pace is a three-point turn — and the same lock at forty metres a second asks for ten g and ends with the car pointing at the trees. Halving it for every doubling of speed is not enough, because cornering is v**2 / radius and a radius that only widens in step with the speed is a demand that still doubles with it. Against steer_falloff_speed squared, what full lock asks of the tyres settles at a corner they can hold instead of running away with the speedometer, and the same touch of a key means a gentler turn the faster the car goes (VehicleTuning.steer_lock).

A tyre does not build its side force instantly. The tread has to be laid down and deflected, which takes a fraction of a wheel's turn — the relaxation length, about a third of a metre on a road tyre — so a step takes out most of the sideways scrub and not all of it (SCRUB_RELAXATION). The numerics want the same thing: four wheels correcting one body in one step, each taking all of what it can see, take more yaw and more roll out of the car than there was and put some back the other way. What that looks like is a car shaking its head at the rate of the physics loop, worst on a crowned road — which is every road, since they are all built to drain.

A car left alone stays where it is. With nothing asked of it and barely moving, VehicleTuning.holding newtons hold it: a parked car is in gear or on its handbrake, and one that coasts off down a slope makes stopping anywhere but the flat a mistake. Divided by the car's weight, that number is the steepest grade it holds on; zero is a vehicle out of gear.

Each wheel also looks a little above itself, VehicleTuning.ground_recovery metres of it. A wheel that only looks down cannot see ground that has come up under the car — a lift, a moving platform, a landscape paging in at a finer level of detail than the one the car was driving on — and a car that cannot see the ground has no grip, no drive and nothing holding it up: it coasts, buried, until something else notices. A wheel that finds the ground up there is pushed back out on to it at recovery_speed, which climbs the car out rather than firing it into the air.

See docs/ for a deep dive:

Working on omi_physics

git clone https://github.com/mcfletch/omi_physics
cd omi_physics
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"          # editable install, builds the accelerators
pytest -m "not serial"            # the suite
pytest -m serial                  # the timing checks, with the machine to itself

A handful of tests measure against the clock rather than against a value — how many characters fit in a frame, what a grid query costs — and the margin they assert closes on a machine busy with the rest of the suite. Those carry the serial marker, and the second pass is short. tox runs the two for you.

Handy commands:

# Rebuild the accelerators in place after editing a .pyx
python setup.py build_ext --inplace

# Force the pure-Python fallback (delete the compiled modules)
rm -f src/omi_physics/*.so

# Lint and type-check. Both read pyproject.toml for everything -- which files,
# which rules, which Python -- so there are no flags to remember and a local
# run is the same run CI makes.
ruff check
mypy

# The whole matrix -- lint, types, and both accelerator paths on every
# interpreter present
tox

tox -e lint and tox -e typecheck are the same two commands, and CI runs them on the 3.12 row, so a merge is gated on them. ruff format is configured but is not one of the gates: the array expressions here are laid out so the arithmetic keeps its shape -- a cross product is three rows because it is three rows -- and the formatter sets them as filled paragraphs of code. Line width is held by ruff check instead.

The suite has two halves. Most of it checks the engine against scenes written down by hand: a ball dropped three metres, a stack of five boxes, a wheel on a slope. The tests/test_properties_*.py files check the same code against inputs nobody wrote down — a collider with no radius, a "triangle" whose three vertices are one point, a dozen bodies already inside one another, a hundred-kilogramme crate resting on a hundred-gramme one — and assert only what has to hold of every answer: that the world stays made of numbers, that a contact normal is a direction, that separating by the depth a contact reports separates it. They are written with hypothesis, which generates the cases, shrinks a failure to the smallest one that still fails, and remembers it — so a defect found once is a regression test from then on.

Hypothesis is a CPython-only test dependency: it publishes no wheel for the PyPy in the matrix. The property files skip where it is absent, and everything else runs there as before.

The accelerators are a pure speedup: every .pyx has an identical NumPy/ Python implementation the engine uses when the compiled module is absent. Tests must pass in both configurations (with and without the .so files present).

Layout

src/omi_physics/        the engine (importable as omi_physics)
  model.py              OMI glTF physics data model
  world.py              PhysicsWorld — structure-of-arrays state + step()
  backend.py            NumpyBackend / GPU backend selection
  glcompute.py          optional GL 4.3 compute integration backend (needs PyOpenGL)
  broadphase.py         sweep-and-prune + dynamic AABB tree
  collide.py            SAT box-box, sphere tests (vectorized)
  gjk.py                GJK/EPA for convex shapes
  narrowphase.py        contact generation, routes to accelerators
  solver.py             island-parallel sequential-impulse contact solver
  joints.py             point / distance / hinge constraints and motors
  character.py          kinematic character controller
  vehicle.py            raycast vehicle: suspension, drive, steering
  cookery.py / hull.py  shape cooking (convex hulls, trimeshes)
  omi_gltf.py           read/write OMI physics from glTF documents
  threaded.py           ThreadedSimulation — background-thread stepping
  _solver_native.pyx    Cython contact solver accelerator
  _collide_native.pyx   Cython collision accelerator
tests/                  pytest suite (pure NumPy; GPU-parity tests skip w/o GL)
  test_properties_*.py  property tests over generated input (hypothesis)
docs/                   deep-dive documentation (Markdown + Mermaid)

License

MIT — see LICENSE. In some jurisdictions LLM generated code cannot have any copyright assignment. The intent of the license is that anyone anywhere can use the code for whatever purpose they deem fit, provided that they assume any liability for that usage.

Metadata

Release files for omi-physics 0.3.2

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

Source distribution (sdist)

Source distribution for omi-physics 0.3.2
File Size Uploaded
omi_physics-0.3.2.tar.gz 605.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for omi-physics 0.3.2
File
omi_physics-0.3.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
omi_physics-0.3.2-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details
omi_physics-0.3.2-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
omi_physics-0.3.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
omi_physics-0.3.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
omi_physics-0.3.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
omi_physics-0.3.2-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
omi_physics-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
omi_physics-0.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
omi_physics-0.3.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
omi_physics-0.3.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
omi_physics-0.3.2-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
omi_physics-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
omi_physics-0.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
omi_physics-0.3.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
omi_physics-0.3.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
omi_physics-0.3.2-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
omi_physics-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
omi_physics-0.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
omi_physics-0.3.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
omi_physics-0.3.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
omi_physics-0.3.2-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
omi_physics-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
omi_physics-0.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
omi_physics-0.3.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 27.7 MB

Release files / omi_physics-0.3.2.tar.gz

Download URL omi_physics-0.3.2.tar.gz
Size 605.4 kB
Tags Source
SHA-256 checksum
How to use checksums
73cb42c0b121033354d377536cc378d4752e41da529ca979283c2e2814c13056
BLAKE2b-256 checksum
How to use checksums
e025e31a87b30a3545d0cf3cd07d27ecf6545e87d03cdffffbf17fc903d42cac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp314-cp314-win_amd64.whl

Download URL omi_physics-0.3.2-cp314-cp314-win_amd64.whl
Size 694.6 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
978c0cb0f6e4cd24929d5394a6e77f7ea6e2ae6f2d34206bc150c21f26ce19a1
BLAKE2b-256 checksum
How to use checksums
0e806d0c32f419f44a3162a4208852489ddd655145f6ef40fcf38358f1fc3f83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp314-cp314-win32.whl

Download URL omi_physics-0.3.2-cp314-cp314-win32.whl
Size 657.2 kB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
96cb40b5707f3f8ab8c74dacb53c93202dc10f8a530ac93dd99a5e9a4487c9eb
BLAKE2b-256 checksum
How to use checksums
c519893ee94ef47f5fcadfb87a6791396d72081a9f9a8fe1806148a89a9d39cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL omi_physics-0.3.2-cp314-cp314-musllinux_1_2_x86_64.whl
Size 1.7 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
00b93a0812d03f93bbf16d1bbdb2dd6f07bc017724e521fa16379c201cbe0364
BLAKE2b-256 checksum
How to use checksums
b8792b8c09d7a30b2ff98aa0a08f2087497449e465a681f66749ce622bbe7d29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL omi_physics-0.3.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
20b9e9803149658ff0fa9a261d2f0ada8137812c5fac99fc606c77a0d85fbdb9
BLAKE2b-256 checksum
How to use checksums
ef5a58a0d6bc97f1a98eb6e71f12dfaf72d69d301a8ccf941ec0d450a8d9bd05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL omi_physics-0.3.2-cp314-cp314-macosx_11_0_arm64.whl
Size 706.1 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
946a388cb31f60e90dd8c39b71618f8272d7e468541ddb4a2b15e10249e64c07
BLAKE2b-256 checksum
How to use checksums
e035a2fcf76eb61e82a2e9e2adabb3037cf8bb2381323c0b152a314a5ed544e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp313-cp313-win_amd64.whl

Download URL omi_physics-0.3.2-cp313-cp313-win_amd64.whl
Size 691.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6941b37e1f605317a815ced9d2e5d2af4812675b4d82819a61b7263f83bacd92
BLAKE2b-256 checksum
How to use checksums
a1773d7d70766a06eef7e17f71cd49c80c9a245837e023b091d39a91d4812b57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp313-cp313-win32.whl

Download URL omi_physics-0.3.2-cp313-cp313-win32.whl
Size 655.4 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
3a9c43a7656d2acc6f001dccbb99055f12d46f15aecbd901b247415707b63765
BLAKE2b-256 checksum
How to use checksums
9058f3264dd078669cc6c30e502f5a1c12585a9aa18f37a1ae7ae9a23edc27b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL omi_physics-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl
Size 1.7 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
cb3b9997094f79c3b24ee939bf3997851ebb42ef28c46e18869cdd67efe9036d
BLAKE2b-256 checksum
How to use checksums
a66bca32154b0ffc84ebafe59f338e44e2bdec156035817e1b596103e783abff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL omi_physics-0.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
abc47258619f351b71ec02b4b1bf7f9575cfa4bf389872ef834fbb00d6eae3f4
BLAKE2b-256 checksum
How to use checksums
ec21d9d98589be5766e624e8089d67925cb5cbcd4477ab2e1b6cabfcfafc66d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL omi_physics-0.3.2-cp313-cp313-macosx_11_0_arm64.whl
Size 704.4 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d6ff6d57117996fc20dc1585d64cd1008be46c23821c95c4734b753c4f2bb4ac
BLAKE2b-256 checksum
How to use checksums
e45196c5f6802931146838563936c11f6614aa3f6bb64c6721bea632b661f4c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp312-cp312-win_amd64.whl

Download URL omi_physics-0.3.2-cp312-cp312-win_amd64.whl
Size 691.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7ee9d3a4670f4b3709793c7755325bca6133f548a31c18b1619843d9cbc41bad
BLAKE2b-256 checksum
How to use checksums
9b02116051cf118ca9b6ade7a437c9ad31f6b16f0a6deb493ed941c495ec0238
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp312-cp312-win32.whl

Download URL omi_physics-0.3.2-cp312-cp312-win32.whl
Size 655.7 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
0c7c88e1a27ac5fba22cb5081bb28b92c12da5ed985ed0cc8f77787b818ed5ed
BLAKE2b-256 checksum
How to use checksums
a1285d74eb12f41e0cc6f20de3db5fe9a4f5a7e23f2013355b5786527e8d5865
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL omi_physics-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl
Size 1.7 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f734cf0907db9315ab8d4355f9d250f7cde1c25e3b62c892505caccd66adc1fb
BLAKE2b-256 checksum
How to use checksums
65ecca9b99f18b1aa3f81bc656ed0972503b3462287ba2cc878d097ed5373970
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL omi_physics-0.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0b8ebf6ca8d55c42b9cff0bd877c80ff68e3b5bf7413153245fac63c30153778
BLAKE2b-256 checksum
How to use checksums
28845e54e72d3c8bc34c710c63fb30732f8b46c4cc5b5b110d326e242625a843
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL omi_physics-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Size 705.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
49c5ef91ca5b6d747201c9c480c1ce8e57fe996018abd620ce786ed9763513b9
BLAKE2b-256 checksum
How to use checksums
b3cc871a6891d92a6cf3b6a5ebd0b0e37fec14e3ad5856bcbffd4044eba3621a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp311-cp311-win_amd64.whl

Download URL omi_physics-0.3.2-cp311-cp311-win_amd64.whl
Size 689.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
25e65ec296fbeac71272d02361de52b60976997cd1be4dfc5d35860529b33548
BLAKE2b-256 checksum
How to use checksums
31ede8e19ae524df237bdb78186ab3277c3dca6f624ea74fc4e4c936d2bf14e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp311-cp311-win32.whl

Download URL omi_physics-0.3.2-cp311-cp311-win32.whl
Size 654.0 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
50be462f2e09206c1243ebe51cf07c564f412703cd3eeb21b4dcea33618b178e
BLAKE2b-256 checksum
How to use checksums
9f5ced636f87cc38f6ffb71b4196ec767372ce29974f5f35e703570a960f62f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL omi_physics-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl
Size 1.7 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
fc5db4fed4eb8f1eec172ebed969d0b103d592c4dfde9c9db0fbcbb3cd78f707
BLAKE2b-256 checksum
How to use checksums
b89309d495226c7040afd516c42f2eb4b92ea1428028f5c48f0fe2b0485fdc88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL omi_physics-0.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
dc39b26de532db514c739f761d73d01534020d788f5f007c4cfee26b6aae6185
BLAKE2b-256 checksum
How to use checksums
8caac9e3db2943bd223c0bd8e7d7491810c3fa5ee333687e8740ba6e21a1cea1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL omi_physics-0.3.2-cp311-cp311-macosx_11_0_arm64.whl
Size 704.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1aea0cb1f841e224ae2e9c462e1d301d0bb835d3396f85618082be9ca52a5ece
BLAKE2b-256 checksum
How to use checksums
a2ad97cd5e3c3124af2d1c84522038a51bdb151c9b976e7590790dfaa8aaad6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp310-cp310-win_amd64.whl

Download URL omi_physics-0.3.2-cp310-cp310-win_amd64.whl
Size 690.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
ac448eb63a05c2b77413fa9d71e9587a3bb9fed3509435086efc6827eba33f2a
BLAKE2b-256 checksum
How to use checksums
9b12fc6825feb67558b9ad86550c1e290adc5efe55e650170ae659d4f1a7551e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp310-cp310-win32.whl

Download URL omi_physics-0.3.2-cp310-cp310-win32.whl
Size 655.2 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
d82c7af914a8e1003a6ddb675a11427b7c3b0bd8252aafbcbbb8928910befc34
BLAKE2b-256 checksum
How to use checksums
191c663376838a0f6d24af4b3244ef9906b565bd6738711f0a9774584a3cd3b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL omi_physics-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl
Size 1.7 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e09a017d63ea8a996c1f6abfa27997cba9971c1c18dc45e75e3b9034700cc3b0
BLAKE2b-256 checksum
How to use checksums
f3821191055c19731f17b3de553cb37ab467bd3810c37bf2d96804d6d685b34a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL omi_physics-0.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0654e9b24dec73ef16863aeaa0c57b935ebb0f754db1cf582b5f399701e979da
BLAKE2b-256 checksum
How to use checksums
3d55b1ced34feb5733258944dd0b58d9b3f177db15d2d3e2bc0ccdc601959cd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release files / omi_physics-0.3.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL omi_physics-0.3.2-cp310-cp310-macosx_11_0_arm64.whl
Size 705.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
af635e650dfce5cd9a57215f41a9a0751c3de0e71ada3cda68b55f11086c82f1
BLAKE2b-256 checksum
How to use checksums
63d68c3ac288db48799d2c9c433ac0044a14304873307b41254ec8fe524db295
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

31 release files

This release

0.3.2 This release

26 release files

0.2.2

26 release files

0.2.1

26 release files

0.1.0

1 release file

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