Name | concave-hull JSON |
Version |
0.0.9
JSON |
| download |
home_page | None |
Summary | A very fast 2D concave hull algorithm |
upload_time | 2024-12-14 19:39:38 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | None |
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.

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\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"
}