| [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 <donbarbos@proton.me>"] |
| 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" |
|
|