[pypy-commit] pypy oefmt: merge default

pjenvey pypy.commits at gmail.com
Mon May 2 18:53:45 EDT 2016


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: oefmt
Changeset: r84150:2d2225da8be0
Date: 2016-05-02 15:51 -0700
http://bitbucket.org/pypy/pypy/changeset/2d2225da8be0/

Log:	merge default

diff too long, truncating to 2000 out of 10370 lines

diff --git a/TODO b/TODO
deleted file mode 100644
--- a/TODO
+++ /dev/null
@@ -1,2 +0,0 @@
-* reduce size of generated c code from slot definitions in slotdefs.
-* remove broken DEBUG_REFCOUNT from pyobject.py
diff --git a/pypy/doc/index-of-release-notes.rst b/pypy/doc/index-of-release-notes.rst
--- a/pypy/doc/index-of-release-notes.rst
+++ b/pypy/doc/index-of-release-notes.rst
@@ -6,6 +6,7 @@
 
 .. toctree::
 
+   release-5.1.1.rst
    release-5.1.0.rst
    release-5.0.1.rst
    release-5.0.0.rst
diff --git a/pypy/doc/tool/mydot.py b/pypy/doc/tool/mydot.py
--- a/pypy/doc/tool/mydot.py
+++ b/pypy/doc/tool/mydot.py
@@ -68,7 +68,7 @@
                       help="output format")
     options, args = parser.parse_args()
     if len(args) != 1:
-        raise ValueError, "need exactly one argument"
+        raise ValueError("need exactly one argument")
     epsfile = process_dot(py.path.local(args[0]))
     if options.format == "ps" or options.format == "eps":
         print epsfile.read()
diff --git a/pypy/goal/targetpypystandalone.py b/pypy/goal/targetpypystandalone.py
--- a/pypy/goal/targetpypystandalone.py
+++ b/pypy/goal/targetpypystandalone.py
@@ -63,7 +63,7 @@
             ##    from pypy.interpreter import main, interactive, error
             ##    con = interactive.PyPyConsole(space)
             ##    con.interact()
-            except OperationError, e:
+            except OperationError as e:
                 debug("OperationError:")
                 debug(" operror-type: " + e.w_type.getname(space))
                 debug(" operror-value: " + space.str_w(space.str(e.get_w_value(space))))
@@ -71,7 +71,7 @@
         finally:
             try:
                 space.finish()
-            except OperationError, e:
+            except OperationError as e:
                 debug("OperationError:")
                 debug(" operror-type: " + e.w_type.getname(space))
                 debug(" operror-value: " + space.str_w(space.str(e.get_w_value(space))))
@@ -115,7 +115,7 @@
                                     space.wrap('__import__'))
             space.call_function(import_, space.wrap('site'))
             return rffi.cast(rffi.INT, 0)
-        except OperationError, e:
+        except OperationError as e:
             if verbose:
                 debug("OperationError:")
                 debug(" operror-type: " + e.w_type.getname(space))
@@ -167,7 +167,7 @@
                 sys._pypy_execute_source.append(glob)
                 exec stmt in glob
             """)
-        except OperationError, e:
+        except OperationError as e:
             debug("OperationError:")
             debug(" operror-type: " + e.w_type.getname(space))
             debug(" operror-value: " + space.str_w(space.str(e.get_w_value(space))))
diff --git a/pypy/interpreter/argument.py b/pypy/interpreter/argument.py
--- a/pypy/interpreter/argument.py
+++ b/pypy/interpreter/argument.py
@@ -84,7 +84,7 @@
         space = self.space
         try:
             args_w = space.fixedview(w_stararg)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(space, space.w_TypeError):
                 raise oefmt(space.w_TypeError,
                             "argument after * must be a sequence, not %T",
@@ -111,7 +111,7 @@
         else:
             try:
                 w_keys = space.call_method(w_starstararg, "keys")
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(space, space.w_AttributeError):
                     raise oefmt(space.w_TypeError,
                                 "argument after ** must be a mapping, not %T",
@@ -134,11 +134,11 @@
         """The simplest argument parsing: get the 'argcount' arguments,
         or raise a real ValueError if the length is wrong."""
         if self.keywords:
-            raise ValueError, "no keyword arguments expected"
+            raise ValueError("no keyword arguments expected")
         if len(self.arguments_w) > argcount:
-            raise ValueError, "too many arguments (%d expected)" % argcount
+            raise ValueError("too many arguments (%d expected)" % argcount)
         elif len(self.arguments_w) < argcount:
-            raise ValueError, "not enough arguments (%d expected)" % argcount
+            raise ValueError("not enough arguments (%d expected)" % argcount)
         return self.arguments_w
 
     def firstarg(self):
@@ -279,7 +279,7 @@
         try:
             self._match_signature(w_firstarg,
                                   scope_w, signature, defaults_w, 0)
-        except ArgErr, e:
+        except ArgErr as e:
             raise oefmt(self.space.w_TypeError, "%s() %s", fnname, e.getmsg())
         return signature.scope_length()
 
@@ -301,7 +301,7 @@
         """
         try:
             return self._parse(w_firstarg, signature, defaults_w, blindargs)
-        except ArgErr, e:
+        except ArgErr as e:
             raise oefmt(self.space.w_TypeError, "%s() %s", fnname, e.getmsg())
 
     @staticmethod
@@ -352,7 +352,7 @@
     for w_key in keys_w:
         try:
             key = space.str_w(w_key)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(space, space.w_TypeError):
                 raise oefmt(space.w_TypeError, "keywords must be strings")
             if e.match(space, space.w_UnicodeEncodeError):
diff --git a/pypy/interpreter/astcompiler/astbuilder.py b/pypy/interpreter/astcompiler/astbuilder.py
--- a/pypy/interpreter/astcompiler/astbuilder.py
+++ b/pypy/interpreter/astcompiler/astbuilder.py
@@ -115,16 +115,16 @@
     def check_forbidden_name(self, name, node):
         try:
             misc.check_forbidden_name(name)
-        except misc.ForbiddenNameAssignment, e:
+        except misc.ForbiddenNameAssignment as e:
             self.error("cannot assign to %s" % (e.name,), node)
 
     def set_context(self, expr, ctx):
         """Set the context of an expression to Store or Del if possible."""
         try:
             expr.set_context(ctx)
-        except ast.UnacceptableExpressionContext, e:
+        except ast.UnacceptableExpressionContext as e:
             self.error_ast(e.msg, e.node)
-        except misc.ForbiddenNameAssignment, e:
+        except misc.ForbiddenNameAssignment as e:
             self.error_ast("cannot assign to %s" % (e.name,), e.node)
 
     def handle_print_stmt(self, print_node):
@@ -1080,7 +1080,7 @@
             return self.space.call_function(tp, w_num_str)
         try:
             return self.space.call_function(self.space.w_int, w_num_str, w_base)
-        except error.OperationError, e:
+        except error.OperationError as e:
             if not e.match(self.space, self.space.w_ValueError):
                 raise
             return self.space.call_function(self.space.w_float, w_num_str)
@@ -1100,7 +1100,7 @@
                 sub_strings_w = [parsestring.parsestr(space, encoding, atom_node.get_child(i).get_value(),
                                                       unicode_literals)
                                  for i in range(atom_node.num_children())]
-            except error.OperationError, e:
+            except error.OperationError as e:
                 if not e.match(space, space.w_UnicodeError):
                     raise
                 # UnicodeError in literal: turn into SyntaxError
diff --git a/pypy/interpreter/astcompiler/symtable.py b/pypy/interpreter/astcompiler/symtable.py
--- a/pypy/interpreter/astcompiler/symtable.py
+++ b/pypy/interpreter/astcompiler/symtable.py
@@ -325,7 +325,7 @@
         try:
             module.walkabout(self)
             top.finalize(None, {}, {})
-        except SyntaxError, e:
+        except SyntaxError as e:
             e.filename = compile_info.filename
             raise
         self.pop_scope()
diff --git a/pypy/interpreter/astcompiler/test/test_compiler.py b/pypy/interpreter/astcompiler/test/test_compiler.py
--- a/pypy/interpreter/astcompiler/test/test_compiler.py
+++ b/pypy/interpreter/astcompiler/test/test_compiler.py
@@ -705,7 +705,7 @@
         """)
         try:
             self.simple_test(source, None, None)
-        except IndentationError, e:
+        except IndentationError as e:
             assert e.msg == 'unexpected indent'
         else:
             raise Exception("DID NOT RAISE")
@@ -717,7 +717,7 @@
         """)
         try:
             self.simple_test(source, None, None)
-        except IndentationError, e:
+        except IndentationError as e:
             assert e.msg == 'expected an indented block'
         else:
             raise Exception("DID NOT RAISE")
@@ -969,7 +969,7 @@
     def test_assert_with_tuple_arg(self):
         try:
             assert False, (3,)
-        except AssertionError, e:
+        except AssertionError as e:
             assert str(e) == "(3,)"
 
     # BUILD_LIST_FROM_ARG is PyPy specific
diff --git a/pypy/interpreter/astcompiler/tools/asdl.py b/pypy/interpreter/astcompiler/tools/asdl.py
--- a/pypy/interpreter/astcompiler/tools/asdl.py
+++ b/pypy/interpreter/astcompiler/tools/asdl.py
@@ -96,7 +96,7 @@
 
     def t_default(self, s):
         r" . +"
-        raise ValueError, "unmatched input: %s" % `s`
+        raise ValueError("unmatched input: %s" % `s`)
 
 class ASDLParser(spark.GenericParser, object):
     def __init__(self):
@@ -377,7 +377,7 @@
     tokens = scanner.tokenize(buf)
     try:
         return parser.parse(tokens)
-    except ASDLSyntaxError, err:
+    except ASDLSyntaxError as err:
         print err
         lines = buf.split("\n")
         print lines[err.lineno - 1] # lines starts at 0, files at 1
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -52,7 +52,7 @@
             try:
                 space.delitem(w_dict, space.wrap(attr))
                 return True
-            except OperationError, ex:
+            except OperationError as ex:
                 if not ex.match(space, space.w_KeyError):
                     raise
         return False
@@ -77,7 +77,7 @@
     def getname(self, space):
         try:
             return space.str_w(space.getattr(self, space.wrap('__name__')))
-        except OperationError, e:
+        except OperationError as e:
             if e.match(space, space.w_TypeError) or e.match(space, space.w_AttributeError):
                 return '?'
             raise
@@ -318,7 +318,7 @@
         space = self.space
         try:
             return space.next(self.w_iter)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_StopIteration):
                 raise
             raise StopIteration
@@ -406,7 +406,7 @@
                                 self.sys.get('builtin_module_names')):
             try:
                 w_mod = self.getitem(w_modules, w_modname)
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(self, self.w_KeyError):
                     continue
                 raise
@@ -440,7 +440,7 @@
 
         try:
             self.call_method(w_mod, "_shutdown")
-        except OperationError, e:
+        except OperationError as e:
             e.write_unraisable(self, "threading._shutdown()")
 
     def __repr__(self):
@@ -476,7 +476,7 @@
             assert reuse
             try:
                 return self.getitem(w_modules, w_name)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(self, self.w_KeyError):
                     raise
 
@@ -763,7 +763,7 @@
     def finditem(self, w_obj, w_key):
         try:
             return self.getitem(w_obj, w_key)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(self, self.w_KeyError):
                 return None
             raise
@@ -771,7 +771,7 @@
     def findattr(self, w_object, w_name):
         try:
             return self.getattr(w_object, w_name)
-        except OperationError, e:
+        except OperationError as e:
             # a PyPy extension: let SystemExit and KeyboardInterrupt go through
             if e.async(self):
                 raise
@@ -871,7 +871,7 @@
                                                   items=items)
             try:
                 w_item = self.next(w_iterator)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(self, self.w_StopIteration):
                     raise
                 break  # done
@@ -895,7 +895,7 @@
         while True:
             try:
                 w_item = self.next(w_iterator)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(self, self.w_StopIteration):
                     raise
                 break  # done
@@ -940,7 +940,7 @@
         """
         try:
             return self.len_w(w_obj)
-        except OperationError, e:
+        except OperationError as e:
             if not (e.match(self, self.w_TypeError) or
                     e.match(self, self.w_AttributeError)):
                 raise
@@ -950,7 +950,7 @@
             return default
         try:
             w_hint = self.get_and_call_function(w_descr, w_obj)
-        except OperationError, e:
+        except OperationError as e:
             if not (e.match(self, self.w_TypeError) or
                     e.match(self, self.w_AttributeError)):
                 raise
@@ -1047,7 +1047,7 @@
                 else:
                     return False
             return self.exception_issubclass_w(w_exc_type, w_check_class)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(self, self.w_TypeError):   # string exceptions maybe
                 return False
             raise
@@ -1165,7 +1165,7 @@
                 try:
                     self.getattr(w_obj, self.wrap("__call__"))
                     return self.w_True
-                except OperationError, e:
+                except OperationError as e:
                     if not e.match(self, self.w_AttributeError):
                         raise
                     return self.w_False
@@ -1285,7 +1285,7 @@
     def _next_or_none(self, w_it):
         try:
             return self.next(w_it)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self, self.w_StopIteration):
                 raise
             return None
@@ -1361,7 +1361,7 @@
         """
         try:
             w_index = self.index(w_obj)
-        except OperationError, err:
+        except OperationError as err:
             if objdescr is None or not err.match(self, self.w_TypeError):
                 raise
             raise oefmt(self.w_TypeError, "%s must be an integer, not %T",
@@ -1371,7 +1371,7 @@
             # return type of __index__ is already checked by space.index(),
             # but there is no reason to allow conversions anyway
             index = self.int_w(w_index, allow_conversion=False)
-        except OperationError, err:
+        except OperationError as err:
             if not err.match(self, self.w_OverflowError):
                 raise
             if not w_exception:
@@ -1519,7 +1519,7 @@
         # the unicode buffer.)
         try:
             return self.str_w(w_obj)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self, self.w_TypeError):
                 raise
         try:
@@ -1693,7 +1693,7 @@
         # instead of raising OverflowError.  For obscure cases only.
         try:
             return self.int_w(w_obj, allow_conversion)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self, self.w_OverflowError):
                 raise
             from rpython.rlib.rarithmetic import intmask
@@ -1704,7 +1704,7 @@
         # instead of raising OverflowError.
         try:
             return self.r_longlong_w(w_obj, allow_conversion)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self, self.w_OverflowError):
                 raise
             from rpython.rlib.rarithmetic import longlongmask
@@ -1719,7 +1719,7 @@
             not self.isinstance_w(w_fd, self.w_long)):
             try:
                 w_fileno = self.getattr(w_fd, self.wrap("fileno"))
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(self, self.w_AttributeError):
                     raise oefmt(self.w_TypeError,
                                 "argument must be an int, or have a fileno() "
@@ -1732,7 +1732,7 @@
                             "fileno() returned a non-integer")
         try:
             fd = self.c_int_w(w_fd)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(self, self.w_OverflowError):
                 fd = -1
             else:
diff --git a/pypy/interpreter/executioncontext.py b/pypy/interpreter/executioncontext.py
--- a/pypy/interpreter/executioncontext.py
+++ b/pypy/interpreter/executioncontext.py
@@ -563,7 +563,7 @@
         while pending is not None:
             try:
                 pending.callback(pending.w_obj)
-            except OperationError, e:
+            except OperationError as e:
                 e.write_unraisable(space, pending.descrname, pending.w_obj)
                 e.clear(space)   # break up reference cycles
             pending = pending.next
diff --git a/pypy/interpreter/function.py b/pypy/interpreter/function.py
--- a/pypy/interpreter/function.py
+++ b/pypy/interpreter/function.py
@@ -539,7 +539,7 @@
             try:
                 return space.call_method(space.w_object, '__getattribute__',
                                          space.wrap(self), w_attr)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_AttributeError):
                     raise
         # fall-back to the attribute of the underlying 'im_func'
diff --git a/pypy/interpreter/gateway.py b/pypy/interpreter/gateway.py
--- a/pypy/interpreter/gateway.py
+++ b/pypy/interpreter/gateway.py
@@ -686,7 +686,7 @@
                                                   self.descrmismatch_op,
                                                   self.descr_reqcls,
                                                   args)
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -702,7 +702,7 @@
             raise OperationError(space.w_KeyboardInterrupt, space.w_None)
         except MemoryError:
             raise OperationError(space.w_MemoryError, space.w_None)
-        except rstackovf.StackOverflow, e:
+        except rstackovf.StackOverflow as e:
             rstackovf.check_stack_overflow()
             raise oefmt(space.w_RuntimeError,
                         "maximum recursion depth exceeded")
