[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "demo-agent-service" version = "0.1.0" description = "DEMO Agentic Service Data Eyond — Multi-Agent AI Backend" requires-python = ">=3.12,<3.13" dependencies = [ # --- Web Framework --- "fastapi[standard]==0.115.6", "uvicorn[standard]==0.32.1", "python-multipart==0.0.12", "starlette==0.41.3", "sse-starlette==2.1.3", # --- LangChain Core Ecosystem (NO LiteLLM) --- "langchain==0.3.13", "langchain-core==0.3.28", "langchain-community==0.3.13", "langchain-openai==0.2.14", "langchain-postgres>=0.0.13", "langgraph==0.2.60", "langgraph-checkpoint-postgres==2.0.9", # --- LLM / Azure OpenAI --- "openai==1.58.1", "tiktoken==0.8.0", # --- Database --- "sqlalchemy[asyncio]==2.0.36", "asyncpg==0.30.0", "psycopg[binary,pool]==3.2.3", "pgvector==0.3.6", "alembic==1.14.0", # --- Azure --- "azure-storage-blob==12.23.1", "azure-identity==1.19.0", "azure-ai-documentintelligence==1.0.0", # --- Pydantic / Validation --- "pydantic==2.10.3", "pydantic-settings==2.7.0", # --- Observability --- "langfuse==2.57.4", "structlog==24.4.0", "prometheus-client==0.21.1", # --- Security --- "passlib[bcrypt]==1.7.4", "cryptography==44.0.0", # --- Rate Limiting --- "slowapi==0.1.9", "redis==5.2.1", # --- Retry --- "tenacity==9.0.0", # --- Document Processing (for reading existing docs from blob) --- "pypdf==5.1.0", "python-docx==1.1.2", "openpyxl==3.1.5", "pandas==2.2.3", # --- Chart/Visualization --- "matplotlib==3.9.3", "plotly==5.24.1", "kaleido==0.2.1", # --- MCP --- "mcp==1.2.0", # --- Advanced RAG --- "rank-bm25==0.2.2", "sentence-transformers==3.3.1", # --- PII Detection (no LiteLLM) --- "presidio-analyzer==2.2.355", "presidio-anonymizer==2.2.355", "spacy==3.8.3", # --- Utilities --- "httpx==0.28.1", "anyio==4.7.0", "python-dotenv==1.0.1", "orjson==3.10.12", "cachetools==5.5.0", "apscheduler==3.10.4", "jsonpatch>=1.33", "pymongo>=4.14.0", "psycopg2>=2.9.11", ] [project.optional-dependencies] dev = [ "pytest==8.3.4", "pytest-asyncio==0.24.0", "pytest-cov==6.0.0", "httpx==0.28.1", "ruff==0.8.4", "mypy==1.13.0", "pre-commit==4.0.1", ] [tool.uv] dev-dependencies = [ "pytest==8.3.4", "pytest-asyncio==0.24.0", "pytest-cov==6.0.0", "ruff==0.8.4", "mypy==1.13.0", "pre-commit==4.0.1", ] [tool.hatch.build.targets.wheel] packages = ["src/agent_service"] [tool.ruff] target-version = "py312" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "UP", "S", "B", "A", "C4", "T20"] ignore = [ "S101", # assert statements OK in tests "S105", # hardcoded passwords — false positives in config "S106", "B008", # FastAPI Depends() calls OK in function args ] [tool.ruff.lint.per-file-ignores] "tests/**" = ["S101", "S105", "S106"] [tool.mypy] python_version = "3.12" strict = true ignore_missing_imports = true plugins = ["pydantic.mypy"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] filterwarnings = [ "ignore::DeprecationWarning", ]