mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2024-12-22 14:35:00 +01:00
Migrate From setup.cfg
to pyproject.toml
Where Possible (#4088)
This commit is contained in:
parent
f3bda29e51
commit
6ae7add722
4 changed files with 99 additions and 94 deletions
|
@ -21,12 +21,6 @@ repos:
|
||||||
hooks:
|
hooks:
|
||||||
- id: pylint
|
- id: pylint
|
||||||
files: ^(telegram|examples)/.*\.py$
|
files: ^(telegram|examples)/.*\.py$
|
||||||
args:
|
|
||||||
- --rcfile=setup.cfg
|
|
||||||
# run pylint across multiple cpu cores to speed it up-
|
|
||||||
# https://pylint.pycqa.org/en/latest/user_guide/run.html?#parallel-execution to know more
|
|
||||||
- --jobs=0
|
|
||||||
|
|
||||||
additional_dependencies:
|
additional_dependencies:
|
||||||
- httpx~=0.26.0
|
- httpx~=0.26.0
|
||||||
- tornado~=6.4
|
- tornado~=6.4
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
sphinx==7.2.6
|
sphinx==7.2.6
|
||||||
sphinx-pypi-upload
|
|
||||||
furo==2024.1.29
|
furo==2024.1.29
|
||||||
git+https://github.com/harshil21/furo-sphinx-search@v0.2.0.1
|
git+https://github.com/harshil21/furo-sphinx-search@v0.2.0.1
|
||||||
sphinx-paramlinks==0.6.0
|
sphinx-paramlinks==0.6.0
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
|
# BLACK:
|
||||||
[tool.black]
|
[tool.black]
|
||||||
line-length = 99
|
line-length = 99
|
||||||
target-version = ['py38', 'py39', 'py310', 'py311']
|
target-version = ['py38', 'py39', 'py310', 'py311']
|
||||||
|
|
||||||
|
# ISORT:
|
||||||
[tool.isort] # black config
|
[tool.isort] # black config
|
||||||
profile = "black"
|
profile = "black"
|
||||||
line_length = 99
|
line_length = 99
|
||||||
|
|
||||||
|
# RUFF:
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
line-length = 99
|
line-length = 99
|
||||||
target-version = "py38"
|
target-version = "py38"
|
||||||
|
@ -24,3 +27,99 @@ explicit-preview-rules = true
|
||||||
[tool.ruff.per-file-ignores]
|
[tool.ruff.per-file-ignores]
|
||||||
"tests/*.py" = ["B018"]
|
"tests/*.py" = ["B018"]
|
||||||
"tests/**.py" = ["RUF012"]
|
"tests/**.py" = ["RUF012"]
|
||||||
|
|
||||||
|
# PYLINT:
|
||||||
|
[tool.pylint."messages control"]
|
||||||
|
enable = ["useless-suppression"]
|
||||||
|
disable = ["duplicate-code", "too-many-arguments", "too-many-public-methods",
|
||||||
|
"too-few-public-methods", "broad-exception-caught", "too-many-instance-attributes",
|
||||||
|
"fixme", "missing-function-docstring", "missing-class-docstring", "too-many-locals",
|
||||||
|
"too-many-lines", "too-many-branches", "too-many-statements", "cyclic-import"
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.pylint.main]
|
||||||
|
# run pylint across multiple cpu cores to speed it up-
|
||||||
|
# https://pylint.pycqa.org/en/latest/user_guide/run.html?#parallel-execution to know more
|
||||||
|
jobs = 0
|
||||||
|
|
||||||
|
[tool.pylint.classes]
|
||||||
|
exclude-protected = ["_unfrozen"]
|
||||||
|
|
||||||
|
# PYTEST:
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
testpaths = ["tests"]
|
||||||
|
addopts = "--no-success-flaky-report -rsxX"
|
||||||
|
filterwarnings = [
|
||||||
|
"error",
|
||||||
|
"ignore::DeprecationWarning",
|
||||||
|
'ignore:Tasks created via `Application\.create_task` while the application is not running',
|
||||||
|
"ignore::ResourceWarning",
|
||||||
|
# TODO: Write so good code that we don't need to ignore ResourceWarnings anymore
|
||||||
|
# Unfortunately due to https://github.com/pytest-dev/pytest/issues/8343 we can't have this here
|
||||||
|
# and instead do a trick directly in tests/conftest.py
|
||||||
|
# ignore::telegram.utils.deprecate.TelegramDeprecationWarning
|
||||||
|
]
|
||||||
|
markers = [
|
||||||
|
"dev", # If you want to test a specific test, use this
|
||||||
|
"no_req",
|
||||||
|
"req",
|
||||||
|
]
|
||||||
|
asyncio_mode = "auto"
|
||||||
|
|
||||||
|
# MYPY:
|
||||||
|
[tool.mypy]
|
||||||
|
warn_unused_ignores = true
|
||||||
|
warn_unused_configs = true
|
||||||
|
disallow_untyped_defs = true
|
||||||
|
disallow_incomplete_defs = true
|
||||||
|
disallow_untyped_decorators = true
|
||||||
|
show_error_codes = true
|
||||||
|
python_version = "3.8"
|
||||||
|
|
||||||
|
# For some files, it's easier to just disable strict-optional all together instead of
|
||||||
|
# cluttering the code with `# type: ignore`s or stuff like
|
||||||
|
# `if self.text is None: raise RuntimeError()`
|
||||||
|
[[tool.mypy.overrides]]
|
||||||
|
module = [
|
||||||
|
"telegram._callbackquery",
|
||||||
|
"telegram._file",
|
||||||
|
"telegram._message",
|
||||||
|
"telegram._files.file"
|
||||||
|
]
|
||||||
|
strict_optional = false
|
||||||
|
|
||||||
|
# type hinting for asyncio in webhookhandler is a bit tricky because it depends on the OS
|
||||||
|
[[tool.mypy.overrides]]
|
||||||
|
module = "telegram.ext._utils.webhookhandler"
|
||||||
|
warn_unused_ignores = false
|
||||||
|
|
||||||
|
# The libs listed below are only used for the `customwebhookbot_*.py` examples
|
||||||
|
# let's just ignore type checking for them for now
|
||||||
|
[[tool.mypy.overrides]]
|
||||||
|
module = [
|
||||||
|
"flask.*",
|
||||||
|
"quart.*",
|
||||||
|
"starlette.*",
|
||||||
|
"uvicorn.*",
|
||||||
|
"asgiref.*",
|
||||||
|
"django.*",
|
||||||
|
"apscheduler.*", # not part of `customwebhookbot_*.py` examples
|
||||||
|
]
|
||||||
|
ignore_missing_imports = true
|
||||||
|
|
||||||
|
# COVERAGE:
|
||||||
|
[tool.coverage.run]
|
||||||
|
branch = true
|
||||||
|
source = ["telegram"]
|
||||||
|
parallel = true
|
||||||
|
concurrency = ["thread", "multiprocessing"]
|
||||||
|
omit = [
|
||||||
|
"tests/",
|
||||||
|
"telegram/__main__.py"
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.coverage.report]
|
||||||
|
exclude_also = [
|
||||||
|
"@overload",
|
||||||
|
"if TYPE_CHECKING:"
|
||||||
|
]
|
||||||
|
|
87
setup.cfg
87
setup.cfg
|
@ -1,95 +1,8 @@
|
||||||
[metadata]
|
[metadata]
|
||||||
license_files = LICENSE, LICENSE.dual, LICENSE.lesser
|
license_files = LICENSE, LICENSE.dual, LICENSE.lesser
|
||||||
|
|
||||||
[build_sphinx]
|
|
||||||
source-dir = docs/source
|
|
||||||
build-dir = docs/build
|
|
||||||
all_files = 1
|
|
||||||
|
|
||||||
[upload_sphinx]
|
|
||||||
upload-dir = docs/build/html
|
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
max-line-length = 99
|
max-line-length = 99
|
||||||
ignore = W503, W605
|
ignore = W503, W605
|
||||||
extend-ignore = E203
|
extend-ignore = E203
|
||||||
exclude = setup.py, setup-raw.py docs/source/conf.py
|
exclude = setup.py, setup-raw.py docs/source/conf.py
|
||||||
|
|
||||||
[pylint.message-control]
|
|
||||||
disable = duplicate-code,too-many-arguments,too-many-public-methods,too-few-public-methods,
|
|
||||||
broad-except,too-many-instance-attributes,fixme,missing-function-docstring,
|
|
||||||
missing-class-docstring,too-many-locals,too-many-lines,too-many-branches,
|
|
||||||
too-many-statements, cyclic-import
|
|
||||||
enable=useless-suppression ; Warns about unused pylint ignores
|
|
||||||
exclude-protected=_unfrozen
|
|
||||||
|
|
||||||
[tool:pytest]
|
|
||||||
testpaths = tests
|
|
||||||
addopts = --no-success-flaky-report -rsxX
|
|
||||||
filterwarnings =
|
|
||||||
error
|
|
||||||
ignore::DeprecationWarning
|
|
||||||
ignore:Tasks created via `Application\.create_task` while the application is not running
|
|
||||||
ignore::ResourceWarning
|
|
||||||
; TODO: Write so good code that we don't need to ignore ResourceWarnings anymore
|
|
||||||
|
|
||||||
; Unfortunately due to https://github.com/pytest-dev/pytest/issues/8343 we can't have this here
|
|
||||||
; and instead do a trick directly in tests/conftest.py
|
|
||||||
; ignore::telegram.utils.deprecate.TelegramDeprecationWarning
|
|
||||||
markers =
|
|
||||||
dev: If you want to test a specific test, use this
|
|
||||||
no_req
|
|
||||||
req
|
|
||||||
asyncio_mode = auto
|
|
||||||
|
|
||||||
[coverage:run]
|
|
||||||
branch = True
|
|
||||||
source = telegram
|
|
||||||
parallel = True
|
|
||||||
concurrency = thread, multiprocessing
|
|
||||||
omit =
|
|
||||||
tests/
|
|
||||||
telegram/__main__.py
|
|
||||||
|
|
||||||
[coverage:report]
|
|
||||||
exclude_lines =
|
|
||||||
pragma: no cover
|
|
||||||
@overload
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
|
|
||||||
[mypy]
|
|
||||||
warn_unused_ignores = True
|
|
||||||
warn_unused_configs = True
|
|
||||||
disallow_untyped_defs = True
|
|
||||||
disallow_incomplete_defs = True
|
|
||||||
disallow_untyped_decorators = True
|
|
||||||
show_error_codes = True
|
|
||||||
python_version = 3.8
|
|
||||||
|
|
||||||
# For some files, it's easier to just disable strict-optional all together instead of
|
|
||||||
# cluttering the code with `# type: ignore`s or stuff like
|
|
||||||
# `if self.text is None: raise RuntimeError()`
|
|
||||||
[mypy-telegram._callbackquery,telegram._file,telegram._message,telegram._files.file]
|
|
||||||
strict_optional = False
|
|
||||||
|
|
||||||
# type hinting for asyncio in webhookhandler is a bit tricky because it depends on the OS
|
|
||||||
[mypy-telegram.ext._utils.webhookhandler]
|
|
||||||
warn_unused_ignores = False
|
|
||||||
|
|
||||||
[mypy-apscheduler.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
|
|
||||||
# The libs listed below are only used for the `customwebhookbot_*.py` examples
|
|
||||||
# let's just ignore type checking for them for now
|
|
||||||
[mypy-uvicorn.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
[mypy-starlette.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
[mypy-asgiref.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
[mypy-flask.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
[mypy-quart.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
[mypy-django.*]
|
|
||||||
ignore_missing_imports = True
|
|
||||||
|
|
Loading…
Reference in a new issue