pydantic<3.0,>=2.0
pydantic-settings>=2.0
httpx[http2]>=0.28.1
anyio>=4.13.0
pyyaml>=6.0
python-dotenv>=1.0
tenacity>=9.0
typer>=0.12
rich>=13.0
fastapi>=0.128.2
uvicorn[standard]>=0.46.0
starlette<2.0.0,>=1.0.1
jinja2>=3.1
sse-starlette>=3.4.2
cryptography>=42.0
defusedxml>=0.7.1
openpyxl>=3.1

[all]
largestack[anthropic,dev-server,guard,litellm,mcp,migrations,office,openai,otel,postgres,rag,test]

[anthropic]
anthropic>=0.40

[dev]
largestack[all]
ruff>=0.5
mypy>=1.10

[dev-server]
fastapi>=0.110
uvicorn[standard]>=0.27
watchfiles>=0.21

[docs]
mkdocs-material>=9.5
pymdown-extensions>=10.0
mkdocstrings[python]>=0.24

[guard]
presidio-analyzer>=2.2
presidio-anonymizer>=2.2

[litellm]
litellm>=1.83.14

[mcp]
fastapi>=0.110
uvicorn>=0.27

[migrations]
alembic>=1.13
sqlalchemy>=2.0

[office]
openpyxl>=3.1
python-pptx>=0.6.23
pandas>=2.2

[openai]
openai>=1.50
tiktoken>=0.7

[otel]
opentelemetry-api>=1.25
opentelemetry-sdk>=1.25

[postgres]
psycopg[binary,pool]>=3.1
sqlalchemy>=2.0

[rag]
sentence-transformers>=3.0
beautifulsoup4>=4.12
faiss-cpu>=1.8
duckdb>=0.10
qdrant-client>=1.9

[test]
pytest>=8.0
pytest-asyncio>=0.24
pytest-timeout>=2.3
hypothesis>=6.0
respx>=0.22
