[tool.poetry] name = "telegram-bot-template" version = "2.3.5" description = "Best way to create a scalable telegram bot with analytics" homepage = "https://github.com/donBarbos/telegram-bot-template" repository = "https://github.com/donBarbos/telegram-bot-template" authors = ["donBarbos "] license = "LGPL-v3.0" readme = "README.md" package-mode = false [tool.poetry.dependencies] python = "^3.10" sqlalchemy = "^2.0.37" pydantic = "^2.10.6" pydantic-settings = "^2.7.1" [tool.poetry.group.bot.dependencies] aiogram = "^3.17.0" asyncpg = "^0.30.0" redis = "^5.2.1" loguru = "^0.7.3" sentry-sdk = {extras = ["loguru"], version = "^2.20.0"} aiohttp = {extras = ["speedups"], version = "^3.11.12"} uvloop = "^0.21.0" babel = "^2.17.0" cachetools = "^5.5.1" orjson = "^3.10.15" alembic = "^1.14.1" prometheus-client = "^0.21.1" [tool.poetry.group.admin.dependencies] gunicorn = "^23.0.0" flask = "^3.1.0" flask-admin = "^1.6.1" flask-security-too = "^5.5.2" flask-caching = "^2.3.0" flask-babel = "^4.0.0" flask-sqlalchemy = "^3.1.1" psycopg2-binary = "^2.9.10" tablib = {extras = ["xlsx"], version = "^3.8.0"} [tool.poetry.group.dev.dependencies] ruff = "^0.9.4" mypy = "^1.15.0" pre-commit = "^4.1.0" types-cachetools = "^5.5.0.20240820" [tool.ruff] fix = true unsafe-fixes = true line-length = 120 lint.select = ["ALL"] lint.ignore = ["D", "ANN401", "FIX002", "COM812", "ISC001", "FBT001", "FBT002", "ERA", "ARG005", "PGH003", "A005"] cache-dir = "/tmp/ruff-cache/" extend-exclude = ["logs", "configs", "migrations"] [tool.ruff.lint.isort] no-lines-before = ["future", "standard-library"] known-local-folder = ["bot", "admin"] [tool.ruff.lint.extend-per-file-ignores] "tests/*.py" = ["ANN401", "S101", "S311"] [tool.mypy] python_version = "3.10" files = "bot/*.py" plugins = ["pydantic.mypy"] ignore_missing_imports = false warn_return_any = true warn_unused_configs = true show_error_codes = true show_error_context = true pretty = true disallow_subclassing_any = true disallow_any_generics = true disallow_untyped_calls = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true follow_imports_for_stubs = true namespace_packages = true show_absolute_path = true [[tool.mypy.overrides]] module = "asyncpg.*" ignore_missing_imports = true [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"