[project] name = "zhibaotong-s2-backend" version = "0.2.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", "pymilvus>=2.6,<3", "flagembedding>=1.3,<2", "transformers>=4.44.2,<5", "python-multipart>=0.0.20,<1", "pypdf>=6,<7", "pillow>=11,<13", ] [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"]