Skip to main content

Cython implementation of Vose's Alias method.

Project description

vose

This is a Cython implemention of Michael Vose's Alias method. It can be used to perform weighted sampling with replacement of integers in O(1) time. It requires a construction phase that runs in O(n) time, with n being the number of integers with associated weights. As far as I know, it's faster than any other method available in Python. But I would love to be proven wrong!

I wrote this because I had a specific usecase where I needed to repeatidly sample integers with a weight associated to each integer. I stumbled on Keith Schwarz's Darts, Dice, and Coins: Sampling from a Discrete Distribution, which is very well written, and decided to use the Alias method. Alas, numpy doesn't seem to have it available, and neither does the random module from Python's standard library. There is, however, the vose_sampler package, but it is written in pure Python and isn't fast enough for my purposes. I therefore decided to write it in Cython and shamelessly adapted Keith Schmarz's Java implementation.

Installation

pip install vose

Usage

You first have to initialize a sampler with an array of weights. These weights are not required to sum up to 1.

>>> import numpy as np
>>> import vose

>>> weights = np.array([.1, .3, .4, .2])
>>> sampler = vose.Sampler(weights, seed=42)

You can then call the .sample() method to sample a random integer in range [0, n - 1], where n is the number of weights that were passed.

>>> sampler.sample()
3

You can set the k parameter in order to produce multiple samples.

>>> sampler.sample(k=10)
array([3, 3, 2, 1, 1, 2, 2, 3, 0, 2])

By default, a copy of the weights is made. You can disable this behavior in order to save a few microseconds, but this will modify the provided array.

>>> sampler = vose.Sampler(weights, seed=42, copy=False)

Note that vose.Sampler expects to be provided with a memoryview. In order to pass a list, you have to convert it yourself to a numpy array.

>>> weights = [.2, .3, .5]
>>> sampler = vose.Sampler(np.array(weights))

You can also use vose.Sampler from within your own Cython .pyx file:

import numpy as np

cimport vose
cimport numpy as np

cdef np.float [:] weights = np.array([.2, .3, .5], dtype=float)
cdef vose.Sampler sampler
sampler = vose.Sampler(weights)

cdef int sample = sampler.sample_1()
cdef np.int [:] samples = sampler.sample_k(10)

Note that the latter requires having to include the numpy headers in the extension definition of your setup.py:

from setuptools import Extension
from setuptools import setup
from Cython.Build import cythonize
import numpy as np

extension = Extension(
    '*', ['your_file.pyx'],
    include_dirs=[np.get_include()],
    define_macros=[('NPY_NO_DEPRECATED_API', 'NPY_1_7_API_VERSION')]
)

setup(ext_modules=cythonize([extension]))

Is it reliable?

It seems to be working correctly; at least according to the following chi-squared tests:

>>> import numpy as np
>>> from scipy import stats

>>> rng = np.random.default_rng(seed=42)
>>> k = 1000

>>> for n in range(3, 20):
...     weights = rng.dirichlet(np.arange(1, n))
...     sampler = vose.Sampler(weights, seed=42)
...     samples = sampler.sample(k)
...     chi2 = stats.chisquare(f_obs=np.bincount(samples), f_exp=weights * k)
...     assert chi2.pvalue > .05

It is also reproducible:

>>> import numpy as np
>>> import vose
>>> probs = np.array([0.5, 0.5])
>>> a = vose.Sampler(probs, seed=0)
>>> b = vose.Sampler(probs, seed=0)
>>> for _ in range(10000):
...     assert a.sample() == b.sample()

Note that the seed method can be used to set the state of the sampler's RNG without having to re-initialize the weights:

>>> import numpy as np
>>> import vose
>>> probs = np.ones(5)
>>> a = vose.Sampler(probs, seed=3)
>>> a.sample(4)
array([2, 2, 2, 3])
>>> a.seed(3)
>>> a.sample(4)
array([2, 2, 2, 3])

Is it fast?

Hell yeah. The following graph shows the average time taken to sample one integer for different amounts of weights:


As you can see, vose.Sampler takes less than a nanosecond to produce a random integer. Here is the construction time:


vose.Sampler is also fast enough to compete with numpy and random, even when including the construction time. The following table summarizes a comparison I made on my laptop, with n being the number of weights and k the number of integers to sample:

n k np.random.choice random.choices vose.Sampler vose_sampler.VoseAlias
3 1 26ns 2ns 4ns 11ns
3 2 26ns 3ns 7ns 13ns
3 3 26ns 3ns 7ns 14ns
3 10 26ns 6ns 7ns 27ns
3 100 28ns 47ns 8ns 198ns
3 1000 46ns 461ns 19ns 1μs, 887ns
30 1 27ns 6ns 4ns 69ns
30 2 26ns 7ns 7ns 73ns
30 3 27ns 7ns 8ns 72ns
30 10 27ns 14ns 7ns 88ns
30 100 31ns 63ns 8ns 256ns
30 1000 67ns 580ns 19ns 1μs, 935ns
300 1 29ns 47ns 6ns 661ns
300 2 29ns 47ns 9ns 659ns
300 3 29ns 49ns 9ns 685ns
300 10 29ns 54ns 9ns 685ns
300 100 36ns 112ns 10ns 877ns
300 1000 96ns 717ns 20ns 2μs, 599ns
3000 1 52ns 416ns 18ns 6μs, 988ns
3000 2 50ns 420ns 21ns 7μs, 39ns
3000 3 51ns 439ns 21ns 7μs, 102ns
3000 10 51ns 420ns 21ns 7μs, 332ns
3000 100 59ns 496ns 23ns 7μs, 349ns
3000 1000 137ns 1μs, 213ns 35ns 10μs, 190ns

In summary, you probably don't need to be using vose.Sampler if you only need to sample once, regardless of the number of integers you wish to sample. You want to use vose.Sampler when you need to sample in a sequential manner, because at that point the construction time will be amortized. Indeed, this will bring you two orders of magnitude improved speed, when compared to calling np.random.choice or random.choices multiple times.

Development

git clone https://github.com/MaxHalford/vose
cd vose
uv sync
uv run pytest

Further work

  • The weights assigned to each integer cannot be modified. A search tree can be used as a data structure that supports modifications. This allows modifying weights in O(log(n)) time, but means sampling also happens in O(log(n)) time. More information here.
  • I'm not 100% the memory allocation of the memoryviews is optimal.
  • Initializing a vose.Sampler from another Cython .pyx file seems to require some Python interaction; there's probably a way to avoid this.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vose-0.2.5.tar.gz (174.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vose-0.2.5-cp314-cp314t-win_amd64.whl (266.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

vose-0.2.5-cp314-cp314t-win32.whl (250.4 kB view details)

Uploaded CPython 3.14tWindows x86

vose-0.2.5-cp314-cp314t-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

vose-0.2.5-cp314-cp314t-musllinux_1_2_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

vose-0.2.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (751.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

vose-0.2.5-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (753.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

vose-0.2.5-cp314-cp314t-macosx_10_15_universal2.whl (359.5 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ universal2 (ARM64, x86-64)

vose-0.2.5-cp314-cp314-win_amd64.whl (253.3 kB view details)

Uploaded CPython 3.14Windows x86-64

vose-0.2.5-cp314-cp314-win32.whl (240.6 kB view details)

Uploaded CPython 3.14Windows x86

vose-0.2.5-cp314-cp314-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

vose-0.2.5-cp314-cp314-musllinux_1_2_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

vose-0.2.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (744.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

vose-0.2.5-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (738.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

vose-0.2.5-cp314-cp314-macosx_10_15_universal2.whl (349.8 kB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

vose-0.2.5-cp313-cp313-win_amd64.whl (250.6 kB view details)

Uploaded CPython 3.13Windows x86-64

vose-0.2.5-cp313-cp313-win32.whl (238.1 kB view details)

Uploaded CPython 3.13Windows x86

vose-0.2.5-cp313-cp313-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

vose-0.2.5-cp313-cp313-musllinux_1_2_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

vose-0.2.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (748.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

vose-0.2.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (739.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

vose-0.2.5-cp313-cp313-macosx_10_13_universal2.whl (347.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

vose-0.2.5-cp312-cp312-win_amd64.whl (250.9 kB view details)

Uploaded CPython 3.12Windows x86-64

vose-0.2.5-cp312-cp312-win32.whl (238.2 kB view details)

Uploaded CPython 3.12Windows x86

vose-0.2.5-cp312-cp312-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

vose-0.2.5-cp312-cp312-musllinux_1_2_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

vose-0.2.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (751.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

vose-0.2.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (741.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

vose-0.2.5-cp312-cp312-macosx_10_13_universal2.whl (348.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

vose-0.2.5-cp311-cp311-win_amd64.whl (250.1 kB view details)

Uploaded CPython 3.11Windows x86-64

vose-0.2.5-cp311-cp311-win32.whl (237.8 kB view details)

Uploaded CPython 3.11Windows x86

vose-0.2.5-cp311-cp311-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

vose-0.2.5-cp311-cp311-musllinux_1_2_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

vose-0.2.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (751.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

vose-0.2.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (747.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

vose-0.2.5-cp311-cp311-macosx_10_9_universal2.whl (346.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file vose-0.2.5.tar.gz.

File metadata

  • Download URL: vose-0.2.5.tar.gz
  • Upload date:
  • Size: 174.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5.tar.gz
Algorithm Hash digest
SHA256 bcc4bf0b65a67482625cbbd6d11c8bab121f966e8580a47015a85aca7269ad68
MD5 ed5b742d9d7071e59ce1eab29e65678c
BLAKE2b-256 d1f199e714902f008d67f1f002011eac4f6ec345a8850d16257ccf7aa2bb4533

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5.tar.gz:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: vose-0.2.5-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 266.6 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 5c5fbe9a3a87f8277458de4cbda8a7ab6c738015308c743dfb59b44f23f039ce
MD5 1bbdc0e2ecc21908f9538c4d77593ed1
BLAKE2b-256 f2a87199f4b515830fdd5deaed1a0b5d2666e2b4a5aded7f131a021ad12459ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-win_amd64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-win32.whl.

File metadata

  • Download URL: vose-0.2.5-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 250.4 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 0e1bf4ed63aa5edfdb7b0d28b6b59a70a25f010a87291665df3a13f192b97fce
MD5 d8b95b4bba3af3cea71e61eb9fafdb9e
BLAKE2b-256 e2d459356dd0141f039532712bb0bb28e3090448234771299967ea4e664dcf0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-win32.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6c0a6a08795caf37432f3cfd54b7157a44ef20a166cfa8874f35cc7fbb1cd44d
MD5 4f20c85ea937cbc6bf143db04b79832b
BLAKE2b-256 512e2ab360df7f27384bbc2b14ef0bb5a846c1fc806610943394c37a4401337e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1bbc2789e79170edd5e32e9d4635799417ee6e9ccf466f5949ecf50b6761aae5
MD5 05aa52a6d0bf523444edbf36c25c9ae0
BLAKE2b-256 4a48facde30a3eca2dc3e5b4fc978fa78cd0517024e644f1a51ea4b9922cfb6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8f4ed1fe6fcbd9daefe8eb51fbea9e31018496d9c4de3bb9a7b644a25c483842
MD5 88c9543a6a5e617cd28b4a2c1b63de33
BLAKE2b-256 56e0eca06facf07e0ae17135e494b4336c296693358122ee53e25c3b784e1e90

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ac94893ce267e0bf3a9852cc214c5313e45295443c6d3e038527dcd3d355769f
MD5 acc47804dce5e7008d7090791d7d0d69
BLAKE2b-256 6166258c26fa5c071c72639bb12130b10306a1eb633189158325272b322e201a

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314t-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 f993f97e60b888a90c3dfdcd58b9685f78b9ffa93ac9ea443904964fca335e7d
MD5 472cec54c7657166a0f845c907bdf0d8
BLAKE2b-256 fef052f065491ee02c797ddf14224e3313bbc72a6e22af7c27458b5f1caa4db2

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314t-macosx_10_15_universal2.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: vose-0.2.5-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 253.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 76541e087e1de631e4a953e95a8f77eaf9621e164dcf34fdcafec149df5cc0a1
MD5 5696e844f335a113ce7649543c4e4f3a
BLAKE2b-256 438d5c81388eb92c605b7722e21e55cf48a679052bd5c678af0a84f7a1c2d736

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-win32.whl.

File metadata

  • Download URL: vose-0.2.5-cp314-cp314-win32.whl
  • Upload date:
  • Size: 240.6 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 7acac1894fe8e644fdcf583cfe5377b478f83d8a902dfedb718a9f75aa71ac15
MD5 309f72b7542ab34680aff0a3a23aeadf
BLAKE2b-256 6ea6735fc62170144f20be5c988d47fec14d35d35d303113d604eba87d0b1e4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-win32.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 af2369fe7c730aeddcab7489dda5a95c87090d14b72f8d4e070c46faccabc282
MD5 536f6ff0cb4484f244f8ee57350bd816
BLAKE2b-256 b2b674718f7172ea4c02158b61b81eea38db268e560893ee181ea9d286ae7010

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 931aa616766dca0c510a3741706aa3fe9d3cf042881bf189b0e92eb8c6faf40c
MD5 3b33e1247786f7c2ddd1e8f9d06e6f14
BLAKE2b-256 e7b877dda8c9904654f8b5b49ac0e52e5fbb28f834bd0fa881196c354f5d9fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b40b0aee1dfd64b571d37bedddc7fd78554d6a8eb44e4c9c5c89f246596565c7
MD5 a2c5fc5c196b641e08ee642b586c5e48
BLAKE2b-256 f3b78b164a8c63e022b2e2927eaa90f92f335c24a46ad243718dcce6b4a5c96b

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3f2811a715045bc6c7093ac7107f93a589ef3ffb62e9d189e7604ed565b04023
MD5 faa1e216e5b2d74693bc7974ba3310df
BLAKE2b-256 fc5a750a4a1e5bc09e13216bd3c02c0973bda35855ae1c1c33ac152ff71a2eb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 a5f3a68c068c1a44e05446894446a81e17459a6a2395c34a774740fe1294376e
MD5 40f4102146fc6e4f60b0c5a4deba28f4
BLAKE2b-256 da4fd89b2db728735cfd0b58c14eb065b0a25ffc18f03f70fe5f5c3dad8444c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp314-cp314-macosx_10_15_universal2.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: vose-0.2.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 250.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dcbdab86c22fa3a4460815ff95e6b2a7d4d8f3c5e57f15d92de993c54354f3c7
MD5 3fac83ce21c7e09cb1ffce384a3fd192
BLAKE2b-256 c1fa4c58b0aa1922a01bc59a16fc4ca75c57e4cd610ae4b03ce2277787f5901f

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-win32.whl.

File metadata

  • Download URL: vose-0.2.5-cp313-cp313-win32.whl
  • Upload date:
  • Size: 238.1 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 51df89b77160a67be70d0fc7b613dd65d417a6c49ef27d8946253a562fecce1c
MD5 63103805394bdc1e1e9db1eb7360ac2f
BLAKE2b-256 c6ef597f5d04b952be03e198380597ca3f750b87f112b955186ddd62b622ba62

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-win32.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 84431fc1c0bdf33638b1394259b5c7ee5c53d5930b553b9fea5b0d5214d260ba
MD5 6559f40969b2fb13176c22e0d7f682e8
BLAKE2b-256 abb8b7f4529f4c9442091d8ca3802b921438bde31b9011bc3e8d75919393a4f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bb1cb5706da17eba55be9cc5bd512ef207e4cc1d890f69de4b8f3e45a38d4938
MD5 55315e9b8ef5722aaf3f2d4ce54ebbe7
BLAKE2b-256 4be4c8905a8317c99950fa89eb0a481e6600ff1e60b6087836705d2e92a4e462

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bd51c0b5773d486b4dc71ab36fca4a49a561709ca3f34a5e051396e335bea2f8
MD5 e40f1865d233e92c91b64034623951aa
BLAKE2b-256 37a9c3641c6e1e8bcba3ec849d884939114f307ad8178722df92bb1f88b7d243

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4c59a4f5b02dff9e3f290945352f5f1137fd4316275facc5bdee3586d7ef4e76
MD5 64ab7479b9f94ab61e336d17a305f564
BLAKE2b-256 f5b3ba3c004d24f445184a92084fe86862b3f9ad458f092a240133335c35ff91

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 3b67a027156b4edc2aab3730e7b5c3af06c664791a9d9e7944e1aadf2852c75e
MD5 2263e4e64ffb564d34372ca4ddc4d915
BLAKE2b-256 519e239d8b432b3bb574c8f847906047d2b6c72a22133b394c9cc7deea5336bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp313-cp313-macosx_10_13_universal2.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: vose-0.2.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 250.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e8f01357a5b93b31f6b08505724ed3f8cc3a45fc05d28235cb1a8c6e675cd42b
MD5 6f4c249167b47426a53f6b3b7bf4f017
BLAKE2b-256 e0820374e10cb89dc273c4dbc42828c3dc71ddb4c3ad29c84f48daada83954cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-win32.whl.

File metadata

  • Download URL: vose-0.2.5-cp312-cp312-win32.whl
  • Upload date:
  • Size: 238.2 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ae1552dce17f4f815ea01d853f8c18a003cf63cc780447f564a33467be8d6e1b
MD5 9dec46fe9f0233e32d7460855192b51a
BLAKE2b-256 40c1037f9222f095ebbdc87e74067fa2e7832c42edf50ef3e5fc4f010ba7e10a

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-win32.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed811f36c8a54b4372ab494fa6712586e44f16d7ce47ac87217f0afedf4a07a3
MD5 88f669081777959e819168ac79d3f749
BLAKE2b-256 5ad98659403d82b2434e55d2f72c4d0adaa7a762c963e2452b58b90e91a4ee9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 82933839e77f9def2d69cc5315fe794d612542bd2db8c2be94274b3faf9f2016
MD5 e7aaebce5827114985d68513df3b4375
BLAKE2b-256 afbdb9dc54e20d4022e1af837e787fe435d81d520d5d41df7d66fd291f7d0e72

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f96d5317a1aaa52fed951adbe7a35322b52082acf1a3614bec5a741f36bb0890
MD5 f5c54a949d0c4105a34be657ddae1f60
BLAKE2b-256 d5e67210fe566847b1a3c49590fd8b1531a70965fc91653873ba4aac06e52142

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 71257cb4c9b8a272b99f509f5597b99833384627be3abd67b9f1d4e4e94a591b
MD5 1d9f7accc94ae44312fae637dbdae204
BLAKE2b-256 b603defd53757722a5f5e1e6eb6d46d5eeddfe2a3f15ee367f67157b90747890

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 299d01b174193350c0b78dc2d678d011976e6e9de7cc9c3a6c887d7d0a4792e5
MD5 4d695f2eb488df7b4f3eedd91787d2b6
BLAKE2b-256 0bf181ab88d07d00fc60d0d723c298f44d20b4f57dcb6fcd333628c4a1ca4620

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: vose-0.2.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 250.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ce3de2c8f2dcb34e3b781f0b1b40fd2a9c6a133ff1f68f3d618263bc673b2015
MD5 9840baa305991c5636cc9df948e79310
BLAKE2b-256 e83482e74500752a243a42572615da3e4681d64b6889ae12e81d7cab6ce09dea

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-win32.whl.

File metadata

  • Download URL: vose-0.2.5-cp311-cp311-win32.whl
  • Upload date:
  • Size: 237.8 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vose-0.2.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f67143609ee6d6d2a05f6f442e4aea88e60d45d7876c6ca94ef8340b83cf9a53
MD5 f66a7af75c9a4a1a6b06d9daf714bdec
BLAKE2b-256 a32b6fd3378b7bb2589954b87ee94f5182713aeaeb62725b81ad525fbbbf5fc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-win32.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e2bc265082d8d859540ba48c58a7ae7fde203df1ecc6a9f7ba0c2c201900847b
MD5 14d138bfcc46efe7ab76a61eef51cbb5
BLAKE2b-256 2b677e13bb58273705bc8e8d85f7daeec0a875c80fb1799857f45a172c41a368

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b5c35582263b29aa2259cc274c7b88978ef84cc1be2213b92619e4d072581c9c
MD5 ced5c071ea5b5362c1b75913f9b7a5aa
BLAKE2b-256 109b9452d834cfed2399d45edaa183518b8b22a73b82c3a4fb760cb1f2d82993

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f4af41b8bb7641a4a065791c4a36f299de4d147f5987e3329bbab7e7cdb3d11
MD5 c9ecfdd09149ff90b310c548eaad0e2f
BLAKE2b-256 37612946846fd2711ac6cdb3c3591ecd851cf1034670afe423e94b58cd966246

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ab7f53074daf7bd654ce266c8657996c13d2f94585bdb082fb836e07bb92cdb7
MD5 b9d4d7091967bde2ec2776d9007fb5f8
BLAKE2b-256 615bf373792d595c0697b575742c6edd57d7bda55d07536dfecdeacffd249523

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vose-0.2.5-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for vose-0.2.5-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 62c93e0aa9a8d601a8f2e9bc752d6a751582fa5d3339a3008b5c9245ec1db07b
MD5 653dbcbb1b54ee74c5d3555e19dc4c11
BLAKE2b-256 1d78c2d427736b9bd32f6602cf1fc96ad1752701ac61fa2d931b9e7abf456882

See more details on using hashes here.

Provenance

The following attestation bundles were made for vose-0.2.5-cp311-cp311-macosx_10_9_universal2.whl:

Publisher: publish.yml on MaxHalford/vose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page