[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"]