from pypy.translator.driver import TranslationDriver from pypy.objspace.cpy.objspace import CPyObjSpace from pypy.objspace.cpy.ann_policy import CPyAnnotatorPolicy from pypy.interpreter.gateway import interp2app, ObjSpace def compile1(func, unwrap_spec): gw = interp2app(func, unwrap_spec = unwrap_spec) space = CPyObjSpace() space.config.translating = True w_gw = space.wrap(gw) def __init__(mod): w_mod = CPyObjSpace.W_Object(mod) space.setattr(w_mod, space.wrap('func'), w_gw) __init__.allow_someobjects = True driver = TranslationDriver() driver.setup(__init__, [object], policy=CPyAnnotatorPolicy(space)) driver.proceed(['compile_c']) return driver.cbuilder.c_ext_module.func def test_compile1(): def myfunc(space, x, y): return space.newlist([space.wrap(x), space.wrap(y)]) myfunc1 = compile1(myfunc, [ObjSpace, int, int]) assert myfunc1(5, 6) == [5, 6]