[project]
name = "zhibaotong-s1-backend"
version = "0.1.0"
description = "智保通第一阶段统一后端"
requires-python = ">=3.12,<3.13"
dependencies = [
  "alembic>=1.16,<2",
  "asyncmy>=0.2,<1",
  "fastapi>=0.116,<1",
  "httpx>=0.28,<1",
  "pydantic>=2.11,<3",
  "pydantic-settings>=2.10,<3",
  "pwdlib[argon2]>=0.2,<1",
  "pyjwt[crypto]>=2.10,<3",
  "redis>=6,<8",
  "sqlalchemy>=2.0,<3",
  "ulid-py>=1.1,<2",
  "uvicorn[standard]>=0.35,<1",
  "pymysql>=1.1,<2",
  "langchain>=1.0,<2",
  "langchain-openai>=1.0,<2",
  "langsmith>=0.4,<1",
]

[build-system]
requires = ["hatchling>=1.27,<2"]
build-backend = "hatchling.build"

[dependency-groups]
dev = [
  "coverage[toml]>=7.9,<8",
  "mypy>=1.16,<2",
  "pytest>=8.4,<10",
  "pytest-asyncio>=1.0,<2",
  "ruff>=0.12,<1",
  "types-pymysql>=1.1,<2",
]

[tool.uv]
package = true

[[tool.uv.index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true

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

[tool.pytest.ini_options]
addopts = "-q"
testpaths = ["tests"]

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

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]

[tool.mypy]
python_version = "3.12"
strict = true
plugins = ["pydantic.mypy"]