@@ -724,7 +724,7 @@
                                                   self.descrmismatch_op,
                                                   self.descr_reqcls,
                                                   args)
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -745,7 +745,7 @@
                                                   self.descrmismatch_op,
                                                   self.descr_reqcls,
                                                   args.prepend(w_obj))
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -762,7 +762,7 @@
             w_result = self.fastfunc_0(space)
         except DescrMismatch:
             raise oefmt(space.w_SystemError, "unexpected DescrMismatch error")
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -782,7 +782,7 @@
                                           self.descrmismatch_op,
                                           self.descr_reqcls,
                                           Arguments(space, [w1]))
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -802,7 +802,7 @@
                                           self.descrmismatch_op,
                                           self.descr_reqcls,
                                           Arguments(space, [w1, w2]))
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -822,7 +822,7 @@
                                           self.descrmismatch_op,
                                           self.descr_reqcls,
                                           Arguments(space, [w1, w2, w3]))
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
@@ -843,7 +843,7 @@
                                           self.descr_reqcls,
                                           Arguments(space,
                                                     [w1, w2, w3, w4]))
-        except Exception, e:
+        except Exception as e:
             self.handle_exception(space, e)
             w_result = None
         if w_result is None:
diff --git a/pypy/interpreter/generator.py b/pypy/interpreter/generator.py
--- a/pypy/interpreter/generator.py
+++ b/pypy/interpreter/generator.py
@@ -144,7 +144,7 @@
         try:
             w_retval = self.throw(space.w_GeneratorExit, space.w_None,
                                   space.w_None)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(space, space.w_StopIteration) or \
                     e.match(space, space.w_GeneratorExit):
                 return space.w_None
@@ -196,7 +196,7 @@
                                               results=results, pycode=pycode)
                     try:
                         w_result = frame.execute_frame(space.w_None)
-                    except OperationError, e:
+                    except OperationError as e:
                         if not e.match(space, space.w_StopIteration):
                             raise
                         break
diff --git a/pypy/interpreter/main.py b/pypy/interpreter/main.py
--- a/pypy/interpreter/main.py
+++ b/pypy/interpreter/main.py
@@ -8,7 +8,7 @@
     w_modules = space.sys.get('modules')
     try:
         return space.getitem(w_modules, w_main)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_KeyError):
             raise
     mainmodule = module.Module(space, w_main)
@@ -52,7 +52,7 @@
         else:
             return
 
-    except OperationError, operationerr:
+    except OperationError as operationerr:
         operationerr.record_interpreter_traceback()
         raise
 
@@ -110,7 +110,7 @@
         try:
             w_stdout = space.sys.get('stdout')
             w_softspace = space.getattr(w_stdout, space.wrap('softspace'))
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_AttributeError):
                 raise
             # Don't crash if user defined stdout doesn't have softspace
@@ -118,7 +118,7 @@
             if space.is_true(w_softspace):
                 space.call_method(w_stdout, 'write', space.wrap('\n'))
 
-    except OperationError, operationerr:
+    except OperationError as operationerr:
         operationerr.normalize_exception(space)
         w_type = operationerr.w_type
         w_value = operationerr.get_w_value(space)
@@ -162,7 +162,7 @@
                     space.call_function(w_hook, w_type, w_value, w_traceback)
                     return False   # done
 
-        except OperationError, err2:
+        except OperationError as err2:
             # XXX should we go through sys.get('stderr') ?
             print >> sys.stderr, 'Error calling sys.excepthook:'
             err2.print_application_traceback(space)
diff --git a/pypy/interpreter/mixedmodule.py b/pypy/interpreter/mixedmodule.py
--- a/pypy/interpreter/mixedmodule.py
+++ b/pypy/interpreter/mixedmodule.py
@@ -169,7 +169,7 @@
         while 1:
             try:
                 value = eval(spec, d)
-            except NameError, ex:
+            except NameError as ex:
                 name = ex.args[0].split("'")[1]  # super-Evil
                 if name in d:
                     raise   # propagate the NameError
diff --git a/pypy/interpreter/pycode.py b/pypy/interpreter/pycode.py
--- a/pypy/interpreter/pycode.py
+++ b/pypy/interpreter/pycode.py
@@ -110,7 +110,7 @@
         if code_hook is not None:
             try:
                 self.space.call_function(code_hook, self)
-            except OperationError, e:
+            except OperationError as e:
                 e.write_unraisable(self.space, "new_code_hook()")
 
     def _initialize(self):
diff --git a/pypy/interpreter/pycompiler.py b/pypy/interpreter/pycompiler.py
--- a/pypy/interpreter/pycompiler.py
+++ b/pypy/interpreter/pycompiler.py
@@ -55,21 +55,21 @@
         try:
             code = self.compile(source, filename, mode, flags)
             return code   # success
-        except OperationError, err:
+        except OperationError as err:
             if not err.match(space, space.w_SyntaxError):
                 raise
 
         try:
             self.compile(source + "\n", filename, mode, flags)
             return None   # expect more
-        except OperationError, err1:
+        except OperationError as err1:
             if not err1.match(space, space.w_SyntaxError):
                 raise
 
         try:
             self.compile(source + "\n\n", filename, mode, flags)
             raise     # uh? no error with \n\n.  re-raise the previous error
-        except OperationError, err2:
+        except OperationError as err2:
             if not err2.match(space, space.w_SyntaxError):
                 raise
 
@@ -130,7 +130,7 @@
         try:
             mod = optimize.optimize_ast(space, node, info)
             code = codegen.compile_ast(space, mod, info)
-        except parseerror.SyntaxError, e:
+        except parseerror.SyntaxError as e:
             raise OperationError(space.w_SyntaxError, e.wrap_info(space))
         return code
 
@@ -143,9 +143,9 @@
         try:
             parse_tree = self.parser.parse_source(source, info)
             mod = astbuilder.ast_from_node(space, parse_tree, info)
-        except parseerror.IndentationError, e:
+        except parseerror.IndentationError as e:
             raise OperationError(space.w_IndentationError, e.wrap_info(space))
-        except parseerror.SyntaxError, e:
+        except parseerror.SyntaxError as e:
             raise OperationError(space.w_SyntaxError, e.wrap_info(space))
         return mod
 
