pydelatin


Namepydelatin JSON
Version 0.2.8 PyPI version JSON
download
home_pagehttps://github.com/kylebarron/pydelatin
SummaryA wrapper for hmm
upload_time2024-08-26 16:48:11
maintainerNone
docs_urlNone
authorKyle Barron
requires_python>=3.6
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pydelatin

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

[![][image_url]][example]

[image_url]: https://raw.githubusercontent.com/kylebarron/pydelatin/master/assets/glac.jpg
[example]: https://kylebarron.dev/quantized-mesh-encoder

[hmm]: https://github.com/fogleman/hmm
[delatin]: https://github.com/mapbox/delatin

A screenshot of Glacier National Park taken from [the demo][example]. The mesh
is created using `pydelatin`, encoded using
[`quantized-mesh-encoder`][quantized-mesh-encoder], served on-demand using
[`dem-tiler`][dem-tiler], and rendered with [deck.gl](https://deck.gl).

[quantized-mesh-encoder]: https://github.com/kylebarron/quantized-mesh-encoder
[dem-tiler]: https://github.com/kylebarron/dem-tiler

## 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`][glm] is a prerequisite for building
from source. Open an issue if you'd like to help package binary wheels for
Windows.

[glm]: https://glm.g-truc.net/

## Using

### Example

```py
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`][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][quantized-mesh-spec]
format, which is supported in Cesium and deck.gl (via
[loaders.gl][loaders.gl-quantized-mesh]). You can use
[`quantized-mesh-encoder`][quantized-mesh-encoder] to save in this format:

```py
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)
```

[quantized-mesh-spec]: https://github.com/CesiumGS/quantized-mesh
[quantized-mesh-encoder]: https://github.com/kylebarron/quantized-mesh-encoder
[loaders.gl-quantized-mesh]: https://loaders.gl/modules/terrain/docs/api-reference/quantized-mesh-loader

#### Meshio

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

```py
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')
```

[meshio]: https://github.com/nschloe/meshio

## `Martini` or `Delatin`?

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

Which to use?

For most purposes, use `pydelatin` over `pymartini`. A good breakdown from [a
Martini issue][martini_desc_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).

[martini]: https://github.com/mapbox/martini
[pymartini]: https://github.com/kylebarron/pymartini
[martini_desc_issue]: https://github.com/mapbox/martini/issues/15#issuecomment-700475731

## Benchmark

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

[pymartini_bench]: https://github.com/kylebarron/pymartini#benchmark

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

```bash
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`][delatin] JavaScript module.

