Author: Philip Jenvey <pjen...@underboss.org>
Branch: py3k
Changeset: r70079:aaba1a61bc19
Date: 2014-03-18 21:18 -0700
http://bitbucket.org/pypy/pypy/changeset/aaba1a61bc19/

Log:    adapt to buffer refactor: not everything exposes a __buffer__ now

diff --git a/pypy/module/array/interp_array.py 
b/pypy/module/array/interp_array.py
--- a/pypy/module/array/interp_array.py
+++ b/pypy/module/array/interp_array.py
@@ -40,16 +40,19 @@
 
             if len(__args__.arguments_w) > 0:
                 w_initializer = __args__.arguments_w[0]
-                if space.lookup(w_initializer, '__buffer__') is not None:
-                    if isinstance(w_initializer, W_ArrayBase):
-                        a.extend(w_initializer, True)
-                    else:
-                        a.descr_frombytes(space,
-                                          space.bufferstr_w(w_initializer))
+                if isinstance(w_initializer, W_ArrayBase):
+                    a.extend(w_initializer, True)
                 elif space.type(w_initializer) is space.w_list:
                     a.descr_fromlist(space, w_initializer)
                 else:
-                    a.extend(w_initializer, True)
+                    try:
+                        buf = space.bufferstr_w(w_initializer)
+                    except OperationError as e:
+                        if not e.match(space, space.w_TypeError):
+                            raise
+                        a.extend(w_initializer, True)
+                    else:
+                        a.descr_frombytes(space, buf)
             break
     else:
         msg = 'bad typecode (must be b, B, u, h, H, i, I, l, L, f or d)'
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to