Skip to main content

A wrapper for hmm

Project description

pydelatin

A Python wrapper of hmm (of which Delatin is a port) for fast terrain mesh generation.

A screenshot of Glacier National Park taken from the demo. The mesh is created using pydelatin, encoded using quantized-mesh-encoder, served on-demand using dem-tiler, and rendered with deck.gl.

Install

With pip:

pip install pydelatin

or with Conda:

conda install -c conda-forge pydelatin

On Windows, installing via Conda is strongly recommended.

If installing with pip on Windows, glm is a prerequisite for building from source. Open an issue if you'd like to help package binary wheels for Windows.

Using

Example

from pydelatin import Delatin

tin = Delatin(terrain, width, height)
# Mesh vertices
tin.vertices
# Mesh triangles
tin.triangles

API

The API is similar to that of hmm.

Additionally I include a helper function: decode_ele, to decode a Mapbox Terrain RGB or Terrarium PNG array to elevations.

Delatin

Arguments
  • arr (numpy ndarray): data array. If a 2D array, dimensions are expected to be (height, width). If a 1D array, height and width parameters must be passed, and the array is assumed to be in C order.
  • height (int, default: None): height of array; required when arr is not 2D
  • width (int, default: None): width of array; required when arr is not 2D
  • z_scale (float, default: 1): z scale relative to x & y
  • z_exag (float, default: 1): z exaggeration
  • max_error (float, default: 0.001): maximum triangulation error
  • max_triangles (int, default: None): maximum number of triangles
  • max_points (int, default: None): maximum number of vertices
  • base_height (float, default: 0): solid base height
  • level (bool, default: False): auto level input to full grayscale range
  • invert (bool, default: False): invert heightmap
  • blur (int, default: 0): gaussian blur sigma
  • gamma (float, default: 0): gamma curve exponent
  • border_size (int, default: 0): border size in pixels
  • border_height (float, default: 1): border z height
Attributes
  • vertices (ndarray of shape (-1, 3)): the interleaved 3D coordinates of each vertex, e.g. [[x0, y0, z0], [x1, y1, z1], ...].
  • triangles (ndarray of shape (-1, 3)): represents indices within the vertices array. So [0, 1, 3, ...] would use the first, second, and fourth vertices within the vertices array as a single triangle.
  • error (float): the maximum error of the mesh.

util.rescale_positions

A helper function to rescale the vertices output to a new bounding box. Returns an ndarray of shape (-1, 3) with positions rescaled. Each row represents a single 3D point.

Arguments
  • vertices: (np.ndarray) vertices output from Delatin
  • bounds: (Tuple[float]) linearly rescale position values to this extent. Expected to be [minx, miny, maxx, maxy].
  • flip_y: (bool, default False) Flip y coordinates. Can be useful since images' coordinate origin is in the top left.

Saving to mesh formats

Quantized Mesh

A common mesh format for the web is the Quantized Mesh format, which is supported in Cesium and deck.gl (via loaders.gl). You can use quantized-mesh-encoder to save in this format:

import quantized_mesh_encoder
from pydelatin import Delatin
from pydelatin.util import rescale_positions

tin = Delatin(terrain, max_error=30)
vertices, triangles = tin.vertices, tin.triangles

# Rescale vertices linearly from pixel units to world coordinates
rescaled_vertices = rescale_positions(vertices, bounds)

with open('output.terrain', 'wb') as f:
    quantized_mesh_encoder.encode(f, rescaled_vertices, triangles)

Meshio

Alternatively, you can save to a variety of mesh formats using meshio:

from pydelatin import Delatin
import meshio

tin = Delatin(terrain, max_error=30)
vertices, triangles = tin.vertices, tin.triangles

cells = [("triangle", triangles)]
mesh = meshio.Mesh(vertices, cells)
# Example output format
# Refer to meshio documentation
mesh.write('foo.vtk')

Martini or Delatin?

Two popular algorithms for terrain mesh generation are the "Martini" algorithm, found in the JavaScript martini library and the Python pymartini library, and the "Delatin" algorithm, found in the C++ hmm library, this Python pydelatin library, and the JavaScript delatin library.

Which to use?

For most purposes, use pydelatin over pymartini. A good breakdown from a Martini issue:

Martini:

  • Only works on square 2^n+1 x 2^n+1 grids.
  • Generates a hierarchy of meshes (pick arbitrary detail after a single run)
  • Optimized for meshing speed rather than quality.

Delatin:

  • Works on arbitrary raster grids.
  • Generates a single mesh for a particular detail.
  • Optimized for quality (as few triangles as possible for a given error).

