Convex-objective path parameterization for robotic trajectory planning.
Project description
COPP Python Bindings
Convex-Objective Path Parameterization
This directory contains the Python package for COPP. The PyPI distribution is copp-py and the import package is copp_py; examples usually alias it with import copp_py as copp. It wraps the Rust solver core through PyO3 while presenting a NumPy-friendly interface for paths, robot constraints, solver options, and post-processing helpers.
COPP solves optimal path-parameterization problems. A geometric path
$$ q = q(s) $$
is converted into a time law
$$ s = s(t) $$
so the executed trajectory q(s(t)) satisfies velocity, acceleration, jerk, torque, or user-supplied constraints. The second-order solvers optimize the profile
$$ a(s) = \dot{s}^2 $$
and the third-order solvers optimize the pair
$$ a(s) = \dot{s}^2,\qquad b(s) = \ddot{s}. $$
The Python API follows the Rust crate layout: core modeling namespaces live at copp.path, copp.robot, copp.constraints, copp.objective, copp.interpolation, and copp.clarabel, while algorithms live under copp.solver.<algorithm>. This README focuses on installing, building, running examples, and using the Python interface. For the full project overview, benchmark tables, citation information, and collaboration contact details, see the COPP GitHub README.
The Python bindings follow a deliberately small set of rules:
- import the package with
import copp_py as copp; - pass numerical data as NumPy-compatible arrays or ordinary Python sequences;
- use
float64data for predictable behavior and fewer copies; - build paths with
copp.Path, constraints withcopp.Robot, and solver inputs with solver-specificProblemclasses; - call algorithms through Rust-like solver modules such as
copp.solver.topp2_ra,copp.solver.copp2_socp, andcopp.solver.copp3_socp; - use
copp.interpolationfor profile-to-time conversion helpers.
Install
Install the published package from PyPI:
python -m pip install copp-py
Then import it as:
import copp_py as copp
API Availability
| Problem class | Python API |
|---|---|
| Core utilities | copp.core, root aliases for version, __version__, errors, and common enums |
| Path | copp.path.Path, spline paths, evaluator paths, path derivative evaluation |
| Robot | copp.robot.Robot, station grids, sampled path derivatives, velocity/acceleration/jerk limits, raw constraints, inverse-dynamics callbacks |
| TOPP2 | copp.solver.topp2_ra.solve, copp.solver.reach_set2.backward, copp.solver.reach_set2.bidirectional |
| COPP2 | copp.solver.copp2_socp.solve, copp.solver.copp2_socp.solve_expert |
| TOPP3 | copp.solver.topp3_lp.solve, copp.solver.topp3_lp.solve_expert, copp.solver.topp3_socp.solve, copp.solver.topp3_socp.solve_expert |
| COPP3 | copp.solver.copp3_socp.solve, copp.solver.copp3_socp.solve_expert |
| Objectives | copp.objective.Time, ThermalEnergy, TotalVariationTorque, Linear |
| Interpolation | copp.interpolation.s_to_t_topp2, t_to_s_topp2_uniform, s_to_t_topp3, t_to_s_topp3_uniform, sample-based variants |
Runnable examples are in examples. The Sphinx tutorials include those same files with literalinclude, so examples and documentation stay aligned.
Quick Start
Prerequisites
You need:
- Python 3.9 or newer;
- Rust and Cargo;
- a native compiler toolchain suitable for Rust extension modules;
maturinfor building the Python extension;numpy;jaxfor examples that build differentiable paths withPath.from_jax;sphinxif you want to build the local documentation.
Create and activate any Python environment you prefer before running the commands below. The commands intentionally avoid machine-specific activation scripts, user directories, or environment names.
Install the Python build tools once:
python -m pip install -U pip
python -m pip install -U maturin numpy jax
Build and Install the Local Package
Run from the repository root:
maturin develop --release --features python
This compiles the Rust core with the Python feature enabled and installs the extension module directly into the active Python environment. For normal local development, examples, and documentation builds, this is the only build/install command you need. After the build:
python -c "import copp_py as copp; print(copp.version())"
Run Examples
Run examples from the repository root after installing the local package:
python bindings/python/examples/topp2_ra.py
python bindings/python/examples/copp2_socp.py
python bindings/python/examples/topp3_socp.py
python bindings/python/examples/copp3_socp.py
python bindings/python/examples/reach_set2.py
General Workflow
Most Python scripts follow the same shape:
- Build a path from waypoints or a Python evaluator object.
- Build a station grid
s. - Create a
copp.Robot. - Append stations and sample path derivatives into the robot.
- Add velocity, acceleration, jerk, torque, or raw constraints.
- Build a
Problemdescriptor for the chosen solver family. - Call a solver.
- Convert the returned path-domain profile into
t(s)ors(t)samples. - Evaluate the original path at
s(t)for downstream control or plotting.
For second-order problems, the solver output is usually an a profile sampled on the station grid. For third-order problems, the output is a Profile3rd object with a and b profiles.
Path evaluation helpers return a consistent PathDerivatives object. For
position-only evaluation, use the .q field:
out = path.evaluate_q(s)
q = out.q
Higher-order calls fill more fields on the same result type:
out = path.evaluate_up_to_2nd(s)
q = out.q
dq = out.dq
ddq = out.ddq
Minimal Program
import copp_py as copp
print("COPP version:", copp.version())
TOPP2-RA Example
This complete example builds a three-axis path with JAX, lets Path.from_jax provide the path derivatives, adds symmetric velocity and acceleration limits, solves TOPP2-RA, and converts the result into uniform time samples.
import numpy as np
import copp_py as copp
def main() -> None:
try:
import jax
import jax.numpy as jnp
except ImportError as exc:
raise SystemExit("Install JAX to run this example: python -m pip install jax") from exc
jax.config.update("jax_enable_x64", True)
dim = 3
n = 1001
dt = 1.0e-3
# 1) Define q(s). Path.from_jax differentiates it up to third order.
def q_fn(s):
freq = jnp.array([2.0 * jnp.pi, 3.0 * jnp.pi, 5.0 * jnp.pi], dtype=jnp.float64)
phase = jnp.array([0.0, 0.3, 0.7], dtype=jnp.float64)
return jnp.sin(freq * s + phase)
path = copp.Path.from_jax(q_fn, 0.0, 1.0)
s = np.linspace(0.0, 1.0, n, dtype=np.float64)
# 2) Build robot constraints, then apply symmetric velocity and acceleration limits in [-1, 1].
robot = copp.Robot(dim, capacity=n)
robot.append_s(s)
robot.set_q_from_path_2nd(path, 0, n)
upper = np.ones(dim, dtype=np.float64)
lower = -upper
robot.add_velocity_limits(upper, lower, start_idx_s=0, length=n)
robot.add_acceleration_limits(upper, lower, start_idx_s=0, length=n)
# 3) Solve TOPP2-RA with boundary values a(0) = 0 and a(1) = 0.
problem = copp.solver.topp2_ra.Problem(
robot.constraints,
idx_s_interval=(0, n - 1),
a_boundary=(0.0, 0.0),
)
options = copp.solver.topp2_ra.Options()
a_profile = copp.solver.topp2_ra.solve(problem, options)
# 4) Post-process TOPP2-RA results: a(s) -> t(s) -> s(t).
t_final, t_s = copp.interpolation.s_to_t_topp2(s, a_profile, 0.0)
s_t = copp.interpolation.t_to_s_topp2_uniform(
s,
a_profile,
t_s,
dt,
t0=0.0,
include_final=True,
)
# 5) Print the tutorial summary.
print("TOPP2-RA done.")
print(f"dim = {dim}, N = {n}")
print(f"t_final = {t_final:.6f} s")
print(f"a_profile.len() = {len(a_profile)}")
print(f"s(t) samples = {len(s_t)}")
if __name__ == "__main__":
main()
The same structure extends to COPP2 by replacing the TOPP2 problem with copp.solver.copp2_socp.Problem and an objective list, and to third-order solvers by using set_q_from_path_3rd, jerk constraints, copp.solver.topp3_socp.Problem or copp.solver.copp3_socp.Problem, and the TOPP3 interpolation helpers.
Solver Namespaces
copp.solver.topp2_ra and copp.solver.reach_set2
TOPP2 is the second-order time-optimal family. It optimizes a(s) under first- and second-order constraints. Use copp.solver.topp2_ra.solve for the reachability-analysis solver and copp.solver.reach_set2.backward / bidirectional when you need reachable-set bounds directly.
copp.solver.copp2_socp
COPP2 solves second-order convex-objective problems. Objectives are constructed through copp.objective, for example:
objectives = [
copp.objective.Time(1.0),
copp.objective.ThermalEnergy(0.1, np.ones(dim, dtype=np.float64)),
]
Use copp.solver.copp2_socp.solve for the Clarabel SOCP formulation. Use copp.solver.copp2_socp.solve_expert when application code needs solver status and diagnostics instead of only the accepted profile.
copp.solver.topp3_lp and copp.solver.topp3_socp
TOPP3 is the third-order time-optimal family. It uses the (a,b) state and supports jerk-aware constraints. Use copp.solver.topp3_lp.solve for the linear-objective approximation or copp.solver.topp3_socp.solve for the Clarabel conic formulation. A common pattern is to generate an initial a profile with TOPP2-RA, substitute it into the constraints, then solve the third-order problem with LP or SOCP.
copp.solver.copp3_socp
COPP3 combines third-order constraints with convex objectives. Use copp.solver.copp3_socp.solve for the Clarabel SOCP formulation. Third-order solvers return Profile3rd objects that can be post-processed with copp.interpolation.s_to_t_topp3 and copp.interpolation.t_to_s_topp3_uniform.
Data Conventions
Python inputs are accepted as NumPy-compatible array-like values. At the wrapper boundary, arrays are validated and converted into contiguous float64 buffers when needed. To reduce copies in hot loops, pass numpy.ndarray values with dtype=np.float64 and C-contiguous layout unless the function documents another layout.
Path-sampled matrices commonly use sample-major layout, where each row is one station and each column is one axis. The MatrixLayout enum and path helpers document the accepted alternatives.
Path.evaluate_q, Path.evaluate_up_to_2nd, and Path.evaluate_up_to_3rd
all return PathDerivatives. evaluate_q fills only out.q; derivative
fields are None. This keeps path evaluation calls structurally consistent
while making the requested derivative order explicit in the method name.
Boundary values are expressed in path-domain variables:
a_boundary=(a_start, a_final)fixesa = ds/dt * ds/dt;b_boundary=(b_start, b_final)fixesb = d2s/dt2for third-order problems.
Error Handling
Python argument-format errors are reported as standard Python exceptions such as TypeError or ValueError. Errors returned by the Rust core are exposed as copp.CoppError and typed subclasses such as PathError and ConstraintError.
try:
a_profile = copp.solver.topp2_ra.solve(problem, options)
except copp.CoppError as exc:
print("COPP failed:", exc)
For Clarabel-based solvers, the simple solver functions return an accepted profile or raise an exception. Expert variants such as copp.solver.copp2_socp.solve_expert and copp.solver.topp3_socp.solve_expert expose solver status, residuals, and other diagnostic fields for applications that need status-aware behavior.
Documentation
The Python documentation is generated with Sphinx from:
bindings/python/docs/source/
Install documentation dependencies:
python -m pip install -U sphinx
Build the HTML documentation from the repository root:
python -m sphinx -E -b html bindings/python/docs/source bindings/python/docs/build/html
Open the generated entry page after the build:
bindings/python/docs/build/html/index.html
The documentation is organized as:
- Guide: quick start, mathematical concepts, solver selection, tutorials, and how-to pages;
- Reference: API pages generated from Python modules and PyO3 docstrings.
Guide pages use the same path-parameterization variables as the Rust docs, and tutorial pages include runnable files from bindings/python/examples.
Package Layout
bindings/python/
README.md
copp_py/
__init__.py # public package facade
core.py # shared enums, version, and errors
path.py # path constructors and evaluation
robot.py # robot sampling and high-level constraints
constraints.py # raw constraint buffer namespace
objective.py # objective constructors
interpolation.py # profile/time conversion helpers
clarabel.py # Clarabel options and diagnostics
solver/ # solver namespaces
topp2_ra.py
reach_set2.py
copp2_socp.py
topp3_lp.py
topp3_socp.py
copp3_socp.py
docs/
source/ # Sphinx source
build/html/ # generated HTML output
examples/ # runnable Python examples
The native extension module is built as copp_py._native.
Troubleshooting
import copp_py Fails
Build and install the local extension into the active Python environment:
maturin develop --release --features python
Then verify that the same interpreter can import the package:
python -c "import sys, copp_py as copp; print(sys.executable); print(copp.version())"
Sphinx Cannot Import copp_py
Build the local package first with maturin develop --release --features python, then run the Sphinx command using the same Python interpreter.
Native Build Fails
Check that Rust, Cargo, Python headers, and the platform compiler toolchain are available. On Windows, install a Visual Studio C++ build toolchain compatible with your Python interpreter. On Linux and macOS, ensure that the usual compiler and linker tools are available on PATH.
Array Shape or Type Errors
Convert inputs explicitly before calling into COPP:
values = np.ascontiguousarray(values, dtype=np.float64)
For path samples, verify the intended matrix layout and station count. Most robot-building helpers expect lengths to match the station grid already stored in Robot.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file copp_py-0.2.1.tar.gz.
File metadata
- Download URL: copp_py-0.2.1.tar.gz
- Upload date:
- Size: 395.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a71a8608984a45e80f3fadaa759e607eb2967ca99387e388bdcad43f0380bcfa
|
|
| MD5 |
cfc7819dad37b951d953d1316f300a8a
|
|
| BLAKE2b-256 |
db5183742773bfd3bb3d028bbdb106eb8a19584eecb21a2cd2cbd5ea031303d7
|
Provenance
The following attestation bundles were made for copp_py-0.2.1.tar.gz:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1.tar.gz -
Subject digest:
a71a8608984a45e80f3fadaa759e607eb2967ca99387e388bdcad43f0380bcfa - Sigstore transparency entry: 1685135255
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2152e886a048b999898660b613852a3cd267826c2265722b2d833f1e073d8255
|
|
| MD5 |
05b41c173af3a2aba68afbb986fb46c3
|
|
| BLAKE2b-256 |
167361b80247ec4b37ce9543aae2289a689da89d0417c4567272dbe67e453a78
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
2152e886a048b999898660b613852a3cd267826c2265722b2d833f1e073d8255 - Sigstore transparency entry: 1685135819
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de6cfcbc45d3f952bd50f7aa7d48f4ee2053e66d307102a01a7142c002c9ec12
|
|
| MD5 |
38d0d6f4fe952cfd22765e7eedc23fd2
|
|
| BLAKE2b-256 |
b2ce8fb64b5846ed2563d03113cfffbbec9ab6284256be6fc002e5bef850f93a
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
de6cfcbc45d3f952bd50f7aa7d48f4ee2053e66d307102a01a7142c002c9ec12 - Sigstore transparency entry: 1685138554
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37dacb92b0b6df57ae91cefe4d67ea8855273c0fdcb8ffe54c45f58315b872af
|
|
| MD5 |
19afe0279c143e7efddb0679f9d5faa9
|
|
| BLAKE2b-256 |
69b6ac600c9cc384047dbdd97be3e1c5a9b8f9b35bcc0d3aac39b073c4b30761
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
37dacb92b0b6df57ae91cefe4d67ea8855273c0fdcb8ffe54c45f58315b872af - Sigstore transparency entry: 1685139932
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52feb4b1d571ad1c7b7c0b03cce18d8d7d5301cac60dd69d189006d2359083de
|
|
| MD5 |
4f7ab279947f0480edaae5c395637f2f
|
|
| BLAKE2b-256 |
2488b7c993dc505f1bc2f45d62d5b8db9f31aa525f5b06bba0fc771b2d63dd99
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
52feb4b1d571ad1c7b7c0b03cce18d8d7d5301cac60dd69d189006d2359083de - Sigstore transparency entry: 1685138901
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d3283cca630ab7bdf9cf9439a94391fb2fc6a3d8d02ee84c7fccf0c153ddb7
|
|
| MD5 |
1a103151fffb044df6305e1469649f92
|
|
| BLAKE2b-256 |
8e366dc3be227ef4b703b6aaff25e8c0ae219fcf5c78d42243a49c1f93c5543c
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
95d3283cca630ab7bdf9cf9439a94391fb2fc6a3d8d02ee84c7fccf0c153ddb7 - Sigstore transparency entry: 1685137256
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
315c884c6b57e1af9464b0135578f032af834beb8a48fda8f4a9df891ee82a4a
|
|
| MD5 |
31c62ab51ddf0e2240a9eaab86a06c31
|
|
| BLAKE2b-256 |
f16aa6db5fd256a994a2cff3c6fa57fe4ead2062b471e8bc3866a8adda59f041
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
315c884c6b57e1af9464b0135578f032af834beb8a48fda8f4a9df891ee82a4a - Sigstore transparency entry: 1685139542
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7a22497c6889c9eb4d401fa75c3d4114f2164078de7afea517556dd4c2f9ff1
|
|
| MD5 |
b7c3cda9027b06f642cf3d75d7439ef7
|
|
| BLAKE2b-256 |
9b740eacce2743031f51bb58e18f9aeb9f85aab65215b4e82af4bbd867489491
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
e7a22497c6889c9eb4d401fa75c3d4114f2164078de7afea517556dd4c2f9ff1 - Sigstore transparency entry: 1685138254
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
760f32f7ea5ed56038f433dcd8820aeb6fb6596df02b40bc6ce2f6476fd4785f
|
|
| MD5 |
53bbb9245a1382fc2002cc7c3c754f86
|
|
| BLAKE2b-256 |
1853367a4c0b65399a39c029aa6736315268c112667a08d7a2fee2d50e71d751
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
760f32f7ea5ed56038f433dcd8820aeb6fb6596df02b40bc6ce2f6476fd4785f - Sigstore transparency entry: 1685139269
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 893.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff5371e0464dd3b5194ac58f1641aea824c1321bb24a6385a9751d517280d83c
|
|
| MD5 |
433c26cdb6b8a2aeef7e7a42ed94389d
|
|
| BLAKE2b-256 |
486f35acdf03b89c8eb084b773ff05c521ad037dc9e06d218d4022d2d2d24b5a
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp310-cp310-win_amd64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp310-cp310-win_amd64.whl -
Subject digest:
ff5371e0464dd3b5194ac58f1641aea824c1321bb24a6385a9751d517280d83c - Sigstore transparency entry: 1685140342
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89593df0ee854ddf54cb2384677fdf5580fd9e596ead2861e2509825fc8abbb4
|
|
| MD5 |
6a8e321ae9f3c5b709841f5273f82aa1
|
|
| BLAKE2b-256 |
be31366700853787bf1ba5477e6a9214524c24fca362212235374cc22e556442
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
89593df0ee854ddf54cb2384677fdf5580fd9e596ead2861e2509825fc8abbb4 - Sigstore transparency entry: 1685136906
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
531872ce58cc0864a572174cb4c5d2fb2668bcdad4e497e6016d3f4bd040e16a
|
|
| MD5 |
5b2f654e7387d7b03a16058bd6ca1d98
|
|
| BLAKE2b-256 |
ca78d0352d5582e62f3052df87bb4e1ba9e21bb4aa0bedf4006bbc27efbc6b9c
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
531872ce58cc0864a572174cb4c5d2fb2668bcdad4e497e6016d3f4bd040e16a - Sigstore transparency entry: 1685137957
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 985.8 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ded9dc8cbf767393675a01ba7132160e4493019758a4cdd4c5bee87b8979991a
|
|
| MD5 |
590be340c407beb39d2444149a7b4a6f
|
|
| BLAKE2b-256 |
de77b066a72ad97d5b20c55d02d3484f1aacd8860c41a4d25223a819dca0ddd3
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
ded9dc8cbf767393675a01ba7132160e4493019758a4cdd4c5bee87b8979991a - Sigstore transparency entry: 1685136459
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type:
File details
Details for the file copp_py-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: copp_py-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f45f310297d794a63869ecebf22d8e3756faecb3c917b24f11d1e3727dfbe891
|
|
| MD5 |
e5f484955eb252118bcfff193f8c934d
|
|
| BLAKE2b-256 |
f9402e8044d9c65683a1f3ec0554a2f422687fb83ef5ae90af5903600cb79894
|
Provenance
The following attestation bundles were made for copp_py-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl:
Publisher:
python-wheels.yml on TOPP-THU/copp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
copp_py-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl -
Subject digest:
f45f310297d794a63869ecebf22d8e3756faecb3c917b24f11d1e3727dfbe891 - Sigstore transparency entry: 1685137561
- Sigstore integration time:
-
Permalink:
TOPP-THU/copp@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/TOPP-THU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-wheels.yml@af7a9fb59f98e3af3ea3b16ed0d75f7781989326 -
Trigger Event:
release
-
Statement type: