[project]
name = "genai-experience-concierge-backend"
version = "0.1.0"
description = "Backend server for the Gen AI Experience Concierge demo. Hosts multiple LangGraph agents based on the agent design pattern notebooks."
readme = "README.md"
requires-python = "==3.12.*"
dependencies = [
    "langgraph-checkpoint>=2.0.16",
    "pydantic-settings>=2.6.1",
    "fastapi>=0.115.9",
    "uvicorn>=0.34.0",
    "psycopg[binary]>=3.2.5",
    "langgraph-checkpoint-postgres>=2.0.15",
    "google-genai>=1.3.0",
    "langgraph-checkpoint-sqlite>=2.0.5",
    "google-cloud-bigquery>=3.30.0",
    "google-cloud-bigquery-storage>=2.29.0",
    "db-dtypes>=1.4.2",
    "thefuzz>=0.22.1",
    "tenacity>=9.0.0",
    "langgraph>=0.3.21",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["./concierge"]

[dependency-groups]
dev = [
    "ipykernel>=6.29.5",
    "ipython>=9.0.2",
    "mypy>=1.15.0",
    "pylint>=3.3.6",
]

[tool.pyright]
typeCheckingMode = "off"
reportInvalidTypeForm = false

# leave mypy checks to demo sub-projects
[tool.mypy]
packages = ["concierge"]
disable_error_code = ["misc", "import-untyped"]
disallow_untyped_calls = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
no_implicit_optional = true
check_untyped_defs = true
disallow_subclassing_any = true
warn_incomplete_stub = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_unreachable = true
follow_imports = "skip"
ignore_missing_imports = true
explicit_package_bases = true

[tool.pylint.messages_control]
disable=["wrong-import-order"]
