[project]
name = "kbqa"
version = "0.1.0"
description = "Local dual-agent knowledge-base question answering system"
readme = "../README.md"
requires-python = ">=3.12,<3.13"
dependencies = [
  "aiosqlite>=0.21,<1",
  "alembic>=1.16,<2",
  "fastapi>=0.116,<1",
  "langchain>=1,<2",
  "langchain-openai>=1,<2",
  "langchain-text-splitters>=1,<2",
  "pydantic-settings>=2.10,<3",
  "pymilvus[milvus-lite]>=2.6,<3",
  "pypdf>=5,<7",
  "python-multipart>=0.0.20,<1",
  "sqlalchemy[asyncio]>=2.0.41,<3",
  "uvicorn[standard]>=0.35,<1",
]

[dependency-groups]
dev = [
  "httpx>=0.28,<1",
  "pytest>=8,<10",
  "pytest-asyncio>=1,<2",
  "pytest-timeout>=2,<3",
  "ruff>=0.12,<1",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/kbqa"]

[tool.pytest.ini_options]
asyncio_mode = "auto"
markers = ["live: requires real DashScope and LangSmith credentials"]

[tool.ruff]
target-version = "py312"
line-length = 100
