aignostics 0.2.64__tar.gz → 0.2.68__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aignostics-0.2.64 → aignostics-0.2.68}/PKG-INFO +6 -6
- {aignostics-0.2.64 → aignostics-0.2.68}/examples/notebook.py +1 -1
- {aignostics-0.2.64 → aignostics-0.2.68}/pyproject.toml +13 -12
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/_gui.py +38 -35
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/_service.py +8 -4
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/cli.py +9 -2
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/gui/_frame.py +1 -2
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_authentication.py +2 -3
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_cli.py +21 -2
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/_gui.py +12 -3
- {aignostics-0.2.64 → aignostics-0.2.68}/.gitignore +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/LICENSE +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/README.md +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/.openapi-generator/FILES +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/.openapi-generator/VERSION +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/api/public_api.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/api_client.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/api_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/configuration.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/exceptions.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/application_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/application_run_status.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/application_version_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/http_validation_error.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/input_artifact_creation_request.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/input_artifact_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/item_creation_request.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/item_result_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/item_status.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/output_artifact_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/output_artifact_result_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/output_artifact_scope.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/payload_input_artifact.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/payload_item.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/payload_output_artifact.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/run_creation_request.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/run_creation_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/run_read_response.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/transfer_urls.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/user_payload.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/validation_error.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/validation_error_loc_inner.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/rest.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/docs/PublicApi.md +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-latest/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-latest/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.jquery +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/dist_native_all/dist_native-windows-latest/aignostics/_internal/openslide_python-1.4.2.dist-info/licenses/examples/deepzoom/licenses/LICENSE.openseadragon-scalebar +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/examples/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/examples/notebook.ipynb +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/examples/script.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/_frame.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/_page_application_describe.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/_page_application_run_describe.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/_page_builder.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/_page_index.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/_utils.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/.gitignore +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/canceled.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/done.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/empty.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/error.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/error_alt.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/home-card-1.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/home-card-2.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/home-card-3.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/home-card-4.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/home-card-5.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/image-not-found.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/pending.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/pending_alt.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/ruo.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_gui/assets/ruo.svg +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_settings.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/application/_utils.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/_settings.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/assets/Google-Cloud-logo.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/bucket/assets/Google-Cloud-logo.svg +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/constants.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/dataset/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/dataset/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/dataset/_gui.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/dataset/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/dataset/assets/NIH-IDC-logo.svg +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/gui/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/gui/_theme.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/gui/assets/cabin-v27-latin-regular.woff2 +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/gui/assets/logo.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/notebook/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/notebook/_gui.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/notebook/_notebook.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/notebook/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/notebook/assets/python.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_client.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_constants.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_messages.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_settings.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/_utils.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/resources/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/resources/applications.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/resources/runs.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/platform/resources/utils.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/_gui.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/_settings.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/assets/download.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/assets/microscope.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/assets/update.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/scripts/add.groovy +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/scripts/annotate.groovy +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/scripts/inspect.groovy +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/qupath/scripts/test.groovy +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/_exceptions.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/_gui.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/_settings.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/system/assets/system.lottie +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/third_party/bottle.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/third_party/idc_index.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_console.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_constants.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_di.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_fs.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_gui.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_health.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_log.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_logfire.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_notebook.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_process.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_sentry.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/_settings.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/utils/boot.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/__init__.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/_cli.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/_openslide_handler.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/_pydicom_handler.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/_service.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/_utils.py +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics/wsi/assets/fallback.png +0 -0
- {aignostics-0.2.64 → aignostics-0.2.68}/src/aignostics.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aignostics
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.68
|
|
4
4
|
Summary: 🔬 Python SDK providing access to the Aignostics Platform. Includes Aignostics Launchpad (Desktop Application), Aignostics CLI (Command-Line Interface), example notebooks, and Aignostics Client Library.
|
|
5
5
|
Project-URL: Homepage, https://aignostics.readthedocs.io/en/latest/
|
|
6
6
|
Project-URL: Documentation, https://aignostics.readthedocs.io/en/latest/
|
|
@@ -50,12 +50,12 @@ Classifier: Typing :: Typed
|
|
|
50
50
|
Requires-Python: <4.0,>=3.11
|
|
51
51
|
Requires-Dist: appdirs>=1.4.4
|
|
52
52
|
Requires-Dist: auth0-python>=4.10.0
|
|
53
|
-
Requires-Dist: boto3>=1.38.
|
|
53
|
+
Requires-Dist: boto3>=1.38.39
|
|
54
54
|
Requires-Dist: dicom-validator>=0.7.1
|
|
55
55
|
Requires-Dist: dicomweb-client[gcp]>=0.59.2
|
|
56
56
|
Requires-Dist: duckdb<=1.4.0,>=0.10.0
|
|
57
57
|
Requires-Dist: fastapi[all,standard]>=0.115.13
|
|
58
|
-
Requires-Dist: google-cloud-storage>=
|
|
58
|
+
Requires-Dist: google-cloud-storage>=3.1.1
|
|
59
59
|
Requires-Dist: google-crc32c>=1.7.1
|
|
60
60
|
Requires-Dist: highdicom>=0.25.1
|
|
61
61
|
Requires-Dist: httpx>=0.28.1
|
|
@@ -64,7 +64,7 @@ Requires-Dist: idc-index-data==21.0.0
|
|
|
64
64
|
Requires-Dist: ijson>=3.4.0
|
|
65
65
|
Requires-Dist: jsf>=0.11.2
|
|
66
66
|
Requires-Dist: jsonschema>=4.24.0
|
|
67
|
-
Requires-Dist: logfire[system-metrics]>=3.21.
|
|
67
|
+
Requires-Dist: logfire[system-metrics]>=3.21.1
|
|
68
68
|
Requires-Dist: nicegui[native]>=2.20.0
|
|
69
69
|
Requires-Dist: openslide-bin>=4.0.0.8
|
|
70
70
|
Requires-Dist: openslide-python>=1.4.2
|
|
@@ -95,13 +95,13 @@ Requires-Dist: show-in-file-manager>=1.1.5
|
|
|
95
95
|
Requires-Dist: tqdm>=4.67.1
|
|
96
96
|
Requires-Dist: typer>=0.16.0
|
|
97
97
|
Requires-Dist: uptime>=3.0.1
|
|
98
|
-
Requires-Dist: urllib3>=2.
|
|
98
|
+
Requires-Dist: urllib3>=2.5.0
|
|
99
99
|
Requires-Dist: wsidicom>=0.27.1
|
|
100
100
|
Provides-Extra: jupyter
|
|
101
101
|
Requires-Dist: jupyter>=1.1.1; extra == 'jupyter'
|
|
102
102
|
Provides-Extra: marimo
|
|
103
103
|
Requires-Dist: cloudpathlib>=0.21.1; extra == 'marimo'
|
|
104
|
-
Requires-Dist: marimo>=0.
|
|
104
|
+
Requires-Dist: marimo>=0.14.0; extra == 'marimo'
|
|
105
105
|
Requires-Dist: matplotlib>=3.10.3; extra == 'marimo'
|
|
106
106
|
Requires-Dist: shapely>=2.1.0; extra == 'marimo'
|
|
107
107
|
Provides-Extra: qupath
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aignostics"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.68"
|
|
4
4
|
description = "🔬 Python SDK providing access to the Aignostics Platform. Includes Aignostics Launchpad (Desktop Application), Aignostics CLI (Command-Line Interface), example notebooks, and Aignostics Client Library."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -75,7 +75,7 @@ requires-python = ">=3.11, <4.0"
|
|
|
75
75
|
dependencies = [
|
|
76
76
|
# From Template
|
|
77
77
|
"fastapi[standard,all]>=0.115.13",
|
|
78
|
-
"logfire[system-metrics]>=3.21.
|
|
78
|
+
"logfire[system-metrics]>=3.21.1",
|
|
79
79
|
"nicegui[native]>=2.20.0",
|
|
80
80
|
"opentelemetry-instrumentation-fastapi>=0.53b0",
|
|
81
81
|
"opentelemetry-instrumentation-httpx>=0.53b0",
|
|
@@ -94,11 +94,11 @@ dependencies = [
|
|
|
94
94
|
# Custom
|
|
95
95
|
"appdirs>=1.4.4",
|
|
96
96
|
"auth0-python>=4.10.0",
|
|
97
|
-
"boto3>=1.38.
|
|
97
|
+
"boto3>=1.38.39",
|
|
98
98
|
"dicom-validator>=0.7.1",
|
|
99
99
|
"dicomweb-client[gcp]>=0.59.2",
|
|
100
100
|
"duckdb>=0.10.0,<=1.4.0",
|
|
101
|
-
"google-cloud-storage>=
|
|
101
|
+
"google-cloud-storage>=3.1.1",
|
|
102
102
|
"google-crc32c>=1.7.1",
|
|
103
103
|
"highdicom>=0.25.1",
|
|
104
104
|
"httpx>=0.28.1",
|
|
@@ -124,7 +124,7 @@ dependencies = [
|
|
|
124
124
|
"shapely>=2.1.1",
|
|
125
125
|
"show-in-file-manager>=1.1.5",
|
|
126
126
|
"tqdm>=4.67.1",
|
|
127
|
-
"urllib3>=2.
|
|
127
|
+
"urllib3>=2.5.0",
|
|
128
128
|
"wsidicom>=0.27.1",
|
|
129
129
|
]
|
|
130
130
|
|
|
@@ -132,7 +132,7 @@ dependencies = [
|
|
|
132
132
|
jupyter = ["jupyter>=1.1.1"]
|
|
133
133
|
marimo = [
|
|
134
134
|
"cloudpathlib>=0.21.1",
|
|
135
|
-
"marimo>=0.
|
|
135
|
+
"marimo>=0.14.0",
|
|
136
136
|
"matplotlib>=3.10.3",
|
|
137
137
|
"shapely>=2.1.0",
|
|
138
138
|
]
|
|
@@ -153,10 +153,10 @@ dev = [
|
|
|
153
153
|
"pip-licenses @ git+https://github.com/neXenio/pip-licenses.git@master", # https://github.com/raimon49/pip-licenses/pull/224
|
|
154
154
|
"pre-commit>=4.1.0",
|
|
155
155
|
"pyinstaller>=6.14.0",
|
|
156
|
-
"pyright>=1.1.
|
|
157
|
-
"pytest>=8.4.
|
|
156
|
+
"pyright>=1.1.402",
|
|
157
|
+
"pytest>=8.4.1",
|
|
158
158
|
"pytest-asyncio>=1.0.0",
|
|
159
|
-
"pytest-cov>=6.
|
|
159
|
+
"pytest-cov>=6.2.1",
|
|
160
160
|
"pytest-docker>=3.2.2",
|
|
161
161
|
"pytest-env>=1.1.5",
|
|
162
162
|
"pytest-md-report>=0.7.0",
|
|
@@ -167,7 +167,7 @@ dev = [
|
|
|
167
167
|
"pytest-timeout>=2.4.0",
|
|
168
168
|
"pytest-watcher>=0.4.3",
|
|
169
169
|
"pytest-xdist[psutil]>=3.7.0",
|
|
170
|
-
"ruff>=0.
|
|
170
|
+
"ruff>=0.12.0",
|
|
171
171
|
"scalene>=1.5.51",
|
|
172
172
|
"sphinx>=8.2.3",
|
|
173
173
|
"sphinx-autobuild>=2024.10.3",
|
|
@@ -182,7 +182,7 @@ dev = [
|
|
|
182
182
|
"swagger-plugin-for-sphinx>=5.1.0",
|
|
183
183
|
"tomli>=2.1.0",
|
|
184
184
|
"types-pyyaml>=6.0.12.20250516",
|
|
185
|
-
"types-requests>=2.32.
|
|
185
|
+
"types-requests>=2.32.4.20250611",
|
|
186
186
|
"watchdog>=6.0.0",
|
|
187
187
|
]
|
|
188
188
|
|
|
@@ -215,6 +215,7 @@ override-dependencies = [ # https://github.com/astral-sh/uv/issues/4422
|
|
|
215
215
|
"h11>=0.16.0", # CVE-2025-43859
|
|
216
216
|
"tornado>=6.5.0", # CVE-2025-47287
|
|
217
217
|
"jupyter-core>=5.8.1", # CVE-2025-30167
|
|
218
|
+
"urllib3>=2.5.0", # CVE-2025-50181, CVE-2025-50182
|
|
218
219
|
]
|
|
219
220
|
|
|
220
221
|
[tool.ruff]
|
|
@@ -352,7 +353,7 @@ source = ["src/"]
|
|
|
352
353
|
|
|
353
354
|
|
|
354
355
|
[tool.bumpversion]
|
|
355
|
-
current_version = "0.2.
|
|
356
|
+
current_version = "0.2.68"
|
|
356
357
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
357
358
|
serialize = ["{major}.{minor}.{patch}"]
|
|
358
359
|
search = "{current_version}"
|
|
@@ -299,7 +299,7 @@ class PageBuilder(BasePageBuilder):
|
|
|
299
299
|
return
|
|
300
300
|
|
|
301
301
|
bucket_form.destination = get_user_data_directory("datasets/idc")
|
|
302
|
-
bucket_form.destination_label.set_text(f"
|
|
302
|
+
bucket_form.destination_label.set_text(f"Will download to {bucket_form.destination!s}")
|
|
303
303
|
await _update_button_states()
|
|
304
304
|
|
|
305
305
|
async def _select_destination() -> None:
|
|
@@ -323,7 +323,7 @@ class PageBuilder(BasePageBuilder):
|
|
|
323
323
|
)
|
|
324
324
|
else:
|
|
325
325
|
bucket_form.destination = path
|
|
326
|
-
bucket_form.destination_label.set_text(f"
|
|
326
|
+
bucket_form.destination_label.set_text(f"Will download to {bucket_form.destination!s}")
|
|
327
327
|
bucket_form.destination_open_button.enable()
|
|
328
328
|
ui.notify(f"You chose directory {bucket_form.destination}.", type="info")
|
|
329
329
|
else:
|
|
@@ -338,29 +338,44 @@ class PageBuilder(BasePageBuilder):
|
|
|
338
338
|
show_in_file_manager(str(bucket_form.destination))
|
|
339
339
|
|
|
340
340
|
with ui.row().classes("w-full gap-4"):
|
|
341
|
-
|
|
342
|
-
ui.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
341
|
+
with ui.column().classes("w-1/2"):
|
|
342
|
+
with ui.row().classes("w-full"):
|
|
343
|
+
bucket_form.download_button = (
|
|
344
|
+
ui.button(
|
|
345
|
+
"Download",
|
|
346
|
+
icon="download",
|
|
347
|
+
on_click=_download_selected,
|
|
348
|
+
)
|
|
349
|
+
.mark("BUTTON_DOWNLOAD_OBJECTS")
|
|
350
|
+
.props("color=primary")
|
|
351
|
+
)
|
|
352
|
+
bucket_form.download_button.disable()
|
|
353
|
+
|
|
354
|
+
ui.space()
|
|
355
|
+
|
|
356
|
+
with ui.button("Data", on_click=_select_data, icon="folder_special", color="purple-400").mark(
|
|
357
|
+
"BUTTON_DOWNLOAD_DESTINATION_DATA"
|
|
358
|
+
):
|
|
359
|
+
ui.tooltip("Use Launchpad datasets directory")
|
|
360
|
+
|
|
361
|
+
with ui.button("Custom", on_click=_select_destination, icon="folder").mark(
|
|
362
|
+
"BUTTON_DOWNLOAD_DESTINATION"
|
|
363
|
+
):
|
|
364
|
+
ui.tooltip("Select a custom directory")
|
|
365
|
+
with ui.row(align_items="center").classes("w-full"):
|
|
366
|
+
bucket_form.destination_label = ui.label(
|
|
367
|
+
MESSAGE_NO_DOWNLOAD_FOLDER_SELECTED
|
|
368
|
+
if bucket_form.destination is None
|
|
369
|
+
else str(f"Will download to {bucket_form.destination}")
|
|
370
|
+
)
|
|
371
|
+
ui.space()
|
|
372
|
+
bucket_form.destination_open_button = ui.button(
|
|
373
|
+
icon="folder_open", on_click=_open_destination, color="secondary"
|
|
374
|
+
)
|
|
375
|
+
bucket_form.destination_open_button.mark("BUTTON_OPEN_DESTINATION").disable()
|
|
362
376
|
|
|
363
377
|
ui.space()
|
|
378
|
+
|
|
364
379
|
bucket_form.delete_button = (
|
|
365
380
|
ui.button(
|
|
366
381
|
"Delete",
|
|
@@ -373,18 +388,6 @@ class PageBuilder(BasePageBuilder):
|
|
|
373
388
|
)
|
|
374
389
|
bucket_form.delete_button.disable()
|
|
375
390
|
|
|
376
|
-
with ui.row(align_items="center").classes("w-2/5"):
|
|
377
|
-
ui.space()
|
|
378
|
-
bucket_form.destination_label = ui.label(
|
|
379
|
-
MESSAGE_NO_DOWNLOAD_FOLDER_SELECTED
|
|
380
|
-
if bucket_form.destination is None
|
|
381
|
-
else str(f"Download to {bucket_form.destination}")
|
|
382
|
-
).classes("max-w-72")
|
|
383
|
-
bucket_form.destination_open_button = ui.button(
|
|
384
|
-
icon="folder_open", on_click=_open_destination, color="secondary"
|
|
385
|
-
)
|
|
386
|
-
bucket_form.destination_open_button.mark("BUTTON_OPEN_DESTINATION").disable()
|
|
387
|
-
|
|
388
391
|
# Progress card for downloads (initially hidden)
|
|
389
392
|
with ui.card().classes("w-full") as progress_card:
|
|
390
393
|
bucket_form.download_progress_card = progress_card
|
|
@@ -4,14 +4,15 @@ import hashlib
|
|
|
4
4
|
import re
|
|
5
5
|
from collections.abc import Callable, Generator
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Any, cast
|
|
7
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
8
8
|
|
|
9
9
|
import humanize
|
|
10
10
|
import requests
|
|
11
|
-
from botocore.client import BaseClient, Config
|
|
12
|
-
from botocore.exceptions import ClientError
|
|
13
11
|
from pydantic import BaseModel, computed_field
|
|
14
12
|
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from botocore.client import BaseClient
|
|
15
|
+
|
|
15
16
|
from aignostics.utils import UNHIDE_SENSITIVE_INFO, BaseService, Health, get_logger, get_user_data_directory
|
|
16
17
|
|
|
17
18
|
from ._settings import Settings
|
|
@@ -111,7 +112,7 @@ class Service(BaseService):
|
|
|
111
112
|
components={},
|
|
112
113
|
)
|
|
113
114
|
|
|
114
|
-
def _get_s3_client(self, endpoint_url: str = ENDPOINT_URL_DEFAULT) -> BaseClient:
|
|
115
|
+
def _get_s3_client(self, endpoint_url: str = ENDPOINT_URL_DEFAULT) -> "BaseClient":
|
|
115
116
|
"""Get a Boto3 S3 client instance for cloud bucket on Aignostics Platform.
|
|
116
117
|
|
|
117
118
|
Args:
|
|
@@ -121,6 +122,7 @@ class Service(BaseService):
|
|
|
121
122
|
BaseClient: A Boto3 S3 client instance.
|
|
122
123
|
"""
|
|
123
124
|
from boto3 import Session # noqa: PLC0415
|
|
125
|
+
from botocore.client import Config # noqa: PLC0415
|
|
124
126
|
|
|
125
127
|
# https://www.kmp.tw/post/accessgcsusepythonboto3/
|
|
126
128
|
session = Session(
|
|
@@ -599,6 +601,8 @@ class Service(BaseService):
|
|
|
599
601
|
Raises:
|
|
600
602
|
ValueError: If any provided regex pattern is invalid.
|
|
601
603
|
"""
|
|
604
|
+
from botocore.exceptions import ClientError # noqa: PLC0415
|
|
605
|
+
|
|
602
606
|
matched_objects = self.find(what, what_is_key=what_is_key, detail=False)
|
|
603
607
|
object_keys_to_delete = [obj for obj in matched_objects if isinstance(obj, str)]
|
|
604
608
|
|
|
@@ -7,14 +7,20 @@ from pathlib import Path
|
|
|
7
7
|
import typer
|
|
8
8
|
|
|
9
9
|
from .constants import MODULES_TO_INSTRUMENT, NOTEBOOK_DEFAULT
|
|
10
|
-
from .utils import
|
|
10
|
+
from .utils import (
|
|
11
|
+
__is_running_in_container__,
|
|
12
|
+
__version__,
|
|
13
|
+
boot,
|
|
14
|
+
console,
|
|
15
|
+
get_logger,
|
|
16
|
+
prepare_cli,
|
|
17
|
+
)
|
|
11
18
|
|
|
12
19
|
boot(MODULES_TO_INSTRUMENT)
|
|
13
20
|
logger = get_logger(__name__)
|
|
14
21
|
|
|
15
22
|
cli = typer.Typer(
|
|
16
23
|
help="Command Line Interface (CLI) of Aignostics Python SDK providing access to Aignostics Platform.",
|
|
17
|
-
no_args_is_help=True,
|
|
18
24
|
)
|
|
19
25
|
|
|
20
26
|
if find_spec("nicegui") and find_spec("webview") and not __is_running_in_container__:
|
|
@@ -62,6 +68,7 @@ if find_spec("marimo"):
|
|
|
62
68
|
|
|
63
69
|
prepare_cli(cli, f"🔬 Aignostics Python SDK v{__version__} - built with love in Berlin 🐻")
|
|
64
70
|
|
|
71
|
+
|
|
65
72
|
if __name__ == "__main__": # pragma: no cover
|
|
66
73
|
try:
|
|
67
74
|
cli()
|
|
@@ -8,7 +8,6 @@ from importlib.util import find_spec
|
|
|
8
8
|
from typing import Any
|
|
9
9
|
|
|
10
10
|
from humanize import naturaldelta
|
|
11
|
-
from nicegui import app, ui
|
|
12
11
|
|
|
13
12
|
from aignostics.utils import __version__, open_user_data_directory
|
|
14
13
|
|
|
@@ -42,7 +41,7 @@ def frame( # noqa: C901, PLR0915
|
|
|
42
41
|
Yields:
|
|
43
42
|
Generator[Any, Any, Any]: The context manager for the page frame.
|
|
44
43
|
"""
|
|
45
|
-
from nicegui import background_tasks, context, run # noqa: PLC0415
|
|
44
|
+
from nicegui import app, background_tasks, context, run, ui # noqa: PLC0415
|
|
46
45
|
|
|
47
46
|
from aignostics.platform import Service as PlatformService # noqa: PLC0415
|
|
48
47
|
from aignostics.platform import UserInfo # noqa: PLC0415
|
|
@@ -18,14 +18,13 @@ from requests_oauthlib import OAuth2Session
|
|
|
18
18
|
from aignostics.platform._messages import AUTHENTICATION_FAILED, INVALID_REDIRECT_URI
|
|
19
19
|
from aignostics.platform._settings import settings
|
|
20
20
|
|
|
21
|
+
CALLBACK_PORT_RETRY_COUNT = 10
|
|
22
|
+
CLAIM_ROLE = "https://aignostics-platform-samia/role"
|
|
21
23
|
try:
|
|
22
24
|
import sentry_sdk
|
|
23
25
|
except ImportError:
|
|
24
26
|
sentry_sdk = None # type: ignore[assignment]
|
|
25
27
|
|
|
26
|
-
CALLBACK_PORT_RETRY_COUNT = 10
|
|
27
|
-
CLAIM_ROLE = "https://aignostics-platform-samia/role"
|
|
28
|
-
|
|
29
28
|
|
|
30
29
|
class AuthenticationResult(BaseModel):
|
|
31
30
|
"""Represents the result of an OAuth authentication flow."""
|
|
@@ -21,7 +21,6 @@ def prepare_cli(cli: typer.Typer, epilog: str) -> None:
|
|
|
21
21
|
cli.add_typer(_cli)
|
|
22
22
|
|
|
23
23
|
cli.info.epilog = epilog
|
|
24
|
-
cli.info.no_args_is_help = True
|
|
25
24
|
if not any(arg.endswith("typer") for arg in Path(sys.argv[0]).parts):
|
|
26
25
|
for command in cli.registered_commands:
|
|
27
26
|
command.epilog = cli.info.epilog
|
|
@@ -34,6 +33,17 @@ def prepare_cli(cli: typer.Typer, epilog: str) -> None:
|
|
|
34
33
|
_no_args_is_help_recursively(cli)
|
|
35
34
|
|
|
36
35
|
|
|
36
|
+
def no_args_is_help_workaround(ctx: typer.Context) -> None:
|
|
37
|
+
"""Workaround for Typer bug, see https://github.com/fastapi/typer/pull/1240.
|
|
38
|
+
|
|
39
|
+
Raises:
|
|
40
|
+
typer.Exit: If no subcommand is invoked, prints the help message and exits.
|
|
41
|
+
"""
|
|
42
|
+
if ctx.invoked_subcommand is None:
|
|
43
|
+
print(ctx.get_help())
|
|
44
|
+
raise typer.Exit
|
|
45
|
+
|
|
46
|
+
|
|
37
47
|
def _add_epilog_recursively(cli: typer.Typer, epilog: str) -> None:
|
|
38
48
|
"""
|
|
39
49
|
Add epilog to all typers in the tree.
|
|
@@ -60,9 +70,18 @@ def _no_args_is_help_recursively(cli: typer.Typer) -> None:
|
|
|
60
70
|
Args:
|
|
61
71
|
cli (typer.Typer): Typer instance
|
|
62
72
|
"""
|
|
73
|
+
# Apply workaround to the main CLI app itself
|
|
74
|
+
if not hasattr(cli, "no_args_callback_added"):
|
|
75
|
+
cli.callback(invoke_without_command=True)(no_args_is_help_workaround)
|
|
76
|
+
cli.no_args_callback_added = True # type: ignore[attr-defined]
|
|
77
|
+
|
|
78
|
+
# Apply workaround to all subcommands recursively
|
|
63
79
|
for group in cli.registered_groups:
|
|
64
80
|
if isinstance(group, typer.models.TyperInfo):
|
|
65
|
-
group.no_args_is_help = True
|
|
66
81
|
typer_instance = group.typer_instance
|
|
67
82
|
if (typer_instance is not cli) and typer_instance:
|
|
83
|
+
# Add the callback workaround to each subcommand typer
|
|
84
|
+
if not hasattr(typer_instance, "no_args_callback_added"):
|
|
85
|
+
typer_instance.callback(invoke_without_command=True)(no_args_is_help_workaround)
|
|
86
|
+
typer_instance.no_args_callback_added = True # type: ignore[attr-defined]
|
|
68
87
|
_no_args_is_help_recursively(typer_instance)
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"""WSI API."""
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
from
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
7
|
|
|
8
8
|
from aignostics.utils import BasePageBuilder, get_logger
|
|
9
9
|
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from fastapi import Response
|
|
12
|
+
|
|
10
13
|
from ._service import Service
|
|
11
14
|
|
|
12
15
|
logger = get_logger(__name__)
|
|
@@ -29,6 +32,9 @@ class PageBuilder(BasePageBuilder):
|
|
|
29
32
|
Returns:
|
|
30
33
|
fastapi.Response: HTTP response containing the thumbnail or fallback image.
|
|
31
34
|
"""
|
|
35
|
+
from fastapi import Response # noqa: PLC0415
|
|
36
|
+
from fastapi.responses import RedirectResponse # noqa: PLC0415
|
|
37
|
+
|
|
32
38
|
try:
|
|
33
39
|
return Response(content=Service().get_thumbnail_bytes(Path(source)), media_type="image/png")
|
|
34
40
|
except ValueError:
|
|
@@ -48,6 +54,9 @@ class PageBuilder(BasePageBuilder):
|
|
|
48
54
|
Returns:
|
|
49
55
|
fastapi.Response: HTTP response containing the converted tiff or fallback image
|
|
50
56
|
"""
|
|
57
|
+
from fastapi import Response # noqa: PLC0415
|
|
58
|
+
from fastapi.responses import RedirectResponse # noqa: PLC0415
|
|
59
|
+
|
|
51
60
|
try:
|
|
52
61
|
return Response(content=Service().get_tiff_as_jpg(url), media_type="image/jpeg")
|
|
53
62
|
except ValueError:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/application_run_status.py
RENAMED
|
File without changes
|
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/http_validation_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/item_creation_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/output_artifact_scope.py
RENAMED
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/payload_input_artifact.py
RENAMED
|
File without changes
|
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/payload_output_artifact.py
RENAMED
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/run_creation_request.py
RENAMED
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/run_creation_response.py
RENAMED
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/run_read_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.64 → aignostics-0.2.68}/codegen/out/aignx/codegen/models/validation_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|