aiogram/pyproject.toml
Alex Root Junior 180a7297ff
Update typing-extensions version range in dependencies (#1352)
This commit changes the version requirements for typing-extensions in the dependencies section of pyproject.toml file. This change now requires versions that are greater than or equal to 4.7.0 and less than or equal to 5.0. The previous version, 4.8.0, has been found to cause compatibility issues with some other libraries.
2023-10-28 23:09:30 +03:00

346 lines
6.9 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.8"
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.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"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.8.5",
"pydantic>=2.4.1,<2.5",
"aiofiles~=23.2.1",
"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'",
"aiodns>=3.0.0",
]
redis = [
"redis[hiredis]~=5.0.1",
]
proxy = [
"aiohttp-socks~=0.8.3",
]
i18n = [
"Babel~=2.13.0",
]
cli = [
"aiogram-cli~=1.0.3",
]
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~=7.2.6",
"sphinx-intl~=2.1.0",
"sphinx-autobuild~=2021.3.14",
"sphinx-copybutton~=0.5.2",
"furo~=2023.9.10",
"Sphinx-Substitution-Extensions~=2022.2.16",
"towncrier~=23.6.0",
"pygments~=2.16.1",
"pymdown-extensions~=10.3",
"markdown-include~=0.8.1",
"Pygments~=2.16.1",
"sphinxcontrib-towncrier~=0.3.2a0",
]
dev = [
"black~=23.10.0",
"isort~=5.12.0",
"ruff~=0.1.1",
"mypy~=1.6.1",
"toml~=0.10.2",
"pre-commit~=3.5.0",
"packaging~=23.1",
]
[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",
"proxy",
"i18n",
"cli",
]
post-install-commands = [
"pre-commit install",
]
[tool.hatch.envs.default.scripts]
reformat = [
"black aiogram tests",
"isort aiogram tests",
]
lint = "ruff aiogram"
[tool.hatch.envs.docs]
features = [
"fast",
"redis",
"proxy",
"i18n",
"docs",
"cli",
]
[tool.hatch.envs.docs.scripts]
serve = "sphinx-autobuild --watch aiogram/ --watch CHANGELOG.rst --watch README.rst docs/ docs/_build/ {args}"
[tool.hatch.envs.dev]
python = "3.11"
features = [
"dev",
"fast",
"redis",
"proxy",
"i18n",
"test",
"cli",
]
[tool.hatch.envs.dev.scripts]
update = [
"butcher parse",
"butcher refresh",
"butcher apply all",
]
[tool.hatch.envs.test]
features = [
"fast",
"redis",
"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",
]
view-cov = "google-chrome-stable reports/py{matrix:python}/coverage/index.html"
[[tool.hatch.envs.test.matrix]]
python = ["38", "39", "310", "311"]
[tool.ruff]
line-length = 99
select = [
# "C", # TODO: mccabe - code complecity
"C4",
"E",
"F",
"T10",
"T20",
"Q",
"RET",
]
ignore = [
"F401"
]
src = ["aiogram", "tests"]
exclude = [
".git",
"build",
"dist",
"venv",
".venv",
"docs",
"tests",
"dev",
"scripts",
"*.egg-info",
]
target-version = "py310"
[tool.ruff.isort]
known-first-party = [
"aiogram",
"finite_state_machine",
"handlers",
"routes",
]
[tool.ruff.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.8"
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 = ['py38', 'py39', 'py310', 'py311']
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}>`_"
[[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