Skip to main content

Python bindings for Voro++ (3D Voronoi and Laguerre tessellations) with periodic and topology utilities.

Project description

pyvoro2

CI Docs PyPI Python Versions License

Documentation: https://IvanChernyshov.github.io/pyvoro2/


pyvoro2 is a Python interface to the C++ library Voro++ for computing 3D tessellations around a set of points:

  • Voronoi tessellations (standard, unweighted)
  • power / Laguerre tessellations (weighted Voronoi, via per-site radii)

The focus is not only on computing polyhedra, but on making the results useful in scientific settings that are common in chemistry, materials science, and condensed matter physics — especially periodic boundary conditions and neighbor graphs.

pyvoro2 is designed to be honest and predictable:

  • it vendors and wraps unmodified upstream Voro++;
  • the core tessellation modes are standard Voronoi and power/Laguerre.

Quickstart

1) Standard Voronoi in a bounding box

For 3D visualization, install the optional dependency: pip install "pyvoro2[viz]".

import numpy as np
import pyvoro2 as pv
from pyvoro2.viz3d import view_tessellation

points = np.random.default_rng(0).uniform(-1.5, 1.5, size=(10, 3))
box = pv.Box(((-2, 2), (-2, 2), (-2, 2)))
cells = pv.compute(points, domain=box, mode='standard')

view_tessellation(
    cells,
    domain=box,
    show_vertices=False,
)
Voronoi tessellation in a box

2) Power/Laguerre tessellation (weighted Voronoi)

radii = np.full(len(points), 1.2)

cells = pv.compute(
    points,
    domain=box,
    mode='power',
    radii=radii,
    include_empty=True,  # power diagrams can have zero-volume cells
)

3) Periodic crystal cell with neighbor image shifts

cell = pv.PeriodicCell(
    vectors=(
        (10.0, 0.0, 0.0),
        (2.0,  9.0, 0.0),
        (1.0,  0.5, 8.0),
    )
)

cells = pv.compute(points, domain=cell, return_face_shifts=True)

# Each face can include:
#   adjacent_cell  (neighbor id)
#   adjacent_shift (which periodic image produced the face)

Numerical safety notes

Voro++ uses a few fixed absolute tolerances internally (most importantly a hard near-duplicate check around ~1e-5 in container distance units). For very small or very large coordinate systems, this can lead to hard process termination or loss of accuracy.

pyvoro2 does not silently rescale your coordinates. If you work in unusual units, rescale explicitly before calling into the C++ layer.

As an additional safety net, you can ask pyvoro2 to run a fast Python-side near-duplicate pre-check before entering the C++ layer:

cells = pv.compute(points, domain=cell, duplicate_check='raise')

For stricter post-hoc checks, see:

  • pyvoro2.validate_tessellation(..., level='strict')
  • pyvoro2.validate_normalized_topology(..., level='strict')

Platform note (macOS)

On some macOS builds, fully periodic power/Laguerre tessellations can occasionally produce a non-reciprocal face/neighbor graph. In that case, requesting return_face_shifts=True may raise a ValueError because pyvoro2 cannot assign consistent periodic shifts.

Workarounds:

  • Avoid requesting shifts (return_face_shifts=False), or
  • disable shift validation (validate_face_shifts=False, shifts may be unreliable), or
  • run strict periodic power workflows on Linux/Windows.

Why use pyvoro2

Voro++ is fast and feature-rich, but it is a C++ library with a low-level API. pyvoro2 aims to be a scientific interface that stays close to Voro++ while adding practical pieces that are easy to get wrong:

  • triclinic periodic cells (PeriodicCell) with robust coordinate mapping
  • partially periodic orthorhombic cells (OrthorhombicCell) for slabs and wires
  • optional per-face periodic image shifts (adjacent_shift) for building periodic graphs
  • diagnostics and normalization utilities for reproducible topology work
  • convenience operations beyond full tessellation:
    • locate(...) (owner lookup for arbitrary query points)
    • ghost_cells(...) (probe cell at a query point without inserting it)
    • inverse fitting utilities for fitting power weights from desired pairwise plane locations

Documentation overview

The documentation is written as a short scientific tutorial: it starts with the geometric ideas, then explains domains and operations, and only then dives into implementation-oriented details.

Section What it contains
Concepts What Voronoi and power/Laguerre tessellations are, and what you can expect from them.
Domains Which containers exist (Box, OrthorhombicCell, PeriodicCell) and how to choose between them.
Operations How to compute tessellations, assign query points, and compute probe (ghost) cells.
Topology and graphs How to build a neighbor graph that respects periodic images, and how normalization helps.
Inverse fitting Fit power/Laguerre radii from desired pairwise plane positions (with optional constraints/penalties).
Visualization Optional py3Dmol helpers for debugging and exploratory analysis.
Examples (notebooks) End-to-end examples that combine the pieces above.
API reference The full reference (docstrings).

Installation

Most users should install a prebuilt wheel:

pip install pyvoro2

