[project]
name = "letterfeed-backend"
version = "0.1.0"
description = "Backend for LetterFeed"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "apscheduler>=3.11.0",
    "fastapi>=0.116.0",
    "feedgen>=1.0.0",
    "pydantic-settings>=2.10.1",
    "python-dotenv>=1.1.1",
    "sqlalchemy>=2.0.41",
    "uvicorn>=0.35.0",
]

[tool.ruff]
lint.select = [
    "E",    # pycodestyle
    "F",    # pyflakes
    "I",    # isort
    "D",    # pydocstyle
    "D401", # First line should be in imperative mood
    "T201",
    "UP",
]
lint.ignore = [
    "UP006",
    "UP007",
    # We actually do want to import from typing_extensions
    "UP035",
    # Relax the convention by _not_ requiring documentation for every function parameter.
    "D417",
    "D100",
    "E501",
]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["D", "UP"]
[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.mypy]
python_executable=".venv/bin/python"

[tool.pyright]
venvPath='.'
venv=".venv"
include="app"

[dependency-groups]
test = [
    "httpx>=0.28.1",
    "pre-commit>=4.2.0",
    "pytest>=8.4.1",
    "ruff>=0.12.3",
]
