aignostics 0.2.72__tar.gz → 0.2.83__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.72 → aignostics-0.2.83}/PKG-INFO +2 -1
- {aignostics-0.2.72 → aignostics-0.2.83}/examples/notebook.py +1 -1
- {aignostics-0.2.72 → aignostics-0.2.83}/pyproject.toml +3 -2
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_service.py +10 -7
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/__init__.py +9 -5
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_utils.py +7 -3
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/resources/applications.py +12 -14
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/resources/runs.py +11 -5
- {aignostics-0.2.72 → aignostics-0.2.83}/.gitignore +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/LICENSE +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/README.md +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/.openapi-generator/FILES +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/.openapi-generator/VERSION +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/api/public_api.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/api_client.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/api_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/configuration.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/exceptions.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/application_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/application_run_status.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/application_version_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/http_validation_error.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/input_artifact_creation_request.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/input_artifact_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/item_creation_request.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/item_result_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/item_status.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/output_artifact_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/output_artifact_result_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/output_artifact_scope.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/payload_input_artifact.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/payload_item.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/payload_output_artifact.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/run_creation_request.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/run_creation_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/run_read_response.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/transfer_urls.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/user_payload.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/validation_error.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/validation_error_loc_inner.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/rest.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/docs/PublicApi.md +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-13/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-13/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Frameworks/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-13/aignostics.app/Contents/Resources/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-latest/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-latest/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Frameworks/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-macos-latest/aignostics.app/Contents/Resources/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-ubuntu-24.04-arm/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-ubuntu-latest/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-windows-11-arm/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/dist_native_all/dist_native-windows-latest/aignostics/_internal/boto3/examples/cloudfront.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/dist_native_all/dist_native-windows-latest/aignostics/_internal/boto3/examples/s3.rst +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/examples/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/examples/notebook.ipynb +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/examples/script.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/_frame.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/_page_application_describe.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/_page_application_run_describe.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/_page_builder.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/_page_index.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/_utils.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/.gitignore +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/canceled.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/done.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/empty.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/error.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/error_alt.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-1.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-2.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-3.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-4.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-5.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/image-not-found.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/pending.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/pending_alt.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/ruo.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/ruo.svg +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_settings.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_utils.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/_settings.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/assets/Google-Cloud-logo.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/bucket/assets/Google-Cloud-logo.svg +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/constants.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/dataset/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/dataset/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/dataset/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/dataset/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/dataset/assets/NIH-IDC-logo.svg +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/gui/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/gui/_frame.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/gui/_theme.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/gui/assets/cabin-v27-latin-regular.woff2 +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/gui/assets/logo.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/notebook/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/notebook/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/notebook/_notebook.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/notebook/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/notebook/assets/python.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_authentication.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_client.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_constants.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_messages.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_service.py +14 -14
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/_settings.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/resources/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/platform/resources/utils.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/_settings.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/assets/download.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/assets/microscope.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/assets/update.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/scripts/add.groovy +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/scripts/annotate.groovy +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/scripts/inspect.groovy +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/qupath/scripts/test.groovy +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/_exceptions.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/_settings.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/system/assets/system.lottie +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/third_party/bottle.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/third_party/idc_index.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_console.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_constants.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_di.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_fs.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_health.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_log.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_logfire.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_notebook.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_process.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_sentry.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/_settings.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/utils/boot.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/__init__.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/_cli.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/_gui.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/_openslide_handler.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/_pydicom_handler.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/_service.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/_utils.py +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/wsi/assets/fallback.png +0 -0
- {aignostics-0.2.72 → aignostics-0.2.83}/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.83
|
|
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/
|
|
@@ -89,6 +89,7 @@ Requires-Dist: pyyaml>=6.0
|
|
|
89
89
|
Requires-Dist: requests-oauthlib>=2.0.0
|
|
90
90
|
Requires-Dist: requests>=2.32.3
|
|
91
91
|
Requires-Dist: s5cmd>=0.2.0
|
|
92
|
+
Requires-Dist: semver>=3.0.4
|
|
92
93
|
Requires-Dist: sentry-sdk>=2.30.0
|
|
93
94
|
Requires-Dist: shapely>=2.1.1
|
|
94
95
|
Requires-Dist: show-in-file-manager>=1.1.5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aignostics"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.83"
|
|
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 = [
|
|
@@ -121,6 +121,7 @@ dependencies = [
|
|
|
121
121
|
"requests>=2.32.3",
|
|
122
122
|
"requests-oauthlib>=2.0.0",
|
|
123
123
|
"s5cmd>=0.2.0",
|
|
124
|
+
"semver>=3.0.4",
|
|
124
125
|
"shapely>=2.1.1",
|
|
125
126
|
"show-in-file-manager>=1.1.5",
|
|
126
127
|
"tqdm>=4.67.1",
|
|
@@ -353,7 +354,7 @@ source = ["src/"]
|
|
|
353
354
|
|
|
354
355
|
|
|
355
356
|
[tool.bumpversion]
|
|
356
|
-
current_version = "0.2.
|
|
357
|
+
current_version = "0.2.83"
|
|
357
358
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
358
359
|
serialize = ["{major}.{minor}.{patch}"]
|
|
359
360
|
search = "{current_version}"
|
|
@@ -12,6 +12,7 @@ from typing import Any
|
|
|
12
12
|
|
|
13
13
|
import google_crc32c
|
|
14
14
|
import requests
|
|
15
|
+
import semver
|
|
15
16
|
from pydantic import BaseModel, computed_field
|
|
16
17
|
|
|
17
18
|
from aignostics.bucket import Service as BucketService
|
|
@@ -264,21 +265,23 @@ class Service(BaseService):
|
|
|
264
265
|
# Validate format: application_id:vX.Y.Z (where X.Y.Z is a semver)
|
|
265
266
|
# This checks for proper format like "he-tme:v0.50.0" where "he-tme" is the application id
|
|
266
267
|
# and "v0.50.0" is the version with proper semver format
|
|
267
|
-
|
|
268
|
+
match = re.match(r"^([^:]+):v(.+)$", application_version_id)
|
|
269
|
+
if not match or not semver.Version.is_valid(match.group(2)):
|
|
268
270
|
if use_latest_if_no_version_given:
|
|
269
|
-
|
|
271
|
+
application_id = match.group(1) if match else application_version_id
|
|
272
|
+
latest_version = self.application_version_latest(self.application(application_id))
|
|
270
273
|
if latest_version:
|
|
271
274
|
return latest_version
|
|
272
|
-
message =
|
|
273
|
-
|
|
275
|
+
message = (
|
|
276
|
+
f"No valid application version found for '{application_version_id}'no latest version available."
|
|
277
|
+
)
|
|
274
278
|
logger.warning(message)
|
|
275
279
|
raise ValueError(message)
|
|
276
280
|
message = f"Invalid application version id format: {application_version_id}. "
|
|
277
|
-
"Expected format: application_id:vX.Y.Z"
|
|
281
|
+
message += "Expected format: application_id:vX.Y.Z"
|
|
278
282
|
raise ValueError(message)
|
|
279
283
|
|
|
280
|
-
application_id =
|
|
281
|
-
|
|
284
|
+
application_id = match.group(1)
|
|
282
285
|
application = self.application(application_id)
|
|
283
286
|
for version in self.application_versions(application):
|
|
284
287
|
if version.application_version_id == application_version_id:
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
1
|
+
"""This module provides the low-level client interface for interacting with the API of the Aignostics Platform.
|
|
2
|
+
|
|
3
|
+
The primary class in this module is the `Client` class, serving as the entry point
|
|
4
|
+
for authenticated API operations. Login and token management are handled
|
|
5
|
+
automatically.
|
|
6
|
+
|
|
7
|
+
Further operations are encapsulated in the `Service` class, which provides methods
|
|
8
|
+
for manual login, logout and getting information about the authenticated user.
|
|
3
9
|
|
|
4
|
-
|
|
5
|
-
The primary class in this module is the `Client` class, which serves as the entry point
|
|
6
|
-
for all interactions with the Aignostics platform.
|
|
10
|
+
Higher level abstractions are provided in the application module.
|
|
7
11
|
"""
|
|
8
12
|
|
|
9
13
|
from aignx.codegen.exceptions import ApiException, NotFoundException
|
|
@@ -26,6 +26,7 @@ from aignx.codegen.models import OutputArtifactResultReadResponse as OutputArtif
|
|
|
26
26
|
from tqdm.auto import tqdm
|
|
27
27
|
|
|
28
28
|
EIGHT_MB = 8_388_608
|
|
29
|
+
SIGNED_DOWNLOAD_URL_EXPIRES_SECONDS_DEFAULT = 6 * 60 * 60 # 6 hours
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
def mime_type_to_file_ending(mime_type: str) -> str:
|
|
@@ -71,7 +72,6 @@ def get_mime_type_for_artifact(artifact: OutputArtifactData | InputArtifactData
|
|
|
71
72
|
return str(metadata.get("media_type", metadata.get("mime_type", "application/octet-stream")))
|
|
72
73
|
|
|
73
74
|
|
|
74
|
-
# TODO(Andreas,Helmut): discuss
|
|
75
75
|
def download_file(signed_url: str, file_path: str, verify_checksum: str) -> None:
|
|
76
76
|
"""Downloads a file from a signed URL and verifies its integrity.
|
|
77
77
|
|
|
@@ -102,11 +102,12 @@ def download_file(signed_url: str, file_path: str, verify_checksum: str) -> None
|
|
|
102
102
|
raise ValueError(msg)
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
def generate_signed_url(url: str) -> str:
|
|
105
|
+
def generate_signed_url(url: str, expires_seconds: int = SIGNED_DOWNLOAD_URL_EXPIRES_SECONDS_DEFAULT) -> str:
|
|
106
106
|
"""Generates a signed URL for a Google Cloud Storage object.
|
|
107
107
|
|
|
108
108
|
Args:
|
|
109
109
|
url (str): The fully qualified bucket URL (e.g. gs://bucket/path/to/object).
|
|
110
|
+
expires_seconds (int): The number of seconds the signed URL should be valid for.
|
|
110
111
|
|
|
111
112
|
Returns:
|
|
112
113
|
str: A signed URL that can be used to download the object.
|
|
@@ -131,7 +132,10 @@ def generate_signed_url(url: str) -> str:
|
|
|
131
132
|
msg = f"Blob does not exist: {url}"
|
|
132
133
|
raise ValueError(msg)
|
|
133
134
|
|
|
134
|
-
return t.cast(
|
|
135
|
+
return t.cast(
|
|
136
|
+
"str",
|
|
137
|
+
blob.generate_signed_url(expiration=datetime.timedelta(seconds=expires_seconds), method="GET", version="v4"),
|
|
138
|
+
)
|
|
135
139
|
|
|
136
140
|
|
|
137
141
|
def calculate_file_crc32c(file: Path) -> str:
|
|
@@ -9,6 +9,7 @@ import re
|
|
|
9
9
|
import typing as t
|
|
10
10
|
from operator import itemgetter
|
|
11
11
|
|
|
12
|
+
import semver
|
|
12
13
|
from aignx.codegen.api.public_api import PublicApi
|
|
13
14
|
from aignx.codegen.models import ApplicationReadResponse as Application
|
|
14
15
|
from aignx.codegen.models import ApplicationVersionReadResponse as ApplicationVersion
|
|
@@ -22,7 +23,7 @@ class Versions:
|
|
|
22
23
|
Provides operations to list and retrieve application versions.
|
|
23
24
|
"""
|
|
24
25
|
|
|
25
|
-
APPLICATION_VERSION_REGEX = re.compile(r"(?P<application_id>[^:]+):v
|
|
26
|
+
APPLICATION_VERSION_REGEX = re.compile(r"^(?P<application_id>[^:]+):v(?P<version>[^:].+)$")
|
|
26
27
|
|
|
27
28
|
def __init__(self, api: PublicApi) -> None:
|
|
28
29
|
"""Initializes the Versions resource with the API platform.
|
|
@@ -51,9 +52,6 @@ class Versions:
|
|
|
51
52
|
application_id=application_id,
|
|
52
53
|
)
|
|
53
54
|
|
|
54
|
-
# TODO(Andreas,Helmut): Discuss. This is getting an application version and returning it.
|
|
55
|
-
# Can we make this a find_by_id, just getting an application_version_id as a string,
|
|
56
|
-
# and returning the application version object?
|
|
57
55
|
def details(self, application_version: ApplicationVersion | str) -> ApplicationVersion:
|
|
58
56
|
"""Retrieves details for a specific application version.
|
|
59
57
|
|
|
@@ -71,13 +69,14 @@ class Versions:
|
|
|
71
69
|
application_id = application_version.application_id
|
|
72
70
|
version = application_version.version
|
|
73
71
|
else:
|
|
74
|
-
#
|
|
75
|
-
|
|
76
|
-
if not
|
|
72
|
+
# Parse and validate the application version ID
|
|
73
|
+
match = self.APPLICATION_VERSION_REGEX.match(application_version)
|
|
74
|
+
if not match:
|
|
77
75
|
msg = f"Invalid application_version_id: {application_version}"
|
|
78
76
|
raise RuntimeError(msg)
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
|
|
78
|
+
application_id = match.group("application_id")
|
|
79
|
+
version = match.group("version")
|
|
81
80
|
|
|
82
81
|
application_versions = self._api.list_versions_by_application_id_v1_applications_application_id_versions_get(
|
|
83
82
|
application_id=application_id,
|
|
@@ -106,18 +105,17 @@ class Versions:
|
|
|
106
105
|
if not versions:
|
|
107
106
|
return []
|
|
108
107
|
|
|
109
|
-
# Extract semantic versions
|
|
108
|
+
# Extract semantic versions using proper semver parsing
|
|
110
109
|
versions_with_semver = []
|
|
111
110
|
for v in versions:
|
|
112
111
|
try:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
versions_with_semver.append((v, version_parts))
|
|
112
|
+
parsed_version = semver.Version.parse(v.version)
|
|
113
|
+
versions_with_semver.append((v, parsed_version))
|
|
116
114
|
except (ValueError, AttributeError):
|
|
117
115
|
# If we can't parse the version or version attribute doesn't exist, skip it
|
|
118
116
|
continue
|
|
119
117
|
|
|
120
|
-
# Sort by semantic version (
|
|
118
|
+
# Sort by semantic version (semver objects have built-in comparison)
|
|
121
119
|
if versions_with_semver:
|
|
122
120
|
versions_with_semver.sort(key=itemgetter(1), reverse=True)
|
|
123
121
|
# Return just the version objects, not the tuples
|
|
@@ -128,13 +128,16 @@ class ApplicationRun:
|
|
|
128
128
|
application_run_id=self.application_run_id,
|
|
129
129
|
)
|
|
130
130
|
|
|
131
|
-
def download_to_folder(
|
|
131
|
+
def download_to_folder(
|
|
132
|
+
self, download_base: Path | str, checksum_attribute_key: str = "checksum_base64_crc32c"
|
|
133
|
+
) -> None:
|
|
132
134
|
"""Downloads all result artifacts to a folder.
|
|
133
135
|
|
|
134
136
|
Monitors run progress and downloads results as they become available.
|
|
135
137
|
|
|
136
138
|
Args:
|
|
137
139
|
download_base (Path | str): Base directory to download results to.
|
|
140
|
+
checksum_attribute_key (str): The key used to validate the checksum of the output artifacts.
|
|
138
141
|
|
|
139
142
|
Raises:
|
|
140
143
|
ValueError: If the provided path is not a directory.
|
|
@@ -152,7 +155,7 @@ class ApplicationRun:
|
|
|
152
155
|
while application_run_status == ApplicationRunStatus.RUNNING:
|
|
153
156
|
for item in self.results():
|
|
154
157
|
if item.status == ItemStatus.SUCCEEDED:
|
|
155
|
-
self.ensure_artifacts_downloaded(application_run_dir, item)
|
|
158
|
+
self.ensure_artifacts_downloaded(application_run_dir, item, checksum_attribute_key)
|
|
156
159
|
sleep(5)
|
|
157
160
|
application_run_status = self.details().status
|
|
158
161
|
print(self)
|
|
@@ -161,12 +164,14 @@ class ApplicationRun:
|
|
|
161
164
|
for item in self.results():
|
|
162
165
|
match item.status:
|
|
163
166
|
case ItemStatus.SUCCEEDED:
|
|
164
|
-
self.ensure_artifacts_downloaded(application_run_dir, item)
|
|
167
|
+
self.ensure_artifacts_downloaded(application_run_dir, item, checksum_attribute_key)
|
|
165
168
|
case ItemStatus.ERROR_SYSTEM | ItemStatus.ERROR_USER:
|
|
166
169
|
print(f"{item.reference} failed with {item.status.value}: {item.error}")
|
|
167
170
|
|
|
168
171
|
@staticmethod
|
|
169
|
-
def ensure_artifacts_downloaded(
|
|
172
|
+
def ensure_artifacts_downloaded(
|
|
173
|
+
base_folder: Path, item: ItemResultReadResponse, checksum_attribute_key: str = "checksum_base64_crc32c"
|
|
174
|
+
) -> None:
|
|
170
175
|
"""Ensures all artifacts for an item are downloaded.
|
|
171
176
|
|
|
172
177
|
Downloads missing or partially downloaded artifacts and verifies their integrity.
|
|
@@ -174,6 +179,7 @@ class ApplicationRun:
|
|
|
174
179
|
Args:
|
|
175
180
|
base_folder (Path): Base directory to download artifacts to.
|
|
176
181
|
item (ItemResultReadResponse): The item result containing the artifacts to download.
|
|
182
|
+
checksum_attribute_key (str): The key used to validate the checksum of the output artifacts.
|
|
177
183
|
|
|
178
184
|
Raises:
|
|
179
185
|
ValueError: If checksums don't match.
|
|
@@ -187,7 +193,7 @@ class ApplicationRun:
|
|
|
187
193
|
item_dir.mkdir(exist_ok=True, parents=True)
|
|
188
194
|
file_ending = mime_type_to_file_ending(get_mime_type_for_artifact(artifact))
|
|
189
195
|
file_path = item_dir / f"{artifact.name}{file_ending}"
|
|
190
|
-
checksum = artifact.metadata[
|
|
196
|
+
checksum = artifact.metadata[checksum_attribute_key]
|
|
191
197
|
|
|
192
198
|
if file_path.exists():
|
|
193
199
|
file_checksum = calculate_file_crc32c(file_path)
|
|
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.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/application_run_status.py
RENAMED
|
File without changes
|
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/http_validation_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/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.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/output_artifact_scope.py
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/payload_input_artifact.py
RENAMED
|
File without changes
|
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/payload_output_artifact.py
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/run_creation_request.py
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/run_creation_response.py
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/codegen/out/aignx/codegen/models/run_read_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/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
|
|
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
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/canceled.lottie
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/error_alt.lottie
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-1.png
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-2.png
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-3.png
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-4.png
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/home-card-5.png
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/image-not-found.png
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/pending.lottie
RENAMED
|
File without changes
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/application/_gui/assets/pending_alt.lottie
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
|
{aignostics-0.2.72 → aignostics-0.2.83}/src/aignostics/gui/assets/cabin-v27-latin-regular.woff2
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
|
|
@@ -213,20 +213,6 @@ class Service(BaseService):
|
|
|
213
213
|
},
|
|
214
214
|
)
|
|
215
215
|
|
|
216
|
-
@staticmethod
|
|
217
|
-
def logout() -> bool:
|
|
218
|
-
"""Logout if authenticated.
|
|
219
|
-
|
|
220
|
-
Deletes the cached authentication token if existing.
|
|
221
|
-
|
|
222
|
-
Returns:
|
|
223
|
-
bool: True if successfully logged out, False if not logged in.
|
|
224
|
-
"""
|
|
225
|
-
logger.debug("Logging out...")
|
|
226
|
-
rtn = remove_cached_token()
|
|
227
|
-
logger.debug("Logout successful: %s", rtn)
|
|
228
|
-
return rtn
|
|
229
|
-
|
|
230
216
|
@staticmethod
|
|
231
217
|
def login(relogin: bool = False) -> bool:
|
|
232
218
|
"""Login.
|
|
@@ -247,6 +233,20 @@ class Service(BaseService):
|
|
|
247
233
|
logger.exception(message)
|
|
248
234
|
return False
|
|
249
235
|
|
|
236
|
+
@staticmethod
|
|
237
|
+
def logout() -> bool:
|
|
238
|
+
"""Logout if authenticated.
|
|
239
|
+
|
|
240
|
+
Deletes the cached authentication token if existing.
|
|
241
|
+
|
|
242
|
+
Returns:
|
|
243
|
+
bool: True if successfully logged out, False if not logged in.
|
|
244
|
+
"""
|
|
245
|
+
logger.debug("Logging out...")
|
|
246
|
+
rtn = remove_cached_token()
|
|
247
|
+
logger.debug("Logout successful: %s", rtn)
|
|
248
|
+
return rtn
|
|
249
|
+
|
|
250
250
|
@staticmethod
|
|
251
251
|
def get_user_info(relogin: bool = False) -> UserInfo | None:
|
|
252
252
|
"""Get user information from authentication token.
|
|
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
|
|
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
|