Skip to main content

Python bindings for the ZonoOpt C++ library

Project description

ZonoOpt

This C++ library provides classes and tailored optimization routines for zonotopes, constrained zonotopes, and hybrid zonotopes.

C++ build

Python build

image image

Zonotopes, Constrained Zonotopes, and Hybrid Zonotopes

Zonotopes and their generalizations are set representations widely used for reachability analysis. A major advantage of these set representations when compared to alternatives such as halfspace representation (H-rep) or vertex representation (V-rep) polytopes is that they have efficient identities for many important set operations. This makes them well-suited to contexts where efficient online set computations are required, such as online safety verification and set-valued state estimation.

This library focuses specifically on zonotopes, constrained zonotopes, and hybrid zonotopes. A set $\mathcal{Z}$ is a zonotope if there exist a generator matrix $G$ and center vector $c$ such that

$$ \mathcal{Z} = \left\lbrace G \xi + c \; : \; \xi \in [-1, 1]^{nG} \right\rbrace \;. $$

Zonotopes represent centrally symmetric, convex polytopes.

image

A set $\mathcal{Z}_C$ is a constrained zonotope if there additionally exist a constraint matrix $A$ and constraint vector $b$ such that

$$ \mathcal{Z}_C = \left\lbrace G \xi + c \; : \; \xi \in [-1, 1]^{nG}, A \xi = b \right\rbrace \;. $$

Constrained zonotopes represent convex polytopes.

image

Hybrid zonotopes extend constrained zonotopes by allowing for a subset of the factors $\xi$ to be binary-valued, i.e., $\xi = [\xi_c \quad \xi_b]^T$ where $\xi_c \in [-1, 1]^{nGc}$ and $\xi_b \in \lbrace -1, 1 \rbrace^{nGb}$. A set $\mathcal{Z}_H$ is then a hybrid zonotope if there exist generator matrices $G_c$ and $G_b$, center $c$, constraint matrices $A_c$ and $A_b$, and constraint vector $b$ such that

$$ \mathcal{Z}_H = \left\lbrace \begin{bmatrix} G_c & G_b \end{bmatrix} \begin{bmatrix} \xi_c \\ \xi_b \end{bmatrix} + c \; : \; \begin{matrix} \xi_c \in [-1, 1]^{nGc},\; \xi_b \in \lbrace -1, 1 \rbrace^{nGb}, \\ \begin{bmatrix} A_c & A_b \end{bmatrix} \begin{bmatrix} \xi_c \\ \xi_b \end{bmatrix} = b \end{matrix} \right\rbrace \;. $$

Hybrid zonotopes represent unions of convex polytopes.

image

ZonoOpt Features

The ZonoOpt library provides classes and set operations for zonotopes, constrained zonotopes, and hybrid zonotopes. For cases where numerical optimization is required, e.g., checking if a set is empty or solving an MPC problem where the constraints are represented as a zonotopic set, custom optimization routines are utilized. Some key features of the ZonoOpt library are as follows:

  • All classes and methods are implemented using sparse linear algebra via the Eigen library.
  • ZonoOpt has no external dependencies beyond Eigen and Boost, making it easy to integrate into robotics projects using C++ or Python.
  • Polymorphism is used to provide a common interface for zonotopes, constrained zonotopes, and hybrid zonotopes while allowing for specialized implementations.
    • E.g., support is more efficient for zonotopes than for constrained zonotopes.
  • Factors are flexibly defined as either $[\xi_c \quad \xi_b]^T \in [0,1]^{nGc} \times \lbrace 0,1 \rbrace^{nGb}$ or the more standard form $[\xi_c \quad \xi_b]^T \in [-1,1]^{nGc} \times \lbrace -1,1 \rbrace^{nGb}$ to facilitate certain set operations.
  • Interval arithmetic is provided via the Interval, Box, and IntervalMatrix classes.
    • Boost's interval library is used within Interval for most of the fundamental operations.

Building and Installing

Python bindings can be installed from PyPI with pip install zonoopt. To build the bindings from source, use pip install .. Note that a C++ compiler is required to build from source.

This library can be used in CMake projects either via add_subdirectory or by installing the library. When building the library for installation, you must set the option ZONOOPT_INSTALL to ON, i.e., cmake -DZONOOPT_INSTALL=ON -S . -B build.

