def get_generator_type(self, typdict, retty): gi = self.generator_info arg_types = [None] * len(self.arg_names) for index, name in self.arg_names.items(): arg_types[index] = typdict[name] state_types = [typdict[var_name] for var_name in gi.state_vars] yield_types = [typdict[y.inst.value.name] for y in gi.get_yield_points()] if not yield_types: raise TypingError("Cannot type generator: it does not yield any value") yield_type = self.context.unify_types(*yield_types) return types.Generator(self.py_func, yield_type, arg_types, state_types, has_finalizer=True)
class TestGeneratorModel(test_factory()): fe_type = types.Generator(gen_func=None, yield_type=types.int32, arg_types=[types.int64, types.float32], state_types=[types.intp, types.intp[::1]], has_finalizer=False)