Skip to content

Commit

Permalink
Migrate mypy config to pyproject.toml (#3936)
Browse files Browse the repository at this point in the history
Co-authored-by: Charles Patel <charles.patel@apkudo.com>
  • Loading branch information
acharles7 and Charles Patel committed Oct 16, 2023
1 parent 3bb9214 commit 6f84f65
Show file tree
Hide file tree
Showing 12 changed files with 40 additions and 54 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -4,6 +4,7 @@
_build
.DS_Store
.vscode
.python-version
docs/_static/pypi.svg
.tox
__pycache__
Expand Down
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Expand Up @@ -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
Expand All @@ -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
Expand Down
46 changes: 0 additions & 46 deletions mypy.ini

This file was deleted.

24 changes: 24 additions & 0 deletions pyproject.toml
Expand Up @@ -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]
Expand Down Expand Up @@ -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
2 changes: 1 addition & 1 deletion scripts/check_pre_commit_rev_in_example.py
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion scripts/check_version_in_basics_example.py
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion scripts/diff_shades_gha_helper.py
Expand Up @@ -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"}]
Expand Down
2 changes: 1 addition & 1 deletion scripts/fuzz.py
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion scripts/make_width_table.py
Expand Up @@ -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]]:
Expand Down
4 changes: 3 additions & 1 deletion src/blackd/__init__.py
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion tests/optional.py
Expand Up @@ -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__)

Expand Down
2 changes: 1 addition & 1 deletion tests/test_blackd.py
Expand Up @@ -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, [])
Expand Down

0 comments on commit 6f84f65

Please sign in to comment.