Skip to main content

cmgraph — Conley Morse Graph

High-performance C++20 + pybind11 package that computes cell maps, Morse graphs, and homological Conley indices for discrete-time dynamical systems, from either a continuous map (given as an outer-enclosure box map) or a sampled dataset.

The compiled core (cmgraph._core) carries the whole pipeline — outer-approximation cell map ⟶ strongly connected components ⟶ Morse decomposition + partial order ⟶ (on demand) cubical relative homology and the Leray-reduced index map. The Python surface is a thin, ergonomic layer over it. Cells are exposed as stable keys (Python ints) that survive refinement.

Install

pip install .            # core (no plotting dependencies)
pip install ".[viz]"     # + matplotlib and graphviz for cmgraph.plot
  • import cmgraph needs no third-party runtime dependency. numpy is used for numeric outputs when it is importable and is otherwise optional (outputs fall back to nested Python lists; cell keys are always Python ints).
  • Plotting backends (matplotlib, graphviz) are the optional viz extra: import cmgraph and import cmgraph.plot both succeed without them, and each plot function raises a clear pip install cmgraph[viz] hint only when called without its backend.
  • Build stack: scikit-build-core + CMake + pybind11, C++20 (GCC 11+, Clang 13+), Python 3.10+. The package version is single-sourced from pyproject.toml.

Quickstart — Leslie 2D end to end

import math
import cmgraph as cm

TH1 = TH2 = 20.0; PHI = 0.1; P = 0.7
_up = lambda v: math.nextafter(v, math.inf)
_dn = lambda v: math.nextafter(v, -math.inf)

def leslie_box(box):
    """Outward-rounded interval enclosure of the 2D Leslie map (a genuine outer bound)."""
    (xlo, xhi), (ylo, yhi) = box
    ulo = _dn(_dn(TH1 * xlo) + _dn(TH2 * ylo)); uhi = _up(_up(TH1 * xhi) + _up(TH2 * yhi))
    slo = _dn(xlo + ylo); shi = _up(xhi + yhi)
    elo = _dn(math.exp(_dn(-PHI * shi))); ehi = _up(math.exp(_up(-PHI * slo)))
    prods = [ulo * elo, ulo * ehi, uhi * elo, uhi * ehi]
    return [[_dn(min(prods)), _up(max(prods))], [_dn(P * xlo), _up(P * xhi)]]

model = cm.Model(
    bounds=[[-0.001, 90.0], [-0.001, 70.0]],
    map=cm.BoxMap(leslie_box, batched=False),
    grid=cm.Grid(size=[128, 128]),
)

mg = model.morse_graph()          # fast path: Morse graph, no homology
print(mg.summary())               # node count, per-node cell counts, partial order
mg.morse_sets()                   # per-node cell KEYS (stable across refinement)

Refine, inspect, retain state

Refinement mutates the engine in place and keeps the cached image box of every cell that already exists — only newly created cells trigger a map evaluation. The per-round report's f-evaluation count proves it:

report = mg.refine(subdivisions=1, region="morse_sets")   # subdivide + recompute in place
# For a box map (BoxMap), every new leaf is evaluated exactly once and no old cell is
# re-evaluated, so the per-round f-evaluation count equals the number of new leaves:
assert report["f_evaluations"] == report["new_leaves"]     # unchanged cells are not re-evaluated

For a dataset map (BoxMapData), children that fall in an empty region are classified NO_DATA and are not counted as evaluations, so the identity above becomes f_evaluations == new_leaves - (NO_DATA children); the retention guarantee (old cells are never re-evaluated) is unchanged.

Conley index on demand

A Morse set typically does not isolate at a coarse resolution, so conley_index raises a recoverable cm.IndexPairInvalid (refine the offending set and retry). Guard the call:

try:
    ci = mg.conley_index(node=0)                       # RCF of the Leray-reduced f* over Z/5
    ci = mg.conley_index(node=0, want_homology=True)   # + relative homology H_*(P1, P0)
    ci = mg.conley_index(node=0, coefficients="Z")     # arithmetic over Q, integer homology
except cm.IndexPairInvalid:
    ...   # node 0 does not isolate at this resolution — refine it first

The full refine-to-isolate loop that drives a Morse set to a valid index pair and computes a genuine degree-1 Conley index lives in examples/conley_index.py.

Rigor contract

The library's own arithmetic is rigorous: every conversion from a floating-point image box to integer cells rounds outward, so the computed cell map is a genuine outer approximation of the true dynamics.

  • B1 — the box handed to your map is the cell's real box widened outward (directed rounding + k-ulp margin), so f(box_true(c)) ⊆ f(box_given(c)).
  • B2 — your enclosure box is converted to the union of every cell it meets under outward, closed-cube rounding, so enclosure ⊆ |F(c)|.

