Skip to main content

Python wrapper for qpmad

Project description

pyqpmad

A fast Python wrapper for qpmad, a C++ Quadratic Programming (QP) solver based on Goldfarb-Idnani's active-set method. pyqpmad is built using nanobind for high-performance Python bindings and Eigen for efficient linear algebra.

Features

  • Solves Unconstrained, Constrained, and Bounded Quadratic Programs.
  • Lightweight and fast wrapper utilizing nanobind.
  • Automatic compilation of dependencies (qpmad, eigen, nanobind) from source via CMake.

Examples

Comprehensive Example

Here is a complete example demonstrating how to configure solver parameters and solve a QP problem with simple bounds and general linear constraints, utilizing the full API.

import pyqpmad
import numpy as np

solver = pyqpmad.Solver()

# Problem definition (2 variables)
primal = np.zeros(2)

# Define the Hessian matrix (H) and linear term (h)
H = np.array([[2.0, 0.0], 
              [0.0, 2.0]], order='F')
h = np.array([-2.0, -2.0]) # Unconstrained minimum at [1.0, 1.0]

# Define simple bounds: 0.0 <= x_i <= 0.8
lb = np.array([0.0, 0.0])
ub = np.array([0.8, 0.8])

# Define the linear constraint: 1.0 <= x_0 + x_1 <= 1.5
A = np.array([[1.0, 1.0]], order='F')
Alb = np.array([1.0])
Aub = np.array([1.5])

# Configure solver parameters
params = pyqpmad.SolverParameters()
params.tolerance = 1e-8
params.max_iter = 100

# Solve with all constraints and parameters
status = solver.solve(primal, H, h, lb=lb, ub=ub, A=A, Alb=Alb, Aub=Aub, params=params)

if status == pyqpmad.ReturnStatus.OK:
    print(f"Optimal solution found: {primal}")
    print(f"Iterations: {solver.get_num_iterations()}")
    
    # Get active inequality duals
    duals = solver.get_inequality_dual()
    print(f"Active dual values: {duals.dual}")
    print(f"Active constraint indices: {duals.indices}")
else:
    print(f"Failed to solve. Status: {status}")

Control Loop Example (Zero Allocation & Hessian Reuse)

In high-frequency control loops (e.g., Model Predictive Control), you can pre-allocate the solver's internal workspace using reserve() and reuse arrays to avoid memory allocations. If the Hessian matrix $H$ is constant, you can also avoid re-factorizing it at every step by keeping its inverted Cholesky factor.

import pyqpmad
import numpy as np

num_variables = 2
num_simple_bounds = 2 # Length of lb/ub (must be 0 or num_variables)
num_general_constraints = 1 # Number of rows in A

solver = pyqpmad.Solver()
# Reserve memory: (primal_size, num_simple_bounds, num_general_constraints)
solver.reserve(num_variables, num_simple_bounds, num_general_constraints)

# Pre-allocate output array
primal = np.zeros(num_variables)

# Define constant terms
H = np.array([[2.0, 0.0], [0.0, 2.0]], order='F')
lb = np.array([-1.0, -1.0])
ub = np.array([1.0, 1.0])
A = np.array([[1.0, 1.0]], order='F')
Alb = np.array([-1.5])
Aub = np.array([1.5])

# Ask the solver to factorize H and return the inverted Cholesky factor 
# (this overwrites H with the factorization)
params = pyqpmad.SolverParameters()
params.return_inverted_cholesky_factor = True

# First solve to compute and store the factorization
h_initial = np.array([0.0, 0.0])
status = solver.solve(primal, H, h_initial, lb=lb, ub=ub, A=A, Alb=Alb, Aub=Aub, params=params)

# For subsequent solves, we tell the solver that H already contains the inverted Cholesky factor
params.hessian_type = pyqpmad.HessianType.HESSIAN_INVERTED_CHOLESKY_FACTOR
params.return_inverted_cholesky_factor = False # No need to factorize again

# Control loop (e.g., 1000 iterations)
h = np.zeros(num_variables)
for i in range(1000):
    # Only the linear term h (e.g., tracking error) changes in this control loop
    h[0] = np.sin(i * 0.01)
    h[1] = np.cos(i * 0.01)
    
    # Solve without memory allocation and without re-factorizing H
    status = solver.solve(primal, H, h, lb=lb, ub=ub, A=A, Alb=Alb, Aub=Aub, params=params)
    
    if status == pyqpmad.ReturnStatus.OK:
        # Apply optimal control action
        action = primal
    else:
        # Handle failure
        pass

Installation

You can install the package directly from PyPI using pip:

pip install qpmad

Building from Source

If you want to build the package from source, you can use uv or pip.

Using uv (Recommended)

You can easily build and install this package using uv, an extremely fast Python package installer and resolver.

To install it directly:

uv pip install .

To run the tests:

uv run --with pytest test_qpmad.py

