Skip to main content

VPMR C++ Implementation

DOI codecov PyPI version Docker

gplv3-or-later

Call For Help

  • more performant parallel SVD algorithm: eigen only provides sequential SVD
  • alternative integration: currently only Gauss-Legendre quadrature is available

What Is This?

This is a C++ implementation of the VPMR algorithm to compute the approximation of arbitrary smooth kernel. A Python package is also provided.

Check the reference paper 10.1007/s10915-022-01999-1 and the original MATLAB implementation for more details.

In short, the algorithm tries to find a summation of exponentials to approximate a given kernel function. In mathematical terms, it looks for a set of $m_j$ and $s_j$ such that

$$ \max_{t\in{}I}\left|g(t)-\sum_jm_j\exp(-s_jt)\right|<\epsilon. $$

In the above, $g(t)$ is the given kernel function and $\epsilon$ is the prescribed tolerance.

Dependency

The following libraries are required:

  1. gmp for multiple precision arithmetic
  2. mpfr for multiple-precision floating-point computations
  3. tbb for parallel computing

The following libraries are included:

  1. mpreal mpreal type C++ wrapper, included
  2. BigInt BigInt arbitrary large integer for combinatorial number, included
  3. Eigen for matrix decomposition, included
  4. exprtk for expression parsing, included
  5. exprtk-custom-types for mpreal support, included

How To

Python Package

[!WARNING] The Python module needs external libraries to be installed.

[!WARNING] Windows users need to have a working MSYS2 environment. See below for more details. For other environments, you need to figure out how to install gmp and mpfr on your own.

On RPM-based Linux distributions (using dnf), if you are:

  1. compiling the application from source (or wheels are not available), sudo dnf install -y gcc-c++ tbb-devel mpfr-devel gmp-devel
  2. using the packaged binary (wheels are available), sudo dnf install -y gmp mpfr tbb

On DEB-based Linux distributions (using apt), you need to sudo apt install -y g++ libtbb-dev libmpfr-dev libgmp-dev.

On macOS, you need to brew install tbb mpfr gmp.

Then install the package with pip.

pip install pyvpmr

If the corresponding wheel is not available, the package will be compiled, which takes a few minutes. The execution of the algorithm always requires available gmp, mpfr and tbb libraries.

Jumpstart

import numpy as np

from pyvpmr import vpmr, plot


def kernel(x):
    return np.exp(-x ** 2 / 4)


if __name__ == '__main__':
    m, s = vpmr(n=50, k='exp(-t^2/4)')
    plot(m, s, kernel)

Usage

All available options are:

Usage: vpmr [options]

Options:

    -n, --max-terms             <int>     number of terms (default: 10)
    -c, --max-exponent          <int>     maximum exponent (default: 4)
    -d, --precision-bits        <int>     number of precision bits (default: 512)
    -q, --quadrature-order      <int>     quadrature order (default: 500)
    -m, --precision-multiplier  <float>   precision multiplier (default: 1.5)
    -e, --tolerance             <float>   tolerance (default: 1E-8)
    -k, --kernel                <string>  file name of kernel function (default uses: exp(-t^2/4))
    -s, --singular-values                 print singular values
    -w, --weights                         print weights
    -h, --help                            print this help message

The minimum required precision can be estimated by the parameter $n$. The algorithm involves the computation of $C(4n,k)$ and $2^{4n}$. The number of precision bits shall be at least $4n+\log_2C(4n,2n)$. In the implementation, this number will be further multiplied by the parameter $m$.

Example

The default kernel is exp(-t^2/4). One can run the application with the following command:

./vpmr -n 30

The output is:

Using the following parameters:
       terms = 30.
    exponent = 4.
   precision = 355.
 quad. order = 500.
  multiplier = 1.5000e+00.
   tolerance = 1.0000e-08.
      kernel = exp(-t*t/4).

[1/6] Computing weights... [60/60]
[2/6] Solving Lyapunov equation...
[3/6] Solving SVD...
[4/6] Transforming (P=+9)...
[5/6] Solving eigen decomposition...
[6/6] Done.

