[project] name = "monlet-server" version = "0.1.0" description = "Monlet central server (ingestion, state, incidents, outbox)" requires-python = ">=3.14,<3.15" dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.32", "pydantic>=2.9", "pydantic-settings>=2.6", "sqlalchemy[asyncio]>=2.0.36", "asyncpg>=0.30", "psycopg[binary]>=3.2", "alembic>=1.13", "structlog>=24.4", "prometheus-client>=0.21", "python-multipart>=0.0.12", "httpx>=0.27", ] [project.optional-dependencies] dev = [ "pytest>=8.3", "pytest-asyncio>=0.24", "httpx>=0.27", "testcontainers[postgresql]>=4.8", "ruff>=0.7", "freezegun>=1.5", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["monlet_server"] [tool.uv] package = true [tool.ruff] line-length = 100 target-version = "py314" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] ignore = ["E501", "B008"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]