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_shapesignatures are the source of truth inworld.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:
docs/ARCHITECTURE.md— components, layering, and how they fit together.docs/PIPELINE.md— the step pipeline stage by stage, with the data that flows between stages.docs/DATA-MODEL.md— the OMI data model and the structure-of-arrays world state.docs/ACCELERATORS.md— the Cython accelerators and the pure-Python fallback contract.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| omi_physics-0.3.2.tar.gz | 605.4 kB | Details |
Built distributions (wheels)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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