To build from source (requires a C++ compiler and Python development headers):

pip install -e .

Testing

pyvoro2 uses pytest. The default test suite is intended to be fast and deterministic:

pip install -e ".[test]"
pytest

Additional test groups are opt-in:

  • Fuzz/property tests (randomized):

    pytest -m fuzz --fuzz-n 100
    
  • Cross-check tests vs pyvoro (requires installing pyvoro first):

    pip install pyvoro
    pytest -m pyvoro --fuzz-n 100
    
  • Slow tests (if any are added in the future):

    pytest -m slow
    

Tip: you can combine markers, e.g. pytest -m "fuzz and pyvoro" --fuzz-n 100.

Project status

pyvoro2 is currently in beta.

The core tessellation modes (standard and power/Laguerre) are stable, and a large part of the work in this repository focuses on tests and documentation. A future 1.0 release is planned once the inverse-fitting workflow is more mature and native 2D support is added.

AI-assisted development

Some parts of the implementation, tests, and documentation were developed with AI assistance (OpenAI ChatGPT). The maintainer reviews and integrates changes, and remains responsible for the resulting code and scientific claims.

Details are documented in the AI usage page.

License

  • pyvoro2 is released under the MIT License.
  • Voro++ is vendored and redistributed under its original license (see the project pages).

This README is auto-generated from the MkDocs sources in docs/. To update it, edit the docs pages and re-run: python tools/gen_readme.py.

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

pyvoro2-0.4.0.tar.gz (571.5 kB view details)

Uploaded Source

Built Distributions

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

pyvoro2-0.4.0-cp313-cp313-win_amd64.whl (213.7 kB view details)

Uploaded CPython 3.13Windows x86-64

pyvoro2-0.4.0-cp313-cp313-win32.whl (194.8 kB view details)

Uploaded CPython 3.13Windows x86

