[build-system] requires = ["hatchling>=1.27,<2"] build-backend = "hatchling.build" [project] name = "zhifu-platform" version = "0.1.0" description = "Multi-tenant customer service platform" requires-python = ">=3.12,<3.13" dependencies = [ "fastapi>=0.115,<1", "uvicorn[standard]>=0.34,<1", "pydantic-settings>=2.8,<3", "sqlalchemy[asyncio]>=2.0.39,<2.1", "asyncmy>=0.2.10,<0.3", "alembic>=1.15,<2", "redis>=6,<8", "pwdlib[argon2]>=0.3,<1", "httpx>=0.28,<1", "standardwebhooks>=1.1,<2", "aio-pika>=9.5,<10", "langgraph>=1,<2", "langchain-openai>=1,<2", "openai>=3,<4", "sse-starlette>=3,<4", "httpx-sse>=0.4,<1", "langmem>=0.0.30,<0.1", "langgraph-checkpoint-redis>=0.4,<1", "pymilvus>=2.6,<4", "langchain-text-splitters>=1,<2", "prometheus-client>=0.22,<1", "prometheus-fastapi-instrumentator>=8.1,<9", ] [dependency-groups] dev = ["pytest>=8.3,<10", "pytest-asyncio>=0.25,<2", "httpx>=0.28,<1", "ruff>=0.11,<1", "jsonschema>=4.23,<5", "cryptography>=46,<47", "filelock>=4,<5", "psutil>=7,<8"] inference = ["sentence-transformers>=5,<6", "torch>=2.11,<3"] [tool.uv] default-groups = ["dev", "inference"] [tool.uv.sources] torch = [{ index = "pytorch-cpu", marker = "sys_platform == 'linux'" }] [[tool.uv.index]] name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true [tool.hatch.build.targets.wheel] packages = ["src/zhifu"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" markers = ["integration: requires MySQL, Redis, RabbitMQ, OMS HTTP and Toxiproxy"] [tool.ruff] target-version = "py312" line-length = 100 extend-exclude = [".work"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "ASYNC"]