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

Class FuncSignature

mypyc/ir/func_ir.py:77–122  ·  view source on GitHub ↗

Signature of a function in IR.

Source from the content-addressed store, hash-verified

75
76
77class FuncSignature:
78 """Signature of a function in IR."""
79
80 # TODO: Track if method?
81
82 def __init__(self, args: Sequence[RuntimeArg], ret_type: RType) -> None:
83 self.args = tuple(args)
84 self.ret_type = ret_type
85 # Bitmap arguments are use to mark default values for arguments that
86 # have types with overlapping error values.
87 self.num_bitmap_args = num_bitmap_args(self.args)
88 if self.num_bitmap_args:
89 extra = [
90 RuntimeArg(bitmap_name(i), bitmap_rprimitive, pos_only=True)
91 for i in range(self.num_bitmap_args)
92 ]
93 self.args = self.args + tuple(reversed(extra))
94
95 def real_args(self) -> tuple[RuntimeArg, ...]:
96 """Return arguments without any synthetic bitmap arguments."""
97 if self.num_bitmap_args:
98 return self.args[: -self.num_bitmap_args]
99 return self.args
100
101 def bound_sig(self) -> FuncSignature:
102 if self.num_bitmap_args:
103 return FuncSignature(self.args[1 : -self.num_bitmap_args], self.ret_type)
104 else:
105 return FuncSignature(self.args[1:], self.ret_type)
106
107 def __repr__(self) -> str:
108 return f"FuncSignature(args={self.args!r}, ret={self.ret_type!r})"
109
110 def serialize(self) -> JsonDict:
111 if self.num_bitmap_args:
112 args = self.args[: -self.num_bitmap_args]
113 else:
114 args = self.args
115 return {"args": [t.serialize() for t in args], "ret_type": self.ret_type.serialize()}
116
117 @classmethod
118 def deserialize(cls, data: JsonDict, ctx: DeserMaps) -> FuncSignature:
119 return FuncSignature(
120 [RuntimeArg.deserialize(arg, ctx) for arg in data["args"]],
121 deserialize_type(data["ret_type"], ctx),
122 )
123
124
125def num_bitmap_args(args: tuple[RuntimeArg, ...]) -> int:

Callers 15

transform_lambda_exprFunction · 0.90
gen_glue_methodFunction · 0.90
gen_glue_propertyFunction · 0.90
gen_glue_property_setterFunction · 0.90
fdef_to_sigMethod · 0.90
enter_methodMethod · 0.90
allocate_classFunction · 0.90
add_getter_declarationFunction · 0.90
add_setter_declarationFunction · 0.90
prepare_init_methodFunction · 0.90

Calls

no outgoing calls

Tested by 5

func_declMethod · 0.72
test_callMethod · 0.72
test_call_two_argsMethod · 0.72
test_simpleMethod · 0.72
test_registerMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…