From 579af57fb846a137365107f13222986dbebfc9a7 Mon Sep 17 00:00:00 2001 From: Nicolas Predella Date: Thu, 6 Aug 2026 11:46:11 +0300 Subject: [PATCH] ransac wheel --- blender_manifest.toml | 1 + pyproject.toml | 1 + uv.lock | 11 +++++++++++ wheels/pyransac3d-0.6.0-py3-none-any.whl | Bin 0 -> 18209 bytes 4 files changed, 13 insertions(+) create mode 100644 wheels/pyransac3d-0.6.0-py3-none-any.whl diff --git a/blender_manifest.toml b/blender_manifest.toml index f54a057..861811b 100644 --- a/blender_manifest.toml +++ b/blender_manifest.toml @@ -61,6 +61,7 @@ wheels = [ "./wheels/python_libnest2d-0.1.3-cp313-cp313-win_amd64.whl", "./wheels/shapely_polyskel-0.1.2-py3-none-any.whl", "./wheels/euclid3-0.1-py3-none-any.whl", + "./wheels/pyransac3d-0.6.0-py3-none-any.whl", ] # Optional: add-ons can list which resources they will require: diff --git a/pyproject.toml b/pyproject.toml index c9b2baf..64b04d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,4 +12,5 @@ dependencies = [ "python-libnest2d>=0.1.3", "shapely-polyskel>=0.1.2", "euclid3>=0.1", + "pyransac3d>=0.6.0", ] diff --git a/uv.lock b/uv.lock index 19d71b0..d40dc39 100644 --- a/uv.lock +++ b/uv.lock @@ -31,6 +31,7 @@ dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pyclipper" }, + { name = "pyransac3d" }, { name = "python-libnest2d" }, { name = "shapely" }, { name = "shapely-polyskel" }, @@ -42,6 +43,7 @@ requires-dist = [ { name = "fake-bpy-module", specifier = ">=20260317" }, { name = "numpy", specifier = ">=2.2.6" }, { name = "pyclipper", specifier = ">=1.4.0" }, + { name = "pyransac3d", specifier = ">=0.6.0" }, { name = "python-libnest2d", specifier = ">=0.1.3" }, { name = "shapely", specifier = ">=2.1.2" }, { name = "shapely-polyskel", specifier = ">=0.1.2" }, @@ -237,6 +239,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/18/59/81050abdc9e5b90ffc2c765738c5e40e9abd8e44864aaa737b600f16c562/pyclipper-1.4.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98b2a40f98e1fc1b29e8a6094072e7e0c7dfe901e573bf6cfc6eb7ce84a7ae87", size = 126495, upload-time = "2025-12-01T13:15:33.743Z" }, ] +[[package]] +name = "pyransac3d" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/14/5a832a068aea13656c3b4155544d79c5e7d68b7bb8b539bac5a57abefae0/pyransac3d-0.6.0.tar.gz", hash = "sha256:2ac153b2e94cf0326b2ebf88246f4be5f2a4fd57434e9d3a7d8ed15784843328", size = 11686, upload-time = "2021-07-24T17:27:47.827Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/6b/a4cc6a28ac80d3bccef0bf869634ee21731e1a85e5ce508c41e1ba0c8437/pyransac3d-0.6.0-py3-none-any.whl", hash = "sha256:d081abf704b97b5c087418202acac385872da60d7af08556e91faf290784443f", size = 18209, upload-time = "2021-07-24T17:27:45.782Z" }, +] + [[package]] name = "python-libnest2d" version = "0.1.3" diff --git a/wheels/pyransac3d-0.6.0-py3-none-any.whl b/wheels/pyransac3d-0.6.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..e38b1476d263ce02a03880669b479d50f314a17f GIT binary patch literal 18209 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 literal 0 HcmV?d00001