Using pip

pip install .

To run tests with pip:

pip install pytest
pytest test_qpmad.py

Build Explanation

The build process is managed entirely by CMake. When you install the package from source (via pip or uv), CMake's FetchContent module is triggered to automatically download the required dependencies:

  • nanobind
  • eigen
  • qpmad

CMake then configures qpmad as an interface library linked with Eigen, and compiles the Python wrapper (qpmad_pywrap.cpp) using nanobind. Finally, Python type stubs (.pyi) are generated for IDE type hinting.

Release Pipeline

This project uses cibuildwheel integrated via GitHub Actions to automatically build wheels for Linux, macOS, and Windows.

Triggering a Release

To publish a new release to PyPI, tag the main branch with a version number starting with v (e.g., v1.0.0) and push the tag to GitHub:

git tag v1.0.0
git push origin v1.0.0

The GitHub Actions workflow will:

  1. Build sdist and wheels for all major platforms.
  2. Run tests on the generated wheels.
  3. Automatically publish the artifacts to PyPI.

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

pyqpmad-1.4.1.tar.gz (8.3 kB view details)

Uploaded Source

Built Distributions

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

pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14tWindows x86-64

pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pyqpmad-1.4.1-cp314-cp314-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows x86-64

pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pyqpmad-1.4.1-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyqpmad-1.4.1-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyqpmad-1.4.1-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyqpmad-1.4.1-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyqpmad-1.4.1.tar.gz.

File metadata

  • Download URL: pyqpmad-1.4.1.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyqpmad-1.4.1.tar.gz
