Files
duocthu/apps/ai-service/pyproject.toml
T

42 lines
1.2 KiB
TOML

[project]
name = "ai-service"
version = "0.0.0"
description = "RAG orchestration for the Duoc Thu medical chatbot"
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115,<1",
"httpx>=0.27,<1",
"psycopg[binary]>=3.2,<4",
"pydantic-settings>=2.6,<3",
"qdrant-client>=1.7,<2",
"uvicorn[standard]>=0.30,<1",
]
[project.optional-dependencies]
test = ["pytest>=7.4,<9"]
# Both optional on purpose: the service answers without a metrics stack, and
# without a cloud generator. Neither is a precondition for a grounded answer.
metrics = ["prometheus-client>=0.20,<1"]
generation = ["anthropic>=0.112,<1"]
observability = [
"opentelemetry-api>=1.27,<2",
"opentelemetry-sdk>=1.27,<2",
"opentelemetry-exporter-otlp-proto-http>=1.27,<2",
]
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[tool.ruff]
line-length = 100
[tool.ruff.lint]
select = ["F", "E9", "B", "ARG"]
[tool.ruff.lint.per-file-ignores]
# Test doubles implement the domain's Protocols. Conformance requires the full
# signature even where a double ignores an argument, so ARG here would push
# tests toward fakes that no longer match the interface they stand in for.
"tests/*" = ["ARG001", "ARG002"]