diff --git a/.logs/start/api-server.log b/.logs/start/api-server.log new file mode 100644 index 00000000..efef55f1 --- /dev/null +++ b/.logs/start/api-server.log @@ -0,0 +1,28 @@ +INFO: Started server process [46899] +INFO: Waiting for application startup. +INFO: Application startup complete. +INFO: Uvicorn running on http://0.0.0.0:4242 (Press CTRL+C to quit) +================================================================================ +EHTOOL ROUTER MODULE LOADED - VERSION: DEBUG v2 +================================================================================ +INFO: 127.0.0.1:56352 - "GET /health HTTP/1.1" 200 OK +INFO: 127.0.0.1:52680 - "GET /files?parent=root HTTP/1.1" 200 OK +INFO: 127.0.0.1:52680 - "GET /files/preview/1 HTTP/1.1" 200 OK +INFO: 127.0.0.1:52686 - "GET /files/preview/2 HTTP/1.1" 200 OK +INFO: 127.0.0.1:45030 - "GET /training_logs HTTP/1.1" 200 OK +INFO: 127.0.0.1:45030 - "GET /training_logs HTTP/1.1" 200 OK +INFO: 127.0.0.1:40470 - "GET /files HTTP/1.1" 200 OK +INFO: 127.0.0.1:40856 - "GET /files HTTP/1.1" 200 OK +INFO: 127.0.0.1:40856 - "GET /files HTTP/1.1" 200 OK +INFO: 127.0.0.1:50196 - "GET /pytc/configs HTTP/1.1" 200 OK +INFO: 127.0.0.1:50202 - "GET /pytc/architectures HTTP/1.1" 404 Not Found +INFO: 127.0.0.1:50202 - "GET /pytc/architectures HTTP/1.1" 404 Not Found +INFO: 127.0.0.1:50196 - "GET /pytc/configs HTTP/1.1" 200 OK +INFO: 127.0.0.1:51628 - "GET /pytc/architectures HTTP/1.1" 404 Not Found +INFO: 127.0.0.1:51628 - "GET /pytc/architectures HTTP/1.1" 404 Not Found +INFO: 127.0.0.1:51618 - "GET /pytc/configs HTTP/1.1" 200 OK +INFO: 127.0.0.1:51618 - "GET /pytc/configs HTTP/1.1" 200 OK +INFO: Shutting down +INFO: Waiting for application shutdown. +INFO: Application shutdown complete. +INFO: Finished server process [46899] diff --git a/.logs/start/data-server.log b/.logs/start/data-server.log new file mode 100644 index 00000000..24e4e830 --- /dev/null +++ b/.logs/start/data-server.log @@ -0,0 +1,3 @@ +Uninstalled 1 package in 8ms +Installed 1 package in 13ms +127.0.0.1 - - [27/Mar/2026 10:30:28] "GET / HTTP/1.1" 200 - diff --git a/.logs/start/pytc-server.log b/.logs/start/pytc-server.log new file mode 100644 index 00000000..2a9e3eee --- /dev/null +++ b/.logs/start/pytc-server.log @@ -0,0 +1,23 @@ +INFO: Started server process [46984] +INFO: Waiting for application startup. +INFO: Application startup complete. +INFO: Uvicorn running on http://0.0.0.0:4243 (Press CTRL+C to quit) + +================================================================================ +SERVER_PYTC STARTING UP +Python executable: /home/sam/Workshop/pytc-client/.venv/bin/python3 +Working directory: /home/sam/Workshop/pytc-client +================================================================================ + + +================================================================================ +SERVER_PYTC: Starting Uvicorn server on port 4243... +================================================================================ + +INFO: 127.0.0.1:41082 - "GET /hello HTTP/1.1" 200 OK +INFO: 127.0.0.1:48264 - "GET /training_logs HTTP/1.1" 200 OK +INFO: 127.0.0.1:48272 - "GET /training_logs HTTP/1.1" 200 OK +INFO: Shutting down +INFO: Waiting for application shutdown. +INFO: Application shutdown complete. +INFO: Finished server process [46984] diff --git a/.logs/start/react-build.log b/.logs/start/react-build.log new file mode 100644 index 00000000..e0c05dc0 --- /dev/null +++ b/.logs/start/react-build.log @@ -0,0 +1,65 @@ + +> PyTC Client@0.1.0 build +> cross-env CI=false react-scripts build + +[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D` +Creating an optimized production build... +[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D` +Compiled with warnings. + +[eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 420:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 772:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1069:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +Search for the keywords to learn more about each warning. +To ignore, add // eslint-disable-next-line to the line before. + +File sizes after gzip: + + 485.3 kB (-67.87 kB) build/static/js/main.7bc54d78.js + 465 B build/static/css/main.40821645.css + +The project was built assuming it is hosted at ./. +You can control this with the homepage field in your package.json. + +The build folder is ready to be deployed. + +Find out more about deployment here: + + https://cra.link/deployment + diff --git a/.logs/start/react-dev.log b/.logs/start/react-dev.log new file mode 100644 index 00000000..675a6307 --- /dev/null +++ b/.logs/start/react-dev.log @@ -0,0 +1,264 @@ + +> PyTC Client@0.1.0 start +> react-scripts start + +[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D` +(node:47794) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. +(Use `node --trace-deprecation ...` to show where the warning was created) +(node:47794) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. +Starting the development server... + +Compiled with warnings. + +[eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 420:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 772:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1069:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +Search for the keywords to learn more about each warning. +To ignore, add // eslint-disable-next-line to the line before. + +WARNING in [eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 420:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 772:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1069:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +webpack compiled with 1 warning +Compiling... +Compiled with warnings. + +[eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 420:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 772:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1069:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +Search for the keywords to learn more about each warning. +To ignore, add // eslint-disable-next-line to the line before. + +WARNING in [eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 420:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 772:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1069:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +webpack compiled with 1 warning +Compiling... +Compiled with warnings. + +[eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 424:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 776:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1073:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +Search for the keywords to learn more about each warning. +To ignore, add // eslint-disable-next-line to the line before. + +WARNING in [eslint] +src/components/FilePickerModal.js + Line 102:35: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 124:35: Function declared in a loop contains unsafe references to variable(s) 'currParentId' no-loop-func + Line 243:15: The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid + +src/components/YamlFileUploader.js + Line 375:6: React Hook useEffect has missing dependencies: 'getCurrentConfig' and 'syncYamlContext'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 389:6: React Hook useEffect has missing dependencies: 'getCurrentConfig', 'setCurrentConfig', and 'updateInputSelectorInformation'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 402:6: React Hook useMemo has a missing dependency: 'getCurrentConfig'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/EHTool.js + Line 25:6: React Hook useEffect has a missing dependency: 'sessionId'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/FilesManager.js + Line 81:31: Function declared in a loop contains unsafe references to variable(s) 'current' no-loop-func + Line 424:27: Function declared in a loop contains unsafe references to variable(s) 'curr' no-loop-func + Line 776:32: Function declared in a loop contains unsafe references to variable(s) 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb', 'descendantSizeKb' no-loop-func + Line 1073:6: React Hook useEffect has missing dependencies: 'finishCreateFolder', 'finishRename', 'handleCopy', 'handleCut', 'handleDelete', and 'handlePaste'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/DetectionWorkflow.js + Line 225:6: React Hook useEffect has a missing dependency: 'loadInstances'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 274:20: The ref value 'schedulerRef.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'schedulerRef.current' to a variable inside the effect, and use that variable in the cleanup function react-hooks/exhaustive-deps + Line 314:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 355:6: React Hook useEffect has a missing dependency: 'loadInstanceView'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 416:6: React Hook useEffect has missing dependencies: 'goToNextInstance', 'goToPreviousInstance', 'handleAxisChange', and 'handleInstanceClassify'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 524:6: React Hook useEffect has a missing dependency: 'clearFrameCaches'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +src/views/ehtool/ProofreadingEditor.js + Line 140:8: React Hook useEffect has a missing dependency: 'loadImages'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 148:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 163:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 403:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 407:8: React Hook useEffect has a missing dependency: 'loadOverlayImage'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 653:7: React Hook useMemo has a missing dependency: 'glasbeyColor'. Either include it or remove the dependency array react-hooks/exhaustive-deps + Line 662:8: React Hook useEffect has missing dependencies: 'drawCanvas' and 'drawMinimap'. Either include them or remove the dependency array react-hooks/exhaustive-deps + Line 899:9: Expected a default case default-case + Line 940:8: React Hook useEffect has missing dependencies: 'handleRedo', 'handleSave', and 'handleUndo'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +webpack compiled with 1 warning diff --git a/client/preload.js b/client/preload.js index 9c18439a..4198638f 100644 --- a/client/preload.js +++ b/client/preload.js @@ -2,7 +2,8 @@ const { contextBridge, ipcRenderer } = require("electron"); contextBridge.exposeInMainWorld("electronAPI", { isElectron: true, - openLocalFile: (options = {}) => ipcRenderer.invoke("open-local-file", options), + openLocalFile: (options = {}) => + ipcRenderer.invoke("open-local-file", options), revealInFinder: (targetPath) => ipcRenderer.invoke("reveal-in-finder", targetPath), }); diff --git a/client/src/components/RuntimeLogPanel.js b/client/src/components/RuntimeLogPanel.js index 9a938a7e..1ce77453 100644 --- a/client/src/components/RuntimeLogPanel.js +++ b/client/src/components/RuntimeLogPanel.js @@ -117,7 +117,7 @@ function RuntimeLogPanel({ title, runtime, onRefresh }) { background: "#fff", border: "1px solid #f0f0f0", fontFamily: - 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace', + "ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace", fontSize: 12, color: "#262626", wordBreak: "break-word", @@ -142,7 +142,7 @@ function RuntimeLogPanel({ title, runtime, onRefresh }) { whiteSpace: "pre-wrap", wordBreak: "break-word", fontFamily: - 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace', + "ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, monospace", }} > {text || "No runtime logs captured yet."} diff --git a/client/src/components/YamlFileUploader.js b/client/src/components/YamlFileUploader.js index e7a33c5a..137fbb82 100644 --- a/client/src/components/YamlFileUploader.js +++ b/client/src/components/YamlFileUploader.js @@ -27,6 +27,7 @@ import { getModelArchitectures, } from "../api"; import { findCommonPartOfString } from "../utils"; +import { adaptToPytcSchema } from "../utils/yamlSchemaAdapter"; import { applyInputPaths, getArchitectureValue, @@ -142,10 +143,24 @@ const YamlFileUploader = (props) => { }; const updateInputSelectorInformation = (yamlData) => { + // Phase 1: Auto-populate Step 0 path slots from YAML if UI fields are empty. + const ds = yamlData.DATASET || {}; + if (!getPathValue(workflow.inputImage) && ds.INPUT_PATH && ds.IMAGE_NAME) { + context.setInputImage(ds.INPUT_PATH + ds.IMAGE_NAME); + } + if (!getPathValue(workflow.inputLabel) && ds.INPUT_PATH && ds.LABEL_NAME) { + context.setInputLabel(ds.INPUT_PATH + ds.LABEL_NAME); + } + if (!getPathValue(workflow.outputPath) && ds.OUTPUT_PATH) { + context.setOutputPath(ds.OUTPUT_PATH); + } + + // Phase 2: Write current UI values back into the YAML (using configSchema). const inputImagePath = getPathValue(workflow.inputImage); const inputLabelPath = getPathValue(workflow.inputLabel); const inputPath = findCommonPartOfString(inputImagePath, inputLabelPath); const outputPath = getPathValue(workflow.outputPath); + applyInputPaths(yamlData, { mode: type, inputImagePath, @@ -184,12 +199,25 @@ const YamlFileUploader = (props) => { } }; - const applyYamlData = (yamlData, sourceLabel) => { - if (!yamlData) { + const applyYamlData = (rawYamlData, sourceLabel) => { + if (!rawYamlData) { message.error("Failed to load YAML configuration."); return; } + // Detect schema and adapt to pytorch_connectomics format if needed. + const { + adapted: yamlData, + originalSchema, + wasAdapted, + } = adaptToPytcSchema(rawYamlData); + if (wasAdapted) { + message.info( + `Detected '${originalSchema}' schema — automatically converted to pytorch_connectomics format.`, + 5, + ); + } + updateInputSelectorInformation(yamlData); const serialized = yaml .dump(yamlData, { indent: 2 }) @@ -490,7 +518,11 @@ const YamlFileUploader = (props) => { {yamlContent ? ( {sliderData.map((param, index) => { - const sliderValue = getSliderValue(currentYamlData, type, param.key); + const sliderValue = getSliderValue( + currentYamlData, + type, + param.key, + ); const sliderSupported = isSliderSupported( currentYamlData, type, @@ -507,7 +539,11 @@ const YamlFileUploader = (props) => { min={param.min} max={param.max} marks={param.marks} - value={typeof sliderValue === "number" ? sliderValue : param.value} + value={ + typeof sliderValue === "number" + ? sliderValue + : param.value + } disabled={!sliderSupported} onChange={(newValue) => handleSliderChange(param.key, newValue) diff --git a/client/src/configSchema.js b/client/src/configSchema.js index 23e6ca86..f1473e0d 100644 --- a/client/src/configSchema.js +++ b/client/src/configSchema.js @@ -135,14 +135,26 @@ export function setTrainingOutputPath(configObj, outputPath) { } const checkpointsPath = joinPath(outputPath, "checkpoints"); if (hasPath(configObj, ["train", "monitor", "checkpoint", "dirpath"])) { - setPathValue(configObj, ["train", "monitor", "checkpoint", "dirpath"], checkpointsPath); + setPathValue( + configObj, + ["train", "monitor", "checkpoint", "dirpath"], + checkpointsPath, + ); return; } if (hasPath(configObj, ["monitor", "checkpoint", "dirpath"])) { - setPathValue(configObj, ["monitor", "checkpoint", "dirpath"], checkpointsPath); + setPathValue( + configObj, + ["monitor", "checkpoint", "dirpath"], + checkpointsPath, + ); return; } - setPathValue(configObj, ["monitor", "checkpoint", "dirpath"], checkpointsPath); + setPathValue( + configObj, + ["monitor", "checkpoint", "dirpath"], + checkpointsPath, + ); } export function setInferenceOutputPath(configObj, outputPath) { @@ -152,7 +164,11 @@ export function setInferenceOutputPath(configObj, outputPath) { setPathValue(configObj, ["INFERENCE", "OUTPUT_PATH"], outputPath); return; } - setPathValue(configObj, ["inference", "save_prediction", "output_path"], outputPath); + setPathValue( + configObj, + ["inference", "save_prediction", "output_path"], + outputPath, + ); } export function setInferenceExecutionDefaults(configObj) { @@ -212,16 +228,14 @@ export function applyInputPaths( } if (mode === "training") { - const imagePath = - pickFirstExistingPath(configObj, [ - ["train", "data", "train", "image"], - ["data", "train", "image"], - ]) || ["train", "data", "train", "image"]; - const labelPath = - pickFirstExistingPath(configObj, [ - ["train", "data", "train", "label"], - ["data", "train", "label"], - ]) || ["train", "data", "train", "label"]; + const imagePath = pickFirstExistingPath(configObj, [ + ["train", "data", "train", "image"], + ["data", "train", "image"], + ]) || ["train", "data", "train", "image"]; + const labelPath = pickFirstExistingPath(configObj, [ + ["train", "data", "train", "label"], + ["data", "train", "label"], + ]) || ["train", "data", "train", "label"]; setPathValue(configObj, imagePath, inputImagePath); setPathValue(configObj, labelPath, inputLabelPath); if (outputPath) { @@ -230,16 +244,14 @@ export function applyInputPaths( return; } - const imagePath = - pickFirstExistingPath(configObj, [ - ["test", "data", "test", "image"], - ["data", "test", "image"], - ]) || ["test", "data", "test", "image"]; - const labelPath = - pickFirstExistingPath(configObj, [ - ["test", "data", "test", "label"], - ["data", "test", "label"], - ]) || ["test", "data", "test", "label"]; + const imagePath = pickFirstExistingPath(configObj, [ + ["test", "data", "test", "image"], + ["data", "test", "image"], + ]) || ["test", "data", "test", "image"]; + const labelPath = pickFirstExistingPath(configObj, [ + ["test", "data", "test", "label"], + ["data", "test", "label"], + ]) || ["test", "data", "test", "label"]; setPathValue(configObj, imagePath, inputImagePath); if (hasLabelPath) { setPathValue(configObj, labelPath, inputLabelPath); diff --git a/client/src/configSchema.test.js b/client/src/configSchema.test.js index 6c306392..8ce2e886 100644 --- a/client/src/configSchema.test.js +++ b/client/src/configSchema.test.js @@ -1,7 +1,4 @@ -import { - applyInputPaths, - setInferenceExecutionDefaults, -} from "./configSchema"; +import { applyInputPaths, setInferenceExecutionDefaults } from "./configSchema"; describe("setInferenceExecutionDefaults", () => { it("preserves existing legacy GPU values", () => { diff --git a/client/src/contexts/GlobalContext.js b/client/src/contexts/GlobalContext.js index 9eb4ecad..38edb8b9 100644 --- a/client/src/contexts/GlobalContext.js +++ b/client/src/contexts/GlobalContext.js @@ -77,12 +77,32 @@ function usePersistedState(key, defaultValue) { const [isLoaded, setIsLoaded] = useState(false); useEffect(() => { - // Fetch the stored value asynchronously when the component mounts + // Fetch the stored value asynchronously when the component mounts. + // Migration guard: if localforage has no value but localStorage does, + // migrate the legacy value over and clear the stale localStorage entry. localforage .getItem(key) .then((storedValue) => { if (storedValue !== null) { setState(storedValue); + } else { + const legacy = localStorage.getItem(key); + if (legacy !== null) { + try { + // localforage can store raw values, but localStorage only stores + // strings, so attempt a JSON parse first. + const parsed = JSON.parse(legacy); + setState(parsed); + localforage.setItem(key, parsed).catch(() => {}); + } catch { + setState(legacy); + localforage.setItem(key, legacy).catch(() => {}); + } + localStorage.removeItem(key); + console.info( + `[GlobalContext] Migrated '${key}' from localStorage → localforage.`, + ); + } } setIsLoaded(true); }) @@ -130,25 +150,13 @@ export const ContextWrapper = (props) => { const [inferenceConfigOriginPath, setInferenceConfigOriginPath] = usePersistedState("inferenceConfigOriginPath", ""); const [trainingUploadedYamlFile, setTrainingUploadedYamlFile] = - usePersistedState( - "trainingUploadedYamlFile", - "", - ); + usePersistedState("trainingUploadedYamlFile", ""); const [inferenceUploadedYamlFile, setInferenceUploadedYamlFile] = - usePersistedState( - "inferenceUploadedYamlFile", - "", - ); + usePersistedState("inferenceUploadedYamlFile", ""); const [trainingSelectedYamlPreset, setTrainingSelectedYamlPreset] = - usePersistedState( - "trainingSelectedYamlPreset", - "", - ); + usePersistedState("trainingSelectedYamlPreset", ""); const [inferenceSelectedYamlPreset, setInferenceSelectedYamlPreset] = - usePersistedState( - "inferenceSelectedYamlPreset", - "", - ); + usePersistedState("inferenceSelectedYamlPreset", ""); const [imageFileList, setImageFileList] = usePersistedState( "imageFileList", [], @@ -170,10 +178,7 @@ export const ContextWrapper = (props) => { null, ); const [inferenceCheckpointPath, setInferenceCheckpointPath] = - usePersistedState( - "inferenceCheckpointPath", - null, - ); + usePersistedState("inferenceCheckpointPath", null); const [currentImage, setCurrentImage] = usePersistedState( "currentImage", null, diff --git a/client/src/utils/yamlSchemaAdapter.js b/client/src/utils/yamlSchemaAdapter.js new file mode 100644 index 00000000..7fb215d7 --- /dev/null +++ b/client/src/utils/yamlSchemaAdapter.js @@ -0,0 +1,306 @@ +/** + * yamlSchemaAdapter.js + * + * Detects the schema family of a parsed YAML object and translates it to the + * flat uppercase schema required by pytorch_connectomics / yacs. + * + * This adapter identifies "standard" configuration schemas as defined in the + * pytorch_connectomics core library. Both uppercase (YACS-style) and lowercase + * (Hydra/general-style) YAML configurations are recognised generically, + * without hardcoding any specific dataset names. + * + * Supported schemas: + * - "pytc" : pytorch_connectomics client config (contains pytc_version or workflow) + * - "standard" : pytorch_connectomics core library config, uppercase or lowercase form + * Pattern A (uppercase / YACS): ≥2 of MODEL, DATASET, SOLVER, INFERENCE, SYSTEM + * Pattern B (lowercase / Hydra): ≥2 of model, data, optimization, train, monitor + * - "unknown" : does not match any known schema + */ + +// ─── Schema Detection ───────────────────────────────────────────────────────── + +/** + * Top-level keys that identify a pytc client-enriched config (highest priority). + * These fields are added by the pytc-client and are not present in plain + * pytorch_connectomics library configs. + */ +const PYTC_KEYS = ["pytc_version", "workflow"]; + +/** + * Pattern A: uppercase (YACS-style) pytorch_connectomics core keys. + * A YAML must contain at least STANDARD_MIN_MATCH of these to be "standard". + */ +const STANDARD_KEYS_UPPER = [ + "MODEL", + "DATASET", + "SOLVER", + "INFERENCE", + "SYSTEM", +]; + +/** + * Pattern B: lowercase (Hydra/general-style) pytorch_connectomics core keys. + * A YAML must contain at least STANDARD_MIN_MATCH of these to be "standard". + */ +const STANDARD_KEYS_LOWER = [ + "model", + "data", + "optimization", + "train", + "monitor", +]; + +/** Minimum number of matching keys required to classify a config as "standard". */ +const STANDARD_MIN_MATCH = 2; + +/** + * Returns the schema family name for the given parsed YAML object, + * or "unknown" if it cannot be identified. + * + * Detection order (highest → lowest priority): + * 1. "pytc" — contains any key in PYTC_KEYS + * 2. "standard" — Pattern A: ≥2 keys from STANDARD_KEYS_UPPER + * 3. "standard" — Pattern B: ≥2 keys from STANDARD_KEYS_LOWER + * 4. "unknown" + * + * @param {object} yamlData + * @returns {"pytc"|"standard"|"unknown"} + */ +export function detectSchema(yamlData) { + if (!yamlData || typeof yamlData !== "object") return "unknown"; + + // 1. Highest priority: pytc client-enriched config + if (PYTC_KEYS.some((k) => k in yamlData)) return "pytc"; + + // 2. Pattern A — uppercase YACS-style core config + const upperMatches = STANDARD_KEYS_UPPER.filter((k) => k in yamlData).length; + if (upperMatches >= STANDARD_MIN_MATCH) return "standard"; + + // 3. Pattern B — lowercase Hydra/general-style core config + const lowerMatches = STANDARD_KEYS_LOWER.filter((k) => k in yamlData).length; + if (lowerMatches >= STANDARD_MIN_MATCH) return "standard"; + + return "unknown"; +} + +// ─── Path Helpers ───────────────────────────────────────────────────────────── + +/** + * Splits a file path into [directory, filename], handling both / and \ so the + * adapter works correctly on Windows as well as POSIX systems. + * + * Examples: + * "datasets/train_im.h5" → ["datasets/", "train_im.h5"] + * "C:\\data\\train.tif" → ["C:\\data\\", "train.tif"] + * "train_im.h5" → ["", "train_im.h5"] + */ +function _splitPath(fullPath) { + if (!fullPath || typeof fullPath !== "string") return ["", ""]; + const match = fullPath.match(/.*[/\\]/); + const dir = match ? match[0] : ""; + const fileName = fullPath.slice(dir.length); + return [dir, fileName]; +} + +/** + * Maps general lowercase architecture names to pytorch_connectomics MODEL_MAP keys. + */ +function _mapArchitecture(arch) { + const map = { + monai_unet: "unet_3d", + monai_basic_unet3d: "unet_3d", + rsunet: "unet_3d", + mednext: "unet_3d", + unet: "unet_3d", + unet3d: "unet_3d", + unet2d: "unet_2d", + fpn: "fpn_3d", + }; + return map[(arch || "").toLowerCase()] ?? "unet_3d"; +} + +/** + * Maps general lowercase scheduler names to pytorch_connectomics scheduler names. + */ +function _mapScheduler(name) { + const map = { + ReduceLROnPlateau: "MultiStepLR", + reduceLROnPlateau: "MultiStepLR", + CosineAnnealingLR: "CosineAnnealingLR", + cosineannealinglr: "CosineAnnealingLR", + warmupcosine: "WarmupCosineLR", + WarmupCosineLR: "WarmupCosineLR", + }; + return map[name] ?? "MultiStepLR"; +} + +/** + * Computes a STRIDE array from a window size and overlap fraction. + * e.g. window [112,112,112] with overlap 0.25 → stride [84,84,84] + */ +function _computeStride(windowSize, overlap) { + const ws = windowSize ?? [112, 112, 112]; + const ov = overlap ?? 0.5; + return ws.map((s) => Math.round(s * (1 - ov))); +} + +// ─── Adapter: lowercase / Hydra-style → pytorch_connectomics uppercase ──────── + +/** + * Translates a lowercase (Hydra/general) standard schema YAML object to the + * pytorch_connectomics uppercase (YACS) schema. + * + * Keys that have no equivalent are preserved in a top-level `_EXTRA` object + * so that no data is silently discarded during translation. + * + * @param {object} src - Parsed lowercase standard YAML object. + * @returns {object} - Translated pytorch_connectomics schema object. + */ +function adaptStandardLower(src) { + const out = {}; + + // ── SYSTEM ────────────────────────────────────────────────────────────── + const sys = src.system || {}; + const sysTrain = sys.training || {}; + const sysInfer = sys.inference || {}; + out.SYSTEM = { + NUM_GPUS: sysTrain.num_gpus ?? sysInfer.num_gpus ?? 1, + NUM_CPUS: sysTrain.num_cpus ?? sysInfer.num_cpus ?? 4, + DISTRIBUTED: false, + PARALLEL: "DP", + }; + + // ── MODEL ──────────────────────────────────────────────────────────────── + const mod = src.model || {}; + out.MODEL = { + ARCHITECTURE: _mapArchitecture(mod.architecture), + IN_PLANES: mod.in_channels ?? 1, + OUT_PLANES: mod.out_channels ?? 1, + INPUT_SIZE: mod.input_size ?? [112, 112, 112], + OUTPUT_SIZE: mod.output_size ?? mod.input_size ?? [112, 112, 112], + FILTERS: mod.filters ?? [32, 64, 128, 256], + }; + if (mod.loss_functions) { + out.MODEL.LOSS_OPTION = [mod.loss_functions]; + out.MODEL.LOSS_WEIGHT = [ + mod.loss_weights ?? mod.loss_functions.map(() => 1.0), + ]; + out.MODEL.OUTPUT_ACT = [mod.loss_functions.map(() => "none")]; + } + + // ── DATASET ────────────────────────────────────────────────────────────── + const data = src.data || {}; + const [trainInputPath, trainImageName] = _splitPath(data.train_image); + const [, trainLabelName] = _splitPath(data.train_label); + out.DATASET = { + INPUT_PATH: trainInputPath || "path/to/input", + IMAGE_NAME: trainImageName || "", + LABEL_NAME: trainLabelName || "", + OUTPUT_PATH: "path/to/output", + IS_ISOTROPIC: true, + PAD_SIZE: data.pad_size ?? [0, 0, 0], + }; + + // ── SOLVER ─────────────────────────────────────────────────────────────── + const opt = src.optimization || {}; + const optOpt = opt.optimizer || {}; + const sched = opt.scheduler || {}; + out.SOLVER = { + NAME: optOpt.name ?? "Adam", + BASE_LR: optOpt.lr ?? 0.001, + WEIGHT_DECAY: optOpt.weight_decay ?? 0.0001, + MOMENTUM: 0.9, + BETAS: optOpt.betas ?? [0.9, 0.999], + ITERATION_TOTAL: + (opt.max_epochs ?? 1000) * (data.iter_num_per_epoch ?? 1000), + SAMPLES_PER_BATCH: sysTrain.batch_size ?? 2, + LR_SCHEDULER_NAME: _mapScheduler(sched.name), + ITERATION_SAVE: 5000, + ITERATION_VAL: 5000, + }; + + // ── INFERENCE ──────────────────────────────────────────────────────────── + const inf = src.inference || {}; + const infData = inf.data || {}; + const sw = inf.sliding_window || {}; + const [infInputPath, infImageName] = _splitPath(infData.test_image); + out.INFERENCE = { + INPUT_PATH: infInputPath || out.DATASET.INPUT_PATH, + IMAGE_NAME: infImageName || "", + INPUT_SIZE: sw.window_size ?? out.MODEL.INPUT_SIZE, + OUTPUT_SIZE: sw.window_size ?? out.MODEL.OUTPUT_SIZE, + OUTPUT_PATH: "", + OUTPUT_NAME: "result.h5", + SAMPLES_PER_BATCH: sysInfer.batch_size ?? 4, + AUG_MODE: "mean", + AUG_NUM: null, + BLENDING: sw.blending ?? "gaussian", + STRIDE: _computeStride(sw.window_size, sw.overlap), + }; + + // ── _EXTRA: collect all unmapped top-level keys ────────────────────────── + // This ensures no data is lost during translation. Consumers can inspect + // _EXTRA to find schema fields that have no pytc equivalent. + const mappedKeys = new Set([ + "system", + "model", + "data", + "optimization", + "inference", + ]); + const extra = {}; + for (const [key, value] of Object.entries(src)) { + if (!mappedKeys.has(key)) { + extra[key] = value; + } + } + if (Object.keys(extra).length > 0) { + out._EXTRA = extra; + } + + return out; +} + +// ─── Public API ─────────────────────────────────────────────────────────────── + +/** + * Takes a parsed YAML object (any supported schema) and returns a parsed YAML + * object conforming to the pytorch_connectomics flat uppercase (YACS) schema. + * + * - If the schema is "pytc" or already uppercase "standard", returns unchanged. + * - If the schema is lowercase "standard", translates to uppercase. + * - If the schema is unknown, returns the object unchanged with a console warn. + * + * @param {object} yamlData + * @returns {{ adapted: object, originalSchema: string, wasAdapted: boolean }} + */ +export function adaptToPytcSchema(yamlData) { + const schema = detectSchema(yamlData); + + if (schema === "pytc") { + return { adapted: yamlData, originalSchema: "pytc", wasAdapted: false }; + } + + if (schema === "standard") { + // Check whether this is already uppercase (Pattern A) — if so, pass through. + const upperMatches = STANDARD_KEYS_UPPER.filter( + (k) => k in yamlData, + ).length; + if (upperMatches >= STANDARD_MIN_MATCH) { + return { + adapted: yamlData, + originalSchema: "standard", + wasAdapted: false, + }; + } + // Pattern B: lowercase — translate to uppercase. + const adapted = adaptStandardLower(yamlData); + return { adapted, originalSchema: "standard", wasAdapted: true }; + } + + console.warn( + "[yamlSchemaAdapter] Unknown YAML schema — returning as-is. " + + "Ensure top-level keys match pytorch_connectomics conventions.", + ); + return { adapted: yamlData, originalSchema: "unknown", wasAdapted: false }; +} diff --git a/client/src/views/FilesManager.js b/client/src/views/FilesManager.js index 278f0e33..18e3c8a5 100644 --- a/client/src/views/FilesManager.js +++ b/client/src/views/FilesManager.js @@ -240,11 +240,14 @@ function FilesManager() { const normalizedParent = String(parentKey || "root"); const previousFolders = foldersRef.current; const previousFiles = filesRef.current; - const { folders: nextFolders, files: nextFiles } = transformFiles(fileList); + const { folders: nextFolders, files: nextFiles } = + transformFiles(fileList); const existingDirectChildIds = previousFolders .filter((folder) => folder.parent === normalizedParent) .map((folder) => folder.key); - const nextDirectChildIds = new Set(nextFolders.map((folder) => folder.key)); + const nextDirectChildIds = new Set( + nextFolders.map((folder) => folder.key), + ); const removedFolderIds = collectDescendantFolderIds( previousFolders, existingDirectChildIds.filter((id) => !nextDirectChildIds.has(id)), @@ -253,14 +256,19 @@ function FilesManager() { const mergedFolders = [ ...previousFolders.filter( (folder) => - folder.parent !== normalizedParent && !removedFolderIds.has(folder.key), + folder.parent !== normalizedParent && + !removedFolderIds.has(folder.key), ), ...nextFolders, ].sort((left, right) => { if (left.parent === right.parent) { - return String(left.title || "").localeCompare(String(right.title || "")); + return String(left.title || "").localeCompare( + String(right.title || ""), + ); } - return String(left.parent || "").localeCompare(String(right.parent || "")); + return String(left.parent || "").localeCompare( + String(right.parent || ""), + ); }); const mergedFiles = { ...previousFiles }; @@ -362,11 +370,7 @@ function FilesManager() { setParentLoadingState(normalizedParent, false); } }, - [ - hasShownServerWarning, - replaceFolderChildren, - setParentLoadingState, - ], + [hasShownServerWarning, replaceFolderChildren, setParentLoadingState], ); // Load initial data with proper cleanup and 401 handling @@ -1817,12 +1821,12 @@ function FilesManager() { currentFolders.length === 0 && currentFiles.length === 0 && !newItemType && ( -
- -
- )} +
+ +
+ )} {currentFolders.map((f) => renderItem(f, "folder"))} {renderNewFolderPlaceholder()} {currentFiles.map((f) => renderItem(f, "file"))} diff --git a/client/src/views/FilesManager.test.js b/client/src/views/FilesManager.test.js index d52f54e3..0257ad7b 100644 --- a/client/src/views/FilesManager.test.js +++ b/client/src/views/FilesManager.test.js @@ -43,9 +43,13 @@ jest.mock("@ant-design/icons", () => { jest.mock("antd", () => { const React = require("react"); - const Button = ({ children, ...props }) => ; + const Button = ({ children, ...props }) => ( + + ); const Dropdown = ({ children }) =>
{children}
; - const Input = React.forwardRef((props, ref) => ); + const Input = React.forwardRef((props, ref) => ( + + )); const Menu = ({ items = [], onClick }) => (
{items.map((item) => diff --git a/client/src/views/ModelInference.js b/client/src/views/ModelInference.js index 8ea3bf44..87860a5c 100644 --- a/client/src/views/ModelInference.js +++ b/client/src/views/ModelInference.js @@ -60,7 +60,10 @@ function ModelInference({ isInferring, setIsInferring }) { }); return yaml.dump(yamlData, { indent: 2 }).replace(/^\s*\n/gm, ""); } catch (error) { - console.warn("Failed to prepare inference config from current inputs:", error); + console.warn( + "Failed to prepare inference config from current inputs:", + error, + ); return inferenceConfig; } }; @@ -83,7 +86,10 @@ function ModelInference({ isInferring, setIsInferring }) { setIsInferring(false); if (status.exitCode === 0) { setInferenceStatus("Inference completed successfully! ✓"); - } else if (status.exitCode !== null && status.exitCode !== undefined) { + } else if ( + status.exitCode !== null && + status.exitCode !== undefined + ) { setInferenceStatus( `Inference finished with exit code: ${status.exitCode}`, ); @@ -130,7 +136,8 @@ function ModelInference({ isInferring, setIsInferring }) { setIsInferring(true); setInferenceStatus("Starting inference..."); - const preparedInferenceConfig = getPreparedInferenceConfig(inferenceConfig); + const preparedInferenceConfig = + getPreparedInferenceConfig(inferenceConfig); const res = await startModelInference( preparedInferenceConfig, diff --git a/client/src/views/ModelTraining.js b/client/src/views/ModelTraining.js index 312724dc..8f3a1b75 100644 --- a/client/src/views/ModelTraining.js +++ b/client/src/views/ModelTraining.js @@ -61,7 +61,9 @@ function ModelTraining() { if (status.exitCode === 0) { setTrainingStatus("Training completed successfully! ✓"); } else if (status.exitCode !== null) { - setTrainingStatus(`Training finished with exit code: ${status.exitCode}`); + setTrainingStatus( + `Training finished with exit code: ${status.exitCode}`, + ); } else if (status.phase === "failed" && status.lastError) { setTrainingStatus(`Training failed: ${status.lastError}`); } else { @@ -91,7 +93,10 @@ function ModelTraining() { }); return yaml.dump(yamlData, { indent: 2 }).replace(/^\s*\n/gm, ""); } catch (error) { - console.warn("Failed to prepare training config from current inputs:", error); + console.warn( + "Failed to prepare training config from current inputs:", + error, + ); return trainingConfig; } }; @@ -144,6 +149,11 @@ function ModelTraining() { return; } + if (!training.logPath) { + setTrainingStatus("Error: Please set log path first in Step 1."); + return; + } + console.log(training.uploadedYamlFile); console.log(trainingConfig); diff --git a/client/src/views/Views.test.js b/client/src/views/Views.test.js index 1f08242b..957580c3 100644 --- a/client/src/views/Views.test.js +++ b/client/src/views/Views.test.js @@ -49,7 +49,9 @@ jest.mock("./Visualization", () => () =>
Visualization Content
); jest.mock("./ModelTraining", () => () =>
Training Content
); jest.mock("./ModelInference", () => () =>
Inference Content
); jest.mock("./Monitoring", () => () =>
Monitoring Content
); -jest.mock("./MaskProofreading", () => () =>
Mask Proofreading Content
); +jest.mock("./MaskProofreading", () => () => ( +
Mask Proofreading Content
+)); jest.mock("../components/Chatbot", () => () =>
Chatbot
); describe("Views", () => { diff --git a/pytorch_connectomics b/pytorch_connectomics index 0a0dceb8..20ccfde6 160000 --- a/pytorch_connectomics +++ b/pytorch_connectomics @@ -1 +1 @@ -Subproject commit 0a0dceb8bc03e0afbb843aef17181c9f854209da +Subproject commit 20ccfde6f85868351b00d7b795d4cf89a251d6be diff --git a/server_api/auth/router.py b/server_api/auth/router.py index f50f7c7b..0b3db5a8 100644 --- a/server_api/auth/router.py +++ b/server_api/auth/router.py @@ -195,7 +195,9 @@ def get_files( return [ file - for file in query.order_by(models.File.is_folder.desc(), models.File.name.asc()).all() + for file in query.order_by( + models.File.is_folder.desc(), models.File.name.asc() + ).all() if not _is_ignored_system_file(file.name) ] @@ -287,9 +289,7 @@ def upload_file( db: Session = Depends(database.get_db), ): if _is_ignored_system_file(file.filename): - raise HTTPException( - status_code=400, detail="System metadata files are ignored" - ) + raise HTTPException(status_code=400, detail="System metadata files are ignored") # Create uploads directory if not exists upload_dir = f"uploads/{current_user.id}" diff --git a/server_pytc/services/model.py b/server_pytc/services/model.py index 57303961..4ab82c9b 100644 --- a/server_pytc/services/model.py +++ b/server_pytc/services/model.py @@ -73,7 +73,9 @@ def _clear_runtime_process(kind: str, process=None): _inference_process = None -def _reset_runtime_state(kind: str, *, phase: str = "idle", metadata: dict | None = None): +def _reset_runtime_state( + kind: str, *, phase: str = "idle", metadata: dict | None = None +): state = _new_runtime_state() timestamp = _utc_now() state["phase"] = phase @@ -361,7 +363,9 @@ def start_training(payload: dict): configPath=temp_filepath, configOriginPath=config_origin_path, ) - _append_runtime_event("training", f"Config origin: {config_origin_path or 'none'}") + _append_runtime_event( + "training", f"Config origin: {config_origin_path or 'none'}" + ) _append_runtime_event("training", f"Staged config path: {temp_filepath}") command = [ @@ -380,7 +384,9 @@ def start_training(payload: dict): ) print(f"[MODEL.PY] Final training command: {' '.join(command)}") - _append_runtime_event("training", f"Final training command: {' '.join(command)}") + _append_runtime_event( + "training", f"Final training command: {' '.join(command)}" + ) _training_process = _start_logged_process( command, current_dir, @@ -413,9 +419,7 @@ def _stop_processes(matcher, description: str): cmdline = proc.info["cmdline"] or [] if not matcher(cmdline): continue - print( - f"Terminating process {proc.info['pid']}: {' '.join(cmdline)}" - ) + print(f"Terminating process {proc.info['pid']}: {' '.join(cmdline)}") proc.terminate() proc.wait(timeout=10) except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.TimeoutExpired): @@ -586,7 +590,9 @@ def start_inference(payload: dict): ) print(f"[MODEL.PY] Final inference command: {' '.join(command)}") - _append_runtime_event("inference", f"Final inference command: {' '.join(command)}") + _append_runtime_event( + "inference", f"Final inference command: {' '.join(command)}" + ) _inference_process = _start_logged_process( command, current_dir, @@ -642,7 +648,8 @@ def stop_inference(): if _inference_process and _inference_process.poll() is None: try: _append_runtime_event( - "inference", f"Terminating inference process PID: {_inference_process.pid}" + "inference", + f"Terminating inference process PID: {_inference_process.pid}", ) print(f"Terminating inference process PID: {_inference_process.pid}") _inference_process.terminate() diff --git a/tests/test_check_files_route.py b/tests/test_check_files_route.py index 2cb134d0..f1397a51 100644 --- a/tests/test_check_files_route.py +++ b/tests/test_check_files_route.py @@ -6,7 +6,6 @@ from server_api.main import app as server_api_app - REPO_ROOT = pathlib.Path(__file__).resolve().parents[1] SNEMI_ROOT = pathlib.Path( os.getenv( diff --git a/tests/test_pytc_runtime_routes.py b/tests/test_pytc_runtime_routes.py index 63e6ddf9..c4219de3 100644 --- a/tests/test_pytc_runtime_routes.py +++ b/tests/test_pytc_runtime_routes.py @@ -45,9 +45,7 @@ def test_start_tensorboard_without_log_path_returns_400(self): def test_training_logs_route_returns_worker_payload(self): payload = {"phase": "running", "text": "hello", "lines": ["hello"]} - with patch( - "server_pytc.main.get_training_process_logs", return_value=payload - ): + with patch("server_pytc.main.get_training_process_logs", return_value=payload): response = self.client.get("/training_logs") self.assertEqual(response.status_code, 200) diff --git a/uv.lock b/uv.lock index 5a255c3f..1c491d4f 100644 --- a/uv.lock +++ b/uv.lock @@ -102,12 +102,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] -[[package]] -name = "antlr4-python3-runtime" -version = "4.9.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } - [[package]] name = "anyio" version = "4.12.1" @@ -122,6 +116,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + [[package]] name = "argon2-cffi" version = "25.1.0" @@ -160,12 +163,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ee/82/82745642d3c46e7cea25e1885b014b033f4693346ce46b7f47483cf5d448/argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520", size = 29187, upload-time = "2025-07-30T10:02:03.674Z" }, ] +[[package]] +name = "arrow" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931, upload-time = "2025-10-18T17:46:46.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload-time = "2025-10-18T17:46:45.663Z" }, +] + [[package]] name = "asciitree" version = "0.3.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951, upload-time = "2016-09-05T19:10:42.681Z" } +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "async-lru" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/1f/989ecfef8e64109a489fff357450cb73fa73a865a92bd8c272170a6922c2/async_lru-2.3.0.tar.gz", hash = "sha256:89bdb258a0140d7313cf8f4031d816a042202faa61d0ab310a0a538baa1c24b6", size = 16332, upload-time = "2026-03-19T01:04:32.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/e2/c2e3abf398f80732e58b03be77bde9022550d221dd8781bf586bd4d97cc1/async_lru-2.3.0-py3-none-any.whl", hash = "sha256:eea27b01841909316f2cc739807acea1c623df2be8c5cfad7583286397bb8315", size = 8403, upload-time = "2026-03-19T01:04:30.883Z" }, +] + [[package]] name = "async-timeout" version = "4.0.3" @@ -190,6 +227,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, ] +[[package]] +name = "babel" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, +] + [[package]] name = "bcrypt" version = "5.0.0" @@ -232,6 +278,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e4/f8/972c96f5a2b6c4b3deca57009d93e946bbdbe2241dca9806d502f29dd3ee/bcrypt-5.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:6b8f520b61e8781efee73cba14e3e8c9556ccfb375623f4f97429544734545b4", size = 273375, upload-time = "2025-09-25T19:50:45.43Z" }, ] +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + [[package]] name = "black" version = "26.1.0" @@ -261,6 +320,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e4/3d/51bdb3ecbfadfaf825ec0c75e1de6077422b4afa2091c6c9ba34fbfc0c2d/black-26.1.0-py3-none-any.whl", hash = "sha256:1054e8e47ebd686e078c0bb0eaf31e6ce69c966058d122f2c0c950311f9f3ede", size = 204010, upload-time = "2026-01-18T04:50:09.978Z" }, ] +[[package]] +name = "bleach" +version = "6.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/18/3c8523962314be6bf4c8989c79ad9531c825210dd13a8669f6b84336e8bd/bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22", size = 203533, upload-time = "2025-10-27T17:57:39.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6", size = 164437, upload-time = "2025-10-27T17:57:37.538Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + [[package]] name = "certifi" version = "2026.1.4" @@ -369,26 +445,12 @@ wheels = [ ] [[package]] -name = "connected-components-3d" -version = "3.26.1" +name = "comm" +version = "0.2.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/db/f5/7d2f66ef47b8496460e0738fdb349c7daa88ea6d39047a840a57364f8bb3/connected_components_3d-3.26.1.tar.gz", hash = "sha256:2f558954c3f732d404fc9b380a36a934ba9216c54e387e3d32439fd35ed48bbb", size = 78353, upload-time = "2025-11-03T17:20:37.337Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/ec/ad230171e96793b4a70696eef2c5d347029d3532cb443702fa087078b0cb/connected_components_3d-3.26.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:291a060c484c0b8b72a17ac1c17fe87e4cf8ace09b72f92e78ad1f3b4485b1b0", size = 791755, upload-time = "2025-11-03T17:19:32.106Z" }, - { url = "https://files.pythonhosted.org/packages/05/e8/a0fb6d241ef3cc6b51596af6052550f2704ee0ec7740615f55ab49f2379d/connected_components_3d-3.26.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f64e931a8e523814fd14609a4778ccbe027f39267852f76fc1419c2af655ac05", size = 688042, upload-time = "2025-11-03T17:19:34.325Z" }, - { url = "https://files.pythonhosted.org/packages/64/2f/99ec0706d73f34d7d645de0539e6089081d36102d88cea4c0daf62c0e172/connected_components_3d-3.26.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50859da852a8539993aa72fa01876b49e19585e7a1855ac8561919f261c97be6", size = 4257671, upload-time = "2025-11-03T17:19:35.927Z" }, - { url = "https://files.pythonhosted.org/packages/2e/66/a7898038932d26bb117205fef090ad2c4d7eb9347bd6099df65e0e34941e/connected_components_3d-3.26.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e889d1786b1ff6957f5f49db8619ab8069f62aa3224aa64439fcb62d8d7f299", size = 4588657, upload-time = "2025-11-03T17:19:38.27Z" }, - { url = "https://files.pythonhosted.org/packages/83/7c/04a41ee31d277383a254d86dcc07e243197163ac17a391e5da6b0809a87c/connected_components_3d-3.26.1-cp310-cp310-win32.whl", hash = "sha256:c385d6695f9995b4d126fd6c6e45eb30459630cdfe74e78f52fb44dbdb826df0", size = 569496, upload-time = "2025-11-03T17:19:41.693Z" }, - { url = "https://files.pythonhosted.org/packages/a8/c5/07ccaf426210cbd4e9954b77ec827ee2472f858a18880f3d450592350bd6/connected_components_3d-3.26.1-cp310-cp310-win_amd64.whl", hash = "sha256:f5ce2319b3d51eac11a6f430729935e01120dd281d0ef30269788d933fe1a0c4", size = 521247, upload-time = "2025-11-03T17:19:40.266Z" }, - { url = "https://files.pythonhosted.org/packages/d4/7f/d832e2f0cfe8476cfadb3f9d0e2e152c35d21f7dd6e30a96d865ddfbc189/connected_components_3d-3.26.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1819fbcd034f96a995066d5020a5a29b99fb5f3d9b373e3e4e52f9abb0e4808", size = 789472, upload-time = "2025-11-03T17:19:43.165Z" }, - { url = "https://files.pythonhosted.org/packages/de/68/e8bd3a5434a6f2cec234446693e3f491c1cc6f704b2e76505c62f9a0fcd0/connected_components_3d-3.26.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9127d142dd8d161612fb0ca899cfc19d83fb14c67596446428932f4dce178094", size = 690644, upload-time = "2025-11-03T17:19:44.143Z" }, - { url = "https://files.pythonhosted.org/packages/2e/77/1f9528dc38cedcb1cd0036c8c2fc9ba951d8009c09fd0aa0738b3faa8075/connected_components_3d-3.26.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08c281f9eae37221ba8eeab4feb80aad8acd478461d104c7e052b21def7e4816", size = 4363718, upload-time = "2025-11-03T17:19:45.942Z" }, - { url = "https://files.pythonhosted.org/packages/d0/bd/6266ce161a2030c0173cfa0da4d3efe7cd599cc70e3758167cb3b7947180/connected_components_3d-3.26.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd0ffb1e5dd5f3a86f72241db45b670b3bbc7b06d1f1b3950e135091766d68be", size = 4685381, upload-time = "2025-11-03T17:19:47.974Z" }, - { url = "https://files.pythonhosted.org/packages/1f/38/6042c6d8c0118c6a53c83434fc6804a2d2bcb18485854368bb971ee2b584/connected_components_3d-3.26.1-cp311-cp311-win32.whl", hash = "sha256:497de338400befa1a60e4a27cca7cc1393a52140a4790aba248b5b21fbb1428d", size = 568133, upload-time = "2025-11-03T17:19:51.891Z" }, - { url = "https://files.pythonhosted.org/packages/bb/d7/0335fc9e969091e8c3e38bad059b622b0009c779aca44faa29095b78bc0d/connected_components_3d-3.26.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae86c2e195836750facbbbe88414370e711cf17e68ae110f66b7bd98ea90611f", size = 518515, upload-time = "2025-11-03T17:19:50.181Z" }, + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] [[package]] @@ -465,30 +527,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, ] -[[package]] -name = "crackle-codec" -version = "0.36.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastremap" }, - { name = "google-crc32c" }, - { name = "numpy" }, - { name = "pybind11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a0/a5/3eb3f748f2a9e80911511af967b8e69721288b56096af50982eea5e5476d/crackle_codec-0.36.0.tar.gz", hash = "sha256:d6e619853dd6debceecbbd252515da00fddb08c588fa64abacbf5950d34785d2", size = 145350, upload-time = "2025-10-31T22:46:37.182Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/90/d92b3d4bdc7c231991cd1534092447781e42b6ada71ede9e3a7d7d31af2d/crackle_codec-0.36.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b536a8ccf8830c05ca740888e30cd5f8d88724ec0f911b6df05dabc53fe6b779", size = 490611, upload-time = "2025-10-31T22:46:07.14Z" }, - { url = "https://files.pythonhosted.org/packages/98/fa/cfaa5e54d78022c787cdb4b143ddd8354dabf871301c5d3335767cf03e42/crackle_codec-0.36.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c480056d10249137b737541f889637b8017d06449d35721a74324774188bd4e8", size = 430113, upload-time = "2025-10-31T22:46:08.896Z" }, - { url = "https://files.pythonhosted.org/packages/43/82/6025c118d700be2c6e5bec4ec7444c10fd54dd36a06d3b7a0805eacc8d3b/crackle_codec-0.36.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:592f68b4bb4001c13a75e4f7ed6c073b78be2175c29665a82344d490dd130ad5", size = 457761, upload-time = "2025-10-31T22:46:10.247Z" }, - { url = "https://files.pythonhosted.org/packages/6d/a5/976085448663d057f59f4baa0afd06ab1348b3193eabfde093d8a603eb29/crackle_codec-0.36.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df2097131f9fe143574b79c21982325f48459cac0ef2d2a015c0eb52e1db906", size = 473427, upload-time = "2025-10-31T22:46:11.533Z" }, - { url = "https://files.pythonhosted.org/packages/e3/9c/3c4d243147ffaeff3cac1e4e3bf05b3446c2bff96aa1155a88ffcdb07b88/crackle_codec-0.36.0-cp310-cp310-win_amd64.whl", hash = "sha256:57db09c1536df847788c1d8048f8979301d88194d8a3017e5a82f2b575b3e7e0", size = 310982, upload-time = "2025-10-31T22:46:12.781Z" }, - { url = "https://files.pythonhosted.org/packages/14/ac/f75225bb5be2828e9246686d71aaea3200345a47b6b644db2642f033c280/crackle_codec-0.36.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b40719622e37501eb1c2c496a3d134a5f00fe663029cad42eb6a826ec2dfe30", size = 492609, upload-time = "2025-10-31T22:46:13.833Z" }, - { url = "https://files.pythonhosted.org/packages/70/db/f979460d39527f598d463267281eded150631f62365f3cc946b860cd27cc/crackle_codec-0.36.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8c5423887f92613d18a103560d1ef883c2a2db6ef9d5c3c95e979b12bd70bb82", size = 431340, upload-time = "2025-10-31T22:46:14.799Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ff/0381a71f5c00fda001bab35bc6b48e91c86a389545cbeb5cf3fc38b0a8f4/crackle_codec-0.36.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b34e6fed19085f421dacd3533083e35965622dfa166b8a96ba4a82a2a67fd264", size = 458087, upload-time = "2025-10-31T22:46:16.26Z" }, - { url = "https://files.pythonhosted.org/packages/b3/70/92a9ce9a17536a411b3397e881ce90a3efff918515fcc47db6eb6709dbe9/crackle_codec-0.36.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8594a9b111eb2f2ab0fb99b657af2ce8d753b85844f085785e7a28aa23e8a2f0", size = 474205, upload-time = "2025-10-31T22:46:17.652Z" }, - { url = "https://files.pythonhosted.org/packages/ad/96/c24bc14609103b1bc22ca1031e5ba8edfbeb8e1b8464fe113332c124863f/crackle_codec-0.36.0-cp311-cp311-win_amd64.whl", hash = "sha256:aa99fbce3754dad6c081b8f522baf527bbc4811f437da4f0d2aa2f50a7d02b85", size = 312132, upload-time = "2025-10-31T22:46:19.042Z" }, -] - [[package]] name = "cryptography" version = "46.0.4" @@ -604,36 +642,38 @@ wheels = [ ] [[package]] -name = "dijkstra3d" -version = "1.15.2" +name = "debugpy" +version = "1.8.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4e/c5/f03b5c00d4fee861bc30b3bb7a412f601fb29784954f36ca0bc595696274/dijkstra3d-1.15.2.tar.gz", hash = "sha256:f5db0e21bca8a1d7bcedc103d55757b0c030d76d2d62228b6536550952c1e5db", size = 65198, upload-time = "2025-11-06T04:42:31.34Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/cd8080344452e4874aae67c40d8940e2b4d47b01601a8fd9f44786c757c7/debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33", size = 1645207, upload-time = "2026-01-29T23:03:28.199Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/94/7fb0fc4b46f8741b8cef1f10c84ec2e4f8aaa2c01d07e67f1891eb6afd17/dijkstra3d-1.15.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f636f62d0b01884b1189f61d2ecabb47f87190dc9e532dadbc6c7e8d9887101d", size = 340172, upload-time = "2025-11-06T04:41:06.222Z" }, - { url = "https://files.pythonhosted.org/packages/74/00/6048321db5fb4840e39821f5811d8ff9e94d30cdc98dc919c65d54eb8f49/dijkstra3d-1.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f44f630f9a87855dbfeefeb5ecc8ccce667528f067bb9e088e248aaf8a5dcf73", size = 297743, upload-time = "2025-11-06T04:41:08.431Z" }, - { url = "https://files.pythonhosted.org/packages/a7/28/d690de28c29f525c9d53798a7a5e36bcc39fac74f75fd49c30066952a41b/dijkstra3d-1.15.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c373dcbafe10ba5f9da1461bf6ae25c689bdcee3a4a2d9ef8a02037da6a67fa", size = 3486512, upload-time = "2025-11-06T04:41:09.828Z" }, - { url = "https://files.pythonhosted.org/packages/45/41/4c46ede55b320a7183bc45ffc0af98d1556fa1c6e2b5ae191415add5d137/dijkstra3d-1.15.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8d432652d84f26609b2b1d36c226c25dc4a7d7562f39007c952b305969134cb2", size = 3398209, upload-time = "2025-11-06T04:41:11.644Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1b/c269fb9398b0b5a2e7a1aea29a2909f3abdea7010990747b36133bdda927/dijkstra3d-1.15.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81de5a8e222d68002315e11c04f837533488c9c0e975c6ff1595f50a01140cba", size = 4309238, upload-time = "2025-11-06T04:41:13.301Z" }, - { url = "https://files.pythonhosted.org/packages/69/a4/2fc577f7c8a541be773e4d75279fcbcd1b4a56a4c7445280924bf5781be2/dijkstra3d-1.15.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:52321114974afd9f8340fc65f2ed234001c2a859c440397d35253184d98c7256", size = 4373361, upload-time = "2025-11-06T04:41:14.908Z" }, - { url = "https://files.pythonhosted.org/packages/87/ce/e24a0eba72affbec9d62783fe390bf09e1514f21917b0a2d19e3722fafe5/dijkstra3d-1.15.2-cp310-cp310-win32.whl", hash = "sha256:378a57e5ad57e603cd087ad4b1423dc45c48507e40ff9f5fdab4b11d32e48bbe", size = 262266, upload-time = "2025-11-06T04:41:18.153Z" }, - { url = "https://files.pythonhosted.org/packages/d4/95/0034db41d13ea655298baa815382e55f44da22bb09c8cafc3d28ca7ad67a/dijkstra3d-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:9c17277a8ae863b4edccb9df49f7f29d182c452fb9afcdc33e70b18092bb8157", size = 266392, upload-time = "2025-11-06T04:41:17.037Z" }, - { url = "https://files.pythonhosted.org/packages/51/38/e30f2d8b359128e9fbadfed51e0aa5ca18890dd0bbbc5f9d69ab6ed6a13e/dijkstra3d-1.15.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3878120086015c4c903a60774b629f63ae48e935ae2c601bf60d16a9dae2071a", size = 338429, upload-time = "2025-11-06T04:41:19.578Z" }, - { url = "https://files.pythonhosted.org/packages/e0/29/6ded8e5dd045e27dbebb93f79a195af56969f371f83b7f3da35e2e23c4d6/dijkstra3d-1.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a2ae3da42c5eb60c343b239973a35b98ea5e5d08c04c70856c502f4eb78b64f", size = 295535, upload-time = "2025-11-06T04:41:21.114Z" }, - { url = "https://files.pythonhosted.org/packages/de/92/b47cf53d485d70b4ce01364417a2614f9641d8f399cac4dd1dc7f8486987/dijkstra3d-1.15.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74a971ec3287b1fc5bb87dd4ca5ae06aade505af3637219ae2e9059076faf084", size = 3539360, upload-time = "2025-11-06T04:41:22.74Z" }, - { url = "https://files.pythonhosted.org/packages/9d/d1/349115c68d5ba611417e70a25d472d0d9e5d8757e658e22fc780666eb289/dijkstra3d-1.15.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:474f8f5d50c5c035f6fdcb3b08f59ffef63c21c6b35262e2b8057deecdf2b1f8", size = 3445457, upload-time = "2025-11-06T04:41:24.01Z" }, - { url = "https://files.pythonhosted.org/packages/4a/95/c6b375acdfc035b21bcf3ca3db7359a83d440fcc47557b00ebd6a8b71099/dijkstra3d-1.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bed27483b0a7fbde41864aa65127a8296f671143a7500648bcb2aaacebfa6aa5", size = 4367522, upload-time = "2025-11-06T04:41:25.341Z" }, - { url = "https://files.pythonhosted.org/packages/46/cd/df68f73b583040776f7554f2fa40bcefd9238ad6254c4a3ed0f7507f35a0/dijkstra3d-1.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:573d3d9edc9ff7b9432ab0c62a67ee75b8e523664d20a45b261c545ed9183682", size = 4421327, upload-time = "2025-11-06T04:41:26.99Z" }, - { url = "https://files.pythonhosted.org/packages/d3/cd/d4cb0ab04ffc03e1b05a9f0b78f56f139eaf3e49ce7e01159048fa420c39/dijkstra3d-1.15.2-cp311-cp311-win32.whl", hash = "sha256:91a7b05fba8da6f7515c4bdbd3cab53f12ad0801af023ac0fbf0cafa60e84505", size = 261372, upload-time = "2025-11-06T04:41:28.979Z" }, - { url = "https://files.pythonhosted.org/packages/d3/d8/97e2d20583f11180b4df853b094702ead55d4a7772de9e1d980674bf4be5/dijkstra3d-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:8c1755f37dfed167b9ee7c7ac3ceb05d5ef045a89e10db550168e83a661c634a", size = 266096, upload-time = "2025-11-06T04:41:28.073Z" }, + { url = "https://files.pythonhosted.org/packages/71/be/8bd693a0b9d53d48c8978fa5d889e06f3b5b03e45fd1ea1e78267b4887cb/debugpy-1.8.20-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:157e96ffb7f80b3ad36d808646198c90acb46fdcfd8bb1999838f0b6f2b59c64", size = 2099192, upload-time = "2026-01-29T23:03:29.707Z" }, + { url = "https://files.pythonhosted.org/packages/77/1b/85326d07432086a06361d493d2743edd0c4fc2ef62162be7f8618441ac37/debugpy-1.8.20-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:c1178ae571aff42e61801a38b007af504ec8e05fde1c5c12e5a7efef21009642", size = 3088568, upload-time = "2026-01-29T23:03:31.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/60/3e08462ee3eccd10998853eb35947c416e446bfe2bc37dbb886b9044586c/debugpy-1.8.20-cp310-cp310-win32.whl", hash = "sha256:c29dd9d656c0fbd77906a6e6a82ae4881514aa3294b94c903ff99303e789b4a2", size = 5284399, upload-time = "2026-01-29T23:03:33.678Z" }, + { url = "https://files.pythonhosted.org/packages/72/43/09d49106e770fe558ced5e80df2e3c2ebee10e576eda155dcc5670473663/debugpy-1.8.20-cp310-cp310-win_amd64.whl", hash = "sha256:3ca85463f63b5dd0aa7aaa933d97cbc47c174896dcae8431695872969f981893", size = 5316388, upload-time = "2026-01-29T23:03:35.095Z" }, + { url = "https://files.pythonhosted.org/packages/51/56/c3baf5cbe4dd77427fd9aef99fcdade259ad128feeb8a786c246adb838e5/debugpy-1.8.20-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:eada6042ad88fa1571b74bd5402ee8b86eded7a8f7b827849761700aff171f1b", size = 2208318, upload-time = "2026-01-29T23:03:36.481Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/4fa79a57a8e69fe0d9763e98d1110320f9ecd7f1f362572e3aafd7417c9d/debugpy-1.8.20-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:7de0b7dfeedc504421032afba845ae2a7bcc32ddfb07dae2c3ca5442f821c344", size = 3171493, upload-time = "2026-01-29T23:03:37.775Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f2/1e8f8affe51e12a26f3a8a8a4277d6e60aa89d0a66512f63b1e799d424a4/debugpy-1.8.20-cp311-cp311-win32.whl", hash = "sha256:773e839380cf459caf73cc533ea45ec2737a5cc184cf1b3b796cd4fd98504fec", size = 5209240, upload-time = "2026-01-29T23:03:39.109Z" }, + { url = "https://files.pythonhosted.org/packages/d5/92/1cb532e88560cbee973396254b21bece8c5d7c2ece958a67afa08c9f10dc/debugpy-1.8.20-cp311-cp311-win_amd64.whl", hash = "sha256:1f7650546e0eded1902d0f6af28f787fa1f1dbdbc97ddabaf1cd963a405930cb", size = 5233481, upload-time = "2026-01-29T23:03:40.659Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c3/7f67dea8ccf8fdcb9c99033bbe3e90b9e7395415843accb81428c441be2d/debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7", size = 5337658, upload-time = "2026-01-29T23:04:17.404Z" }, ] [[package]] -name = "dill" -version = "0.4.1" +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] [[package]] @@ -660,29 +700,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/a3/460c57f094a4a165c84a1341c373b0a4f5ec6ac244b998d5021aade89b77/ecdsa-0.19.1-py2.py3-none-any.whl", hash = "sha256:30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3", size = 150607, upload-time = "2025-03-13T11:52:41.757Z" }, ] -[[package]] -name = "edt" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a5/ca/432c11df2a261fcae71dea11eeabfc5affd8ada22aaafa378212c1e9c9e2/edt-3.1.1.tar.gz", hash = "sha256:4b0ab5d898077eda76d1ebdec6e3a4085fd33d4c85195d71abf464ff225915c5", size = 3234159, upload-time = "2026-03-01T05:20:30.695Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/c6/94335dd01d33fff33b02bc7c79c4b2ec4664ccbbe9b55ccb73868555d6c0/edt-3.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e249ab445adc21ec9c458a3a0215e9bcf3e487154947a4b9172c5506bf2ed39e", size = 274429, upload-time = "2026-03-01T05:19:18.225Z" }, - { url = "https://files.pythonhosted.org/packages/e0/3a/e99a0b59cf953a2c2b3e5e9451389e4b8f40579614229aef44f13f2f8b6a/edt-3.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:11ee8df9bab9e1649190d2a286a9b35a2dea90bf6f60fb9a299c8a8371e258c7", size = 254093, upload-time = "2026-03-01T05:19:19.869Z" }, - { url = "https://files.pythonhosted.org/packages/39/89/358cf81ac3c94cf2c8e243788e6282cb1ec7980c64d12859cbdc016865d8/edt-3.1.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09b6fd94a7146305a9c7d964551d6148249c8692e08d6065a56aa79ccd625585", size = 2836166, upload-time = "2026-03-01T05:19:21.408Z" }, - { url = "https://files.pythonhosted.org/packages/2e/d6/48f59656a8cf4d9672700d42585d83a9dc065f34dd1786ac07f320cc8da0/edt-3.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c8108ce1e4ee328c5bf32948d8da22e78df955147dc3eac4c80ba3de9512f449", size = 2902642, upload-time = "2026-03-01T05:19:23.195Z" }, - { url = "https://files.pythonhosted.org/packages/ad/be/81c0cad69f306fe1ef34a1b86e066e13021c0e813e858eada4fa2810deaa/edt-3.1.1-cp310-cp310-win32.whl", hash = "sha256:15dee70100c553ddf71979c5d7c297a0386a02970b3b18d8ee5a5b778bd51996", size = 175131, upload-time = "2026-03-01T05:19:28.133Z" }, - { url = "https://files.pythonhosted.org/packages/fe/4d/999a42a45a75cbd63811aca365b538c1ed72456d1243fc00edaa2e2e6e11/edt-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d6692f010a3ab6fc2b802f22173d8d6ed5e4154cf524a9821f273870f6af45b", size = 210140, upload-time = "2026-03-01T05:19:26.709Z" }, - { url = "https://files.pythonhosted.org/packages/83/50/fa05c178abd6fcfe4369c7b651650fe3395558320766d0334f2606642de9/edt-3.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ce45f983747ba5a096e35dbfc13beafcbe2c6d2746d87c06915ddeac16af7e6", size = 273024, upload-time = "2026-03-01T05:19:29.312Z" }, - { url = "https://files.pythonhosted.org/packages/80/0b/53ba9d3727b1b87a77449e36415a20885718e21886bdff528c1e2a5beb27/edt-3.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fe86dafa1e4703c670ab5e36cd9334b9a15eb0c97ff42700a544f438bafbfc8", size = 253067, upload-time = "2026-03-01T05:19:30.804Z" }, - { url = "https://files.pythonhosted.org/packages/c6/98/c56d761056c6712edd57f384486508431889f66da850fb32e17f78fee1df/edt-3.1.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9f238097b3f6a93bdbf1860d0efa42bc88a868e5416ff0a18316e001c9c355a", size = 2886678, upload-time = "2026-03-01T05:19:32.081Z" }, - { url = "https://files.pythonhosted.org/packages/55/9d/4e857ba351d6d8cffb7a375b0e557c0feb8a2af8da9cfe331b54fa98c7e4/edt-3.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3630630459b8ad32b12bb9840f204cf405b2c64fa827140e55762528364d7a28", size = 2947202, upload-time = "2026-03-01T05:19:34.019Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c6/44fa2239478d01c4d02b29dcd36a220f2415dcad8bb609776658e580add5/edt-3.1.1-cp311-cp311-win32.whl", hash = "sha256:25134ae70b393682110f081ecfdc773fbd3661b551b6225db96950a69bbedb35", size = 174525, upload-time = "2026-03-01T05:19:36.539Z" }, - { url = "https://files.pythonhosted.org/packages/3e/44/2664e9419358cced35395446c2cddfba9a5b0d538543d779b72a53b40b71/edt-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:9c2694cdc1651def1cd78331f90bf45efaa4cbd4d9e753acc60a3033b422c529", size = 210170, upload-time = "2026-03-01T05:19:35.515Z" }, -] - [[package]] name = "einops" version = "0.8.2" @@ -704,6 +721,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, ] +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + [[package]] name = "faiss-cpu" version = "1.12.0" @@ -755,26 +781,12 @@ wheels = [ ] [[package]] -name = "fastremap" -version = "1.17.7" +name = "fastjsonschema" +version = "2.21.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/97/c8/d581816df8ee7ab70cd2dd8ee4e60169ceab8062224cc090863e6715f33d/fastremap-1.17.7.tar.gz", hash = "sha256:42776172867d8f2b3348754cf29405ba878af4b06917f12a969514d3097910dc", size = 50034, upload-time = "2025-09-29T23:28:13.031Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/fe/774b263411d4ccc1f46789f36a24e85706f55e0b53f67cf909b702271b2c/fastremap-1.17.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9a759677a897df0eb7ad1b466de18d00cfbdafb0ec4851b433b7891eea7cd8e0", size = 811269, upload-time = "2025-09-29T23:27:15.632Z" }, - { url = "https://files.pythonhosted.org/packages/eb/fa/b600288be8990be1e4c668def2f5575a2f57c1c3554d377b8ef157b5d762/fastremap-1.17.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a82b3b67967047c31d9bab8452b3a3fc4e17b143eb9fd98b9cb9e0bfe990840d", size = 652567, upload-time = "2025-09-29T23:27:17.63Z" }, - { url = "https://files.pythonhosted.org/packages/a5/45/8509e51619a3d140051217ee30ce5bcb25d7ba8a2ebd07325b00034a5089/fastremap-1.17.7-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7455ce285a8e431e41138f7b5c6b7c9cd817f419bc4245f1de1d095f0e91feb", size = 7067506, upload-time = "2025-09-29T23:27:18.933Z" }, - { url = "https://files.pythonhosted.org/packages/78/15/6890a8c4c1c90f7a0c0811207ece87082f9fa994ca6ca002e92f65a2c877/fastremap-1.17.7-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b05fb72432faefeebbcb9e0f49a175730f0cb95fd350b584855df263f33c8edc", size = 7223455, upload-time = "2025-09-29T23:27:21.146Z" }, - { url = "https://files.pythonhosted.org/packages/9a/89/bdbb39df082e467338d139c47bb8c8dbe5d8347837afd81ea4b0028a4e2f/fastremap-1.17.7-cp310-cp310-win32.whl", hash = "sha256:f49f79c28d84632de4eb254b7342ae37fa9fa6e79ecd4cc569a15014ee99eb4a", size = 498013, upload-time = "2025-09-29T23:27:23.549Z" }, - { url = "https://files.pythonhosted.org/packages/9e/aa/8f88be7fd7521a79d522fcd13783dd702795c37d977713305895191c5ee9/fastremap-1.17.7-cp310-cp310-win_amd64.whl", hash = "sha256:aabb9ec3d93b75f8f97651cf3067c7415286461296dea5e7e9c0c6ddc9d9858b", size = 684136, upload-time = "2025-09-29T23:27:22.571Z" }, - { url = "https://files.pythonhosted.org/packages/be/7f/98bc1ab6ab9b389a72ed1a97dc34eb57a8e6beb473117c8942481f74e6ca/fastremap-1.17.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4610492ea19f1cc916a05e9195b67de11dc98a18e905de1abf821b2ca2ca1fac", size = 811862, upload-time = "2025-09-29T23:27:24.546Z" }, - { url = "https://files.pythonhosted.org/packages/f7/b6/b88d2a30f50708249bb0414f0581d0f7ccb3785b1a3ca6588565920988f2/fastremap-1.17.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6130394fc92777d08ca992e70ff6307fe1ef928d2831140ff63ab27f36b6600", size = 655315, upload-time = "2025-09-29T23:27:26.006Z" }, - { url = "https://files.pythonhosted.org/packages/f9/fd/70d7e5ee9b77c3ddbe6d9c479202cf04a0f178c399d94af5993520dab51a/fastremap-1.17.7-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f77a4e48fc9614027d318d23399d91a89b62c56d97880055c538fd42c43fd6", size = 7496837, upload-time = "2025-09-29T23:27:27.344Z" }, - { url = "https://files.pythonhosted.org/packages/ff/5a/3ae0f6425c816ac74e130244c152cc5b7d7c13d5c5ff299af074f0456208/fastremap-1.17.7-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74635d268aa40ef7063319c997c1cbb70d52deeb08a3a61146a6151306c394ea", size = 7621372, upload-time = "2025-09-29T23:27:29.088Z" }, - { url = "https://files.pythonhosted.org/packages/65/9a/193ca90273394cc93d98c9b7a587d134655910e14e12d7813d97d48ed13d/fastremap-1.17.7-cp311-cp311-win32.whl", hash = "sha256:f72d6db9550d9f1308cf78e71ca1bbbedea66048439b0fe688addaedf05c37ff", size = 490649, upload-time = "2025-09-29T23:27:31.719Z" }, - { url = "https://files.pythonhosted.org/packages/71/4b/7a03f72620945f08b40285ff3640e2b0a86f80218c519c8e4c4a557ca645/fastremap-1.17.7-cp311-cp311-win_amd64.whl", hash = "sha256:67cf58fada99981ec1a5b4f3368e1b4c1c4d0f22efaa036748f97475c37ce1f3", size = 685345, upload-time = "2025-09-29T23:27:30.662Z" }, + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, ] [[package]] @@ -786,32 +798,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" }, ] -[[package]] -name = "fill-voids" -version = "2.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastremap" }, - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f0/11/6dff4280502b81e92a69442d6d82a343610192ccbc2638ab921ffc273505/fill_voids-2.1.1.tar.gz", hash = "sha256:469f543e4ab236cf11aacef106af8e73c730f2a90f1bfae760dc8de29d4d6634", size = 3229026, upload-time = "2025-09-03T05:28:32.579Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/db/e89af150e5e599a7a85c23e4ba54c305cc287aaff16104af59c002267541/fill_voids-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82c05c8a86bbd1e6e2047358ce6ad6722c2fb42a10fa0288749a939104ede712", size = 227581, upload-time = "2025-09-03T05:27:55.2Z" }, - { url = "https://files.pythonhosted.org/packages/50/e9/c9a60269b58527845672cf97d668d441ba8250020d047ab60c3989101313/fill_voids-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:98c70d3c372e7d54a3ce462d8828c42d00232e88f01b5c62ce78551dba99436f", size = 207316, upload-time = "2025-09-03T05:27:56.826Z" }, - { url = "https://files.pythonhosted.org/packages/ab/eb/c325d980f98643f500f872b9fcd35e428384757fd9f46cb19b3fac30cce5/fill_voids-2.1.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5209dc9112d144763b0054460570f3f1dd2d19ed485401def8cbd0d7dc25fbf8", size = 1527166, upload-time = "2025-09-03T12:19:19.287Z" }, - { url = "https://files.pythonhosted.org/packages/20/62/139f190b61784ebdf1d7b9f8084603d164fa0a7fc5eb85ea5ddd04398c9c/fill_voids-2.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9f40c9f7dad4eff48d915f9e0e1d56828a99d981f02a44dba0723b054f7a70d2", size = 1538708, upload-time = "2025-09-03T05:27:58.01Z" }, - { url = "https://files.pythonhosted.org/packages/d2/ff/773b31f59d83bc91be9ee846d8901013523ec822c4caf76b144254172dd0/fill_voids-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e9d4e76c565458568242ca97d0719199bb61781152b5fec8eed033c89bed1bc5", size = 2354805, upload-time = "2025-09-03T12:19:21.118Z" }, - { url = "https://files.pythonhosted.org/packages/87/e3/08abadba96c7b2a7e679d04852f049e4e0db459eb41d6bc8c7af9e280a45/fill_voids-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eb3a7d9c25c790ae17f3a4b7853d060c79bf73428ce44deecc1cc4e66ce81fab", size = 2405792, upload-time = "2025-09-03T05:27:59.99Z" }, - { url = "https://files.pythonhosted.org/packages/5a/5c/6cc051d4c7a4cb3ead14fcb95da599cf19b300434d82445e7bd72b535862/fill_voids-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:3dc17ccef0f7fdfee457cb0b33b16e70eedc80f0fa2a29c447991bdb64e2ae87", size = 197497, upload-time = "2025-09-03T05:28:01.427Z" }, - { url = "https://files.pythonhosted.org/packages/03/8b/70d8d8c54b42657ddc01c81fda9c326600e606161c89599809e453827861/fill_voids-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d866876f0d692b6b6d0fa5a6d42cfb62696b048286a28866d2e0fe728fb83070", size = 232090, upload-time = "2025-09-03T05:28:02.634Z" }, - { url = "https://files.pythonhosted.org/packages/9e/1e/0e23cbcf1ad4980a8a9834037c268fb95ac63db0d4f7fa9f4472e4dd8d82/fill_voids-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ec9ab0e107d9e876a580f9b954b1029fc20322158c80b2f5d925ee67236e88c9", size = 206937, upload-time = "2025-09-03T05:28:03.556Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b1/8e6457707b2a7806d5c50be08950fcfb54d1e929effdbc8c5b7563015359/fill_voids-2.1.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4dc3e9cb3acceb6834b2149b8ae2e8d76cca3cf7cfcc255200881fbbef54177a", size = 1595690, upload-time = "2025-09-03T12:19:22.61Z" }, - { url = "https://files.pythonhosted.org/packages/6e/38/1c53fe0bf6a667511c93d2e634f7a5ebf8144e3d274fbcca921bd8c0e216/fill_voids-2.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac94f1a70886edbde7ea1d44b60d36d7a86bb149072c069c3e53b43f3d89d5", size = 1602603, upload-time = "2025-09-03T05:28:04.55Z" }, - { url = "https://files.pythonhosted.org/packages/f9/cc/98110bf6f916e3c82e8923b8cb9e55272ede6b2028c01117b4c2a2ddeb33/fill_voids-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:128d29c0e49bceffb748b3b35f174377b4b05da4be65e6ccfe436047924ee858", size = 2421284, upload-time = "2025-09-03T12:19:24.279Z" }, - { url = "https://files.pythonhosted.org/packages/33/c1/8cfe49f4d97e5f870a5605f84c93449a6ff8b71f9fee022badf6f28d3c27/fill_voids-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c31d529bc46d0b17328044b51a98d9773c2453c0f7daac37743ada70944269b2", size = 2462171, upload-time = "2025-09-03T05:28:06.23Z" }, - { url = "https://files.pythonhosted.org/packages/a6/b8/d33df66e9c0e637439421d7c2331f913b3374803971df5b0af067d5a6bed/fill_voids-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:cd3e21ce337bd2eabb08ea423da5ebd215abba1f7e0174f41fbc4f4b82feec85", size = 197397, upload-time = "2025-09-03T05:28:07.646Z" }, -] - [[package]] name = "fonttools" version = "4.61.1" @@ -837,6 +823,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, ] +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + [[package]] name = "frozenlist" version = "1.8.0" @@ -887,11 +882,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e6/ab/fb21f4c939bb440104cc2b396d3be1d9b7a9fd3c6c2a53d98c45b3d7c954/fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437", size = 202505, upload-time = "2026-02-05T21:50:51.819Z" }, ] -[package.optional-dependencies] -http = [ - { name = "aiohttp" }, -] - [[package]] name = "google-apitools" version = "0.5.35" @@ -941,6 +931,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9c/97/7d75fe37a7a6ed171a2cf17117177e7aab7e6e0d115858741b41e9dd4254/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c", size = 28800, upload-time = "2025-12-16T00:40:30.322Z" }, ] +[[package]] +name = "gputil" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/0e/5c61eedde9f6c87713e89d794f01e378cfd9565847d4576fa627d758c554/GPUtil-1.4.0.tar.gz", hash = "sha256:099e52c65e512cdfa8c8763fca67f5a5c2afb63469602d5dcb4d296b3661efb9", size = 5545, upload-time = "2018-12-18T09:12:13.63Z" } + [[package]] name = "greenlet" version = "3.3.1" @@ -950,7 +946,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fe/65/5b235b40581ad75ab97dcd8b4218022ae8e3ab77c13c919f1a1dfe9171fd/greenlet-3.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:04bee4775f40ecefcdaa9d115ab44736cd4b9c5fba733575bfe9379419582e13", size = 273723, upload-time = "2026-01-23T15:30:37.521Z" }, { url = "https://files.pythonhosted.org/packages/ce/ad/eb4729b85cba2d29499e0a04ca6fbdd8f540afd7be142fd571eea43d712f/greenlet-3.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50e1457f4fed12a50e427988a07f0f9df53cf0ee8da23fab16e6732c2ec909d4", size = 574874, upload-time = "2026-01-23T16:00:54.551Z" }, { url = "https://files.pythonhosted.org/packages/87/32/57cad7fe4c8b82fdaa098c89498ef85ad92dfbb09d5eb713adedfc2ae1f5/greenlet-3.3.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:070472cd156f0656f86f92e954591644e158fd65aa415ffbe2d44ca77656a8f5", size = 586309, upload-time = "2026-01-23T16:05:25.18Z" }, - { url = "https://files.pythonhosted.org/packages/66/66/f041005cb87055e62b0d68680e88ec1a57f4688523d5e2fb305841bc8307/greenlet-3.3.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1108b61b06b5224656121c3c8ee8876161c491cbe74e5c519e0634c837cf93d5", size = 597461, upload-time = "2026-01-23T16:15:51.943Z" }, { url = "https://files.pythonhosted.org/packages/87/eb/8a1ec2da4d55824f160594a75a9d8354a5fe0a300fb1c48e7944265217e1/greenlet-3.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a300354f27dd86bae5fbf7002e6dd2b3255cd372e9242c933faf5e859b703fe", size = 586985, upload-time = "2026-01-23T15:32:47.968Z" }, { url = "https://files.pythonhosted.org/packages/15/1c/0621dd4321dd8c351372ee8f9308136acb628600658a49be1b7504208738/greenlet-3.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e84b51cbebf9ae573b5fbd15df88887815e3253fc000a7d0ff95170e8f7e9729", size = 1547271, upload-time = "2026-01-23T16:04:18.977Z" }, { url = "https://files.pythonhosted.org/packages/9d/53/24047f8924c83bea7a59c8678d9571209c6bfe5f4c17c94a78c06024e9f2/greenlet-3.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0093bd1a06d899892427217f0ff2a3c8f306182b8c754336d32e2d587c131b4", size = 1613427, upload-time = "2026-01-23T15:33:44.428Z" }, @@ -958,7 +953,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/e8/2e1462c8fdbe0f210feb5ac7ad2d9029af8be3bf45bd9fa39765f821642f/greenlet-3.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:5fd23b9bc6d37b563211c6abbb1b3cab27db385a4449af5c32e932f93017080c", size = 274974, upload-time = "2026-01-23T15:31:02.891Z" }, { url = "https://files.pythonhosted.org/packages/7e/a8/530a401419a6b302af59f67aaf0b9ba1015855ea7e56c036b5928793c5bd/greenlet-3.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f51496a0bfbaa9d74d36a52d2580d1ef5ed4fdfcff0a73730abfbbbe1403dd", size = 577175, upload-time = "2026-01-23T16:00:56.213Z" }, { url = "https://files.pythonhosted.org/packages/8e/89/7e812bb9c05e1aaef9b597ac1d0962b9021d2c6269354966451e885c4e6b/greenlet-3.3.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb0feb07fe6e6a74615ee62a880007d976cf739b6669cce95daa7373d4fc69c5", size = 590401, upload-time = "2026-01-23T16:05:26.365Z" }, - { url = "https://files.pythonhosted.org/packages/70/ae/e2d5f0e59b94a2269b68a629173263fa40b63da32f5c231307c349315871/greenlet-3.3.1-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:67ea3fc73c8cd92f42467a72b75e8f05ed51a0e9b1d15398c913416f2dafd49f", size = 601161, upload-time = "2026-01-23T16:15:53.456Z" }, { url = "https://files.pythonhosted.org/packages/5c/ae/8d472e1f5ac5efe55c563f3eabb38c98a44b832602e12910750a7c025802/greenlet-3.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39eda9ba259cc9801da05351eaa8576e9aa83eb9411e8f0c299e05d712a210f2", size = 590272, upload-time = "2026-01-23T15:32:49.411Z" }, { url = "https://files.pythonhosted.org/packages/a8/51/0fde34bebfcadc833550717eade64e35ec8738e6b097d5d248274a01258b/greenlet-3.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e2e7e882f83149f0a71ac822ebf156d902e7a5d22c9045e3e0d1daf59cee2cc9", size = 1550729, upload-time = "2026-01-23T16:04:20.867Z" }, { url = "https://files.pythonhosted.org/packages/16/c9/2fb47bee83b25b119d5a35d580807bb8b92480a54b68fef009a02945629f/greenlet-3.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80aa4d79eb5564f2e0a6144fcc744b5a37c56c4a92d60920720e99210d88db0f", size = 1615552, upload-time = "2026-01-23T15:33:45.743Z" }, @@ -1104,21 +1098,135 @@ wheels = [ ] [[package]] -name = "importlib-resources" -version = "6.5.2" +name = "ipykernel" +version = "7.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/8d/b68b728e2d06b9e0051019640a40a9eb7a88fcd82c2e1b5ce70bef5ff044/ipykernel-7.2.0.tar.gz", hash = "sha256:18ed160b6dee2cbb16e5f3575858bc19d8f1fe6046a9a680c708494ce31d909e", size = 176046, upload-time = "2026-02-06T16:43:27.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, + { url = "https://files.pythonhosted.org/packages/82/b9/e73d5d9f405cba7706c539aa8b311b49d4c2f3d698d9c12f815231169c71/ipykernel-7.2.0-py3-none-any.whl", hash = "sha256:3bbd4420d2b3cc105cbdf3756bfc04500b1e52f090a90716851f3916c62e1661", size = 118788, upload-time = "2026-02-06T16:43:25.149Z" }, ] [[package]] -name = "iniconfig" -version = "2.3.0" +name = "ipython" +version = "8.39.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version < '3.11'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "jedi", marker = "python_full_version < '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, + { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "stack-data", marker = "python_full_version < '3.11'" }, + { name = "traitlets", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/18/f8598d287006885e7136451fdea0755af4ebcbfe342836f24deefaed1164/ipython-8.39.0.tar.gz", hash = "sha256:4110ae96012c379b8b6db898a07e186c40a2a1ef5d57a7fa83166047d9da7624", size = 5513971, upload-time = "2026-03-27T10:02:13.94Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/56/4cc7fc9e9e3f38fd324f24f8afe0ad8bb5fa41283f37f1aaf9de0612c968/ipython-8.39.0-py3-none-any.whl", hash = "sha256:bb3c51c4fa8148ab1dea07a79584d1c854e234ea44aa1283bcb37bc75054651f", size = 831849, upload-time = "2026-03-27T10:02:07.846Z" }, +] + +[[package]] +name = "ipython" +version = "9.10.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.11' and sys_platform == 'darwin'", + "python_full_version >= '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version >= '3.11'" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, + { name = "jedi", marker = "python_full_version >= '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, + { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "stack-data", marker = "python_full_version >= '3.11'" }, + { name = "traitlets", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/25/daae0e764047b0a2480c7bbb25d48f4f509b5818636562eeac145d06dfee/ipython-9.10.1.tar.gz", hash = "sha256:e170e9b2a44312484415bdb750492699bf329233b03f2557a9692cce6466ada4", size = 4426663, upload-time = "2026-03-27T09:53:26.244Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/09/ba70f8d662d5671687da55ad2cc0064cf795b15e1eea70907532202e7c97/ipython-9.10.1-py3-none-any.whl", hash = "sha256:82d18ae9fb9164ded080c71ef92a182ee35ee7db2395f67616034bebb020a232", size = 622827, upload-time = "2026-03-27T09:53:24.566Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/ae/c5ce1edc1afe042eadb445e95b0671b03cee61895264357956e61c0d2ac0/ipywidgets-8.1.8.tar.gz", hash = "sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668", size = 116739, upload-time = "2025-11-01T21:18:12.393Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl", hash = "sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e", size = 139808, upload-time = "2025-11-01T21:18:10.956Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -1142,6 +1250,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, ] +[[package]] +name = "json5" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/e8/a3f261a66e4663f22700bc8a17c08cb83e91fbf086726e7a228398968981/json5-0.13.0.tar.gz", hash = "sha256:b1edf8d487721c0bf64d83c28e91280781f6e21f4a797d3261c7c828d4c165bf", size = 52441, upload-time = "2026-01-01T19:42:14.99Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/9e/038522f50ceb7e74f1f991bf1b699f24b0c2bbe7c390dd36ad69f4582258/json5-0.13.0-py3-none-any.whl", hash = "sha256:9a08e1dd65f6a4d4c6fa82d216cf2477349ec2346a38fd70cc11d2557499fbcc", size = 36163, upload-time = "2026-01-01T19:42:13.962Z" }, +] + [[package]] name = "jsonpatch" version = "1.33" @@ -1164,41 +1281,244 @@ wheels = [ ] [[package]] -name = "kimimaro" -version = "5.8.1" +name = "jsonschema" +version = "4.26.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "click" }, - { name = "connected-components-3d" }, - { name = "dijkstra3d" }, - { name = "edt" }, - { name = "fastremap" }, - { name = "fill-voids" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "numpy" }, - { name = "osteoid" }, - { name = "pathos" }, - { name = "pytest" }, - { 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" }, - { name = "xs3d" }, + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "rfc3987-syntax" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "jupyter" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter-console" }, + { name = "jupyterlab" }, + { name = "nbconvert" }, + { name = "notebook" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/e4/ba649102a3bc3fbca54e7239fb924fd434c766f855693d86de0b1f2bec81/jupyter_client-8.8.0.tar.gz", hash = "sha256:d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e", size = 348020, upload-time = "2026-01-08T13:55:47.938Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/0b/ceb7694d864abc0a047649aec263878acb9f792e1fec3e676f22dc9015e3/jupyter_client-8.8.0-py3-none-any.whl", hash = "sha256:f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a", size = 107371, upload-time = "2026-01-08T13:55:45.562Z" }, +] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "pyzmq" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/5a/9066c9f8e94ee517133cd98dba393459a16cd48bba71a82f16a65415206c/jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245", size = 54823, upload-time = "2025-08-27T17:47:34.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/60/1f6cee0c46263de1173894f0fafcb3475ded276c472c14d25e0280c18d6d/jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f", size = 76687, upload-time = "2025-08-27T17:47:33.15Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/01/20/26134b124b3f06d899ebef7ae3859e8a0a2f002f5366371d93213ed06614/kimimaro-5.8.1.tar.gz", hash = "sha256:d8bb3e7c5eaa2ba4ded5362cea864cd7f1c3411d6eaf745bd89872f6faf2a581", size = 524327, upload-time = "2026-01-16T17:10:51.064Z" } + +[[package]] +name = "jupyter-server" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "(os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/ac/e040ec363d7b6b1f11304cc9f209dac4517ece5d5e01821366b924a64a50/jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5", size = 731949, upload-time = "2025-08-21T14:42:54.042Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/80/a24767e6ca280f5a49525d987bf3e4d7552bf67c8be07e8ccf20271f8568/jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f", size = 388221, upload-time = "2025-08-21T14:42:52.034Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "(os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/a7/bcd0a9b0cbba88986fe944aaaf91bfda603e5a50bda8ed15123f381a3b2f/jupyter_server_terminals-0.5.4.tar.gz", hash = "sha256:bbda128ed41d0be9020349f9f1f2a4ab9952a73ed5f5ac9f1419794761fb87f5", size = 31770, upload-time = "2026-01-14T16:53:20.213Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/2d/6674563f71c6320841fc300911a55143925112a72a883e2ca71fba4c618d/jupyter_server_terminals-0.5.4-py3-none-any.whl", hash = "sha256:55be353fc74a80bc7f3b20e6be50a55a61cd525626f578dcb66a5708e2007d14", size = 13704, upload-time = "2026-01-14T16:53:18.738Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.5.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/d5/730628e03fff2e8a8e8ccdaedde1489ab1309f9a4fa2536248884e30b7c7/jupyterlab-4.5.6.tar.gz", hash = "sha256:642fe2cfe7f0f5922a8a558ba7a0d246c7bc133b708dfe43f7b3a826d163cf42", size = 23970670, upload-time = "2026-03-11T14:17:04.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/1b/dad6fdcc658ed7af26fdf3841e7394072c9549a8b896c381ab49dd11e2d9/jupyterlab-4.5.6-py3-none-any.whl", hash = "sha256:d6b3dac883aa4d9993348e0f8e95b24624f75099aed64eab6a4351a9cdd1e580", size = 12447124, upload-time = "2026-03-11T14:17:00.229Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/2c/90153f189e421e93c4bb4f9e3f59802a1f01abd2ac5cf40b152d7f735232/jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c", size = 76996, upload-time = "2025-10-22T13:59:18.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968", size = 59830, upload-time = "2025-10-22T13:59:16.767Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/2d/ef58fed122b268c69c0aa099da20bc67657cdfb2e222688d5731bd5b971d/jupyterlab_widgets-3.0.16.tar.gz", hash = "sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0", size = 897423, upload-time = "2025-11-01T21:11:29.724Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/1f/de526141168cf8a1e787c70d53eb72822c5f93f673c5228ec8c22dfa0c9e/kimimaro-5.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e91957f959f2e64290ce73e7ad082ebcfd5cbd4b22c3c4312309c33aec38f073", size = 346394, upload-time = "2026-01-16T17:09:51.393Z" }, - { url = "https://files.pythonhosted.org/packages/82/47/ae6d489f455173b65263e8e3f8472790426de0d917cf0b0210396be706b9/kimimaro-5.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91f5f35aa362edfafb4025c0eab521c4df2cc635a5a31fd1819f4e78b1426173", size = 313140, upload-time = "2026-01-16T17:09:52.9Z" }, - { url = "https://files.pythonhosted.org/packages/4c/64/f661318954ba5fa21d89029ce5809e8282dbb70afbe1a10b9f53d4fe3e0a/kimimaro-5.8.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ceb28c72bffeeb2ec6de6665e86dc46c303547bbab1427bd811b0fd53acada38", size = 2620655, upload-time = "2026-01-16T17:09:54.566Z" }, - { url = "https://files.pythonhosted.org/packages/0d/3d/5583e41b8c8c060f57d0114d8e5e9263ed4100a259e299a9f9e5e0efb270/kimimaro-5.8.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f864ef8e8b7436f9d06496cf9498b06b106b620b0a0d4956efed39c62958600f", size = 2692015, upload-time = "2026-01-16T17:09:56.253Z" }, - { url = "https://files.pythonhosted.org/packages/7f/d2/140d26044241585cddf9ea6293aad34c6a55843c7ed935c64041161b1c11/kimimaro-5.8.1-cp310-cp310-win32.whl", hash = "sha256:a9df22efc1ea0f32a5db8af8dc0f67e5e83cd1ff2b79c8bc5cacefd166ca8b15", size = 269770, upload-time = "2026-01-16T17:09:59.203Z" }, - { url = "https://files.pythonhosted.org/packages/96/b7/121136f33875858a205cf81a572de382f89b73a21dc3d5a416ff6676b10a/kimimaro-5.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:ff9d4ca1150fa15fabbb7c4783e6983bc336bd398e2b9e189791accff5c62fd9", size = 318581, upload-time = "2026-01-16T17:09:57.61Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/d0cfc3fe47fe04cd0dba8aea35a06a9528524b8411a665d11c09a5b16fce/kimimaro-5.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c9614d2451b4ea411f9878f1542b506a54f4acbb2fe4fbe9038ce2e1fad6d91a", size = 347976, upload-time = "2026-01-16T17:10:00.261Z" }, - { url = "https://files.pythonhosted.org/packages/b2/92/cec2e2ec2c1b9f94d275e61a0c56af04192ad17bed79daf9eab7fcc68fa6/kimimaro-5.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20958c1d7f6ac9d0d3aadbaff8042c90b59948c87da77f4f8da82a0ec1ed904c", size = 312108, upload-time = "2026-01-16T17:10:01.323Z" }, - { url = "https://files.pythonhosted.org/packages/76/85/2fc1b41b90facd150e07e161963d210e9a1fd687cc4ad01765322a14536a/kimimaro-5.8.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22ee509971a8d01261270c08a4de922fef5e33b9af7c99ad92b0010236fab87f", size = 2749730, upload-time = "2026-01-16T17:10:02.622Z" }, - { url = "https://files.pythonhosted.org/packages/7c/75/39620a67bc49b8e9686ecc65b9d68a9c4ccd3de52d5a55db403840a1876c/kimimaro-5.8.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5c1e82b38dbe9c52e44c8f9bbbe0685add4f8b1b683767461fe062bf855fccc8", size = 2818393, upload-time = "2026-01-16T17:10:04.593Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a8/6855fae5a2197aa4c107b83df24dffbf84b4fcee8c3245466ad0a24fef07/kimimaro-5.8.1-cp311-cp311-win32.whl", hash = "sha256:bc155d673d365f68157b9e247680effb1c334b04fbf000ff55944ff350667a0d", size = 270402, upload-time = "2026-01-16T17:10:07.63Z" }, - { url = "https://files.pythonhosted.org/packages/94/52/7329a3444cab562d3b2cd5f91df15f58bdc056b8cf941b8f8f58e6190bd8/kimimaro-5.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:09864ce03edef7ef124eb3846011c1c6abe90929578933d97628ef24289a1d72", size = 319922, upload-time = "2026-01-16T17:10:06.24Z" }, + { url = "https://files.pythonhosted.org/packages/ab/b5/36c712098e6191d1b4e349304ef73a8d06aed77e56ceaac8c0a306c7bda1/jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8", size = 914926, upload-time = "2025-11-01T21:11:28.008Z" }, ] [[package]] @@ -1422,49 +1742,24 @@ wheels = [ ] [[package]] -name = "lazy-loader" -version = "0.4" +name = "lark" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, + { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, ] [[package]] -name = "lightning-utilities" -version = "0.15.3" +name = "lazy-loader" +version = "0.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/45/7fa8f56b17dc0f0a41ec70dd307ecd6787254483549843bef4c30ab5adce/lightning_utilities-0.15.3.tar.gz", hash = "sha256:792ae0204c79f6859721ac7f386c237a33b0ed06ba775009cb894e010a842033", size = 33553, upload-time = "2026-02-22T14:48:53.348Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/f4/ead6e0e37209b07c9baa3e984ccdb0348ca370b77cea3aaea8ddbb097e00/lightning_utilities-0.15.3-py3-none-any.whl", hash = "sha256:6c55f1bee70084a1cbeaa41ada96e4b3a0fea5909e844dd335bd80f5a73c5f91", size = 31906, upload-time = "2026-02-22T14:48:52.488Z" }, -] - -[[package]] -name = "mahotas" -version = "1.4.18" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/71/bf99df8458c0ca05cb9a16f400e66c09b37b15ea124aaa3becb577555cc5/mahotas-1.4.18.tar.gz", hash = "sha256:e6bd2eea4143a24f381b30c64078503cd8ffa20ca493e39ffa29f9d024d9cf8b", size = 1533222, upload-time = "2024-07-17T21:11:56.204Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/83/f291cb8d7897509e967a9bb0313b585e4ab81a45d0e4cab5e31cc599f6e3/mahotas-1.4.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0238a4665d55f936c6dfb26293e7348482cf9c71bd1caec3a896bfb988b6623b", size = 1877317, upload-time = "2024-07-17T21:10:14.071Z" }, - { url = "https://files.pythonhosted.org/packages/b9/7b/3c09b1bb0c0c045a33cef7763d094a7857c7475564e223391845f176cdb2/mahotas-1.4.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a33ef7e8bd0ff08990d08274a7d7aaaf1143540983de3e036295d6668ce12cb6", size = 1798019, upload-time = "2024-07-17T21:10:17.99Z" }, - { url = "https://files.pythonhosted.org/packages/54/1a/2f6dbb52599c9da9aac6da0f60950f6b7eed54a3d38779bf0f80d41b3eb9/mahotas-1.4.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f890b79891184a4a6dcc274da847fbf54fe4b8fa8839705af677cdb63536f22", size = 5788791, upload-time = "2024-07-17T21:10:23.018Z" }, - { url = "https://files.pythonhosted.org/packages/ed/88/075d55003e28ff9964cd72b5d3c48f37b4320ab2d209010970005aac63a0/mahotas-1.4.18-cp310-cp310-win32.whl", hash = "sha256:e1804359325ebd5a08998c7d3837ea10883a66678007662e4c849013f7d084ea", size = 1712133, upload-time = "2024-07-17T21:10:25.79Z" }, - { url = "https://files.pythonhosted.org/packages/2b/3c/2ca2b24f311586f341ba254670cc320944e7d3cf1cc741ce5a622611c668/mahotas-1.4.18-cp310-cp310-win_amd64.whl", hash = "sha256:43a605408b2e9fd77f4adb0ff301bc5c096979cab06da32788fc18c3b06378db", size = 1731332, upload-time = "2024-07-17T21:10:28.215Z" }, - { url = "https://files.pythonhosted.org/packages/6c/15/fab81001a735766f8bbe7080e714b9582817bd479b915977e748199f00d9/mahotas-1.4.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:974050ee67913ac2396b4889247577f7202038dc328b50a07f83887c56ca9774", size = 1877309, upload-time = "2024-07-17T21:10:30.758Z" }, - { url = "https://files.pythonhosted.org/packages/4f/f2/3125072f76b7809bd66748b2f6872dbeb0e72f43fdd94e73a9d3df95aa4c/mahotas-1.4.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28c93bdfefd4cf271bf2b30b69c130ab3cac5d840dcd3b5ae6e7f6d3648533aa", size = 1798029, upload-time = "2024-07-17T21:10:33.063Z" }, - { url = "https://files.pythonhosted.org/packages/81/fc/691ed6d7aedaf8caa30786e88462edd84e78d2b50d320a07937e2ce41fb1/mahotas-1.4.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f4a41dd3b49bc2e5240b265b9ab35a6793c20ddcb3b392f3ba27a0940086de6", size = 5804451, upload-time = "2024-07-17T21:10:36.365Z" }, - { url = "https://files.pythonhosted.org/packages/85/45/eded44b0d6d1e4642c87eb79b6f568b8a2cbe7183dbb6aec185ea6a54786/mahotas-1.4.18-cp311-cp311-win32.whl", hash = "sha256:a4e70ead2a2bf6e8ad9a70f9c33fe0e752edeeea1fc5e8e934efcf29d90d69f2", size = 1712194, upload-time = "2024-07-17T21:10:39.565Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0c/3710525e4d3a2cb28852cb77878d8268e3e56c52cdb4018972685a11e6cd/mahotas-1.4.18-cp311-cp311-win_amd64.whl", hash = "sha256:7a9a7b2a9e3e9d9818a901232fc68a2f7bef31483150ac39acb7d56f86e0754c", size = 1731319, upload-time = "2024-07-17T21:10:41.922Z" }, + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, ] [[package]] @@ -1557,6 +1852,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/73/e4/6d6f14b2a759c622f191b2d67e9075a3f56aaccb3be4bb9bb6890030d0a0/matplotlib-3.10.8-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2", size = 8713867, upload-time = "2025-12-10T22:56:48.954Z" }, ] +[[package]] +name = "matplotlib-inline" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, +] + +[[package]] +name = "mistune" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/55/d01f0c4b45ade6536c51170b9043db8b2ec6ddf4a35c7ea3f5f559ac935b/mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a", size = 95467, upload-time = "2025-12-23T11:36:34.994Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1", size = 53598, upload-time = "2025-12-23T11:36:33.211Z" }, +] + [[package]] name = "monai" version = "1.5.2" @@ -1628,32 +1947,76 @@ wheels = [ ] [[package]] -name = "multiprocess" -version = "0.70.19" +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "dill" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a2/f2/e783ac7f2aeeed14e9e12801f22529cc7e6b7ab80928d6dcce4e9f00922d/multiprocess-0.70.19.tar.gz", hash = "sha256:952021e0e6c55a4a9fe4cd787895b86e239a40e76802a789d6305398d3975897", size = 2079989, upload-time = "2026-01-19T06:47:39.744Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9", size = 62554, upload-time = "2025-12-23T07:45:46.369Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/b6/10832f96b499690854e574360be342a282f5f7dba58eff791299ff6c0637/multiprocess-0.70.19-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:02e5c35d7d6cd2bdc89c1858867f7bde4012837411023a4696c148c1bdd7c80e", size = 135131, upload-time = "2026-01-19T06:47:20.479Z" }, - { url = "https://files.pythonhosted.org/packages/99/50/faef2d8106534b0dc4a0b772668a1a99682696ebf17d3c0f13f2ed6a656a/multiprocess-0.70.19-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:79576c02d1207ec405b00cabf2c643c36070800cca433860e14539df7818b2aa", size = 135131, upload-time = "2026-01-19T06:47:21.879Z" }, - { url = "https://files.pythonhosted.org/packages/94/b1/0b71d18b76bf423c2e8ee00b31db37d17297ab3b4db44e188692afdca628/multiprocess-0.70.19-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6b6d78d43a03b68014ca1f0b7937d965393a670c5de7c29026beb2258f2f896", size = 135134, upload-time = "2026-01-19T06:47:23.262Z" }, - { url = "https://files.pythonhosted.org/packages/7e/aa/714635c727dbfc251139226fa4eaf1b07f00dc12d9cd2eb25f931adaf873/multiprocess-0.70.19-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1bbf1b69af1cf64cd05f65337d9215b88079ec819cd0ea7bac4dab84e162efe7", size = 144743, upload-time = "2026-01-19T06:47:24.562Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e1/155f6abf5e6b5d9cef29b6d0167c180846157a4aca9b9bee1a217f67c959/multiprocess-0.70.19-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:5be9ec7f0c1c49a4f4a6fd20d5dda4aeabc2d39a50f4ad53720f1cd02b3a7c2e", size = 144738, upload-time = "2026-01-19T06:47:26.636Z" }, - { url = "https://files.pythonhosted.org/packages/af/cb/f421c2869d75750a4f32301cc20c4b63fab6376e9a75c8e5e655bdeb3d9b/multiprocess-0.70.19-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1c3dce098845a0db43b32a0b76a228ca059a668071cfeaa0f40c36c0b1585d45", size = 144741, upload-time = "2026-01-19T06:47:27.985Z" }, - { url = "https://files.pythonhosted.org/packages/e3/45/8004d1e6b9185c1a444d6b55ac5682acf9d98035e54386d967366035a03a/multiprocess-0.70.19-py310-none-any.whl", hash = "sha256:97404393419dcb2a8385910864eedf47a3cadf82c66345b44f036420eb0b5d87", size = 134948, upload-time = "2026-01-19T06:47:32.325Z" }, - { url = "https://files.pythonhosted.org/packages/86/c2/dec9722dc3474c164a0b6bcd9a7ed7da542c98af8cabce05374abab35edd/multiprocess-0.70.19-py311-none-any.whl", hash = "sha256:928851ae7973aea4ce0eaf330bbdafb2e01398a91518d5c8818802845564f45c", size = 144457, upload-time = "2026-01-19T06:47:33.711Z" }, - { url = "https://files.pythonhosted.org/packages/7e/82/69e539c4c2027f1e1697e09aaa2449243085a0edf81ae2c6341e84d769b6/multiprocess-0.70.19-py39-none-any.whl", hash = "sha256:0d4b4397ed669d371c81dcd1ef33fd384a44d6c3de1bd0ca7ac06d837720d3c5", size = 133477, upload-time = "2026-01-19T06:47:38.619Z" }, + { url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440", size = 25465, upload-time = "2025-12-23T07:45:44.51Z" }, ] [[package]] -name = "mypy-extensions" -version = "1.1.0" +name = "nbconvert" +version = "7.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/47/81f886b699450d0569f7bc551df2b1673d18df7ff25cc0c21ca36ed8a5ff/nbconvert-7.17.0.tar.gz", hash = "sha256:1b2696f1b5be12309f6c7d707c24af604b87dfaf6d950794c7b07acab96dda78", size = 862855, upload-time = "2026-01-29T16:37:48.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl", hash = "sha256:4f99a63b337b9a23504347afdab24a11faa7d86b405e5c8f9881cd313336d518", size = 261510, upload-time = "2026-01-29T16:37:46.322Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, ] [[package]] @@ -1710,18 +2073,31 @@ wheels = [ ] [[package]] -name = "nibabel" -version = "5.4.2" +name = "notebook" +version = "7.5.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "importlib-resources" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "typing-extensions" }, + { name = "jupyter-server" }, + { name = "jupyterlab" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/6d/41052c48d6f6349ca0a7c4d1f6a78464de135e6d18f5829ba2510e62184c/notebook-7.5.5.tar.gz", hash = "sha256:dc0bfab0f2372c8278c457423d3256c34154ac2cc76bf20e9925260c461013c3", size = 14169167, upload-time = "2026-03-11T16:32:51.922Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/cbd1deb9f07446241e88f8d5fecccd95b249bca0b4e5482214a4d1714c49/notebook-7.5.5-py3-none-any.whl", hash = "sha256:a7c14dbeefa6592e87f72290ca982e0c10f5bbf3786be2a600fda9da2764a2b8", size = 14578929, upload-time = "2026-03-11T16:32:48.021Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/01/3d2cc510c616bc8e27be17a063070d9126f69407961594a9ae734ea51121/nibabel-5.4.2.tar.gz", hash = "sha256:d5f4b9076a13178ae7f7acf18c8dbd503ee1c4d5c0c23b85df7be87efcbb49da", size = 4663132, upload-time = "2026-03-11T13:31:52.42Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/d7/601b6396b33536811668935faa790112266c70661be94555999be431f86f/nibabel-5.4.2-py3-none-any.whl", hash = "sha256:553482c5f1e1034fc312edf6fb7f32236c0056439845d1c29293b7e8c98d4854", size = 3300985, upload-time = "2026-03-11T13:31:50.028Z" }, + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, ] [[package]] @@ -1957,19 +2333,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/4f/4a617ee93d8208d2bcf26b2d8b9402ceaed03e3853c754940e2290fed063/ollama-0.6.1-py3-none-any.whl", hash = "sha256:fc4c984b345735c5486faeee67d8a265214a31cbb828167782dc642ce0a2bf8c", size = 14354, upload-time = "2025-11-13T23:02:16.292Z" }, ] -[[package]] -name = "omegaconf" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "antlr4-python3-runtime" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, -] - [[package]] name = "opencv-python" version = "4.11.0.86" @@ -2049,30 +2412,12 @@ wheels = [ ] [[package]] -name = "osteoid" -version = "0.6.0" +name = "overrides" +version = "7.7.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastremap" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "numpy" }, - { name = "pybind11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/e0/abbf7fe327cf560da5d222b5a9a27efab541666dcf61c3daf04fad9dd17d/osteoid-0.6.0.tar.gz", hash = "sha256:9f1db97939ee746c64dfac0b6cc980512cc193cd27cab39917852e09fd5799eb", size = 416141, upload-time = "2025-12-06T05:08:25.808Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/dc/6d8189b280fbfdc206aa05736a2a802aade10366c935b76d19d4cf9cb3e2/osteoid-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:57305dcf3ae84f998b7c35f02e04e817f8e6f7e0770bfea152e4eba35c94710c", size = 140051, upload-time = "2025-12-06T05:07:42.274Z" }, - { url = "https://files.pythonhosted.org/packages/a7/99/e208482af0331c3f0eaccbbf25975589c394b1c59243c2dac08bf5701896/osteoid-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:124310a61f0aeb53d78cd5e52c78deb8d40f9f4129fd9d7462d7e6297a260b8e", size = 124156, upload-time = "2025-12-06T05:07:44.071Z" }, - { url = "https://files.pythonhosted.org/packages/4c/98/656e999f473bfca07b298b7898094d1826d02b5c1179ece6c46cb07e5b14/osteoid-0.6.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2f2ce6900d84d937a46cbfbbfdee6fd17b429f0ff48d25575293f0b77eab6dcd", size = 145131, upload-time = "2025-12-06T05:07:45.346Z" }, - { url = "https://files.pythonhosted.org/packages/b0/58/2e3ec6630fb54ddb7b80624de69246137e9b4c524d7e02e451dc41e32240/osteoid-0.6.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99e9cda5d8aca2e076e931c28bde2513a0ff6b39849eda0a40c8e6a9282e5f36", size = 152548, upload-time = "2025-12-06T05:07:46.558Z" }, - { url = "https://files.pythonhosted.org/packages/1e/6d/08191d9f8dc9d068eac31f088a3eecb07466336d724a8ad553458de0a4c5/osteoid-0.6.0-cp310-cp310-win32.whl", hash = "sha256:a53149889da92ce18e52214a7dd6b29a8f20c14e9d955fa96c2e55b692deeeeb", size = 115941, upload-time = "2025-12-06T05:07:49.114Z" }, - { url = "https://files.pythonhosted.org/packages/28/97/896e666dd3bc38a071de21f51e6f77dcc0cbb63a818f45c71011a358fb7f/osteoid-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f96fc55039c6df54f682c90d4a2b799661cb01429e3c5463e5922ceb1f2f845a", size = 123581, upload-time = "2025-12-06T05:07:47.783Z" }, - { url = "https://files.pythonhosted.org/packages/3c/3d/c61cb66bc44a42cd08f5eb0e98f206ba3bd1476f3c436bb71ea3a1aebcb7/osteoid-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0574492d99612ee672e1b3f0eaa978ae76cf74c4ef5930785af442609122193", size = 142497, upload-time = "2025-12-06T05:07:49.949Z" }, - { url = "https://files.pythonhosted.org/packages/18/ac/8956eb1d638d18189cd2286bed4f20b73fcbe24e3885ef60ed4ad55269c5/osteoid-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:29728be4990ba55ca14700c0ffe1627d1704005149664c9d347e6a857c2b0358", size = 125398, upload-time = "2025-12-06T05:07:51.166Z" }, - { url = "https://files.pythonhosted.org/packages/8f/8e/7a005c3405310a6f535bc1dea366dacb6dca53515c9a05522aba69194a0a/osteoid-0.6.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b800d5eefb53cecbac1d1b8b461c1c33240b3e8f1d433b75e186abfe0e34c14e", size = 146040, upload-time = "2025-12-06T05:07:52.251Z" }, - { url = "https://files.pythonhosted.org/packages/6e/80/795710958f373259a521ebc78e59bad0f43de6fdbe2bd87520e13c0aea21/osteoid-0.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cdc76f6d4390400294cccfbf9f4f5d288c317b7681f70488c730ffc577e6cee4", size = 153290, upload-time = "2025-12-06T05:07:53.147Z" }, - { url = "https://files.pythonhosted.org/packages/8f/0e/267b984cdf824e6495800c635268ae08f79d92658a79bd4672925106ecfa/osteoid-0.6.0-cp311-cp311-win32.whl", hash = "sha256:74f336782032aad57facee460731e175ff253b55e11861e3df7bf4c3fde0fb0d", size = 117069, upload-time = "2025-12-06T05:07:55.158Z" }, - { url = "https://files.pythonhosted.org/packages/09/7a/79b57a34a39bf4f460a4161e64a9f8efeaca050d666967b31816a3b02971/osteoid-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:accfa55cb22f12e4abeba70bc5a252ee7f9c3de0500d4a2c3bda4ef49f329cc8", size = 124511, upload-time = "2025-12-06T05:07:54.341Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, ] [[package]] @@ -2085,27 +2430,30 @@ wheels = [ ] [[package]] -name = "passlib" -version = "1.7.4" +name = "pandocfilters" +version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844, upload-time = "2020-10-08T19:00:52.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554, upload-time = "2020-10-08T19:00:49.856Z" }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, ] [[package]] -name = "pathos" -version = "0.3.5" +name = "parso" +version = "0.8.6" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dill" }, - { name = "multiprocess" }, - { name = "pox" }, - { name = "ppft" }, +sdist = { url = "https://files.pythonhosted.org/packages/81/76/a1e769043c0c0c9fe391b702539d594731a4362334cdf4dc25d0c09761e7/parso-0.8.6.tar.gz", hash = "sha256:2b9a0332696df97d454fa67b81618fd69c35a7b90327cbe6ba5c92d2c68a7bfd", size = 401621, upload-time = "2026-02-09T15:45:24.425Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff", size = 106894, upload-time = "2026-02-09T15:45:21.391Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/32/37/0c730979d3890f8096a86af2683fac74edd4d15cb037391098dca70dcb1d/pathos-0.3.5.tar.gz", hash = "sha256:8fe041b8545c5d3880a038f866022bdebf935e5cf68f56ed3407cb7e65193a61", size = 166975, upload-time = "2026-01-20T00:06:57.848Z" } + +[[package]] +name = "passlib" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844, upload-time = "2020-10-08T19:00:52.121Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/37/44/be2146c650ee9ca4d9a770c995f5c92c1ea52292dcf618ce1a336d3146dd/pathos-0.3.5-py3-none-any.whl", hash = "sha256:c95b04103c40a16c08db69cd4b5c52624d55208beadf1348681edece809ec4f8", size = 82248, upload-time = "2026-01-20T00:06:56.291Z" }, + { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554, upload-time = "2020-10-08T19:00:49.856Z" }, ] [[package]] @@ -2117,6 +2465,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" }, ] +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + [[package]] name = "pillow" version = "12.1.0" @@ -2164,30 +2524,24 @@ wheels = [ ] [[package]] -name = "pluggy" -version = "1.6.0" +name = "prometheus-client" +version = "0.24.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/58/a794d23feb6b00fc0c72787d7e87d872a6730dd9ed7c7b3e954637d8f280/prometheus_client-0.24.1.tar.gz", hash = "sha256:7e0ced7fbbd40f7b84962d5d2ab6f17ef88a72504dcf7c0b40737b43b2a461f9", size = 85616, upload-time = "2026-01-14T15:26:26.965Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/74/c3/24a2f845e3917201628ecaba4f18bab4d18a337834c1df2a159ee9d22a42/prometheus_client-0.24.1-py3-none-any.whl", hash = "sha256:150db128af71a5c2482b36e588fc8a6b95e498750da4b17065947c16070f4055", size = 64057, upload-time = "2026-01-14T15:26:24.42Z" }, ] [[package]] -name = "pox" -version = "0.3.7" +name = "prompt-toolkit" +version = "3.0.52" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/58/4385741dea1d74fe9dfed7ff42975266634ef8000f2c8e96717079c916b1/pox-0.3.7.tar.gz", hash = "sha256:0652f6f2103fe6d4ba638beb6fa8d3e8a68fd44bcb63315c614118515bcc3afb", size = 119442, upload-time = "2026-01-19T02:09:12.573Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/ac/4d5f104edf2aae2fec85567ec1d1969010de8124c5c45514f25e14900b65/pox-0.3.7-py3-none-any.whl", hash = "sha256:82a495249d13371314c1a5b5626a115e067ef5215d49530bf5efa37fbc25b56a", size = 29402, upload-time = "2026-01-19T02:09:11.024Z" }, +dependencies = [ + { name = "wcwidth" }, ] - -[[package]] -name = "ppft" -version = "1.7.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/d2/281aa3466e948283d51b83238fb456f65e14f8ade5f8627822578cd2708f/ppft-1.7.8.tar.gz", hash = "sha256:5f696d4f397ae9b0af39b1faffb31957c51dfbc5a3815856472d4f4e872937ee", size = 136349, upload-time = "2026-01-19T03:03:13.439Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/e1/d1b380af6443e7c33aeb40617ebdc17c39dc30095235643cc518e3908203/ppft-1.7.8-py3-none-any.whl", hash = "sha256:d3e0e395215b14afc3dd5adfc032ccecfda2d4ed50dc7ded076cd1d215442843", size = 56759, upload-time = "2026-01-19T03:03:11.896Z" }, + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, ] [[package]] @@ -2260,6 +2614,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, ] +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + [[package]] name = "pyasn1" version = "0.6.2" @@ -2281,15 +2653,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, ] -[[package]] -name = "pybind11" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/98/9118a0659646f1628c592ef9bb48e0056efa6bf27c951fd12a178e0136fb/pybind11-3.0.2.tar.gz", hash = "sha256:432f01aeb68e361a3a7fc7575c2c7f497595bf640f747acd909ff238dd766e06", size = 577131, upload-time = "2026-02-17T04:46:52.556Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/c5/e98d9c51f3d5300d5e40ad9037dd6b3b60736fd02ab68dcc98c96be7592d/pybind11-3.0.2-py3-none-any.whl", hash = "sha256:f8a6500548919cc33bcd220d5f984688326f574fa97f1107f2f4fdb4c6fb019f", size = 310158, upload-time = "2026-02-17T04:46:49.91Z" }, -] - [[package]] name = "pycparser" version = "3.0" @@ -2482,24 +2845,6 @@ requires-dist = [ [package.metadata.requires-dev] dev = [{ name = "black", specifier = ">=26.1.0" }] -[[package]] -name = "pytest" -version = "9.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, - { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, -] - [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2535,6 +2880,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/c3/0bd11992072e6a1c513b16500a5d07f91a24017c5909b02c72c62d7ad024/python_jose-3.5.0-py2.py3-none-any.whl", hash = "sha256:abd1202f23d34dfad2c3d28cb8617b90acf34132c7afd60abd0b0b7d3cb55771", size = 34624, upload-time = "2025-05-28T17:31:52.802Z" }, ] +[[package]] +name = "python-json-logger" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/bf/eca6a3d43db1dae7070f70e160ab20b807627ba953663ba07928cdd3dc58/python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f", size = 17683, upload-time = "2025-10-06T04:15:18.984Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/e5/fecf13f06e5e5f67e8837d777d1bc43fac0ed2b77a676804df5c34744727/python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2", size = 15548, upload-time = "2025-10-06T04:15:17.553Z" }, +] + [[package]] name = "python-multipart" version = "0.0.20" @@ -2565,26 +2919,18 @@ wheels = [ [[package]] name = "pytorch-connectomics" -version = "2.0.0" +version = "0.1" source = { editable = "pytorch_connectomics" } dependencies = [ - { name = "connected-components-3d" }, - { name = "crackle-codec" }, { name = "cython" }, { name = "einops" }, - { name = "fastremap" }, + { name = "gputil" }, { name = "h5py" }, { name = "imageio" }, - { name = "kimimaro" }, - { name = "mahotas" }, + { name = "jupyter" }, { name = "matplotlib" }, { name = "monai" }, - { name = "nibabel" }, - { name = "numpy" }, - { name = "omegaconf" }, { name = "opencv-python" }, - { name = "psutil" }, - { name = "pytorch-lightning" }, { name = "scikit-image", version = "0.25.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "scikit-image", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, @@ -2592,77 +2938,39 @@ dependencies = [ { 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 = "tensorboard" }, - { name = "torch" }, - { name = "torchmetrics" }, - { name = "torchvision" }, { name = "tqdm" }, + { name = "yacs" }, ] [package.metadata] requires-dist = [ - { name = "black", marker = "extra == 'dev'", specifier = ">=22.0.0" }, - { name = "connected-components-3d", specifier = ">=3.0.0" }, - { name = "crackle-codec", specifier = ">=0.1.0" }, { name = "cython", specifier = ">=0.29.22" }, { name = "einops", specifier = ">=0.3.0" }, - { name = "fastremap", specifier = ">=1.10.0" }, - { name = "flake8", marker = "extra == 'dev'", specifier = ">=4.0.0" }, - { name = "gputil", marker = "extra == 'full'", specifier = ">=1.4.0" }, + { name = "gputil", specifier = ">=1.4.0" }, { name = "h5py", specifier = ">=2.10.0" }, { name = "imageio", specifier = ">=2.9.0" }, - { name = "isort", marker = "extra == 'dev'", specifier = ">=5.10.0" }, - { name = "jinja2", marker = "extra == 'docs'", specifier = ">=3.0" }, - { name = "kimimaro", specifier = ">=1.0.0" }, - { name = "mahotas", specifier = ">=1.4.0" }, + { name = "jupyter", specifier = ">=1.0" }, { name = "matplotlib", specifier = ">=3.3.0" }, { name = "monai", specifier = ">=0.9.1" }, - { name = "mypy", marker = "extra == 'dev'", specifier = ">=0.950" }, - { name = "nbsphinx", marker = "extra == 'docs'", specifier = ">=0.8.0" }, - { name = "neuroglancer", marker = "extra == 'full'", specifier = ">=1.0.0" }, - { name = "nibabel", specifier = ">=3.0.0" }, - { name = "numpy", specifier = ">=1.23.0" }, - { name = "omegaconf", specifier = ">=2.1.0" }, { name = "opencv-python", specifier = ">=4.3.0" }, - { name = "optuna", marker = "extra == 'full'", specifier = ">=2.10.0" }, - { name = "psutil", specifier = ">=5.8.0" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=6.0.0" }, - { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=3.4.0" }, - { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=3.0.0" }, - { name = "pytorch-lightning", specifier = ">=2.0.0" }, - { name = "pytorch-sphinx-theme", marker = "extra == 'docs'", specifier = ">=0.0.19" }, { name = "scikit-image", specifier = ">=0.17.2" }, { name = "scikit-learn", specifier = ">=0.23.1" }, { name = "scipy", specifier = ">=1.5" }, - { name = "sphinx", marker = "extra == 'docs'", specifier = ">=4.0.0" }, - { name = "sphinx-rtd-theme", marker = "extra == 'docs'", specifier = ">=1.0.0" }, - { name = "sphinxcontrib-katex", marker = "extra == 'docs'" }, { name = "tensorboard", specifier = ">=2.2.2" }, - { name = "tifffile", marker = "extra == 'full'", specifier = ">=2021.11.2" }, - { name = "torch", specifier = ">=1.8.0" }, - { name = "torchmetrics", specifier = ">=0.11.0" }, - { name = "torchvision", specifier = ">=0.9.0" }, { name = "tqdm", specifier = ">=4.58.0" }, - { name = "wandb", marker = "extra == 'full'", specifier = ">=0.13.0" }, + { name = "yacs", specifier = ">=0.1.8" }, ] -provides-extras = ["full", "dev", "docs"] [[package]] -name = "pytorch-lightning" -version = "2.6.1" +name = "pywinpty" +version = "3.0.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec", extra = ["http"] }, - { name = "lightning-utilities" }, - { name = "packaging" }, - { name = "pyyaml" }, - { name = "torch" }, - { name = "torchmetrics" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/ac/ebd5f6f58691cbd4f73836e43e1727f3814311b960c41f88e259606ca2b2/pytorch_lightning-2.6.1.tar.gz", hash = "sha256:ba08f8901cf226fcca473046ad9346f414e99117762dc869c76e650d5b3d7bdc", size = 665563, upload-time = "2026-01-30T14:59:11.636Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/54/37c7370ba91f579235049dc26cd2c5e657d2a943e01820844ffc81f32176/pywinpty-3.0.3.tar.gz", hash = "sha256:523441dc34d231fb361b4b00f8c99d3f16de02f5005fd544a0183112bcc22412", size = 31309, upload-time = "2026-02-04T21:51:09.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/93/c8c361bf0a2fe50f828f32def460e8b8a14b93955d3fd302b1a9b63b19e4/pytorch_lightning-2.6.1-py3-none-any.whl", hash = "sha256:1f8118567ec829e3055f16cf1aa320883a86a47c836951bfd9dcfa34ec7ffd59", size = 857273, upload-time = "2026-01-30T14:59:10.141Z" }, + { url = "https://files.pythonhosted.org/packages/62/28/a652709bd76ca7533cd1c443b03add9f5051fdf71bc6bdb8801dddd4e7a3/pywinpty-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:ff05f12d775b142b11c6fe085129bdd759b61cf7d41da6c745e78e3a1ef5bf40", size = 2114320, upload-time = "2026-02-04T21:53:50.972Z" }, + { url = "https://files.pythonhosted.org/packages/b2/13/a0181cc5c2d5635d3dbc3802b97bc8e3ad4fa7502ccef576651a5e08e54c/pywinpty-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:340ccacb4d74278a631923794ccd758471cfc8eeeeee4610b280420a17ad1e82", size = 235670, upload-time = "2026-02-04T21:50:20.324Z" }, + { url = "https://files.pythonhosted.org/packages/79/c3/3e75075c7f71735f22b66fab0481f2c98e3a4d58cba55cb50ba29114bcf6/pywinpty-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:dff25a9a6435f527d7c65608a7e62783fc12076e7d44487a4911ee91be5a8ac8", size = 2114430, upload-time = "2026-02-04T21:54:19.485Z" }, + { url = "https://files.pythonhosted.org/packages/8d/1e/8a54166a8c5e4f5cb516514bdf4090be4d51a71e8d9f6d98c0aa00fe45d4/pywinpty-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:fbc1e230e5b193eef4431cba3f39996a288f9958f9c9f092c8a961d930ee8f68", size = 236191, upload-time = "2026-02-04T21:50:36.239Z" }, ] [[package]] @@ -2691,6 +2999,71 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, ] +[[package]] +name = "pyzmq" +version = "27.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/b9/52aa9ec2867528b54f1e60846728d8b4d84726630874fee3a91e66c7df81/pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4", size = 1329850, upload-time = "2025-09-08T23:07:26.274Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/5653e7b7425b169f994835a2b2abf9486264401fdef18df91ddae47ce2cc/pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556", size = 906380, upload-time = "2025-09-08T23:07:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/73/78/7d713284dbe022f6440e391bd1f3c48d9185673878034cfb3939cdf333b2/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b", size = 666421, upload-time = "2025-09-08T23:07:31.263Z" }, + { url = "https://files.pythonhosted.org/packages/30/76/8f099f9d6482450428b17c4d6b241281af7ce6a9de8149ca8c1c649f6792/pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e", size = 854149, upload-time = "2025-09-08T23:07:33.17Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/37fbfff06c68016019043897e4c969ceab18bde46cd2aca89821fcf4fb2e/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526", size = 1655070, upload-time = "2025-09-08T23:07:35.205Z" }, + { url = "https://files.pythonhosted.org/packages/47/14/7254be73f7a8edc3587609554fcaa7bfd30649bf89cd260e4487ca70fdaa/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1", size = 2033441, upload-time = "2025-09-08T23:07:37.432Z" }, + { url = "https://files.pythonhosted.org/packages/22/dc/49f2be26c6f86f347e796a4d99b19167fc94503f0af3fd010ad262158822/pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386", size = 1891529, upload-time = "2025-09-08T23:07:39.047Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3e/154fb963ae25be70c0064ce97776c937ecc7d8b0259f22858154a9999769/pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda", size = 567276, upload-time = "2025-09-08T23:07:40.695Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/f4ab56c8c595abcb26b2be5fd9fa9e6899c1e5ad54964e93ae8bb35482be/pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f", size = 632208, upload-time = "2025-09-08T23:07:42.298Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e3/be2cc7ab8332bdac0522fdb64c17b1b6241a795bee02e0196636ec5beb79/pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32", size = 559766, upload-time = "2025-09-08T23:07:43.869Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/f3/81/a65e71c1552f74dec9dff91d95bafb6e0d33338a8dfefbc88aa562a20c92/pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6", size = 836266, upload-time = "2025-09-08T23:09:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/58/ed/0202ca350f4f2b69faa95c6d931e3c05c3a397c184cacb84cb4f8f42f287/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90", size = 800206, upload-time = "2025-09-08T23:09:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/47/42/1ff831fa87fe8f0a840ddb399054ca0009605d820e2b44ea43114f5459f4/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62", size = 567747, upload-time = "2025-09-08T23:09:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/d1/db/5c4d6807434751e3f21231bee98109aa57b9b9b55e058e450d0aef59b70f/pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74", size = 747371, upload-time = "2025-09-08T23:09:45.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/af/78ce193dbf03567eb8c0dc30e3df2b9e56f12a670bf7eb20f9fb532c7e8a/pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba", size = 544862, upload-time = "2025-09-08T23:09:47.448Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + [[package]] name = "requests" version = "2.32.5" @@ -2718,6 +3091,88 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, ] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + [[package]] name = "rsa" version = "4.9.1" @@ -2908,6 +3363,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6c/4a/465f96d42c6f33ad324a40049dfd63269891db9324aa66c4a1c108c6f994/scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379", size = 24370427, upload-time = "2026-01-10T21:25:20.514Z" }, ] +[[package]] +name = "send2trash" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/f0/184b4b5f8d00f2a92cf96eec8967a3d550b52cf94362dad1100df9e48d57/send2trash-2.1.0.tar.gz", hash = "sha256:1c72b39f09457db3c05ce1d19158c2cbef4c32b8bedd02c155e49282b7ea7459", size = 17255, upload-time = "2026-01-14T06:27:36.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/78/504fdd027da3b84ff1aecd9f6957e65f35134534ccc6da8628eb71e76d3f/send2trash-2.1.0-py3-none-any.whl", hash = "sha256:0da2f112e6d6bb22de6aa6daa7e144831a4febf2a87261451c4ad849fe9a873c", size = 17610, upload-time = "2026-01-14T06:27:35.218Z" }, +] + [[package]] name = "setuptools" version = "80.10.2" @@ -2926,6 +3390,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "soupsieve" +version = "2.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, +] + [[package]] name = "sqlalchemy" version = "2.0.46" @@ -2953,6 +3426,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl", hash = "sha256:f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e", size = 1937882, upload-time = "2026-01-21T18:22:10.456Z" }, ] +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + [[package]] name = "starlette" version = "0.48.0" @@ -3017,6 +3504,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/73/c6/825dab04195756cf8ff2e12698f22513b3db2f64925bdd41671bfb33aaa5/tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:ef687163c24185ae9754ed5650eb5bc4d84ff257aabdc33f0cc6f74d8ba54530", size = 6590363, upload-time = "2023-10-23T21:23:35.583Z" }, ] +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "(os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + [[package]] name = "threadpoolctl" version = "3.6.0" @@ -3060,6 +3561,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/09/19/529b28ca338c5a88315e71e672badc85eef89460c248c4164f6ce058f8c7/tifffile-2026.1.28-py3-none-any.whl", hash = "sha256:45b08a19cf603dd99952eff54a61519626a1912e4e2a4d355f05938fe4a6e9fd", size = 233011, upload-time = "2026-01-29T05:17:23.078Z" }, ] +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + [[package]] name = "tomli" version = "2.4.0" @@ -3123,21 +3636,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/61/d8/15b9d9d3a6b0c01b883787bd056acbe5cc321090d4b216d3ea89a8fcfdf3/torch-2.10.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:b7bd80f3477b830dd166c707c5b0b82a898e7b16f59a7d9d42778dd058272e8b", size = 79423461, upload-time = "2026-01-21T16:24:50.266Z" }, ] -[[package]] -name = "torchmetrics" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "lightning-utilities" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "torch" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/81/34/39b8b749333db56c0585d7a11fa62a283c087bb1dfc897d69fb8cedbefb1/torchmetrics-1.9.0.tar.gz", hash = "sha256:a488609948600df52d3db4fcdab02e62aab2a85ef34da67037dc3e65b8512faa", size = 581765, upload-time = "2026-03-09T17:41:22.443Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/a2/c7f6ebf546f8f644edf0f999aa98ece106986a77a7b922316bf6414ff825/torchmetrics-1.9.0-py3-none-any.whl", hash = "sha256:bfdcbff3dd1d96b3374bb2496eb39f23c4b28b8a845b6a18c313688e0d2d9ca1", size = 983384, upload-time = "2026-03-09T17:41:19.756Z" }, -] - [[package]] name = "torchvision" version = "0.25.0" @@ -3189,6 +3687,15 @@ 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" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + [[package]] name = "triton" version = "3.6.0" @@ -3232,6 +3739,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, ] +[[package]] +name = "tzdata" +version = "2025.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + [[package]] name = "urllib3" version = "2.6.3" @@ -3284,6 +3809,42 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" }, ] +[[package]] +name = "wcwidth" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, +] + +[[package]] +name = "webcolors" +version = "25.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/7a/eb316761ec35664ea5174709a68bbd3389de60d4a1ebab8808bfc264ed67/webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf", size = 53491, upload-time = "2025-10-31T07:51:03.977Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d", size = 14905, upload-time = "2025-10-31T07:51:01.778Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + [[package]] name = "werkzeug" version = "3.1.5" @@ -3297,23 +3858,12 @@ wheels = [ ] [[package]] -name = "xs3d" -version = "1.13.0" +name = "widgetsnbextension" +version = "4.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8f/5e/2f195c8d5e52f0dfebce62ae840ab73eae53b8edc5fe3b677b8f4d595a04/xs3d-1.13.0.tar.gz", hash = "sha256:2beb1d83ba277a1c29ff70906dffb2e171c163de5411cc8dfae3147492698ba9", size = 41784, upload-time = "2025-10-17T02:28:23.614Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/f4/c67440c7fb409a71b7404b7aefcd7569a9c0d6bd071299bf4198ae7a5d95/widgetsnbextension-4.0.15.tar.gz", hash = "sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9", size = 1097402, upload-time = "2025-11-01T21:15:55.178Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/fa/54e32584cfa6b421c90f595f9d575699bb59dd6e037c752da4a1114945ca/xs3d-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:714152a8741beac991d5c43b2473655f83f5301467d212e01fa7c0a696e5bf37", size = 191574, upload-time = "2025-10-17T02:27:32.074Z" }, - { url = "https://files.pythonhosted.org/packages/e7/7b/cdd2a9ff99079ce54f20c7720b7dea6d909977de13f3814e236d36997225/xs3d-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:898cb65eef5b9d0954996d8b7a7cfc657b15bda4e3128aa1abb45bc1fbf762d3", size = 162167, upload-time = "2025-10-17T02:27:33.56Z" }, - { url = "https://files.pythonhosted.org/packages/16/53/9177cd7ad2d5cd4e8c6c9b02f23e31fa176daa68d1177001646825a979f9/xs3d-1.13.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c2ffd9bed693f8373d78b796b8897c31775d3ffb73ba016dcb3f6880a8f9a3b", size = 184594, upload-time = "2025-10-17T02:27:35.08Z" }, - { url = "https://files.pythonhosted.org/packages/a4/4b/42af8af2a5d9d052e357248c4381115ff64bdf77f8f24cfedf19bd904183/xs3d-1.13.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:613ea62c65413997c1274b15c72fddfe71154f63284c4a80d9c1e640cda40245", size = 222641, upload-time = "2025-10-17T02:27:36.433Z" }, - { url = "https://files.pythonhosted.org/packages/20/7a/4223abee4e3a249d935c3dcee0ee7abd829253afaa64587873faa20c9cfc/xs3d-1.13.0-cp310-cp310-win32.whl", hash = "sha256:4c1853077902dd2940d1b298fe16ddd1e61476d028007351d071aed1ec4d9fec", size = 132360, upload-time = "2025-10-17T02:27:38.692Z" }, - { url = "https://files.pythonhosted.org/packages/7c/67/a42c33cffc5dc9e1708c9c140e5b6a51bb394c787b49e3210678e048795e/xs3d-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:de9254fd7d2340bd2e7f61c8f797d6fff5d869a3dea491ada2a980cba9f6abd9", size = 141546, upload-time = "2025-10-17T02:27:37.736Z" }, - { url = "https://files.pythonhosted.org/packages/82/41/bade76ea52e1696856943da04ea28906cd59e2104ab27cc0f7a20ff64870/xs3d-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73c110c19bbac2d32f9e0ad2d08557743e7865fb473d5ec78702677115dadfe2", size = 193100, upload-time = "2025-10-17T02:27:39.912Z" }, - { url = "https://files.pythonhosted.org/packages/54/a0/cde6421af76af30897cf160c1966d3e7fec714784d9387519b3cda7ee2d8/xs3d-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ca5a9519c2b78ca24632e5bbb53387f177ef2d62b2b377f0c86efff32c8f513", size = 163519, upload-time = "2025-10-17T02:27:41.226Z" }, - { url = "https://files.pythonhosted.org/packages/2d/95/1b17a69245df623c6078bff74b20a6b2c9297070467477068300b85f9168/xs3d-1.13.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a75e38a31aed8b347b1b6c3272558bfb67716f2a98dd3795f9d4bba1b86fc1b7", size = 185417, upload-time = "2025-10-17T02:27:42.152Z" }, - { url = "https://files.pythonhosted.org/packages/ed/75/da5699ebb74ea8916fdd5195336ae08c78eee237382c465a9b9d330971b7/xs3d-1.13.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c77147a4086594be98fc1aa65d471c6c484b484719cea9e5505f5cc5a9a48ce8", size = 224191, upload-time = "2025-10-17T02:27:43.399Z" }, - { url = "https://files.pythonhosted.org/packages/72/c8/97b43f69c1b8028bd28ade1649281a0a3bd5d72d6c24175510167b2b2d03/xs3d-1.13.0-cp311-cp311-win32.whl", hash = "sha256:d8a8b1cffeeb5bf78993d247a24dbb3f9f6662479979bb265dbda120c21462f8", size = 133351, upload-time = "2025-10-17T02:27:45.398Z" }, - { url = "https://files.pythonhosted.org/packages/26/94/3416e98d81d2bdd1b3f5c8ad6399c98f1a34eb349b61c523bce8a28569ac/xs3d-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb053f6ee6159f9bfb9d20ba5f828feb7c73558fb0c4dd542f5089fe42f0b74c", size = 142319, upload-time = "2025-10-17T02:27:44.511Z" }, + { url = "https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl", hash = "sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366", size = 2196503, upload-time = "2025-11-01T21:15:53.565Z" }, ] [[package]] @@ -3359,6 +3909,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/d9/8d95e906764a386a3d3b596f3c68bb63687dfca806373509f51ce8eea81f/xxhash-3.6.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:15e0dac10eb9309508bfc41f7f9deaa7755c69e35af835db9cb10751adebc35d", size = 31565, upload-time = "2025-10-02T14:37:06.966Z" }, ] +[[package]] +name = "yacs" +version = "0.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/3e/4a45cb0738da6565f134c01d82ba291c746551b5bc82e781ec876eb20909/yacs-0.1.8.tar.gz", hash = "sha256:efc4c732942b3103bea904ee89af98bcd27d01f0ac12d8d4d369f1e7a2914384", size = 11100, upload-time = "2020-08-10T16:37:47.755Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/4f/fe9a4d472aa867878ce3bb7efb16654c5d63672b86dc0e6e953a67018433/yacs-0.1.8-py3-none-any.whl", hash = "sha256:99f893e30497a4b66842821bac316386f7bd5c4f47ad35c9073ef089aa33af32", size = 14747, upload-time = "2020-08-10T16:37:46.4Z" }, +] + [[package]] name = "yarl" version = "1.22.0"