Algorithm Hash digest
SHA256 7ff6cfd8eba5f9c98ee5b77974236a6183a52e7fbe733ed13e6838909f3950a4
MD5 7fec99224720ea26440e059bf2e25ca8
BLAKE2b-256 942bd939b78f93b37c348f70cb171afaf4d153d3a55430e9a54db2b967393f1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1.tar.gz:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.2 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 pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 4731dfbcb42cdae02f75347393f2cfa6ef9e64f282e2ba1d12df4a0d12c6cd8e
MD5 17c1f4f0ed8c8bd36ef0d9226eb3d793
BLAKE2b-256 14a5525e14bf4df5f4672a29e91f48841285cbd90390d33c4fcfe509440f68e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bffd41b36fa6cb8dd86de1280a098f744f99ea54cfd84f1d70da3c670999a46c
MD5 af06ec76c229d69a82874e20e88b2fa5
BLAKE2b-256 f49b210a00a8fd6fe4bbe80bb29c5abecdb98432fcfb44adb41b966aac0e504c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e06d1a931fcf5678c49a8319aa6921780a3d1dbaa7c8e04d00239cae3e1b9ce
MD5 066749d96ef2ddc2fd53d4adcd67a620
BLAKE2b-256 368b24586c14e86aea98dc5075c3f297f17086cd3d2b58864ae43081f54d217e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce272797857082478df63c46ec6a114ff5d24d0556904a04c3acc70381ec3ab3
MD5 a45f0411feca7443712a940c99ea833c
BLAKE2b-256 f44a27c9ca04c18a91cd2c03c2e415c5f4376e277ad5cdefb4dfebc0cbafbb60

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyqpmad-1.4.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.2 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 pyqpmad-1.4.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e9bfd02f65307d8d2bd10d69c53c2d19af2deca86a847e049a7b75da5883bb3a
MD5 c6b5a9e6cbf9c53d5f4770b3012a5a3c
BLAKE2b-256 4733a87a7683c8306ad03a71a079751f170e624203de801bf2ff497d3926fffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314-win_amd64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5dfaabbbf21391c53ce080676bb612f9004e366fed5ac5a0b8353bc2aad390f9
MD5 862fcb07e50996f430ac0ad1f2a9543f
BLAKE2b-256 a288d436fd8ea81a2bee395de70b2eddcbbaeb79411a5f0345a7feee0712da4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de2a18ebce8eeca0903f3c4750370d834cc37b97ec4512b5dba78ae4ef0bfc3d
MD5 704142fbad1d96863d5cd976faab5822
BLAKE2b-256 8eb42674db2463af034de1e414c69d17af8b2c1b2a4cd103225c541683715885

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebfcab1e9645cc38f44cdcc7525a9a72d817784742623f9960cc8b6e4203f124
MD5 2adde99ef259268baa0ebe4f3ace33a2
BLAKE2b-256 c6e30503cfe4c8625717e68fbe3a0eda421dd8b0b852b3440f08558675bc902a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyqpmad-1.4.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.2 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 pyqpmad-1.4.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 98197b560ec3d074b33feb10ae65831d9c80a7909a2f3ca98b72c7c37ef83772
MD5 3c3ab4e38077bdaec3cabcdff8883806
BLAKE2b-256 9c9f6cd735dc4941abe89bbe90155e869a297713af58f500b454399823aa78e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a7dbd17c8c30ed73abda1cda835341e11e04fc0dfff09d59b6af007f0f8bbff4
MD5 3c94380488c137abbddde1c6b4dba3e5
BLAKE2b-256 04964a733e652e9bdeee5c828ecabc8ddbf17518549f57243c2c7a775306b112

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c4d5986e9f12d4b387239a2c282ee8517cde5544aac94011dba4f1932205534
MD5 c6dac4f2976a21a39c37886394e3b316
BLAKE2b-256 fbdc332292445b79c4cce3470b745b215341c4dca28a57997989d8ca7819a09b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce4ce68bfb51193e0c157ce1f7e280991adcfc07f47315cda626500fbc0e5bbd
MD5 b1870f69091191a88166389d88c9e99d
BLAKE2b-256 05d6d47b646a8d913bfbbaa3e6d2f713e1cb106b45eb02491bbb925d49901d07

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyqpmad-1.4.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.2 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 pyqpmad-1.4.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 eb59f6207041d88ab531d9cc24bf760fb2ace8d43681c15ae2a0b552d20c22d6
MD5 619955144f7521639e52e28e296896c1
BLAKE2b-256 8127570c52c5d95903ea68e954e50cb7299c0e7070c7ea8392eba4f53bd4f990

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e82103a229864938b63a69023f3554ecde00b127608a3b321771bd202ef184fd
MD5 cfb1790c2c7f8f097f5644a9575bec16
BLAKE2b-256 bdebf74827da41051aa807c54b8eaa102d0d2ec4fc64644b57618d2c7b764c7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 65bf66f1f87da4ca93b19ed5f0bfeb1d743def81e7a3b9aca245ca34b828ff58
MD5 be8ee7fe40d7bbf0422691eb811b5d74
BLAKE2b-256 1cbda465be0fab0b038def9aa1349e2384fefea5c4893b913b538a98aa95b589

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 610a7fded32ec1f98db097b100d39b4c9aa877afbc4188ba5d1975737567e180
MD5 72224597376f8762644e950f79556a47
BLAKE2b-256 b98de13f5b82d41d05cdb77bf26eb5e89788dd316c7a0de97497c9ad011d086b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyqpmad-1.4.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.2 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 pyqpmad-1.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8287cd3205f90677ef9dd6f3412f08d172231e7a80a5a256f8e6129540f50a87
MD5 27d274888c97d106576e3522862dab92
BLAKE2b-256 e9a84e8fe198cf8bd6a34d29a0af46773db8fc117b93fce27c5d265123d0f57c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5c9b6d610fb02cd154c76297d7193093471ee9f0daee424de31d256bbc03c563
MD5 198da7424ff78498edbd2e74124fc7ec
BLAKE2b-256 16ed534149dbaac61d2f41b0b97575803b8ae3b39761c2400111cc46ceb6ec3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6aa272e4bb5745c635a220415420ae063ee2e556c41275666e684e163bca295d
MD5 9b9d0946aebe50388499eec63e423cf2
BLAKE2b-256 aa0848348cb06d0c362048ae6aeb1891f9341e5028804022bb6e03349b5f7a50

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9b2b09157d171b214b6120cc2235254bb52da7f18add742ef22d55b9dad5b93
MD5 6baa109f1bd17bbe2cac9e93ffa549e1
BLAKE2b-256 1bf0ff65f62fab7baf0dfd5fc148a68c61402b2c08b5ff6a4271105f99d83dab

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyqpmad-1.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyqpmad-1.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 765fa2b1508cfbac2348095d9a74422608d3ce01be7bf49620da4a922b04aaa5
MD5 2e51c9df9a5cd2b945de5d6db4fdc3c2
BLAKE2b-256 d974aaaea09fb4e7f6948cef3ee449d23834342565835cd062c4ce88b36fb919

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b135f9f58e38e7ab6861c1f6d80cd984f1d603548524f0a95cf27cf49abd1e73
MD5 cb940ad5c7679f5448db6c3840fcb65e
BLAKE2b-256 34806a80b05a597220fe8c944f82736b2abc765d0b0cb60644bb6f79bbbe4f71

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 33baac16ffe9e611d84ee9d6ce72457d61c1ff1983f1c3c5085326ff57631b47
MD5 459dab4d0197265f39d9f981b6ac4493
BLAKE2b-256 d8a214a4cf2bfe2c5fbab60143b4d7ad92b23b1e27d7d2f55882861c136e1c10

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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

File details

Details for the file pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19ecfdf06e60cd81b7a27a0d89853439ba4826db7abc2f0481f7167bdcf8d05b
MD5 76fc664d801330cf7afeb0b39129d61f
BLAKE2b-256 0902c8513f11d64c5781cff6d2f61bda29f137d48abcdc4f4db482ca137aae33

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahoarau/pyqpmad

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