From 70a56e5427d1a67abb2088d78d0f6b3a28c1307e Mon Sep 17 00:00:00 2001 From: koaning Date: Wed, 25 Mar 2026 14:30:22 +0100 Subject: [PATCH] Release 0.3.1: remove stray deps, add dependency guard test - Remove accidental python-dotenv and umap-learn core dependencies - Add test_no_unexpected_dependencies to catch future dep creep in CI - Add HoverZoom reference doc and mkdocs nav entry - Bump version to 0.3.1 Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 8 +- mkdocs.yml | 1 + mkdocs/assets/gallery/hoverzoom.png | Bin 0 -> 87671 bytes mkdocs/reference/hover-zoom.md | 12 +++ pyproject.toml | 4 +- tests/test_imports.py | 15 ++++ uv.lock | 126 +--------------------------- 7 files changed, 35 insertions(+), 131 deletions(-) create mode 100644 mkdocs/assets/gallery/hoverzoom.png create mode 100644 mkdocs/reference/hover-zoom.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 498b68f7..48d948b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. +## [0.3.1] - 2026-03-25 + +### Fixed +- Removed accidental `python-dotenv` and `umap-learn` core dependencies that were not used by any widget. + ## [0.3.0] - 2026-03-24 ### Changed @@ -11,9 +16,6 @@ All notable changes to this project will be documented in this file. - `Paint` canvas now respects the `width` and `height` traitlets instead of expanding to fill the host container. - `Paint` with `init_image` now resizes the image to match target dimensions upfront, so `get_pil()` returns the correct resolution before the first stroke. -### Added -- New `HoverZoom` widget — hover over an image to see a magnified side panel, like product zoom on e-commerce sites. - ## [0.2.40] - 2026-03-24 ### Added diff --git a/mkdocs.yml b/mkdocs.yml index a268fc89..22ca71e4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,6 +67,7 @@ nav: - AltairWidget: reference/altair-widget.md - ApiDoc: reference/api-doc.md - PlaySlider: reference/play-slider.md + - HoverZoom: reference/hover-zoom.md - Utils: reference/utils.md plugins: - search diff --git a/mkdocs/assets/gallery/hoverzoom.png b/mkdocs/assets/gallery/hoverzoom.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcaf670396bbd1636fffd79bffb27a4c28367e3 GIT binary patch literal 87671 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 kBj)d`9t2mL(fbSW@k0a3nL5=1.2.1", - "umap-learn>=0.5.11", ] [project.optional-dependencies] diff --git a/tests/test_imports.py b/tests/test_imports.py index 33d8ecda..1e7ab89a 100644 --- a/tests/test_imports.py +++ b/tests/test_imports.py @@ -71,3 +71,18 @@ def test_import_scatter_widget(): def test_import_three_widget(): from wigglystuff.three_widget import ThreeWidget + + +def test_no_unexpected_dependencies(): + """Guard against accidentally adding dependencies to pyproject.toml.""" + import tomllib + from pathlib import Path + + pyproject = Path(__file__).parent.parent / "pyproject.toml" + data = tomllib.loads(pyproject.read_text()) + deps = { + d.split(">")[0].split("<")[0].split("=")[0].split("[")[0].strip() + for d in data["project"]["dependencies"] + } + allowed = {"anywidget", "drawdata", "numpy", "pillow"} + assert deps == allowed, f"Unexpected dependencies: {deps - allowed}" diff --git a/uv.lock b/uv.lock index 49a0c269..e8d4ec18 100644 --- a/uv.lock +++ b/uv.lock @@ -1268,34 +1268,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, ] -[[package]] -name = "llvmlite" -version = "0.46.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/74/cd/08ae687ba099c7e3d21fe2ea536500563ef1943c5105bf6ab4ee3829f68e/llvmlite-0.46.0.tar.gz", hash = "sha256:227c9fd6d09dce2783c18b754b7cd9d9b3b3515210c46acc2d3c5badd9870ceb", size = 193456, upload-time = "2025-12-08T18:15:36.295Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/a4/3959e1c61c5ca9db7921e5fd115b344c29b9d57a5dadd87bef97963ca1a5/llvmlite-0.46.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4323177e936d61ae0f73e653e2e614284d97d14d5dd12579adc92b6c2b0597b0", size = 37232766, upload-time = "2025-12-08T18:14:34.765Z" }, - { url = "https://files.pythonhosted.org/packages/c2/a5/a4d916f1015106e1da876028606a8e87fd5d5c840f98c87bc2d5153b6a2f/llvmlite-0.46.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a2d461cb89537b7c20feb04c46c32e12d5ad4f0896c9dfc0f60336219ff248e", size = 56275176, upload-time = "2025-12-08T18:14:37.944Z" }, - { url = "https://files.pythonhosted.org/packages/79/7f/a7f2028805dac8c1a6fae7bda4e739b7ebbcd45b29e15bf6d21556fcd3d5/llvmlite-0.46.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b1f6595a35b7b39c3518b85a28bf18f45e075264e4b2dce3f0c2a4f232b4a910", size = 55128629, upload-time = "2025-12-08T18:14:41.674Z" }, - { url = "https://files.pythonhosted.org/packages/b2/bc/4689e1ba0c073c196b594471eb21be0aa51d9e64b911728aa13cd85ef0ae/llvmlite-0.46.0-cp310-cp310-win_amd64.whl", hash = "sha256:e7a34d4aa6f9a97ee006b504be6d2b8cb7f755b80ab2f344dda1ef992f828559", size = 38138651, upload-time = "2025-12-08T18:14:45.845Z" }, - { url = "https://files.pythonhosted.org/packages/7a/a1/2ad4b2367915faeebe8447f0a057861f646dbf5fbbb3561db42c65659cf3/llvmlite-0.46.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82f3d39b16f19aa1a56d5fe625883a6ab600d5cc9ea8906cca70ce94cabba067", size = 37232766, upload-time = "2025-12-08T18:14:48.836Z" }, - { url = "https://files.pythonhosted.org/packages/12/b5/99cf8772fdd846c07da4fd70f07812a3c8fd17ea2409522c946bb0f2b277/llvmlite-0.46.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a3df43900119803bbc52720e758c76f316a9a0f34612a886862dfe0a5591a17e", size = 56275175, upload-time = "2025-12-08T18:14:51.604Z" }, - { url = "https://files.pythonhosted.org/packages/38/f2/ed806f9c003563732da156139c45d970ee435bd0bfa5ed8de87ba972b452/llvmlite-0.46.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de183fefc8022d21b0aa37fc3e90410bc3524aed8617f0ff76732fc6c3af5361", size = 55128630, upload-time = "2025-12-08T18:14:55.107Z" }, - { url = "https://files.pythonhosted.org/packages/19/0c/8f5a37a65fc9b7b17408508145edd5f86263ad69c19d3574e818f533a0eb/llvmlite-0.46.0-cp311-cp311-win_amd64.whl", hash = "sha256:e8b10bc585c58bdffec9e0c309bb7d51be1f2f15e169a4b4d42f2389e431eb93", size = 38138652, upload-time = "2025-12-08T18:14:58.171Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f8/4db016a5e547d4e054ff2f3b99203d63a497465f81ab78ec8eb2ff7b2304/llvmlite-0.46.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b9588ad4c63b4f0175a3984b85494f0c927c6b001e3a246a3a7fb3920d9a137", size = 37232767, upload-time = "2025-12-08T18:15:00.737Z" }, - { url = "https://files.pythonhosted.org/packages/aa/85/4890a7c14b4fa54400945cb52ac3cd88545bbdb973c440f98ca41591cdc5/llvmlite-0.46.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3535bd2bb6a2d7ae4012681ac228e5132cdb75fefb1bcb24e33f2f3e0c865ed4", size = 56275176, upload-time = "2025-12-08T18:15:03.936Z" }, - { url = "https://files.pythonhosted.org/packages/6a/07/3d31d39c1a1a08cd5337e78299fca77e6aebc07c059fbd0033e3edfab45c/llvmlite-0.46.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cbfd366e60ff87ea6cc62f50bc4cd800ebb13ed4c149466f50cf2163a473d1e", size = 55128630, upload-time = "2025-12-08T18:15:07.196Z" }, - { url = "https://files.pythonhosted.org/packages/2a/6b/d139535d7590a1bba1ceb68751bef22fadaa5b815bbdf0e858e3875726b2/llvmlite-0.46.0-cp312-cp312-win_amd64.whl", hash = "sha256:398b39db462c39563a97b912d4f2866cd37cba60537975a09679b28fbbc0fb38", size = 38138940, upload-time = "2025-12-08T18:15:10.162Z" }, - { url = "https://files.pythonhosted.org/packages/e6/ff/3eba7eb0aed4b6fca37125387cd417e8c458e750621fce56d2c541f67fa8/llvmlite-0.46.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:30b60892d034bc560e0ec6654737aaa74e5ca327bd8114d82136aa071d611172", size = 37232767, upload-time = "2025-12-08T18:15:13.22Z" }, - { url = "https://files.pythonhosted.org/packages/0e/54/737755c0a91558364b9200702c3c9c15d70ed63f9b98a2c32f1c2aa1f3ba/llvmlite-0.46.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6cc19b051753368a9c9f31dc041299059ee91aceec81bd57b0e385e5d5bf1a54", size = 56275176, upload-time = "2025-12-08T18:15:16.339Z" }, - { url = "https://files.pythonhosted.org/packages/e6/91/14f32e1d70905c1c0aa4e6609ab5d705c3183116ca02ac6df2091868413a/llvmlite-0.46.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bca185892908f9ede48c0acd547fe4dc1bafefb8a4967d47db6cf664f9332d12", size = 55128629, upload-time = "2025-12-08T18:15:19.493Z" }, - { url = "https://files.pythonhosted.org/packages/4a/a7/d526ae86708cea531935ae777b6dbcabe7db52718e6401e0fb9c5edea80e/llvmlite-0.46.0-cp313-cp313-win_amd64.whl", hash = "sha256:67438fd30e12349ebb054d86a5a1a57fd5e87d264d2451bcfafbbbaa25b82a35", size = 38138941, upload-time = "2025-12-08T18:15:22.536Z" }, - { url = "https://files.pythonhosted.org/packages/95/ae/af0ffb724814cc2ea64445acad05f71cff5f799bb7efb22e47ee99340dbc/llvmlite-0.46.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:d252edfb9f4ac1fcf20652258e3f102b26b03eef738dc8a6ffdab7d7d341d547", size = 37232768, upload-time = "2025-12-08T18:15:25.055Z" }, - { url = "https://files.pythonhosted.org/packages/c9/19/5018e5352019be753b7b07f7759cdabb69ca5779fea2494be8839270df4c/llvmlite-0.46.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:379fdd1c59badeff8982cb47e4694a6143bec3bb49aa10a466e095410522064d", size = 56275173, upload-time = "2025-12-08T18:15:28.109Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c9/d57877759d707e84c082163c543853245f91b70c804115a5010532890f18/llvmlite-0.46.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e8cbfff7f6db0fa2c771ad24154e2a7e457c2444d7673e6de06b8b698c3b269", size = 55128628, upload-time = "2025-12-08T18:15:31.098Z" }, - { url = "https://files.pythonhosted.org/packages/30/a8/e61a8c2b3cc7a597073d9cde1fcbb567e9d827f1db30c93cf80422eac70d/llvmlite-0.46.0-cp314-cp314-win_amd64.whl", hash = "sha256:7821eda3ec1f18050f981819756631d60b6d7ab1a6cf806d9efefbe3f4082d61", size = 39153056, upload-time = "2025-12-08T18:15:33.938Z" }, -] - [[package]] name = "loro" version = "1.8.2" @@ -2052,39 +2024,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, ] -[[package]] -name = "numba" -version = "0.64.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llvmlite" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/23/c9/a0fb41787d01d621046138da30f6c2100d80857bf34b3390dd68040f27a3/numba-0.64.0.tar.gz", hash = "sha256:95e7300af648baa3308127b1955b52ce6d11889d16e8cfe637b4f85d2fca52b1", size = 2765679, upload-time = "2026-02-18T18:41:20.974Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/5e/604fed821cd7e3426bb3bc99a7ed6ac0bcb489f4cd93052256437d082f95/numba-0.64.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc09b79440952e3098eeebea4bf6e8d2355fb7f12734fcd9fc5039f0dca90727", size = 2683250, upload-time = "2026-02-18T18:40:45.829Z" }, - { url = "https://files.pythonhosted.org/packages/4f/9f/9275a723d050b5f1a9b1c7fb7dbfce324fef301a8e50c5f88338569db06c/numba-0.64.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1afe3a80b8c2f376b211fb7a49e536ef9eafc92436afc95a2f41ea5392f8cc65", size = 3742168, upload-time = "2026-02-18T18:40:48.066Z" }, - { url = "https://files.pythonhosted.org/packages/e2/d1/97ca7dddaa36b16f4c46319bdb6b4913ba15d0245317d0d8ccde7b2d7d92/numba-0.64.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23804194b93b8cd416c6444b5fbc4956082a45fed2d25436ef49c594666e7f7e", size = 3449103, upload-time = "2026-02-18T18:40:49.905Z" }, - { url = "https://files.pythonhosted.org/packages/52/0a/b9e137ad78415373e3353564500e8bf29dbce3c0d73633bb384d4e5d7537/numba-0.64.0-cp310-cp310-win_amd64.whl", hash = "sha256:e2a9fe998bb2cf848960b34db02c2c3b5e02cf82c07a26d9eef3494069740278", size = 2749950, upload-time = "2026-02-18T18:40:51.536Z" }, - { url = "https://files.pythonhosted.org/packages/89/a3/1a4286a1c16136c8896d8e2090d950e79b3ec626d3a8dc9620f6234d5a38/numba-0.64.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:766156ee4b8afeeb2b2e23c81307c5d19031f18d5ce76ae2c5fb1429e72fa92b", size = 2682938, upload-time = "2026-02-18T18:40:52.897Z" }, - { url = "https://files.pythonhosted.org/packages/19/16/aa6e3ba3cd45435c117d1101b278b646444ed05b7c712af631b91353f573/numba-0.64.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d17071b4ffc9d39b75d8e6c101a36f0c81b646123859898c9799cb31807c8f78", size = 3747376, upload-time = "2026-02-18T18:40:54.925Z" }, - { url = "https://files.pythonhosted.org/packages/c0/f1/dd2f25e18d75fdf897f730b78c5a7b00cc4450f2405564dbebfaf359f21f/numba-0.64.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ead5630434133bac87fa67526eacb264535e4e9a2d5ec780e0b4fc381a7d275", size = 3453292, upload-time = "2026-02-18T18:40:56.818Z" }, - { url = "https://files.pythonhosted.org/packages/31/29/e09d5630578a50a2b3fa154990b6b839cf95327aa0709e2d50d0b6816cd1/numba-0.64.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2b1fd93e7aaac07d6fbaed059c00679f591f2423885c206d8c1b55d65ca3f2d", size = 2749824, upload-time = "2026-02-18T18:40:58.392Z" }, - { url = "https://files.pythonhosted.org/packages/70/a6/9fc52cb4f0d5e6d8b5f4d81615bc01012e3cf24e1052a60f17a68deb8092/numba-0.64.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:69440a8e8bc1a81028446f06b363e28635aa67bd51b1e498023f03b812e0ce68", size = 2683418, upload-time = "2026-02-18T18:40:59.886Z" }, - { url = "https://files.pythonhosted.org/packages/9b/89/1a74ea99b180b7a5587b0301ed1b183a2937c4b4b67f7994689b5d36fc34/numba-0.64.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13721011f693ba558b8dd4e4db7f2640462bba1b855bdc804be45bbeb55031a", size = 3804087, upload-time = "2026-02-18T18:41:01.699Z" }, - { url = "https://files.pythonhosted.org/packages/91/e1/583c647404b15f807410510fec1eb9b80cb8474165940b7749f026f21cbc/numba-0.64.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0b180b1133f2b5d8b3f09d96b6d7a9e51a7da5dda3c09e998b5bcfac85d222c", size = 3504309, upload-time = "2026-02-18T18:41:03.252Z" }, - { url = "https://files.pythonhosted.org/packages/85/23/0fce5789b8a5035e7ace21216a468143f3144e02013252116616c58339aa/numba-0.64.0-cp312-cp312-win_amd64.whl", hash = "sha256:e63dc94023b47894849b8b106db28ccb98b49d5498b98878fac1a38f83ac007a", size = 2752740, upload-time = "2026-02-18T18:41:05.097Z" }, - { url = "https://files.pythonhosted.org/packages/52/80/2734de90f9300a6e2503b35ee50d9599926b90cbb7ac54f9e40074cd07f1/numba-0.64.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3bab2c872194dcd985f1153b70782ec0fbbe348fffef340264eacd3a76d59fd6", size = 2683392, upload-time = "2026-02-18T18:41:06.563Z" }, - { url = "https://files.pythonhosted.org/packages/42/e8/14b5853ebefd5b37723ef365c5318a30ce0702d39057eaa8d7d76392859d/numba-0.64.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:703a246c60832cad231d2e73c1182f25bf3cc8b699759ec8fe58a2dbc689a70c", size = 3812245, upload-time = "2026-02-18T18:41:07.963Z" }, - { url = "https://files.pythonhosted.org/packages/8a/a2/f60dc6c96d19b7185144265a5fbf01c14993d37ff4cd324b09d0212aa7ce/numba-0.64.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e2e49a7900ee971d32af7609adc0cfe6aa7477c6f6cccdf6d8138538cf7756f", size = 3511328, upload-time = "2026-02-18T18:41:09.504Z" }, - { url = "https://files.pythonhosted.org/packages/9c/2a/fe7003ea7e7237ee7014f8eaeeb7b0d228a2db22572ca85bab2648cf52cb/numba-0.64.0-cp313-cp313-win_amd64.whl", hash = "sha256:396f43c3f77e78d7ec84cdfc6b04969c78f8f169351b3c4db814b97e7acf4245", size = 2752668, upload-time = "2026-02-18T18:41:11.455Z" }, - { url = "https://files.pythonhosted.org/packages/3d/8a/77d26afe0988c592dd97cb8d4e80bfb3dfc7dbdacfca7d74a7c5c81dd8c2/numba-0.64.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f565d55eaeff382cbc86c63c8c610347453af3d1e7afb2b6569aac1c9b5c93ce", size = 2683590, upload-time = "2026-02-18T18:41:12.897Z" }, - { url = "https://files.pythonhosted.org/packages/8e/4b/600b8b7cdbc7f9cebee9ea3d13bb70052a79baf28944024ffcb59f0712e3/numba-0.64.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9b55169b18892c783f85e9ad9e6f5297a6d12967e4414e6b71361086025ff0bb", size = 3781163, upload-time = "2026-02-18T18:41:15.377Z" }, - { url = "https://files.pythonhosted.org/packages/ff/73/53f2d32bfa45b7175e9944f6b816d8c32840178c3eee9325033db5bf838e/numba-0.64.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:196bcafa02c9dd1707e068434f6d5cedde0feb787e3432f7f1f0e993cc336c4c", size = 3481172, upload-time = "2026-02-18T18:41:17.281Z" }, - { url = "https://files.pythonhosted.org/packages/b5/00/aebd2f7f1e11e38814bb96e95a27580817a7b340608d3ac085fdbab83174/numba-0.64.0-cp314-cp314-win_amd64.whl", hash = "sha256:213e9acbe7f1c05090592e79020315c1749dd52517b90e94c517dca3f014d4a1", size = 2754700, upload-time = "2026-02-18T18:41:19.277Z" }, -] - [[package]] name = "numpy" version = "2.2.6" @@ -2933,24 +2872,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/40/b2d7b9fdccc63e48ae4dbd363b6b89eb7ac346ea49ed667bb71f92af3021/pymdown_extensions-10.17.1-py3-none-any.whl", hash = "sha256:1f160209c82eecbb5d8a0d8f89a4d9bd6bdcbde9a8537761844cfc57ad5cd8a6", size = 266310, upload-time = "2025-11-11T21:44:56.809Z" }, ] -[[package]] -name = "pynndescent" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "joblib" }, - { name = "llvmlite" }, - { name = "numba" }, - { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scikit-learn", version = "1.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4a/fb/7f58c397fb31666756457ee2ac4c0289ef2daad57f4ae4be8dec12f80b03/pynndescent-0.6.0.tar.gz", hash = "sha256:7ffde0fb5b400741e055a9f7d377e3702e02250616834231f6c209e39aac24f5", size = 2992987, upload-time = "2026-01-08T21:29:58.943Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/e6/94145d714402fd5ade00b5661f2d0ab981219e07f7db9bfa16786cdb9c04/pynndescent-0.6.0-py3-none-any.whl", hash = "sha256:dc8c74844e4c7f5cbd1e0cd6909da86fdc789e6ff4997336e344779c3d5538ef", size = 73511, upload-time = "2026-01-08T21:29:57.306Z" }, -] - [[package]] name = "pyparsing" version = "3.2.5" @@ -3018,15 +2939,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] -[[package]] -name = "python-dotenv" -version = "1.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, -] - [[package]] name = "python-slugify" version = "8.0.4" @@ -3875,18 +3787,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456, upload-time = "2025-08-08T18:26:59.207Z" }, ] -[[package]] -name = "tqdm" -version = "4.67.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" }, -] - [[package]] name = "traitlets" version = "5.14.3" @@ -3940,26 +3840,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] -[[package]] -name = "umap-learn" -version = "0.5.11" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numba" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "pynndescent" }, - { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scikit-learn", version = "1.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "tqdm" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/9a/a1e4a257a9aa979dac4f6d5781dac929cbb0949959e2003ed82657d10b0f/umap_learn-0.5.11.tar.gz", hash = "sha256:31566ffd495fbf05d7ab3efcba703861c0f5e6fc6998a838d0e2becdd00e54f5", size = 96409, upload-time = "2026-01-12T20:44:47.553Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/d2/fcf7192dd1cd8c090b6cfd53fa223c4fb2887a17c47e06bc356d44f40dfb/umap_learn-0.5.11-py3-none-any.whl", hash = "sha256:cb17adbde9d544ba79481b3ab4d81ac222e940f3d9219307bea6044f869af3cc", size = 90890, upload-time = "2026-01-12T20:44:46.511Z" }, -] - [[package]] name = "urllib3" version = "2.6.0" @@ -4153,7 +4033,7 @@ wheels = [ [[package]] name = "wigglystuff" -version = "0.3.0" +version = "0.3.1" source = { editable = "." } dependencies = [ { name = "anywidget" }, @@ -4161,8 +4041,6 @@ dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pillow" }, - { name = "python-dotenv" }, - { name = "umap-learn" }, ] [package.optional-dependencies] @@ -4231,10 +4109,8 @@ requires-dist = [ { name = "pytest", marker = "extra == 'test'", specifier = ">=8.3.3" }, { name = "pytest", marker = "extra == 'test-browser'", specifier = ">=8.3.3" }, { name = "pytest-playwright", marker = "extra == 'test-browser'", specifier = ">=0.6.2" }, - { name = "python-dotenv", specifier = ">=1.2.1" }, { name = "scikit-learn", marker = "extra == 'test'", specifier = ">=1.0" }, { name = "torch", marker = "extra == 'torch'", specifier = ">=2.10.0" }, - { name = "umap-learn", specifier = ">=0.5.11" }, { name = "wandb", marker = "extra == 'wandb'", specifier = ">=0.15.0" }, ] provides-extras = ["wandb", "torch", "neo4j", "test", "test-browser", "docs"]