mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
* Try to enable tests on Python 3.13 * Remove support for Python 3.8 and PyPy 3.8 Dropped Python 3.8 and PyPy 3.8 from the CI workflow and updated the minimum required Python version to 3.9 in pyproject.toml. Also updated dependencies and tools to align with the new minimum Python version. * Added changelog * Reformat code * Bump mypy python version
364 lines
7.6 KiB
TOML
364 lines
7.6 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "aiogram"
|
|
description = 'Modern and fully asynchronous framework for Telegram Bot API'
|
|
readme = "README.rst"
|
|
requires-python = ">=3.9"
|
|
license = "MIT"
|
|
authors = [
|
|
{ name = "Alex Root Junior", email = "jroot.junior@gmail.com" },
|
|
]
|
|
maintainers = [
|
|
{ name = "Alex Root Junior", email = "jroot.junior@gmail.com" },
|
|
]
|
|
keywords = [
|
|
"telegram",
|
|
"bot",
|
|
"api",
|
|
"framework",
|
|
"wrapper",
|
|
"asyncio",
|
|
]
|
|
classifiers = [
|
|
"License :: OSI Approved :: MIT License",
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Environment :: Console",
|
|
"Framework :: AsyncIO",
|
|
"Typing :: Typed",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: System Administrators",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Communications :: Chat",
|
|
]
|
|
dependencies = [
|
|
"magic-filter>=1.0.12,<1.1",
|
|
"aiohttp>=3.9.0,<3.11",
|
|
"pydantic>=2.4.1,<2.10",
|
|
"aiofiles>=23.2.1,<24.2",
|
|
"certifi>=2023.7.22",
|
|
"typing-extensions>=4.7.0,<=5.0",
|
|
]
|
|
dynamic = ["version"]
|
|
|
|
[tool.hatch.version]
|
|
path = "aiogram/__meta__.py"
|
|
|
|
[project.optional-dependencies]
|
|
fast = [
|
|
"uvloop>=0.17.0; (sys_platform == 'darwin' or sys_platform == 'linux') and platform_python_implementation != 'PyPy' and python_version < '3.13'",
|
|
"uvloop>=0.21.0; (sys_platform == 'darwin' or sys_platform == 'linux') and platform_python_implementation != 'PyPy' and python_version >= '3.13'",
|
|
"aiodns>=3.0.0",
|
|
]
|
|
redis = [
|
|
"redis[hiredis]>=5.0.1,<5.1.0",
|
|
]
|
|
mongo = [
|
|
"motor>=3.3.2,<3.7.0",
|
|
]
|
|
proxy = [
|
|
"aiohttp-socks~=0.8.3",
|
|
]
|
|
i18n = [
|
|
"Babel~=2.13.0",
|
|
]
|
|
cli = [
|
|
"aiogram-cli>=1.1.0,<2.0.0",
|
|
]
|
|
test = [
|
|
"pytest~=7.4.2",
|
|
"pytest-html~=4.0.2",
|
|
"pytest-asyncio~=0.21.1",
|
|
"pytest-lazy-fixture~=0.6.3",
|
|
"pytest-mock~=3.12.0",
|
|
"pytest-mypy~=0.10.3",
|
|
"pytest-cov~=4.1.0",
|
|
"pytest-aiohttp~=1.0.5",
|
|
"aresponses~=2.1.6",
|
|
"pytz~=2023.3",
|
|
"pycryptodomex~=3.19.0",
|
|
]
|
|
docs = [
|
|
"Sphinx~=8.0.2",
|
|
"sphinx-intl~=2.2.0",
|
|
"sphinx-autobuild~=2024.9.3",
|
|
"sphinx-copybutton~=0.5.2",
|
|
"furo~=2024.8.6",
|
|
"Sphinx-Substitution-Extensions~=2024.8.6",
|
|
"towncrier~=24.8.0",
|
|
"pygments~=2.18.0",
|
|
"pymdown-extensions~=10.3",
|
|
"markdown-include~=0.8.1",
|
|
"sphinxcontrib-towncrier~=0.4.0a0",
|
|
]
|
|
dev = [
|
|
"black~=24.4.2",
|
|
"isort~=5.13.2",
|
|
"ruff~=0.5.1",
|
|
"mypy~=1.10.0",
|
|
"toml~=0.10.2",
|
|
"pre-commit~=3.5",
|
|
"packaging~=24.1",
|
|
"motor-types~=1.0.0b4",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://aiogram.dev/"
|
|
Documentation = "https://docs.aiogram.dev/"
|
|
Repository = "https://github.com/aiogram/aiogram/"
|
|
|
|
[tool.hatch.envs.default]
|
|
features = [
|
|
"dev",
|
|
"fast",
|
|
"redis",
|
|
"mongo",
|
|
"proxy",
|
|
"i18n",
|
|
"cli",
|
|
]
|
|
post-install-commands = [
|
|
"pre-commit install",
|
|
]
|
|
|
|
[tool.hatch.envs.default.scripts]
|
|
reformat = [
|
|
"black aiogram tests examples",
|
|
"isort aiogram tests examples",
|
|
]
|
|
lint = "ruff check aiogram tests examples"
|
|
|
|
[tool.hatch.envs.docs]
|
|
features = [
|
|
"fast",
|
|
"redis",
|
|
"mongo",
|
|
"proxy",
|
|
"i18n",
|
|
"docs",
|
|
"cli",
|
|
]
|
|
[tool.hatch.envs.docs.scripts]
|
|
serve = "sphinx-autobuild --watch aiogram/ --watch CHANGES.rst --watch README.rst docs/ docs/_build/ {args}"
|
|
|
|
[tool.hatch.envs.dev]
|
|
python = "3.12"
|
|
features = [
|
|
"dev",
|
|
"fast",
|
|
"redis",
|
|
"mongo",
|
|
"proxy",
|
|
"i18n",
|
|
"test",
|
|
"cli",
|
|
]
|
|
|
|
[tool.hatch.envs.dev.scripts]
|
|
update = [
|
|
"butcher parse",
|
|
"butcher refresh",
|
|
"butcher apply all",
|
|
]
|
|
|
|
[tool.hatch.envs.test]
|
|
features = [
|
|
"fast",
|
|
"redis",
|
|
"mongo",
|
|
"proxy",
|
|
"i18n",
|
|
"test",
|
|
"cli",
|
|
]
|
|
|
|
[tool.hatch.envs.test.scripts]
|
|
cov = [
|
|
"pytest --cov-config pyproject.toml --cov=aiogram --html=reports/py{matrix:python}/tests/index.html {args}",
|
|
"coverage html -d reports/py{matrix:python}/coverage",
|
|
]
|
|
cov-redis = [
|
|
"pytest --cov-config pyproject.toml --cov=aiogram --html=reports/py{matrix:python}/tests/index.html --redis {env:REDIS_DNS:'redis://localhost:6379'} {args}",
|
|
"coverage html -d reports/py{matrix:python}/coverage",
|
|
]
|
|
cov-mongo = [
|
|
"pytest --cov-config pyproject.toml --cov=aiogram --html=reports/py{matrix:python}/tests/index.html --mongo {env:MONGO_DNS:'mongodb://mongo:mongo@localhost:27017'} {args}",
|
|
"coverage html -d reports/py{matrix:python}/coverage",
|
|
]
|
|
view-cov = "google-chrome-stable reports/py{matrix:python}/coverage/index.html"
|
|
|
|
|
|
[[tool.hatch.envs.test.matrix]]
|
|
python = ["39", "310", "311", "312", "313"]
|
|
|
|
[tool.ruff]
|
|
line-length = 99
|
|
src = ["aiogram", "tests"]
|
|
exclude = [
|
|
".git",
|
|
"build",
|
|
"dist",
|
|
"venv",
|
|
".venv",
|
|
"docs",
|
|
"tests",
|
|
"dev",
|
|
"scripts",
|
|
"*.egg-info",
|
|
]
|
|
target-version = "py39"
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
# "C", # TODO: mccabe - code complecity
|
|
"C4",
|
|
"E",
|
|
"F",
|
|
"T10",
|
|
"T20",
|
|
"Q",
|
|
"RET",
|
|
]
|
|
ignore = [
|
|
"F401"
|
|
]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = [
|
|
"aiogram",
|
|
"finite_state_machine",
|
|
"handlers",
|
|
"routes",
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"aiogram/client/bot.py" = ["E501"]
|
|
"aiogram/types/*" = ["E501"]
|
|
"aiogram/methods/*" = ["E501"]
|
|
"aiogram/enums/*" = ["E501"]
|
|
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = [
|
|
"tests",
|
|
]
|
|
filterwarnings = [
|
|
"error",
|
|
"ignore::pytest.PytestUnraisableExceptionWarning",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
branch = false
|
|
parallel = true
|
|
omit = [
|
|
"aiogram/__about__.py",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"if __name__ == .__main__.:",
|
|
"pragma: no cover",
|
|
"if TYPE_CHECKING:",
|
|
"@abstractmethod",
|
|
"@overload",
|
|
]
|
|
|
|
[tool.mypy]
|
|
plugins = "pydantic.mypy"
|
|
python_version = "3.9"
|
|
show_error_codes = true
|
|
show_error_context = true
|
|
pretty = true
|
|
ignore_missing_imports = false
|
|
warn_unused_configs = 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
|
|
warn_return_any = true
|
|
follow_imports_for_stubs = true
|
|
namespace_packages = true
|
|
show_absolute_path = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = [
|
|
"aiofiles",
|
|
"async_lru",
|
|
"uvloop",
|
|
"redis.*",
|
|
"babel.*",
|
|
]
|
|
ignore_missing_imports = true
|
|
disallow_untyped_defs = true
|
|
|
|
[tool.black]
|
|
line-length = 99
|
|
target-version = ['py39', 'py310', 'py311', 'py312', 'py313']
|
|
exclude = '''
|
|
(
|
|
\.eggs
|
|
| \.git
|
|
| \.tox
|
|
| build
|
|
| dist
|
|
| venv
|
|
| docs
|
|
)
|
|
'''
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
|
|
[tool.towncrier]
|
|
package = "aiogram"
|
|
filename = "CHANGES.rst"
|
|
directory = "CHANGES/"
|
|
template = "CHANGES/.template.rst.jinja2"
|
|
issue_format = "`#{issue} <https://github.com/aiogram/aiogram/issues/{issue}>`_"
|
|
ignore = [
|
|
".template.rst.jinja2",
|
|
]
|
|
|
|
[[tool.towncrier.section]]
|
|
path = ""
|
|
|
|
[[tool.towncrier.type]]
|
|
directory = "feature"
|
|
name = "Features"
|
|
showcontent = true
|
|
|
|
[[tool.towncrier.type]]
|
|
directory = "bugfix"
|
|
name = "Bugfixes"
|
|
showcontent = true
|
|
|
|
[[tool.towncrier.type]]
|
|
directory = "doc"
|
|
name = "Improved Documentation"
|
|
showcontent = true
|
|
|
|
[[tool.towncrier.type]]
|
|
directory = "removal"
|
|
name = "Deprecations and Removals"
|
|
showcontent = true
|
|
|
|
[[tool.towncrier.type]]
|
|
directory = "misc"
|
|
name = "Misc"
|
|
showcontent = true
|