diff --git a/pyi.py b/pyi.py index 4b9a1bf..dba653e 100644 --- a/pyi.py +++ b/pyi.py @@ -14,7 +14,7 @@ from functools import cached_property, partial from itertools import chain, groupby, zip_longest from keyword import iskeyword -from typing import TYPE_CHECKING, Any, ClassVar, NamedTuple, Union +from typing import TYPE_CHECKING, Any, ClassVar, NamedTuple, Protocol, Union from flake8 import checker from flake8.options.manager import OptionManager @@ -62,6 +62,11 @@ class TypeVarInfo(NamedTuple): name: str +class NodeWithLocation(Protocol): + lineno: int + col_offset: int + + def all_equal(iterable: Iterable[object]) -> bool: """Returns True if all the elements are equal to each other. @@ -2245,7 +2250,7 @@ def check_arg_default(self, arg: ast.arg, default: ast.expr | None) -> None: if default is not None and not _is_valid_default_value_with_annotation(default): self.error(default, (Y014 if arg.annotation is None else Y011)) - def error(self, node: ast.arg | ast.expr | ast.stmt, message: str) -> None: + def error(self, node: NodeWithLocation, message: str) -> None: self.errors.append(Error(node.lineno, node.col_offset, message, PyiTreeChecker)) def _check_for_unused_things(self) -> None: