2015-06-09 11:15 GMT+02:00 Yicong Huang <hengha....@gmail.com>: > Great thanks! > "posix" module is a good example. But this interp code reference is in the > same module. > > How about a new module's app code to use interp code from other module? > One method to follow "posix" example is to define interp code in the same > module and wrap the interp function from other module for app code in the > same module to use. >
This is not clear to me. Are you trying to call interp code from interp code? Then just import the interp module (pypy.module.xxx.yyy) > > But I observed __pypy__ module is different. Interp functions of _pypy_ > module could be directly import in app code for other modules. > We are curious how does it work? > > > > On Tue, Jun 9, 2015 at 4:25 PM, Amaury Forgeot d'Arc <amaur...@gmail.com> > wrote: > >> 2015-06-09 10:20 GMT+02:00 Yicong Huang <hengha....@gmail.com>: >> >>> "The interpreter gateway has more options for exposing interp-level >>> functions and types to app-level." >>> >>> How does this work? >>> We tried several builtin modules, as well as "select" module that you >>> mentioned, all thses modules's interp-level code are invisble to other >>> module's app-level. >>> >>> We would like to take your advices to make a new module. But the problem >>> is how to make the new module's interp-level code visible to app-level? >>> >> >> See the "posix" module for example. Most functions are defined at >> interp-level, >> but there is also a file "app_posix.py" which just does "import posix" >> and happily calls interp-level code. >> >> >> >>> >>> >>> On Tue, Jun 9, 2015 at 9:30 AM, William ML Leslie < >>> william.leslie....@gmail.com> wrote: >>> >>>> On 8 June 2015 at 21:22, Yicong Huang <hengha....@gmail.com> wrote: >>>> >>>>> By reading modules in pypy/module, finally we found out the workaround >>>>> method. >>>>> >>>>> For most of modules in 'pypy/module', their interp code could not be >>>>> imported or used by other module's app code. >>>>> But there is special module '__pypy__', it exposed several interp >>>>> functions, and those code are used by other module's app code. >>>>> >>>> >>>> There's nothing special about __pypy__ for exposing interp-level code, >>>> the modules in pypy/modules usually include interp level code. >>>> >>>> For example, the select module exposes the interp-level function >>>> select_interp.select. Here's how it does so: >>>> >>>> >>>> https://bitbucket.org/pypy/pypy/src/b0c01840baea472c834635de627bb596c05d3bd5/pypy/module/select/__init__.py?at=default >>>> >>>> The interpreter gateway has more options for exposing interp-level >>>> functions and types to app-level. >>>> >>>> The workaround solution is simple: add one more interface in __pypy__ >>>>> module's __init__.py >>>>> >>>> >>>> You should make a new module rather than adding to one existing one. >>>> >>>> >>>>> PYC_MAGIC = get_pyc_magic(self.space) >>>> >>>> self.extra_interpdef('PYC_MAGIC', 'space.wrap(%d)' % PYC_MAGIC) >>>> >>>> >>>>> Are the above code do the magic thing to expose interp code? >>>>> >>>> >>>> They are exposing an integer value called PYC_MAGIC, which is the >>>> value for determining what python the .pyc file was compiled for. >>>> >>>> This is about exposing an integer rather than a function, it's >>>> probably not relevant to you. >>>> >>>> >>>> -- >>>> William Leslie >>>> >>>> Notice: >>>> Likely much of this email is, by the nature of copyright, covered under >>>> copyright law. You absolutely MAY reproduce any part of it in accordance >>>> with the copyright law of the nation you are reading this in. Any attempt >>>> to DENY YOU THOSE RIGHTS would be illegal without prior contractual >>>> agreement. >>>> >>> >>> >>> _______________________________________________ >>> pypy-dev mailing list >>> pypy-dev@python.org >>> https://mail.python.org/mailman/listinfo/pypy-dev >>> >>> >> >> >> -- >> Amaury Forgeot d'Arc >> > > -- Amaury Forgeot d'Arc
_______________________________________________ pypy-dev mailing list pypy-dev@python.org https://mail.python.org/mailman/listinfo/pypy-dev