mirror of
https://github.com/davidhalter/typeshed.git
synced 2026-05-04 20:45:49 +08:00
269 lines
12 KiB
Python
269 lines
12 KiB
Python
import argparse
|
|
import ast
|
|
import sys
|
|
from _typeshed import Incomplete
|
|
from collections.abc import Generator, Iterable, Sequence
|
|
from functools import partial
|
|
from logging import Logger
|
|
from typing import Any, ClassVar, Final, Literal, NamedTuple, Protocol, overload
|
|
|
|
__version__: Final[str]
|
|
LOG: Logger
|
|
CONTEXTFUL_NODES: Final[tuple[type[ast.AST], ...]]
|
|
FUNCTION_NODES: Final[tuple[type[ast.AST], ...]]
|
|
B908_pytest_functions: Final[set[str]]
|
|
B908_unittest_methods: Final[set[str]]
|
|
B902_default_decorators: Final[set[str]]
|
|
|
|
class Context(NamedTuple):
|
|
node: ast.AST
|
|
stack: list[str]
|
|
|
|
class BugBearChecker:
|
|
name: ClassVar[str]
|
|
version: ClassVar[str]
|
|
tree: ast.AST | None
|
|
filename: str
|
|
lines: Sequence[str] | None
|
|
max_line_length: int
|
|
visitor: ast.NodeVisitor
|
|
options: argparse.Namespace | None
|
|
def run(self) -> Iterable[tuple[int, int, str, type[BugBearChecker]]]: ...
|
|
def gen_line_based_checks(self) -> Generator[error]: ...
|
|
@classmethod
|
|
def adapt_error(cls, e: error) -> tuple[int, int, str, type[BugBearChecker]]: ...
|
|
def load_file(self) -> None: ...
|
|
@staticmethod
|
|
def add_options(optmanager: Any) -> None: ...
|
|
def __init__(
|
|
self,
|
|
tree: ast.AST | None = ...,
|
|
filename: str = ...,
|
|
lines: Sequence[str] | None = ...,
|
|
max_line_length: int = ...,
|
|
options: argparse.Namespace | None = ...,
|
|
) -> None: ...
|
|
def should_warn(self, code: str) -> bool: ...
|
|
|
|
def names_from_assignments(assign_target: ast.AST) -> Generator[str]: ...
|
|
def children_in_scope(node: ast.AST) -> Generator[ast.AST]: ...
|
|
def walk_list(nodes: Iterable[ast.AST]) -> Generator[ast.AST]: ...
|
|
|
|
class ExceptBaseExceptionVisitor(ast.NodeVisitor):
|
|
root: ast.ExceptHandler
|
|
def __init__(self, except_node: ast.ExceptHandler) -> None: ...
|
|
def re_raised(self) -> bool: ...
|
|
def visit_Raise(self, node: ast.Raise) -> Incomplete | None: ...
|
|
def visit_ExceptHandler(self, node: ast.ExceptHandler) -> Incomplete | None: ...
|
|
|
|
class B040CaughtException:
|
|
name: str
|
|
has_note: bool
|
|
def __init__(self, name: str, has_note: bool) -> None: ...
|
|
|
|
class B041UnhandledKeyType: ...
|
|
|
|
class B041VariableKeyType:
|
|
name: str
|
|
def __init__(self, name: str) -> None: ...
|
|
|
|
class AstPositionNode(Protocol):
|
|
lineno: int
|
|
col_offset: int
|
|
|
|
class BugBearVisitor(ast.NodeVisitor):
|
|
filename: str
|
|
lines: Sequence[str] | None
|
|
b008_b039_extend_immutable_calls: set[str]
|
|
b902_classmethod_decorators: set[str]
|
|
node_window: list[ast.AST]
|
|
errors: list[error]
|
|
contexts: list[Context]
|
|
b040_caught_exception: B040CaughtException | None
|
|
NODE_WINDOW_SIZE: ClassVar[int] = 4
|
|
in_trystar: str
|
|
def __init__(
|
|
self,
|
|
filename: str,
|
|
lines: Sequence[str] | None,
|
|
b008_b039_extend_immutable_calls: set[str] = ...,
|
|
b902_classmethod_decorators: set[str] = ...,
|
|
node_window: list[ast.AST] = ...,
|
|
errors: list[error] = ...,
|
|
contexts: list[Context] = ...,
|
|
b040_caught_exception: B040CaughtException | None = None,
|
|
in_trystar: str = "",
|
|
) -> None: ...
|
|
def add_error(self, code: str, node: AstPositionNode, *vars: object) -> None: ...
|
|
@property
|
|
def node_stack(self) -> list[Context]: ...
|
|
def in_class_init(self) -> bool: ...
|
|
def visit_Return(self, node: ast.Return) -> None: ...
|
|
def visit_Yield(self, node: ast.Yield) -> None: ...
|
|
def visit_YieldFrom(self, node: ast.YieldFrom) -> None: ...
|
|
def visit(self, node: ast.AST) -> None: ...
|
|
def visit_ExceptHandler(self, node: ast.ExceptHandler) -> None: ...
|
|
def visit_UAdd(self, node: ast.UAdd) -> None: ...
|
|
def visit_Call(self, node: ast.Call) -> None: ...
|
|
def visit_Module(self, node: ast.Module) -> None: ...
|
|
def visit_Assign(self, node: ast.Assign) -> None: ...
|
|
def visit_For(self, node: ast.For) -> None: ...
|
|
def visit_AsyncFor(self, node: ast.AsyncFor) -> None: ...
|
|
def visit_While(self, node: ast.While) -> None: ...
|
|
def visit_ListComp(self, node: ast.ListComp) -> None: ...
|
|
def visit_SetComp(self, node: ast.SetComp) -> None: ...
|
|
def visit_DictComp(self, node: ast.DictComp) -> None: ...
|
|
def visit_GeneratorExp(self, node: ast.GeneratorExp) -> None: ...
|
|
def visit_Assert(self, node: ast.Assert) -> None: ...
|
|
def visit_AsyncFunctionDef(self, node: ast.AsyncFunctionDef) -> None: ...
|
|
def visit_FunctionDef(self, node: ast.FunctionDef) -> None: ...
|
|
def visit_ClassDef(self, node: ast.ClassDef) -> None: ...
|
|
def visit_Try(self, node: ast.Try) -> None: ...
|
|
if sys.version_info >= (3, 11):
|
|
def visit_TryStar(self, node: ast.TryStar) -> None: ...
|
|
else:
|
|
def visit_TryStar(self, node: ast.Try) -> None: ...
|
|
|
|
def visit_Compare(self, node: ast.Compare) -> None: ...
|
|
def visit_Raise(self, node: ast.Raise) -> None: ...
|
|
def visit_With(self, node: ast.With) -> None: ...
|
|
def visit_JoinedStr(self, node: ast.JoinedStr) -> None: ...
|
|
def visit_AnnAssign(self, node: ast.AnnAssign) -> None: ...
|
|
def visit_Import(self, node: ast.Import) -> None: ...
|
|
def visit_ImportFrom(self, node: ast.ImportFrom) -> None: ...
|
|
def visit_Set(self, node: ast.Set) -> None: ...
|
|
def visit_Dict(self, node: ast.Dict) -> None: ...
|
|
def check_for_b041(self, node: ast.Dict) -> None: ...
|
|
def check_for_b005(self, node: ast.Import | ast.ImportFrom | ast.Call) -> None: ...
|
|
def check_for_b006_and_b008(self, node: ast.FunctionDef | ast.AsyncFunctionDef) -> None: ...
|
|
def check_for_b039(self, node: ast.Call) -> None: ...
|
|
def check_for_b007(self, node: ast.For | ast.AsyncFor) -> None: ...
|
|
def check_for_b011(self, node: ast.Assert) -> None: ...
|
|
if sys.version_info >= (3, 11):
|
|
def check_for_b012(self, node: ast.Try | ast.TryStar) -> None: ...
|
|
else:
|
|
def check_for_b012(self, node: ast.Try) -> None: ...
|
|
|
|
def check_for_b013_b014_b029_b030(self, node: ast.ExceptHandler) -> list[str]: ...
|
|
def check_for_b015(self, node: ast.Compare) -> None: ...
|
|
def check_for_b016(self, node: ast.Raise) -> None: ...
|
|
def check_for_b017(self, node: ast.With | ast.AsyncWith) -> None: ...
|
|
def check_for_b019(self, node: ast.FunctionDef | ast.AsyncFunctionDef) -> None: ...
|
|
def check_for_b020(self, node: ast.For | ast.AsyncFor | ast.comprehension) -> None: ...
|
|
def check_for_b023(
|
|
self, loop_node: ast.For | ast.AsyncFor | ast.While | ast.GeneratorExp | ast.SetComp | ast.ListComp | ast.DictComp
|
|
) -> None: ...
|
|
def check_for_b024_and_b027(self, node: ast.ClassDef) -> None: ...
|
|
def check_for_b026(self, call: ast.Call) -> None: ...
|
|
def check_for_b031(self, loop_node: ast.For | ast.AsyncFor) -> None: ...
|
|
def check_for_b035(self, node: ast.DictComp) -> None: ...
|
|
def check_for_b040_add_note(self, node: ast.Attribute) -> bool: ...
|
|
def check_for_b040_usage(self, node: ast.expr | None) -> None: ...
|
|
def check_for_b904(self, node: ast.Raise) -> None: ...
|
|
def walk_function_body(
|
|
self, node: ast.FunctionDef | ast.AsyncFunctionDef
|
|
) -> tuple[ast.FunctionDef | ast.AsyncFunctionDef, ast.stmt]: ...
|
|
def check_for_b901(self, node: ast.FunctionDef | ast.AsyncFunctionDef) -> None: ...
|
|
@overload
|
|
@classmethod
|
|
def find_decorator_name(cls, d: ast.Name | ast.Attribute | ast.Call) -> str: ...
|
|
@overload
|
|
@classmethod
|
|
def find_decorator_name(cls, d: ast.AST) -> str | None: ...
|
|
def check_for_b902(self, node: ast.FunctionDef | ast.AsyncFunctionDef) -> None: ...
|
|
def check_for_b903(self, node: ast.ClassDef) -> None: ...
|
|
def check_for_b018(self, node: ast.Expr) -> None: ...
|
|
def check_for_b021(self, node: ast.AsyncFunctionDef | ast.FunctionDef | ast.ClassDef | ast.Module) -> None: ...
|
|
def check_for_b022(self, node: ast.With | ast.AsyncWith) -> None: ...
|
|
def check_for_b908(self, node: ast.With) -> None: ...
|
|
def check_for_b025(self, node: ast.Try) -> None: ...
|
|
def check_for_b905(self, node: ast.Call) -> None: ...
|
|
def check_for_b912(self, node: ast.Call) -> None: ...
|
|
def check_for_b906(self, node: ast.FunctionDef) -> None: ...
|
|
def check_for_b907(self, node: ast.JoinedStr) -> None: ...
|
|
def check_for_b028(self, node: ast.Call) -> None: ...
|
|
def check_for_b032(self, node: ast.AnnAssign) -> None: ...
|
|
def check_for_b033(self, node: ast.Set | ast.List | ast.Tuple) -> None: ...
|
|
def check_for_b034(self, node: ast.Call) -> None: ...
|
|
def check_for_b042(self, node: ast.ClassDef) -> None: ...
|
|
def check_for_b909(self, node: ast.For) -> None: ...
|
|
def check_for_b910(self, node: ast.Call) -> None: ...
|
|
def check_for_b911(self, node: ast.Call) -> None: ...
|
|
|
|
def compose_call_path(node: ast.expr) -> Generator[str]: ...
|
|
def is_name(node: ast.expr, name: str) -> bool: ...
|
|
|
|
class B909Checker(ast.NodeVisitor):
|
|
MUTATING_FUNCTIONS: ClassVar[tuple[str, ...]]
|
|
name: str
|
|
key: str
|
|
mutations: dict[int, list[ast.Assign | ast.AugAssign | ast.Delete | ast.Call]]
|
|
def __init__(self, name: str, key: str) -> None: ...
|
|
def visit_Assign(self, node: ast.Assign) -> None: ...
|
|
def visit_AugAssign(self, node: ast.AugAssign) -> None: ...
|
|
def visit_Delete(self, node: ast.Delete) -> None: ...
|
|
def visit_Call(self, node: ast.Call) -> None: ...
|
|
def visit_If(self, node: ast.If) -> None: ...
|
|
def visit(self, node: ast.AST | list[ast.AST]) -> Any: ...
|
|
|
|
class NameFinder(ast.NodeVisitor):
|
|
names: dict[str, list[ast.Name]]
|
|
def __init__(self, names: dict[str, list[ast.Name]] = ...) -> None: ...
|
|
def visit_Name(self, node: ast.Name) -> None: ...
|
|
def visit(self, node: ast.AST | list[ast.AST]) -> Any: ...
|
|
|
|
class NamedExprFinder(ast.NodeVisitor):
|
|
names: dict[str, list[ast.Name]]
|
|
def __init__(self, names: dict[str, list[ast.Name]] = ...) -> None: ...
|
|
def visit_NamedExpr(self, node: ast.NamedExpr) -> None: ...
|
|
def visit(self, node: ast.AST | list[ast.AST]) -> Any: ...
|
|
|
|
class FunctionDefDefaultsVisitor(ast.NodeVisitor):
|
|
def __init__(
|
|
self,
|
|
error_code_calls: partial[error],
|
|
error_code_literals: partial[error],
|
|
b008_b039_extend_immutable_calls: set[str] | None = None,
|
|
) -> None: ...
|
|
def visit_mutable_literal_or_comprehension(
|
|
self, node: ast.List | ast.Dict | ast.Set | ast.ListComp | ast.DictComp | ast.SetComp
|
|
) -> None: ...
|
|
def visit_Call(self, node: ast.Call) -> None: ...
|
|
def visit_Lambda(self, node: ast.Lambda) -> None: ...
|
|
def visit(self, node: ast.AST | list[ast.AST]) -> None: ...
|
|
|
|
class B020NameFinder(NameFinder):
|
|
def visit_GeneratorExp(self, node: ast.GeneratorExp) -> None: ...
|
|
def visit_ListComp(self, node: ast.ListComp) -> None: ...
|
|
def visit_DictComp(self, node: ast.DictComp) -> None: ...
|
|
def visit_comprehension(self, node: ast.comprehension) -> None: ...
|
|
def visit_Lambda(self, node: ast.Lambda) -> None: ...
|
|
|
|
B005_METHODS: Final[set[str]]
|
|
B006_MUTABLE_LITERALS: Final[tuple[Literal["Dict"], Literal["List"], Literal["Set"]]]
|
|
B006_MUTABLE_COMPREHENSIONS: Final[tuple[Literal["ListComp"], Literal["DictComp"], Literal["SetComp"]]]
|
|
B006_MUTABLE_CALLS: Final[set[str]]
|
|
B008_IMMUTABLE_CALLS: Final[set[str]]
|
|
B014_REDUNDANT_EXCEPTIONS: Final[dict[Literal["OSError", "ValueError"], set[str]]]
|
|
B019_CACHES: Final[set[str]]
|
|
B902_IMPLICIT_CLASSMETHODS: Final[set[str]]
|
|
B902_SELF: Final[list[str]]
|
|
B902_CLS: Final[list[str]]
|
|
B902_METACLS: Final[list[str]]
|
|
|
|
class error(NamedTuple):
|
|
lineno: int
|
|
col: int
|
|
message: str
|
|
type: type[BugBearChecker]
|
|
# Arguments for formatting the message, i.e. message.format(*vars).
|
|
vars: tuple[object, ...]
|
|
|
|
class Error:
|
|
message: str
|
|
def __init__(self, message: str) -> None: ...
|
|
def __call__(self, lineno: int, col: int, vars: tuple[object, ...] = ()) -> error: ...
|
|
|
|
error_codes: Final[dict[str, Error]]
|
|
disabled_by_default: Final[list[str]]
|