This release is a pre-release and may not be stable for production use.
opengl_decimate — mesh decimation over glTF-shaped NumPy arrays
Reduce a triangle mesh to fewer triangles, keeping the shape and the attributes it carries. A mesh arrives as a mapping of glTF attribute semantics to NumPy arrays plus a triangle index array, and leaves the same way, so nothing stands between a loader, a generator, a decimator and a vertex buffer.
import numpy as np
from opengl_decimate import simplify, SimplifyOptions
result = simplify(
{'POSITION': positions, 'NORMAL': normals, 'TEXCOORD_0': uvs},
indices,
SimplifyOptions(target_ratio=0.25),
)
result.attributes['POSITION'] # (v, 3) float32
result.indices # (t * 3,) uint32
result.error # the quadrics' own estimate of the deviation
result.vertex_map # input vertex -> output vertex
NumPy is the only dependency.
What it does to a scan
coastal_cliff_04, 1,537,926 triangles of photogrammetry, decimated once in 10.7 s -- every level below is a prefix of that one recording replayed.
1,537,926 tri | 32,000 tri | 8,000 tri | 4,000 tri |
| Subject | Source | Reduced in | Draw at source | Finest shipped | Draw there |
|---|---|---|---|---|---|
| Coastal cliff | 1,537,926 tri | 10.7 s | 0.20 ms | 32,000 tri | 0.04 ms |
| Lekking ruffs | 547,647 tri | 5.3 s | 0.21 ms | 32,000 tri | 0.06 ms |
| Coastal land rocks | 1,291,146 tri | 9.0 s | 0.17 ms | 32,000 tri | 0.04 ms |
| Marble bust | 17,456 tri | 0.1 s | 0.04 ms | 17,456 tri | 0.04 ms |
docs/GALLERY.md has every level of every subject, each drawn from touching distance out to barely visible, with what it cost to make and what it costs to draw.
What it does
Quadric error metrics
Each point carries a quadric accumulated from the planes of the triangles around it, weighted by their area. Merging two points costs the summed quadric evaluated where it is smallest, and that smallest place is one 3x3 solve. The classical metric (Garland & Heckbert) and the probabilistic one (Trettner & Kobbelt) share the storage and the solve: the second reads each plane as a noisy sample and minimises the expected squared distance, which makes a single plane solvable and a reconstructed surface behave.
Rules that keep the result a surface
Before any contraction: the link condition, so an edge never ends up with three triangles on it; a duplicate-face check, so a small closed shape cannot fold onto itself; a normal-flip test, so a fan is never turned inside out; and an optional triangle-shape floor. Points are classified once as manifold, border or locked, and a border point moves only along its border, so the outline of an open patch stays where it was.
Attributes are carried, never invented
Every value in the output is a value
that was in the input, measured at the place the surface now is: a contraction
hands the corners it merges to the end of the edge the merged point came to rest
nearest, so a texture coordinate and a normal travel with the position they
describe. Two corners at the same point with different normals or texture
coordinates stay two vertices, so a UV seam is still a seam and a hard edge is
still hard. A corner takes the copy nearest in attribute space and the end drawn
at more texture coordinates keeps them, so neither side of a seam is left
reading the chart next door. The exception is a chart narrow enough that one
edge joins the seams on either side of it: a contraction along that edge merges
two seams, and the corners of three charts meet at one point. lock_seams holds
each seam's line, which rules that out too, where the atlas is fragmented
enough for that to be worth its triangles.
recompute_normals replaces NORMAL with the normals of the surface that is
left, which is what a level a game ships wants: a carried normal is the one
measured at its own vertex and is the more accurate of the two, but its error
is uncorrelated between neighbours and shading shows the gradient, so coarse
levels facet. Recomputing accumulates per smoothing group rather than per point,
so crease_angle keeps the edges the model was built hard across and a cube does
not come back round.
A recorded reduction, replayed to any target
collapse_sequence runs the
whole reduction once and records it; at() then reaches any triangle count by
replaying a prefix — four array operations, not another decimation. A target
costs a replay rather than a reduction, and costs the same however far along the
sequence it is, which is what an editor's target slider needs.
from opengl_decimate import collapse_sequence
sequence = collapse_sequence(attributes, indices, SimplifyOptions(target_ratio=0.5))
coarse = sequence.at(target_count=5000) # immediate
coarser = sequence.at(target_count=500) # also immediate
within = sequence.at(target_error=0.01) # or by deviation
A measured error, not only an estimate
result.error is what the quadrics
predicted: an area-weighted root-mean-square distance to the planes, which is the
right thing to steer a reduction by and is not a bound on anything. certify=True,
or opengl_decimate.certify.surface_deviation, samples both surfaces in both
directions and measures the worst place either is from the other — which is the
number a level of detail's error bound should be built on, and runs about twice
result.error. One direction alone cannot see a hole.
How far a model will go, before spending a reduction on it
Some meshes
cannot be decimated, and the reason is always a property of the mesh: a canopy
of separate leaf cards is as many pieces as it has cards and every piece keeps a
triangle; lace has a handle through every hole, and no contraction closes one;
and a texture coordinate means something only inside one chart of the atlas, so
a model unwrapped into thousands of small ones runs out of texture long before
it runs out of triangles. survey measures all of it and puts a floor on what
any target can reach. Given the options the reduction will run with, it surveys
the mesh their weld and drop_components_below leave.
from opengl_decimate import survey
report = survey(attributes, indices)
report.pieces, report.handles, report.seam_share
report.floor # no target goes below this
report.charts, report.texture_floor # and below this the texture stops fitting
if report.reducible < 0.5:
... # this model wants a different operation, not a lower target
Targets
At least one, and the reduction stops at whichever is reached first.
| Option | Meaning |
|---|---|
target_ratio |
share of the input triangles to keep, in (0, 1]. A share of what the caller handed in, whatever welding merged first |
target_count |
triangles to stop at |
target_error |
deviation to stop at, a length in model units — the quadrics' estimate, not the measured deviation |
Options
| Option | Default | What it does |
|---|---|---|
metric |
'quadric' |
'probabilistic' reads the surface as noisy samples |
position_noise |
0.001 |
probabilistic: how far points are trusted, as a fraction of the bounding-box diagonal. Raises the reported error; does not change what gets contracted |
normal_noise |
0.001 |
probabilistic: how far normals are trusted. The term that conditions the solve, so this is the one that changes the reduction |
boundary_weight |
1.0 |
how hard an open surface's edge is held |
lock_boundary |
False |
hold the border exactly |
locked |
None |
further vertices to hold, as indices into the arrays handed in. Every vertex at the same position is held with it |
max_normal_flip |
90.0 |
degrees a face's normal may turn |
min_triangle_quality |
0.0 |
shape floor, 0 (any) to 1 (equilateral only) |
placement |
'optimal' |
'endpoint' keeps every point exactly where it was |
lock_seams |
False |
hold the seams of the texture atlas on their own lines |
weld_tolerance |
0.0 |
merge input vertices within this distance first |
drop_components_below |
0.0 |
remove connected pieces smaller than this share of the bounding-box diagonal first |
schedule |
'heap' |
'multiple-choice' samples instead of ordering |
candidates |
8 |
how many edges multiple-choice draws per step |
seed |
0 |
fixes the sampling, so a run repeats exactly |
recompute_normals |
False |
recompute NORMAL for the surface that is left, adding it where the input had none |
crease_angle |
60.0 |
degrees past which a recomputed normal keeps an edge hard |
certify |
False |
measure the deviation into measured_error |
certify_samples |
4000 |
points taken from each surface when certifying |
Two schedules
heap takes the cheapest candidate anywhere on the mesh, from a lazily-updated
priority queue. It is the better quality, and it is sequential by construction:
every contraction changes the price of its neighbours, so the next choice depends
on the last.
multiple-choice takes the cheapest of a few candidates drawn at random. There
is no global ordering to maintain, every step costs the same as every other, and
the quality loss is small. Giving up the global ordering is what makes a
reduction divisible, so this is the schedule a parallel or GPU implementation is
built on.
Input it will take
POSITION is required; every other attribute must have the same number of rows.
Vertices sharing a position are welded so the reduction sees a surface rather
than a vertex list, and a triangle left with a repeated corner by that welding is
dropped. Non-manifold edges, bowties and isolated points are locked rather than
refused, so a mesh with some bad places is reduced everywhere else.
weld_tolerance merges vertices that are merely close, which is what a scan
needs — the same corner reconstructed twice differs in the last several bits. The
exact weld is one vectorised sort; a tolerance weld groups into cells and joins
across the twenty-seven cells a point can have a partner in, and costs more.
Pick a tolerance smaller than the typical spacing between points: the work is the
number of pairs sharing a cell, so a tolerance that sweeps a cluster into one
cell costs the square of that cluster's size.
A model far from the origin is handled where it is. Quadrics are accumulated
about the model's own bounding-box centre, so a georeferenced mesh at 6.4e6
reduces to exactly what the same mesh at the origin does — and POSITION comes
back in the float dtype it arrived in, since a float32 ulp out there is half a
metre.
Limits
- Attributes follow their corner and are not part of the error metric, so a
texture can slide slightly where a point moves a long way.
placement='endpoint'removes that entirely, at some cost in geometric accuracy. - Only the
heapschedule has the compiled contraction loop.multiple-choiceruns the NumPy implementation whatever is installed, which is around thirty times slower per face — worth knowing, since the schedule is otherwise the scalable one of the two. - Where no compiler was available at install time the NumPy contraction loop is
used for both schedules. It is the same reduction and the same answer, at a
speed that suits a model rather than a scan. A wheel carries the compiled one.
opengl_decimate.native.ACCELERATEDsays whether it is in use, and settingOPENGL_DECIMATE_NO_ACCEL=1before import switches it off. - An open surface cannot be reduced past its own boundaries. A hole in the
surface keeps at least three vertices around it, and each separate open piece
keeps at least one triangle, so a mesh of many small open shells stops well
above any target. A tree trunk with 246 branch stubs stops at 738 triangles
whatever it is asked for, because that is three vertices per loop. Joining
points that are not edges is what gets below it, and is not implemented.
drop_components_belowremoves small pieces before the reduction starts. - A closed piece stops at four triangles, a tetrahedron, and a piece with a
handle stops at whatever it takes to go round the handle.
surveyreports those floors before a reduction is run.
Documentation
- docs/GALLERY.md — five CC0 scans taken down through a level
chain, each level drawn from touching distance out to barely visible, with what
it cost to make and what it costs to draw. Regenerated by
tools/gallery.py. - docs/API.md — every entry point, with its units and defaults.
- docs/ALGORITHM.md — what each step does and why.
- CHANGELOG.md — what each release changed.
Licence
MIT. See LICENSE.
Metadata
Release files for opengl-decimate 0.2.0a5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| opengl_decimate-0.2.0a5.tar.gz | 356.9 kB | With provenance | Details for opengl_decimate-0.2.0a5.tar.gz |
Built distributions (wheels)
Total release size: 17.3 MB
Release files / opengl_decimate-0.2.0a5.tar.gz
| Download URL | opengl_decimate-0.2.0a5.tar.gz |
|---|---|
| Size | 356.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b13336faac982b18b3acbd0bbe54e42b999e491be71f33c63ffef10e2e79d74
|
|
BLAKE2b-256 checksum How to use checksums |
58d33db521721e875bca49741a7ec2c788e5782db7ca163820b7837572a09848
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp314-cp314-win_amd64.whl
| Download URL | opengl_decimate-0.2.0a5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 386.7 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b5696a2504aae926808abbf89f5a213aff36772000daf0c9b1c3b2fc634f6dd2
|
|
BLAKE2b-256 checksum How to use checksums |
8122572bcf45fa0a103ef9ea31c0571e7c2c11c582a37fbc15671941980fab76
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp314-cp314-win32.whl
| Download URL | opengl_decimate-0.2.0a5-cp314-cp314-win32.whl |
|---|---|
| Size | 371.5 kB |
| Tags | CPython 3.14 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
83a4c6c1abb775ab60d115b40d70baa0bc7c9875a297cd945b10710439c7b617
|
|
BLAKE2b-256 checksum How to use checksums |
649f8ac503f35589028c8122b503cbd30d05f8c220ddccd03b8ca825cd9c5fc7
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 914.3 kB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
c58bba60717229cab79e5862f17a74f7197cfc7b79c3a1480ba12a4a0c1ac2ba
|
|
BLAKE2b-256 checksum How to use checksums |
2959f31a39de1a7adc293db7e7b9421f1487b188036255a2081baf0d94e0103c
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 916.6 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e6a53cc2fa2b5a87aeacf89c170208520861c6d688ded8a2ef2872367f47e465
|
|
BLAKE2b-256 checksum How to use checksums |
ed8e8b577e2ef6d02fed27fc777322bdf1660d1f2a82656ffdb88c591bba2ff1
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | opengl_decimate-0.2.0a5-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 400.2 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5030719385497cd41ea33d4fc8045818b770e679b01e548b170dd1c5ccc5ea40
|
|
BLAKE2b-256 checksum How to use checksums |
08bde05ceed4ad1e1d95971d8365d688d69f45cb5668687686ad4a8a2eb11eed
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp314-cp314-macosx_10_15_x86_64.whl |
|---|---|
| Size | 399.5 kB |
| Tags | CPython 3.14 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d7e26cb335f2baf3493fcb1e8cd6855f8d36404fc20ac1150ea54d21dceab54
|
|
BLAKE2b-256 checksum How to use checksums |
ff92844d960564a7c5bd9cee90aaacca8c9491052fe23b4a19ecb47b1a2b5a71
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp313-cp313-win_amd64.whl
| Download URL | opengl_decimate-0.2.0a5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 385.9 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
800d5b66dc2009c5c9d01afd0b2bc64f62b9b8c351e1f82eff0344a9784954b3
|
|
BLAKE2b-256 checksum How to use checksums |
f2e12668cabfd378da073cf47a50c386eaf97c3312d1b28b1d51ab0c249af5fa
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp313-cp313-win32.whl
| Download URL | opengl_decimate-0.2.0a5-cp313-cp313-win32.whl |
|---|---|
| Size | 371.1 kB |
| Tags | CPython 3.13 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
bb0cd3d1aa54d3d7d7a604570e7380444e0e21d8f478cbdce835c588958fa439
|
|
BLAKE2b-256 checksum How to use checksums |
d6af986c9f38c7eae7da405a151712f84c4b691a6c36dd72841417fe2b5f0dc7
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 917.7 kB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
401a45ce4e918f85ed88917cc598cfb0140a842f6744dc43ec7970373c86cff5
|
|
BLAKE2b-256 checksum How to use checksums |
2d333da994897973d939d2cabf9a5ce8eb8da82921d71b827047370d8998dba7
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 920.7 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
61b6b747c3c38042702aaaf64285ab9641f747244f2bd1d9dbf30367ee9f1216
|
|
BLAKE2b-256 checksum How to use checksums |
9faa97199dc5f6f724d114000dd4a42723fd91f769c13e5c937195dddce8d784
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | opengl_decimate-0.2.0a5-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 399.5 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3f234dce9783ac60f7ae7f48067acd0b13a4528b68bc75776c44efc6ea218d03
|
|
BLAKE2b-256 checksum How to use checksums |
9bbe97531d58116608c1eb92b3a8f24891fc4607bbeeea3076d58fbe5fe61e5a
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 399.5 kB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
49d72353ffc8f921d8a2d7b16184d016e6f76c6d84d3661c79fc6fc7f3e37390
|
|
BLAKE2b-256 checksum How to use checksums |
3a5744884f0119e8f7e016a1690fb7cd5d3c9fb50d10893d42d139443fa9de3a
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp312-cp312-win_amd64.whl
| Download URL | opengl_decimate-0.2.0a5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 386.1 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d1f037af5f107637e7b30a02d423d63e46e85456895766d1ff14be08f4499232
|
|
BLAKE2b-256 checksum How to use checksums |
6f985c3c701fb15fc8c7df19bc50f29c51c2433c09f9f33884ba079cd3ef28f3
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp312-cp312-win32.whl
| Download URL | opengl_decimate-0.2.0a5-cp312-cp312-win32.whl |
|---|---|
| Size | 371.2 kB |
| Tags | CPython 3.12 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
8581ffefb0beb8e50cc19fe0b81d41a3c1071196d1f623287aaaf59ab5184e4c
|
|
BLAKE2b-256 checksum How to use checksums |
c390f1a17700012d6955a703abe34cb3bf1e3a1bc9aecd4c86bb4be69447fac0
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 923.7 kB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
150c92a74c3140dcd2d270bddfa3bbb89f9ba108d76b580d74706feaada0b337
|
|
BLAKE2b-256 checksum How to use checksums |
fa818973859d668529887eda311459f01da400b5c12c6394c275bd2a15e94958
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 928.0 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4cca0e02f670550c3f80b2db6469e4acee291146796f898e63df33df4fc3fecc
|
|
BLAKE2b-256 checksum How to use checksums |
10d33fb967695c48bdf595bb1f5d4d72b18bd6f6e7a8b5be2327306c490903be
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | opengl_decimate-0.2.0a5-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 399.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d1aba3990331391668da68bfef1e20a2b1abcec32cb61f12b276dfea07ae20d5
|
|
BLAKE2b-256 checksum How to use checksums |
7c3e138f5652a3e70985da007f8fdc5f125412255fccb9dcfde133c38eafcfa6
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 399.6 kB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
f041f7265eea25f3c2fcb909a299db5a8c3f251a7f1f210dada425fb21bf6337
|
|
BLAKE2b-256 checksum How to use checksums |
3be670d15af8592902057dbef9f615817f9969010e1c28611e65893611cfcd93
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp311-cp311-win_amd64.whl
| Download URL | opengl_decimate-0.2.0a5-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 385.0 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
997d8e1261f9472445268377dfff0145ad66a9cb54deceb7c700954ed35ad16b
|
|
BLAKE2b-256 checksum How to use checksums |
2e534d6de2cbb46f21172ae47466d83c05123bc1f98a79a45c540685a98c8d22
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp311-cp311-win32.whl
| Download URL | opengl_decimate-0.2.0a5-cp311-cp311-win32.whl |
|---|---|
| Size | 369.5 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
4df1488c04819e61e4a4a7833b0eb30ac35ce95955499ee316df2bc3714d990a
|
|
BLAKE2b-256 checksum How to use checksums |
5de112de9cde78e1e3f7882f5f2e416292280662f5e4afd84ea2d57c48de0a6a
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 935.3 kB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
bfd5ab7a49fb2ffce0dc6b04111cbc8801ab529df9affbef9b09127c1a43713c
|
|
BLAKE2b-256 checksum How to use checksums |
ae551fe5319f2b5826da5c0785d56df553404281cc5817e3ba1f7dab7bc5547f
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 932.7 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b574646ddb01d31a3c527b5bd97d16bf853b061930fff89e39469773098b9502
|
|
BLAKE2b-256 checksum How to use checksums |
859ce0991627ae7b2534d64ba2a288f1672fc601edc67a102e24debca18c5939
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | opengl_decimate-0.2.0a5-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 397.8 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2d49a0d231b7eec97dfc80d4f1012bb722db16a17eed4d3ee7817617d0056b1a
|
|
BLAKE2b-256 checksum How to use checksums |
b32c418888d44c867c9485b708311a6b50bc050850e92618e2239c77abee28b7
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 397.3 kB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
4a23f8c0d0f9028d41a8f148a84589e50e351f800736eaf74c084ad194ea60bf
|
|
BLAKE2b-256 checksum How to use checksums |
d1ff3d6fe791e896a6c6c801294e8fec9ec8278398f14985949048271d578114
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp310-cp310-win_amd64.whl
| Download URL | opengl_decimate-0.2.0a5-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 385.5 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a667df651c8d8dfa8e0ccd28f7516f5f42a3c89c79f5dd0d2f339ff528441df6
|
|
BLAKE2b-256 checksum How to use checksums |
08a35c75d56cbe4945377298de1762338f72f3e9afd42fa5b61cbef9493c610f
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp310-cp310-win32.whl
| Download URL | opengl_decimate-0.2.0a5-cp310-cp310-win32.whl |
|---|---|
| Size | 370.0 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
25660d414b5d6890ef86f1e80c082ef110e40162811030134ddc65fb51dfd4f3
|
|
BLAKE2b-256 checksum How to use checksums |
bc378943165c5eb0f2e4562438468a6c649dbbed03d50bb1a12c25904640662d
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 914.0 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
ad8566f120e8bf915e77ba1335c120cfb5f5fce5115082b7d3c9e1feaa8f9f96
|
|
BLAKE2b-256 checksum How to use checksums |
e59de2b0764943f0f705954cb534189535f787cf1cc906237d8bb9a815e56171
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 911.1 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9332c0d7c33fe4a01b8edb33c7cb2f15ca6a43ee2253c7b290c2f00815208d52
|
|
BLAKE2b-256 checksum How to use checksums |
e4f91dd939e4fb2976587dbb544e9ec64ebf9ec2f8187edf98de8f38e3e984d3
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | opengl_decimate-0.2.0a5-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 399.1 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
43b87ebb806d200ebbaa47563f584f3d0c02a4d083bd355574cbc0071d0a6505
|
|
BLAKE2b-256 checksum How to use checksums |
491ebf7d07ec9ea476993388b7d2ff6b6466143051e562cb311617e324bc85f4
|
| 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 Oct 14, 2026.
Transparency logRelease files / opengl_decimate-0.2.0a5-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | opengl_decimate-0.2.0a5-cp310-cp310-macosx_10_9_x86_64.whl |
|---|---|
| Size | 398.4 kB |
| Tags | CPython 3.10 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
a7c0cbeef7a3f08c958e894de8881f5345576b98dcac38c7858cafc53cfe6bbd
|
|
BLAKE2b-256 checksum How to use checksums |
43c1d86fb65a4a818cddcef56adcb7cd2fa2346ccedf6a5c89030faa252f994d
|
| 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 Oct 14, 2026.
Transparency logSecurity for opengl-decimate 0.2.0a5
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 31 files in this release have been uploaded with provenance metadata.
Attestation for opengl_decimate-0.2.0a5.tar.gz
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 14, 2026.
Transparency logA 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.