Author: Manuel Jacob <m...@manueljacob.de> Branch: py3.5 Changeset: r90785:eff72e17f613 Date: 2017-03-22 08:59 +0100 http://bitbucket.org/pypy/pypy/changeset/eff72e17f613/
Log: hg merge default diff --git a/pypy/module/cpyext/modsupport.py b/pypy/module/cpyext/modsupport.py --- a/pypy/module/cpyext/modsupport.py +++ b/pypy/module/cpyext/modsupport.py @@ -19,6 +19,14 @@ def init_moduleobject(space): make_typedescr(Module.typedef, basestruct=PyModuleObject.TO) +@cpython_api([rffi.CCHARP], PyObject) +def PyModule_New(space, name): + """ + Return a new module object with the __name__ attribute set to name. + Only the module's __doc__ and __name__ attributes are filled in; + the caller is responsible for providing a __file__ attribute.""" + return Module(space, space.newtext(rffi.charp2str(name))) + @cpython_api([PyModuleDef, rffi.INT_real], PyObject) def PyModule_Create2(space, module, api_version): """Create a new module object, given the definition in module, assuming the diff --git a/pypy/module/cpyext/stubs.py b/pypy/module/cpyext/stubs.py --- a/pypy/module/cpyext/stubs.py +++ b/pypy/module/cpyext/stubs.py @@ -1326,14 +1326,6 @@ PyModule_Type.""" raise NotImplementedError -@cpython_api([rffi.CCHARP], PyObject) -def PyModule_New(space, name): - """ - Return a new module object with the __name__ attribute set to name. - Only the module's __doc__ and __name__ attributes are filled in; - the caller is responsible for providing a __file__ attribute.""" - raise NotImplementedError - @cpython_api([PyObject], rffi.CCHARP) def PyModule_GetFilename(space, module): """Similar to PyModule_GetFilenameObject() but return the filename diff --git a/pypy/module/cpyext/test/test_module.py b/pypy/module/cpyext/test/test_module.py --- a/pypy/module/cpyext/test/test_module.py +++ b/pypy/module/cpyext/test/test_module.py @@ -1,9 +1,16 @@ +from pypy.module.cpyext.modsupport import PyModule_New from pypy.module.cpyext.test.test_api import BaseApiTest from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase from rpython.rtyper.lltypesystem import rffi class TestModuleObject(BaseApiTest): + def test_module_new(self, space): + with rffi.scoped_str2charp('testname') as buf: + w_mod = PyModule_New(space, buf) + assert space.eq_w(space.getattr(w_mod, space.newtext('__name__')), + space.newtext('testname')) + def test_module_getname(self, space, api): w_sys = space.wrap(space.sys) p = api.PyModule_GetName(w_sys) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit