INNER CODE UNIT · Python
op_to_handler
metatypedev/metatype · src/pyrt_wit_wire/main.py:109
def op_to_handler(op: MatInfo) -> ErasedHandler:
data_parsed = json.loads(op.mat_data_json)
if data_parsed["ty"] == "def":
module = types.ModuleType(op.op_name)
exec(data_parsed["source"], module.__dict__)
fn = module.__dict__[data_parsed["func_name"]]
return ErasedHandler(handler_fn=fn)
elif data_parsed["ty"] == "import_function":
prefix = data_parsed["func_name"]
modules_raw = data_parsed["sources"]
finder = ThePathFinder(
{os.path.join(prefix, path): modules_raw[path] for path in modules_raw}
)
sys.meta_path.append(finder)
try:
module = importlib.import_module(