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

Function generate_getseters_table

mypyc/codegen/emitclass.py:1096–1124  ·  view source on GitHub ↗
(cl: ClassIR, name: str, emitter: Emitter)

Source from the content-addressed store, hash-verified

1094
1095
1096def generate_getseters_table(cl: ClassIR, name: str, emitter: Emitter) -> None:
1097 emitter.emit_line(f"static PyGetSetDef {name}[] = {{")
1098 if not cl.is_trait:
1099 for attr in cl.attributes:
1100 emitter.emit_line(f'{{"{attr}",')
1101 emitter.emit_line(
1102 " (getter){}, (setter){},".format(
1103 getter_name(cl, attr, emitter.names), setter_name(cl, attr, emitter.names)
1104 )
1105 )
1106 emitter.emit_line(" NULL, NULL},")
1107 for prop, (getter, setter) in cl.properties.items():
1108 if getter.decl.implicit:
1109 continue
1110
1111 emitter.emit_line(f'{{"{prop}",')
1112 emitter.emit_line(f" (getter){getter_name(cl, prop, emitter.names)},")
1113
1114 if setter:
1115 emitter.emit_line(f" (setter){setter_name(cl, prop, emitter.names)},")
1116 emitter.emit_line("NULL, NULL},")
1117 else:
1118 emitter.emit_line("NULL, NULL, NULL},")
1119
1120 if cl.has_dict:
1121 emitter.emit_line('{"__dict__", PyObject_GenericGetDict, PyObject_GenericSetDict},')
1122
1123 emitter.emit_line("{NULL} /* Sentinel */")
1124 emitter.emit_line("};")
1125
1126
1127def generate_getseters(cl: ClassIR, emitter: Emitter) -> None:

Callers 1

generate_classFunction · 0.85

Calls 5

getter_nameFunction · 0.85
setter_nameFunction · 0.85
emit_lineMethod · 0.45
formatMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…