in library/compiler/static.py [0:0]
def __init__(self) -> None:
self.modules: Dict[str, ModuleTable] = {}
builtins_children = {
"object": OBJECT_TYPE,
"type": TYPE_TYPE,
"None": NONE_TYPE.instance,
"int": INT_EXACT_TYPE,
"complex": COMPLEX_EXACT_TYPE,
"str": STR_EXACT_TYPE,
"bytes": BYTES_TYPE,
"bool": BOOL_TYPE,
"float": FLOAT_EXACT_TYPE,
"len": LenFunction(FUNCTION_TYPE, boxed=True),
"min": ExtremumFunction(FUNCTION_TYPE, is_min=True),
"max": ExtremumFunction(FUNCTION_TYPE, is_min=False),
"list": LIST_EXACT_TYPE,
"tuple": TUPLE_EXACT_TYPE,
"set": SET_EXACT_TYPE,
"sorted": SortedFunction(FUNCTION_TYPE),
"Exception": EXCEPTION_TYPE,
"BaseException": BASE_EXCEPTION_TYPE,
"isinstance": IsInstanceFunction(),
"issubclass": IsSubclassFunction(),
"staticmethod": STATIC_METHOD_TYPE,
"reveal_type": RevealTypeFunction(),
}
strict_builtins = StrictBuiltins(builtins_children)
typing_children = {
# TODO: Need typed members for dict
"Dict": DICT_TYPE,
"List": LIST_TYPE,
"Final": FINAL_TYPE,
"final": FINAL_METHOD_TYPE,
"NamedTuple": NAMED_TUPLE_TYPE,
"Optional": OPTIONAL_TYPE,
"Union": UNION_TYPE,
"Tuple": TUPLE_TYPE,
"TYPE_CHECKING": BOOL_TYPE.instance,
}
builtins_children["<builtins>"] = strict_builtins
builtins_children["<fixed-modules>"] = StrictBuiltins(
{"typing": StrictBuiltins(typing_children)}
)
self.builtins = self.modules["builtins"] = ModuleTable(
"builtins",
"<builtins>",
self,
builtins_children,
)
self.typing = self.modules["typing"] = ModuleTable(
"typing", "<typing>", self, typing_children
)
self.statics = self.modules["__static__"] = ModuleTable(
"__static__",
"<__static__>",
self,
{
"Array": ARRAY_EXACT_TYPE,
"CheckedDict": CHECKED_DICT_EXACT_TYPE,
"allow_weakrefs": ALLOW_WEAKREFS_TYPE,
"box": BoxFunction(FUNCTION_TYPE),
"cast": CastFunction(FUNCTION_TYPE),
"clen": LenFunction(FUNCTION_TYPE, boxed=False),
"dynamic_return": DYNAMIC_RETURN_TYPE,
"size_t": UINT64_TYPE,
"ssize_t": INT64_TYPE,
"cbool": CBOOL_TYPE,
"inline": INLINE_TYPE,
# This is a way to disable the static compiler for
# individual functions/methods
"_donotcompile": DONOTCOMPILE_TYPE,
"int8": INT8_TYPE,
"int16": INT16_TYPE,
"int32": INT32_TYPE,
"int64": INT64_TYPE,
"uint8": UINT8_TYPE,
"uint16": UINT16_TYPE,
"uint32": UINT32_TYPE,
"uint64": UINT64_TYPE,
"char": CHAR_TYPE,
"double": DOUBLE_TYPE,
"unbox": UnboxFunction(FUNCTION_TYPE),
"nonchecked_dicts": BOOL_TYPE.instance,
"pydict": DICT_TYPE,
"PyDict": DICT_TYPE,
"Vector": VECTOR_TYPE,
"RAND_MAX": NumClass(
TypeName("builtins", "int"), pytype=int, literal_value=RAND_MAX
).instance,
"rand": reflect_builtin_function(rand),
},
)
if SPAM_OBJ is not None:
self.modules["xxclassloader"] = ModuleTable(
"xxclassloader",
"<xxclassloader>",
self,
{
"spamobj": SPAM_OBJ,
"XXGeneric": XX_GENERIC_TYPE,
"foo": reflect_builtin_function(xxclassloader.foo),
"bar": reflect_builtin_function(xxclassloader.bar),
"neg": reflect_builtin_function(xxclassloader.neg),
},
)
# We need to clone the dictionaries for each type so that as we populate
# generic instantations that we don't store them in the global dict for
# built-in types
self.generic_types: GenericTypesDict = {
k: dict(v) for k, v in BUILTIN_GENERICS.items()
}