Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
181 changes: 181 additions & 0 deletions packages/aignostics-sdk/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
[project]
name = "aignostics-sdk"
version = "1.4.0"
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."
readme = "../../README.md"
authors = [
{ name = "Helmut Hoffer von Ankershoffen", email = "[email protected]" },
{ name = "Andreas Kunft", email = "[email protected]" },
]
license = { file = "../../LICENSE" }

keywords = [
"aignostics",
"atlas",
"whole-slide-imaging",
"machine-learning",
"digital-pathology",
"medical-imaging",
"qupath",
"dicom",
"pydicom",
"openslide",
"image-data-commons",
"act",
"codecov",
"copier",
"cyclonedx",
"devcontainer",
"detect-secrets",
"docker",
"git-cliff",
"jupyter",
"marimo",
"mypy",
"nox",
"nicegui",
"oe-python-template",
"pip-audit",
"pip-licenses",
"pre-commit",
"pydantic",
"pytest",
"python",
"pypi",
"readthedocs",
"ruff",
"sonarqube",
"sonarcloud",
"sphinx",
"typer",
"uv",
]

classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: End Users/Desktop",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Framework :: Pydantic",
"Framework :: Pytest",
"Typing :: Typed",
"Natural Language :: English",
]

# WARNING: The upper bound of requires-python is *not* respected by uvx
requires-python = ">=3.11, <3.15"

dependencies = [
# From Template
"fastapi[all,standard]>=0.123.10",
"humanize>=4.14.0,<5",
"nicegui[native]>=3.11.0,<4",
"packaging>=26,<27",
"platformdirs>=4.5.1,<5",
"psutil>=7.1.3,<8",
"pydantic-settings>=2.12.0,<3",
"pywin32>=311,<312; sys_platform == 'win32'",
"pyyaml>=6.0.3,<7",
"sentry-sdk>=2.47.0,<3",
"typer>=0.20.0,<1",
# Custom
"boto3>=1.42.4,<2",
"certifi>=2025.11.12",
"defusedxml>=0.7.1",
"dicom-validator>=0.7.3,<1",
"dicomweb-client[gcp]>=0.59.3,<1",
"duckdb>=1.4.2,<=2",
"google-cloud-storage>=3.6.0,<4",
"crc32c>=2.8,<3",
"highdicom>=0.26.1,<1; python_version < '3.14'",
"html-sanitizer>=2.6.0,<3",
"httpx>=0.28.1,<1",
"idc-index-data==24.0.3",
"ijson>=3.4.0.post0,<4",
"jsf>=0.11.2,<1",
"jsonschema[format-nongpl]>=4.25.1,<5",
"loguru>=0.7.3,<1",
"openslide-bin>=4.0.0.10,<5",
"openslide-python>=1.4.3,<2",
"pandas>=2.3.3,<4",
"platformdirs>=4.3.2,<5",
"procrastinate>=3.5.3",
"fastparquet>=2026.3.0,<2026.4.0; python_version < '3.14'",
"pyarrow>=23.0.1,<24; python_version >= '3.14'",
"pyjwt[crypto]>=2.12.0,<3",
"python-dateutil>=2.9.0.post0,<3",
"requests>=2.33.0,<3",
"requests-oauthlib>=2.0.0,<3",
"s5cmd>=0.3.3,<1",
"semver>=3.0.4,<4",
"shapely>=2.1.2,<3",
"tenacity>=9.1.2,<10",
"tqdm>=4.67.1,<5",
"truststore>=0.10.4,<1",
"urllib3>=2.6.3,<3",
"wsidicom>=0.28.1,<1",
"fastmcp>=3.2.0,<4",
# Transitive overrides
"rfc3987; sys_platform == 'never'",
"h11>=0.16.0",
"tornado>=6.5.5",
"urllib3>=2.5.0",
"pillow>=12.2.0",
"aiohttp>=3.13.4",
"starlette>=1.0.1",
"lxml>=6.1.0",
"filelock>=3.20.3",
"marshmallow>=3.26.2",
"pygments>=2.20.0",
"cryptography>=46.0.7",
"pydicom>=3.0.2",
"pyasn1>=0.6.3",
"lxml-html-clean>=0.4.4",
"python-multipart>=0.0.26",
"protobuf>=6.33.5",
]

[project.optional-dependencies]
pyinstaller = ["pyinstaller>=6.14.0,<7"]
jupyter = [
"jupyter>=1.1.1,<2",
"jupyter-core>=5.8.1",
"jupyterlab>=4.4.9",
"nbconvert>=7.17.1",
]
marimo = [
"cloudpathlib>=0.23.0,<1",
"ipython>=9.8.0,<10",
"marimo>=0.23.0,<1",
"matplotlib>=3.10.7,<4",
"shapely>=2.1.0,<3",
]
qupath = []

[project.scripts]
aignostics-sdk = "aignostics_sdk.cli:cli"

Comment on lines +164 to +166
[build-system]
requires = ["hatchling==1.29.0"]
build-backend = "hatchling.build"

[tool.hatch.build]
include = ["src/*"]
# TODO(Phase 5): Bundle codegen/out/aignx into wheel. Hatchling does not support
# paths outside the project root (../../codegen/out/*). Options: symlink, copy
# via a build hook, or use a hatch plugin. Deferred to the codegen migration phase.

[tool.hatch.build.targets.wheel]
packages = ["src/aignostics_sdk"]

[tool.hatch.metadata]
allow-direct-references = true
1 change: 1 addition & 0 deletions packages/aignostics-sdk/src/aignostics_sdk/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Package stub — source migrated in Phase 2."""
123 changes: 123 additions & 0 deletions packages/aignostics/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
[project]
name = "aignostics"
version = "1.4.0"
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."
readme = "../../README.md"
authors = [
{ name = "Helmut Hoffer von Ankershoffen", email = "[email protected]" },
{ name = "Andreas Kunft", email = "[email protected]" },
]
license = { file = "../../LICENSE" }

keywords = [
"aignostics",
"atlas",
"whole-slide-imaging",
"machine-learning",
"digital-pathology",
"medical-imaging",
"qupath",
"dicom",
"pydicom",
"openslide",
"image-data-commons",
"act",
"codecov",
"copier",
"cyclonedx",
"devcontainer",
"detect-secrets",
"docker",
"git-cliff",
"jupyter",
"marimo",
"mypy",
"nox",
"nicegui",
"oe-python-template",
"pip-audit",
"pip-licenses",
"pre-commit",
"pydantic",
"pytest",
"python",
"pypi",
"readthedocs",
"ruff",
"sonarqube",
"sonarcloud",
"sphinx",
"typer",
"uv",
]

classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: End Users/Desktop",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Framework :: Pydantic",
"Framework :: Pytest",
"Typing :: Typed",
"Natural Language :: English",
]

# WARNING: The upper bound of requires-python is *not* respected by uvx
requires-python = ">=3.11, <3.15"

dependencies = [
"aignostics-sdk==1.4.0",
# Heavy deps will be moved here from aignostics-sdk in Phase 5
Comment on lines +77 to +79
]

[project.optional-dependencies]
pyinstaller = ["pyinstaller>=6.14.0,<7"]
jupyter = [
"jupyter>=1.1.1,<2",
"jupyter-core>=5.8.1",
"jupyterlab>=4.4.9",
"nbconvert>=7.17.1",
]
marimo = [
"cloudpathlib>=0.23.0,<1",
"ipython>=9.8.0,<10",
"marimo>=0.23.0,<1",
"matplotlib>=3.10.7,<4",
"shapely>=2.1.0,<3",
]
qupath = []

[project.scripts]
aignostics = "aignostics.cli:cli"

[project.urls]
Homepage = "https://aignostics.readthedocs.io/en/latest/"
Documentation = "https://aignostics.readthedocs.io/en/latest/"
Source = "https://github.com/aignostics/python-sdk"
Changelog = "https://github.com/aignostics/python-sdk/releases"
Issues = "https://github.com/aignostics/python-sdk/issues"

[build-system]
requires = ["hatchling==1.29.0"]
build-backend = "hatchling.build"

[tool.hatch.build]
include = ["src/*"]

[tool.hatch.build.targets.wheel]
packages = ["src/aignostics"]

[tool.hatch.metadata]
allow-direct-references = true

[tool.uv.sources]
aignostics-sdk = { workspace = true }
1 change: 1 addition & 0 deletions packages/aignostics/src/aignostics/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Package stub — source migrated in Phase 2."""
Loading