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. Eigen for matrix decomposition, included
  3. exprtk for expression parsing, included
  4. exprtk-custom-types for mpreal support, included

How To

Python Package

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.05)
    -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.0500e+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.4196555242161141e-106j
-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: 2044 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 majority of the algorithm is parallelised to extract the maximum performance. The following is a typical performance profile on a i7-10750H platform using the ./vpmr -n 80.

profiling

Compilation

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 --recurse-submodules --depth 1 https://github.com/TLCFEM/vpmr.git
cd vpmr
# 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 --recurse-submodules --depth 1 https://github.com/TLCFEM/vpmr.git
cd vpmr
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 (0x00007ffec2fa0000)
    libtbb.so.12 => /lib/x86_64-linux-gnu/libtbb.so.12 (0x00007fd1dcb13000)
    libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fd1dca92000)
    libmpfr.so.6 => /lib/x86_64-linux-gnu/libmpfr.so.6 (0x00007fd1dc9d8000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd1dac00000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd1daf20000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd1daf00000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd1daa1f000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fd1dcb78000)

The distributed appimage is portable.

Metadata

Release files for pyvpmr 250527

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 250527
File Size Uploaded
pyvpmr-250527.tar.gz 2.6 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyvpmr 250527
File
pyvpmr-250527-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pyvpmr-250527-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-250527-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
pyvpmr-250527-cp313-cp313-macosx_13_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 13.0+ x86-64 Details
pyvpmr-250527-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pyvpmr-250527-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-250527-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pyvpmr-250527-cp312-cp312-macosx_13_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 13.0+ x86-64 Details
pyvpmr-250527-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pyvpmr-250527-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-250527-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pyvpmr-250527-cp311-cp311-macosx_13_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 13.0+ x86-64 Details
pyvpmr-250527-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pyvpmr-250527-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-250527-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details
pyvpmr-250527-cp310-cp310-macosx_13_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 13.0+ x86-64 Details
pyvpmr-250527-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
pyvpmr-250527-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-250527-cp39-cp39-macosx_14_0_arm64.whl CPython 3.9 CPython 3.9 macOS 14.0+ ARM64 Details
pyvpmr-250527-cp39-cp39-macosx_13_0_x86_64.whl CPython 3.9 CPython 3.9 macOS 13.0+ x86-64 Details
pyvpmr-250527-cp38-cp38-musllinux_1_2_x86_64.whl CPython 3.8 CPython 3.8 Linux musl 1.2+ x86-64 Details
pyvpmr-250527-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-250527-cp38-cp38-macosx_14_0_arm64.whl CPython 3.8 CPython 3.8 macOS 14.0+ ARM64 Details
pyvpmr-250527-cp38-cp38-macosx_13_0_x86_64.whl CPython 3.8 CPython 3.8 macOS 13.0+ x86-64 Details

Total release size: 94.5 MB

Release files / pyvpmr-250527.tar.gz

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

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

Download URL pyvpmr-250527-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
9a06594213205f4759ff104fa5ef7b9bcd6cc49e85fc55b57b60383a7e119ced
BLAKE2b-256 checksum
How to use checksums
366202a0d03983bfc4016450ae4dafcf69b69710ca9a7bb6a2f2db3724f23a1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
4b7eb7c3972a671adec7c2052dda88e258f4c2c4f531c2c4b4238e54790a419d
BLAKE2b-256 checksum
How to use checksums
45ccd137f7284f62d5bcdf643209d1a2a05d7325c751c84d20fcf0325894a060
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

Download URL pyvpmr-250527-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
a2834079a958d984cc6172e94c74ae2390ee19478c41c803810e274215997f34
BLAKE2b-256 checksum
How to use checksums
f82213e1289581a0cce55fe111f493f337d3fc9d9dc707737af8f4e63adb1a81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
8f00fa190d3c3880d6bd53b146069a19742ab1c395f892b097a48b16cf58660a
BLAKE2b-256 checksum
How to use checksums
e51318ce67233eacd8796bd2f980f6f512ced6cb3eb1ae5fdd5f213eb76bbc43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
f1e414e2cfe79758f29e8ba5f32d4fe92fdbc8e6ac5849cc74192f7bb81dd897
BLAKE2b-256 checksum
How to use checksums
ba2877da970ea303ba85b7a5c92a9d84bccc22660393323761e9eb8c2f911809
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

Download URL pyvpmr-250527-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
c5dffef84d3162fe806e20997b9d42e853c93882d1969865b06cbf6fb9fb7c00
BLAKE2b-256 checksum
How to use checksums
82703474bb78af11dee8400354af7d9d2088d3e15f23d3855004af62b1596c75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
819ad5baa1fd83a1a882fcd01723edb2e5ee1f7db96fe7584e97a4eafea092f6
BLAKE2b-256 checksum
How to use checksums
d117c6098a357152615cd834296625b9502776a0ecbfffed46eff871203ab9bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
83cfeec9d65b9198a23eecc540eba025975daf4b51d67b937dc259ff0dfd57b0
BLAKE2b-256 checksum
How to use checksums
ff66202d851eb50cf488ae28e2924c65f61ebaba28636581df135e64a71f2c1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-cp311-cp311-macosx_14_0_arm64.whl
Size 3.6 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
dfb03aa040d5b2b50e0bcbb2e1e054b45b6bd1a60a7bdcd3b00d9418580e16b0
BLAKE2b-256 checksum
How to use checksums
6a8b33a43d753f417436c1de68e9c9f58645daae5d8f803493f085107764f7f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
04aa8bb0ae75c909e4d871fc63f994d42fc3a8827fcadf41d5e530cb6d60d233
BLAKE2b-256 checksum
How to use checksums
029ca8e3b44f6e823119d226f34f69fdbd89071d81d1d2115793982118ff4e01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
90af0d7c4f8b574dd09ffa65ed50bf97d280251d64d3a4042f048a96d4b391b7
BLAKE2b-256 checksum
How to use checksums
e1b4956bf37880cca3ae290ff3e63d67664f1bb28611eec73e41ba4b02a42f96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
8ee7097465be1dc0039ab849fb0f28300c3c6f69565ff2247480c8a28ed37b71
BLAKE2b-256 checksum
How to use checksums
711f9fbcd7a870e31ac0311ff35f485576ddf9757b4cae263d13c0a022d174e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-cp310-cp310-macosx_14_0_arm64.whl
Size 3.6 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
74cc7cebea371b89724ebcf5f50db6b62965a89db9742bfde4e6e26ccc696871
BLAKE2b-256 checksum
How to use checksums
5aa9607a5ad5c3d2de5b74081635c01ba411e1fd82f0a86d4772e58ad81dbe84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
3907fbf44d741b726c960f52e7c8c879d39af95b42b91901524ac519292b055e
BLAKE2b-256 checksum
How to use checksums
453773c5a96b62ff4edc02e8315991559b156cc20032a7a96a2aab48245342c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
dfa448544b6a1490f1acafb61904b2a7109956fda17f0f23b0c25fa79c097db9
BLAKE2b-256 checksum
How to use checksums
9c854bbeb9c60744b043cd7807988c431fe4670f6810eb2e6997166b922ea723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
28a78d71deb2ad1988bc99a96003d5901df3c581bac51f65a17547dcbb5501ed
BLAKE2b-256 checksum
How to use checksums
7849e67d309d89378e3684ec159f19d963d560c0e0a28a5484cf9d4373e6bed1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

Download URL pyvpmr-250527-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
6277e47fae17ca62f2de7c8e4ce0a74380bd96de13b3182d0d743e8a71c1cdea
BLAKE2b-256 checksum
How to use checksums
031ff0a1e9db52455ef8d2bc520f4bfc1f4604b9bb6c3ba1a7b4b0c0834a8787
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
85427041199eb9186a89b9514e0eb00aaea17b5739c73e248a8f28864fcd74f0
BLAKE2b-256 checksum
How to use checksums
04d871dac5b5f292661c91f682ce0c86589e00f65a72c790ffdb0c0be780817d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
2bcaf90d860ad357df2256c0cd157b374cdbc083a54d4e0bd04d4f52ccb0a0fe
BLAKE2b-256 checksum
How to use checksums
b15df56f7ddd4a9697a00e672591deff2402fe39bfac6ebbd9319c8a2ed3b18b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-cp38-cp38-macosx_14_0_arm64.whl
Size 3.6 MB
Tags CPython 3.8 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
66a7b71373488b6c3dd51ace4284d22b2c6e863b88ecaa0157ce1d94ae091504
BLAKE2b-256 checksum
How to use checksums
41abccea807122c46532f0af5ca5648beaaa1efde47f967b018744583d1025f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250527-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
7bf185ce57da0f23b4b0ae266537a257b1e3eb58353aae6ddc4c76188098227c
BLAKE2b-256 checksum
How to use checksums
bc326677e1ab900c93b6107314681fb3b1704a43b10d9bdbd2723a3f49274f99
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

250527 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