```bash
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`][hmm], a C++ library that is also
MIT-licensed.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/kylebarron/pydelatin",
    "name": "pydelatin",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "Kyle Barron",
    "author_email": "kylebarron2@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/bb/81/166417a6ddc3cbe63bbe0aacea0fdb2dd369b9638d70d9d793dfca365155/pydelatin-0.2.8.tar.gz",
    "platform": null,
    "description": "# pydelatin\n\nA Python wrapper of [`hmm`][hmm] (of which [Delatin][delatin] is a port) for fast terrain mesh generation.\n\n[![][image_url]][example]\n\n[image_url]: https://raw.githubusercontent.com/kylebarron/pydelatin/master/assets/glac.jpg\n[example]: https://kylebarron.dev/quantized-mesh-encoder\n\n[hmm]: https://github.com/fogleman/hmm\n[delatin]: https://github.com/mapbox/delatin\n\nA screenshot of Glacier National Park taken from [the demo][example]. The mesh\nis created using `pydelatin`, encoded using\n[`quantized-mesh-encoder`][quantized-mesh-encoder], served on-demand using\n[`dem-tiler`][dem-tiler], and rendered with [deck.gl](https://deck.gl).\n\n[quantized-mesh-encoder]: https://github.com/kylebarron/quantized-mesh-encoder\n[dem-tiler]: https://github.com/kylebarron/dem-tiler\n\n## Install\n\nWith pip:\n\n```\npip install pydelatin\n```\n\nor with Conda:\n\n```\nconda install -c conda-forge pydelatin\n```\n\nOn Windows, installing via Conda is strongly recommended.\n\nIf installing with pip on Windows, [`glm`][glm] is a prerequisite for building\nfrom source. Open an issue if you'd like to help package binary wheels for\nWindows.\n\n[glm]: https://glm.g-truc.net/\n\n## Using\n\n### Example\n\n```py\nfrom pydelatin import Delatin\n\ntin = Delatin(terrain, width, height)\n# Mesh vertices\ntin.vertices\n# Mesh triangles\ntin.triangles\n```\n\n### API\n\nThe API is similar to that of [`hmm`][hmm].\n\nAdditionally I include a helper function: `decode_ele`, to decode a Mapbox\nTerrain RGB or Terrarium PNG array to elevations.\n\n#### `Delatin`\n\n##### Arguments\n\n- `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.\n- `height` (`int`, default: `None`): height of array; required when arr is not 2D\n- `width` (`int`, default: `None`): width of array; required when arr is not 2D\n- `z_scale` (`float`, default: `1`): z scale relative to x & y\n- `z_exag` (`float`, default: `1`): z exaggeration\n- `max_error` (`float`, default: `0.001`): maximum triangulation error\n- `max_triangles` (`int`, default: `None`): maximum number of triangles\n- `max_points` (`int`, default: `None`): maximum number of vertices\n- `base_height` (`float`, default: `0`): solid base height\n- `level` (`bool`, default: `False`): auto level input to full grayscale range\n- `invert` (`bool`, default: `False`): invert heightmap\n- `blur` (`int`, default: `0`): gaussian blur sigma\n- `gamma` (`float`, default: `0`): gamma curve exponent\n- `border_size` (`int`, default: `0`): border size in pixels\n- `border_height` (`float`, default: `1`): border z height\n\n##### Attributes\n\n- `vertices` (`ndarray` of shape `(-1, 3)`): the interleaved 3D coordinates of each vertex, e.g. `[[x0, y0, z0], [x1, y1, z1], ...]`.\n- `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.\n- `error` (`float`): the maximum error of the mesh.\n\n#### `util.rescale_positions`\n\nA helper function to rescale the `vertices` output to a new bounding box.\nReturns an `ndarray` of shape `(-1, 3)` with positions rescaled. Each row\nrepresents a single 3D point.\n\n##### Arguments\n\n- `vertices`: (`np.ndarray`) vertices output from Delatin\n- `bounds`: (`Tuple[float]`) linearly rescale position values to this extent.\n  Expected to be `[minx, miny, maxx, maxy]`.\n- `flip_y`: (`bool`, default `False`) Flip y coordinates. Can be useful since\n  images' coordinate origin is in the top left.\n\n### Saving to mesh formats\n\n#### Quantized Mesh\n\nA common mesh format for the web is the [Quantized Mesh][quantized-mesh-spec]\nformat, which is supported in Cesium and deck.gl (via\n[loaders.gl][loaders.gl-quantized-mesh]). You can use\n[`quantized-mesh-encoder`][quantized-mesh-encoder] to save in this format:\n\n```py\nimport quantized_mesh_encoder\nfrom pydelatin import Delatin\nfrom pydelatin.util import rescale_positions\n\ntin = Delatin(terrain, max_error=30)\nvertices, triangles = tin.vertices, tin.triangles\n\n# Rescale vertices linearly from pixel units to world coordinates\nrescaled_vertices = rescale_positions(vertices, bounds)\n\nwith open('output.terrain', 'wb') as f:\n    quantized_mesh_encoder.encode(f, rescaled_vertices, triangles)\n```\n\n[quantized-mesh-spec]: https://github.com/CesiumGS/quantized-mesh\n[quantized-mesh-encoder]: https://github.com/kylebarron/quantized-mesh-encoder\n[loaders.gl-quantized-mesh]: https://loaders.gl/modules/terrain/docs/api-reference/quantized-mesh-loader\n\n#### Meshio\n\nAlternatively, you can save to a variety of mesh formats using\n[`meshio`][meshio]:\n\n```py\nfrom pydelatin import Delatin\nimport meshio\n\ntin = Delatin(terrain, max_error=30)\nvertices, triangles = tin.vertices, tin.triangles\n\ncells = [(\"triangle\", triangles)]\nmesh = meshio.Mesh(vertices, cells)\n# Example output format\n# Refer to meshio documentation\nmesh.write('foo.vtk')\n```\n\n[meshio]: https://github.com/nschloe/meshio\n\n## `Martini` or `Delatin`?\n\nTwo popular algorithms for terrain mesh generation are the **\"Martini\"**\nalgorithm, found in the JavaScript [`martini`][martini] library and the Python\n[`pymartini`][pymartini] library, and the **\"Delatin\"** algorithm, found in the\nC++ [`hmm`][hmm] library, this Python `pydelatin` library, and the JavaScript\n[`delatin`][delatin] library.\n\nWhich to use?\n\nFor most purposes, use `pydelatin` over `pymartini`. A good breakdown from [a\nMartini issue][martini_desc_issue]:\n\n> Martini:\n>\n> - Only works on square 2^n+1 x 2^n+1 grids.\n> - Generates a hierarchy of meshes (pick arbitrary detail after a single run)\n> - Optimized for meshing speed rather than quality.\n>\n> Delatin:\n>\n> - Works on arbitrary raster grids.\n> - Generates a single mesh for a particular detail.\n> - Optimized for quality (as few triangles as possible for a given error).\n\n[martini]: https://github.com/mapbox/martini\n[pymartini]: https://github.com/kylebarron/pymartini\n[martini_desc_issue]: https://github.com/mapbox/martini/issues/15#issuecomment-700475731\n\n## Benchmark\n\nThe following uses the same dataset as the [`pymartini`\nbenchmarks][pymartini_bench], a 512x512 pixel heightmap of Mt. Fuji.\n\n[pymartini_bench]: https://github.com/kylebarron/pymartini#benchmark\n\nFor the 30-meter mesh, `pydelatin` is 25% slower than `pymartini`, but the mesh\nis much more efficient: it has 40% fewer vertices and triangles.\n\n`pydelatin` is 4-5x faster than the JavaScript `delatin` package.\n\n### Python\n\n```bash\ngit clone https://github.com/kylebarron/pydelatin\ncd pydelatin\npip install '.[test]'\npython bench.py\n```\n\n```\nmesh (max_error=30m): 27.322ms\nvertices: 5668, triangles: 11140\n\nmesh (max_error=1m): 282.946ms\nmesh (max_error=2m): 215.839ms\nmesh (max_error=3m): 163.424ms\nmesh (max_error=4m): 127.203ms\nmesh (max_error=5m): 106.596ms\nmesh (max_error=6m): 91.868ms\nmesh (max_error=7m): 82.572ms\nmesh (max_error=8m): 74.335ms\nmesh (max_error=9m): 65.893ms\nmesh (max_error=10m): 60.999ms\nmesh (max_error=11m): 55.213ms\nmesh (max_error=12m): 54.475ms\nmesh (max_error=13m): 48.662ms\nmesh (max_error=14m): 47.029ms\nmesh (max_error=15m): 44.517ms\nmesh (max_error=16m): 42.059ms\nmesh (max_error=17m): 39.699ms\nmesh (max_error=18m): 37.657ms\nmesh (max_error=19m): 36.333ms\nmesh (max_error=20m): 34.131ms\n```\n\n### JS (Node)\n\nThis benchmarks against the [`delatin`][delatin] JavaScript module.\n\n```bash\ngit clone https://github.com/kylebarron/pydelatin\ncd test/bench_js/\nyarn\nwget https://raw.githubusercontent.com/mapbox/delatin/master/index.js\nnode -r esm bench.js\n```\n\n```\nmesh (max_error=30m): 143.038ms\nvertices: 5668\ntriangles: 11140\n\nmesh (max_error=0m): 1169.226ms\nmesh (max_error=1m): 917.290ms\nmesh (max_error=2m): 629.776ms\nmesh (max_error=3m): 476.958ms\nmesh (max_error=4m): 352.907ms\nmesh (max_error=5m): 290.946ms\nmesh (max_error=6m): 240.556ms\nmesh (max_error=7m): 234.181ms\nmesh (max_error=8m): 188.273ms\nmesh (max_error=9m): 162.743ms\nmesh (max_error=10m): 145.734ms\nmesh (max_error=11m): 130.119ms\nmesh (max_error=12m): 119.865ms\nmesh (max_error=13m): 114.645ms\nmesh (max_error=14m): 101.390ms\nmesh (max_error=15m): 100.065ms\nmesh (max_error=16m): 96.247ms\nmesh (max_error=17m): 89.508ms\nmesh (max_error=18m): 85.754ms\nmesh (max_error=19m): 79.838ms\nmesh (max_error=20m): 75.607ms\n```\n\n## License\n\nThis package wraps \\@fogleman's [`hmm`][hmm], a C++ library that is also\nMIT-licensed.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A wrapper for hmm",
    "version": "0.2.8",
    "project_urls": {
        "Homepage": "https://github.com/kylebarron/pydelatin"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bcefa6917e743c77bd4e3f1e86ae8023c374692377517206bb1fd5911b216568",
                "md5": "166a43bc7494af7c852e5aae6ee1b074",
                "sha256": "dc531514acb57a849580cb82cdd3d14643d467781e72712e3f57b2887aecd781"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "166a43bc7494af7c852e5aae6ee1b074",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 183400,
            "upload_time": "2024-08-26T16:47:22",
            "upload_time_iso_8601": "2024-08-26T16:47:22.221708Z",
            "url": "https://files.pythonhosted.org/packages/bc/ef/a6917e743c77bd4e3f1e86ae8023c374692377517206bb1fd5911b216568/pydelatin-0.2.8-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f8faacbce16f508962173ccd02ef07cd1b5db53e6bd3c348b533b941f1a39e87",
                "md5": "c681001a6d5871e782cfa59875a05d0a",
                "sha256": "3d32901431d01e0e89a03958edda060c83fb7c6b4c90dd367c39fd5863f73ef0"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c681001a6d5871e782cfa59875a05d0a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 171181,
            "upload_time": "2024-08-26T16:47:23",
            "upload_time_iso_8601": "2024-08-26T16:47:23.309280Z",
            "url": "https://files.pythonhosted.org/packages/f8/fa/acbce16f508962173ccd02ef07cd1b5db53e6bd3c348b533b941f1a39e87/pydelatin-0.2.8-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d5eb144e2f5095c2253e5f38543980468d7d3ee4e581c8d1d2afebba2ab0fbfc",
                "md5": "a3c4dce6867ea56f165cad53ff06e146",
                "sha256": "a1cf6adc47dddb9da6e25964a3ac9ca6f08406aa3d3a0a97298b6fb18e474538"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a3c4dce6867ea56f165cad53ff06e146",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 223906,
            "upload_time": "2024-08-26T16:47:24",
            "upload_time_iso_8601": "2024-08-26T16:47:24.330642Z",
            "url": "https://files.pythonhosted.org/packages/d5/eb/144e2f5095c2253e5f38543980468d7d3ee4e581c8d1d2afebba2ab0fbfc/pydelatin-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1ae06bc34b6a822b30005e612bc6aaf4f15ac7a87914829cdaf23e9213afb9fd",
                "md5": "1b912f075732805ccf15ba4180bcdab4",
                "sha256": "a89c21e62130f8571c5565ab7f048aeea101fdcc4f2b719a84c292e78f9cceac"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp310-cp310-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "1b912f075732805ccf15ba4180bcdab4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 1309738,
            "upload_time": "2024-08-26T16:47:25",
            "upload_time_iso_8601": "2024-08-26T16:47:25.345820Z",
            "url": "https://files.pythonhosted.org/packages/1a/e0/6bc34b6a822b30005e612bc6aaf4f15ac7a87914829cdaf23e9213afb9fd/pydelatin-0.2.8-cp310-cp310-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3734b3c362f5d0cab827617edfbd9538b00a259fb529b0c6afbffcb9f145c5d0",
                "md5": "65edecd645f7db3bd485d56100477148",
                "sha256": "7d4ab050a3460c388881e1c40598475baa4d647a995f790aafdf84e8907c7703"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "65edecd645f7db3bd485d56100477148",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 1198669,
            "upload_time": "2024-08-26T16:47:27",
            "upload_time_iso_8601": "2024-08-26T16:47:27.059835Z",
            "url": "https://files.pythonhosted.org/packages/37/34/b3c362f5d0cab827617edfbd9538b00a259fb529b0c6afbffcb9f145c5d0/pydelatin-0.2.8-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa9dcbda2c36b16b82479d7c87acf4612712a3e66bbc242b85170be53145aa24",
                "md5": "335f14ee2cc2d379358ae97f5aca9c8b",
                "sha256": "962f5c67d1738f0e41b159d80548e30b2d9427e59fc1446a1dda59d1466939bc"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "335f14ee2cc2d379358ae97f5aca9c8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 184847,
            "upload_time": "2024-08-26T16:47:28",
            "upload_time_iso_8601": "2024-08-26T16:47:28.181595Z",
            "url": "https://files.pythonhosted.org/packages/aa/9d/cbda2c36b16b82479d7c87acf4612712a3e66bbc242b85170be53145aa24/pydelatin-0.2.8-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f7163822a2bc33420475799f45fa0bd1cd8fd909207f0b06bbb35b386af4fe23",
                "md5": "2b366e85d9a3a1a98193ecd3ad790ad6",
                "sha256": "12fd4102782c27b40659c18af1287988b05783d2b7cecd77bf512f65378e5d95"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2b366e85d9a3a1a98193ecd3ad790ad6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 172223,
            "upload_time": "2024-08-26T16:47:29",
            "upload_time_iso_8601": "2024-08-26T16:47:29.578162Z",
            "url": "https://files.pythonhosted.org/packages/f7/16/3822a2bc33420475799f45fa0bd1cd8fd909207f0b06bbb35b386af4fe23/pydelatin-0.2.8-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9563fa95b3ea37fabc3174e1477a98df7013f6328bfea1fbe76c0902ad2308d9",
                "md5": "a0f0082970ba00f782a5dc682e177952",
                "sha256": "b4f2c48e7c95e8b12e0e8f1448db8149824207f05e58474c4a944845b621b938"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a0f0082970ba00f782a5dc682e177952",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 224907,
            "upload_time": "2024-08-26T16:47:31",
            "upload_time_iso_8601": "2024-08-26T16:47:31.120630Z",
            "url": "https://files.pythonhosted.org/packages/95/63/fa95b3ea37fabc3174e1477a98df7013f6328bfea1fbe76c0902ad2308d9/pydelatin-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5a8c2c2e7b6d88e3546edf8ef59e27cad2e89e22c54a64838c97814b93e97b6a",
                "md5": "51dfedfe7b86ce56eae205ebf55e2d4b",
                "sha256": "af39d07b74e1f5ae6392e4d2f144581090f6e3d6bd369793ac09d64a38b21b94"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp311-cp311-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "51dfedfe7b86ce56eae205ebf55e2d4b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 1310286,
            "upload_time": "2024-08-26T16:47:32",
            "upload_time_iso_8601": "2024-08-26T16:47:32.516667Z",
            "url": "https://files.pythonhosted.org/packages/5a/8c/2c2e7b6d88e3546edf8ef59e27cad2e89e22c54a64838c97814b93e97b6a/pydelatin-0.2.8-cp311-cp311-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1a38ab411ae137edba41bb6d54d85f2ea7a942659af36e97fde792ab1d0d45d9",
                "md5": "d559140570a7eab288af62c95a2d9081",
                "sha256": "d8f582a3cf6b662fae662008be92e7f86bf3079fb98ffdcfb6ced304ea48a81f"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d559140570a7eab288af62c95a2d9081",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 1199532,
            "upload_time": "2024-08-26T16:47:33",
            "upload_time_iso_8601": "2024-08-26T16:47:33.719015Z",
            "url": "https://files.pythonhosted.org/packages/1a/38/ab411ae137edba41bb6d54d85f2ea7a942659af36e97fde792ab1d0d45d9/pydelatin-0.2.8-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "483ccd56f3d5445cb97553a6ea1ad7a2720fa84c4d397ac880238c628610d593",
                "md5": "2af51c54b982e3314a44de3d71111d2f",
                "sha256": "165aef70518c832770361f2a405f75bbbc3762063ca860ad6db9fc74afdf7560"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2af51c54b982e3314a44de3d71111d2f",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 183843,
            "upload_time": "2024-08-26T16:47:34",
            "upload_time_iso_8601": "2024-08-26T16:47:34.885610Z",
            "url": "https://files.pythonhosted.org/packages/48/3c/cd56f3d5445cb97553a6ea1ad7a2720fa84c4d397ac880238c628610d593/pydelatin-0.2.8-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5535a7174be376110e2998ae82d63299de37c17fc8bf36df662abf6388c5f1a0",
                "md5": "06c5d71616350aa4a2017e266ce3e6c5",
                "sha256": "f981c42cf763ac4ef54c36314a6adae4f3ab8dca09ef242e22f1cb1fa7d90feb"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "06c5d71616350aa4a2017e266ce3e6c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 170964,
            "upload_time": "2024-08-26T16:47:36",
            "upload_time_iso_8601": "2024-08-26T16:47:36.193219Z",
            "url": "https://files.pythonhosted.org/packages/55/35/a7174be376110e2998ae82d63299de37c17fc8bf36df662abf6388c5f1a0/pydelatin-0.2.8-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d02b9cd09d8b2d31ab969e3ce17f788441bb2d7ef1ab460ebb643310186bb8db",
                "md5": "2e7138c3e826742658b5bf4593d20144",
                "sha256": "787068472a6c461c4da78f35ac65e88facb70650b359604cf30519c81cb31cd2"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2e7138c3e826742658b5bf4593d20144",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 225265,
            "upload_time": "2024-08-26T16:47:37",
            "upload_time_iso_8601": "2024-08-26T16:47:37.131222Z",
            "url": "https://files.pythonhosted.org/packages/d0/2b/9cd09d8b2d31ab969e3ce17f788441bb2d7ef1ab460ebb643310186bb8db/pydelatin-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e29dba005417b53d56deaab51148be176fe76f59a5b0dbd52c4c6b5b29f2121a",
                "md5": "106809201c2405666b37d28ab2f40762",
                "sha256": "6fd16c27551259789cb016134c9e858996f7d30aac5ec61914459375e75f0973"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp312-cp312-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "106809201c2405666b37d28ab2f40762",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 1310228,
            "upload_time": "2024-08-26T16:47:38",
            "upload_time_iso_8601": "2024-08-26T16:47:38.862235Z",
            "url": "https://files.pythonhosted.org/packages/e2/9d/ba005417b53d56deaab51148be176fe76f59a5b0dbd52c4c6b5b29f2121a/pydelatin-0.2.8-cp312-cp312-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "12009da2c7ea815c6453a923763d6e1df79227e1edc61922192b060d2486094b",
                "md5": "0eeba4aa8926e9a386a2e08d22f34739",
                "sha256": "ff16fe21870833dacc39e4dd04dfba6a1667c6b2fc8581288a00cc44145d15e2"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0eeba4aa8926e9a386a2e08d22f34739",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 1199177,
            "upload_time": "2024-08-26T16:47:40",
            "upload_time_iso_8601": "2024-08-26T16:47:40.754830Z",
            "url": "https://files.pythonhosted.org/packages/12/00/9da2c7ea815c6453a923763d6e1df79227e1edc61922192b060d2486094b/pydelatin-0.2.8-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf345c0110cbdae4f6942fc5f46202c29d5486ddf0d7bdfa601e8f68184710b6",
                "md5": "606a52c808452d0ef0c578f632673d0e",
                "sha256": "ebdf460fda9b0ca6391929d3137e3d37e8cb356bf18d051608e02353a2463a7a"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "606a52c808452d0ef0c578f632673d0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 185494,
            "upload_time": "2024-08-26T16:47:41",
            "upload_time_iso_8601": "2024-08-26T16:47:41.943023Z",
            "url": "https://files.pythonhosted.org/packages/bf/34/5c0110cbdae4f6942fc5f46202c29d5486ddf0d7bdfa601e8f68184710b6/pydelatin-0.2.8-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d20bb3bbc89aad57b68a13e6ea64c5625d742d4a2aedd84a3b6c1094652fa1f5",
                "md5": "c5e814550efe210f9b2d3094ee1ddd32",
                "sha256": "5ff79e1182f465cb579c6e78c04dccbe5338ce58b647fa33b71ca2684091d595"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c5e814550efe210f9b2d3094ee1ddd32",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 171027,
            "upload_time": "2024-08-26T16:47:43",
            "upload_time_iso_8601": "2024-08-26T16:47:43.587380Z",
            "url": "https://files.pythonhosted.org/packages/d2/0b/b3bbc89aad57b68a13e6ea64c5625d742d4a2aedd84a3b6c1094652fa1f5/pydelatin-0.2.8-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1fe8a7d82891260175fd3dd8e75205ed65321b13feaaefcd51a5489987a57134",
                "md5": "913ab339818eea9526c35a10483fafbc",
                "sha256": "2d7d8135acd71f3e54f4a9a35537b40a3fcc7f0b070ff4303e85d672a694a787"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "913ab339818eea9526c35a10483fafbc",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 225236,
            "upload_time": "2024-08-26T16:47:45",
            "upload_time_iso_8601": "2024-08-26T16:47:45.221986Z",
            "url": "https://files.pythonhosted.org/packages/1f/e8/a7d82891260175fd3dd8e75205ed65321b13feaaefcd51a5489987a57134/pydelatin-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7894700e6196ac5c776035204861481ebaf5d6a5190872e00a8de26b5bb24d19",
                "md5": "60e6e08ad2a738d636e2c9010ad55cfc",
                "sha256": "99b927b88cd882eb6904dcb215ca8e6c58f53356a67dba7673893e4552cbaaac"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp313-cp313-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "60e6e08ad2a738d636e2c9010ad55cfc",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 1310367,
            "upload_time": "2024-08-26T16:47:46",
            "upload_time_iso_8601": "2024-08-26T16:47:46.229972Z",
            "url": "https://files.pythonhosted.org/packages/78/94/700e6196ac5c776035204861481ebaf5d6a5190872e00a8de26b5bb24d19/pydelatin-0.2.8-cp313-cp313-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ab4fffee7ae67dae96bdbcfc08c01070ad813fa80a5ca626ab89472606333b12",
                "md5": "f41093331f2e4998fc540d95e363a80f",
                "sha256": "65ac6e5fb1b6367193a39a839e937acf536243ebcb79dbfe6b75c024698bb118"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f41093331f2e4998fc540d95e363a80f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 1200246,
            "upload_time": "2024-08-26T16:47:47",
            "upload_time_iso_8601": "2024-08-26T16:47:47.533000Z",
            "url": "https://files.pythonhosted.org/packages/ab/4f/ffee7ae67dae96bdbcfc08c01070ad813fa80a5ca626ab89472606333b12/pydelatin-0.2.8-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b584b3889006c191ef938a5cb60a5099a7f6c82fc8977344989ae59c25b9ab18",
                "md5": "e3ddcb59cdbde11817d710b8ea5229f1",
                "sha256": "4b12c6b21c688f7c8dc23fff5e64eb453c7e7d8bad580417fb48c6b13a58aa63"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp36-cp36m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e3ddcb59cdbde11817d710b8ea5229f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 182004,
            "upload_time": "2024-08-26T16:47:48",
            "upload_time_iso_8601": "2024-08-26T16:47:48.987777Z",
            "url": "https://files.pythonhosted.org/packages/b5/84/b3889006c191ef938a5cb60a5099a7f6c82fc8977344989ae59c25b9ab18/pydelatin-0.2.8-cp36-cp36m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf55d28b483a96d2b2c7677f458ecf42028d2ed447bf96b6b0d733037806ed6f",
                "md5": "08a6d92e95a605c8b8a29e84d74ba1b2",
                "sha256": "2f234d8c1bb3845092bb57f7fa2a6d0c0a2fe1c84f8b18bcf96363edcff7c261"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "08a6d92e95a605c8b8a29e84d74ba1b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 225708,
            "upload_time": "2024-08-26T16:47:50",
            "upload_time_iso_8601": "2024-08-26T16:47:50.156080Z",
            "url": "https://files.pythonhosted.org/packages/bf/55/d28b483a96d2b2c7677f458ecf42028d2ed447bf96b6b0d733037806ed6f/pydelatin-0.2.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a88d69c0c36374e3f6d1d32106899f6c1f265b61aab3e19aef81c33b5946d7f7",
                "md5": "1b05f2ce6d02249f2ae46895cce06a27",
                "sha256": "aed2a0a3a10aba4e8a27b02d6742d799828144bc65430a97af796c4b9bc635d0"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp36-cp36m-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "1b05f2ce6d02249f2ae46895cce06a27",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 1312520,
            "upload_time": "2024-08-26T16:47:51",
            "upload_time_iso_8601": "2024-08-26T16:47:51.699212Z",
            "url": "https://files.pythonhosted.org/packages/a8/8d/69c0c36374e3f6d1d32106899f6c1f265b61aab3e19aef81c33b5946d7f7/pydelatin-0.2.8-cp36-cp36m-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4ff6612f404bf4d782746e61d4f08dfc567f6f4937837ad4e81f4e7a937e53d6",
                "md5": "2fe9c186360902e775609658bc223506",
                "sha256": "4cc006ff1d0b8170819e12673a989d196263657939f8e3d15527cb8e372fd3bf"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp36-cp36m-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2fe9c186360902e775609658bc223506",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 1201456,
            "upload_time": "2024-08-26T16:47:52",
            "upload_time_iso_8601": "2024-08-26T16:47:52.853153Z",
            "url": "https://files.pythonhosted.org/packages/4f/f6/612f404bf4d782746e61d4f08dfc567f6f4937837ad4e81f4e7a937e53d6/pydelatin-0.2.8-cp36-cp36m-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6e4c911d9d5dc76f5691ab8a0d7e15f37314c5d912f500fb724795c1a9667571",
                "md5": "ed3bfdb24f323385e862ba6227830dbe",
                "sha256": "a9e1da8020f720ba1b04b159513db28fed11d0c14ccfa933c08b6821b15ad051"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ed3bfdb24f323385e862ba6227830dbe",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 182574,
            "upload_time": "2024-08-26T16:47:54",
            "upload_time_iso_8601": "2024-08-26T16:47:54.248837Z",
            "url": "https://files.pythonhosted.org/packages/6e/4c/911d9d5dc76f5691ab8a0d7e15f37314c5d912f500fb724795c1a9667571/pydelatin-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34f3a41b9c219498be7478786299effb1bc1bb464ffe3fd0e8e5430fc5d551d1",
                "md5": "f883aaec7ea7628f37de163fed061a1d",
                "sha256": "ff82c6a7342137efde348684272857cf72262c414c048db0230df87ed7a63c17"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f883aaec7ea7628f37de163fed061a1d",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 226093,
            "upload_time": "2024-08-26T16:47:55",
            "upload_time_iso_8601": "2024-08-26T16:47:55.252338Z",
            "url": "https://files.pythonhosted.org/packages/34/f3/a41b9c219498be7478786299effb1bc1bb464ffe3fd0e8e5430fc5d551d1/pydelatin-0.2.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c208c4bddb5bf8a8ca27d7821a9d1b4f5bbe57e4bba579963c4e266ed16dfbbd",
                "md5": "0b3defe70eaa4a2f8a34ae1fca4c8b45",
                "sha256": "f3a488d19bb9f7b4ddd3502748a6927aee9205ebd80df3d81f69b6114c4a351e"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp37-cp37m-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "0b3defe70eaa4a2f8a34ae1fca4c8b45",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 1313344,
            "upload_time": "2024-08-26T16:47:56",
            "upload_time_iso_8601": "2024-08-26T16:47:56.270282Z",
            "url": "https://files.pythonhosted.org/packages/c2/08/c4bddb5bf8a8ca27d7821a9d1b4f5bbe57e4bba579963c4e266ed16dfbbd/pydelatin-0.2.8-cp37-cp37m-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c364fc02959e53d28580acc63446da8f295c7b5edfa58d2840c8a4b364aa90c9",
                "md5": "a3bbee6be68e5c5f18a1765688d7aae7",
                "sha256": "e952185151ccbed8c8b986e4b022541ea7e1693e509213e427c3c3bae902eb07"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp37-cp37m-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a3bbee6be68e5c5f18a1765688d7aae7",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 1201793,
            "upload_time": "2024-08-26T16:47:57",
            "upload_time_iso_8601": "2024-08-26T16:47:57.469282Z",
            "url": "https://files.pythonhosted.org/packages/c3/64/fc02959e53d28580acc63446da8f295c7b5edfa58d2840c8a4b364aa90c9/pydelatin-0.2.8-cp37-cp37m-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ad92d29525ba69d7ff3d120f68cd8f6f81a0a772e33f16d9505c9ead1541317f",
                "md5": "75bfb13d88665880a2d3508f07d971a9",
                "sha256": "20ba685d9ab7a822edd5bd062c211d7fceb0f998dd43f7785a842258cee46800"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "75bfb13d88665880a2d3508f07d971a9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 183255,
            "upload_time": "2024-08-26T16:47:58",
            "upload_time_iso_8601": "2024-08-26T16:47:58.566944Z",
            "url": "https://files.pythonhosted.org/packages/ad/92/d29525ba69d7ff3d120f68cd8f6f81a0a772e33f16d9505c9ead1541317f/pydelatin-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8f451995f45ef7ec3c5eb51f5eafed9c713c491a30a5a782911c5077d97bac07",
                "md5": "7387478b8d396e994f0b751daaece75a",
                "sha256": "2fd063eb7da7c39261f0de7852ddf75e5e690f875a9abe049316db8933aa1430"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7387478b8d396e994f0b751daaece75a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 171042,
            "upload_time": "2024-08-26T16:47:59",
            "upload_time_iso_8601": "2024-08-26T16:47:59.511192Z",
            "url": "https://files.pythonhosted.org/packages/8f/45/1995f45ef7ec3c5eb51f5eafed9c713c491a30a5a782911c5077d97bac07/pydelatin-0.2.8-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d8fbad6c1391a36d86c5b92b329911f08e9bda5ec2f7ca7da93556886d9cfc38",
                "md5": "f6ed3c22f685d1bb51978826ac6e1798",
                "sha256": "d797041be66ae2da9b03e5e90c6930a66e843111e08446b0c24c11bc3453c4a2"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f6ed3c22f685d1bb51978826ac6e1798",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 223743,
            "upload_time": "2024-08-26T16:48:00",
            "upload_time_iso_8601": "2024-08-26T16:48:00.440371Z",
            "url": "https://files.pythonhosted.org/packages/d8/fb/ad6c1391a36d86c5b92b329911f08e9bda5ec2f7ca7da93556886d9cfc38/pydelatin-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b1951f0e300c95932037ca3712d05e5cdd7015d46071e87701d08fbd9c3b3bff",
                "md5": "f76bb6ce3339af67aa28a74580ed0ff5",
                "sha256": "0a979413249ba79f36b8cb298988545033b1b1e48af003539af11fc6f216b2e5"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp38-cp38-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "f76bb6ce3339af67aa28a74580ed0ff5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 1309316,
            "upload_time": "2024-08-26T16:48:02",
            "upload_time_iso_8601": "2024-08-26T16:48:02.172032Z",
            "url": "https://files.pythonhosted.org/packages/b1/95/1f0e300c95932037ca3712d05e5cdd7015d46071e87701d08fbd9c3b3bff/pydelatin-0.2.8-cp38-cp38-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "80e0f460cc0fb81547df76397510247813b0ae00aef4ec8c7be9b825e1947d59",
                "md5": "c0066750ad8db5f0a5641935c9c29866",
                "sha256": "308e8b6e0dd737dcf7b5f48a64006037b016ca66e2e380eac2c844550759aa0c"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp38-cp38-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c0066750ad8db5f0a5641935c9c29866",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 1198316,
            "upload_time": "2024-08-26T16:48:03",
            "upload_time_iso_8601": "2024-08-26T16:48:03.836177Z",
            "url": "https://files.pythonhosted.org/packages/80/e0/f460cc0fb81547df76397510247813b0ae00aef4ec8c7be9b825e1947d59/pydelatin-0.2.8-cp38-cp38-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "430049408372c385d6ffe87a7ed0fc915dfb6027ab0b95c3fee0644a700f2454",
                "md5": "64e5aab603e035ec40e65366983fdd08",
                "sha256": "9db31337ad319375fce84e52b2abe7747cb123f117f67c748fc6ab1b55f79410"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "64e5aab603e035ec40e65366983fdd08",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 183487,
            "upload_time": "2024-08-26T16:48:04",
            "upload_time_iso_8601": "2024-08-26T16:48:04.957511Z",
            "url": "https://files.pythonhosted.org/packages/43/00/49408372c385d6ffe87a7ed0fc915dfb6027ab0b95c3fee0644a700f2454/pydelatin-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ca90fd2805c680fea91d21672c3f1bb6887d491b3a9090f8e648874a2150f2c",
                "md5": "775f52c641e9f0a778e8aa9a5f76e1e8",
                "sha256": "65456b6c579b653a85690f533d65321eaeb4cacd463b1830ebd621ec28b9543a"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "775f52c641e9f0a778e8aa9a5f76e1e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 171274,
            "upload_time": "2024-08-26T16:48:05",
            "upload_time_iso_8601": "2024-08-26T16:48:05.915590Z",
            "url": "https://files.pythonhosted.org/packages/9c/a9/0fd2805c680fea91d21672c3f1bb6887d491b3a9090f8e648874a2150f2c/pydelatin-0.2.8-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c5e70b720fe64ad39c0b34ff8ad16e0127c81e4deb92cc2493a54db03f07b8f5",
                "md5": "0468449e41194f0bc6aac6a680a7d5b2",
                "sha256": "60207c01fdb3e62767d157a1468ba56c5b9cc5343b81aa1bfa7f77cd91f14a73"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0468449e41194f0bc6aac6a680a7d5b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 223963,
            "upload_time": "2024-08-26T16:48:06",
            "upload_time_iso_8601": "2024-08-26T16:48:06.798623Z",
            "url": "https://files.pythonhosted.org/packages/c5/e7/0b720fe64ad39c0b34ff8ad16e0127c81e4deb92cc2493a54db03f07b8f5/pydelatin-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "66d4a5bc13f2a786eddd431d323e107f940107453ede084e3779f68dbdfc455d",
                "md5": "ea7b37677b8986e38265cfe2d4956d34",
                "sha256": "14806900f1cb194a992d485d44b87c101d3e09a8f97e2878a34b13593a278f1b"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp39-cp39-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "ea7b37677b8986e38265cfe2d4956d34",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 1309455,
            "upload_time": "2024-08-26T16:48:08",
            "upload_time_iso_8601": "2024-08-26T16:48:08.896814Z",
            "url": "https://files.pythonhosted.org/packages/66/d4/a5bc13f2a786eddd431d323e107f940107453ede084e3779f68dbdfc455d/pydelatin-0.2.8-cp39-cp39-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "05f2870488dba26a74bead3e9b7e852e6ee778338473d857c54553ec223652cb",
                "md5": "741d39d0df0213c0de2c61aa07c6c4d0",
                "sha256": "3f3e2dac384e2eb3cc37d658223154a46913219f684cfa6d8ce780244503592e"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "741d39d0df0213c0de2c61aa07c6c4d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 1198547,
            "upload_time": "2024-08-26T16:48:09",
            "upload_time_iso_8601": "2024-08-26T16:48:09.998909Z",
            "url": "https://files.pythonhosted.org/packages/05/f2/870488dba26a74bead3e9b7e852e6ee778338473d857c54553ec223652cb/pydelatin-0.2.8-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bb81166417a6ddc3cbe63bbe0aacea0fdb2dd369b9638d70d9d793dfca365155",
                "md5": "179f53559e2af7b488ff388f61882f6e",
                "sha256": "3703dd37fc3fb5a2fc1ec681c530ccc95639885a93a5506fe057aed77d81fe6a"
            },
            "downloads": -1,
            "filename": "pydelatin-0.2.8.tar.gz",
            "has_sig": false,
            "md5_digest": "179f53559e2af7b488ff388f61882f6e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 99535,
            "upload_time": "2024-08-26T16:48:11",
            "upload_time_iso_8601": "2024-08-26T16:48:11.093009Z",
            "url": "https://files.pythonhosted.org/packages/bb/81/166417a6ddc3cbe63bbe0aacea0fdb2dd369b9638d70d9d793dfca365155/pydelatin-0.2.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-26 16:48:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kylebarron",
    "github_project": "pydelatin",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pydelatin"
}
        
Elapsed time: 1.24057s