Example CMake usage is as follows:

cmake_minimum_required(VERSION 3.15...3.27)
project(your_project)
add_executable(your_project
        your_project.cpp
)

# Using add_subdirectory
add_subdirectory(ZonoOpt)

# If installed, find the package instead
# find_package(ZonoOpt REQUIRED)

target_link_libraries(your_project PRIVATE ZonoOpt)

Examples

Consider the case that we wish to compute the robust forward reachable set of a discrete time double integrator system and verify that it does not intersect an unsafe set. We may do this in Python as follows:

import zonoopt as zono
import numpy as np
import matplotlib.pyplot as plt

# System dynamics
dt = 0.1
A = np.array([[1., dt],
              [0., 1.]])
B = np.array([[0.5*dt**2],
              [dt]])

# Initial set: box [-1.0, 1.0] x [-0.1, 0.1]
X0 = zono.interval_2_zono(zono.Box([-1., -0.1], [1., 0.1]))

# Input set: box [-0.2, 0.2]
U = zono.interval_2_zono(zono.Box([-0.2], [0.2]))

# Disturbance set: affine map of octagon
W = zono.make_regular_zono_2D(radius=1., n_sides=8)
W = zono.affine_map(W, np.diag([0.01, 0.05]))

# Compute reachable set over 10 time steps
X = X0
for k in range(10):
    X = zono.affine_map(X, A)
    X = zono.minkowski_sum(X, zono.affine_map(U, B))
    X = zono.minkowski_sum(X, W)

# Unsafe set
O = zono.vrep_2_conzono(np.array([[1.3, 0.],
                                  [1.6, 0.8],
                                  [2.0, -0.4],
                                  [2.3, 0.6]]))

# Check for intersection with unsafe set
print(f'10-step reachable set intersects unsafe set: {not zono.intersection(X, O).is_empty()}')

# Plot the final reachable set
fig, ax = plt.subplots(figsize=(4, 3), layout='tight')
h = []
h.append(zono.plot(X, ax=ax, color='b', alpha=0.2)[0])
h.append(zono.plot(O, ax=ax, color='r', alpha=0.2)[0])
ax.legend(h, ['X', 'O'])
plt.show()

image

Equivalently, these calculations can be performed in C++ as follows:

#include "ZonoOpt.hpp"
#include "Eigen/Dense"
#include "Eigen/Sparse"
#include <iostream>

int main()
{
    // System dynamics
    double dt = 0.1;
    Eigen::Matrix<double, 2, 2> A;
    A << 1, dt,
         0, 1;
    Eigen::Matrix<double, 2, 1> B;
    B << 0.5*dt*dt,
         dt;

    // Initial set: box [-1.0, 1.0] x [-0.1, 0.1]
    Eigen::Vector2d x0_min, x0_max;
    x0_min << -1.0, -0.1;
    x0_max <<  1.0,  0.1;
    ZonoOpt::ZonoPtr X0 = ZonoOpt::interval_2_zono(ZonoOpt::Box(x0_min, x0_max));

    // Input set: box [-0.2, 0.2]
    Eigen::Vector<double, 1> u_min, u_max;
    u_min << -0.2;
    u_max <<  0.2;
    ZonoOpt::ZonoPtr U = ZonoOpt::interval_2_zono(ZonoOpt::Box(u_min, u_max));

    // Disturbance set: affine map of octagon
    ZonoOpt::ZonoPtr W = ZonoOpt::make_regular_zono_2D(1.0, 8);
    Eigen::SparseMatrix<double> W_map(2, 2);
    W_map.insert(0, 0) = 0.01;
    W_map.insert(1, 1) = 0.05;
    W = ZonoOpt::affine_map(*W, W_map);

    // Compute reachable set over 10 time steps
    ZonoOpt::ZonoPtr X = std::move(X0);
    for (int k=0; k<10; ++k)
    {
        X = ZonoOpt::affine_map(*X, A.sparseView());
        X = ZonoOpt::minkowski_sum(*X, *ZonoOpt::affine_map(*U, B.sparseView()));
        X = ZonoOpt::minkowski_sum(*X, *W);
    }

    // Unsafe set
    Eigen::Matrix<double, 4, 2> verts;
    verts << 1.3, 0.0,
             1.6, 0.8,
             2.0, -0.4,
             2.3, 0.6;
    ZonoOpt::ZonoPtr O = ZonoOpt::vrep_2_conzono(verts);

    // Check for intersection with unsafe set
    std::cout << "10-step reachable set intersects unsafe set: "
              << (!ZonoOpt::intersection(*X, *O)->is_empty() ? "true" : "false") << std::endl;
    
    return 0;
}

