66 lines
1.6 KiB
TOML
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"]
|