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.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

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 250523

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

Built distributions (wheels)

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

Total release size: 98.0 MB

Release files / pyvpmr-250523.tar.gz

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

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

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

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

Download URL pyvpmr-250523-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7f62ab99334618062df0ba48c0ed7a1aacc3706f2137054811834c4ff6d40ba9
BLAKE2b-256 checksum
How to use checksums
165a33ab487cd5c8e8e3ad294731a640ae6c0b1624510c38fc5ef63fbc20f4a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

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

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

Download URL pyvpmr-250523-cp312-cp312-musllinux_1_2_x86_64.whl
Size 4.6 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5a3b807b5fadc2f51aec21be62e1796b529fdbde6b0b0ae68eeae17f7e65041b
BLAKE2b-256 checksum
How to use checksums
4cb05d5a7e7579f886bdc6db0b87184d5c726f12c99ea025b716d04b48ef3723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

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

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

Download URL pyvpmr-250523-cp312-cp312-macosx_13_0_x86_64.whl
Size 4.1 MB
Tags CPython 3.12 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
05632673d086447f6793b5804e2ed99eb95e3ba396507aeef619a4806bb35e07
BLAKE2b-256 checksum
How to use checksums
343445c01ea3f5f44678a9b2d902ff0b31c20c92f622cc77705d7681ee7e5000
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

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

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

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

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

Download URL pyvpmr-250523-cp311-cp311-macosx_13_0_x86_64.whl
Size 4.1 MB
Tags CPython 3.11 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
f1cdd2a2da301a25abc92228a471e7f14889f222f9099b402fc2b82e92d57bad
BLAKE2b-256 checksum
How to use checksums
67d11af2ee6d055db3453a648b68ed954dee7845dc63da259a92e6804ddb659f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL pyvpmr-250523-cp310-cp310-musllinux_1_2_x86_64.whl
Size 4.6 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
66918283bcbc93a53b5af2d86214ebfe958fcb004044c6ee2146b35d357fb37d
BLAKE2b-256 checksum
How to use checksums
2d895b000d0793eb122979674be04079779761f926d12171b9d4473c5093ed16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

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

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

Download URL pyvpmr-250523-cp310-cp310-macosx_13_0_x86_64.whl
Size 4.1 MB
Tags CPython 3.10 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
ca7b57f3916cee0634e8fba212f33057f3b141f0a10a5a7d29d2e5217d6e26cc
BLAKE2b-256 checksum
How to use checksums
377cc95ebf31bff9673c735576775a79e30a6b895ad3f15c594e52bf944a02a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

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

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

Download URL pyvpmr-250523-cp39-cp39-macosx_14_0_arm64.whl
Size 3.8 MB
Tags CPython 3.9 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
29a0c4f934958dafa075d34b4506ac777a08d8a700e081b77fe4ef2dc95d97d0
BLAKE2b-256 checksum
How to use checksums
797e8cf56fc6a4b42582cdf8561bd38491c705e2b2430a6abfcdbf09ae42dca4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

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

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

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

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

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

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

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

Download URL pyvpmr-250523-cp38-cp38-macosx_13_0_x86_64.whl
Size 4.1 MB
Tags CPython 3.8 macOS 13.0+ x86-64
SHA-256 checksum
How to use checksums
1fb7f331195996b515fe17463e4aee28c35e0da18048272bc024f2ee8c45a038
BLAKE2b-256 checksum
How to use checksums
515a1a99aedd19c88580c1bee8e3dab3abd4f9a0c40c1245587536fbcafa560b
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

250523 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