Skip to main content

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.

Metadata

Release files for pyqpmad 1.4.1

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

Source distribution (sdist)

Source distribution for pyqpmad 1.4.1
File Size Uploaded
pyqpmad-1.4.1.tar.gz 8.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyqpmad 1.4.1
File
pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
pyqpmad-1.4.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
pyqpmad-1.4.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pyqpmad-1.4.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pyqpmad-1.4.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pyqpmad-1.4.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 55.9 MB

Release files / pyqpmad-1.4.1.tar.gz

Download URL pyqpmad-1.4.1.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7ff6cfd8eba5f9c98ee5b77974236a6183a52e7fbe733ed13e6838909f3950a4
BLAKE2b-256 checksum
How to use checksums
942bd939b78f93b37c348f70cb171afaf4d153d3a55430e9a54db2b967393f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl

Download URL pyqpmad-1.4.1-cp314-cp314t-win_amd64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
4731dfbcb42cdae02f75347393f2cfa6ef9e64f282e2ba1d12df4a0d12c6cd8e
BLAKE2b-256 checksum
How to use checksums
14a5525e14bf4df5f4672a29e91f48841285cbd90390d33c4fcfe509440f68e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL pyqpmad-1.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
bffd41b36fa6cb8dd86de1280a098f744f99ea54cfd84f1d70da3c670999a46c
BLAKE2b-256 checksum
How to use checksums
f49b210a00a8fd6fe4bbe80bb29c5abecdb98432fcfb44adb41b966aac0e504c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyqpmad-1.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7e06d1a931fcf5678c49a8319aa6921780a3d1dbaa7c8e04d00239cae3e1b9ce
BLAKE2b-256 checksum
How to use checksums
368b24586c14e86aea98dc5075c3f297f17086cd3d2b58864ae43081f54d217e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl

Download URL pyqpmad-1.4.1-cp314-cp314t-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ce272797857082478df63c46ec6a114ff5d24d0556904a04c3acc70381ec3ab3
BLAKE2b-256 checksum
How to use checksums
f44a27c9ca04c18a91cd2c03c2e415c5f4376e277ad5cdefb4dfebc0cbafbb60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314-win_amd64.whl

Download URL pyqpmad-1.4.1-cp314-cp314-win_amd64.whl
Size 2.2 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
e9bfd02f65307d8d2bd10d69c53c2d19af2deca86a847e049a7b75da5883bb3a
BLAKE2b-256 checksum
How to use checksums
4733a87a7683c8306ad03a71a079751f170e624203de801bf2ff497d3926fffd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL pyqpmad-1.4.1-cp314-cp314-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5dfaabbbf21391c53ce080676bb612f9004e366fed5ac5a0b8353bc2aad390f9
BLAKE2b-256 checksum
How to use checksums
a288d436fd8ea81a2bee395de70b2eddcbbaeb79411a5f0345a7feee0712da4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyqpmad-1.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
de2a18ebce8eeca0903f3c4750370d834cc37b97ec4512b5dba78ae4ef0bfc3d
BLAKE2b-256 checksum
How to use checksums
8eb42674db2463af034de1e414c69d17af8b2c1b2a4cd103225c541683715885
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL pyqpmad-1.4.1-cp314-cp314-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ebfcab1e9645cc38f44cdcc7525a9a72d817784742623f9960cc8b6e4203f124
BLAKE2b-256 checksum
How to use checksums
c6e30503cfe4c8625717e68fbe3a0eda421dd8b0b852b3440f08558675bc902a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp313-cp313-win_amd64.whl

Download URL pyqpmad-1.4.1-cp313-cp313-win_amd64.whl
Size 2.2 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
98197b560ec3d074b33feb10ae65831d9c80a7909a2f3ca98b72c7c37ef83772
BLAKE2b-256 checksum
How to use checksums
9c9f6cd735dc4941abe89bbe90155e869a297713af58f500b454399823aa78e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyqpmad-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a7dbd17c8c30ed73abda1cda835341e11e04fc0dfff09d59b6af007f0f8bbff4
BLAKE2b-256 checksum
How to use checksums
04964a733e652e9bdeee5c828ecabc8ddbf17518549f57243c2c7a775306b112
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyqpmad-1.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6c4d5986e9f12d4b387239a2c282ee8517cde5544aac94011dba4f1932205534
BLAKE2b-256 checksum
How to use checksums
fbdc332292445b79c4cce3470b745b215341c4dca28a57997989d8ca7819a09b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyqpmad-1.4.1-cp313-cp313-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ce4ce68bfb51193e0c157ce1f7e280991adcfc07f47315cda626500fbc0e5bbd
BLAKE2b-256 checksum
How to use checksums
05d6d47b646a8d913bfbbaa3e6d2f713e1cb106b45eb02491bbb925d49901d07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp312-cp312-win_amd64.whl

