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

Function transform_del_item

mypyc/irbuild/statement.py:1222–1247  ·  view source on GitHub ↗
(builder: IRBuilder, target: AssignmentTarget, line: int)

Source from the content-addressed store, hash-verified

1220
1221
1222def transform_del_item(builder: IRBuilder, target: AssignmentTarget, line: int) -> None:
1223 if isinstance(target, AssignmentTargetIndex):
1224 builder.gen_method_call(
1225 target.base, "__delitem__", [target.index], result_type=None, line=line
1226 )
1227 elif isinstance(target, AssignmentTargetAttr):
1228 if isinstance(target.obj_type, RInstance):
1229 cl = target.obj_type.class_ir
1230 if not cl.is_deletable(target.attr):
1231 builder.error(f'"{target.attr}" cannot be deleted', line)
1232 builder.note(
1233 'Using "__deletable__ = '
1234 + '[\'<attr>\']" in the class body enables "del obj.<attr>"',
1235 line,
1236 )
1237 key = builder.load_str(target.attr)
1238 builder.primitive_op(py_delattr_op, [target.obj, key], line)
1239 elif isinstance(target, AssignmentTargetRegister):
1240 # Delete a local by assigning an error value to it, which will
1241 # prompt the insertion of uninit checks.
1242 builder.add(
1243 Assign(target.register, builder.add(LoadErrorValue(target.type, undefines=True)))
1244 )
1245 elif isinstance(target, AssignmentTargetTuple):
1246 for subtarget in target.items:
1247 transform_del_item(builder, subtarget, line)
1248
1249
1250# yield/yield from/await

Callers 1

transform_del_stmtFunction · 0.85

Calls 10

AssignClass · 0.90
LoadErrorValueClass · 0.90
isinstanceFunction · 0.85
is_deletableMethod · 0.80
gen_method_callMethod · 0.45
errorMethod · 0.45
noteMethod · 0.45
load_strMethod · 0.45
primitive_opMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…