concave-hull


Nameconcave-hull JSON
Version 0.0.9 PyPI version JSON
download
home_pageNone
SummaryA very fast 2D concave hull algorithm
upload_time2024-12-14 19:39:38
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # concave_hull

A very fast 2D concave hull algorithm.

![](docs/hull.png)

Credits goes to:

-   <https://github.com/mapbox/concaveman>
-   <https://github.com/sadaszewski/concaveman-cpp>

Online document: <https://concave-hull.readthedocs.io/en/latest/>

<!--intro-start-->

## Install

### via pip

```bash
pip install -U concave_hull
```

### from source

```bash
git clone --recursive https://github.com/cubao/concave_hull
pip install ./concave_hull
```

Or

```bash
pip install git+https://github.com/cubao/concave_hull.git
```

(you can build wheels for later reuse by ` pip wheel git+https://github.com/cubao/concave_hull.git`)

## Usage

Signature:

```python
# import
from concave_hull import concave_hull, concave_hull_indexes

# get concave hull indexes
concave_hull_indexes(
       points: Union[numpy.ndarray, List, Tuple],
       *,
       concavity: float = 2.0,
       length_threshold: float = 0.0,
       # you can just ignore "convex_hull_indexes"
       convex_hull_indexes: numpy.ndarray[numpy.int32[m, 1]] = None,
) -> numpy.ndarray[numpy.int32[m, 1]]

# get concave hull points
concave_hull(
       points: Union[numpy.ndarray, List, Tuple],
       ... # same as
) -> Union[numpy.ndarray, List, Tuple]

# P.S., we provide convex_hull (Graham scan)
from concave_hull import convex_hull, convex_hull_indexes
```

-   `concavity` is a relative measure of concavity. 1 results in a relatively
    detailed shape, Infinity results in a convex hull. You can use values lower
    than 1, but they can produce pretty crazy shapes.
-   `length_threshold`: when a segment length is under this threshold, it stops
    being considered for further detalization. Higher values result in simpler
    shapes.

(document from <https://github.com/mapbox/concaveman>)

Example (see full code in [`test.py`](test.py)):

```python
import matplotlib.pyplot as plt
import numpy as np
from scipy.spatial import ConvexHull

from concave_hull import concave_hull, concave_hull_indexes

points = []
c = np.array([250, 250])
for x in np.arange(100, 400, 5 * np.pi):
    for y in np.arange(100, 400, 5 * np.pi):
        if x > c[0] and y > c[1]:
            continue
        r = np.linalg.norm(c - [x, y])
        if r > 150:
            continue
        points.append([x, y])
points = np.array(points)
convex_hull = ConvexHull(points[:, :2])  # it's already N-by-2, I'm just emphasizing

# https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html

plt.plot(points[:, 0], points[:, 1], "o")
for simplex in convex_hull.simplices:
    plt.plot(points[simplex, 0], points[simplex, 1], "g-", alpha=0.5)

idxes = concave_hull_indexes(
    points[:, :2],
    length_threshold=50,
)
# you can get coordinates by `points[idxes]`
assert np.all(points[idxes] == concave_hull(points, length_threshold=50))

for f, t in zip(idxes[:-1], idxes[1:]):  # noqa
    seg = points[[f, t]]
    plt.plot(seg[:, 0], seg[:, 1], "r-", alpha=0.5)
# plt.savefig('hull.png')
plt.show()
```

<!--intro-end-->

## Tests

```
make python_install
make python_test
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "concave-hull",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "district10 <dvorak4tzx@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/28/d2/71ddd97f5075acff9a604cc552006fd5a24b4443831fc9cbe7d55d37fc2d/concave_hull-0.0.9.tar.gz",
    "platform": null,
    "description": "# concave_hull\n\nA very fast 2D concave hull algorithm.\n\n![](docs/hull.png)\n\nCredits goes to:\n\n-   <https://github.com/mapbox/concaveman>\n-   <https://github.com/sadaszewski/concaveman-cpp>\n\nOnline document: <https://concave-hull.readthedocs.io/en/latest/>\n\n<!--intro-start-->\n\n## Install\n\n### via pip\n\n```bash\npip install -U concave_hull\n```\n\n### from source\n\n```bash\ngit clone --recursive https://github.com/cubao/concave_hull\npip install ./concave_hull\n```\n\nOr\n\n```bash\npip install git+https://github.com/cubao/concave_hull.git\n```\n\n(you can build wheels for later reuse by ` pip wheel git+https://github.com/cubao/concave_hull.git`)\n\n## Usage\n\nSignature:\n\n```python\n# import\nfrom concave_hull import concave_hull, concave_hull_indexes\n\n# get concave hull indexes\nconcave_hull_indexes(\n       points: Union[numpy.ndarray, List, Tuple],\n       *,\n       concavity: float = 2.0,\n       length_threshold: float = 0.0,\n       # you can just ignore \"convex_hull_indexes\"\n       convex_hull_indexes: numpy.ndarray[numpy.int32[m, 1]] = None,\n) -> numpy.ndarray[numpy.int32[m, 1]]\n\n# get concave hull points\nconcave_hull(\n       points: Union[numpy.ndarray, List, Tuple],\n       ... # same as\n) -> Union[numpy.ndarray, List, Tuple]\n\n# P.S., we provide convex_hull (Graham scan)\nfrom concave_hull import convex_hull, convex_hull_indexes\n```\n\n-   `concavity` is a relative measure of concavity. 1 results in a relatively\n    detailed shape, Infinity results in a convex hull. You can use values lower\n    than 1, but they can produce pretty crazy shapes.\n-   `length_threshold`: when a segment length is under this threshold, it stops\n    being considered for further detalization. Higher values result in simpler\n    shapes.\n\n(document from <https://github.com/mapbox/concaveman>)\n\nExample (see full code in [`test.py`](test.py)):\n\n```python\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom scipy.spatial import ConvexHull\n\nfrom concave_hull import concave_hull, concave_hull_indexes\n\npoints = []\nc = np.array([250, 250])\nfor x in np.arange(100, 400, 5 * np.pi):\n    for y in np.arange(100, 400, 5 * np.pi):\n        if x > c[0] and y > c[1]:\n            continue\n        r = np.linalg.norm(c - [x, y])\n        if r > 150:\n            continue\n        points.append([x, y])\npoints = np.array(points)\nconvex_hull = ConvexHull(points[:, :2])  # it's already N-by-2, I'm just emphasizing\n\n# https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html\n\nplt.plot(points[:, 0], points[:, 1], \"o\")\nfor simplex in convex_hull.simplices:\n    plt.plot(points[simplex, 0], points[simplex, 1], \"g-\", alpha=0.5)\n\nidxes = concave_hull_indexes(\n    points[:, :2],\n    length_threshold=50,\n)\n# you can get coordinates by `points[idxes]`\nassert np.all(points[idxes] == concave_hull(points, length_threshold=50))\n\nfor f, t in zip(idxes[:-1], idxes[1:]):  # noqa\n    seg = points[[f, t]]\n    plt.plot(seg[:, 0], seg[:, 1], \"r-\", alpha=0.5)\n# plt.savefig('hull.png')\nplt.show()\n```\n\n<!--intro-end-->\n\n## Tests\n\n```\nmake python_install\nmake python_test\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A very fast 2D concave hull algorithm",
    "version": "0.0.9",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "62ad95bd396a752135b22c6f304ed121fc77c2198255c529ad1260a36259493b",
                "md5": "e08437d2bb296ece2788ab80df682446",
                "sha256": "5e174a47ccd5ba0d40d7a6b3d135ff369c48703fa0c89e0c9a630d5ae3893e35"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e08437d2bb296ece2788ab80df682446",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 84813,
            "upload_time": "2024-12-14T19:38:36",
            "upload_time_iso_8601": "2024-12-14T19:38:36.057660Z",
            "url": "https://files.pythonhosted.org/packages/62/ad/95bd396a752135b22c6f304ed121fc77c2198255c529ad1260a36259493b/concave_hull-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7e135adc33fc747686d69c7256480b82354e1f0d585159f1a71e8e5103c844b",
                "md5": "76bf6b5e7695c0766ea73de955e2a541",
                "sha256": "a90dd326451f4729f70721fb2874baaf8b767178593e8ab3ceda857a0f4e9469"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "76bf6b5e7695c0766ea73de955e2a541",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 77663,
            "upload_time": "2024-12-14T19:38:38",
            "upload_time_iso_8601": "2024-12-14T19:38:38.311684Z",
            "url": "https://files.pythonhosted.org/packages/a7/e1/35adc33fc747686d69c7256480b82354e1f0d585159f1a71e8e5103c844b/concave_hull-0.0.9-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e28bb16918fad05efaebd4809d0781a730798fb880b46314493cc522ea6cea83",
                "md5": "b1035cbf20921dd50108a53df500c6d1",
                "sha256": "7eb2a6f3e14df1818b5ad5f2199774dbe88dd03113009916f6e61028ea91e923"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b1035cbf20921dd50108a53df500c6d1",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 107530,
            "upload_time": "2024-12-14T19:38:39",
            "upload_time_iso_8601": "2024-12-14T19:38:39.197783Z",
            "url": "https://files.pythonhosted.org/packages/e2/8b/b16918fad05efaebd4809d0781a730798fb880b46314493cc522ea6cea83/concave_hull-0.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "74c429326cff4a2083c743d64b77052e580c140a9fb14d3d3196b9ac49daf5e2",
                "md5": "390d13a2c188d826f0f94a0cb4319b22",
                "sha256": "4760ac36178d7fe4e90f9a55daaa445310edbecea9c5d7374a69fe612b4ca632"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "390d13a2c188d826f0f94a0cb4319b22",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 114988,
            "upload_time": "2024-12-14T19:38:41",
            "upload_time_iso_8601": "2024-12-14T19:38:41.484556Z",
            "url": "https://files.pythonhosted.org/packages/74/c4/29326cff4a2083c743d64b77052e580c140a9fb14d3d3196b9ac49daf5e2/concave_hull-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "78c01bad56c9f653eb47793dc21e1cacea9ed328d38cf61f99f2307017ccc003",
                "md5": "c4e45cda69c470e6986b50baf2fa04ae",
                "sha256": "274b27f2b2cad32cd16ebc25dd32f832e1a781b854bd7ea6afc5dec145b99e9d"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c4e45cda69c470e6986b50baf2fa04ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 85533,
            "upload_time": "2024-12-14T19:38:45",
            "upload_time_iso_8601": "2024-12-14T19:38:45.111095Z",
            "url": "https://files.pythonhosted.org/packages/78/c0/1bad56c9f653eb47793dc21e1cacea9ed328d38cf61f99f2307017ccc003/concave_hull-0.0.9-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b93041d994da2c679753486c0de63066f0bef46930b38f9e076b355570b30a15",
                "md5": "94aa2ca9e5693dca7049ee6854a65869",
                "sha256": "4ce71ea121bf67d39df53221fe4451c5b4ebc8e80adbf2178bf1d1b21cdcff20"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "94aa2ca9e5693dca7049ee6854a65869",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 86414,
            "upload_time": "2024-12-14T19:38:47",
            "upload_time_iso_8601": "2024-12-14T19:38:47.305476Z",
            "url": "https://files.pythonhosted.org/packages/b9/30/41d994da2c679753486c0de63066f0bef46930b38f9e076b355570b30a15/concave_hull-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "10414994842c4d8a1c3668641bc895e6f37fccc3a67f59bafbdb0a7b65d32f51",
                "md5": "71cf77130f3b5d7f76f66f513437408a",
                "sha256": "7f9efba0dd2a259b86bd4c4778ea2c439e5990b3a974e669b5e7db63dbd937c9"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "71cf77130f3b5d7f76f66f513437408a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 79040,
            "upload_time": "2024-12-14T19:38:49",
            "upload_time_iso_8601": "2024-12-14T19:38:49.310447Z",
            "url": "https://files.pythonhosted.org/packages/10/41/4994842c4d8a1c3668641bc895e6f37fccc3a67f59bafbdb0a7b65d32f51/concave_hull-0.0.9-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8b9f748f404ae86f0783bd69e6527e71c2083eb1137ebb1934d6e972104dec7c",
                "md5": "edce456eaed266042d3e466f93735a0e",
                "sha256": "5e7a72867569b2ac601aa7f0ec955e01ad33358e6130a11512754b68147441ff"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "edce456eaed266042d3e466f93735a0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 108454,
            "upload_time": "2024-12-14T19:38:53",
            "upload_time_iso_8601": "2024-12-14T19:38:53.201145Z",
            "url": "https://files.pythonhosted.org/packages/8b/9f/748f404ae86f0783bd69e6527e71c2083eb1137ebb1934d6e972104dec7c/concave_hull-0.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b5636f75f1aba7ff2119471210af8c7949e8b05ba37428d94c09bfe363965eb8",
                "md5": "9f3441b3cd5af915b598503c0609fcab",
                "sha256": "1c1e276e88d91336f31515aee1070e2f76772177f47dad24e6ee2f2fe8b4b72b"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9f3441b3cd5af915b598503c0609fcab",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 116089,
            "upload_time": "2024-12-14T19:38:55",
            "upload_time_iso_8601": "2024-12-14T19:38:55.376694Z",
            "url": "https://files.pythonhosted.org/packages/b5/63/6f75f1aba7ff2119471210af8c7949e8b05ba37428d94c09bfe363965eb8/concave_hull-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eee023c614f999b89e57fca9043c25965b7ddb5c4ee4865724951c3f85cfa430",
                "md5": "cc21ab0ea55d44f0e7f070d9c1d32535",
                "sha256": "ac0bece551f0f9ca7e8f0709819851c502de5ffb5cea98aea89bc04f23eb2f8b"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cc21ab0ea55d44f0e7f070d9c1d32535",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 86994,
            "upload_time": "2024-12-14T19:38:57",
            "upload_time_iso_8601": "2024-12-14T19:38:57.523642Z",
            "url": "https://files.pythonhosted.org/packages/ee/e0/23c614f999b89e57fca9043c25965b7ddb5c4ee4865724951c3f85cfa430/concave_hull-0.0.9-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3d0c2205b29f92257e1f9487ec87fafe66ad23392cff4b9772403a8818fa55a2",
                "md5": "f38eafed13b9debb29fb3dca72ddd589",
                "sha256": "5e09c11db2cd3940acb55c7f9cddee70004944c9065e18b2d4d927afc4b85aae"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f38eafed13b9debb29fb3dca72ddd589",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 85009,
            "upload_time": "2024-12-14T19:38:59",
            "upload_time_iso_8601": "2024-12-14T19:38:59.454836Z",
            "url": "https://files.pythonhosted.org/packages/3d/0c/2205b29f92257e1f9487ec87fafe66ad23392cff4b9772403a8818fa55a2/concave_hull-0.0.9-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "604567cacdb86795393badaa62b01c56142314b5b3716d60773b7c8459b52750",
                "md5": "1d80a39d6135ec1d9ec285bfd53beb12",
                "sha256": "5f7620205ae40f938e7c43816aeaf2f9d181e3475e4af2e873ffe014d7c2ced2"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1d80a39d6135ec1d9ec285bfd53beb12",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 77995,
            "upload_time": "2024-12-14T19:39:03",
            "upload_time_iso_8601": "2024-12-14T19:39:03.812433Z",
            "url": "https://files.pythonhosted.org/packages/60/45/67cacdb86795393badaa62b01c56142314b5b3716d60773b7c8459b52750/concave_hull-0.0.9-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb541313f120476df5fef08c82e2a2cdb8ece98895a20a368527900589f735e3",
                "md5": "0a449c980f327cfb8f7d77a2e1c67975",
                "sha256": "8fd646c93e105ca8dcd5b8fb46af1b810b0562485d8a00f658eb5bef0bfa6050"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0a449c980f327cfb8f7d77a2e1c67975",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 108650,
            "upload_time": "2024-12-14T19:39:04",
            "upload_time_iso_8601": "2024-12-14T19:39:04.714656Z",
            "url": "https://files.pythonhosted.org/packages/eb/54/1313f120476df5fef08c82e2a2cdb8ece98895a20a368527900589f735e3/concave_hull-0.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "37e4c806cc43c206dafec9b8172cffa7776265a4576c4a7c791a3e5ac5d817cb",
                "md5": "b23c3ecefec61ca387fef67ab07343d3",
                "sha256": "3e09c88000ea00a1b80887c116956987dc877552f63ea43757c133fdd48a5a22"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b23c3ecefec61ca387fef67ab07343d3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 115971,
            "upload_time": "2024-12-14T19:39:05",
            "upload_time_iso_8601": "2024-12-14T19:39:05.668649Z",
            "url": "https://files.pythonhosted.org/packages/37/e4/c806cc43c206dafec9b8172cffa7776265a4576c4a7c791a3e5ac5d817cb/concave_hull-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "57ce91535188a6d4958aa85d9fe32c6dc8b5ee7b45c7846a5faaffd7c218bf14",
                "md5": "3eecf3137dd7d858370b95202dff6277",
                "sha256": "29efe6cf9ba0e29034b8c051f4d03380985219262ccb31b0bac3188cc8641fa4"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3eecf3137dd7d858370b95202dff6277",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 86961,
            "upload_time": "2024-12-14T19:39:06",
            "upload_time_iso_8601": "2024-12-14T19:39:06.677745Z",
            "url": "https://files.pythonhosted.org/packages/57/ce/91535188a6d4958aa85d9fe32c6dc8b5ee7b45c7846a5faaffd7c218bf14/concave_hull-0.0.9-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "529f8638f872d08238518bbba0d4d74b72330faa2cfbb12d0970db809a2e4c66",
                "md5": "04473e820e3814eed0e736652ee31b3b",
                "sha256": "8f4f534c2829e1171d2376029dfc99e4c322cb87548b271c9f9164c58cc8bca2"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "04473e820e3814eed0e736652ee31b3b",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 85065,
            "upload_time": "2024-12-14T19:39:09",
            "upload_time_iso_8601": "2024-12-14T19:39:09.778584Z",
            "url": "https://files.pythonhosted.org/packages/52/9f/8638f872d08238518bbba0d4d74b72330faa2cfbb12d0970db809a2e4c66/concave_hull-0.0.9-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9164692fa31b74951c87f7dc09be3d715241d49449e31adaa1fe209b9c26b9c7",
                "md5": "2f7ec06c3c002dc876685fc594401d12",
                "sha256": "5c445dc44982faff860695f7d9bc3c2fffc37e5feab42e064a346134ac378c46"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2f7ec06c3c002dc876685fc594401d12",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 78025,
            "upload_time": "2024-12-14T19:39:11",
            "upload_time_iso_8601": "2024-12-14T19:39:11.964542Z",
            "url": "https://files.pythonhosted.org/packages/91/64/692fa31b74951c87f7dc09be3d715241d49449e31adaa1fe209b9c26b9c7/concave_hull-0.0.9-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "50d19ac15c1c642ab5c792eb1749013fdbf13eb4092576b31f12e99f4a1aebb5",
                "md5": "ff82fa57f5c7e68744b4b3c570ff3a43",
                "sha256": "7b3bd94b29885e60ee1ba3f57f6d16ba8bd121255c546a7ab5ab75cf2a9bc469"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "ff82fa57f5c7e68744b4b3c570ff3a43",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 108755,
            "upload_time": "2024-12-14T19:39:13",
            "upload_time_iso_8601": "2024-12-14T19:39:13.106475Z",
            "url": "https://files.pythonhosted.org/packages/50/d1/9ac15c1c642ab5c792eb1749013fdbf13eb4092576b31f12e99f4a1aebb5/concave_hull-0.0.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e797da709570f8ce5367dc551a8e4ce151e8898183c0ea1c3346080112c37c1e",
                "md5": "7368c16128cd0238054a6eda397c8a8e",
                "sha256": "2fe7d8e9a25bee4c360e2ed6452d557451efbfd2afc5e9d0b8bbc5e40cc04a38"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7368c16128cd0238054a6eda397c8a8e",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 115941,
            "upload_time": "2024-12-14T19:39:14",
            "upload_time_iso_8601": "2024-12-14T19:39:14.092635Z",
            "url": "https://files.pythonhosted.org/packages/e7/97/da709570f8ce5367dc551a8e4ce151e8898183c0ea1c3346080112c37c1e/concave_hull-0.0.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85fcf4ce84bf59c8576919a1b5d2ecf3f5344fac9876fadc3f1d5b0c658846f7",
                "md5": "b35d1d42ff13cc21953fa69cdc5997a5",
                "sha256": "7aefca8c35261e95f83809beebd7f534e3f29b603502a23139177ff20aa837b1"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b35d1d42ff13cc21953fa69cdc5997a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 86971,
            "upload_time": "2024-12-14T19:39:15",
            "upload_time_iso_8601": "2024-12-14T19:39:15.110195Z",
            "url": "https://files.pythonhosted.org/packages/85/fc/f4ce84bf59c8576919a1b5d2ecf3f5344fac9876fadc3f1d5b0c658846f7/concave_hull-0.0.9-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9709fd513a99632ea03089893967394ac3459b079445ff36d4deccfcca394cdc",
                "md5": "900af7e7f79a587f385b56ed2f9b0af3",
                "sha256": "99a189e4b1c3ff9f21ed7c317da23099281805f53862cbd4f25d09bfe8e32e74"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "900af7e7f79a587f385b56ed2f9b0af3",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 84279,
            "upload_time": "2024-12-14T19:39:16",
            "upload_time_iso_8601": "2024-12-14T19:39:16.052973Z",
            "url": "https://files.pythonhosted.org/packages/97/09/fd513a99632ea03089893967394ac3459b079445ff36d4deccfcca394cdc/concave_hull-0.0.9-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "574697e7ed88e8f84be6144d2a5d3897097f95762b437bc85e108cebd731b370",
                "md5": "33bdfb950f887009aa99a9288df0ea09",
                "sha256": "d5f5ba5d2409a4d98a66df7673bad2852b1036439ec6163f5f69ab6d8070aa65"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "33bdfb950f887009aa99a9288df0ea09",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 110405,
            "upload_time": "2024-12-14T19:39:16",
            "upload_time_iso_8601": "2024-12-14T19:39:16.968988Z",
            "url": "https://files.pythonhosted.org/packages/57/46/97e7ed88e8f84be6144d2a5d3897097f95762b437bc85e108cebd731b370/concave_hull-0.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "35998a214268011153b3bc2ff6e2485e535c34ff78944621d831a1b8091e2811",
                "md5": "319fc9b1faf144953981bf2f11471fcc",
                "sha256": "248daa73b0abc73fbfe5a17f8c8c582c08e816ba8213ba53bff2476c0a9e9e43"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "319fc9b1faf144953981bf2f11471fcc",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 118696,
            "upload_time": "2024-12-14T19:39:19",
            "upload_time_iso_8601": "2024-12-14T19:39:19.190922Z",
            "url": "https://files.pythonhosted.org/packages/35/99/8a214268011153b3bc2ff6e2485e535c34ff78944621d831a1b8091e2811/concave_hull-0.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "386cb45da5a7c27f9875057f51c7dd0a1f0a491dc065ae4b7d5f70ce7ec0fb25",
                "md5": "13bba325a2ace933328b2fefb96fc693",
                "sha256": "053e4b053fed3825694e744866951d2a9695b52f9bde042aec9d94bcc86a17ca"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "13bba325a2ace933328b2fefb96fc693",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 85794,
            "upload_time": "2024-12-14T19:39:21",
            "upload_time_iso_8601": "2024-12-14T19:39:21.092425Z",
            "url": "https://files.pythonhosted.org/packages/38/6c/b45da5a7c27f9875057f51c7dd0a1f0a491dc065ae4b7d5f70ce7ec0fb25/concave_hull-0.0.9-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1cda0c7d64f12fe87b2e1ab6cc78fb2294bb6a5a943a08775b5bf97369af7749",
                "md5": "561d7702d8e5cc7794c65ab7d3549dae",
                "sha256": "f40524e855f4e6365855fd39968205eb8466730e2830fbe5d15c353040a15d1e"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "561d7702d8e5cc7794c65ab7d3549dae",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 84667,
            "upload_time": "2024-12-14T19:39:22",
            "upload_time_iso_8601": "2024-12-14T19:39:22.034246Z",
            "url": "https://files.pythonhosted.org/packages/1c/da/0c7d64f12fe87b2e1ab6cc78fb2294bb6a5a943a08775b5bf97369af7749/concave_hull-0.0.9-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24aba5e771619344ffbc765acbdd0c3aa5dbb3f7e60362a16842ef459b359831",
                "md5": "5562babc6d0ca27621e1fc651a3af217",
                "sha256": "e0ff94761b33ffac21a9dc32e56298c58a964c8e02e7c6195fd07171f88afe12"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "5562babc6d0ca27621e1fc651a3af217",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 77510,
            "upload_time": "2024-12-14T19:39:22",
            "upload_time_iso_8601": "2024-12-14T19:39:22.937361Z",
            "url": "https://files.pythonhosted.org/packages/24/ab/a5e771619344ffbc765acbdd0c3aa5dbb3f7e60362a16842ef459b359831/concave_hull-0.0.9-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb59b32662faf87def35a3fa401aaa2a3513d61374584d71ed1c79fb57bda146",
                "md5": "f7e349057f4db14aabddcf0fd0a1f21f",
                "sha256": "aa78991f22a3922ad7f22894a6ee0ba30223953e1c5c87350dff61b8b93d1772"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f7e349057f4db14aabddcf0fd0a1f21f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 107666,
            "upload_time": "2024-12-14T19:39:25",
            "upload_time_iso_8601": "2024-12-14T19:39:25.191741Z",
            "url": "https://files.pythonhosted.org/packages/eb/59/b32662faf87def35a3fa401aaa2a3513d61374584d71ed1c79fb57bda146/concave_hull-0.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c4e8cc312575384253cb1b20d9476f754823fa67f74d30cc77b95d2c6fdc7c3",
                "md5": "4c34728e92ad0cdbae69daacdbe48f62",
                "sha256": "34d4e26b09ea1a6090ac9bb3287b5c9153567530499550513906afe1211ab3da"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4c34728e92ad0cdbae69daacdbe48f62",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 114846,
            "upload_time": "2024-12-14T19:39:26",
            "upload_time_iso_8601": "2024-12-14T19:39:26.243279Z",
            "url": "https://files.pythonhosted.org/packages/6c/4e/8cc312575384253cb1b20d9476f754823fa67f74d30cc77b95d2c6fdc7c3/concave_hull-0.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1264632205908dfba0f267d20e361f73f531b51faae8aad1e39e04807fca7daa",
                "md5": "fa494659ecdf92f595a2566342c39de7",
                "sha256": "584763f0086978e31e9a058e534dabe03b541db75ad5fa9dff36371c8fdca721"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "fa494659ecdf92f595a2566342c39de7",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 85534,
            "upload_time": "2024-12-14T19:39:27",
            "upload_time_iso_8601": "2024-12-14T19:39:27.360235Z",
            "url": "https://files.pythonhosted.org/packages/12/64/632205908dfba0f267d20e361f73f531b51faae8aad1e39e04807fca7daa/concave_hull-0.0.9-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0f38adeec94e0853650607ae1843d06a41807e63c8752c0e92c8c371816131c1",
                "md5": "c51513f6adb9439eb1601b4470b8859c",
                "sha256": "7fbb1ff4a6e5c46ef6f830380033d71b02568e74c0bfc2bff11356c4f12f41b7"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c51513f6adb9439eb1601b4470b8859c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 84931,
            "upload_time": "2024-12-14T19:39:28",
            "upload_time_iso_8601": "2024-12-14T19:39:28.321451Z",
            "url": "https://files.pythonhosted.org/packages/0f/38/adeec94e0853650607ae1843d06a41807e63c8752c0e92c8c371816131c1/concave_hull-0.0.9-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6f6c0a125c56f6a149ec71365dba0b7c127ba4309ff72af90ac0497d4701e01d",
                "md5": "90a1c878dfc0dda022928e8dc9e27e3f",
                "sha256": "560eccd2a613bb71635ebaca7416df5d7c8d3847bb367b49fd9fd9c8eb8c6acd"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "90a1c878dfc0dda022928e8dc9e27e3f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 77727,
            "upload_time": "2024-12-14T19:39:30",
            "upload_time_iso_8601": "2024-12-14T19:39:30.293009Z",
            "url": "https://files.pythonhosted.org/packages/6f/6c/0a125c56f6a149ec71365dba0b7c127ba4309ff72af90ac0497d4701e01d/concave_hull-0.0.9-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "44bf14a4d16ab49bce50c89b796055f851b293a476e89f110a664110b399a62c",
                "md5": "0e2dea2c637cbf8210e9131dc7e1a08b",
                "sha256": "66b496912298480529c22c8f5b6d5f55a822bf40bb92be282990ddd01315022f"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0e2dea2c637cbf8210e9131dc7e1a08b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 107624,
            "upload_time": "2024-12-14T19:39:32",
            "upload_time_iso_8601": "2024-12-14T19:39:32.536239Z",
            "url": "https://files.pythonhosted.org/packages/44/bf/14a4d16ab49bce50c89b796055f851b293a476e89f110a664110b399a62c/concave_hull-0.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd9336674c404c4dcf9e4b812b1ec426f4e58cb35b55f7b62bd80e2413c61612",
                "md5": "4361b3cf5d596880bb37ac2fba8059ad",
                "sha256": "d0ec18b0c5a378efd2a09ef85d4f695e57672b5789ef03fa6f8a807f4b360803"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4361b3cf5d596880bb37ac2fba8059ad",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 115031,
            "upload_time": "2024-12-14T19:39:34",
            "upload_time_iso_8601": "2024-12-14T19:39:34.725453Z",
            "url": "https://files.pythonhosted.org/packages/bd/93/36674c404c4dcf9e4b812b1ec426f4e58cb35b55f7b62bd80e2413c61612/concave_hull-0.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2d0d16274868af28be624ea091f1bcea37bebd164d60887f417372921816d0f1",
                "md5": "c8187803bd9cff9320ecedc53f7aab21",
                "sha256": "ba3ef4ec205d5c18277726644fff332194cca86c93be8a5f6178f23d136481f5"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c8187803bd9cff9320ecedc53f7aab21",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 85623,
            "upload_time": "2024-12-14T19:39:36",
            "upload_time_iso_8601": "2024-12-14T19:39:36.966238Z",
            "url": "https://files.pythonhosted.org/packages/2d/0d/16274868af28be624ea091f1bcea37bebd164d60887f417372921816d0f1/concave_hull-0.0.9-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "28d271ddd97f5075acff9a604cc552006fd5a24b4443831fc9cbe7d55d37fc2d",
                "md5": "5f9e52e79b7801e5433950fbd25d109b",
                "sha256": "f0727dc6bff5138b5988c3baeefef42c0dc494c838a86624667047d7c9678bd8"
            },
            "downloads": -1,
            "filename": "concave_hull-0.0.9.tar.gz",
            "has_sig": false,
            "md5_digest": "5f9e52e79b7801e5433950fbd25d109b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 11448782,
            "upload_time": "2024-12-14T19:39:38",
            "upload_time_iso_8601": "2024-12-14T19:39:38.842342Z",
            "url": "https://files.pythonhosted.org/packages/28/d2/71ddd97f5075acff9a604cc552006fd5a24b4443831fc9cbe7d55d37fc2d/concave_hull-0.0.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-14 19:39:38",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "concave-hull"
}
        
Elapsed time: 0.33504s