Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
6683893
refactor(utils): introduce library mode
helmut-hoffer-von-ankershoffen Nov 13, 2025
a6829d5
refactor(utils): introduce loguru
helmut-hoffer-von-ankershoffen Nov 13, 2025
4230cf5
refactor(utils): introduce loguru
helmut-hoffer-von-ankershoffen Nov 13, 2025
89b8213
fix(utils): no task name in 3.11
helmut-hoffer-von-ankershoffen Nov 13, 2025
5c9d601
test(across): stderr
helmut-hoffer-von-ankershoffen Nov 13, 2025
faf97b8
chore(release): start to adapt expected output for heta update
helmut-hoffer-von-ankershoffen Nov 13, 2025
a19acc1
chore(utils): remove logfire traces
helmut-hoffer-von-ankershoffen Nov 13, 2025
5b2229c
chore: some
helmut-hoffer-von-ankershoffen Nov 13, 2025
162769b
chore: some
helmut-hoffer-von-ankershoffen Nov 13, 2025
72ce742
chore: some
helmut-hoffer-von-ankershoffen Nov 13, 2025
8050057
chore(utils): loguru thread safety
helmut-hoffer-von-ankershoffen Nov 13, 2025
ddb35f7
chore: revert enqueue
helmut-hoffer-von-ankershoffen Nov 13, 2025
93c179c
chore: boto and loguru
helmut-hoffer-von-ankershoffen Nov 13, 2025
689c261
chore: boto and loguru
helmut-hoffer-von-ankershoffen Nov 13, 2025
26baa40
chore: boto and loguru
helmut-hoffer-von-ankershoffen Nov 13, 2025
057fab7
chore: deactive redirect logging
helmut-hoffer-von-ankershoffen Nov 13, 2025
21e3096
chore(boto): oh dear
helmut-hoffer-von-ankershoffen Nov 13, 2025
abebd8a
chore: boto
helmut-hoffer-von-ankershoffen Nov 13, 2025
8685e8d
chore: logging
helmut-hoffer-von-ankershoffen Nov 13, 2025
15acdcc
chore: adapt SPOT_1_EXPECTED_RESULT_FILES
helmut-hoffer-von-ankershoffen Nov 13, 2025
74059fb
test: missing marker
helmut-hoffer-von-ankershoffen Nov 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ AIGNOSTICS_SYSTEM_TOKEN=YOUR_SECRET_TOKEN
AIGNOSTICS_LOG_LEVEL=INFO
AIGNOSTICS_LOG_FILE_ENABLED=false
AIGNOSTICS_LOG_FILE_NAME=aignostics.log
AIGNOSTICS_LOG_CONSOLE_ENABLED=false
AIGNOSTICS_LOGFIRE_ENABLED=false
AIGNOSTICS_LOGFIRE_INSTRUMENT_SYSTEM_METRICS=true
AIGNOSTICS_LOG_STDERR_ENABLED=false
AIGNOSTICS_SENTRY_ENABLED=false
AIGNOSTICS_SENTRY_DEBUG=false
AIGNOSTICS_SENTRY_SEND_DEFAULT_PII=false
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_install_dev_tools.bash
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ log() {
log "Starting installation of development tools..."

# Disable man-db updates to speed up package installation
sudo rm /var/lib/man-db/auto-update
sudo rm -f /var/lib/man-db/auto-update

# Install APT packages
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
Expand Down
100 changes: 50 additions & 50 deletions ATTRIBUTIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -506,40 +506,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

```

## aignostics (0.2.192) - MIT License

🔬 Python SDK providing access to the Aignostics Platform. Includes Aignostics Launchpad (Desktop Application), Aignostics CLI (Command-Line Interface), example notebooks, and Aignostics Client Library.

* URL: https://aignostics.readthedocs.io/en/latest/
* Author(s): Helmut Hoffer von Ankershoffen <helmut@aignostics.com>, Andreas Kunft <andreas@aignostics.com>

### License Text

```
MIT License

Copyright (c) [2025] [Aignostics GmbH (support@aignostics.com)]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

```

## aiofile (3.9.0) - Apache Software License

Asynchronous file operations.
Expand Down Expand Up @@ -1760,6 +1726,40 @@ IN THE SOFTWARE.

```

## annotated-doc (0.0.3) - MIT License

Document parameters, class attributes, return types, and variables inline, with Annotated.

* URL: https://github.com/fastapi/annotated-doc
* Author(s): Sebastián Ramírez

### License Text

```
The MIT License (MIT)

Copyright (c) 2025 Sebastián Ramírez

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

```

## annotated-types (0.7.0) - MIT License

Reusable constraint types to use with typing.Annotated
Expand Down Expand Up @@ -3659,7 +3659,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

```

## boto3 (1.40.51) - Apache Software License
## boto3 (1.40.59) - Apache-2.0

The AWS SDK for Python

Expand Down Expand Up @@ -3857,7 +3857,7 @@ Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.

```

## botocore (1.40.51) - Apache-2.0
## botocore (1.40.59) - Apache-2.0

Low-level, data-driven core of boto 3.

Expand Down Expand Up @@ -7585,7 +7585,7 @@ SOFTWARE.

```

## fastapi (0.119.0) - MIT License
## fastapi (0.120.0) - MIT License

FastAPI framework, high performance, easy to learn, fast to code, ready for production

Expand Down Expand Up @@ -10400,7 +10400,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND

```

## humanize (4.13.0) - UNKNOWN
## humanize (4.14.0) - UNKNOWN

Python humanize utilities

Expand Down Expand Up @@ -12606,7 +12606,7 @@ license-expression is a comprehensive utility library to parse, compare, simplif

```

## logfire (4.13.2) - UNKNOWN
## logfire (4.14.2) - UNKNOWN

The best Python observability tool! 🪵🔥

Expand Down Expand Up @@ -12794,7 +12794,7 @@ Copyright 2010-2020 - Ronald Oussoren

```

## marimo (0.16.5) - Apache Software License
## marimo (0.17.2) - Apache Software License

A library for making reactive notebooks and apps

Expand Down Expand Up @@ -13272,12 +13272,12 @@ Copyright (C) 2008-2011 INADA Naoki <songofacandy@gmail.com>

```

## msgspec (0.19.0) - BSD License
## msgspec_m (0.19.2) - BSD License

A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML.

* URL: https://jcristharif.com/msgspec/
* Maintainer(s): Jim Crist-Harif
* URL: https://github.com/marimo-team/msgspec
* Maintainer(s): marimo team

### License Text

Expand Down Expand Up @@ -13855,7 +13855,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

```

## nicegui (3.0.4) - MIT License
## nicegui (3.1.0) - MIT License

Create web-based user interfaces with Python. The nice way.

Expand Down Expand Up @@ -14020,7 +14020,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

```

## nox (2025.5.1) - UNKNOWN
## nox (2025.10.16) - UNKNOWN

Flexible test automation.

Expand Down Expand Up @@ -24654,7 +24654,7 @@ Proxy Implementation
* URL: http://github.com/jtushman/proxy_tools
* Author(s): Jonathan Tushman

## psutil (7.1.0) - BSD-3-Clause
## psutil (7.1.2) - BSD-3-Clause

Cross-platform lib for process and system monitoring.

Expand Down Expand Up @@ -28387,7 +28387,7 @@ C version of reader, parser and emitter for ruamel.yaml derived from libyaml

```

## ruff (0.14.0) - MIT License
## ruff (0.14.2) - MIT License

An extremely fast Python linter and code formatter, written in Rust.

Expand Down Expand Up @@ -29563,7 +29563,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

```

## sentry-sdk (2.41.0) - BSD License
## sentry-sdk (2.42.1) - BSD License

Python client for Sentry (https://sentry.io)

Expand Down Expand Up @@ -31791,7 +31791,7 @@ SOFTWARE.

```

## typer (0.19.2) - MIT License
## typer (0.20.0) - MIT License

Typer, build great CLIs. Easy to code. Based on Python type hints.

Expand Down Expand Up @@ -33192,7 +33192,7 @@ SOFTWARE.

```

## uv (0.9.2) - Apache Software License; MIT License
## uv (0.9.5) - Apache Software License; MIT License

An extremely fast Python package and project manager, written in Rust.

Expand Down
6 changes: 3 additions & 3 deletions CLI_REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ $ aignostics [OPTIONS] COMMAND [ARGS]...
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

🔬 Aignostics Python SDK v0.2.195 - built with love in Berlin 🐻
🔬 Aignostics Python SDK v0.2.199 - built with love in Berlin 🐻

**Commands**:

Expand Down Expand Up @@ -204,7 +204,7 @@ $ aignostics application run execute [OPTIONS] APPLICATION_ID METADATA_CSV_FILE
* `--application-version TEXT`: Version of the application. If not provided, the latest version will be used.
* `--create-subdirectory-for-run / --no-create-subdirectory-for-run`: Create a subdirectory for the results of the run in the destination directory [default: create-subdirectory-for-run]
* `--create-subdirectory-per-item / --no-create-subdirectory-per-item`: Create a subdirectory per item in the destination directory [default: create-subdirectory-per-item]
* `--upload-prefix TEXT`: Prefix for the upload destination. If not given will be set to current milliseconds. [default: 1761499056785.385]
* `--upload-prefix TEXT`: Prefix for the upload destination. If not given will be set to current milliseconds. [default: 1763046365825.4631]
* `--wait-for-completion / --no-wait-for-completion`: Wait for run completion and download results incrementally [default: wait-for-completion]
* `--note TEXT`: Optional note to include with the run submission via custom metadata.
* `--due-date TEXT`: Optional soft due date to include with the run submission, ISO8601 format. The scheduler will try to complete the run by this date, taking the subscription tierand available GPU resources into account.
Expand Down Expand Up @@ -267,7 +267,7 @@ $ aignostics application run upload [OPTIONS] APPLICATION_ID METADATA_CSV_FILE
**Options**:

* `--application-version TEXT`: Version of the application. If not provided, the latest version will be used.
* `--upload-prefix TEXT`: Prefix for the upload destination. If not given will be set to current milliseconds. [default: 1761499056785.492]
* `--upload-prefix TEXT`: Prefix for the upload destination. If not given will be set to current milliseconds. [default: 1763046365825.575]
* `--onboard-to-aignostics-portal / --no-onboard-to-aignostics-portal`: If set, the run will be onboarded to the Aignostics Portal. [default: no-onboard-to-aignostics-portal]
* `--help`: Show this message and exit.

Expand Down
8 changes: 4 additions & 4 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -408,8 +408,8 @@ def _generate_openapi_schemas(session: nox.Session) -> None:
Path("docs/source/_static").mkdir(parents=True, exist_ok=True)

formats = {
"yaml": {"ext": "yaml", "args": ["--output-format=yaml", "--env", "AIGNOSTICS_LOG_CONSOLE_ENABLED=false"]},
"json": {"ext": "json", "args": ["--output-format=json", "--env", "AIGNOSTICS_LOG_CONSOLE_ENABLED=false"]},
"yaml": {"ext": "yaml", "args": ["--output-format=yaml", "--env", "AIGNOSTICS_LOG_STDERR_ENABLED=false"]},
"json": {"ext": "json", "args": ["--output-format=json", "--env", "AIGNOSTICS_LOG_STDERR_ENABLED=false"]},
}

for version in API_VERSIONS:
Expand Down Expand Up @@ -443,7 +443,7 @@ def _generate_sdk_metadata_schema(session: nox.Session, schema_type: str) -> Non
f"{schema_type}-metadata-schema",
"--no-pretty",
"--env",
"AIGNOSTICS_LOG_CONSOLE_ENABLED=false",
"AIGNOSTICS_LOG_STDERR_ENABLED=false",
stdout=f,
external=True,
)
Expand Down Expand Up @@ -935,7 +935,7 @@ def setup(session: nox.Session) -> None:
session.run("git", "add", ".", external=True)
try:
session.run("pre-commit", external=True)
except Exception: # noqa: BLE001
except Exception:
session.log("pre-commit run failed, continuing anyway")
session.run("git", "add", ".", external=True)

Expand Down
41 changes: 17 additions & 24 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,45 +74,37 @@ requires-python = ">=3.11, <3.14"

dependencies = [
# From Template
"fastapi[standard,all]>=0.120.4,<1",
"fastapi[standard,all]>=0.121.1,<1",
"humanize>=4.14.0,<5",
"logfire[system-metrics]>=4.14.2,<5",
"nicegui[native]>=3.1.0,<3.2.0", # Regression in 3.2.0
"opentelemetry-instrumentation-fastapi>=0.53b0,<1",
"opentelemetry-instrumentation-httpx>=0.53b0,<1",
"opentelemetry-instrumentation-jinja2>=0.53b0,<1",
"opentelemetry-instrumentation-requests>=0.53b0,<1",
"opentelemetry-instrumentation-sqlite3>=0.53b0,<1",
"opentelemetry-instrumentation-tornado>=0.53b0,<1",
"opentelemetry-instrumentation-urllib>=0.53b0,<1",
"opentelemetry-instrumentation-urllib3>=0.53b0,<1",
"packaging>=25.0,<26",
"platformdirs>=4.5.0,<5",
"psutil>=7.1.2,<8",
"pydantic-settings>=2.11.0,<3",
"psutil>=7.1.3,<8",
"pydantic-settings>=2.12.0,<3",
"pywin32>=310,<311 ; sys_platform == 'win32'",
"pyyaml>=6.0.3,<7",
"sentry-sdk>=2.43.0,<3",
"sentry-sdk>=2.44.0,<3",
"typer>=0.20.0,<1",
"uptime>=3.0.1,<4",
# Custom
"aiopath>=0.6.11,<1",
"boto3>=1.40.64,<2",
"certifi>=2025.10.5,<2026",
"boto3>=1.40.61,<2",
"certifi>=2025.11.12,<2026",
"defusedxml>=0.7.1",
"dicom-validator>=0.7.3,<1",
"dicomweb-client[gcp]>=0.59.3,<1",
"duckdb>=0.10.0,<=1.4.1",
"fastparquet>=2024.11.0,<2025",
"google-cloud-storage>=3.4.1,<4",
"google-cloud-storage>=3.5.0,<4",
"google-crc32c>=1.7.1,<2",
"highdicom>=0.26.1,<1",
"html-sanitizer>=2.6.0,<3",
"httpx>=0.28.1,<1",
"idc-index-data==22.0.2",
"idc-index-data==22.1.2",
"ijson>=3.4.0.post0,<4",
"jsf>=0.11.2,<1",
"jsonschema[format-nongpl]>=4.25.1,<5",
"loguru>=0.7.3",
"openslide-bin>=4.0.0.8,<5",
"openslide-python>=1.4.2,<2",
"pandas>=2.3.3,<3",
Expand All @@ -138,8 +130,8 @@ pyinstaller = ["pyinstaller>=6.14.0,<7"]
jupyter = ["jupyter>=1.1.1,<2"]
marimo = [
"cloudpathlib>=0.23.0,<1",
"ipython>=9.6.0,<10",
"marimo>=0.17.2,<1",
"ipython>=9.7.0,<10",
"marimo>=0.17.7,<1",
"matplotlib>=3.10.7,<4",
"shapely>=2.1.0,<3",
]
Expand All @@ -154,15 +146,15 @@ dev = [
"furo>=2025.9.25,<2026",
"git-cliff>=2.10.1,<3",
"mypy>=1.18.2,<2",
"nox[uv]>=2025.10.16,<2026",
"nox[uv]>=2025.11.12,<2026",
"pip-audit>=2.9.0,<3",
"pip-licenses @ git+https://github.com/neXenio/pip-licenses.git@master", # https://github.com/raimon49/pip-licenses/pull/224
"pre-commit>=4.3.0,<5",
"pre-commit>=4.4.0,<5",
"pyright>=1.1.406,<1.1.407", # Regression in 1.1.407, see https://github.com/microsoft/pyright/issues/11060
"pytest>=8.4.2,<9",
"pytest-asyncio>=1.2.0,<2",
"pytest-asyncio>=1.3.0,<2",
"pytest-cov>=7.0.0,<8",
"pytest-docker>=3.2.3,<4",
"pytest-docker>=3.2.5,<4",
"pytest-durations>=1.6.1,<2",
"pytest-env>=1.2.0,<2",
"pytest-md-report>=0.7.0,<1",
Expand All @@ -173,7 +165,7 @@ dev = [
"pytest-timeout>=2.4.0,<3",
"pytest-watcher>=0.4.3,<1",
"pytest-xdist[psutil]>=3.8.0,<4",
"ruff>=0.14.3,<1",
"ruff>=0.14.4,<1",
"scalene>=1.5.55,<2",
"sphinx>=8.2.3,<9",
"sphinx-autobuild>=2025.8.25,<2026",
Expand Down Expand Up @@ -275,6 +267,7 @@ ignore = [
"PTH123", # use of open to be replaced with Path.open,
"T201", # Remove `print`
"INP001", # Checks for packages that are missing an __init__.py file.
"BLE001", # Accept for now TODO(Helmut): Add proper exception handling later
]

[tool.ruff.lint.per-file-ignores]
Expand Down
Loading
Loading