/snap/core18/2999/usr/lib/python3.7/lib2to3/fixes
NameSizeModeActions
fix_apply.py24300644editdlrm
fix_asserts.py9840644editdlrm
fix_basestring.py3200644editdlrm
fix_buffer.py5900644editdlrm
fix_dict.py37600644editdlrm
fix_except.py33440644editdlrm
fix_exec.py9790644editdlrm
fix_execfile.py20480644editdlrm
fix_exitfunc.py24950644editdlrm
fix_filter.py26510644editdlrm
fix_funcattrs.py6440644editdlrm
fix_future.py5470644editdlrm
fix_getcwdu.py4510644editdlrm
fix_has_key.py31960644editdlrm
fix_idioms.py48760644editdlrm
fix_import.py32560644editdlrm
fix_imports.py56840644editdlrm
fix_imports2.py2890644editdlrm
fix_input.py7080644editdlrm
fix_intern.py12350644editdlrm
fix_isinstance.py16080644editdlrm
fix_itertools.py15480644editdlrm
fix_itertools_imports.py20860644editdlrm
fix_long.py4760644editdlrm
fix_map.py36400644editdlrm
fix_metaclass.py81970644editdlrm
fix_methodattrs.py6060644editdlrm
fix_ne.py5710644editdlrm
fix_next.py31740644editdlrm
fix_nonzero.py5910644editdlrm
fix_numliterals.py7680644editdlrm
fix_operator.py34260644editdlrm
fix_paren.py12270644editdlrm
fix_print.py28440644editdlrm
fix_raise.py29260644editdlrm
fix_raw_input.py4540644editdlrm
fix_reduce.py8370644editdlrm
fix_reload.py11720644editdlrm
fix_renames.py22210644editdlrm
fix_repr.py6130644editdlrm
fix_set_literal.py16970644editdlrm
fix_standarderror.py4490644editdlrm
fix_sys_exc.py10340644editdlrm
fix_throw.py15820644editdlrm
fix_tuple_params.py55650644editdlrm
fix_types.py17740644editdlrm
fix_unicode.py12560644editdlrm
fix_urllib.py83530644editdlrm
fix_ws_comma.py10900644editdlrm
fix_xrange.py26940644editdlrm
fix_xreadlines.py6890644editdlrm
fix_zip.py12890644editdlrm
__init__.py470644editdlrm
Edit: /snap/core18/2999/usr/lib/python3.7/lib2to3/fixes/fix_raise.py (2926B)
"""Fixer for 'raise E, V, T' raise -> raise raise E -> raise E raise E, V -> raise E(V) raise E, V, T -> raise E(V).with_traceback(T) raise E, None, T -> raise E.with_traceback(T) raise (((E, E'), E''), E'''), V -> raise E(V) raise "foo", V, T -> warns about string exceptions CAVEATS: 1) "raise E, V" will be incorrectly translated if V is an exception instance. The correct Python 3 idiom is raise E from V but since we can't detect instance-hood by syntax alone and since any client code would have to be changed as well, we don't automate this. """ # Author: Collin Winter # Local imports from .. import pytree from ..pgen2 import token from .. import fixer_base from ..fixer_util import Name, Call, Attr, ArgList, is_tuple class FixRaise(fixer_base.BaseFix): BM_compatible = True PATTERN = """ raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] > """ def transform(self, node, results): syms = self.syms exc = results["exc"].clone() if exc.type == token.STRING: msg = "Python 3 does not support string exceptions" self.cannot_convert(node, msg) return # Python 2 supports # raise ((((E1, E2), E3), E4), E5), V # as a synonym for # raise E1, V # Since Python 3 will not support this, we recurse down any tuple # literals, always taking the first element. if is_tuple(exc): while is_tuple(exc): # exc.children[1:-1] is the unparenthesized tuple # exc.children[1].children[0] is the first element of the tuple exc = exc.children[1].children[0].clone() exc.prefix = " " if "val" not in results: # One-argument raise new = pytree.Node(syms.raise_stmt, [Name("raise"), exc]) new.prefix = node.prefix return new val = results["val"].clone() if is_tuple(val): args = [c.clone() for c in val.children[1:-1]] else: val.prefix = "" args = [val] if "tb" in results: tb = results["tb"].clone() tb.prefix = "" e = exc # If there's a traceback and None is passed as the value, then don't # add a call, since the user probably just wants to add a # traceback. See issue #9661. if val.type != token.NAME or val.value != "None": e = Call(exc, args) with_tb = Attr(e, Name('with_traceback')) + [ArgList([tb])] new = pytree.Node(syms.simple_stmt, [Name("raise")] + with_tb) new.prefix = node.prefix return new else: return pytree.Node(syms.raise_stmt, [Name("raise"), Call(exc, args)], prefix=node.prefix)