usse/funda-scraper/venv/lib/python3.10/site-packages/mypy/visitor.py

649 lines
16 KiB
Python
Raw Normal View History

2023-02-20 22:38:24 +00:00
"""Generic abstract syntax tree node visitor"""
from abc import abstractmethod
from typing import TypeVar, Generic
from typing_extensions import TYPE_CHECKING
from mypy_extensions import trait, mypyc_attr
if TYPE_CHECKING:
# break import cycle only needed for mypy
import mypy.nodes
import mypy.patterns
T = TypeVar('T')
@trait
@mypyc_attr(allow_interpreted_subclasses=True)
class ExpressionVisitor(Generic[T]):
@abstractmethod
def visit_int_expr(self, o: 'mypy.nodes.IntExpr') -> T:
pass
@abstractmethod
def visit_str_expr(self, o: 'mypy.nodes.StrExpr') -> T:
pass
@abstractmethod
def visit_bytes_expr(self, o: 'mypy.nodes.BytesExpr') -> T:
pass
@abstractmethod
def visit_unicode_expr(self, o: 'mypy.nodes.UnicodeExpr') -> T:
pass
@abstractmethod
def visit_float_expr(self, o: 'mypy.nodes.FloatExpr') -> T:
pass
@abstractmethod
def visit_complex_expr(self, o: 'mypy.nodes.ComplexExpr') -> T:
pass
@abstractmethod
def visit_ellipsis(self, o: 'mypy.nodes.EllipsisExpr') -> T:
pass
@abstractmethod
def visit_star_expr(self, o: 'mypy.nodes.StarExpr') -> T:
pass
@abstractmethod
def visit_name_expr(self, o: 'mypy.nodes.NameExpr') -> T:
pass
@abstractmethod
def visit_member_expr(self, o: 'mypy.nodes.MemberExpr') -> T:
pass
@abstractmethod
def visit_yield_from_expr(self, o: 'mypy.nodes.YieldFromExpr') -> T:
pass
@abstractmethod
def visit_yield_expr(self, o: 'mypy.nodes.YieldExpr') -> T:
pass
@abstractmethod
def visit_call_expr(self, o: 'mypy.nodes.CallExpr') -> T:
pass
@abstractmethod
def visit_op_expr(self, o: 'mypy.nodes.OpExpr') -> T:
pass
@abstractmethod
def visit_comparison_expr(self, o: 'mypy.nodes.ComparisonExpr') -> T:
pass
@abstractmethod
def visit_cast_expr(self, o: 'mypy.nodes.CastExpr') -> T:
pass
@abstractmethod
def visit_assert_type_expr(self, o: 'mypy.nodes.AssertTypeExpr') -> T:
pass
@abstractmethod
def visit_reveal_expr(self, o: 'mypy.nodes.RevealExpr') -> T:
pass
@abstractmethod
def visit_super_expr(self, o: 'mypy.nodes.SuperExpr') -> T:
pass
@abstractmethod
def visit_unary_expr(self, o: 'mypy.nodes.UnaryExpr') -> T:
pass
@abstractmethod
def visit_assignment_expr(self, o: 'mypy.nodes.AssignmentExpr') -> T:
pass
@abstractmethod
def visit_list_expr(self, o: 'mypy.nodes.ListExpr') -> T:
pass
@abstractmethod
def visit_dict_expr(self, o: 'mypy.nodes.DictExpr') -> T:
pass
@abstractmethod
def visit_tuple_expr(self, o: 'mypy.nodes.TupleExpr') -> T:
pass
@abstractmethod
def visit_set_expr(self, o: 'mypy.nodes.SetExpr') -> T:
pass
@abstractmethod
def visit_index_expr(self, o: 'mypy.nodes.IndexExpr') -> T:
pass
@abstractmethod
def visit_type_application(self, o: 'mypy.nodes.TypeApplication') -> T:
pass
@abstractmethod
def visit_lambda_expr(self, o: 'mypy.nodes.LambdaExpr') -> T:
pass
@abstractmethod
def visit_list_comprehension(self, o: 'mypy.nodes.ListComprehension') -> T:
pass
@abstractmethod
def visit_set_comprehension(self, o: 'mypy.nodes.SetComprehension') -> T:
pass
@abstractmethod
def visit_dictionary_comprehension(self, o: 'mypy.nodes.DictionaryComprehension') -> T:
pass
@abstractmethod
def visit_generator_expr(self, o: 'mypy.nodes.GeneratorExpr') -> T:
pass
@abstractmethod
def visit_slice_expr(self, o: 'mypy.nodes.SliceExpr') -> T:
pass
@abstractmethod
def visit_conditional_expr(self, o: 'mypy.nodes.ConditionalExpr') -> T:
pass
@abstractmethod
def visit_backquote_expr(self, o: 'mypy.nodes.BackquoteExpr') -> T:
pass
@abstractmethod
def visit_type_var_expr(self, o: 'mypy.nodes.TypeVarExpr') -> T:
pass
@abstractmethod
def visit_paramspec_expr(self, o: 'mypy.nodes.ParamSpecExpr') -> T:
pass
@abstractmethod
def visit_type_var_tuple_expr(self, o: 'mypy.nodes.TypeVarTupleExpr') -> T:
pass
@abstractmethod
def visit_type_alias_expr(self, o: 'mypy.nodes.TypeAliasExpr') -> T:
pass
@abstractmethod
def visit_namedtuple_expr(self, o: 'mypy.nodes.NamedTupleExpr') -> T:
pass
@abstractmethod
def visit_enum_call_expr(self, o: 'mypy.nodes.EnumCallExpr') -> T:
pass
@abstractmethod
def visit_typeddict_expr(self, o: 'mypy.nodes.TypedDictExpr') -> T:
pass
@abstractmethod
def visit_newtype_expr(self, o: 'mypy.nodes.NewTypeExpr') -> T:
pass
@abstractmethod
def visit__promote_expr(self, o: 'mypy.nodes.PromoteExpr') -> T:
pass
@abstractmethod
def visit_await_expr(self, o: 'mypy.nodes.AwaitExpr') -> T:
pass
@abstractmethod
def visit_temp_node(self, o: 'mypy.nodes.TempNode') -> T:
pass
@trait
@mypyc_attr(allow_interpreted_subclasses=True)
class StatementVisitor(Generic[T]):
# Definitions
@abstractmethod
def visit_assignment_stmt(self, o: 'mypy.nodes.AssignmentStmt') -> T:
pass
@abstractmethod
def visit_for_stmt(self, o: 'mypy.nodes.ForStmt') -> T:
pass
@abstractmethod
def visit_with_stmt(self, o: 'mypy.nodes.WithStmt') -> T:
pass
@abstractmethod
def visit_del_stmt(self, o: 'mypy.nodes.DelStmt') -> T:
pass
@abstractmethod
def visit_func_def(self, o: 'mypy.nodes.FuncDef') -> T:
pass
@abstractmethod
def visit_overloaded_func_def(self, o: 'mypy.nodes.OverloadedFuncDef') -> T:
pass
@abstractmethod
def visit_class_def(self, o: 'mypy.nodes.ClassDef') -> T:
pass
@abstractmethod
def visit_global_decl(self, o: 'mypy.nodes.GlobalDecl') -> T:
pass
@abstractmethod
def visit_nonlocal_decl(self, o: 'mypy.nodes.NonlocalDecl') -> T:
pass
@abstractmethod
def visit_decorator(self, o: 'mypy.nodes.Decorator') -> T:
pass
# Module structure
@abstractmethod
def visit_import(self, o: 'mypy.nodes.Import') -> T:
pass
@abstractmethod
def visit_import_from(self, o: 'mypy.nodes.ImportFrom') -> T:
pass
@abstractmethod
def visit_import_all(self, o: 'mypy.nodes.ImportAll') -> T:
pass
# Statements
@abstractmethod
def visit_block(self, o: 'mypy.nodes.Block') -> T:
pass
@abstractmethod
def visit_expression_stmt(self, o: 'mypy.nodes.ExpressionStmt') -> T:
pass
@abstractmethod
def visit_operator_assignment_stmt(self, o: 'mypy.nodes.OperatorAssignmentStmt') -> T:
pass
@abstractmethod
def visit_while_stmt(self, o: 'mypy.nodes.WhileStmt') -> T:
pass
@abstractmethod
def visit_return_stmt(self, o: 'mypy.nodes.ReturnStmt') -> T:
pass
@abstractmethod
def visit_assert_stmt(self, o: 'mypy.nodes.AssertStmt') -> T:
pass
@abstractmethod
def visit_if_stmt(self, o: 'mypy.nodes.IfStmt') -> T:
pass
@abstractmethod
def visit_break_stmt(self, o: 'mypy.nodes.BreakStmt') -> T:
pass
@abstractmethod
def visit_continue_stmt(self, o: 'mypy.nodes.ContinueStmt') -> T:
pass
@abstractmethod
def visit_pass_stmt(self, o: 'mypy.nodes.PassStmt') -> T:
pass
@abstractmethod
def visit_raise_stmt(self, o: 'mypy.nodes.RaiseStmt') -> T:
pass
@abstractmethod
def visit_try_stmt(self, o: 'mypy.nodes.TryStmt') -> T:
pass
@abstractmethod
def visit_print_stmt(self, o: 'mypy.nodes.PrintStmt') -> T:
pass
@abstractmethod
def visit_exec_stmt(self, o: 'mypy.nodes.ExecStmt') -> T:
pass
@abstractmethod
def visit_match_stmt(self, o: 'mypy.nodes.MatchStmt') -> T:
pass
@trait
@mypyc_attr(allow_interpreted_subclasses=True)
class PatternVisitor(Generic[T]):
@abstractmethod
def visit_as_pattern(self, o: 'mypy.patterns.AsPattern') -> T:
pass
@abstractmethod
def visit_or_pattern(self, o: 'mypy.patterns.OrPattern') -> T:
pass
@abstractmethod
def visit_value_pattern(self, o: 'mypy.patterns.ValuePattern') -> T:
pass
@abstractmethod
def visit_singleton_pattern(self, o: 'mypy.patterns.SingletonPattern') -> T:
pass
@abstractmethod
def visit_sequence_pattern(self, o: 'mypy.patterns.SequencePattern') -> T:
pass
@abstractmethod
def visit_starred_pattern(self, o: 'mypy.patterns.StarredPattern') -> T:
pass
@abstractmethod
def visit_mapping_pattern(self, o: 'mypy.patterns.MappingPattern') -> T:
pass
@abstractmethod
def visit_class_pattern(self, o: 'mypy.patterns.ClassPattern') -> T:
pass
@trait
@mypyc_attr(allow_interpreted_subclasses=True)
class NodeVisitor(Generic[T], ExpressionVisitor[T], StatementVisitor[T], PatternVisitor[T]):
"""Empty base class for parse tree node visitors.
The T type argument specifies the return type of the visit
methods. As all methods defined here return None by default,
subclasses do not always need to override all the methods.
TODO make the default return value explicit
"""
# Not in superclasses:
def visit_mypy_file(self, o: 'mypy.nodes.MypyFile') -> T:
pass
# TODO: We have a visit_var method, but no visit_typeinfo or any
# other non-Statement SymbolNode (accepting those will raise a
# runtime error). Maybe this should be resolved in some direction.
def visit_var(self, o: 'mypy.nodes.Var') -> T:
pass
# Module structure
def visit_import(self, o: 'mypy.nodes.Import') -> T:
pass
def visit_import_from(self, o: 'mypy.nodes.ImportFrom') -> T:
pass
def visit_import_all(self, o: 'mypy.nodes.ImportAll') -> T:
pass
# Definitions
def visit_func_def(self, o: 'mypy.nodes.FuncDef') -> T:
pass
def visit_overloaded_func_def(self,
o: 'mypy.nodes.OverloadedFuncDef') -> T:
pass
def visit_class_def(self, o: 'mypy.nodes.ClassDef') -> T:
pass
def visit_global_decl(self, o: 'mypy.nodes.GlobalDecl') -> T:
pass
def visit_nonlocal_decl(self, o: 'mypy.nodes.NonlocalDecl') -> T:
pass
def visit_decorator(self, o: 'mypy.nodes.Decorator') -> T:
pass
def visit_type_alias(self, o: 'mypy.nodes.TypeAlias') -> T:
pass
def visit_placeholder_node(self, o: 'mypy.nodes.PlaceholderNode') -> T:
pass
# Statements
def visit_block(self, o: 'mypy.nodes.Block') -> T:
pass
def visit_expression_stmt(self, o: 'mypy.nodes.ExpressionStmt') -> T:
pass
def visit_assignment_stmt(self, o: 'mypy.nodes.AssignmentStmt') -> T:
pass
def visit_operator_assignment_stmt(self,
o: 'mypy.nodes.OperatorAssignmentStmt') -> T:
pass
def visit_while_stmt(self, o: 'mypy.nodes.WhileStmt') -> T:
pass
def visit_for_stmt(self, o: 'mypy.nodes.ForStmt') -> T:
pass
def visit_return_stmt(self, o: 'mypy.nodes.ReturnStmt') -> T:
pass
def visit_assert_stmt(self, o: 'mypy.nodes.AssertStmt') -> T:
pass
def visit_del_stmt(self, o: 'mypy.nodes.DelStmt') -> T:
pass
def visit_if_stmt(self, o: 'mypy.nodes.IfStmt') -> T:
pass
def visit_break_stmt(self, o: 'mypy.nodes.BreakStmt') -> T:
pass
def visit_continue_stmt(self, o: 'mypy.nodes.ContinueStmt') -> T:
pass
def visit_pass_stmt(self, o: 'mypy.nodes.PassStmt') -> T:
pass
def visit_raise_stmt(self, o: 'mypy.nodes.RaiseStmt') -> T:
pass
def visit_try_stmt(self, o: 'mypy.nodes.TryStmt') -> T:
pass
def visit_with_stmt(self, o: 'mypy.nodes.WithStmt') -> T:
pass
def visit_print_stmt(self, o: 'mypy.nodes.PrintStmt') -> T:
pass
def visit_exec_stmt(self, o: 'mypy.nodes.ExecStmt') -> T:
pass
def visit_match_stmt(self, o: 'mypy.nodes.MatchStmt') -> T:
pass
# Expressions (default no-op implementation)
def visit_int_expr(self, o: 'mypy.nodes.IntExpr') -> T:
pass
def visit_str_expr(self, o: 'mypy.nodes.StrExpr') -> T:
pass
def visit_bytes_expr(self, o: 'mypy.nodes.BytesExpr') -> T:
pass
def visit_unicode_expr(self, o: 'mypy.nodes.UnicodeExpr') -> T:
pass
def visit_float_expr(self, o: 'mypy.nodes.FloatExpr') -> T:
pass
def visit_complex_expr(self, o: 'mypy.nodes.ComplexExpr') -> T:
pass
def visit_ellipsis(self, o: 'mypy.nodes.EllipsisExpr') -> T:
pass
def visit_star_expr(self, o: 'mypy.nodes.StarExpr') -> T:
pass
def visit_name_expr(self, o: 'mypy.nodes.NameExpr') -> T:
pass
def visit_member_expr(self, o: 'mypy.nodes.MemberExpr') -> T:
pass
def visit_yield_from_expr(self, o: 'mypy.nodes.YieldFromExpr') -> T:
pass
def visit_yield_expr(self, o: 'mypy.nodes.YieldExpr') -> T:
pass
def visit_call_expr(self, o: 'mypy.nodes.CallExpr') -> T:
pass
def visit_op_expr(self, o: 'mypy.nodes.OpExpr') -> T:
pass
def visit_comparison_expr(self, o: 'mypy.nodes.ComparisonExpr') -> T:
pass
def visit_cast_expr(self, o: 'mypy.nodes.CastExpr') -> T:
pass
def visit_assert_type_expr(self, o: 'mypy.nodes.AssertTypeExpr') -> T:
pass
def visit_reveal_expr(self, o: 'mypy.nodes.RevealExpr') -> T:
pass
def visit_super_expr(self, o: 'mypy.nodes.SuperExpr') -> T:
pass
def visit_assignment_expr(self, o: 'mypy.nodes.AssignmentExpr') -> T:
pass
def visit_unary_expr(self, o: 'mypy.nodes.UnaryExpr') -> T:
pass
def visit_list_expr(self, o: 'mypy.nodes.ListExpr') -> T:
pass
def visit_dict_expr(self, o: 'mypy.nodes.DictExpr') -> T:
pass
def visit_tuple_expr(self, o: 'mypy.nodes.TupleExpr') -> T:
pass
def visit_set_expr(self, o: 'mypy.nodes.SetExpr') -> T:
pass
def visit_index_expr(self, o: 'mypy.nodes.IndexExpr') -> T:
pass
def visit_type_application(self, o: 'mypy.nodes.TypeApplication') -> T:
pass
def visit_lambda_expr(self, o: 'mypy.nodes.LambdaExpr') -> T:
pass
def visit_list_comprehension(self, o: 'mypy.nodes.ListComprehension') -> T:
pass
def visit_set_comprehension(self, o: 'mypy.nodes.SetComprehension') -> T:
pass
def visit_dictionary_comprehension(self, o: 'mypy.nodes.DictionaryComprehension') -> T:
pass
def visit_generator_expr(self, o: 'mypy.nodes.GeneratorExpr') -> T:
pass
def visit_slice_expr(self, o: 'mypy.nodes.SliceExpr') -> T:
pass
def visit_conditional_expr(self, o: 'mypy.nodes.ConditionalExpr') -> T:
pass
def visit_backquote_expr(self, o: 'mypy.nodes.BackquoteExpr') -> T:
pass
def visit_type_var_expr(self, o: 'mypy.nodes.TypeVarExpr') -> T:
pass
def visit_paramspec_expr(self, o: 'mypy.nodes.ParamSpecExpr') -> T:
pass
def visit_type_var_tuple_expr(self, o: 'mypy.nodes.TypeVarTupleExpr') -> T:
pass
def visit_type_alias_expr(self, o: 'mypy.nodes.TypeAliasExpr') -> T:
pass
def visit_namedtuple_expr(self, o: 'mypy.nodes.NamedTupleExpr') -> T:
pass
def visit_enum_call_expr(self, o: 'mypy.nodes.EnumCallExpr') -> T:
pass
def visit_typeddict_expr(self, o: 'mypy.nodes.TypedDictExpr') -> T:
pass
def visit_newtype_expr(self, o: 'mypy.nodes.NewTypeExpr') -> T:
pass
def visit__promote_expr(self, o: 'mypy.nodes.PromoteExpr') -> T:
pass
def visit_await_expr(self, o: 'mypy.nodes.AwaitExpr') -> T:
pass
def visit_temp_node(self, o: 'mypy.nodes.TempNode') -> T:
pass
# Patterns
def visit_as_pattern(self, o: 'mypy.patterns.AsPattern') -> T:
pass
def visit_or_pattern(self, o: 'mypy.patterns.OrPattern') -> T:
pass
def visit_value_pattern(self, o: 'mypy.patterns.ValuePattern') -> T:
pass
def visit_singleton_pattern(self, o: 'mypy.patterns.SingletonPattern') -> T:
pass
def visit_sequence_pattern(self, o: 'mypy.patterns.SequencePattern') -> T:
pass
def visit_starred_pattern(self, o: 'mypy.patterns.StarredPattern') -> T:
pass
def visit_mapping_pattern(self, o: 'mypy.patterns.MappingPattern') -> T:
pass
def visit_class_pattern(self, o: 'mypy.patterns.ClassPattern') -> T:
pass