Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions stubs/pyflakes/@tests/stubtest_allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ pyflakes.messages.UndefinedLocal.message_args
pyflakes.messages.UndefinedName.message_args
pyflakes.messages.UnusedAnnotation.message_args
pyflakes.messages.UnusedImport.message_args
pyflakes.messages.UnusedIndirectAssignment.message_args
pyflakes.messages.UnusedVariable.message_args
2 changes: 1 addition & 1 deletion stubs/pyflakes/METADATA.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version = "3.2.*"
version = "3.3.*"
upstream_repository = "https://github.com/PyCQA/pyflakes"
partial_stub = true

Expand Down
8 changes: 4 additions & 4 deletions stubs/pyflakes/pyflakes/api.pyi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from _typeshed import Incomplete
from collections.abc import Iterable, Iterator, Sequence
from re import Pattern
from typing import Any

from pyflakes.reporter import Reporter

Expand All @@ -11,6 +11,6 @@ PYTHON_SHEBANG_REGEX: Pattern[bytes]
def check(codeString: str, filename: str, reporter: Reporter | None = None) -> int: ...
def checkPath(filename, reporter: Reporter | None = None) -> int: ...
def isPythonFile(filename) -> bool: ...
def iterSourceCode(paths: Iterable[Any]) -> Iterator[Any]: ...
def checkRecursive(paths: Iterable[Any], reporter: Reporter) -> int: ...
def main(prog: str | None = None, args: Sequence[Any] | None = None) -> None: ...
def iterSourceCode(paths: Iterable[Incomplete]) -> Iterator[Incomplete]: ...
def checkRecursive(paths: Iterable[Incomplete], reporter: Reporter) -> int: ...
def main(prog: str | None = None, args: Sequence[Incomplete] | None = None) -> None: ...
56 changes: 27 additions & 29 deletions stubs/pyflakes/pyflakes/checker.pyi
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import ast
import sys
from _typeshed import Incomplete
from collections.abc import Callable, Generator, Iterable, Iterator
from contextlib import contextmanager
from re import Pattern
from typing import Any, ClassVar, Literal, TypeVar, overload
from typing_extensions import ParamSpec, TypeAlias
from typing_extensions import Never, ParamSpec, TypeAlias

from pyflakes.messages import Message

_AnyFunction: TypeAlias = Callable[..., Any]
_F = TypeVar("_F", bound=_AnyFunction)
_P = ParamSpec("_P")
_T = TypeVar("_T")

PYPY: bool

Expand All @@ -33,27 +33,23 @@ def parse_percent_format(s: str) -> tuple[_PercentFormat, ...]: ...
class _FieldsOrder(dict[type[ast.AST], tuple[str, ...]]):
def __missing__(self, node_class: type[ast.AST]) -> tuple[str, ...]: ...

def counter(items: Iterable[_T]) -> dict[_T, int]: ...

_OmitType: TypeAlias = str | tuple[str, ...] | None

def iter_child_nodes(node: ast.AST, omit: _OmitType = None, _fields_order: _FieldsOrder = ...) -> Iterator[ast.AST]: ...
@overload
def convert_to_value(item: ast.Str) -> str: ... # type: ignore[overload-overlap]
@overload
def convert_to_value(item: ast.Bytes) -> bytes: ... # type: ignore[overload-overlap]
def convert_to_value(item: ast.Constant) -> Any: ... # type: ignore[overload-overlap] # See ast.Constant.value for possible return types
@overload
def convert_to_value(item: ast.Tuple) -> tuple[Any, ...]: ... # type: ignore[overload-overlap]
def convert_to_value(item: ast.Tuple) -> tuple[Any, ...]: ... # type: ignore[overload-overlap] # Tuple items depend on their ast type
@overload
def convert_to_value(item: ast.Name | ast.NameConstant) -> Any: ...
def convert_to_value(item: ast.Name) -> VariableKey: ... # type: ignore[overload-overlap]
@overload
def convert_to_value(item: ast.AST) -> UnhandledKeyType: ...
def is_notimplemented_name_node(node: object) -> bool: ...

class Binding:
name: str
source: ast.AST | None
used: Literal[False] | tuple[Any, ast.AST]
used: Literal[False] | tuple[Incomplete, ast.AST]
def __init__(self, name: str, source: ast.AST | None) -> None: ...
def redefines(self, other: Binding) -> bool: ...

