[pypy-svn] pypy default: (lambacck) Implement PyExceptionInstance_Class,
amauryfa
commits-noreply at bitbucket.org
Sat Mar 26 00:01:07 CET 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch:
Changeset: r42950:daf495c3d9a5
Date: 2011-03-26 00:00 +0100
http://bitbucket.org/pypy/pypy/changeset/daf495c3d9a5/
Log: (lambacck) Implement PyExceptionInstance_Class, simplified because
2.7 strongly discourages old-style exceptions.
diff --git a/pypy/module/cpyext/pyerrors.py b/pypy/module/cpyext/pyerrors.py
--- a/pypy/module/cpyext/pyerrors.py
+++ b/pypy/module/cpyext/pyerrors.py
@@ -39,6 +39,10 @@
state = space.fromcache(State)
state.clear_exception()
+ at cpython_api([PyObject], PyObject)
+def PyExceptionInstance_Class(space, w_obj):
+ return space.type(w_obj)
+
@cpython_api([PyObjectP, PyObjectP, PyObjectP], lltype.Void)
def PyErr_Fetch(space, ptype, pvalue, ptraceback):
"""Retrieve the error indicator into three variables whose addresses are passed.
diff --git a/pypy/module/cpyext/test/test_pyerrors.py b/pypy/module/cpyext/test/test_pyerrors.py
--- a/pypy/module/cpyext/test/test_pyerrors.py
+++ b/pypy/module/cpyext/test/test_pyerrors.py
@@ -96,6 +96,10 @@
out, err = capfd.readouterr()
assert "Exception ValueError: 'message' in 'location' ignored" == err.strip()
+ def test_ExceptionInstance_Class(self, space, api):
+ instance = space.call_function(space.w_ValueError)
+ assert api.PyExceptionInstance_Class(instance) is space.w_ValueError
+
class AppTestFetch(AppTestCpythonExtensionBase):
def setup_class(cls):
AppTestCpythonExtensionBase.setup_class.im_func(cls)
More information about the Pypy-commit
mailing list