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:
nanobindeigenqpmad
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:
- Build
sdistand wheels for all major platforms. - Run tests on the generated wheels.
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| pyqpmad-1.4.1.tar.gz | 8.3 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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