Migrate mypy config to pyproject.toml (#3936)

Co-authored-by: Charles Patel <charles.patel@apkudo.com>
This commit is contained in:
Charles Patel 2023-10-16 07:24:16 -05:00 committed by GitHub
parent 3bb92146f5
commit 6f84f65285
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 40 additions and 54 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
_build
.DS_Store
.vscode
.python-version
docs/_static/pypi.svg
.tox
__pycache__

View File

@ -43,6 +43,7 @@ repos:
hooks:
- id: mypy
exclude: ^docs/conf.py
args: ["--config-file", "pyproject.toml"]
additional_dependencies:
- types-PyYAML
- tomli >= 0.2.6, < 2.0.0
@ -51,6 +52,10 @@ repos:
- platformdirs >= 2.1.0
- pytest
- hypothesis
- aiohttp >= 3.7.4
- types-commonmark
- urllib3
- hypothesmith
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.0.3

View File

@ -1,46 +0,0 @@
[mypy]
# Specify the target platform details in config, so your developers are
# free to run mypy on Windows, Linux, or macOS and get consistent
# results.
python_version=3.8
mypy_path=src
show_column_numbers=True
show_error_codes=True
# be strict
strict=True
# except for...
no_implicit_reexport = False
# Unreachable blocks have been an issue when compiling mypyc, let's try
# to avoid 'em in the first place.
warn_unreachable=True
[mypy-blib2to3.driver.*]
ignore_missing_imports = True
[mypy-IPython.*]
ignore_missing_imports = True
[mypy-colorama.*]
ignore_missing_imports = True
[mypy-pathspec.*]
ignore_missing_imports = True
[mypy-tokenize_rt.*]
ignore_missing_imports = True
[mypy-uvloop.*]
ignore_missing_imports = True
[mypy-_black_version.*]
ignore_missing_imports = True
# CI only checks src/, but in case users are running LSP or similar we explicitly ignore
# errors in test data files.
[mypy-tests.data.*]
ignore_errors = True

View File

@ -137,6 +137,7 @@ exclude = [
# Compiled modules can't be run directly and that's a problem here:
"/src/black/__main__.py",
]
mypy-args = ["--ignore-missing-imports"]
options = { debug_level = "0" }
[tool.cibuildwheel]
@ -223,3 +224,26 @@ omit = [
]
[tool.coverage.run]
relative_files = true
[tool.mypy]
# Specify the target platform details in config, so your developers are
# free to run mypy on Windows, Linux, or macOS and get consistent
# results.
python_version = "3.8"
mypy_path = "src"
strict = true
# Unreachable blocks have been an issue when compiling mypyc, let's try to avoid 'em in the first place.
warn_unreachable = true
implicit_reexport = true
show_error_codes = true
show_column_numbers = true
[[tool.mypy.overrides]]
module = ["pathspec.*", "IPython.*", "colorama.*", "tokenize_rt.*", "uvloop.*", "_black_version.*"]
ignore_missing_imports = true
# CI only checks src/, but in case users are running LSP or similar we explicitly ignore
# errors in test data files.
[[tool.mypy.overrides]]
module = ["tests.data.*"]
ignore_errors = true

View File

@ -14,7 +14,7 @@
import commonmark
import yaml
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup # type: ignore[import]
def main(changes: str, source_version_control: str) -> None:

View File

@ -8,7 +8,7 @@
import sys
import commonmark
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup # type: ignore[import]
def main(changes: str, the_basics: str) -> None:

View File

@ -119,7 +119,7 @@ def main() -> None:
@main.command("config", help="Acquire run configuration and metadata.")
@click.argument("event", type=click.Choice(["push", "pull_request"]))
def config(event: Literal["push", "pull_request"]) -> None:
import diff_shades
import diff_shades # type: ignore[import]
if event == "push":
jobs = [{"mode": "preview-changes", "force-flag": "--force-preview-style"}]

View File

@ -80,7 +80,7 @@ def test_idempotent_any_syntatically_valid_python(
try:
import sys
import atheris
import atheris # type: ignore[import]
except ImportError:
pass
else:

View File

@ -20,7 +20,7 @@
from os.path import basename, dirname, join
from typing import Iterable, Tuple
import wcwidth
import wcwidth # type: ignore[import]
def make_width_table() -> Iterable[Tuple[int, int, int]]:

View File

@ -74,7 +74,9 @@ def main(bind_host: str, bind_port: int) -> None:
app = make_app()
ver = black.__version__
black.out(f"blackd version {ver} listening on {bind_host} port {bind_port}")
web.run_app(app, host=bind_host, port=bind_port, handle_signals=True, print=None)
# TODO: aiohttp had an incorrect annotation for `print` argument,
# It'll be fixed once aiohttp releases that code
web.run_app(app, host=bind_host, port=bind_port, handle_signals=True, print=None) # type: ignore[arg-type]
def make_app() -> web.Application:

View File

@ -26,7 +26,7 @@
from pytest import StashKey
except ImportError:
# pytest < 7
from _pytest.store import StoreKey as StashKey # type: ignore[no-redef]
from _pytest.store import StoreKey as StashKey # type: ignore[import, no-redef]
log = logging.getLogger(__name__)

View File

@ -31,7 +31,7 @@ def unittest_run_loop(func, *args, **kwargs):
@pytest.mark.blackd
class BlackDTestCase(AioHTTPTestCase): # type: ignore[misc]
class BlackDTestCase(AioHTTPTestCase):
def test_blackd_main(self) -> None:
with patch("blackd.web.run_app"):
result = CliRunner().invoke(blackd.main, [])