[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "the-other-dude-backend" version = "9.0.1" description = "MikroTik Fleet Management Portal - Backend API" requires-python = ">=3.12" dependencies = [ "fastapi[standard]>=0.115.0", "sqlalchemy[asyncio]>=2.0.0", "asyncpg>=0.30.0", "alembic>=1.14.0", "pydantic>=2.0.0", "pydantic-settings>=2.0.0", "python-jose[cryptography]>=3.3.0", "bcrypt>=4.0.0,<5.0.0", "redis>=5.0.0", "nats-py>=2.7.0", "cryptography>=42.0.0", "python-multipart>=0.0.9", "httpx>=0.27.0", "asyncssh>=2.20.0", "pygit2>=1.14.0", "apscheduler>=3.10.0,<4.0", "aiosmtplib>=3.0.0", "structlog>=25.1.0", "slowapi>=0.1.9", "jinja2>=3.1.6", "prometheus-fastapi-instrumentator>=7.0.0", "gunicorn>=23.0.0", "sse-starlette>=2.0.0", "weasyprint>=62.0", "srptools==1.0.1", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.25,<1.0", "pytest-mock>=3.14", "httpx>=0.27.0", "pytest-cov>=5.0.0", ] [tool.hatch.build.targets.wheel] packages = ["app"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "integration: marks tests as integration tests requiring PostgreSQL (deselect with '-m \"not integration\"')", ] [tool.ruff] line-length = 100 target-version = "py312"