M = 
+1.1745193571738943e+01+6.4089561283054790e-107j
-5.5143304351134397e+00+5.7204056791636839e+00j
-5.5143304351134397e+00-5.7204056791636839e+00j
-1.6161617424833762e-02+2.3459542440459513e+00j
-1.6161617424833762e-02-2.3459542440459513e+00j
+1.6338578576177487e-01+1.9308431539218418e-01j
+1.6338578576177487e-01-1.9308431539218418e-01j
-5.4905134221689715e-03+2.2104939243740062e-03j
-5.4905134221689715e-03-2.2104939243740062e-03j
S = 
+1.8757961592204051e+00-0.0000000000000000e+00j
+1.8700580506914817e+00+6.2013413918954552e-01j
+1.8700580506914817e+00-6.2013413918954552e-01j
+1.8521958553280000e+00-1.2601975249082220e+00j
+1.8521958553280000e+00+1.2601975249082220e+00j
+1.8197653300065935e+00+1.9494562062795735e+00j
+1.8197653300065935e+00-1.9494562062795735e+00j
+1.7655956664692953e+00-2.7555720406099038e+00j
+1.7655956664692953e+00+2.7555720406099038e+00j

Running time: 3112 ms.

exp(-t^2/4)

Arbitrary Kernel

For arbitrary kernel, it is necessary to provide the kernel function in a text file. The file should contain the kernel expressed as a function of variable t.

The exprtk is used to parse the expression and compute the value. The provided kernel function must be valid and supported by exprtk. Check the documentation regarding how to write a valid expression.

For example, to compute the approximation of exp(-t^2/10), one can create a file kernel.txt with the following content:

exp(-t*t/10)

In the following, the kernel function is echoed to a file and then used as an input to the application.

echo "exp(-t*t/10)" > kernel.txt
 ./vpmr -n 60 -k kernel.txt -e 1e-12

exp(-t^2/10)

Performance

The computation of weights, that involves integrals, and SVD are parallelised. A typical profiling would yield something similar to the following.

profiling

Compilation

[!WARNING] The application relies on eigen and exprtk, which depend on very heavy usage of templates. The compilation would take minutes and around 2 GB memory. You need to install libraries gmp, mpfr and tbb before compiling.

Docker

To avoid the hassle of installing dependencies, you can use the provided Dockerfile. For example,

wget -q https://raw.githubusercontent.com/TLCFEM/vpmr/master/Dockerfile
docker build -t vpmr -f Dockerfile .

Or you simply pull using the following command.

docker pull tlcfem/vpmr
# or using GitHub Container Registry
docker pull ghcr.io/tlcfem/vmpr

Windows

Use the following instructions based on MSYS2, or follow the Linux instructions below with WSL.

# install necessary packages
pacman -S git mingw-w64-x86_64-cmake mingw-w64-x86_64-tbb mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-gmp mingw-w64-x86_64-mpfr
# clone the repository
git clone --depth 1 https://github.com/TLCFEM/vpmr.git
# initialise submodules
cd vpmr
git submodule update --init --recursive
# apply patch to enable parallel evaluation of some loops in SVD
cd eigen && git apply --ignore-space-change --ignore-whitespace ../patch_size.patch && cd ..
# configure and compile
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .
ninja

Linux

The following is based on Fedora.

sudo dnf install gcc g++ gfortran cmake git -y
sudo dnf install tbb-devel mpfr-devel gmp-devel -y
git clone --depth 1 https://github.com/TLCFEM/vpmr.git
cd vpmr
git submodule update --init --recursive
cd eigen && git apply --ignore-space-change --ignore-whitespace ../patch_size.patch && cd ..
cmake -DCMAKE_BUILD_TYPE=Release .
make

Binary

The binary requires available gmp, mpfr and tbb libraries.

❯ ldd vpmr
     linux-vdso.so.1 (0x00007ffcf3121000)
     libgmp.so.10 => /lib64/libgmp.so.10 (0x00007f72087e8000)
     libmpfr.so.6 => /lib64/libmpfr.so.6 (0x00007f7208736000)
     libtbb.so.2 => /lib64/libtbb.so.2 (0x00007f72086f2000)
     libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f7208400000)
     libm.so.6 => /lib64/libm.so.6 (0x00007f7208320000)
     libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f72086d0000)
     libc.so.6 => /lib64/libc.so.6 (0x00007f7208143000)
     /lib64/ld-linux-x86-64.so.2 (0x00007f72088a1000)

The distributed appimage is portable.

Metadata

Release files for pyvpmr 250420

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

Source distribution (sdist)

Source distribution for pyvpmr 250420
File Size Uploaded
pyvpmr-250420.tar.gz 2.6 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyvpmr 250420
File
pyvpmr-250420-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pyvpmr-250420-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
pyvpmr-250420-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
pyvpmr-250420-cp313-cp313-macosx_13_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 13.0+ x86-64 Details
pyvpmr-250420-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pyvpmr-250420-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pyvpmr-250420-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pyvpmr-250420-cp312-cp312-macosx_13_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 13.0+ x86-64 Details
pyvpmr-250420-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pyvpmr-250420-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pyvpmr-250420-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pyvpmr-250420-cp311-cp311-macosx_13_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 13.0+ x86-64 Details
pyvpmr-250420-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pyvpmr-250420-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pyvpmr-250420-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details
pyvpmr-250420-cp310-cp310-macosx_13_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 13.0+ x86-64 Details
pyvpmr-250420-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
pyvpmr-250420-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
pyvpmr-250420-cp39-cp39-macosx_14_0_arm64.whl CPython 3.9 CPython 3.9 macOS 14.0+ ARM64 Details
pyvpmr-250420-cp39-cp39-macosx_13_0_x86_64.whl CPython 3.9 CPython 3.9 macOS 13.0+ x86-64 Details
pyvpmr-250420-cp38-cp38-musllinux_1_2_x86_64.whl CPython 3.8 CPython 3.8 Linux musl 1.2+ x86-64 Details
pyvpmr-250420-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
pyvpmr-250420-cp38-cp38-macosx_14_0_arm64.whl CPython 3.8 CPython 3.8 macOS 14.0+ ARM64 Details
pyvpmr-250420-cp38-cp38-macosx_13_0_x86_64.whl CPython 3.8 CPython 3.8 macOS 13.0+ x86-64 Details

Total release size: 94.9 MB

Release files / pyvpmr-250420.tar.gz

Download URL pyvpmr-250420.tar.gz
Size 2.6 MB
Tags Source
SHA-256 checksum
How to use checksums
ce66cff22cf566130855c63ff7ac351c5de5764a760d5980b1d590d0466c1230
BLAKE2b-256 checksum
How to use checksums
134ab4e8c0264cc8093fc06ebd5b79f5858e00b8494ecba5e84ba9bc8eec98c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyvpmr-250420-cp313-cp313-musllinux_1_2_x86_64.whl
Size 4.4 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5c1c7213bf66d337535b5ee8373c12d88c6c03ea570a6f8950b8c9f924049b30
BLAKE2b-256 checksum
How to use checksums
fefa351afab864fdd7e865cd71119e817d8b5444a121f8aea49613987c876cd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyvpmr-250420-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2506fc7ece374e40cce712c156d3f9153e707c5a7e65f8df82597174582e6f43
BLAKE2b-256 checksum
How to use checksums
9604a95f722942fde2d72e7b6d88c611a703d22282ca4c71a538d03da9dc6b80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp313-cp313-macosx_14_0_arm64.whl

Download URL pyvpmr-250420-cp313-cp313-macosx_14_0_arm64.whl
Size 3.7 MB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
afbcb3de6e1e4bab104c7b622a0e2684cee5937a72e5a1e3d14507a2ebdc3b55
BLAKE2b-256 checksum
How to use checksums
9a9da8d1748e920a49ac6dbf6da685483d8a23a7d91deddf8f66dc1199438f68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp313-cp313-macosx_13_0_x86_64.whl

