Author: Ronan Lamy <[email protected]> Branch: py3.5 Changeset: r91658:97ca3ac43c30 Date: 2017-06-28 17:22 +0100 http://bitbucket.org/pypy/pypy/changeset/97ca3ac43c30/
Log: Implement _PyNamespace_New() diff --git a/pypy/module/cpyext/__init__.py b/pypy/module/cpyext/__init__.py --- a/pypy/module/cpyext/__init__.py +++ b/pypy/module/cpyext/__init__.py @@ -75,6 +75,7 @@ import pypy.module.cpyext.methodobject import pypy.module.cpyext.dictproxyobject import pypy.module.cpyext.genobject +import pypy.module.cpyext.namespaceobject # now that all rffi_platform.Struct types are registered, configure them api.configure_types() diff --git a/pypy/module/cpyext/namespaceobject.py b/pypy/module/cpyext/namespaceobject.py new file mode 100644 --- /dev/null +++ b/pypy/module/cpyext/namespaceobject.py @@ -0,0 +1,8 @@ +from pypy.module.cpyext.api import cts + [email protected]("PyObject * _PyNamespace_New(PyObject *kwds)") +def _PyNamespace_new(space, w_kwds): + return space.appexec([w_kwds], """(kwds): + from _structseq import SimpleNamespace + return SimpleNamespace(**kwds) + """) diff --git a/pypy/module/cpyext/test/test_namespaceobject.py b/pypy/module/cpyext/test/test_namespaceobject.py new file mode 100644 --- /dev/null +++ b/pypy/module/cpyext/test/test_namespaceobject.py @@ -0,0 +1,11 @@ +from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase + +class AppTestNamespace(AppTestCpythonExtensionBase): + def test_simple(self): + from types import SimpleNamespace + module = self.import_extension('ns', [ + ("new", "METH_O", + """ + return _PyNamespace_New(args); + """)]) + assert module.new({'a': 1, 'b': 2}) == SimpleNamespace(a=1, b=2) _______________________________________________ pypy-commit mailing list [email protected] https://mail.python.org/mailman/listinfo/pypy-commit
