MCPcopy
hub / github.com/python/mypy / process_namedtuple

Method process_namedtuple

mypy/stubgen.py:1061–1085  ·  view source on GitHub ↗
(self, lvalue: NameExpr, rvalue: CallExpr)

Source from the content-addressed store, hash-verified

1059 return None # Not a named tuple call
1060
1061 def process_namedtuple(self, lvalue: NameExpr, rvalue: CallExpr) -> None:
1062 if self._state == CLASS:
1063 self.add("\n")
1064
1065 if not isinstance(rvalue.args[0], StrExpr):
1066 self.annotate_as_incomplete(lvalue)
1067 return
1068
1069 fields = self._get_namedtuple_fields(rvalue)
1070 if fields is None:
1071 self.annotate_as_incomplete(lvalue)
1072 return
1073 bases = self.add_name("typing.NamedTuple")
1074 # TODO: Add support for generic NamedTuples. Requires `Generic` as base class.
1075 class_def = f"{self._indent}class {lvalue.name}({bases}):"
1076 if len(fields) == 0:
1077 self.add(f"{class_def} ...\n")
1078 self._state = EMPTY_CLASS
1079 else:
1080 if self._state not in (EMPTY, CLASS):
1081 self.add("\n")
1082 self.add(f"{class_def}\n")
1083 for f_name, f_type in fields:
1084 self.add(f"{self._indent} {f_name}: {f_type}\n")
1085 self._state = CLASS
1086
1087 def is_typeddict(self, expr: CallExpr) -> bool:
1088 return self.get_fullname(expr.callee) in TPDICT_NAMES

Callers 1

visit_assignment_stmtMethod · 0.95

Calls 6

isinstanceFunction · 0.85
lenFunction · 0.85
add_nameMethod · 0.80
addMethod · 0.45

Tested by

no test coverage detected