[project] name = "geological-rag-backend" version = "0.1.0" description = "Backend and reproducible PoC tools for the geological prospecting RAG system" readme = "README.md" requires-python = ">=3.12,<3.13" dependencies = [ "alembic>=1.14,<2", "fastapi>=0.115,<1", "httpx>=0.28,<1", "pgvector>=0.3,<1", "psycopg[binary]>=3.2,<4", "pydantic>=2.10,<3", "pydantic-settings>=2.7,<3", "sqlalchemy>=2.0,<3", "uvicorn[standard]>=0.34,<1", ] [dependency-groups] dev = [ "mypy>=1.14,<2", "pytest>=8.3,<10", "pytest-asyncio>=0.25,<2", "ruff>=0.9,<1", ] [build-system] requires = ["hatchling>=1.27,<2"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] [tool.pytest.ini_options] addopts = "-ra --strict-config --strict-markers" asyncio_mode = "auto" testpaths = ["tests"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "B", "UP", "ASYNC", "S"] ignore = ["S101"] [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["S105", "S106", "S603", "S607"] [tool.mypy] python_version = "3.12" strict = true warn_unreachable = true plugins = ["pydantic.mypy"] [[tool.mypy.overrides]] module = ["pgvector.*"] ignore_missing_imports = true