Download URL pyvpmr-250420-cp313-cp313-macosx_13_0_x86_64.whl
Size 4.0 MB
Tags CPython 3.13 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
f883e44ebfb92c1c02fa34bb73ee2971c9eeaf5aafd8f5b4be9ec49fcaf3f08e
BLAKE2b-256 checksum
How to use checksums
8d82d3c29e9563946e17789c27bbbc90ac35f627b49245b628ad29db110c9779
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyvpmr-250420-cp312-cp312-musllinux_1_2_x86_64.whl
Size 4.4 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0cfd1e8fbed7410ae40f99d96ed99f82f176cadeb8db9424d07bfaaef641e63e
BLAKE2b-256 checksum
How to use checksums
57e37fd0098e9985143b56a22bd9ead76752f2d8363d2abc0196c265afd15a22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyvpmr-250420-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f675e92279474b637943f3320a15a0505500a4fc786591ea1715355f293ef110
BLAKE2b-256 checksum
How to use checksums
f6626927260c841563406a6c68a61d1e1c09683fbb9712846633bf50b5096775
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp312-cp312-macosx_14_0_arm64.whl

Download URL pyvpmr-250420-cp312-cp312-macosx_14_0_arm64.whl
Size 3.7 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
b11b742681d228764e3d202df22dc98de2e2936b417645333e42032155516324
BLAKE2b-256 checksum
How to use checksums
7e61178178bfb8b3db6354acf7caaaf1d624c0eacc52c66a7f663d0650448bb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp312-cp312-macosx_13_0_x86_64.whl

Download URL pyvpmr-250420-cp312-cp312-macosx_13_0_x86_64.whl
Size 4.0 MB
Tags CPython 3.12 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
c9fb8722bc1bc2dae74b2d5112d732763b0084799b369d68f84dd7781dde6df8
BLAKE2b-256 checksum
How to use checksums
48401df81366286cdc39ed20fe9e572716f1b33b91f7f4eace2b5ffa0a1720d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyvpmr-250420-cp311-cp311-musllinux_1_2_x86_64.whl
Size 4.4 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
1625480252f3950774b110ac31c3df68e55e03300a0a88db459a29f13652f470
BLAKE2b-256 checksum
How to use checksums
f82e995cd4963fffb0c36931c4ceaa0774d9f55fcd8d1b27ec04535b8ea8d181
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyvpmr-250420-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e533c851889943281666eeca8fb548f938ddf27135fbf9558042511c484082ab
BLAKE2b-256 checksum
How to use checksums
bfe74c09585b0ec3158a33162ae616bb05047274111ebbda9af438782c263b2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp311-cp311-macosx_14_0_arm64.whl

Download URL pyvpmr-250420-cp311-cp311-macosx_14_0_arm64.whl
Size 3.7 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
3f3cb5330a25d477e08c9f49f8d993d35a521f2b62e7049347bf0950d7df375d
BLAKE2b-256 checksum
How to use checksums
726fb8b50866261c720e080475381694fc2d822b9351d61f3b4039545e5df54c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp311-cp311-macosx_13_0_x86_64.whl

Download URL pyvpmr-250420-cp311-cp311-macosx_13_0_x86_64.whl
Size 4.0 MB
Tags CPython 3.11 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
99c96fb3272b1d02825d5b2da8cdb436097cdaf1dfccd64bd72a30b120dcbf88
BLAKE2b-256 checksum
How to use checksums
5f9c0af6620b6a0fad2c0c4d5ae328a9909cca8948320acfb6a12b40b693852e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyvpmr-250420-cp310-cp310-musllinux_1_2_x86_64.whl
Size 4.4 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
37e484cf4e987023c27e5e2042d160d1d06802c97a717df74c68920a0f9737a3
BLAKE2b-256 checksum
How to use checksums
23c064f5b84a2c9a06ab83b556db85e50afa73c517fe755d7017314ef672a22f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyvpmr-250420-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
138e114cb4ea5afbe32788f7510bc7b2fc07abc73154773a271e9bb7ad40f9bc
BLAKE2b-256 checksum
How to use checksums
b077fea67c226b2c0a82101e2667a1f5ff56ce0adcff30de68ab93e913994d3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp310-cp310-macosx_14_0_arm64.whl

Download URL pyvpmr-250420-cp310-cp310-macosx_14_0_arm64.whl
Size 3.7 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
28da8436bcbae96859ff620fa507f13fe8f928d030edd819c137dcc674f950bf
BLAKE2b-256 checksum
How to use checksums
ee7392f56f9edb63a384eae5eebdba566a2fb59c80aa9b058316c3bd85dc42e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp310-cp310-macosx_13_0_x86_64.whl

Download URL pyvpmr-250420-cp310-cp310-macosx_13_0_x86_64.whl
Size 4.0 MB
Tags CPython 3.10 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
38e315307044a81659829fc848f1dda261183958b3df3a346c056fff5e2cda55
BLAKE2b-256 checksum
How to use checksums
5b0d7e1a029258fa20f01fd11998cf3fc46c359f462f602be252012fe34c52c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL pyvpmr-250420-cp39-cp39-musllinux_1_2_x86_64.whl
Size 4.4 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
8da9c7bb83f0f63a0138d2e64b225acc311d684441e9383ff00f8bade73beece
BLAKE2b-256 checksum
How to use checksums
d9fd1dc89eef3eb67537eb435b743f53e685d1801a65d18a22f1f959766c8da4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyvpmr-250420-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5477858b4089694b42d7c3d8721babdaa5c3f8a7706fd6f6597356583cb2b052
BLAKE2b-256 checksum
How to use checksums
5521ae9481cda62e2b31908efd9a08295e44bb2a6840d20a820c2131996164a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp39-cp39-macosx_14_0_arm64.whl

Download URL pyvpmr-250420-cp39-cp39-macosx_14_0_arm64.whl
Size 3.7 MB
Tags CPython 3.9 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
e8ea8b4957fafa561945df39192b474c141183c9c264cad8c8106ce5365014fa
BLAKE2b-256 checksum
How to use checksums
28d1e8d1c0c82c8abd55906752b2dad8c3177db7923fe2f63effe3db24275737
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp39-cp39-macosx_13_0_x86_64.whl

Download URL pyvpmr-250420-cp39-cp39-macosx_13_0_x86_64.whl
Size 4.0 MB
Tags CPython 3.9 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
223979c2ef517eb469b482eb197d57df87ce0305c6e79247c5999cee1e8f90c7
BLAKE2b-256 checksum
How to use checksums
feb1373ee47c026827098ead2a29f4a10c50c1d00cef3726e65a7424c94c0e0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp38-cp38-musllinux_1_2_x86_64.whl

Download URL pyvpmr-250420-cp38-cp38-musllinux_1_2_x86_64.whl
Size 4.4 MB
Tags CPython 3.8 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a7cc276fecad66cf852f5a2259b030d6469cb503fded64c081718e7e9f981d0d
BLAKE2b-256 checksum
How to use checksums
a2bccf8a06bbd3282680011e585ee069177362a88b82d1922a404e891b8925c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyvpmr-250420-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e0cecd0f61b3ff35bea206734c4d9ba081ee9f8d033916c8e6c614cb9e51905b
BLAKE2b-256 checksum
How to use checksums
ea1a9fdfda2e2453056f8f15b21da2804ef62f52ffa182b084b255590d7de285
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp38-cp38-macosx_14_0_arm64.whl

Download URL pyvpmr-250420-cp38-cp38-macosx_14_0_arm64.whl
Size 3.7 MB
Tags CPython 3.8 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
5f6b0d31b2799e870a993ac38336e0982c8b8eb9e0cfce73526812063f8c2c57
BLAKE2b-256 checksum
How to use checksums
b2dbb22cf32c662a30df56fb3a2d0b0fb628306dc5500bc8819db5c28524ff47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyvpmr-250420-cp38-cp38-macosx_13_0_x86_64.whl

Download URL pyvpmr-250420-cp38-cp38-macosx_13_0_x86_64.whl
Size 4.0 MB
Tags CPython 3.8 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
65fefe19bef43f7b6999a7ea69a1ed6fdc244aaba62f5be0674540e2431af5d7
BLAKE2b-256 checksum
How to use checksums
5b712614863fe4502ab330669943b48974e6f1d3d268dcf7cf7c3a221654e6a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

250420 This release

25 release files

241011

7 release files

240921

7 release files

240916

7 release files

0

32 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