[pypy-commit] pypy default: (fijal, arigo)
arigo
noreply at buildbot.pypy.org
Thu Jul 30 10:40:16 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r78716:ea3543fd65b8
Date: 2015-07-30 10:40 +0200
http://bitbucket.org/pypy/pypy/changeset/ea3543fd65b8/
Log: (fijal, arigo)
Don't use TypeError in RPython please (grafted from
b2013723e0ecaefaf2f35f063c74c873bfd57667)
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -200,7 +200,7 @@
w_result = space.get_and_call_function(w_impl, self)
if space.isinstance_w(w_result, space.w_buffer):
return w_result.buffer_w(space, flags)
- raise TypeError
+ raise BufferInterfaceNotFound
def readbuf_w(self, space):
w_impl = space.lookup(self, '__buffer__')
@@ -208,7 +208,7 @@
w_result = space.get_and_call_function(w_impl, self)
if space.isinstance_w(w_result, space.w_buffer):
return w_result.readbuf_w(space)
- raise TypeError
+ raise BufferInterfaceNotFound
def writebuf_w(self, space):
w_impl = space.lookup(self, '__buffer__')
@@ -216,7 +216,7 @@
w_result = space.get_and_call_function(w_impl, self)
if space.isinstance_w(w_result, space.w_buffer):
return w_result.writebuf_w(space)
- raise TypeError
+ raise BufferInterfaceNotFound
def charbuf_w(self, space):
w_impl = space.lookup(self, '__buffer__')
@@ -224,7 +224,7 @@
w_result = space.get_and_call_function(w_impl, self)
if space.isinstance_w(w_result, space.w_buffer):
return w_result.charbuf_w(space)
- raise TypeError
+ raise BufferInterfaceNotFound
def str_w(self, space):
self._typed_unwrap_error(space, "string")
@@ -354,6 +354,9 @@
class DescrMismatch(Exception):
pass
+class BufferInterfaceNotFound(Exception):
+ pass
+
def wrappable_class_name(Class):
try:
return Class.typedef.name
@@ -1403,7 +1406,7 @@
# New buffer interface, returns a buffer based on flags (PyObject_GetBuffer)
try:
return w_obj.buffer_w(self, flags)
- except TypeError:
+ except BufferInterfaceNotFound:
raise oefmt(self.w_TypeError,
"'%T' does not have the buffer interface", w_obj)
@@ -1411,7 +1414,7 @@
# Old buffer interface, returns a readonly buffer (PyObject_AsReadBuffer)
try:
return w_obj.readbuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
raise oefmt(self.w_TypeError,
"expected a readable buffer object")
@@ -1419,7 +1422,7 @@
# Old buffer interface, returns a writeable buffer (PyObject_AsWriteBuffer)
try:
return w_obj.writebuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
raise oefmt(self.w_TypeError,
"expected a writeable buffer object")
@@ -1427,7 +1430,7 @@
# Old buffer interface, returns a character buffer (PyObject_AsCharBuffer)
try:
return w_obj.charbuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
raise oefmt(self.w_TypeError,
"expected a character buffer object")
@@ -1451,11 +1454,11 @@
return self.str(w_obj).readbuf_w(self)
try:
return w_obj.buffer_w(self, 0)
- except TypeError:
+ except BufferInterfaceNotFound:
pass
try:
return w_obj.readbuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
self._getarg_error("string or buffer", w_obj)
elif code == 's#':
if self.isinstance_w(w_obj, self.w_str):
@@ -1464,24 +1467,23 @@
return self.str(w_obj).str_w(self)
try:
return w_obj.readbuf_w(self).as_str()
- except TypeError:
+ except BufferInterfaceNotFound:
self._getarg_error("string or read-only buffer", w_obj)
elif code == 'w*':
try:
- try:
- return w_obj.buffer_w(self, self.BUF_WRITABLE)
- except OperationError:
- self._getarg_error("read-write buffer", w_obj)
- except TypeError:
+ return w_obj.buffer_w(self, self.BUF_WRITABLE)
+ except OperationError:
+ self._getarg_error("read-write buffer", w_obj)
+ except BufferInterfaceNotFound:
pass
try:
return w_obj.writebuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
self._getarg_error("read-write buffer", w_obj)
elif code == 't#':
try:
return w_obj.charbuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
self._getarg_error("string or read-only character buffer", w_obj)
else:
assert False
@@ -1503,13 +1505,13 @@
raise
try:
buf = w_obj.buffer_w(self, 0)
- except TypeError:
+ except BufferInterfaceNotFound:
pass
else:
return buf.as_str()
try:
buf = w_obj.readbuf_w(self)
- except TypeError:
+ except BufferInterfaceNotFound:
self._getarg_error("string or buffer", w_obj)
else:
return buf.as_str()
diff --git a/pypy/module/_file/interp_file.py b/pypy/module/_file/interp_file.py
--- a/pypy/module/_file/interp_file.py
+++ b/pypy/module/_file/interp_file.py
@@ -12,6 +12,7 @@
from pypy.interpreter.typedef import (TypeDef, GetSetProperty,
interp_attrproperty, make_weakref_descr, interp_attrproperty_w)
from pypy.interpreter.gateway import interp2app, unwrap_spec
+from pypy.interpreter.baseobjspace import BufferInterfaceNotFound
from pypy.interpreter.streamutil import wrap_streamerror, wrap_oserror_as_ioerror
@@ -499,7 +500,7 @@
line = w_line.readbuf_w(space).as_str()
else:
line = w_line.charbuf_w(space)
- except TypeError:
+ except BufferInterfaceNotFound:
raise OperationError(space.w_TypeError, space.wrap(
"writelines() argument must be a sequence of strings"))
else:
diff --git a/pypy/module/_winreg/interp_winreg.py b/pypy/module/_winreg/interp_winreg.py
--- a/pypy/module/_winreg/interp_winreg.py
+++ b/pypy/module/_winreg/interp_winreg.py
@@ -1,5 +1,5 @@
from __future__ import with_statement
-from pypy.interpreter.baseobjspace import W_Root
+from pypy.interpreter.baseobjspace import W_Root, BufferInterfaceNotFound
from pypy.interpreter.gateway import interp2app, unwrap_spec
from pypy.interpreter.typedef import TypeDef, GetSetProperty
from pypy.interpreter.error import OperationError, wrap_windowserror, oefmt
@@ -335,7 +335,7 @@
else:
try:
value = w_value.readbuf_w(space)
- except TypeError:
+ except BufferInterfaceNotFound:
raise oefmt(space.w_TypeError,
"Objects of type '%T' can not be used as binary "
"registry values", w_value)
diff --git a/pypy/module/operator/tscmp.py b/pypy/module/operator/tscmp.py
--- a/pypy/module/operator/tscmp.py
+++ b/pypy/module/operator/tscmp.py
@@ -9,6 +9,7 @@
from rpython.translator.tool.cbuild import ExternalCompilationInfo
from pypy.interpreter.error import oefmt
+from pypy.interpreter.baseobjspace import BufferInterfaceNotFound
cwd = py.path.local(__file__).dirpath()
eci = ExternalCompilationInfo(
@@ -60,7 +61,7 @@
try:
a_buf = w_a.buffer_w(space, space.BUF_SIMPLE)
b_buf = w_b.buffer_w(space, space.BUF_SIMPLE)
- except TypeError:
+ except BufferInterfaceNotFound:
raise oefmt(space.w_TypeError,
"unsupported operand types(s) or combination of types: "
"'%T' and '%T'", w_a, w_b)
More information about the pypy-commit
mailing list