Further Python examples are located in /examples.

Documentation

Auto-generated API documentation is available below.

C++ API

Python API

References

More information about ZonoOpt can be found in the following publications. Please cite one or both of these as appropriate if you use ZonoOpt in your published work:

Robbins, J.A., Siefert, J.A., and Pangborn, H.C., "Sparsity-Promoting Reachability Analysis and Optimization of Constrained Zonotopes," 2025. https://arxiv.org/abs/2504.03885.

Robbins, J.A., Thompson, A.F., Glunt, J.J., and Pangborn, H.C., "Hybrid System Planning using a Mixed-Integer ADMM Heuristic and Hybrid Zonotopes", 2026. https://arxiv.org/abs/2602.17574

See Also

For MATLAB users, zonoLAB provides classes and set operations for zonotopes, constrained zonotopes, and hybrid zonotopes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zonoopt-2.1.0.tar.gz (8.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

zonoopt-2.1.0-cp314-cp314t-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.14tWindows x86-64

zonoopt-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

zonoopt-2.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zonoopt-2.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

zonoopt-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

zonoopt-2.1.0-cp314-cp314t-macosx_10_13_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14tmacOS 10.13+ x86-64

zonoopt-2.1.0-cp314-cp314-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.14Windows x86-64

zonoopt-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

zonoopt-2.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zonoopt-2.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

zonoopt-2.1.0-cp314-cp314-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

zonoopt-2.1.0-cp314-cp314-macosx_10_13_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 10.13+ x86-64

zonoopt-2.1.0-cp313-cp313-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.13Windows x86-64

zonoopt-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

zonoopt-2.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zonoopt-2.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

zonoopt-2.1.0-cp313-cp313-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

zonoopt-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

zonoopt-2.1.0-cp312-cp312-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.12Windows x86-64

zonoopt-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

zonoopt-2.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zonoopt-2.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

zonoopt-2.1.0-cp312-cp312-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zonoopt-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

zonoopt-2.1.0-cp311-cp311-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.11Windows x86-64

zonoopt-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

zonoopt-2.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zonoopt-2.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

zonoopt-2.1.0-cp311-cp311-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

zonoopt-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file zonoopt-2.1.0.tar.gz.

File metadata

  • Download URL: zonoopt-2.1.0.tar.gz
  • Upload date:
  • Size: 8.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zonoopt-2.1.0.tar.gz
Algorithm Hash digest
SHA256 2e057a2cce49abc70862481e50200991416201f735fb6a6162a908a96400f3bc
MD5 d4688749e3eed1ad9157f35cb15d28e9
BLAKE2b-256 f879264953fd40ab95de6dbb1e0dd29e80bc837e809439ab2522217e88dd8b7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0.tar.gz:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: zonoopt-2.1.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 fee13996ece0ce31eb0471546cf742b5508ca97d5019d75c79bdff30e0c3ffd0
MD5 4122e03c507e58377b43246441cd1738
BLAKE2b-256 569676a56ebb5d62d6670dfa1237520d4cb2e0a8a05d0a86679dcd1a332addc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314t-win_amd64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 21a1ab63b1d89631eff708c3a5a47d7dca68e6820979f1c39c2e520fcf1683ce
MD5 ad6a2afe5893e7031da170d562cd002e
BLAKE2b-256 d52602cf224f45e94d03b4fb15629da5f2b9870d6000814c5777d6944d7a2777

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 968ef33c0c725a0d4355ddfd626b4d302d3797d29c5a1228b7cbe9431ddc4dfd
MD5 21c8d2a17274fc34f6a4047539be1755
BLAKE2b-256 6c7dea241e3183549909fa45e2174f4f30667527132f67f79b5d81c5cdc4b6c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 69e891ddb103dcc80ef6ab568075ae482be37cef000017c58dc97ed87aa71773
MD5 2f017f480e1a66d17e35493155cd8f5b
BLAKE2b-256 39286b9ede3a960e6248fd3efef0a4b65c243c5ef0ac8b1959bf7669dcab2034

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cbd7b565ad68c517883c98aeab361781f8ebd38afaffb00b32b10d8c554ddcbc
MD5 e47f4320487da4eef20539d268bcfd2c
BLAKE2b-256 6db3d9a22c40999db76bb32909fcbf2de15af935691fc929118d878bed83155e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f5c9a303d5f2b1d9c3a4e035e7fc7b33817caa0f8a7ca773eeaced0f1e7f0132
MD5 ba75b5f8542a115e93fc29d7b6745307
BLAKE2b-256 e22233fb9de87ab8f6810366ed39979853f5742c1abcf2b36acfb33881983477

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314t-macosx_10_13_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: zonoopt-2.1.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c004319b6b614d05fb93454e14176c69eceb807216b171d234219208535721dc
MD5 2b5f3e3f0859bdba56248f650c81a4af
BLAKE2b-256 770cef344900f7eb12b3937821fb71455d0f4910e98f68dd2650f23eab5ccd68

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314-win_amd64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 55d50a9225979077d544bb90cb8b7e27ef3cd9e9256107a224d0c73563b33845
MD5 01d6b0b099e29f2bf699c97efba812b9
BLAKE2b-256 40c950d7f128f6a19e018df85c92127821247e81b8b81bad18afe4a4b96c9611

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 abd4f6220f88ea2da8ff121097e8f703db6cfe3f3d82725515256f2a43aa93e6
MD5 4e2fe5bc1a93711f73d11800ae511a6a
BLAKE2b-256 87ea4e550096465cee603032c1f192f4dbd3d6ebee6bf2bfc8ba40b7bc95ecd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f092015772e71a469296027522c2b3cca4e1a0ccba62f57abd082ff07f4e2883
MD5 924b347297678c78a25f29586c68ca79
BLAKE2b-256 159d80f84eb8098e57db48f1cb9520e150fb0dfd5a5bb087f0e7bf8bb01d272c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8132851c34b6187d36cb591a68d233c52080ae4cff28336f88150aac76c80c7b
MD5 456f68ba8c2883952126d33d870a990d
BLAKE2b-256 3e8ad528713732c59f62b453151ef2dabf2a4b0d50c0dab16762e8217b4bc6c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp314-cp314-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4ad93d8bc57aefecf0b2ff1066e5698a371b79771e27a8e97720f4a92b2106a9
MD5 159f1b3039c330fa378315f39ef1bd08
BLAKE2b-256 05793d25cde633469d898ad49191a96554a305ab4a3a5f02e1ea21b8f83d4534

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp314-cp314-macosx_10_13_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: zonoopt-2.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zonoopt-2.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1c94328fa35bbccead14b0869e069b58703e62b74fb259ae89a88d6fcef5b40c
MD5 e89a8928eb640f531fe1bd574e1c5cc8
BLAKE2b-256 084b755ae396d97fa6d96565c807d650b79781da13540c2c62674c5c317b6782

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp313-cp313-win_amd64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fb33df7acbe551003f04d889b1498533f8807bf0a5955801d403b1de719e41f1
MD5 103901b60d6cd1e24741d352fd17d6cb
BLAKE2b-256 331464165e2a86c0fb893e4135441f607c9319773a3df7afa80bf313554b138c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 506c04b58980c1427807a924b9b1edc24d2ac0d0f6a66a8f87c3138920aba561
MD5 4d89d0ecb0f776d53bebc59e10a2519f
BLAKE2b-256 85f835bfe91d10efc6bc532ec8bc83500e51138d312b13d7ac1723ca620ee8b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4b821d81cb3486dbdb74bfcccdc5e813118a605ef2d4586c98c6d32497811214
MD5 714441a4c6c8585cf2fe8d15cf9ea9c2
BLAKE2b-256 bffa858b2e575e16aacaa63292251b3cd64c50b5a2dd82dcb86af42c0323be90

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d2e3c802f86eaf17db5ecf8d47852e870062d93226a6719c24e92760a95c085
MD5 ec9f063e9019824cdc05dda3a0c0000b
BLAKE2b-256 8e4b78c772b99ac89ba27df1b9459ee710acdc161f2fb7baca4b6595772c4e84

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 31b58c333192b49a420b9d46989903ccb3fa05cb305da52964c323a13be4f7e4
MD5 07826115a46ad7b020c4dab2b05b93e6
BLAKE2b-256 0461743728c083268ca1cb34e11843eb39d33a7a62cf59b2ef5022f2a95af4c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: zonoopt-2.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zonoopt-2.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2c5053bce15d364d84661bf9043730fe71171adac32ce90930f1f9f40ea4220c
MD5 b9a6ee5540d8e6d2fcd66f70aa45772c
BLAKE2b-256 76bcc4449ff270bc96c06a807f6b27197611079f67398644061868dde689398a

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp312-cp312-win_amd64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5f34f3c7353a653ea563866019f480840d9b74dfa0aa128c87a314ba3f2aa0ba
MD5 29c297f4b6296f36228eb8f8d0eafe41
BLAKE2b-256 b94d8caaefd6ca9269ca556453a52a57f52dceffc9f2e159f06d87c9636330ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c244d9706fe3482aab3e3cfe79aedb199d9f417defaf5d38c739d6feb467aafa
MD5 6a5d62c38e89ab39378acfe8853e32e7
BLAKE2b-256 87729d12067942dbafb24f1be5c380e1d93b632bd8e147c310048433b4ef5232

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 61e374105f475a4a9328d348693c46224b5fb8fd5e2e08d6024676a04052865e
MD5 76d9e1694cc1f1715c9b2370b3a48da3
BLAKE2b-256 499113a378a706f5211ae2df04b09ab182de1baf613e5ad3eba57fd29805bcf4

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c603f1160c937b3a07111394badeec6e11dd6d0060e89d5197ec5dbe6a27d471
MD5 3a776a2bc58df1101285d38bf42fa63e
BLAKE2b-256 5faaf619389ad5613c36bac875311e552ec91f513b9096a65c1e8588589b36f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b468378549ce12b968a7e042abb7f96880485d9787d73fc227b808e59ab97413
MD5 201d14fd572673df71bdbc065050b9ce
BLAKE2b-256 9e056ed453070e38f562c76f7ce0c730bf49fbed307636d8947a83df9016e64d

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: zonoopt-2.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zonoopt-2.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ddfbdbca8e66f1f47854a86d792917b16aa06737bf174791a280906f30926bc9
MD5 06198b902717fd8c5aa1855d1511a0ef
BLAKE2b-256 b5a83d91e6dabe51dd4e243310a6c1907242e24260669d8183391cd6a9af99b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp311-cp311-win_amd64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 edda0815464a24d8ee25f5a4ddaa42c8931a66f5ffa3705006dfe5e237f822d0
MD5 fa67d51bff3ef1c02c2d74afb0c5746e
BLAKE2b-256 25a4c828c33923b2746085fef1403dd3f3f3841b1fd8292198fb7175992c5a8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d2a207b55a3f036e3c8e0a68ed59ad08342d43adac4bbac15a9210b727e31bf
MD5 3e0a4ab9e6a3bf86c86c3bfeee2c99d0
BLAKE2b-256 26d27f1feced7f5f52cafbb6d51fc3424f4d8f567e79a7c2bcb060c1e3897170

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1f784452af9e8d74c9e4940d658e596093f84032e1a208a7b5061226f6ab4045
MD5 c81639fe7306ead1a37f0d1820c335f5
BLAKE2b-256 ae8060af0a14529921e7bf1c6dc0dcf10fa8d22a49db98903816fe3ee58dd843

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df572bcda63efbb8e39b56ee4ca64e49809f4659efda5245e18b130155be326f
MD5 548548ad4e4d74fa76385c2c543ada0b
BLAKE2b-256 a7979b7bce17f0bca8176e7d42c1a3b0e3810c95ec013d6ef0ccaff4a7475ce3

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zonoopt-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zonoopt-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9131ed0195795aceb67674fbc8de9da7dde386e71e048e7beef5d8ea39d9f0e4
MD5 b69789e2e9cc9378dc1cc9ae31c71b14
BLAKE2b-256 9b0e7f58897e6fb14cdb52dcd09bfb2207416abcdc4733ec869a0b8e3f9492a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zonoopt-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: python_build.yml on psu-PAC-Lab/ZonoOpt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page