
[all]
alpaca-py>=0.14.0
httpx>=0.24.0
google-auth>=2.52.0
reportlab>=4.0.0
jinja2>=3.0.0
markdown-it-py>=3.0.0
pypdf<6,>=5.0.0
pillow<12,>=10.0.0

[alpaca]
alpaca-py>=0.14.0

[api]
fastapi>=0.136.1
uvicorn[standard]>=0.24.0
pydantic>=2.13.4
pydantic-settings>=2.0.0
httpx>=0.24.0
python-multipart>=0.0.6
PyJWT>=2.8.0

[bridges-pygubernator]

[bridges-pystator]

[ci]
pyactuator[api,documents-read]
pytest>=7.0.0
pytest-asyncio>=0.21.0
pytest-cov>=4.0.0
pytest-timeout>=2.1.0
pytest-xdist>=3.5.0
ruff>=0.9.0
mypy>=1.0.0
pre-commit>=3.0.0
mkdocs<2,>=1.6.1
mkdocs-material>=9.7.6
mkdocstrings[python]>=0.24.0
pymdown-extensions>=10.0.0

[comms-email]

[comms-slack]
httpx>=0.24.0

[comms-twilio]
httpx>=0.24.0

[database-mongo]
pymongo<5,>=4.6

[database-postgres]
psycopg[binary]<4,>=3.1

[database-redis]
redis[hiredis]<6,>=5

[database-sqlite]

[dev]
pyactuator[api]
pyactuator[documents-read]
pytest>=7.0.0
pytest-asyncio>=0.21.0
pytest-cov>=4.0.0
pytest-timeout>=2.1.0
pytest-xdist>=3.5.0
ruff>=0.9.0
mypy>=1.0.0
pre-commit>=3.0.0
build>=0.10.0
twine>=6.2.0
requests>=2.32.3
mkdocs<2,>=1.6.1
mkdocs-material>=9.7.6
mkdocstrings[python]>=0.24.0
pymdown-extensions>=10.0.0
mike>=2.2.0

[docs]
mkdocs<2,>=1.6.1
mkdocs-material>=9.7.6
mkdocstrings[python]>=0.24.0
pymdown-extensions>=10.0.0
mike>=2.2.0

[documents-md]
jinja2>=3.0.0
markdown-it-py>=3.0.0

[documents-pdf]
reportlab>=4.0.0

[documents-read]
pypdf<6,>=5.0.0
pillow<12,>=10.0.0

[fmp]
httpx>=0.24.0

[google]
httpx>=0.24.0
google-auth>=2.52.0

[market-data]
httpx>=0.24.0

[massive]
httpx>=0.24.0

[otel]
opentelemetry-api<2,>=1.24.0
opentelemetry-sdk<2,>=1.24.0
opentelemetry-instrumentation-fastapi>=0.49b0
opentelemetry-instrumentation-httpx>=0.62b1
opentelemetry-exporter-otlp-proto-http<2,>=1.24.0

[research-brave]
httpx>=0.24.0

[research-tavily]
httpx>=0.24.0

[store-mongo]
pymongo<5,>=4.6

[store-postgres]
psycopg[binary]<4,>=3.1

[trading-alpaca]
alpaca-py>=0.14.0

[ui]
fastapi>=0.136.1
uvicorn[standard]>=0.24.0
httpx>=0.24.0
aiofiles>=23.0.0