What the library cannot verify is your map itself. The rigor of the result therefore rests on the path you choose:

  • cm.BoxMap(f) — rigorous iff f is a true outer enclosure. f must map a box to a box that contains the image of every point in it: f(box) ⊇ image(box). The examples build these by interval arithmetic with outward rounding and each documents why the bound holds. (A libm caveat: bounding a transcendental like exp by a fixed outward ulp widening assumes the platform libm is accurate to ≤ 1 ulp — true on glibc ≥ 2.28 and the macOS system libm; a looser libm needs more ulps.)
  • cm.BoxMap(point_map, padding=[...]) — non-rigorous. A convenience that samples a point map at cell corners and inflates by a fixed padding. It is an outer approximation only if the padding dominates the map's sub-cell variation (this is not checked).
  • cm.BoxMapData(X, Y, padding=...) — non-rigorous unless dominated. Builds a cell map from sampled transitions x_i → y_i: the image of a cell is the convex hull of the images of the samples in it, inflated by padding. It is an outer approximation only if the padding (or a supplied lipschitz=... bound, which makes each image a ball around every sample) dominates the sub-cell variation.

Rigor propagates: given a valid box map, the cell map, Morse decomposition, and Conley indices all carry the outer-approximation guarantees of the combinatorial-dynamics literature.

API tour

Object / call Role
cm.Model(bounds, map, grid, threads=0) Binds a bounding box, a map spec, and a grid spec into the compute–inspect–refine engine. .size, .dimension, .bounds, .cells_under(key). threads: cell-map-build worker count (0 = all cores, default; 1 = serial) — results are bit-identical for any value; env CMGRAPH_NUM_THREADS overrides the auto default.
cm.BoxMap(f, batched=True) A box→box outer enclosure (or BoxMap(point_map, padding=[...]) for the non-rigorous point-map path).
cm.BoxMapData(X, Y, padding=..., lipschitz=..., borrow_rings=0) A dataset cell map from sampled transitions; empty-cell policy is NO_DATA by default (borrow_rings=0) or ring-budgeted collar borrowing (borrow_rings ≥ 1, requires a Lipschitz bound).
cm.Grid(size=[...]) / cm.Grid(subdivisions=k) Grid shape spec — anisotropic per-dimension sizes, or k uniform binary subdivisions.
model.morse_graph(conley_index=False) Compute the Morse graph (GIL released). Returns a MorseGraph handle.
mg.summary() / mg.morse_sets() / mg.cells(n) / mg.node_boxes(n) / mg.node_stats(n) Inspection: node/cell counts, per-node cell keys, per-node cell boxes, stats.
mg.order_pairs() / mg.reaches(p, q) The Morse-graph partial order (reachability on the condensation).
mg.refine(subdivisions= / to_level= / size=, region=, eval=, collar=, recompute=) Refine + recompute in place. region: None (whole grid), "morse_sets", "invariant_set", mg.morse_set(i) / mg.connections(i, j) handles, or an iterable of cell keys. to_level is idempotent. recompute=False batches rounds; settle with mg.recompute().
mg.conley_index(node, coefficients=None, want_homology=False, want_full_index_map=False) The homological Conley index of a node, on demand (see below). Raises cm.IndexPairInvalid when the node does not isolate.
mg.spurious(node, budget=, certify=) The spurious-set protocol: refine a node until its recurrence vanishes (spurious) or a budget is spent.
plot.morse_graph(mg, path=...) / plot.morse_sets(mg, dims=(0,1), path=...) Optional viz: Graphviz DOT and matplotlib (headless Agg) with shared node colours.

Conley-index output form

conley_index returns, per homology degree, the rational canonical form of the Leray reduction of the induced index map f*, computed over a field. The default field is 𝔽₅ (coefficients=None); pass coefficients="Z/p", ("Z/p", p), or an int prime p for another prime, or coefficients="Z" for arithmetic over ℚ with integer relative homology (torsion reported). want_homology=True adds H_*(P1, P0); want_full_index_map adds the full (unreduced) f* matrices. The RCF over any prime presents the shift- equivalence class of f* (Franks–Richeson 2000) canonically and index-pair-independently.

Practical scale and dimension limits

  • Dimension: typical d = 2–4; supported to d = 8, hard cap d = 16. The Morse-graph pipeline is viable to the cap; collar-based index pairs and cubical homology are practically confined to d ≲ 8–10 by the 3^d closure factors.
  • Cells: up to ~10⁸ leaves; use the implicit edge mode at large scale (edges dominate memory). Keys pack into 128 bits at these depths (Key128), narrower grids use uint64.