diff --git a/pypy/interpreter/pyframe.py b/pypy/interpreter/pyframe.py
--- a/pypy/interpreter/pyframe.py
+++ b/pypy/interpreter/pyframe.py
@@ -550,7 +550,7 @@
         where the order is according to self.pycode.signature()."""
         scope_len = len(scope_w)
         if scope_len > self.pycode.co_nlocals:
-            raise ValueError, "new fastscope is longer than the allocated area"
+            raise ValueError("new fastscope is longer than the allocated area")
         # don't assign directly to 'locals_cells_stack_w[:scope_len]' to be
         # virtualizable-friendly
         for i in range(scope_len):
diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -67,9 +67,9 @@
     def handle_bytecode(self, co_code, next_instr, ec):
         try:
             next_instr = self.dispatch_bytecode(co_code, next_instr, ec)
-        except OperationError, operr:
+        except OperationError as operr:
             next_instr = self.handle_operation_error(ec, operr)
-        except RaiseWithExplicitTraceback, e:
+        except RaiseWithExplicitTraceback as e:
             next_instr = self.handle_operation_error(ec, e.operr,
                                                      attach_tb=False)
         except KeyboardInterrupt:
@@ -78,7 +78,7 @@
         except MemoryError:
             next_instr = self.handle_asynchronous_error(ec,
                 self.space.w_MemoryError)
-        except rstackovf.StackOverflow, e:
+        except rstackovf.StackOverflow as e:
             # Note that this case catches AttributeError!
             rstackovf.check_stack_overflow()
             next_instr = self.handle_asynchronous_error(ec,
@@ -117,7 +117,7 @@
                     finally:
                         if trace is not None:
                             self.getorcreatedebug().w_f_trace = trace
-                except OperationError, e:
+                except OperationError as e:
                     operr = e
             pytraceback.record_application_traceback(
                 self.space, operr, self, self.last_instr)
@@ -844,7 +844,7 @@
         w_varname = self.getname_w(varindex)
         try:
             self.space.delitem(self.getorcreatedebug().w_locals, w_varname)
-        except OperationError, e:
+        except OperationError as e:
             # catch KeyErrors and turn them into NameErrors
             if not e.match(self.space, self.space.w_KeyError):
                 raise
@@ -1003,7 +1003,7 @@
         try:
             if space.int_w(w_flag) == -1:
                 w_flag = None
-        except OperationError, e:
+        except OperationError as e:
             if e.async(space):
                 raise
 
@@ -1040,7 +1040,7 @@
         w_module = self.peekvalue()
         try:
             w_obj = self.space.getattr(w_module, w_name)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self.space, self.space.w_AttributeError):
                 raise
             raise oefmt(self.space.w_ImportError,
@@ -1099,7 +1099,7 @@
         w_iterator = self.peekvalue()
         try:
             w_nextitem = self.space.next(w_iterator)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self.space, self.space.w_StopIteration):
                 raise
             # iterator exhausted
@@ -1110,7 +1110,7 @@
         return next_instr
 
     def FOR_LOOP(self, oparg, next_instr):
-        raise BytecodeCorruption, "old opcode, no longer in use"
+        raise BytecodeCorruption("old opcode, no longer in use")
 
     def SETUP_LOOP(self, offsettoend, next_instr):
         block = LoopBlock(self, next_instr + offsettoend, self.lastblock)
diff --git a/pypy/interpreter/pyparser/pyparse.py b/pypy/interpreter/pyparser/pyparse.py
--- a/pypy/interpreter/pyparser/pyparse.py
+++ b/pypy/interpreter/pyparser/pyparse.py
@@ -118,7 +118,7 @@
             if enc is not None and enc not in ('utf-8', 'iso-8859-1'):
                 try:
                     textsrc = recode_to_utf8(self.space, textsrc, enc)
-                except OperationError, e:
+                except OperationError as e:
                     # if the codec is not found, LookupError is raised.  we
                     # check using 'is_w' not to mask potential IndexError or
                     # KeyError
@@ -164,10 +164,10 @@
                 for tp, value, lineno, column, line in tokens:
                     if self.add_token(tp, value, lineno, column, line):
                         break
-            except error.TokenError, e:
+            except error.TokenError as e:
                 e.filename = compile_info.filename
                 raise
-            except parser.ParseError, e:
+            except parser.ParseError as e:
                 # Catch parse errors, pretty them up and reraise them as a
                 # SyntaxError.
                 new_err = error.IndentationError
diff --git a/pypy/interpreter/pyparser/test/unittest_samples.py b/pypy/interpreter/pyparser/test/unittest_samples.py
--- a/pypy/interpreter/pyparser/test/unittest_samples.py
+++ b/pypy/interpreter/pyparser/test/unittest_samples.py
@@ -66,7 +66,7 @@
         print
         try:
             assert_tuples_equal(pypy_tuples, python_tuples)
-        except AssertionError,e:
+        except AssertionError as e:
             error_path = e.args[-1]
             print "ERROR PATH =", error_path
             print "="*80
diff --git a/pypy/interpreter/test/test_app_main.py b/pypy/interpreter/test/test_app_main.py
--- a/pypy/interpreter/test/test_app_main.py
+++ b/pypy/interpreter/test/test_app_main.py
@@ -224,7 +224,7 @@
     def _spawn(self, *args, **kwds):
         try:
             import pexpect
-        except ImportError, e:
+        except ImportError as e:
             py.test.skip(str(e))
         else:
             # Version is of the style "0.999" or "2.1".  Older versions of
diff --git a/pypy/interpreter/test/test_argument.py b/pypy/interpreter/test/test_argument.py
--- a/pypy/interpreter/test/test_argument.py
+++ b/pypy/interpreter/test/test_argument.py
@@ -618,14 +618,14 @@
         space = self.space
         try:
             Arguments(space, [], w_stararg=space.wrap(42))
-        except OperationError, e:
+        except OperationError as e:
             msg = space.str_w(space.str(e.get_w_value(space)))
             assert msg == "argument after * must be a sequence, not int"
         else:
             assert 0, "did not raise"
         try:
             Arguments(space, [], w_starstararg=space.wrap(42))
-        except OperationError, e:
+        except OperationError as e:
             msg = space.str_w(space.str(e.get_w_value(space)))
             assert msg == "argument after ** must be a mapping, not int"
         else:
diff --git a/pypy/interpreter/test/test_compiler.py b/pypy/interpreter/test/test_compiler.py
--- a/pypy/interpreter/test/test_compiler.py
+++ b/pypy/interpreter/test/test_compiler.py
@@ -696,7 +696,7 @@
         """)
         try:
             self.compiler.compile(str(source), '<filename>', 'exec', 0)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self.space, self.space.w_SyntaxError):
                 raise
         else:
@@ -706,7 +706,7 @@
         code = 'def f(): (yield bar) += y'
         try:
             self.compiler.compile(code, '', 'single', 0)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self.space, self.space.w_SyntaxError):
                 raise
         else:
@@ -716,7 +716,7 @@
         code = 'dict(a = i for i in xrange(10))'
         try:
             self.compiler.compile(code, '', 'single', 0)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(self.space, self.space.w_SyntaxError):
                 raise
         else:
@@ -1011,7 +1011,7 @@
         """
         try:
             exec source
-        except IndentationError, e:
+        except IndentationError as e:
             assert e.msg == 'unindent does not match any outer indentation level'
         else:
             raise Exception("DID NOT RAISE")
@@ -1021,13 +1021,13 @@
         source2 = "x = (\n\n"
         try:
             exec source1
-        except SyntaxError, err1:
+        except SyntaxError as err1:
             pass
         else:
             raise Exception("DID NOT RAISE")
         try:
             exec source2
-        except SyntaxError, err2:
+        except SyntaxError as err2:
             pass
         else:
             raise Exception("DID NOT RAISE")
diff --git a/pypy/interpreter/test/test_exceptcomp.py b/pypy/interpreter/test/test_exceptcomp.py
--- a/pypy/interpreter/test/test_exceptcomp.py
+++ b/pypy/interpreter/test/test_exceptcomp.py
@@ -7,7 +7,7 @@
 
     def test_exception(self):
         try:
-            raise TypeError, "nothing"
+            raise TypeError("nothing")
         except TypeError:
             pass
         except:
@@ -15,7 +15,7 @@
 
     def test_exceptionfail(self):
         try:
-            raise TypeError, "nothing"
+            raise TypeError("nothing")
         except KeyError:
             self.fail("Different exceptions match.")
         except TypeError:
@@ -47,7 +47,7 @@
         class UserExcept(Exception):
             pass
         try:
-            raise UserExcept, "nothing"
+            raise UserExcept("nothing")
         except UserExcept:
             pass
         except:
diff --git a/pypy/interpreter/test/test_exec.py b/pypy/interpreter/test/test_exec.py
--- a/pypy/interpreter/test/test_exec.py
+++ b/pypy/interpreter/test/test_exec.py
@@ -196,11 +196,11 @@
     def test_filename(self):
         try:
             exec "'unmatched_quote"
-        except SyntaxError, msg:
+        except SyntaxError as msg:
             assert msg.filename == '<string>'
         try:
             eval("'unmatched_quote")
-        except SyntaxError, msg:
+        except SyntaxError as msg:
             assert msg.filename == '<string>'
 
     def test_exec_and_name_lookups(self):
@@ -213,7 +213,7 @@
 
         try:
             res = f()
-        except NameError, e: # keep py.test from exploding confused
+        except NameError as e: # keep py.test from exploding confused
             raise e
 
         assert res == 1
diff --git a/pypy/interpreter/test/test_function.py b/pypy/interpreter/test/test_function.py
--- a/pypy/interpreter/test/test_function.py
+++ b/pypy/interpreter/test/test_function.py
@@ -296,14 +296,14 @@
     def test_call_error_message(self):
         try:
             len()
-        except TypeError, e:
+        except TypeError as e:
             assert "len() takes exactly 1 argument (0 given)" in e.message
         else:
             assert 0, "did not raise"
 
         try:
             len(1, 2)
-        except TypeError, e:
+        except TypeError as e:
             assert "len() takes exactly 1 argument (2 given)" in e.message
         else:
             assert 0, "did not raise"
diff --git a/pypy/interpreter/test/test_interpreter.py b/pypy/interpreter/test/test_interpreter.py
--- a/pypy/interpreter/test/test_interpreter.py
+++ b/pypy/interpreter/test/test_interpreter.py
@@ -26,7 +26,7 @@
         wrappedfunc = space.getitem(w_glob, w(functionname))
         try:
             w_output = space.call_function(wrappedfunc, *wrappedargs)
-        except error.OperationError, e:
+        except error.OperationError as e:
             #e.print_detailed_traceback(space)
             return '<<<%s>>>' % e.errorstr(space)
         else:
@@ -331,7 +331,7 @@
         def f(): f()
         try:
             f()
-        except RuntimeError, e:
+        except RuntimeError as e:
             assert str(e) == "maximum recursion depth exceeded"
         else:
             assert 0, "should have raised!"
diff --git a/pypy/interpreter/test/test_objspace.py b/pypy/interpreter/test/test_objspace.py
--- a/pypy/interpreter/test/test_objspace.py
+++ b/pypy/interpreter/test/test_objspace.py
@@ -86,7 +86,7 @@
         """)
         try:
             space.unpackiterable(w_a)
-        except OperationError, o:
+        except OperationError as o:
             if not o.match(space, space.w_ZeroDivisionError):
                 raise Exception("DID NOT RAISE")
         else:
@@ -237,7 +237,7 @@
                             self.space.getindex_w, w_instance2, self.space.w_IndexError)
         try:
             self.space.getindex_w(self.space.w_tuple, None, "foobar")
-        except OperationError, e:
+        except OperationError as e:
             assert e.match(self.space, self.space.w_TypeError)
             assert "foobar" in e.errorstr(self.space)
         else:
diff --git a/pypy/interpreter/test/test_pyframe.py b/pypy/interpreter/test/test_pyframe.py
--- a/pypy/interpreter/test/test_pyframe.py
+++ b/pypy/interpreter/test/test_pyframe.py
@@ -376,7 +376,7 @@
         def g():
             try:
                 raise Exception
-            except Exception, e:
+            except Exception as e:
                 import sys
                 raise Exception, e, sys.exc_info()[2]
 
diff --git a/pypy/interpreter/test/test_raise.py b/pypy/interpreter/test/test_raise.py
--- a/pypy/interpreter/test/test_raise.py
+++ b/pypy/interpreter/test/test_raise.py
@@ -18,34 +18,34 @@
     def test_1arg(self):
         try:
             raise SystemError, 1
-        except Exception, e:
+        except Exception as e:
             assert e.args[0] == 1
 
     def test_2args(self):
         try:
             raise SystemError, (1, 2)
-        except Exception, e:
+        except Exception as e:
             assert e.args[0] == 1
             assert e.args[1] == 2
 
     def test_instancearg(self):
         try:
             raise SystemError, SystemError(1, 2)
-        except Exception, e:
+        except Exception as e:
             assert e.args[0] == 1
             assert e.args[1] == 2
 
     def test_more_precise_instancearg(self):
         try:
             raise Exception, SystemError(1, 2)
-        except SystemError, e:
+        except SystemError as e:
             assert e.args[0] == 1
             assert e.args[1] == 2
 
     def test_builtin_exc(self):
         try:
             [][0]
-        except IndexError, e:
+        except IndexError as e:
             assert isinstance(e, IndexError)
 
     def test_raise_cls(self):
@@ -194,7 +194,7 @@
             raise Sub
         except IndexError:
             assert 0
-        except A, a:
+        except A as a:
             assert a.__class__ is Sub
 
         sub = Sub()
@@ -202,14 +202,14 @@
             raise sub
         except IndexError:
             assert 0
-        except A, a:
+        except A as a:
             assert a is sub
 
         try:
             raise A, sub
         except IndexError:
             assert 0
-        except A, a:
+        except A as a:
             assert a is sub
             assert sub.val is None
 
@@ -217,13 +217,13 @@
             raise Sub, 42
         except IndexError:
             assert 0
-        except A, a:
+        except A as a:
             assert a.__class__ is Sub
             assert a.val == 42
 
         try:
             {}[5]
-        except A, a:
+        except A as a:
             assert 0
         except KeyError:
             pass
diff --git a/pypy/interpreter/test/test_syntax.py b/pypy/interpreter/test/test_syntax.py
--- a/pypy/interpreter/test/test_syntax.py
+++ b/pypy/interpreter/test/test_syntax.py
@@ -254,7 +254,7 @@
                                 space.wrap(s),
                                 space.wrap('?'),
                                 space.wrap('exec'))
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_SyntaxError):
                 raise
         else:
@@ -723,7 +723,7 @@
         line4 = "if ?: pass\n"
         try:
             exec "print\nprint\nprint\n" + line4
-        except SyntaxError, e:
+        except SyntaxError as e:
             assert e.lineno == 4
             assert e.text == line4
             assert e.offset == e.text.index('?') + 1
@@ -738,7 +738,7 @@
                     a b c d e
                     bar
             """
-        except SyntaxError, e:
+        except SyntaxError as e:
             assert e.lineno == 4
             assert e.text.endswith('a b c d e\n')
             assert e.offset == e.text.index('b')
@@ -749,7 +749,7 @@
         program = "(1, 2) += (3, 4)\n"
         try:
             exec program
-        except SyntaxError, e:
+        except SyntaxError as e:
             assert e.lineno == 1
             assert e.text is None
         else:
@@ -769,7 +769,7 @@
     for s in VALID:
         try:
             compile(s, '?', 'exec')
-        except Exception, e:
+        except Exception as e:
             print '-'*20, 'FAILED TO COMPILE:', '-'*20
             print s
             print '%s: %s' % (e.__class__, e)
@@ -777,7 +777,7 @@
     for s in INVALID:
         try:
             raises(SyntaxError, compile, s, '?', 'exec')
-        except Exception ,e:
+        except Exception as e:
             print '-'*20, 'UNEXPECTEDLY COMPILED:', '-'*20
             print s
             print '%s: %s' % (e.__class__, e)
diff --git a/pypy/interpreter/test/test_typedef.py b/pypy/interpreter/test/test_typedef.py
--- a/pypy/interpreter/test/test_typedef.py
+++ b/pypy/interpreter/test/test_typedef.py
@@ -13,7 +13,7 @@
         # XXX why is this called newstring?
         import sys
         def f():
-            raise TypeError, "hello"
+            raise TypeError("hello")
 
         def g():
             f()
@@ -23,7 +23,7 @@
         except:
             typ,val,tb = sys.exc_info()
         else:
-            raise AssertionError, "should have raised"
+            raise AssertionError("should have raised")
         assert hasattr(tb, 'tb_frame')
         assert hasattr(tb, 'tb_lasti')
         assert hasattr(tb, 'tb_lineno')
diff --git a/pypy/interpreter/test/test_zzpickle_and_slow.py b/pypy/interpreter/test/test_zzpickle_and_slow.py
--- a/pypy/interpreter/test/test_zzpickle_and_slow.py
+++ b/pypy/interpreter/test/test_zzpickle_and_slow.py
@@ -520,7 +520,7 @@
                 def f(): yield 42
                 f().__reduce__()
             """)
-        except TypeError, e:
+        except TypeError as e:
             if 'pickle generator' not in str(e):
                 raise
             py.test.skip("Frames can't be __reduce__()-ed")
diff --git a/pypy/module/__builtin__/__init__.py b/pypy/module/__builtin__/__init__.py
--- a/pypy/module/__builtin__/__init__.py
+++ b/pypy/module/__builtin__/__init__.py
@@ -102,7 +102,7 @@
         space = self.space
         try:
             w_builtin = space.getitem(w_globals, space.wrap('__builtins__'))
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_KeyError):
                 raise
         else:
diff --git a/pypy/module/__builtin__/abstractinst.py b/pypy/module/__builtin__/abstractinst.py
--- a/pypy/module/__builtin__/abstractinst.py
+++ b/pypy/module/__builtin__/abstractinst.py
@@ -21,7 +21,7 @@
     """
     try:
         w_bases = space.getattr(w_cls, space.wrap('__bases__'))
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_AttributeError):
             raise       # propagate other errors
         return None
@@ -41,7 +41,7 @@
 def abstract_getclass(space, w_obj):
     try:
         return space.getattr(w_obj, space.wrap('__class__'))
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_AttributeError):
             raise       # propagate other errors
         return space.type(w_obj)
@@ -63,7 +63,7 @@
             w_result = space.isinstance_allow_override(w_obj, w_klass_or_tuple)
         else:
             w_result = space.isinstance(w_obj, w_klass_or_tuple)
-    except OperationError, e:   # if w_klass_or_tuple was not a type, ignore it
+    except OperationError as e:   # if w_klass_or_tuple was not a type, ignore it
         if not e.match(space, space.w_TypeError):
             raise       # propagate other errors
     else:
@@ -81,7 +81,7 @@
                                                           w_klass_or_tuple)
             else:
                 w_result = space.issubtype(w_pretendtype, w_klass_or_tuple)
-        except OperationError, e:
+        except OperationError as e:
             if e.async(space):
                 raise
             return False      # ignore most exceptions
@@ -102,7 +102,7 @@
                 " or tuple of classes and types")
     try:
         w_abstractclass = space.getattr(w_obj, space.wrap('__class__'))
-    except OperationError, e:
+    except OperationError as e:
         if e.async(space):      # ignore most exceptions
             raise
         return False
@@ -142,7 +142,7 @@
                                                       w_klass_or_tuple)
         else:
             w_result = space.issubtype(w_derived, w_klass_or_tuple)
-    except OperationError, e:   # if one of the args was not a type, ignore it
+    except OperationError as e:   # if one of the args was not a type, ignore it
         if not e.match(space, space.w_TypeError):
             raise       # propagate other errors
     else:
diff --git a/pypy/module/__builtin__/descriptor.py b/pypy/module/__builtin__/descriptor.py
--- a/pypy/module/__builtin__/descriptor.py
+++ b/pypy/module/__builtin__/descriptor.py
@@ -62,7 +62,7 @@
         else:
             try:
                 w_type = space.getattr(w_obj_or_type, space.wrap('__class__'))
-            except OperationError, o:
+            except OperationError as o:
                 if not o.match(space, space.w_AttributeError):
                     raise
                 w_type = w_objtype
diff --git a/pypy/module/__builtin__/functional.py b/pypy/module/__builtin__/functional.py
--- a/pypy/module/__builtin__/functional.py
+++ b/pypy/module/__builtin__/functional.py
@@ -78,7 +78,7 @@
         start = space.int_w(w_start)
         stop = space.int_w(w_stop)
         step = space.int_w(w_step)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_OverflowError):
             raise
         return range_with_longs(space, w_start, w_stop, w_step)
@@ -175,7 +175,7 @@
                 jitdriver.jit_merge_point(has_key=has_key, has_item=has_item, w_type=w_type)
             try:
                 w_item = space.next(w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_StopIteration):
                     raise
                 break
@@ -353,7 +353,7 @@
             w_index = space.wrap(self.remaining)
             try:
                 w_item = space.getitem(self.w_sequence, w_index)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_StopIteration):
                     raise
             else:
diff --git a/pypy/module/__builtin__/interp_classobj.py b/pypy/module/__builtin__/interp_classobj.py
--- a/pypy/module/__builtin__/interp_classobj.py
+++ b/pypy/module/__builtin__/interp_classobj.py
@@ -145,7 +145,7 @@
                         "cannot delete attribute '%s'", name)
         try:
             space.delitem(self.w_dict, w_attr)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_KeyError):
                 raise
             raise oefmt(space.w_AttributeError,
@@ -165,7 +165,7 @@
     def get_module_string(self, space):
         try:
             w_mod = self.descr_getattribute(space, "__module__")
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_AttributeError):
                 raise
             return "?"
@@ -230,7 +230,7 @@
     def binaryop(self, space, w_other):
         try:
             w_meth = self.getattr(space, name, False)
-        except OperationError, e:
+        except OperationError as e:
             if e.match(space, space.w_AttributeError):
                 return space.w_NotImplemented
             raise
@@ -278,7 +278,7 @@
 def _coerce_helper(space, w_self, w_other):
     try:
         w_tup = space.coerce(w_self, w_other)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         return [w_self, w_other]
@@ -336,7 +336,7 @@
         if w_meth is not None:
             try:
                 return space.call_function(w_meth, space.wrap(name))
-            except OperationError, e:
+            except OperationError as e:
                 if not exc and e.match(space, space.w_AttributeError):
                     return None     # eat the AttributeError
                 raise
@@ -519,7 +519,7 @@
                     return w_res
                 try:
                     res = space.int_w(w_res)
-                except OperationError, e:
+                except OperationError as e:
                     if e.match(space, space.w_TypeError):
                         raise oefmt(space.w_TypeError,
                                     "__cmp__ must return int")
@@ -537,7 +537,7 @@
                     return w_res
                 try:
                     res = space.int_w(w_res)
-                except OperationError, e:
+                except OperationError as e:
                     if e.match(space, space.w_TypeError):
                         raise oefmt(space.w_TypeError,
                                     "__cmp__ must return int")
@@ -599,7 +599,7 @@
         while 1:
             try:
                 w_x = space.next(w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(space, space.w_StopIteration):
                     return space.w_False
                 raise
diff --git a/pypy/module/__builtin__/operation.py b/pypy/module/__builtin__/operation.py
--- a/pypy/module/__builtin__/operation.py
+++ b/pypy/module/__builtin__/operation.py
@@ -62,7 +62,7 @@
     w_name = checkattrname(space, w_name)
     try:
         return space.getattr(w_object, w_name)
-    except OperationError, e:
+    except OperationError as e:
         if w_defvalue is not None:
             if e.match(space, space.w_AttributeError):
                 return w_defvalue
@@ -190,7 +190,7 @@
 is exhausted, it is returned instead of raising StopIteration."""
     try:
         return space.next(w_iterator)
-    except OperationError, e:
+    except OperationError as e:
         if w_default is not None and e.match(space, space.w_StopIteration):
             return w_default
         raise
diff --git a/pypy/module/__builtin__/test/test_classobj.py b/pypy/module/__builtin__/test/test_classobj.py
--- a/pypy/module/__builtin__/test/test_classobj.py
+++ b/pypy/module/__builtin__/test/test_classobj.py
@@ -688,7 +688,7 @@
 
     def test_catch_attributeerror_of_descriptor(self):
         def booh(self):
-            raise this_exception, "booh"
+            raise this_exception("booh")
 
         class E:
             __eq__ = property(booh)
diff --git a/pypy/module/__builtin__/test/test_descriptor.py b/pypy/module/__builtin__/test/test_descriptor.py
--- a/pypy/module/__builtin__/test/test_descriptor.py
+++ b/pypy/module/__builtin__/test/test_descriptor.py
@@ -93,7 +93,7 @@
     def test_super_fail(self):
         try:
             super(list, 2)
-        except TypeError, e:
+        except TypeError as e:
             message = e.args[0]
             assert message.startswith('super(type, obj): obj must be an instance or subtype of type')
 
@@ -303,7 +303,7 @@
         for attr in "__doc__", "fget", "fset", "fdel":
             try:
                 setattr(raw, attr, 42)