Benchmark

The following uses the same dataset as the pymartini benchmarks, a 512x512 pixel heightmap of Mt. Fuji.

For the 30-meter mesh, pydelatin is 25% slower than pymartini, but the mesh is much more efficient: it has 40% fewer vertices and triangles.

pydelatin is 4-5x faster than the JavaScript delatin package.

Python

git clone https://github.com/kylebarron/pydelatin
cd pydelatin
pip install '.[test]'
python bench.py
mesh (max_error=30m): 27.322ms
vertices: 5668, triangles: 11140

mesh (max_error=1m): 282.946ms
mesh (max_error=2m): 215.839ms
mesh (max_error=3m): 163.424ms
mesh (max_error=4m): 127.203ms
mesh (max_error=5m): 106.596ms
mesh (max_error=6m): 91.868ms
mesh (max_error=7m): 82.572ms
mesh (max_error=8m): 74.335ms
mesh (max_error=9m): 65.893ms
mesh (max_error=10m): 60.999ms
mesh (max_error=11m): 55.213ms
mesh (max_error=12m): 54.475ms
mesh (max_error=13m): 48.662ms
mesh (max_error=14m): 47.029ms
mesh (max_error=15m): 44.517ms
mesh (max_error=16m): 42.059ms
mesh (max_error=17m): 39.699ms
mesh (max_error=18m): 37.657ms
mesh (max_error=19m): 36.333ms
mesh (max_error=20m): 34.131ms

JS (Node)

This benchmarks against the delatin JavaScript module.

git clone https://github.com/kylebarron/pydelatin
cd test/bench_js/
yarn
wget https://raw.githubusercontent.com/mapbox/delatin/master/index.js
node -r esm bench.js
mesh (max_error=30m): 143.038ms
vertices: 5668
triangles: 11140

mesh (max_error=0m): 1169.226ms
mesh (max_error=1m): 917.290ms
mesh (max_error=2m): 629.776ms
mesh (max_error=3m): 476.958ms
mesh (max_error=4m): 352.907ms
mesh (max_error=5m): 290.946ms
mesh (max_error=6m): 240.556ms
mesh (max_error=7m): 234.181ms
mesh (max_error=8m): 188.273ms
mesh (max_error=9m): 162.743ms
mesh (max_error=10m): 145.734ms
mesh (max_error=11m): 130.119ms
mesh (max_error=12m): 119.865ms
mesh (max_error=13m): 114.645ms
mesh (max_error=14m): 101.390ms
mesh (max_error=15m): 100.065ms
mesh (max_error=16m): 96.247ms
mesh (max_error=17m): 89.508ms
mesh (max_error=18m): 85.754ms
mesh (max_error=19m): 79.838ms
mesh (max_error=20m): 75.607ms

License

This package wraps @fogleman's hmm, a C++ library that is also MIT-licensed.

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

pydelatin-0.3.0.tar.gz (99.7 kB view details)

Uploaded Source

Built Distributions

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

pydelatin-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pydelatin-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pydelatin-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (216.1 kB view details)

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

pydelatin-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (208.9 kB view details)

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