Expand All @@ -72,7 +68,7 @@ class VariableKey:

class Importation(Definition):
fullName: str
redefined: list[Any]
redefined: list[Incomplete]
def __init__(self, name: str, source: ast.AST | None, full_name: str | None = None) -> None: ...
@property
def source_statement(self) -> str: ...
Expand All @@ -89,7 +85,7 @@ class StarImportation(Importation):
def __init__(self, name: str, source: ast.AST) -> None: ...

class FutureImportation(ImportationFrom):
used: tuple[Any, ast.AST]
used: tuple[Incomplete, ast.AST]
def __init__(self, name: str, source: ast.AST, scope) -> None: ...

class Argument(Binding): ...
Expand All @@ -114,7 +110,7 @@ class FunctionScope(Scope):
usesLocals: bool
alwaysUsed: ClassVar[set[str]]
globals: set[str]
returnValue: Any
returnValue: Incomplete
isGenerator: bool
def __init__(self) -> None: ...
def unused_assignments(self) -> Iterator[tuple[str, Binding]]: ...
Expand Down Expand Up @@ -154,42 +150,44 @@ if sys.version_info >= (3, 10):
_MatchAs: TypeAlias = ast.MatchAs
_MatchOr: TypeAlias = ast.MatchOr
else:
_Match: TypeAlias = Any
_MatchCase: TypeAlias = Any
_MatchValue: TypeAlias = Any
_MatchSingleton: TypeAlias = Any
_MatchSequence: TypeAlias = Any
_MatchStar: TypeAlias = Any
_MatchMapping: TypeAlias = Any
_MatchClass: TypeAlias = Any
_MatchAs: TypeAlias = Any
_MatchOr: TypeAlias = Any
# The methods using these should never be called on Python < 3.10.
_Match: TypeAlias = Never
_MatchCase: TypeAlias = Never
_MatchValue: TypeAlias = Never
_MatchSingleton: TypeAlias = Never
_MatchSequence: TypeAlias = Never
_MatchStar: TypeAlias = Never
_MatchMapping: TypeAlias = Never
_MatchClass: TypeAlias = Never
_MatchAs: TypeAlias = Never
_MatchOr: TypeAlias = Never

if sys.version_info >= (3, 12):
_TypeVar: TypeAlias = ast.TypeVar
_TypeAlias: TypeAlias = ast.TypeAlias
else:
_TypeVar: TypeAlias = Any
_TypeAlias: TypeAlias = Any
# The methods using these should never be called on Python < 3.12.
_TypeVar: TypeAlias = Never
_TypeAlias: TypeAlias = Never

class Checker:
nodeDepth: int
offset: tuple[int, int] | None
builtIns: set[str]
deadScopes: list[Any]
messages: list[Any]
deadScopes: list[Incomplete]
messages: list[Incomplete]
filename: str
withDoctest: bool
scopeStack: list[Scope]
exceptHandlers: list[Any]
exceptHandlers: list[Incomplete]
root: ast.AST
def __init__(
self,
tree: ast.AST,
filename: str = "(none)",
builtins: Iterable[str] | None = None,
withDoctest: bool = False,
file_tokens: tuple[Any, ...] = (),
file_tokens: tuple[Incomplete, ...] = (),
) -> None: ...
def deferFunction(self, callable: _AnyFunction) -> None: ...
@property
Expand Down
113 changes: 59 additions & 54 deletions stubs/pyflakes/pyflakes/messages.pyi
Original file line number Diff line number Diff line change
@@ -1,83 +1,88 @@
import ast
from _typeshed import Incomplete
from typing import Any, ClassVar

class Message:
message: ClassVar[str]
message_args: tuple[Any, ...]
filename: Any
message_args: tuple[Any, ...] # Tuple types differ between sub-classes.
filename: str
lineno: int
col: int
def __init__(self, filename, loc: ast.AST) -> None: ...
def __init__(self, filename: str, loc: ast.AST) -> None: ...

class UnusedImport(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, name) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, name) -> None: ...

class RedefinedWhileUnused(Message):
message_args: tuple[Any, int]
def __init__(self, filename, loc: ast.AST, name, orig_loc: ast.AST) -> None: ...
message_args: tuple[Incomplete, int]
def __init__(self, filename: str, loc: ast.AST, name, orig_loc: ast.AST) -> None: ...

class ImportShadowedByLoopVar(Message):
message_args: tuple[Any, int]
def __init__(self, filename, loc: ast.AST, name, orig_loc: ast.AST) -> None: ...
message_args: tuple[Incomplete, int]
def __init__(self, filename: str, loc: ast.AST, name, orig_loc: ast.AST) -> None: ...

class ImportStarNotPermitted(Message):
message_args: Any
def __init__(self, filename, loc, modname) -> None: ...
message_args: Incomplete
def __init__(self, filename: str, loc, modname) -> None: ...

class ImportStarUsed(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, modname) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, modname) -> None: ...

class ImportStarUsage(Message):
message_args: tuple[Any, Any]
def __init__(self, filename, loc: ast.AST, name, from_list) -> None: ...
message_args: tuple[Incomplete, Incomplete]
def __init__(self, filename: str, loc: ast.AST, name, from_list) -> None: ...

class UndefinedName(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, name) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, name) -> None: ...

class DoctestSyntaxError(Message):
message_args: tuple[()]
def __init__(self, filename, loc: ast.AST, position: tuple[int, int] | None = None) -> None: ...
def __init__(self, filename: str, loc: ast.AST, position: tuple[int, int] | None = None) -> None: ...

class UndefinedExport(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, name) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, name) -> None: ...

class UndefinedLocal(Message):
default: ClassVar[str]
builtin: ClassVar[str]
message_args: tuple[Any, int]
def __init__(self, filename, loc: ast.AST, name, orig_loc: ast.AST) -> None: ...
message_args: tuple[Incomplete, int]
def __init__(self, filename: str, loc: ast.AST, name, orig_loc: ast.AST) -> None: ...

class DuplicateArgument(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, name) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, name) -> None: ...

class MultiValueRepeatedKeyLiteral(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, key) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, key) -> None: ...

class MultiValueRepeatedKeyVariable(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, key) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, key) -> None: ...

class LateFutureImport(Message):
message_args: tuple[()]
def __init__(self, filename, loc: ast.AST) -> None: ...
def __init__(self, filename: str, loc: ast.AST) -> None: ...

class FutureFeatureNotDefined(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, name) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, name) -> None: ...

class UnusedVariable(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, names) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, names) -> None: ...

class UnusedAnnotation(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, names) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, names) -> None: ...

class UnusedIndirectAssignment(Message):
message_args: tuple[str, str]
def __init__(self, filename: str, loc: ast.AST, name: str) -> None: ...

class ReturnOutsideFunction(Message): ...
class YieldOutsideFunction(Message): ...
Expand All @@ -90,53 +95,53 @@ class IfTuple(Message): ...
class AssertTuple(Message): ...

class ForwardAnnotationSyntaxError(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, annotation) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, annotation) -> None: ...

class RaiseNotImplemented(Message): ...
class InvalidPrintSyntax(Message): ...
class IsLiteral(Message): ...
class FStringMissingPlaceholders(Message): ...

class StringDotFormatExtraPositionalArguments(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, extra_positions) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, extra_positions) -> None: ...

class StringDotFormatExtraNamedArguments(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, extra_keywords) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, extra_keywords) -> None: ...

class StringDotFormatMissingArgument(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, missing_arguments) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, missing_arguments) -> None: ...

class StringDotFormatMixingAutomatic(Message): ...

class StringDotFormatInvalidFormat(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, error) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, error) -> None: ...

class PercentFormatInvalidFormat(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, error) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, error) -> None: ...

class PercentFormatMixedPositionalAndNamed(Message): ...

class PercentFormatUnsupportedFormatCharacter(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, c) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, c) -> None: ...

class PercentFormatPositionalCountMismatch(Message):
message_args: tuple[int, int]
def __init__(self, filename, loc: ast.AST, n_placeholders: int, n_substitutions: int) -> None: ...
def __init__(self, filename: str, loc: ast.AST, n_placeholders: int, n_substitutions: int) -> None: ...

class PercentFormatExtraNamedArguments(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, extra_keywords) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, extra_keywords) -> None: ...

class PercentFormatMissingArgument(Message):
message_args: tuple[Any]
def __init__(self, filename, loc: ast.AST, missing_arguments) -> None: ...
message_args: tuple[Incomplete]
def __init__(self, filename: str, loc: ast.AST, missing_arguments) -> None: ...

class PercentFormatExpectedMapping(Message): ...
class PercentFormatExpectedSequence(Message): ...
Expand Down