Skip to main content

COPP Python Bindings

License: MIT Website Docs PyPI Python

Convex-Objective Path Parameterization

This directory contains the Python package for COPP. The open-source package is imported as copp_py, conventionally aliased 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_py.path, copp_py.robot, copp_py.constraints, copp_py.objective, copp_py.interpolation, and copp_py.clarabel, while algorithms live under copp_py.solver.<algorithm>. Examples import copp_py as copp, so user code can use the short copp.Path and copp.solver.* aliases. 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.

Open-source / PRO note: this README documents the open-source Python package, imported as copp_py. COPP PRO provides additional licensed solvers and support options; see the repository-level PRO section or contact hello@copp.pro if those capabilities are relevant to your application.

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 float64 data for predictable behavior and fewer copies;
  • build paths with copp.Path, constraints with copp.Robot, and solver inputs with solver-specific Problem classes;
  • call algorithms through Rust-like solver modules such as copp.solver.topp2_ra, copp.solver.copp2_socp, and copp.solver.copp3_socp;
  • use copp.interpolation for profile-to-time conversion helpers.

API Availability

Problem class Python API
Core utilities copp.core, root aliases for version, __version__, errors, and common enums
Path copp.path.Path, interpolating and tolerance-fitted waypoint paths, evaluator paths, path derivative evaluation
Robot copp.robot.Robot, station grids, sampled path derivatives, velocity/acceleration/jerk/torque 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

For the published Python package, you need:

  • Python 3.9 or newer;
  • numpy;
  • jax for examples that build differentiable paths with Path.from_jax.

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 from PyPI

Install COPP with pip:

python -m pip install -U pip
python -m pip install -U copp-py

For examples that use Path.from_jax, install JAX as well:

python -m pip install -U jax

After installation:

python -c "import copp_py as copp; print(copp.version())"

Build and Install from Source

Use the source build path when you are working from a checkout or changing the Rust/Python binding code. You also need Rust, Cargo, a native compiler toolchain suitable for Rust extension modules, and maturin.

Install the local build tools once:

python -m pip install -U maturin numpy jax

Run from the repository root:

cargo build --release --lib --features python
maturin develop --release --features python

The Cargo command makes the Rust/Python feature build explicit. maturin develop then builds and installs the Python extension module into the active Python environment. After the build:

python -c "import copp_py as copp; print(copp.version())"

Run Examples

Run examples from the repository root after installing the package:

python bindings/python/examples/topp2_ra.py
python bindings/python/examples/copp2_socp.py
python bindings/python/examples/topp3_lp.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:

  1. Build a path from waypoints or a Python evaluator object.
  2. Build a station grid s.
  3. Create a copp.Robot.
  4. Append stations and sample path derivatives into the robot.
  5. Add velocity, acceleration, jerk, torque, or raw constraints.
  6. Build a Problem descriptor for the chosen solver family.
  7. Call a solver.
  8. Convert the returned path-domain profile into t(s) or s(t) samples.
  9. 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. When refining with a previous third-order profile, pass b_linearization=profile.b together with profile.a; this adaptive linearization is recommended when a can approach zero.

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.

Waypoint paths come in two families: Path.from_waypoints_interpolating (alias Path.from_waypoints) passes through every waypoint, while Path.from_waypoints_fitting follows noisy or dense waypoints within per-axis tolerances and reports its audited error bounds in path.smoothing_report. Both constructor families are unstable; their names, signatures, and configuration types may change as more algorithms are added.

Boundary values are expressed in path-domain variables:

  • a_boundary=(a_start, a_final) fixes a = ds/dt * ds/dt;
  • b_boundary=(b_start, b_final) fixes b = d2s/dt2 for 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 as copp Fails

Install the published package into the active Python environment:

python -m pip install -U copp-py

If you are working from a source checkout, build and install the local extension instead:

cargo build --release --lib --features python
maturin develop --release --features python

Then verify that the same interpreter can import the package:

python -c "import sys, copp; print(sys.executable); print(copp.version())"

Sphinx Cannot Import copp_py

Install the package first with python -m pip install -U copp-py, or build the local checkout with cargo build --release --lib --features python followed by maturin develop --release --features python. Then run the Sphinx command using the same Python interpreter.

Native Build Fails

For source builds, 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.

Metadata

Release files for copp-py 0.2.3

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

Source distribution (sdist)

Source distribution for copp-py 0.2.3
File Size Uploaded
copp_py-0.2.3.tar.gz 737.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for copp-py 0.2.3
File
copp_py-0.2.3-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
copp_py-0.2.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
copp_py-0.2.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
copp_py-0.2.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
copp_py-0.2.3-cp314-cp314-macosx_10_13_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.13+ x86-64 Details
copp_py-0.2.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
copp_py-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
copp_py-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
copp_py-0.2.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
copp_py-0.2.3-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
copp_py-0.2.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
copp_py-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
copp_py-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
copp_py-0.2.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
copp_py-0.2.3-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
copp_py-0.2.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
copp_py-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
copp_py-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
copp_py-0.2.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
copp_py-0.2.3-cp311-cp311-macosx_10_13_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.13+ x86-64 Details
copp_py-0.2.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
copp_py-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
copp_py-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
copp_py-0.2.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
copp_py-0.2.3-cp310-cp310-macosx_10_13_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.13+ x86-64 Details
copp_py-0.2.3-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
copp_py-0.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
copp_py-0.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ ARM64 Details
copp_py-0.2.3-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
copp_py-0.2.3-cp39-cp39-macosx_10_13_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.13+ x86-64 Details

Total release size: 30.5 MB

Release files / copp_py-0.2.3.tar.gz

Download URL copp_py-0.2.3.tar.gz
Size 737.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c7a48a576cff54a2f2da8e72b0baa1c9f15b638673104e6db55325bf49f88fd9
BLAKE2b-256 checksum
How to use checksums
36520723cfb75295cedab94845d7360339b73935690e4969e103474fb47d7d1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp314-cp314-win_amd64.whl

Download URL copp_py-0.2.3-cp314-cp314-win_amd64.whl
Size 978.6 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
9e1cd2ba08c09eed38edeb84bcb4aa9a595efca6e8fdd50bffe6c59867728a7c
BLAKE2b-256 checksum
How to use checksums
8ac2ce536758143f571010ad7a9677fd4620408d4e1c9ecf3bc6bd8eee5d0b1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL copp_py-0.2.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ce36c2437234619b79e11f4eafad662e7d2f4ce33a9c801c6bde88cbab3752f2
BLAKE2b-256 checksum
How to use checksums
27f0c59b61aa7ba1511558ef25c5952ddfa82749424857dfc82611464f5c0b07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL copp_py-0.2.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 963.2 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
8ae5c7b9f2afde0f3dbe7c6f682a61d5caa3e1e3229eb92b9a075c804dab6333
BLAKE2b-256 checksum
How to use checksums
17a2e080f23dbf916fedd8d7708457c5cac0a7a133e252cf203123beb07969d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp314-cp314-macosx_11_0_arm64.whl

Download URL copp_py-0.2.3-cp314-cp314-macosx_11_0_arm64.whl
Size 944.0 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7d635ae134eb72df93a86a9d0fa1441ccff954e1a4055aa67b56985aa19a3dd9
BLAKE2b-256 checksum
How to use checksums
c498e43a1fd9dd639e15cb89b4cb42631104ae134754e0be00d52ae71156930d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp314-cp314-macosx_10_13_x86_64.whl

Download URL copp_py-0.2.3-cp314-cp314-macosx_10_13_x86_64.whl
Size 998.8 kB
Tags CPython 3.14 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
813e42208d98200f7b15abcac684451f5f89f0ee48b7cd05711b33f18c9878f9
BLAKE2b-256 checksum
How to use checksums
38bb06cf35ad123fc762129a0b85987bb7bd25418b99e22c1c4907c112b696d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp313-cp313-win_amd64.whl

Download URL copp_py-0.2.3-cp313-cp313-win_amd64.whl
Size 973.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
52ae28055d34ef956a0c773f2857a04bbd4c285994b86e1b40f7558dbbb1837a
BLAKE2b-256 checksum
How to use checksums
9e2f2f6f1e5166b4b824d0d24c44a4ad560eea353bc74bf616ff556801e0907d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL copp_py-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dd4b343a29fcd86a09e776b4f66e405343848b58fc617b0a01fdf604618653d2
BLAKE2b-256 checksum
How to use checksums
d00c1179aa2e3cc8597aba19576699eddc0db467397ebc8663d102a41b6a6ea9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL copp_py-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 958.3 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
5113f8c20a4f98247471f76613255d6fe60d4f2dc40c4149698e5a44123ea1cd
BLAKE2b-256 checksum
How to use checksums
93061a2f75cd1e54463b191becb6fa85198cf67942b2d70e30f2cf59afd77b7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL copp_py-0.2.3-cp313-cp313-macosx_11_0_arm64.whl
Size 944.2 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c7cae0f494254811a17ed06467801a954efc80112a19a98a71968756a0039a1e
BLAKE2b-256 checksum
How to use checksums
43c60b2511a58202c5fc3fece01a85e9e33c143ae9ab5e5ba6a7b7bb8b890423
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp313-cp313-macosx_10_13_x86_64.whl

Download URL copp_py-0.2.3-cp313-cp313-macosx_10_13_x86_64.whl
Size 996.4 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
73e2c77d8be3928e97dc26ad9287ea7bc10fc548b4730be231e1ebb4e31ee85c
BLAKE2b-256 checksum
How to use checksums
079e7c98b8da7d6bb7f0f299b536f3e137da1249670d40daf76a4b1f795683c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp312-cp312-win_amd64.whl

Download URL copp_py-0.2.3-cp312-cp312-win_amd64.whl
Size 973.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
633eb52474ac18a703c5f466b30e4e1f385b791ecda93e4d830a00ae6d1252eb
BLAKE2b-256 checksum
How to use checksums
eca6a68e24e28d1a6c9e7be138687f414b6092a22100fce9c2fa7af0c0a3ebfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL copp_py-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d958495c76d488306a0101adc307a30c94f87f0711ad97fffbe048f7a747d836
BLAKE2b-256 checksum
How to use checksums
b6bd690898649e43a8b08a38c64b3f3e8c6db841c01e610748319e6967b4177b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL copp_py-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 958.7 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
1b3fe5a76d342cbfdca82f1a673e9729ec0389daed1a828a09b14cbfd998fd02
BLAKE2b-256 checksum
How to use checksums
f38946388e6c06592c0e4c3ed802704650bbf02f677db36c2493b57f34750ba8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL copp_py-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
Size 944.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e97caa247fe46c2ecbd0170a9abee4951d88685f6b14312338de43d394b3fb8c
BLAKE2b-256 checksum
How to use checksums
ddc47b586ea0d979ebfd6fb78844b441f475d1036ba5152b7aeac775cb7c75ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp312-cp312-macosx_10_13_x86_64.whl

Download URL copp_py-0.2.3-cp312-cp312-macosx_10_13_x86_64.whl
Size 998.0 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
f139f605881802df1b8bca96f7473f5090b1f7728a18aa2b6f25f161483ceb0e
BLAKE2b-256 checksum
How to use checksums
6e11f648083baa47559b880935e14ff5ad0252cb2326af4b0ecb9deb02710a8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp311-cp311-win_amd64.whl

Download URL copp_py-0.2.3-cp311-cp311-win_amd64.whl
Size 985.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
05f2b72b6490df674174ab2a862afd3ae12d4414f569f01ff618b90c1131ffa4
BLAKE2b-256 checksum
How to use checksums
e2b1fc8f207d8e8e3cb2cb64d86dfbed7570e04a5db003f70aaeabaec0dc15b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL copp_py-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
271b5176dd029a5152019764817890006a840b1ed8476cce1ceeb5be7c864d92
BLAKE2b-256 checksum
How to use checksums
eb5973fba85f3e43600f6da937a6ce02a83dc24fcef28dc5b8d8b4fc063f423d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL copp_py-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 971.3 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
cb5692cf0c1fd9a5d318b8812150e9080aab661a4dbfdd2fa85ea69cfa5ae66d
BLAKE2b-256 checksum
How to use checksums
fb9716b20f1c9fbab0cc98d200ab08159d8e62c97878b597f7b8b14eeb8c20b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL copp_py-0.2.3-cp311-cp311-macosx_11_0_arm64.whl
Size 958.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b80de9229bf1e0cc5b99747297f985b13eff1f022a2ee14cd1c05d9647ae3928
BLAKE2b-256 checksum
How to use checksums
0832b030e20f6cfe444acb762be64f01f3696b5cf9d69b31821d95836bb65db1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp311-cp311-macosx_10_13_x86_64.whl