pydelatin-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (174.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pydelatin-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl (189.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

pydelatin-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pydelatin-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pydelatin-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (216.1 kB view details)

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

pydelatin-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (208.7 kB view details)

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

pydelatin-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (174.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pydelatin-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl (189.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

pydelatin-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pydelatin-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pydelatin-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (215.9 kB view details)

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

pydelatin-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (208.7 kB view details)

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

pydelatin-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (175.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pydelatin-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl (188.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pydelatin-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pydelatin-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pydelatin-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (215.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pydelatin-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (207.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pydelatin-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (174.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pydelatin-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl (186.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pydelatin-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pydelatin-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pydelatin-0.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (214.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pydelatin-0.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (207.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pydelatin-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (174.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pydelatin-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl (186.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file pydelatin-0.3.0.tar.gz.

File metadata

  • Download URL: pydelatin-0.3.0.tar.gz
  • Upload date:
  • Size: 99.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pydelatin-0.3.0.tar.gz
Algorithm Hash digest
SHA256 14b6b594bd31e5b0324a662b434ac6afa4d21ab72fa3116549507c4cfdba6552
MD5 3f0f7b78e3c2a9af6157a8c4b8ce126f
BLAKE2b-256 fa83a24996ae8f29a5a3cae61f7433e358d50876fa6bbe3d08cb76ef7dac5222

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6924e7958ad377eed93a2bbef0cb9d9fd8a6e87aad9a76233d53c09ba23a05a9
MD5 937ef40b91767cbe2b37b5591f74597a
BLAKE2b-256 dcf8c9b01b43ae3e35949a86bbf84eb036317b5680f8b54ad03234ae6b356b15

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 faa1bd32467924b62e68949af06b332636dd13988cd65b228211130ea9646aad
MD5 67255f8b2283cc33cb7aa35a0aaada16
BLAKE2b-256 f0e53039758c90860dc65467aefef6b10db7584a30ce21aad7e8814db43f5109

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a210f680040da6fae2ced7de1900ca5292c2db63ae212f413a38fc6b1fcac84e
MD5 5b64f69a12e5ff6d4ce1c35d85d4cdf3
BLAKE2b-256 90d80364d6d570e66a36614434841c89ba2df0731397455064a18005699c8f57

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5abead7bef2cee0b09e0127a23ce1bc426eeb420d0da18f048800eac86af66c8
MD5 6f7aec5e09ff95727b667a48ef96bfa2
BLAKE2b-256 5ed17540e45ffc1d32c1914da97773a4a239241b0ef3f634083197295991061f

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0aac92d42d9a2811608017b3fd83f82b997fb8912c6e9b3440c20fe8b269b3a4
MD5 eb083bc8fd64c243bb7601a54ef2818b
BLAKE2b-256 e8eb48d113fa6d2ffd62d13964350969335ea2bbb2e7331128fd2a88380138b0

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5aea57e7586c3f5a6a976f289d4a200eadbbfcc8dc5137528dc2a0179e3cdfa9
MD5 124481fe1da684ccfceace4adde5308f
BLAKE2b-256 832d3608dd8d6c3606b8e047be7aacdcef94706e2ab6bbbcfe9c429c1d8b5fcc

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c71d7d6c0891ee35017e380019590478a2b1e788e75a70ce5fa0c7e2e705a7e5
MD5 120a9c20a3975cc9c941a6cdd45f3df6
BLAKE2b-256 0986e882ca4c5d8df3e4089f2f658f3ed03ba01b51f6d8c51d19df3ac3e77cfa

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a0169d668ae91b13f33038d3832d1a74da4445c2a5cbc6c37c02d984f7e7c943
MD5 716e7b5b64e18ab18e52ca51d2938cbc
BLAKE2b-256 a59f809cddb3f8d6220c005fe6042810d15e6e312fe17b59d6936ad75060e3d8

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 891efaa8b5f4f8ceb7c151c0e5e69f06ce931fcfccadb3f1c6ed4190e00a9dd1
MD5 ca4d46e7827320dfa14fa6dd508f649e
BLAKE2b-256 4b27f4a59aa22a0ac61d092373561c4d85b4bae0a2c6935866fcb8e8629b58c7

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7997ff8d10e0f5d928543037389050c1101f9114d8fc1479048b804f19dff20f
MD5 73d8b168a78aad03c6823b82864cd55f
BLAKE2b-256 bc2abacaafff95d9b63cc0df0fd928c229c4e70bd38d28584b31084bb1b94b3f

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 205e755e35a978714851502bd431af13db39720150b548b93e55c06d497202bd
MD5 acb8b722e47fb308914d46079956c478
BLAKE2b-256 5665e3795c32979da5ba116ca6542fca17e6ae31e6dfd84e99340f805688d1c7

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ecafcd0b3a8d870aeabe8a9a47ddcc7a37c6577e2ce76047fbfb79564d12d591
MD5 176d364b995c30dd66d0c942b7270605
BLAKE2b-256 bcd1b3f4ae6b81a2076cda0ee8ea36ebcf714cb73d5c79e508813730cff6d215

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d3a4a7d725d496365f0a0130cea6d28a8b05a06fab455ca98279e3fbc3768295
MD5 03eecd398440fea3082bfa7a67ff19f3
BLAKE2b-256 c65136b663b4995cfbd5ca18bec0855af25c896e47f03a07ff78256b6208d049

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e20364a5835e1ff54686987af175c761dbb2c5efb76ebdec6ce806e6ad7ea08a
MD5 c06ff02b29cb34dfc551316ae9d49e39
BLAKE2b-256 ce6e8612fa961a251290314b3982690db86da1eb611ec6067ed2174cce51152a

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 739d86902bff9bb8b133d000b40c06af5d00261481f1a37d766c03c004ec26b4
MD5 6d17c1c80b9ad8ce27030f2b9845b6b1
BLAKE2b-256 6c7f251589995c9b6ca093b1ce081149982a4636e48eca1bcfcf8671e720ce46

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1d091f7ab17916c4e40b1a0dca2a79b4e246d129d0098989d57a19250b4d8dac
MD5 c88cd5bbd24dc8c3e892b629045517b0
BLAKE2b-256 33890a5d294b73273be111679ae16731a889c7652fc89ee47539ee50ff99599a

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75d27f0ff6fc3b90f466c69ddf4b9fa9aec3ab749d57c693f9f748106e022371
MD5 319ebb7e9cce191e3150e99b7b308520
BLAKE2b-256 7f3f2296f48318929d489f66e5d6ef2fc787054a19f9d41835fd3d97a5aecd1b

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 73badd72dcb334fde2866d161c2faeb4d688d260f490eb62bafaec2774890fed
MD5 768ee9c70191401934fa5765603a0400
BLAKE2b-256 43b2d66be48ad7c2cb18f2c48869180ceaf89c20a9e093115ab566fc08d0384a

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c5833c88a26730c4963745ba2b7855c7b841b4ee156ab37d87c813e98ad0b6c3
MD5 ecd7b18cbf9c7126b38cd88447d24472
BLAKE2b-256 ae0adaf61384d5272583254becf64c899b53950d2b24edfbae972d1c187a2c32

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 af812595b103fdfca00369de952b6e64ee86f2fa9022934f8bffd0b53ea605e2
MD5 952fa042f2b400adbf1a11a9e1d62c2c
BLAKE2b-256 182231d788455979979d2a81b91f0471d9bfa3767fb0d14f53fabc7119fe6523

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 901711a415f92da527ba62a8f2e505ddd159a7eaad1a31ace0e689ce33ecd9ac
MD5 d082a143f629e74303e41271e6777c13
BLAKE2b-256 0c216ec9af11399d65763e96b5f5bb37b6cac0daddaab769c5325bab7e946366

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e651c802d705c9513356a729321dfdb780cddc17103090c0b52d99eb42de9ebb
MD5 0cc522c5850510646ee0254eefc882aa
BLAKE2b-256 899fae6433c6ee5458a2ceaef02edff8a42cbb3f464729c81eb0a3c4c03b6653

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62837066aa36d25968c32ffcb0968d9cff19a28ac13b30ea565a861e2a4b9acb
MD5 364a770c961cec23d2d80f18ef2599bc
BLAKE2b-256 040160e40bca7dc9b14ba1c2f3a43f1e9cde1b260f11961e26926067e7be2c25

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 85a61a1bc6f03bfbc5febda8822c0f01e9150743908addc6a345694c9cf23df3
MD5 83eaeb933ce91986c3a85f71a17edba4
BLAKE2b-256 ce1163939b134ee8277c2cf39d129ba4b9d247bbbe11e9f91f0ef848ed86e304

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f7e04935490b23689f35d9b275105248b53c393bcdf2b293c61a7dbe3223f0d0
MD5 0461e8001ee62666c9de2f3fa4ec798b
BLAKE2b-256 70730fed2d7c7fc62bc752a0eca552a7fb0c9eb587265f12802550b52017196d

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bb75fb42513c512a2f311e36e2b7e2492a6391de10046869fbaae6f4d2246f97
MD5 ee851e96998b7518fd9fdb0e7fdf9a49
BLAKE2b-256 e0bbd38bb6dd292bd37ce29f5fb5a414fd14e623fa8cfce128329a6294e45e70

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dc059845951aef51fc6f9e544da8f307ab363b665da0a9e5cc4d9bc90a385fa4
MD5 00f9ac5ba86f5f7af3852cd01fe49b36
BLAKE2b-256 e59293cddbcb00d2de94c87e283a8cf767fc959b77da939f78124980e1371f2f

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 313325b3718c109b9247b3d9c86628ec3515354d9da87eae55d808cf0d88f39d
MD5 e61b7779043a538cedccec7163e85424
BLAKE2b-256 18992ac74fe60a2d161561a5fb3d63b2604a934ab8aaa7134ec4c7a9ad4fbdea

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4188c43bb1abeff2de934080f148a5f3962f8df25259526638051d905af1be30
MD5 9a39a6464fdcc9ca3e85fa51477ae059
BLAKE2b-256 945bed5dfcdb7af06bec3792ae6311cf3f38abece7c5cfb277e12431460d2b24

See more details on using hashes here.

File details

Details for the file pydelatin-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydelatin-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bf2905c0a3b420acf17b5974bd518e7bd915dcdc73029046f4505e933acadcf2
MD5 1dd9d2583c903808fef5b9f477b7db92
BLAKE2b-256 0ecfba3fac30db6efbbdf83f6dc9a4afb55a0b525755088c969d1fbc5238d700

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