[build-system] requires = ["setuptools==80.9.0", "wheel==0.46.3"] build-backend = "setuptools.build_meta" [project] name = "backup-tool" version = "2.0.0.dev0" description = "Self-hosted, integrity-first backup appliance" license = "MIT" requires-python = ">=3.12,<3.15" authors = [{ name = "Backup Tool Team" }] dependencies = [ "aiofiles==25.1.0", "aiosqlite==0.22.1", "alembic==1.18.5", "argon2-cffi==25.1.0", "apscheduler==3.11.3", "cryptography==49.0.0", "fastapi==0.136.1", "httpx==0.28.1", "paramiko==5.0.0", "pydantic==2.13.4", "pydantic-settings==2.14.2", "sqlalchemy[asyncio]==2.0.49", "uvicorn[standard]==0.51.0", ] [project.optional-dependencies] dev = [ "jsonschema==4.26.0", "mypy==2.3.0", "pytest==9.0.3", "pytest-asyncio==1.3.0", "ruff==0.16.0", ] prod = ["gunicorn==23.0.0"] [project.scripts] backup-tool = "backup_tool.cli:main" [tool.setuptools] package-dir = { "" = "src" } [tool.setuptools.packages.find] where = ["src"] include = ["backup_tool*"] [tool.setuptools.package-data] backup_tool = ["py.typed"] [tool.pytest.ini_options] asyncio_mode = "auto" [tool.ruff] target-version = "py312" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] [tool.mypy] python_version = "3.12" strict = true packages = ["backup_tool"] mypy_path = "src"