pyvoro2-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (273.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyvoro2-0.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (279.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

pyvoro2-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (203.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyvoro2-0.4.0-cp312-cp312-win_amd64.whl (213.6 kB view details)

Uploaded CPython 3.12Windows x86-64

pyvoro2-0.4.0-cp312-cp312-win32.whl (194.8 kB view details)

Uploaded CPython 3.12Windows x86

pyvoro2-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (274.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyvoro2-0.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (279.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

pyvoro2-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (203.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyvoro2-0.4.0-cp311-cp311-win_amd64.whl (212.8 kB view details)

Uploaded CPython 3.11Windows x86-64

pyvoro2-0.4.0-cp311-cp311-win32.whl (194.2 kB view details)

Uploaded CPython 3.11Windows x86

pyvoro2-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (275.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyvoro2-0.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (281.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

pyvoro2-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (204.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyvoro2-0.4.0-cp310-cp310-win_amd64.whl (212.2 kB view details)

Uploaded CPython 3.10Windows x86-64

pyvoro2-0.4.0-cp310-cp310-win32.whl (193.1 kB view details)

Uploaded CPython 3.10Windows x86

pyvoro2-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (273.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyvoro2-0.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (278.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

pyvoro2-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (203.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyvoro2-0.4.0.tar.gz.

File metadata

  • Download URL: pyvoro2-0.4.0.tar.gz
  • Upload date:
  • Size: 571.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a5d152071117757a99129f81e217ed3d8306bad169c94299bd283147dd19de1b
MD5 09f5412224f242aba8ef6a64787326ca
BLAKE2b-256 42df1c7bd2f2e08ecbd80c8d5278e40172efc7f9ce404e18b8e96c38f20d17be

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 213.7 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a2d2961fd11c0a6ec6fc4a9d7b0a1d7d3f81e1be987a3d111509fe970c4f466a
MD5 ffba87a1a91f6873c5214c8d3d1ce696
BLAKE2b-256 0121fcd1aa8ef460d425009989ac831202f963b922ef3a66ab11d90e960b509b

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 194.8 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 c5f9ce0e100648de5f3f10c96ff74d04649d2e5b57c6e2da5acc693cbce43c38
MD5 4cd4e64249cc56cf06f1857bf4784daf
BLAKE2b-256 ec933d1cbd4ccc5c666844e147d2e88d8a7e760b1d71700099b30ec04b81ed2b

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 03ba48ff9fd23f0ff544f822bb4545c1bc3cfb323dbecccf38c1a04708c60944
MD5 fab2032a11c14bca7145654cba0de897
BLAKE2b-256 ee9eaee3b062a6bc4ff09d409e0dee8afc8d1bec7e74fcb78da4074896c42883

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 74ad01ba5f51e2ececf1b1a6932111756d0e7cf3e0e989f3f44e4fb36136cfb7
MD5 19ee02e428c7ae4fc89aa81cfab75498
BLAKE2b-256 266d73ab2342316836e442ead6649a88743b86e4564922c6a653260587befb19

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2c9412e036b4275fab23fdacaffe5d1f0f3a6b128e72fafddcd993a4963197b
MD5 dcc088acfa091db33d971f83e09e92ca
BLAKE2b-256 64f297e4bc67ff5f41488a922f9b3e069b6a1049ab99622f9b801d153fc8be90

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 213.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 75cf56eeb2f53f4636a2d563bd6f8230f162a4baaab608e9ce27201bb0632145
MD5 4d1136d1ce3ca162180501a7de5ce5be
BLAKE2b-256 0c0af3b521ccba6da63e3fb34bb63ff8e18dd9036ce12a31494195420dd2af7c

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 194.8 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 4bd49bb84ab059f53792c4b352eef013466270c1768996f67d982dbed42591d3
MD5 618c892678c24db844d901f372ba9c3e
BLAKE2b-256 10912a6efbf4abd7caa06655cc25aa53bf89defa922ec28660ffba9b7dc65795

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c8f712676ca7e35798374b0f8e6e7de9c9aade750bc2ee49594770b9ca371218
MD5 e278cc8b5c93569fb50965c9053e874d
BLAKE2b-256 cd72dd88a9e19db8bdabd63f9bc64116c3d7b3ae92de75f8982de77c1ec5a464

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 24ff9c6ca5fc50011eaa24fde31111da4e97d1402055a55498e9390163d46361
MD5 82750220857ad22ff10043f60a636e15
BLAKE2b-256 5a6b06f77767eca4edab835f2318724f350335c88861774a34110494a1f923d3

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 780cc15940cd730c4bc96ae8bf691fb2ea22396148331ec5e5b811e6e728788a
MD5 5b569a33c201d49a4fb2074f9659c215
BLAKE2b-256 f4f0c4b5fd0f04b53ce3544b4a998dfdfd192469395ce5898c5011fb1c2dc6e4

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 212.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a5ff0fbf40f6dbc03957c2bce113c215a2823a61bf9690d571644cb084291a95
MD5 062be0ebf89dce3761d6e123f95d4ce0
BLAKE2b-256 2c54288a93ae0f43278cdbf60a37c4c63ce07e710008227462ba1b0c0e68e3da

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 194.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 c1f5730947af8963eb22fc7ee0a01894434ad5d31169758a23cd5869bc8839d4
MD5 84574feda9ea150a585b1247be0a050b
BLAKE2b-256 8a3c3f2bcac9dbcf4405023415e0d3e8827169d912ff5bed9c22bf4249c59286

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efe5f3cff8ea05f0ed1a02c82d3aaaf31869328aa5999a21a93f9008429fe72e
MD5 93e05621862c1d27eeea991665763863
BLAKE2b-256 17bf624af10717f02238335dfa7acf88bcc52db2baae63d708b4abc1850d5a78

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9c2502cada173c0adc75377f4ee59cd6d3391823f6b2e715f0f4c1fb0dc5baf8
MD5 3a6d31a9d9fae84037fc1475483ba0a8
BLAKE2b-256 e0775c8539c8ceb36eec8277ce53c6c22cc860898f9a2f354b8781596457158b

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6aa0b99bbea4acef2f6f00c5ba765e5712cbdb21d16291a48958cc6681b01566
MD5 28560ff2c984b7b1ebbc41ccc4822f72
BLAKE2b-256 dccc92d820d7a7cc35df258aff174ea0055e3683dbffe0b18814425f32e28b43

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 212.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0d2e3e6d5b0dbcc89f65bcbad2a7942a734f068249c10aaca4e96033e65e9ce4
MD5 4dc7eea943e53471710798857a151d47
BLAKE2b-256 5c16fca7045eadebdcaaa94deca1291317d25652057e6467e344b7d4fb1775b9

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: pyvoro2-0.4.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 193.1 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for pyvoro2-0.4.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 8c9942b32f2a681c220747103a0883810f82c226f882716b4a813d790ceae3e3
MD5 b1c141553506fc2b6686bd350eb1644a
BLAKE2b-256 6a95c16a2f1794fc34e26923cba6a85f81f6fdc8308b3acc2b1018cada7ae728

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f684a8e5eb8a0fcfacdc90c188e33410a90a122e7122d7e06da40082f1be4a40
MD5 0ccf815cb41491978a06ec4ce7c602b2
BLAKE2b-256 483ba3ed700c2f8d7430c87c1e59f57eef42cdd58ca6e9099f508067df232074

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 40d799ddc5002e8cbcba05dd2922595d278db62b9c4c18da76014d8113876f96
MD5 2a59deb74a119006881abf1dc1494357
BLAKE2b-256 410db6c74c43633da546f87415070dbf12b9272a85cfdeb6d865cb0154d5c2ea

See more details on using hashes here.

File details

Details for the file pyvoro2-0.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvoro2-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4f9c8ba35882d3d0b7d1ab1ae8c90058de89800f83f21e2cc61b9976a998349
MD5 203e3326ee123877c3328a24d830dc50
BLAKE2b-256 e5a55b03e49c0fff8e61996d51034f8ac38b9b3d2dc61b8649d24c06df067cf5

See more details on using hashes here.

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