Files
brain-of-reese/pyproject.toml
T

54 lines
1.5 KiB
TOML

[project]
name = "brain-of-reese"
version = "0.1.0"
description = "Brain of Reese — a chippy RAG chatbot that answers questions about Reese's Homelab and Deployments, powered by self-hosted models."
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
# --- Web framework ---
"fastapi>=0.115,<1.0",
"uvicorn[standard]>=0.30,<1.0",
"pydantic>=2.7,<3.0",
"pydantic-settings>=2.3,<3.0",
"python-dotenv>=1.0,<2.0",
# --- Database (PostgreSQL 17 + pgvector) ---
"sqlalchemy>=2.0,<2.1",
"alembic>=1.13,<2.0",
"psycopg[binary]>=3.1,<4.0",
"pgvector>=0.3,<1.0",
# --- LLM client (OpenAI-compatible, self-hosted "aipi") ---
"httpx>=0.27,<1.0",
"openai>=1.40,<3.0",
# Phase 16: starlette's SessionMiddleware signs the session cookie with
# itsdangerous — an OPTIONAL starlette extra ("full") since starlette 1.x,
# so the app declares it directly (narrower than starlette[full]).
"itsdangerous>=2.2,<3.0",
]
[dependency-groups]
dev = [
"debugpy>=1.8",
"ruff>=0.5",
"pyright>=1.1",
"pytest>=8.2",
"pytest-cov>=5.0",
"playwright>=1.45",
]
[tool.ruff]
line-length = 100
target-version = "py312"
[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP", "B", "SIM"]
[tool.pyright]
pythonVersion = "3.12"
typeCheckingMode = "standard"
include = ["app", "scripts", "alembic", "tests"]
[tool.pytest.ini_options]
testpaths = ["tests/unit", "tests/integration"]
pythonpath = ["."]
addopts = "-q"