[project] name = "clinical-pilot-hf" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.12" dependencies = [ "alembic>=1.18.4", "celery[redis]>=5.6.3", "chromadb>=1.5.9", "fastapi>=0.136.3", "google-auth>=2.53.0", "google-auth-httplib2>=0.4.0", "google-auth-oauthlib>=1.4.0", "gradio>=6.15.1", "httpx>=0.28.1", "langchain>=1.3.2", "langchain-chroma>=1.1.0", "langchain-community>=0.4.2", "langchain-core>=1.4.0", "langchain-groq>=1.1.2", "langchain-huggingface>=1.2.2", "langchain-mcp-adapters>=0.2.2", "langchain-openai>=1.2.2", "langchain-openrouter>=0.2.3", "langchain-text-splitters>=1.1.2", "langfuse>=4.6.1", "langgraph>=1.2.2", "langgraph-checkpoint-postgres>=3.1.0", "langgraph-prebuilt>=1.1.0", "litellm>=1.86.1", "mem0ai>=2.0.4", "mypy>=2.1.0", "psycopg[binary]>=3.3.4", "pydantic>=2.13.4", "pydantic-settings>=2.14.1", "pypdf>=6.12.2", "pytest>=9.0.3", "pytest-asyncio>=1.4.0", "python-dotenv>=1.2.2", "rank-bm25>=0.2.2", "redis>=6.4.0", "respx>=0.23.1", "ruff>=0.15.14", "sqlalchemy>=2.0.50", "structlog>=25.5.0", "unstructured>=0.21.5", "uvicorn[standard]>=0.48.0", ] [project.optional-dependencies] dev = [ "ruff>=0.6", "mypy>=2.1.0", "pytest>=9.0.3", "pytest-asyncio>=1.4.0", "respx>=0.21", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "B", "UP", "SIM", "RET"] ignore = ["E501"] # handled by formatter [tool.mypy] python_version = "3.12.12" strict = false # best-effort across repo [[tool.mypy.overrides]] module = "app.contracts" strict = true # contracts are the team interface — keep strict [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" addopts = "-ra -q"