alphabrief / apps /api /pyproject.toml
Abdr007's picture
AlphaBrief — deployed tree
69e310f
Raw
History Blame Contribute Delete
2.45 kB
[project]
name = "alphabrief-api"
version = "1.0.0"
description = "AlphaBrief — supervisor-pattern multi-agent research orchestration with MCP tooling and human-in-the-loop governance"
readme = "README.md"
requires-python = ">=3.12,<3.13"
license = { text = "MIT" }
dependencies = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.32.0",
"pydantic>=2.9.0",
"pydantic-settings>=2.6.0",
"langgraph>=0.2.50",
"langgraph-checkpoint>=2.0.0",
"langgraph-checkpoint-postgres>=2.0.0",
# Durable checkpoints for the default SQLite database, so the human gate
# survives a restart without anyone configuring Postgres.
"langgraph-checkpoint-sqlite>=2.0.0",
"anthropic>=0.40.0",
"mcp>=1.1.0",
"yfinance>=0.2.50",
"feedparser>=6.0.11",
"sqlalchemy>=2.0.36",
"psycopg[binary]>=3.2.0",
"langfuse>=2.53.0",
"httpx>=0.27.0",
"sse-starlette>=2.1.3",
"python-dotenv>=1.0.1",
"tenacity>=9.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=6.0.0",
"ruff>=0.8.0",
"mypy>=1.13.0",
# Deploying the API to a Hugging Face Space (scripts/deploy_space.py).
"huggingface-hub>=0.26.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["app"]
# -------------------------------------------------------------- pytest ------
# Ruff + mypy configuration lives in the repo-root pyproject.toml so that one
# quality gate covers apps/api and eval/ together. Pytest is rooted here.
[tool.pytest.ini_options]
minversion = "8.0"
testpaths = ["tests"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
addopts = "-q --strict-markers --strict-config"
filterwarnings = [
"error",
# Third-party internals we do not control. Scoped as tightly as possible so
# a warning raised by OUR code still fails the suite.
"ignore::DeprecationWarning:yfinance",
"ignore::FutureWarning:yfinance",
"ignore::DeprecationWarning:pkg_resources",
"ignore::DeprecationWarning:peewee",
"ignore::DeprecationWarning:websockets",
"ignore:.*'crypt' is deprecated.*:DeprecationWarning",
"ignore:.*datetime.datetime.utcnow.*:DeprecationWarning",
"ignore:.*Support for class-based `config`.*:DeprecationWarning",
]
markers = [
"network: performs a real outbound network call (deselect with '-m \"not network\"')",
]