Files

66 lines
1.6 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "modelforge-api"
version = "1.2.2"
description = "ITWorx ModelForge control-plane API"
license = "AGPL-3.0-or-later"
requires-python = ">=3.12"
dependencies = [
"fastapi==0.141.1",
"uvicorn[standard]==0.52.4",
"pydantic==2.13.4",
"pydantic-settings==2.15.0",
"sqlalchemy==2.0.52",
"alembic==1.19.1",
"psycopg[binary]==3.3.4",
"cryptography==50.0.1",
"redis==6.4.0",
"httpx==0.28.1",
"huggingface-hub==1.29.0",
"nvidia-ml-py==13.610.43",
"psutil==7.2.2",
"pyyaml==6.0.3",
"structlog==25.5.0",
]
[project.optional-dependencies]
dev = [
"pytest==8.4.2",
"pytest-asyncio==1.4.0",
"ruff==0.16.5",
"mypy==1.20.2",
]
[tool.hatch.build.targets.wheel]
packages = ["src/modelforge_api"]
[tool.pytest.ini_options]
pythonpath = ["src"]
testpaths = ["tests"]
[tool.mypy]
# Strict, and analysed for the platform the images actually run on.
#
# Both of these were assumed rather than configured. There was no [tool.mypy] section at all, so
# `mypy src` ran with defaults while every milestone report described it as strict; and it analysed
# the developer's platform, so a Windows-only winreg branch type-checked cleanly here and failed in
# CI on identical code. Turning strict on cost three stale `type: ignore` comments.
strict = true
platform = "linux"
[tool.ruff]
line-length = 100
target-version = "py312"
[tool.ruff.lint]
extend-select = ["B", "BLE", "I", "S", "SIM", "UP"]
ignore = ["B008"]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["S101"]
"src/modelforge_api/settings.py" = ["S104"]
"src/modelforge_api/hardware/collectors.py" = ["B023"]