Download URL copp_py-0.2.3-cp311-cp311-macosx_10_13_x86_64.whl
Size 1.0 MB
Tags CPython 3.11 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
e6e9d3cf85df3ca07e5b01a70f94ab7a0ca7f02f99df121a47d853e9dc581a56
BLAKE2b-256 checksum
How to use checksums
de2217c4a078744d2af083f97826603889b234d17bdaee0f8e23dbb04f03127f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp310-cp310-win_amd64.whl

Download URL copp_py-0.2.3-cp310-cp310-win_amd64.whl
Size 983.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
81d2578f863dc42a1b178c6512773638eaf0bf268c87f2b04fed4790ea51f2db
BLAKE2b-256 checksum
How to use checksums
aad545d8d96a0927e6d17eea08f2c77dddaf002ff71a5e46dee3040156d3d3af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL copp_py-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
26958a9a8187d27133e3436f2dcecf3be702acf2a0fa5da737584c2464d9f1d5
BLAKE2b-256 checksum
How to use checksums
ed14145428343242ab6ea3970e4519b7c3d7c0c7a7b585ff8d7b0264b0039c12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL copp_py-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 971.1 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
47be83bcc002bcbb0ab5f978e8ce17a15151f7284a4201bb12a453dcbe0ac2a3
BLAKE2b-256 checksum
How to use checksums
3263729271b673279bf0972ca73c3a0cb5e613acd463613c4a95b0ed8700b2b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL copp_py-0.2.3-cp310-cp310-macosx_11_0_arm64.whl
Size 958.3 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ddc6daa848fb6284c64014e796a11e7646688dc86d35811ca21492828395202f
BLAKE2b-256 checksum
How to use checksums
55cd9ee100f750c8b5e68c8cd412e5dca2530f3d0e349bfd5f84b262a63ca38f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp310-cp310-macosx_10_13_x86_64.whl

Download URL copp_py-0.2.3-cp310-cp310-macosx_10_13_x86_64.whl
Size 1.0 MB
Tags CPython 3.10 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
a8de5ab2b0b4847a3af6e26b78cd394e916ae3d4d0ceb417f003076d6444bd84
BLAKE2b-256 checksum
How to use checksums
2e2ae7b305e37a2c3e05f8ea0e477bf9ed8f05d11c34e27b2e2077426a012de1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp39-cp39-win_amd64.whl

Download URL copp_py-0.2.3-cp39-cp39-win_amd64.whl
Size 986.7 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
6cede7afd07296d6346d79711ee84e12b8b89f8dde1e091c4cbcd43d9f696509
BLAKE2b-256 checksum
How to use checksums
efd2a33cdf38676060d7419e08ba07bddf269c38592ab764df3f9953abe7c2e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL copp_py-0.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
de4c94b300067b56378be8ed528ba9be60ea557e6bde78c2a891b89ee96f5d13
BLAKE2b-256 checksum
How to use checksums
dda03e582ba53d3d861d9ddfd781524570f11057170fb1cec36ef675b0d50c36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL copp_py-0.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 973.8 kB
Tags CPython 3.9 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
445fd65aefc7418ae8502f81b49a4794496d8cb2c51d701c4d8f124a9bf54238
BLAKE2b-256 checksum
How to use checksums
30fe29fa86c4cbf230c1558511f9e2804681fe9b2df23689b0f4f42b69d54f9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp39-cp39-macosx_11_0_arm64.whl

Download URL copp_py-0.2.3-cp39-cp39-macosx_11_0_arm64.whl
Size 961.4 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
02a3fac3c465fdfe46ab48c40e24affeb874fc0b71039c526c89461a116a63c4
BLAKE2b-256 checksum
How to use checksums
ecccc2333a82fab2b18b8b935f3a508f3702dba0ad2c75e7f10f766b8d97ac98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / copp_py-0.2.3-cp39-cp39-macosx_10_13_x86_64.whl

Download URL copp_py-0.2.3-cp39-cp39-macosx_10_13_x86_64.whl
Size 1.0 MB
Tags CPython 3.9 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
ba9574331cc5f2dabdb29abcd511b01005ad53bae1cc0005090cb5d0d5ed0315
BLAKE2b-256 checksum
How to use checksums
e04751704bb7e302fe3a7f37bf19bf258c01823a414e769539c95083b9e2779d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.3 This release

31 release files

0.2.1

14 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