-            except TypeError, msg:
+            except TypeError as msg:
                 if str(msg).find('readonly') < 0:
                     raise Exception("when setting readonly attr %r on a "
                                     "property, got unexpected TypeError "
@@ -322,7 +322,7 @@
         except ZeroDivisionError:
             pass
         else:
-            raise Exception, "expected ZeroDivisionError from bad property"
+            raise Exception("expected ZeroDivisionError from bad property")
 
     def test_property_subclass(self):
         class P(property):
diff --git a/pypy/module/__pypy__/interp_magic.py b/pypy/module/__pypy__/interp_magic.py
--- a/pypy/module/__pypy__/interp_magic.py
+++ b/pypy/module/__pypy__/interp_magic.py
@@ -105,7 +105,7 @@
 def validate_fd(space, fd):
     try:
         rposix.validate_fd(fd)
-    except OSError, e:
+    except OSError as e:
         raise wrap_oserror(space, e)
 
 def get_console_cp(space):
diff --git a/pypy/module/__pypy__/test/test_signal.py b/pypy/module/__pypy__/test/test_signal.py
--- a/pypy/module/__pypy__/test/test_signal.py
+++ b/pypy/module/__pypy__/test/test_signal.py
@@ -35,7 +35,7 @@
                     for i in range(10):
                         print('x')
                         time.sleep(0.25)
-            except BaseException, e:
+            except BaseException as e:
                 interrupted.append(e)
             finally:
                 print('subthread stops, interrupted=%r' % (interrupted,))
@@ -120,7 +120,7 @@
                 time.sleep(0.5)
                 with __pypy__.thread.signals_enabled:
                     thread.interrupt_main()
-            except BaseException, e:
+            except BaseException as e:
                 interrupted.append(e)
             finally:
                 lock.release()
diff --git a/pypy/module/_cffi_backend/ccallback.py b/pypy/module/_cffi_backend/ccallback.py
--- a/pypy/module/_cffi_backend/ccallback.py
+++ b/pypy/module/_cffi_backend/ccallback.py
@@ -112,7 +112,7 @@
             must_leave = space.threadlocals.try_enter_thread(space)
             self.py_invoke(ll_res, ll_args)
             #
-        except Exception, e:
+        except Exception as e:
             # oups! last-level attempt to recover.
             try:
                 os.write(STDERR, "SystemError: callback raised ")
@@ -142,7 +142,7 @@
             w_res = space.call(self.w_callable, w_args)
             extra_line = "Trying to convert the result back to C:\n"
             self.convert_result(ll_res, w_res)
-        except OperationError, e:
+        except OperationError as e:
             self.handle_applevel_exception(e, ll_res, extra_line)
 
     @jit.unroll_safe
@@ -187,7 +187,7 @@
                 w_res = space.call_function(self.w_onerror, w_t, w_v, w_tb)
                 if not space.is_none(w_res):
                     self.convert_result(ll_res, w_res)
-            except OperationError, e2:
+            except OperationError as e2:
                 # double exception! print a double-traceback...
                 self.print_error(e, extra_line)    # original traceback
                 e2.write_unraisable(space, '', with_traceback=True,
diff --git a/pypy/module/_cffi_backend/cdataobj.py b/pypy/module/_cffi_backend/cdataobj.py
--- a/pypy/module/_cffi_backend/cdataobj.py
+++ b/pypy/module/_cffi_backend/cdataobj.py
@@ -244,7 +244,7 @@
         for i in range(length):
             try:
                 w_item = space.next(w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_StopIteration):
                     raise
                 raise oefmt(space.w_ValueError,
@@ -253,7 +253,7 @@
             target = rffi.ptradd(target, ctitemsize)
         try:
             space.next(w_iter)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_StopIteration):
                 raise
         else:
diff --git a/pypy/module/_cffi_backend/cdlopen.py b/pypy/module/_cffi_backend/cdlopen.py
--- a/pypy/module/_cffi_backend/cdlopen.py
+++ b/pypy/module/_cffi_backend/cdlopen.py
@@ -21,7 +21,7 @@
                 filename = "<None>"
             try:
                 handle = dlopen(ll_libname, flags)
-            except DLOpenError, e:
+            except DLOpenError as e:
                 raise wrap_dlopenerror(ffi.space, e, filename)
         W_LibObject.__init__(self, ffi, filename)
         self.libhandle = handle
diff --git a/pypy/module/_cffi_backend/ctypefunc.py b/pypy/module/_cffi_backend/ctypefunc.py
--- a/pypy/module/_cffi_backend/ctypefunc.py
+++ b/pypy/module/_cffi_backend/ctypefunc.py
@@ -50,7 +50,7 @@
             builder = CifDescrBuilder(fargs, fresult, abi)
             try:
                 builder.rawallocate(self)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_NotImplementedError):
                     raise
                 # else, eat the NotImplementedError.  We will get the
diff --git a/pypy/module/_cffi_backend/ctypeobj.py b/pypy/module/_cffi_backend/ctypeobj.py
--- a/pypy/module/_cffi_backend/ctypeobj.py
+++ b/pypy/module/_cffi_backend/ctypeobj.py
@@ -177,12 +177,12 @@
         space = self.space
         try:
             fieldname = space.str_w(w_field_or_index)
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_TypeError):
                 raise
             try:
                 index = space.int_w(w_field_or_index)
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_TypeError):
                     raise
                 raise oefmt(space.w_TypeError,
diff --git a/pypy/module/_cffi_backend/ctypeptr.py b/pypy/module/_cffi_backend/ctypeptr.py
--- a/pypy/module/_cffi_backend/ctypeptr.py
+++ b/pypy/module/_cffi_backend/ctypeptr.py
@@ -378,6 +378,6 @@
             raise oefmt(space.w_ValueError, "file has no OS file descriptor")
         try:
             w_fileobj.cffi_fileobj = CffiFileObj(fd, w_fileobj.mode)
-        except OSError, e:
+        except OSError as e:
             raise wrap_oserror(space, e)
     return rffi.cast(rffi.CCHARP, w_fileobj.cffi_fileobj.llf)
diff --git a/pypy/module/_cffi_backend/embedding.py b/pypy/module/_cffi_backend/embedding.py
--- a/pypy/module/_cffi_backend/embedding.py
+++ b/pypy/module/_cffi_backend/embedding.py
@@ -79,7 +79,7 @@
             patch_sys(space)
             load_embedded_cffi_module(space, version, init_struct)
             res = 0
-        except OperationError, operr:
+        except OperationError as operr:
             operr.write_unraisable(space, "initialization of '%s'" % name,
                                    with_traceback=True)
             space.appexec([], r"""():
@@ -91,7 +91,7 @@
             res = -1
         if must_leave:
             space.threadlocals.leave_thread(space)
-    except Exception, e:
+    except Exception as e:
         # oups! last-level attempt to recover.
         try:
             os.write(STDERR, "From initialization of '")
diff --git a/pypy/module/_cffi_backend/func.py b/pypy/module/_cffi_backend/func.py
--- a/pypy/module/_cffi_backend/func.py
+++ b/pypy/module/_cffi_backend/func.py
@@ -108,7 +108,7 @@
     # w.r.t. buffers and memoryviews??
     try:
         buf = space.readbuf_w(w_x)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         buf = space.buffer_w(w_x, space.BUF_SIMPLE)
@@ -117,7 +117,7 @@
 def _fetch_as_write_buffer(space, w_x):
     try:
         buf = space.writebuf_w(w_x)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         buf = space.buffer_w(w_x, space.BUF_WRITABLE)
diff --git a/pypy/module/_cffi_backend/lib_obj.py b/pypy/module/_cffi_backend/lib_obj.py
--- a/pypy/module/_cffi_backend/lib_obj.py
+++ b/pypy/module/_cffi_backend/lib_obj.py
@@ -39,7 +39,7 @@
                     mod = __import__(modname, None, None, ['ffi', 'lib'])
                     return mod.lib""")
                 lib1 = space.interp_w(W_LibObject, w_lib1)
-            except OperationError, e:
+            except OperationError as e:
                 if e.async(space):
                     raise
                 raise oefmt(space.w_ImportError,
diff --git a/pypy/module/_cffi_backend/libraryobj.py b/pypy/module/_cffi_backend/libraryobj.py
--- a/pypy/module/_cffi_backend/libraryobj.py
+++ b/pypy/module/_cffi_backend/libraryobj.py
@@ -24,7 +24,7 @@
                 filename = "<None>"
             try:
                 self.handle = dlopen(ll_libname, flags)
-            except DLOpenError, e:
+            except DLOpenError as e:
                 raise wrap_dlopenerror(space, e, filename)
         self.name = filename
 
diff --git a/pypy/module/_cffi_backend/misc.py b/pypy/module/_cffi_backend/misc.py
--- a/pypy/module/_cffi_backend/misc.py
+++ b/pypy/module/_cffi_backend/misc.py
@@ -132,7 +132,7 @@
         return space.int_w(w_ob)
     try:
         bigint = space.bigint_w(w_ob, allow_conversion=False)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         if _is_a_float(space, w_ob):
@@ -149,7 +149,7 @@
         return space.int_w(w_ob)
     try:
         bigint = space.bigint_w(w_ob, allow_conversion=False)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         if _is_a_float(space, w_ob):
@@ -172,7 +172,7 @@
         return r_ulonglong(value)
     try:
         bigint = space.bigint_w(w_ob, allow_conversion=False)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         if strict and _is_a_float(space, w_ob):
@@ -197,7 +197,7 @@
         return r_uint(value)
     try:
         bigint = space.bigint_w(w_ob, allow_conversion=False)
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_TypeError):
             raise
         if strict and _is_a_float(space, w_ob):
diff --git a/pypy/module/_codecs/interp_codecs.py b/pypy/module/_codecs/interp_codecs.py
--- a/pypy/module/_codecs/interp_codecs.py
+++ b/pypy/module/_codecs/interp_codecs.py
@@ -171,7 +171,7 @@
         w_start = space.getattr(w_exc, space.wrap('start'))
         w_end = space.getattr(w_exc, space.wrap('end'))
         w_obj = space.getattr(w_exc, space.wrap('object'))
-    except OperationError, e:
+    except OperationError as e:
         if not e.match(space, space.w_AttributeError):
             raise
         raise oefmt(space.w_TypeError, "wrong exception")
@@ -523,7 +523,7 @@
         else:
             try:
                 w_ch = space.getitem(self.w_mapping, space.newint(ord(ch)))
-            except OperationError, e:
+            except OperationError as e:
                 if not e.match(space, space.w_LookupError):
                     raise
                 return errorchar
@@ -556,7 +556,7 @@
         # get the character from the mapping
         try:
             w_ch = space.getitem(self.w_mapping, space.newint(ord(ch)))
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_LookupError):
                 raise
             return errorchar
@@ -635,7 +635,7 @@
         space = self.space
         try:
             w_code = space.call_function(self.w_getcode, space.wrap(name))
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_KeyError):
                 raise
             return -1
diff --git a/pypy/module/_codecs/test/test_codecs.py b/pypy/module/_codecs/test/test_codecs.py
--- a/pypy/module/_codecs/test/test_codecs.py
+++ b/pypy/module/_codecs/test/test_codecs.py
@@ -458,7 +458,7 @@
         if sys.maxunicode > 0xffff:
             try:
                 "\x00\x00\x00\x00\x00\x11\x11\x00".decode("unicode_internal")
-            except UnicodeDecodeError, ex:
+            except UnicodeDecodeError as ex:
                 assert "unicode_internal" == ex.encoding
                 assert "\x00\x00\x00\x00\x00\x11\x11\x00" == ex.object
                 assert ex.start == 4