Download URL pyqpmad-1.4.1-cp312-cp312-win_amd64.whl
Size 2.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
eb59f6207041d88ab531d9cc24bf760fb2ace8d43681c15ae2a0b552d20c22d6
BLAKE2b-256 checksum
How to use checksums
8127570c52c5d95903ea68e954e50cb7299c0e7070c7ea8392eba4f53bd4f990
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyqpmad-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e82103a229864938b63a69023f3554ecde00b127608a3b321771bd202ef184fd
BLAKE2b-256 checksum
How to use checksums
bdebf74827da41051aa807c54b8eaa102d0d2ec4fc64644b57618d2c7b764c7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyqpmad-1.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
65bf66f1f87da4ca93b19ed5f0bfeb1d743def81e7a3b9aca245ca34b828ff58
BLAKE2b-256 checksum
How to use checksums
1cbda465be0fab0b038def9aa1349e2384fefea5c4893b913b538a98aa95b589
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyqpmad-1.4.1-cp312-cp312-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
610a7fded32ec1f98db097b100d39b4c9aa877afbc4188ba5d1975737567e180
BLAKE2b-256 checksum
How to use checksums
b98de13f5b82d41d05cdb77bf26eb5e89788dd316c7a0de97497c9ad011d086b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp311-cp311-win_amd64.whl

Download URL pyqpmad-1.4.1-cp311-cp311-win_amd64.whl
Size 2.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8287cd3205f90677ef9dd6f3412f08d172231e7a80a5a256f8e6129540f50a87
BLAKE2b-256 checksum
How to use checksums
e9a84e8fe198cf8bd6a34d29a0af46773db8fc117b93fce27c5d265123d0f57c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyqpmad-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5c9b6d610fb02cd154c76297d7193093471ee9f0daee424de31d256bbc03c563
BLAKE2b-256 checksum
How to use checksums
16ed534149dbaac61d2f41b0b97575803b8ae3b39761c2400111cc46ceb6ec3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyqpmad-1.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6aa272e4bb5745c635a220415420ae063ee2e556c41275666e684e163bca295d
BLAKE2b-256 checksum
How to use checksums
aa0848348cb06d0c362048ae6aeb1891f9341e5028804022bb6e03349b5f7a50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyqpmad-1.4.1-cp311-cp311-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c9b2b09157d171b214b6120cc2235254bb52da7f18add742ef22d55b9dad5b93
BLAKE2b-256 checksum
How to use checksums
1bf0ff65f62fab7baf0dfd5fc148a68c61402b2c08b5ff6a4271105f99d83dab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp310-cp310-win_amd64.whl

Download URL pyqpmad-1.4.1-cp310-cp310-win_amd64.whl
Size 2.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
765fa2b1508cfbac2348095d9a74422608d3ce01be7bf49620da4a922b04aaa5
BLAKE2b-256 checksum
How to use checksums
d974aaaea09fb4e7f6948cef3ee449d23834342565835cd062c4ce88b36fb919
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyqpmad-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl
Size 2.7 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
b135f9f58e38e7ab6861c1f6d80cd984f1d603548524f0a95cf27cf49abd1e73
BLAKE2b-256 checksum
How to use checksums
34806a80b05a597220fe8c944f82736b2abc765d0b0cb60644bb6f79bbbe4f71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pyqpmad-1.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
33baac16ffe9e611d84ee9d6ce72457d61c1ff1983f1c3c5085326ff57631b47
BLAKE2b-256 checksum
How to use checksums
d8a214a4cf2bfe2c5fbab60143b4d7ad92b23b1e27d7d2f55882861c136e1c10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyqpmad-1.4.1-cp310-cp310-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
19ecfdf06e60cd81b7a27a0d89853439ba4826db7abc2f0481f7167bdcf8d05b
BLAKE2b-256 checksum
How to use checksums
0902c8513f11d64c5781cff6d2f61bda29f137d48abcdc4f4db482ca137aae33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.4.1 This release

25 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