[project]
name = "huesoporro"
version = "0.3.7"
description = "Misc Twitch bot"
readme = "README.md"
authors = [
    { name = "185504a9", email = "catalin@roboces.dev" }
]
requires-python = ">=3.11"
dependencies = [
    "nltk>=3.9.1",
    "platformdirs>=4.3.6",
    "pydantic>=2.9.2",
    "pydantic-settings>=2.6.0",
    "loguru>=0.7.2",
    "gtts>=2.5.4",
    "litestar[standard]>=2.13.0",
    "httpx>=0.28.0",
    "caribou>=0.4.1",
    "aiosqlite>=0.20.0",
    "pyjwt>=2.10.1",
    "twitchio==3.1.0",
    "redis>=5.2.1",
    "pytz>=2024.2",
    "discord-py>=2.4.0",
    "tenacity>=9.0.0",
    "uvicorn>=0.34.0",
    "sniffio>=1.3.1",
]

[project.scripts]
huesoporro = "apps.cli.typer.main:app"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.uv]
dev-dependencies = [
    "mypy>=1.13.0",
    "pytest>=8.3.4",
    "pytest-asyncio>=0.25.0",
    "ruff>=0.8.3",
    "pytest-coverage>=0.0",
    "polyfactory>=2.18.1",
    "types-pyyaml>=6.0.12.20241230",
]

[[tool.mypy.overrides]]
module = [
    "nltk",
    "nltk.tokenize",
    "nltk.tokenize.treebank",
    "nltk.tokenize.destructive",
    "TwitchWebsocket",
    "tokenizer",
    "caribou.migrate",
    "twitchio",
    "twitchio.ext",
    "gtts",
    "yt_dlp"
]
ignore_missing_imports = true

[tool.ruff.lint]
extend-select = [
    "W", "C90", "I", "N", "UP", "S", "BLE", "B", "A", "COM", "C4", "DTZ", "T10", "EM", "ISC", "T20", "PT", "RSE", "RET",
    "SIM", "PTH", "ERA", "PGH", "PL", "RUF", "FURB", "PERF"
]
extend-ignore = ["S101", "ISC002", "COM812", "ISC001", "EM101", "EM102"]

[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"

[dependency-groups]
cli = [
    "typer>=0.15.1",
    "yt-dlp>=2025.1.26",
]