@@ -650,7 +650,7 @@
     def test_utf7_start_end_in_exception(self):
         try:
             '+IC'.decode('utf-7')
-        except UnicodeDecodeError, exc:
+        except UnicodeDecodeError as exc:
             assert exc.start == 0
             assert exc.end == 3
 
diff --git a/pypy/module/_collections/interp_deque.py b/pypy/module/_collections/interp_deque.py
--- a/pypy/module/_collections/interp_deque.py
+++ b/pypy/module/_collections/interp_deque.py
@@ -168,7 +168,7 @@
         while True:
             try:
                 w_obj = space.next(w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(space, space.w_StopIteration):
                     break
                 raise
@@ -190,7 +190,7 @@
         while True:
             try:
                 w_obj = space.next(w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(space, space.w_StopIteration):
                     break
                 raise
diff --git a/pypy/module/_collections/test/test_defaultdict.py b/pypy/module/_collections/test/test_defaultdict.py
--- a/pypy/module/_collections/test/test_defaultdict.py
+++ b/pypy/module/_collections/test/test_defaultdict.py
@@ -26,7 +26,7 @@
             for key in ['foo', (1,)]:
                 try:
                     d1[key]
-                except KeyError, err:
+                except KeyError as err:
                     assert err.args[0] == key
                 else:
                     assert 0, "expected KeyError"
diff --git a/pypy/module/_continuation/interp_continuation.py b/pypy/module/_continuation/interp_continuation.py
--- a/pypy/module/_continuation/interp_continuation.py
+++ b/pypy/module/_continuation/interp_continuation.py
@@ -224,7 +224,7 @@
     try:
         frame = self.bottomframe
         w_result = frame.execute_frame()
-    except Exception, e:
+    except Exception as e:
         global_state.propagate_exception = e
     else:
         global_state.w_value = w_result
diff --git a/pypy/module/_continuation/interp_pickle.py b/pypy/module/_continuation/interp_pickle.py
--- a/pypy/module/_continuation/interp_pickle.py
+++ b/pypy/module/_continuation/interp_pickle.py
@@ -69,7 +69,7 @@
             try:
                 w_result = post_switch(sthread, h)
                 operr = None
-            except OperationError, e:
+            except OperationError as e:
                 w_result = None
                 operr = e
             #
@@ -88,7 +88,7 @@
                 try:
                     w_result = frame.execute_frame(w_result, operr)
                     operr = None
-                except OperationError, e:
+                except OperationError as e:
                     w_result = None
                     operr = e
                 if exit_continulet is not None:
@@ -97,7 +97,7 @@
             sthread.ec.topframeref = jit.vref_None
             if operr:
                 raise operr
-    except Exception, e:
+    except Exception as e:
         global_state.propagate_exception = e
     else:
         global_state.w_value = w_result
diff --git a/pypy/module/_continuation/test/support.py b/pypy/module/_continuation/test/support.py
--- a/pypy/module/_continuation/test/support.py
+++ b/pypy/module/_continuation/test/support.py
@@ -8,6 +8,6 @@
     def setup_class(cls):
         try:
             import rpython.rlib.rstacklet
-        except CompilationError, e:
+        except CompilationError as e:
             py.test.skip("cannot import rstacklet: %s" % e)
 
diff --git a/pypy/module/_continuation/test/test_stacklet.py b/pypy/module/_continuation/test/test_stacklet.py
--- a/pypy/module/_continuation/test/test_stacklet.py
+++ b/pypy/module/_continuation/test/test_stacklet.py
@@ -553,11 +553,11 @@
                 res = "got keyerror"
             try:
                 c1.switch(res)
-            except IndexError, e:
+            except IndexError as e:
                 pass
             try:
                 c1.switch(e)
-            except IndexError, e2:
+            except IndexError as e2:
                 pass
             try:
                 c1.switch(e2)
diff --git a/pypy/module/_csv/interp_reader.py b/pypy/module/_csv/interp_reader.py
--- a/pypy/module/_csv/interp_reader.py
+++ b/pypy/module/_csv/interp_reader.py
@@ -65,7 +65,7 @@
         while True:
             try:
                 w_line = space.next(self.w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(space, space.w_StopIteration):
                     if (field_builder is not None and
                             state != START_RECORD and state != EAT_CRNL and
diff --git a/pypy/module/_csv/interp_writer.py b/pypy/module/_csv/interp_writer.py
--- a/pypy/module/_csv/interp_writer.py
+++ b/pypy/module/_csv/interp_writer.py
@@ -49,7 +49,7 @@
                 try:
                     space.float_w(w_field)    # is it an int/long/float?
                     quoted = False
-                except OperationError, e:
+                except OperationError as e:
                     if e.async(space):
                         raise
                     quoted = True
@@ -124,7 +124,7 @@
         while True:
             try:
                 w_seq = space.next(w_iter)
-            except OperationError, e:
+            except OperationError as e:
                 if e.match(space, space.w_StopIteration):
                     break
                 raise
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
@@ -56,7 +56,7 @@
         assert isinstance(self, W_File)
         try:
             self.direct_close()
-        except StreamErrors, e:
+        except StreamErrors as e:
             operr = wrap_streamerror(self.space, e, self.w_name)
             raise operr
 
@@ -200,7 +200,7 @@
             while n > 0:
                 try:
                     data = stream.read(n)
-                except OSError, e:
+                except OSError as e:
                     # a special-case only for read() (similar to CPython, which
                     # also loses partial data with other methods): if we get
                     # EAGAIN after already some data was received, return it.
diff --git a/pypy/module/_file/interp_stream.py b/pypy/module/_file/interp_stream.py
--- a/pypy/module/_file/interp_stream.py
+++ b/pypy/module/_file/interp_stream.py
@@ -81,7 +81,7 @@
         """
         try:
             return self.stream.read(n)
-        except StreamErrors, e:
+        except StreamErrors as e:
             raise wrap_streamerror(self.space, e)
 
     def do_write(self, data):
@@ -92,7 +92,7 @@
         """
         try:
             self.stream.write(data)
-        except StreamErrors, e:
+        except StreamErrors as e:
             raise wrap_streamerror(self.space, e)
 
 
diff --git a/pypy/module/_file/test/test_file.py b/pypy/module/_file/test/test_file.py
--- a/pypy/module/_file/test/test_file.py
+++ b/pypy/module/_file/test/test_file.py
@@ -151,7 +151,7 @@
     def test_oserror_has_filename(self):
         try:
             f = self.file("file that is clearly not there")
-        except IOError, e:
+        except IOError as e:
             assert e.filename == 'file that is clearly not there'
         else:
             raise Exception("did not raise")
diff --git a/pypy/module/_hashlib/interp_hashlib.py b/pypy/module/_hashlib/interp_hashlib.py
--- a/pypy/module/_hashlib/interp_hashlib.py
+++ b/pypy/module/_hashlib/interp_hashlib.py
@@ -28,7 +28,7 @@
         space = global_name_fetcher.space
         w_name = space.wrap(rffi.charp2str(obj_name[0].c_name))
         global_name_fetcher.meth_names.append(w_name)
-    except OperationError, e:
+    except OperationError as e:
         global_name_fetcher.w_error = e
 
 class NameFetcher:
diff --git a/pypy/module/_hashlib/test/test_hashlib.py b/pypy/module/_hashlib/test/test_hashlib.py
--- a/pypy/module/_hashlib/test/test_hashlib.py
+++ b/pypy/module/_hashlib/test/test_hashlib.py
@@ -99,7 +99,7 @@
         for hash_name, expected in sorted(expected_results.items()):
             try:
                 m = _hashlib.new(hash_name)
-            except ValueError, e:
+            except ValueError as e:
                 print 'skipped %s: %s' % (hash_name, e)
                 continue
             m.update(test_string)
diff --git a/pypy/module/_io/interp_bufferedio.py b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -220,7 +220,7 @@
         typename = space.type(self).name
         try:
             w_name = space.getattr(self, space.wrap("name"))
-        except OperationError, e:
+        except OperationError as e:
             if not e.match(space, space.w_Exception):
                 raise
             return space.wrap("<%s>" % (typename,))
@@ -347,7 +347,7 @@
         while True:
             try:
                 w_written = space.call_method(self.w_raw, "write", w_data)
-            except OperationError, e:
+            except OperationError as e:
                 if trap_eintr(space, e):
                     continue  # try again
                 raise
@@ -521,7 +521,7 @@
         while True:
             try:
                 w_size = space.call_method(self.w_raw, "readinto", w_buf)
-            except OperationError, e:
+            except OperationError as e:
                 if trap_eintr(space, e):
                     continue  # try again


More information about the pypy-commit mailing list