MCPcopy Index your code
hub / github.com/python/mypy / analyze_namedtuple_classdef

Method analyze_namedtuple_classdef

mypy/semanal.py:2128–2160  ·  view source on GitHub ↗

Check if this class can define a named tuple.

(
        self, defn: ClassDef, tvar_defs: list[TypeVarLikeType]
    )

Source from the content-addressed store, hash-verified

2126 return False
2127
2128 def analyze_namedtuple_classdef(
2129 self, defn: ClassDef, tvar_defs: list[TypeVarLikeType]
2130 ) -> bool:
2131 """Check if this class can define a named tuple."""
2132 if (
2133 defn.info
2134 and defn.info.is_named_tuple
2135 and defn.info.tuple_type
2136 and not has_placeholder(defn.info.tuple_type)
2137 ):
2138 # Don't reprocess everything. We just need to process methods defined
2139 # in the named tuple class body.
2140 is_named_tuple = True
2141 info: TypeInfo | None = defn.info
2142 else:
2143 is_named_tuple, info = self.named_tuple_analyzer.analyze_namedtuple_classdef(
2144 defn, self.is_stub_file, self.is_func_scope()
2145 )
2146 if is_named_tuple:
2147 if info is None:
2148 self.mark_incomplete(defn.name, defn)
2149 else:
2150 self.prepare_class_def(defn, info, custom_names=True)
2151 self.setup_type_vars(defn, tvar_defs)
2152 self.setup_alias_type_vars(defn)
2153 with self.scope.class_scope(defn.info):
2154 for deco in defn.decorators:
2155 deco.accept(self)
2156 self.analyze_class_decorator_common(defn, defn.info, deco)
2157 with self.named_tuple_analyzer.save_namedtuple_body(info):
2158 self.analyze_class_body_common(defn)
2159 return True
2160 return False
2161
2162 def apply_class_plugin_hooks(self, defn: ClassDef) -> None:
2163 """Apply a plugin hook that may infer a more precise definition for a class."""

Callers 1

analyze_classMethod · 0.95

Calls 11

is_func_scopeMethod · 0.95
mark_incompleteMethod · 0.95
prepare_class_defMethod · 0.95
setup_type_varsMethod · 0.95
setup_alias_type_varsMethod · 0.95
has_placeholderFunction · 0.90
class_scopeMethod · 0.80
save_namedtuple_bodyMethod · 0.80
acceptMethod · 0.45

Tested by

no test coverage detected