anthropic>=0.40.0
langgraph>=0.2.0
pydantic>=2.0.0
python-dotenv>=1.0.0
typer>=0.12.0
rich>=13.0.0
httpx>=0.27.0
chromadb>=0.5.0
pyyaml>=6.0.0
tenacity>=9.0
pybreaker>=1.0
libcst>=1.8.6
bump-pydantic==0.8.0
ruff>=0.9.0
rapidfuzz>=3.0
radon>=6.0
tree-sitter>=0.25
tree-sitter-python>=0.25
networkx>=3.0
scipy>=1.10

[brownfield]
networkx>=3.0
gitpython>=3.1.0
unidiff>=0.7.0
pytest-testmon>=2.0.0

[dev]
pytest>=8.0.0
pytest-asyncio>=0.23.0
ruff>=0.6.0

[full]
ollama>=0.3.0
duckduckgo-search>=6.0.0
dspy>=2.6.0
networkx>=3.0
gitpython>=3.1.0
unidiff>=0.7.0
pytest-testmon>=2.0.0
apscheduler<4.0,>=3.11
tenacity>=9.0
pybreaker>=1.0
feedparser>=6.0
pybloom-live>=4.0
scikit-learn>=1.5
sentence-transformers>=3.0
schemathesis>=3.0.0
hypothesis>=6.0.0
hypothesis-jsonschema>=0.23.0

[local]
ollama>=0.3.0

[multiservice]
openapi-pydantic>=0.5.0
python-on-whales>=0.70.0
schemathesis>=3.0.0
pyyaml>=6.0.0

[optimize]
dspy>=2.6.0

[photosynthesis]
apscheduler<4.0,>=3.11
tenacity>=9.0
pybreaker>=1.0
feedparser>=6.0
pybloom-live>=4.0
scikit-learn>=1.5
sentence-transformers>=3.0

[photosynthesis-test]
apscheduler<4.0,>=3.11
tenacity>=9.0
pybreaker>=1.0
feedparser>=6.0
respx>=0.21

[search]
duckduckgo-search>=6.0.0

[security]
guarddog>=0.2
pip-audit>=2.7

[verification]
schemathesis>=3.0.0
hypothesis>=6.0.0
hypothesis-jsonschema>=0.23.0
mypy>=1.0.0
