MCPcopy Create free account
hub / github.com/python/mypy / flatten_classes

Method flatten_classes

mypyc/irbuild/builder.py:1301–1322  ·  view source on GitHub ↗

Flatten classes in isinstance(obj, (A, (B, C))). If at least one item is not a reference to a native class, return None.

(self, arg: RefExpr | TupleExpr)

Source from the content-addressed store, hash-verified

1299 # Basic helpers
1300
1301 def flatten_classes(self, arg: RefExpr | TupleExpr) -> list[ClassIR] | None:
1302 """Flatten classes in isinstance(obj, (A, (B, C))).
1303
1304 If at least one item is not a reference to a native class, return None.
1305 """
1306 if isinstance(arg, RefExpr):
1307 if isinstance(arg.node, TypeInfo) and self.is_native_module_ref_expr(arg):
1308 ir = self.mapper.type_to_ir.get(arg.node)
1309 if ir:
1310 return [ir]
1311 return None
1312 else:
1313 res: list[ClassIR] = []
1314 for item in arg.items:
1315 if isinstance(item, (RefExpr, TupleExpr)):
1316 item_part = self.flatten_classes(item)
1317 if item_part is None:
1318 return None
1319 res.extend(item_part)
1320 else:
1321 return None
1322 return res
1323
1324 def enter(self, fn_info: FuncInfo | str = "", *, ret_type: RType = none_rprimitive) -> None:
1325 if isinstance(fn_info, str):

Callers 1

translate_isinstanceFunction · 0.80

Calls 4

isinstanceFunction · 0.85
extendMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected