Skip to content

Upgrading mypy 0.570 to 0.580

Unknown0.570 → 0.580

Fetching 1 release from GitHub…0 / 1
UnknownUpgrade verdict

DepDelta is still reading the notes for this range, so breaking changes can't be ruled out yet.

  • DepDelta is still reading the release notes in this range, so it can't rule out breaking changes yet.
  • This page updates as the notes come in.
Still reading release notes

DepDelta is still reading the release notes in this range. This updates as they come in.

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • removed: field State.is_from_saved_cache
  • removed: function can_reuse_in_memory_tree(graph: Graph, scc: List[str], manager: BuildManager) -> bool
  • removed: function find_module(id: str, lib_path_arg: Iterable[str]) -> Optional[str]
  • removed: function find_module_clear_caches() -> None
  • removed: function find_modules_recursive(module: str, lib_path: List[str]) -> List[BuildSource]
  • removed: function is_file(path: str) -> bool
  • removed: function list_dir(path: str) -> Optional[List[str]]
  • removed: function maybe_reuse_in_memory_tree(graph: Graph, scc: List[str], manager: BuildManager) -> bool
  • removed: function preserve_cache(graph: Graph) -> SavedCache
  • removed: function read_with_python_encoding(path: str, pyversion: Tuple[int, int]) -> Tuple[str, str]
  • removed: variable SavedCache
  • removed: variable find_module_cache
  • removed: variable find_module_dir_cache
  • removed: variable find_module_is_file_cache
  • removed: variable find_module_isdir_cache
  • removed: variable find_module_listdir_cache
  • changed: constructor BuildManager(data_dir: str, lib_path: List[str], ignore_prefix: str, source_set: BuildSourceSet, reports: Reports, options: Options, version_id: str, plugin: Plugin, errors: Errors, flush_errors: Callable[[List[str], bool], None], saved_cache: Optional[SavedCache]=…) -> None → constructor BuildManager(data_dir: str, lib_path: List[str], ignore_prefix: str, source_set: BuildSourceSet, reports: Reports, options: Options, version_id: str, plugin: Plugin, errors: Errors, flush_errors: Callable[[List[str], bool], None], fscache: FileSystemCache) -> None
  • changed: function build(sources: List[BuildSource], options: Options, alt_lib_path: Optional[str]=…, bin_dir: Optional[str]=…, saved_cache: Optional[SavedCache]=…, flush_errors: Optional[Callable[[List[str], bool], None]]=…) -> BuildResult → function build(sources: List[BuildSource], options: Options, alt_lib_path: Optional[str]=…, bin_dir: Optional[str]=…, flush_errors: Optional[Callable[[List[str], bool], None]]=…, fscache: Optional[FileSystemCache]=…) -> BuildResult
  • changed: function load_graph(sources: List[BuildSource], manager: BuildManager) -> Graph → function load_graph(sources: List[BuildSource], manager: BuildManager, old_graph: Optional[Graph]=…) -> Graph
  • changed: function remove_cwd_prefix_from_path(p: str) -> str → function remove_cwd_prefix_from_path(fscache: FileSystemCache, p: str) -> str
  • changed: function verify_module(id: str, path: str) -> bool → function verify_module(fscache: FileSystemMetaCache, id: str, path: str) -> bool
  • added: class FindModuleCache
  • added: constructor FindModuleCache(fscache: Optional[FileSystemMetaCache]=…) -> None
  • added: function process_fine_grained_cache_graph(graph: Graph, manager: BuildManager) -> None
  • added: method BuildManager.use_fine_grained_cache() -> bool
  • added: method FindModuleCache.clear() -> None
  • added: method FindModuleCache.find_module(id: str, lib_path_arg: Iterable[str]) -> Optional[str]
  • added: method FindModuleCache.find_modules_recursive(module: str, lib_path: List[str]) -> List[BuildSource]
  • added: method State.compute_dependencies() -> None
  • removed: class Scope
  • removed: constructor Scope(module: MypyFile) -> None
  • removed: field Scope.stack
  • removed: method Scope.active_class() -> Optional[TypeInfo]
  • removed: method Scope.active_self_type() -> Optional[Union[Instance, TupleType]]
  • removed: method Scope.enclosing_class() -> Optional[TypeInfo]
  • removed: method Scope.push_class(info: TypeInfo) -> Iterator[None]
  • removed: method Scope.push_function(item: FuncItem) -> Iterator[None]
  • removed: method Scope.top_function() -> Optional[FuncItem]
  • removed: method Scope.top_non_lambda_function() -> Optional[FuncItem]
  • changed: method TypeChecker.check_overlapping_op_methods(reverse_type: CallableType, reverse_name: str, reverse_class: TypeInfo, forward_type: Type, forward_name: str, forward_base: Instance, context: Context) -> None → method TypeChecker.check_overlapping_op_methods(reverse_type: CallableType, reverse_name: str, reverse_class: TypeInfo, forward_type: Type, forward_name: str, forward_base: Type, context: Context) -> None
  • changed: method TypeChecker.check_reverse_op_method(defn: FuncItem, typ: CallableType, method: str, context: Context) -> None → method TypeChecker.check_reverse_op_method(defn: FuncItem, reverse_type: CallableType, reverse_name: str, context: Context) -> None
  • added: class CheckerScope
  • added: constructor CheckerScope(module: MypyFile) -> None
  • added: field CheckerScope.stack
  • added: field TypeChecker.tscope
  • added: method CheckerScope.active_class() -> Optional[TypeInfo]
  • added: method CheckerScope.active_self_type() -> Optional[Union[Instance, TupleType]]
  • added: method CheckerScope.enclosing_class() -> Optional[TypeInfo]
  • added: method CheckerScope.push_class(info: TypeInfo) -> Iterator[None]
  • added: method CheckerScope.push_function(item: FuncItem) -> Iterator[None]
  • added: method CheckerScope.top_function() -> Optional[FuncItem]
  • added: method CheckerScope.top_non_lambda_function() -> Optional[FuncItem]
  • added: method TypeChecker.reset() -> None
  • changed: function check_output(response: Dict[str, Any], verbose: bool) -> None → function check_output(response: Dict[str, Any], verbose: bool, junit_xml: Optional[str]) -> None
  • removed: field Server.last_manager
  • removed: method Server.check_default(sources: List[mypy.build.BuildSource], alt_lib_path: Optional[str]=…) -> Dict[str, Any]
  • removed: method Server.check_fine_grained(sources: List[mypy.build.BuildSource]) -> Dict[str, Any]
  • changed: constructor Server(flags: List[str]) -> None → constructor Server(options: Options, timeout: Optional[int]=…, alt_lib_path: Optional[str]=…) -> None
  • changed: method Server.check(sources: List[mypy.build.BuildSource], alt_lib_path: Optional[str]=…) -> Dict[str, Any] → method Server.check(sources: List[mypy.build.BuildSource]) -> Dict[str, Any]
  • changed: method Server.find_changed(sources: List[mypy.build.BuildSource]) -> List[Tuple[str, str]] → method Server.find_changed(sources: List[mypy.build.BuildSource]) -> Tuple[List[Tuple[str, str]], List[Tuple[str, str]]]
  • added: function process_start_options(flags: List[str]) -> Options
  • removed: class DecodeError(Exception)
  • removed: field Errors.function_or_member
  • removed: field Errors.target_class
  • removed: field Errors.target_function
  • removed: field Errors.target_ignore_depth
  • removed: field Errors.type_name
  • removed: method Errors.enter_function(name: str) -> Iterator[None]
  • removed: method Errors.enter_type(name: str) -> Iterator[None]
  • removed: method Errors.pop_function() -> None
  • removed: method Errors.pop_type() -> None
  • removed: method Errors.push_function(name: str) -> None
  • removed: method Errors.push_type(name: str) -> None
  • changed: method Errors.set_file(file: str, module: Optional[str]) -> None → method Errors.set_file(file: str, module: Optional[str], scope: Optional[Scope]=…) -> None
  • added: field Errors.scope
  • added: method Errors.clear_errors_in_targets(path: str, targets: Set[str]) -> None
  • changed: function fixup_module_pass_two(tree: MypyFile, modules: Dict[str, MypyFile], quick_and_dirty: bool) -> None → function fixup_module_pass_two(tree: MypyFile, modules: Dict[str, MypyFile]) -> None
  • removed: method FileSystemCache.exists(path: str) -> bool
  • removed: method FileSystemCache.isdir(path: str) -> bool
  • removed: method FileSystemCache.isfile(path: str) -> bool
  • removed: method FileSystemCache.listdir(path: str) -> List[str]
  • removed: method FileSystemCache.stat(path: str) -> os.stat_result
  • changed: class FileSystemCache → class FileSystemCache(FileSystemMetaCache)
  • added: class FileSystemMetaCache
  • added: constructor FileSystemMetaCache() -> None
  • added: method FileSystemMetaCache.exists(path: str) -> bool
  • added: method FileSystemMetaCache.flush() -> None
  • added: method FileSystemMetaCache.isdir(path: str) -> bool
  • added: method FileSystemMetaCache.isfile(path: str) -> bool
  • added: method FileSystemMetaCache.isfile_case(path: str) -> bool
  • added: method FileSystemMetaCache.listdir(path: str) -> List[str]
  • added: method FileSystemMetaCache.stat(path: str) -> os.stat_result
  • changed: method MessageBuilder.operator_method_signatures_overlap(reverse_class: str, reverse_method: str, forward_class: str, forward_method: str, context: Context) -> None → method MessageBuilder.operator_method_signatures_overlap(reverse_class: TypeInfo, reverse_method: str, forward_class: Type, forward_method: str, context: Context) -> None
  • removed: method TypeInfo.has_method(name: str) -> bool
  • added: class ImportedName(SymbolNode)
  • added: constructor ImportedName(target_fullname: str) -> None
  • added: field ImportAll.imported_names
  • added: method ImportedName.fullname() -> str
  • added: method ImportedName.name() -> str
  • added: method ImportedName.serialize() -> JsonDict
  • added: method TypeInfo.reset_subtype_cache() -> None
  • added: static method ImportedName.deserialize(data: JsonDict) -> ImportedName
  • changed: method Scope.enter_function(fdef: FuncItem) -> None → method Scope.enter_function(fdef: FuncBase) -> None
  • added: field Scope.SavedScope
  • added: method Scope.class_scope(info: TypeInfo) -> Iterator[None]
  • added: method Scope.current_function_name() -> Optional[str]
  • added: method Scope.current_type_name() -> Optional[str]
  • added: method Scope.function_scope(fdef: FuncBase) -> Iterator[None]
  • added: method Scope.save() -> SavedScope
  • added: method Scope.saved_scope(saved: SavedScope) -> Iterator[None]
  • changed: class SemanticAnalyzerPass2(NodeVisitor[None], SemanticAnalyzerPluginInterface) → class SemanticAnalyzerPass2(NodeVisitor[None], SemanticAnalyzerInterface, SemanticAnalyzerPluginInterface)
  • changed: method SemanticAnalyzerPass2.file_context(file_node: MypyFile, fnam: str, options: Options, active_type: Optional[TypeInfo]) -> Iterator[None] → method SemanticAnalyzerPass2.file_context(file_node: MypyFile, fnam: str, options: Options, active_type: Optional[TypeInfo], scope: Optional[Scope]=…) -> Iterator[None]
  • changed: method SemanticAnalyzerPass2.lookup_fully_qualified_or_none(name: str) -> Optional[SymbolTableNode] → method SemanticAnalyzerPass2.lookup_fully_qualified_or_none(fullname: str) -> Optional[SymbolTableNode]
  • changed: method SemanticAnalyzerPass2.refresh_partial(node: Union[MypyFile, FuncItem, OverloadedFuncDef]) -> None → method SemanticAnalyzerPass2.refresh_partial(node: Union[MypyFile, FuncItem, OverloadedFuncDef], patches: List[Tuple[int, Callable[[], None]]]) -> None
  • added: function apply_semantic_analyzer_patches(patches: List[Tuple[int, Callable[[], None]]]) -> None
  • added: method SemanticAnalyzerPass2.dereference_module_cross_ref(node: Optional[SymbolTableNode]) -> Optional[SymbolTableNode]
  • added: method SemanticAnalyzerPass2.lookup_current_scope(name: str) -> Optional[SymbolTableNode]
  • changed: class SemanticAnalyzerPass3(TraverserVisitor) → class SemanticAnalyzerPass3(TraverserVisitor, SemanticAnalyzerInterface)
  • changed: method SemanticAnalyzerPass3.fail(msg: str, ctx: Context, *, blocker: bool=…) -> None → method SemanticAnalyzerPass3.fail(msg: str, ctx: Context, serious: bool=…, *, blocker: bool=…) -> None
  • changed: method SemanticAnalyzerPass3.refresh_partial(node: Union[MypyFile, FuncItem, OverloadedFuncDef]) -> None → method SemanticAnalyzerPass3.refresh_partial(node: Union[MypyFile, FuncItem, OverloadedFuncDef], patches: List[Tuple[int, Callable[[], None]]]) -> None
  • added: method SemanticAnalyzerPass3.analyze_symbol_table(names: SymbolTable) -> None
  • added: method SemanticAnalyzerPass3.dereference_module_cross_ref(node: Optional[SymbolTableNode]) -> Optional[SymbolTableNode]
  • added: method SemanticAnalyzerPass3.lookup_fully_qualified(fullname: str) -> SymbolTableNode
  • added: method SemanticAnalyzerPass3.lookup_qualified(name: str, ctx: Context, suppress_errors: bool=…) -> Optional[SymbolTableNode]
  • added: method SemanticAnalyzerPass3.make_scoped_patch(fn: Callable[[], None]) -> Callable[[], None]
  • added: method SemanticAnalyzerPass3.note(msg: str, ctx: Context) -> None
  • added: class SemanticAnalyzerInterface
  • added: function create_indirect_imported_name(file_node: MypyFile, module: str, relative: int, imported_name: str) -> Optional[SymbolTableNode]
  • added: method SemanticAnalyzerInterface.dereference_module_cross_ref(node: Optional[SymbolTableNode]) -> Optional[SymbolTableNode]
  • added: method SemanticAnalyzerInterface.fail(msg: str, ctx: Context, serious: bool=…, *, blocker: bool=…) -> None
  • added: method SemanticAnalyzerInterface.lookup_fully_qualified(name: str) -> SymbolTableNode
  • added: method SemanticAnalyzerInterface.lookup_qualified(name: str, ctx: Context, suppress_errors: bool=…) -> Optional[SymbolTableNode]
  • added: method SemanticAnalyzerInterface.note(msg: str, ctx: Context) -> None
  • removed: class IdenticalTypeVisitor(TypeVisitor[bool])
  • removed: constructor IdenticalTypeVisitor(right: Type) -> None
  • removed: function is_identical_type(t: Type, s: Type) -> bool
  • removed: function is_identical_types(a: List[TT], b: List[TT]) -> bool
  • removed: method IdenticalTypeVisitor.visit_any(left: AnyType) -> bool
  • removed: method IdenticalTypeVisitor.visit_callable_type(left: CallableType) -> bool
  • removed: method IdenticalTypeVisitor.visit_deleted_type(left: DeletedType) -> bool
  • removed: method IdenticalTypeVisitor.visit_erased_type(left: ErasedType) -> bool
  • removed: method IdenticalTypeVisitor.visit_instance(left: Instance) -> bool
  • removed: method IdenticalTypeVisitor.visit_none_type(left: NoneTyp) -> bool
  • removed: method IdenticalTypeVisitor.visit_overloaded(left: Overloaded) -> bool
  • removed: method IdenticalTypeVisitor.visit_partial_type(left: PartialType) -> bool
  • removed: method IdenticalTypeVisitor.visit_tuple_type(left: TupleType) -> bool
  • removed: method IdenticalTypeVisitor.visit_type_type(left: TypeType) -> bool
  • removed: method IdenticalTypeVisitor.visit_type_var(left: TypeVarType) -> bool
  • removed: method IdenticalTypeVisitor.visit_typeddict_type(left: TypedDictType) -> bool
  • removed: method IdenticalTypeVisitor.visit_unbound_type(left: UnboundType) -> bool
  • removed: method IdenticalTypeVisitor.visit_uninhabited_type(t: UninhabitedType) -> bool
  • removed: method IdenticalTypeVisitor.visit_union_type(left: UnionType) -> bool
  • removed: variable TT
  • changed: class TypeReplaceVisitor(TypeVisitor[None]) → class TypeReplaceVisitor(SyntheticTypeVisitor[None])
  • changed: method NodeReplaceVisitor.fixup_type(typ: Type) -> None → method NodeReplaceVisitor.fixup_type(typ: Optional[Type]) -> None
  • added: function fixup_var(node: Var, replacements: Dict[SymbolNode, SymbolNode]) -> None
  • added: method NodeReplaceVisitor.fixup_and_reset_typeinfo(node: TypeInfo) -> TypeInfo
  • added: method NodeReplaceVisitor.process_base_func(node: FuncBase) -> None
  • added: method NodeReplaceVisitor.process_synthetic_type_info(info: TypeInfo) -> None
  • added: method NodeReplaceVisitor.visit_call_expr(node: CallExpr) -> None
  • added: method NodeReplaceVisitor.visit_cast_expr(node: CastExpr) -> None
  • added: method NodeReplaceVisitor.visit_type_alias_expr(node: TypeAliasExpr) -> None
  • added: method TypeReplaceVisitor.visit_callable_argument(typ: CallableArgument) -> None
  • added: method TypeReplaceVisitor.visit_ellipsis_type(typ: EllipsisType) -> None
  • added: method TypeReplaceVisitor.visit_star_type(typ: StarType) -> None
  • added: method TypeReplaceVisitor.visit_type_list(typ: TypeList) -> None
  • added: method NodeStripVisitor.process_lvalue_in_method(lvalue: Node) -> None
  • added: method NodeStripVisitor.strip_type_info(info: TypeInfo) -> None
  • added: method NodeStripVisitor.visit_import_all(node: ImportAll) -> None
  • added: method DependencyVisitor.process_type_info(info: TypeInfo) -> None
  • added: method DependencyVisitor.visit_import_all(o: ImportAll) -> None
  • added: method DependencyVisitor.visit_newtype_expr(o: NewTypeExpr) -> None
  • added: function check_consistency(o: object) -> None
  • added: function path_to_str(path: List[Tuple[object, object]]) -> str
  • added: variable DUMP_MISMATCH_NODES
  • added: function aggregate_by_type(objs: List[object]) -> Dict[type, List[object]]
  • added: function find_all_reachable(root: object) -> List[object]
  • added: function get_edge_candidates(o: object) -> Iterator[Tuple[object, object]]
  • added: function get_edges(o: object) -> Iterator[Tuple[object, object]]
  • added: function get_path(o: object, seen: Dict[int, object], parents: Dict[int, Tuple[int, object]]) -> List[Tuple[object, object]]
  • added: function get_reachable_graph(root: object) -> Tuple[Dict[int, object], Dict[int, Tuple[int, object]]]
  • added: function isproperty(o: object, attr: str) -> bool
  • added: variable ATOMIC_TYPE_BLACKLIST
  • added: variable ATTR_BLACKLIST
  • added: variable COLLECTION_TYPE_BLACKLIST
  • added: variable FUNCTION_TYPES
  • added: variable TYPE_BLACKLIST
  • added: variable method_descriptor_type
  • added: variable method_wrapper_type
  • added: variable wrapper_descriptor_type
  • added: function make_wildcard_trigger(module: str) -> str
  • added: variable WILDCARD_TAG
  • removed: function extract_type_maps(graph: Graph) -> Dict[str, Dict[Expression, Type]]
  • removed: function invalidate_stale_cache_entries(cache: SavedCache, changed_modules: List[Tuple[str, str]]) -> None
  • removed: function mark_all_meta_as_memory_only(graph: Dict[str, State], manager: BuildManager) -> None
  • removed: function memory_only_cache_meta(id: str, path: str, dependencies: List[str], suppressed: List[str], child_modules: List[str], dep_prios: List[int], dep_lines: List[int], source_hash: str, ignore_all: bool, manager: BuildManager) -> CacheMeta
  • removed: function preserve_full_cache(graph: Graph, manager: BuildManager) -> SavedCache
  • removed: function update_single_isolated(module: str, path: str, manager: BuildManager, previous_modules: Dict[str, str]) -> UpdateResult
  • removed: method FineGrainedBuildManager.update_single(module: str, path: str) -> Tuple[List[str], List[Tuple[str, str]], Tuple[str, str], bool]
  • changed: constructor FineGrainedBuildManager(manager: BuildManager, graph: Graph) -> None → constructor FineGrainedBuildManager(result: BuildResult) -> None
  • changed: function delete_module(module_id: str, graph: Dict[str, State], manager: BuildManager) -> Dict[str, State] → function delete_module(module_id: str, graph: Graph, manager: BuildManager) -> None
  • changed: function find_targets_recursive(manager: BuildManager, triggers: Set[str], deps: Dict[str, Set[str]], modules: Dict[str, MypyFile], up_to_date_modules: Set[str]) -> Dict[str, Set[DeferredNode]] → function find_targets_recursive(manager: BuildManager, triggers: Set[str], deps: Dict[str, Set[str]], up_to_date_modules: Set[str]) -> Dict[str, Set[DeferredNode]]
  • changed: function get_sources(modules: Dict[str, str], changed_modules: List[Tuple[str, str]]) -> List[BuildSource] → function get_sources(fscache: FileSystemCache, modules: Dict[str, str], changed_modules: List[Tuple[str, str]]) -> List[BuildSource]
  • changed: function lookup_target(modules: Dict[str, MypyFile], target: str) -> List[DeferredNode] → function lookup_target(manager: BuildManager, target: str) -> List[DeferredNode]
  • changed: method FineGrainedBuildManager.update(changed_modules: List[Tuple[str, str]]) -> List[str] → method FineGrainedBuildManager.update(changed_modules: List[Tuple[str, str]], removed_modules: List[Tuple[str, str]]) -> List[str]
  • added: function target_from_node(module: str, node: Union[FuncDef, MypyFile, OverloadedFuncDef, LambdaExpr]) -> Optional[str]
  • added: function update_module_isolated(module: str, path: str, manager: BuildManager, previous_modules: Dict[str, str], graph: Graph, force_removed: bool) -> UpdateResult
  • added: method FineGrainedBuildManager.update_module(module: str, path: str, force_removed: bool) -> Tuple[List[Tuple[str, str]], Tuple[str, str], Optional[List[str]]]
  • added: method FineGrainedBuildManager.update_one(changed_modules: List[Tuple[str, str]], initial_set: Set[str], removed_set: Set[str]) -> Tuple[List[Tuple[str, str]], Tuple[str, str], Optional[List[str]]]
  • added: function dump_dir(path: str) -> None
  • changed: constructor TypeAnalyser(lookup_func: Callable[[str, Context], Optional[SymbolTableNode]], lookup_fqn_func: Callable[[str], SymbolTableNode], tvar_scope: Optional[TypeVarScope], fail_func: Callable[[str, Context], None], note_func: Callable[[str, Context], None], plugin: Plugin, options: Options, is_typeshed_stub: bool, *, aliasing: bool=…, allow_tuple_literal: bool=…, allow_unnormalized: bool=…,… → constructor TypeAnalyser(api: SemanticAnalyzerInterface, tvar_scope: Optional[TypeVarScope], plugin: Plugin, options: Options, is_typeshed_stub: bool, *, aliasing: bool=…, allow_tuple_literal: bool=…, allow_unnormalized: bool=…, third_pass: bool=…, warn_bound_tvar: bool=…) -> None
  • changed: constructor TypeAnalyserPass3(lookup_func: Callable[[str, Context], Optional[SymbolTableNode]], lookup_fqn_func: Callable[[str], SymbolTableNode], fail_func: Callable[[str, Context], None], note_func: Callable[[str, Context], None], plugin: Plugin, options: Options, is_typeshed_stub: bool, indicator: Dict[str, bool], patches: List[Tuple[int, Callable[[], None]]]) -> None → constructor TypeAnalyserPass3(api: SemanticAnalyzerInterface, plugin: Plugin, options: Options, is_typeshed_stub: bool, indicator: Dict[str, bool], patches: List[Tuple[int, Callable[[], None]]]) -> None
  • changed: function analyze_type_alias(node: Expression, lookup_func: Callable[[str, Context], Optional[SymbolTableNode]], lookup_fqn_func: Callable[[str], SymbolTableNode], tvar_scope: TypeVarScope, fail_func: Callable[[str, Context], None], note_func: Callable[[str, Context], None], plugin: Plugin, options: Options, is_typeshed_stub: bool, allow_unnormalized: bool=…, in_dynamic_func: bool=…, global_scope:… → function analyze_type_alias(node: Expression, api: SemanticAnalyzerInterface, tvar_scope: TypeVarScope, plugin: Plugin, options: Options, is_typeshed_stub: bool, allow_unnormalized: bool=…, in_dynamic_func: bool=…, global_scope: bool=…, warn_bound_tvar: bool=…) -> Optional[Tuple[Type, Set[str]]]
  • added: field TypeOfAny.implementation_artifact
  • added: method Instance.has_readable_member(name: str) -> bool
  • added: class DecodeError(Exception)
  • added: function read_with_python_encoding(path: str, pyversion: Tuple[int, int]) -> Tuple[str, str]