Performance & parallelism

The cell-map build parallelizes deterministically (Model(threads=...), default all cores): map evaluation over cells for C++ analytic oracles, plus CSR coverage assembly for any map. Results are bit-identical to serial for any thread count. Measured cell-map- build speedup ≥ 3× at 8 threads on a 6-physical-core Intel Mac (Leslie 2D/3D, ~10⁶ cells); Python-callback maps evaluate serially under the GIL (batch them; a C++ oracle is the hot path). Reproduce with python scripts/benchmark.py. Full numbers, latencies, memory-per- cell vs design §4, and the honest (d, depth, N) envelope: docs/performance.md.

Examples

All scripts are standalone, headless, and deterministic (python examples/<name>.py; outputs go to $CMGRAPH_EXAMPLE_OUTDIR, default a temp dir):

Script Shows
leslie_2d.py 2D Leslie map: rigorous box map, Morse graph + plots
leslie_3d.py 3D Leslie map: Morse sets projected + a 3D view
henon.py Hénon map: coarse recurrent set merging attractor + exterior saddle
leslie_dataset.py dataset-driven (BoxMapData) vs the analytic map
interactive_refinement.py compute → inspect → refine, state retention via the f-counter
skip_conley.py the skip-homology fast path vs eager index
conley_index.py a genuine degree-1 Conley index of the Hénon saddle

Documentation

Test

pytest tests/            # Python + example integration tests

C++ unit tests run through CTest from a -DCMGRAPH_BUILD_TESTS=ON CMake build.

Persistence (planned)

Saving and loading the full computed state (grid keys, image caches, Morse graph) is a planned future feature, not shipped in this version. The design does not preclude it: the flat-array data structures (design 01 §2.2 / §6) are laid out so a versioned save/load can be added without changing the core. For now, re-run the pipeline from the model spec.

License

MIT — see LICENSE.

Metadata

Release files for cmgraph 0.0.1

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

Source distribution (sdist)

Source distribution for cmgraph 0.0.1
File Size Uploaded
cmgraph-0.0.1.tar.gz 486.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cmgraph 0.0.1
File
cmgraph-0.0.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cmgraph-0.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
cmgraph-0.0.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
cmgraph-0.0.1-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
cmgraph-0.0.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cmgraph-0.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
cmgraph-0.0.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cmgraph-0.0.1-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
cmgraph-0.0.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cmgraph-0.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
cmgraph-0.0.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cmgraph-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
cmgraph-0.0.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cmgraph-0.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
cmgraph-0.0.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
cmgraph-0.0.1-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details

Total release size: 7.2 MB

Release files / cmgraph-0.0.1.tar.gz

Download URL cmgraph-0.0.1.tar.gz
Size 486.8 kB
Tags Source
SHA-256 checksum
How to use checksums
64fcbb38ca81355de7cf86fc179a86f93cac5af8b609b0a4e43b9c2336b4020f
BLAKE2b-256 checksum
How to use checksums
99d58e061aa60965ec6bb750fddcb6848693be3185691c11002e693b1edec9d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp313-cp313-win_amd64.whl

Download URL cmgraph-0.0.1-cp313-cp313-win_amd64.whl
Size 393.0 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
16266ca32747b3143557f9408dc69eb2c980795d4ab43508082b6b823ca7bdb7
BLAKE2b-256 checksum
How to use checksums
6368f196017f97edc025e7a83073082b0c6faea119c4d4c08e245dab74ded3ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL cmgraph-0.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 449.2 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6f1e76a4c16fdda7ec6daec3f5cbc72cde1fb8aaf38ecb3a2374046eebcaeb9b
BLAKE2b-256 checksum
How to use checksums
aa3b5c098ea5729408db763daa1b8cda66c52868ea7fe93d6035a6a3e98fead9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL cmgraph-0.0.1-cp313-cp313-macosx_11_0_arm64.whl
Size 394.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b00b99a2b9a688f836d361b618a514e1110364b35b7728169cceae6998e288d4
BLAKE2b-256 checksum
How to use checksums
a8ed48932b360b08b54e299dc93e92fdedfc00f21747a9937677a340000528ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp313-cp313-macosx_10_13_x86_64.whl

Download URL cmgraph-0.0.1-cp313-cp313-macosx_10_13_x86_64.whl
Size 435.0 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
83cf2b2d594cf247b6011fc23c2dd1229ddeac5b786e4b3ef2d9346f419c3cb9
BLAKE2b-256 checksum
How to use checksums
62239f70a72e850d9768d49af215fe3e70f5a9a8e452ade9ac39ad97d3fdb2d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp312-cp312-win_amd64.whl

Download URL cmgraph-0.0.1-cp312-cp312-win_amd64.whl
Size 392.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
2595266921011be3ffd0ae0ed6c23e9b3b5be58ea3d82fb984c2c426f177592a
BLAKE2b-256 checksum
How to use checksums
988ba250c3252b009b0564ca8dad55b9b11021fc57b5eacc5941d08bd535ce94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL cmgraph-0.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 449.1 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e4dc377e37422edbc14bacdda4b08a2eb2bb29eb7cc46ecf35cab4ee48b26c7e
BLAKE2b-256 checksum
How to use checksums
10861c950f76a8ecae03360ddc368cdb29da9fccfb036ed2b0dc7976b33f0be1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL cmgraph-0.0.1-cp312-cp312-macosx_11_0_arm64.whl
Size 394.6 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9d0ea15a29513336f5fcc0d471999a30e6fd4fad0190b6a637209a04be174a52
BLAKE2b-256 checksum
How to use checksums
79f281f8e16f7d041aad515dd26ad2a075aa25a5d40b240b272b79fa9cbf4bfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp312-cp312-macosx_10_13_x86_64.whl

Download URL cmgraph-0.0.1-cp312-cp312-macosx_10_13_x86_64.whl
Size 435.0 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
c9dca6114b7a103a1c180c3e7ba529b8b454ac1e77f901c3832568a847963de2
BLAKE2b-256 checksum
How to use checksums
133930c6f37e0a1c0785a6449601b462ac91e432bf7dba59768291ca0bdf37b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp311-cp311-win_amd64.whl

Download URL cmgraph-0.0.1-cp311-cp311-win_amd64.whl
Size 389.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2612dcc9285c9e004a9656d46f34bd49ae1f9c8093fcc860abeb4d4fbd8b4631
BLAKE2b-256 checksum
How to use checksums
bd70d54510576a65d741ef1d9be82422c1ed728abe0ccd250e45e9229babe3f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL cmgraph-0.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 450.0 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
87ee03e35e99e41ade23d10ce19b23f3429309bec9fdd8370a8cbfee4774bb39
BLAKE2b-256 checksum
How to use checksums
f207c0e7e2cf216c4f7e68dc306574a9ae1de95e03d9bb3e7521b9f3400fc3ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL cmgraph-0.0.1-cp311-cp311-macosx_11_0_arm64.whl
Size 392.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
adf4e3a45c0c8ff1341265b277aaaad0c708f6f7fa67b547f9fad88f1d315d8d
BLAKE2b-256 checksum
How to use checksums
f60e431e75be255efd0d1f45cddc74fdb2fbe6ce51e790eb29d2d195f4d94015
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl

Download URL cmgraph-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl
Size 431.8 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
7dc173e11d8056c23bf6980c1d266b4bd77f1728ee73a1bfc93cdcef060ae92c
BLAKE2b-256 checksum
How to use checksums
b31a3a70d1b645182ab22fbf361d57abcedcf9b3c71927954145e227b1276bbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp310-cp310-win_amd64.whl

Download URL cmgraph-0.0.1-cp310-cp310-win_amd64.whl
Size 388.6 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f69b08457d7ae0388491c10d7c1e5c13a84d47dd81f01c8053c06e41871a94c2
BLAKE2b-256 checksum
How to use checksums
9da233e4c698c4a48fe2ce2b858d9d9a955ce8c25768950ace4c741db49b45b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL cmgraph-0.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 449.8 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d36bb09600ee7b547983843007ee3f90b69ae25869968fa3ff8cd995b9f862eb
BLAKE2b-256 checksum
How to use checksums
0944318dda700c7fb8ad7c273bf0aa470baaa1751ccafe32c72b3252d761adae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL cmgraph-0.0.1-cp310-cp310-macosx_11_0_arm64.whl
Size 390.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6f00e62d6cbbedaaa273d8316e0704c8818e94fcde651029ab2299abd5a2356a
BLAKE2b-256 checksum
How to use checksums
b33bcf44285a60f01dfdd6373baaa28bf20270f31d85ea568a4725ab5db30480
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / cmgraph-0.0.1-cp310-cp310-macosx_10_9_x86_64.whl

Download URL cmgraph-0.0.1-cp310-cp310-macosx_10_9_x86_64.whl
Size 430.6 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
5bc4b6168c0d29e06a94f930f2abba684db1eb29273c3afafefe1fe8f4880a8f
BLAKE2b-256 checksum
How to use checksums
a9a244313ecf479c4d063544496dccc7397c6a902e9d060f1c95e45dc63c4254
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.1 This release

17 release files

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