summaryrefslogtreecommitdiff
path: root/pylint
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2022-09-04 13:04:45 +0200
committerGitHub <noreply@github.com>2022-09-04 13:04:45 +0200
commitc2989ad5c71b3e1be0f0a7e5297f9b7e47fa2766 (patch)
tree89f867543fdf13470f0dddfc509686fe137c60a8 /pylint
parentcd7761d4fcdf1d6d3ad19b34a426a7033b41cc1a (diff)
downloadpylint-git-c2989ad5c71b3e1be0f0a7e5297f9b7e47fa2766.tar.gz
Complete typing of all generic types (#7406)
And update ``mypy`` configuration
Diffstat (limited to 'pylint')
-rw-r--r--pylint/checkers/classes/class_checker.py4
-rw-r--r--pylint/checkers/typecheck.py4
-rw-r--r--pylint/pyreverse/vcg_printer.py2
-rw-r--r--pylint/typing.py10
4 files changed, 13 insertions, 7 deletions
diff --git a/pylint/checkers/classes/class_checker.py b/pylint/checkers/classes/class_checker.py
index 5ae558822..44d94058e 100644
--- a/pylint/checkers/classes/class_checker.py
+++ b/pylint/checkers/classes/class_checker.py
@@ -257,7 +257,7 @@ def _has_different_parameters_default_value(
def _has_different_parameters(
original: list[nodes.AssignName],
overridden: list[nodes.AssignName],
- dummy_parameter_regex: Pattern,
+ dummy_parameter_regex: Pattern[str],
) -> list[str]:
result: list[str] = []
zipped = zip_longest(original, overridden)
@@ -311,7 +311,7 @@ def _has_different_keyword_only_parameters(
def _different_parameters(
original: nodes.FunctionDef,
overridden: nodes.FunctionDef,
- dummy_parameter_regex: Pattern,
+ dummy_parameter_regex: Pattern[str],
) -> list[str]:
"""Determine if the two methods have different parameters.
diff --git a/pylint/checkers/typecheck.py b/pylint/checkers/typecheck.py
index f2518beae..5823a5ea5 100644
--- a/pylint/checkers/typecheck.py
+++ b/pylint/checkers/typecheck.py
@@ -974,7 +974,7 @@ accessed. Python regular expressions are accepted.",
return self.linter.config.suggestion_mode
@cached_property
- def _compiled_generated_members(self) -> tuple[Pattern, ...]:
+ def _compiled_generated_members(self) -> tuple[Pattern[str], ...]:
# do this lazily since config not fully initialized in __init__
# generated_members may contain regular expressions
# (surrounded by quote `"` and followed by a comma `,`)
@@ -1928,7 +1928,7 @@ accessed. Python regular expressions are accepted.",
if not allowed_nested_syntax:
self._check_unsupported_alternative_union_syntax(node)
- def _includes_version_compatible_overload(self, attrs: list):
+ def _includes_version_compatible_overload(self, attrs: list[nodes.NodeNG]):
"""Check if a set of overloads of an operator includes one that
can be relied upon for our configured Python version.
diff --git a/pylint/pyreverse/vcg_printer.py b/pylint/pyreverse/vcg_printer.py
index ec7152baa..fe94edab4 100644
--- a/pylint/pyreverse/vcg_printer.py
+++ b/pylint/pyreverse/vcg_printer.py
@@ -154,7 +154,7 @@ SHAPES: dict[NodeType, str] = {
NodeType.CLASS: "box",
NodeType.INTERFACE: "ellipse",
}
-ARROWS: dict[EdgeType, dict] = {
+ARROWS: dict[EdgeType, dict[str, str | int]] = {
EdgeType.USES: dict(arrowstyle="solid", backarrowstyle="none", backarrowsize=0),
EdgeType.INHERITS: dict(
arrowstyle="solid", backarrowstyle="none", backarrowsize=10
diff --git a/pylint/typing.py b/pylint/typing.py
index 224e0bd6b..6e6f88bfd 100644
--- a/pylint/typing.py
+++ b/pylint/typing.py
@@ -24,12 +24,13 @@ from typing import (
)
if sys.version_info >= (3, 8):
- from typing import Literal, TypedDict
+ from typing import Literal, Protocol, TypedDict
else:
- from typing_extensions import Literal, TypedDict
+ from typing_extensions import Literal, Protocol, TypedDict
if TYPE_CHECKING:
from pylint.config.callback_actions import _CallbackAction
+ from pylint.pyreverse.inspector import Project
from pylint.reporters.ureports.nodes import Section
from pylint.utils import LinterStats
@@ -132,3 +133,8 @@ MessageDefinitionTuple = Union[
]
# Mypy doesn't support recursive types (yet), see https://github.com/python/mypy/issues/731
DirectoryNamespaceDict = Dict[Path, Tuple[argparse.Namespace, "DirectoryNamespaceDict"]] # type: ignore[misc]
+
+
+class GetProjectCallable(Protocol):
+ def __call__(self, module: str, name: str | None = "No Name") -> Project:
+ ... # pragma: no cover