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
(numpyndarray
): 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 2Dwidth
(int
, default:None
): width of array; required when arr is not 2Dz_scale
(float
, default:1
): z scale relative to x & yz_exag
(float
, default:1
): z exaggerationmax_error
(float
, default:0.001
): maximum triangulation errormax_triangles
(int
, default:None
): maximum number of trianglesmax_points
(int
, default:None
): maximum number of verticesbase_height
(float
, default:0
): solid base heightlevel
(bool
, default:False
): auto level input to full grayscale rangeinvert
(bool
, default:False
): invert heightmapblur
(int
, default:0
): gaussian blur sigmagamma
(float
, default:0
): gamma curve exponentborder_size
(int
, default:0
): border size in pixelsborder_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 thevertices
array. So[0, 1, 3, ...]
would use the first, second, and fourth vertices within thevertices
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 Delatinbounds
: (Tuple[float]
) linearly rescale position values to this extent. Expected to be[minx, miny, maxx, maxy]
.flip_y
: (bool
, defaultFalse
) 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pydelatin-0.2.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65ac6e5fb1b6367193a39a839e937acf536243ebcb79dbfe6b75c024698bb118 |
|
MD5 | f41093331f2e4998fc540d95e363a80f |
|
BLAKE2b-256 | ab4fffee7ae67dae96bdbcfc08c01070ad813fa80a5ca626ab89472606333b12 |
Hashes for pydelatin-0.2.8-cp313-cp313-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99b927b88cd882eb6904dcb215ca8e6c58f53356a67dba7673893e4552cbaaac |
|
MD5 | 60e6e08ad2a738d636e2c9010ad55cfc |
|
BLAKE2b-256 | 7894700e6196ac5c776035204861481ebaf5d6a5190872e00a8de26b5bb24d19 |
Hashes for pydelatin-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d7d8135acd71f3e54f4a9a35537b40a3fcc7f0b070ff4303e85d672a694a787 |
|
MD5 | 913ab339818eea9526c35a10483fafbc |
|
BLAKE2b-256 | 1fe8a7d82891260175fd3dd8e75205ed65321b13feaaefcd51a5489987a57134 |
Hashes for pydelatin-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ff79e1182f465cb579c6e78c04dccbe5338ce58b647fa33b71ca2684091d595 |
|
MD5 | c5e814550efe210f9b2d3094ee1ddd32 |
|
BLAKE2b-256 | d20bb3bbc89aad57b68a13e6ea64c5625d742d4a2aedd84a3b6c1094652fa1f5 |
Hashes for pydelatin-0.2.8-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebdf460fda9b0ca6391929d3137e3d37e8cb356bf18d051608e02353a2463a7a |
|
MD5 | 606a52c808452d0ef0c578f632673d0e |
|
BLAKE2b-256 | bf345c0110cbdae4f6942fc5f46202c29d5486ddf0d7bdfa601e8f68184710b6 |
Hashes for pydelatin-0.2.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff16fe21870833dacc39e4dd04dfba6a1667c6b2fc8581288a00cc44145d15e2 |
|
MD5 | 0eeba4aa8926e9a386a2e08d22f34739 |
|
BLAKE2b-256 | 12009da2c7ea815c6453a923763d6e1df79227e1edc61922192b060d2486094b |
Hashes for pydelatin-0.2.8-cp312-cp312-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fd16c27551259789cb016134c9e858996f7d30aac5ec61914459375e75f0973 |
|
MD5 | 106809201c2405666b37d28ab2f40762 |
|
BLAKE2b-256 | e29dba005417b53d56deaab51148be176fe76f59a5b0dbd52c4c6b5b29f2121a |
Hashes for pydelatin-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 787068472a6c461c4da78f35ac65e88facb70650b359604cf30519c81cb31cd2 |
|
MD5 | 2e7138c3e826742658b5bf4593d20144 |
|
BLAKE2b-256 | d02b9cd09d8b2d31ab969e3ce17f788441bb2d7ef1ab460ebb643310186bb8db |
Hashes for pydelatin-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f981c42cf763ac4ef54c36314a6adae4f3ab8dca09ef242e22f1cb1fa7d90feb |
|
MD5 | 06c5d71616350aa4a2017e266ce3e6c5 |
|
BLAKE2b-256 | 5535a7174be376110e2998ae82d63299de37c17fc8bf36df662abf6388c5f1a0 |
Hashes for pydelatin-0.2.8-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 165aef70518c832770361f2a405f75bbbc3762063ca860ad6db9fc74afdf7560 |
|
MD5 | 2af51c54b982e3314a44de3d71111d2f |
|
BLAKE2b-256 | 483ccd56f3d5445cb97553a6ea1ad7a2720fa84c4d397ac880238c628610d593 |
Hashes for pydelatin-0.2.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8f582a3cf6b662fae662008be92e7f86bf3079fb98ffdcfb6ced304ea48a81f |
|
MD5 | d559140570a7eab288af62c95a2d9081 |
|
BLAKE2b-256 | 1a38ab411ae137edba41bb6d54d85f2ea7a942659af36e97fde792ab1d0d45d9 |
Hashes for pydelatin-0.2.8-cp311-cp311-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af39d07b74e1f5ae6392e4d2f144581090f6e3d6bd369793ac09d64a38b21b94 |
|
MD5 | 51dfedfe7b86ce56eae205ebf55e2d4b |
|
BLAKE2b-256 | 5a8c2c2e7b6d88e3546edf8ef59e27cad2e89e22c54a64838c97814b93e97b6a |
Hashes for pydelatin-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4f2c48e7c95e8b12e0e8f1448db8149824207f05e58474c4a944845b621b938 |
|
MD5 | a0f0082970ba00f782a5dc682e177952 |
|
BLAKE2b-256 | 9563fa95b3ea37fabc3174e1477a98df7013f6328bfea1fbe76c0902ad2308d9 |
Hashes for pydelatin-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12fd4102782c27b40659c18af1287988b05783d2b7cecd77bf512f65378e5d95 |
|
MD5 | 2b366e85d9a3a1a98193ecd3ad790ad6 |
|
BLAKE2b-256 | f7163822a2bc33420475799f45fa0bd1cd8fd909207f0b06bbb35b386af4fe23 |
Hashes for pydelatin-0.2.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 962f5c67d1738f0e41b159d80548e30b2d9427e59fc1446a1dda59d1466939bc |
|
MD5 | 335f14ee2cc2d379358ae97f5aca9c8b |
|
BLAKE2b-256 | aa9dcbda2c36b16b82479d7c87acf4612712a3e66bbc242b85170be53145aa24 |
Hashes for pydelatin-0.2.8-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d4ab050a3460c388881e1c40598475baa4d647a995f790aafdf84e8907c7703 |
|
MD5 | 65edecd645f7db3bd485d56100477148 |
|
BLAKE2b-256 | 3734b3c362f5d0cab827617edfbd9538b00a259fb529b0c6afbffcb9f145c5d0 |
Hashes for pydelatin-0.2.8-cp310-cp310-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a89c21e62130f8571c5565ab7f048aeea101fdcc4f2b719a84c292e78f9cceac |
|
MD5 | 1b912f075732805ccf15ba4180bcdab4 |
|
BLAKE2b-256 | 1ae06bc34b6a822b30005e612bc6aaf4f15ac7a87914829cdaf23e9213afb9fd |
Hashes for pydelatin-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1cf6adc47dddb9da6e25964a3ac9ca6f08406aa3d3a0a97298b6fb18e474538 |
|
MD5 | a3c4dce6867ea56f165cad53ff06e146 |
|
BLAKE2b-256 | d5eb144e2f5095c2253e5f38543980468d7d3ee4e581c8d1d2afebba2ab0fbfc |
Hashes for pydelatin-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d32901431d01e0e89a03958edda060c83fb7c6b4c90dd367c39fd5863f73ef0 |
|
MD5 | c681001a6d5871e782cfa59875a05d0a |
|
BLAKE2b-256 | f8faacbce16f508962173ccd02ef07cd1b5db53e6bd3c348b533b941f1a39e87 |
Hashes for pydelatin-0.2.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc531514acb57a849580cb82cdd3d14643d467781e72712e3f57b2887aecd781 |
|
MD5 | 166a43bc7494af7c852e5aae6ee1b074 |
|
BLAKE2b-256 | bcefa6917e743c77bd4e3f1e86ae8023c374692377517206bb1fd5911b216568 |
Hashes for pydelatin-0.2.8-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f3e2dac384e2eb3cc37d658223154a46913219f684cfa6d8ce780244503592e |
|
MD5 | 741d39d0df0213c0de2c61aa07c6c4d0 |
|
BLAKE2b-256 | 05f2870488dba26a74bead3e9b7e852e6ee778338473d857c54553ec223652cb |
Hashes for pydelatin-0.2.8-cp39-cp39-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14806900f1cb194a992d485d44b87c101d3e09a8f97e2878a34b13593a278f1b |
|
MD5 | ea7b37677b8986e38265cfe2d4956d34 |
|
BLAKE2b-256 | 66d4a5bc13f2a786eddd431d323e107f940107453ede084e3779f68dbdfc455d |
Hashes for pydelatin-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60207c01fdb3e62767d157a1468ba56c5b9cc5343b81aa1bfa7f77cd91f14a73 |
|
MD5 | 0468449e41194f0bc6aac6a680a7d5b2 |
|
BLAKE2b-256 | c5e70b720fe64ad39c0b34ff8ad16e0127c81e4deb92cc2493a54db03f07b8f5 |
Hashes for pydelatin-0.2.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65456b6c579b653a85690f533d65321eaeb4cacd463b1830ebd621ec28b9543a |
|
MD5 | 775f52c641e9f0a778e8aa9a5f76e1e8 |
|
BLAKE2b-256 | 9ca90fd2805c680fea91d21672c3f1bb6887d491b3a9090f8e648874a2150f2c |
Hashes for pydelatin-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9db31337ad319375fce84e52b2abe7747cb123f117f67c748fc6ab1b55f79410 |
|
MD5 | 64e5aab603e035ec40e65366983fdd08 |
|
BLAKE2b-256 | 430049408372c385d6ffe87a7ed0fc915dfb6027ab0b95c3fee0644a700f2454 |
Hashes for pydelatin-0.2.8-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 308e8b6e0dd737dcf7b5f48a64006037b016ca66e2e380eac2c844550759aa0c |
|
MD5 | c0066750ad8db5f0a5641935c9c29866 |
|
BLAKE2b-256 | 80e0f460cc0fb81547df76397510247813b0ae00aef4ec8c7be9b825e1947d59 |
Hashes for pydelatin-0.2.8-cp38-cp38-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a979413249ba79f36b8cb298988545033b1b1e48af003539af11fc6f216b2e5 |
|
MD5 | f76bb6ce3339af67aa28a74580ed0ff5 |
|
BLAKE2b-256 | b1951f0e300c95932037ca3712d05e5cdd7015d46071e87701d08fbd9c3b3bff |
Hashes for pydelatin-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d797041be66ae2da9b03e5e90c6930a66e843111e08446b0c24c11bc3453c4a2 |
|
MD5 | f6ed3c22f685d1bb51978826ac6e1798 |
|
BLAKE2b-256 | d8fbad6c1391a36d86c5b92b329911f08e9bda5ec2f7ca7da93556886d9cfc38 |
Hashes for pydelatin-0.2.8-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fd063eb7da7c39261f0de7852ddf75e5e690f875a9abe049316db8933aa1430 |
|
MD5 | 7387478b8d396e994f0b751daaece75a |
|
BLAKE2b-256 | 8f451995f45ef7ec3c5eb51f5eafed9c713c491a30a5a782911c5077d97bac07 |
Hashes for pydelatin-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20ba685d9ab7a822edd5bd062c211d7fceb0f998dd43f7785a842258cee46800 |
|
MD5 | 75bfb13d88665880a2d3508f07d971a9 |
|
BLAKE2b-256 | ad92d29525ba69d7ff3d120f68cd8f6f81a0a772e33f16d9505c9ead1541317f |
Hashes for pydelatin-0.2.8-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e952185151ccbed8c8b986e4b022541ea7e1693e509213e427c3c3bae902eb07 |
|
MD5 | a3bbee6be68e5c5f18a1765688d7aae7 |
|
BLAKE2b-256 | c364fc02959e53d28580acc63446da8f295c7b5edfa58d2840c8a4b364aa90c9 |
Hashes for pydelatin-0.2.8-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3a488d19bb9f7b4ddd3502748a6927aee9205ebd80df3d81f69b6114c4a351e |
|
MD5 | 0b3defe70eaa4a2f8a34ae1fca4c8b45 |
|
BLAKE2b-256 | c208c4bddb5bf8a8ca27d7821a9d1b4f5bbe57e4bba579963c4e266ed16dfbbd |
Hashes for pydelatin-0.2.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff82c6a7342137efde348684272857cf72262c414c048db0230df87ed7a63c17 |
|
MD5 | f883aaec7ea7628f37de163fed061a1d |
|
BLAKE2b-256 | 34f3a41b9c219498be7478786299effb1bc1bb464ffe3fd0e8e5430fc5d551d1 |
Hashes for pydelatin-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9e1da8020f720ba1b04b159513db28fed11d0c14ccfa933c08b6821b15ad051 |
|
MD5 | ed3bfdb24f323385e862ba6227830dbe |
|
BLAKE2b-256 | 6e4c911d9d5dc76f5691ab8a0d7e15f37314c5d912f500fb724795c1a9667571 |
Hashes for pydelatin-0.2.8-cp36-cp36m-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cc006ff1d0b8170819e12673a989d196263657939f8e3d15527cb8e372fd3bf |
|
MD5 | 2fe9c186360902e775609658bc223506 |
|
BLAKE2b-256 | 4ff6612f404bf4d782746e61d4f08dfc567f6f4937837ad4e81f4e7a937e53d6 |
Hashes for pydelatin-0.2.8-cp36-cp36m-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aed2a0a3a10aba4e8a27b02d6742d799828144bc65430a97af796c4b9bc635d0 |
|
MD5 | 1b05f2ce6d02249f2ae46895cce06a27 |
|
BLAKE2b-256 | a88d69c0c36374e3f6d1d32106899f6c1f265b61aab3e19aef81c33b5946d7f7 |
Hashes for pydelatin-0.2.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f234d8c1bb3845092bb57f7fa2a6d0c0a2fe1c84f8b18bcf96363edcff7c261 |
|
MD5 | 08a6d92e95a605c8b8a29e84d74ba1b2 |
|
BLAKE2b-256 | bf55d28b483a96d2b2c7677f458ecf42028d2ed447bf96b6b0d733037806ed6f |
Hashes for pydelatin-0.2.8-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b12c6b21c688f7c8dc23fff5e64eb453c7e7d8bad580417fb48c6b13a58aa63 |
|
MD5 | e3ddcb59cdbde11817d710b8ea5229f1 |
|
BLAKE2b-256 | b584b3889006c191ef938a5cb60a5099a7f6c82fc8977344989ae59c25b9ab18 |