�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!fix_execfile.py000064400000004000152525335740007555 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for execfile. This converts usages of the execfile function into calls to the built-in exec() function. """ from .. import fixer_base from ..fixer_util import (Comma, Name, Call, LParen, RParen, Dot, Node, ArgList, String, syms) class FixExecfile(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > > | power< 'execfile' trailer< '(' filename=any ')' > > """ def transform(self, node, results): assert results filename = results["filename"] globals = results.get("globals") locals = results.get("locals") # Copy over the prefix from the right parentheses end of the execfile # call. execfile_paren = node.children[-1].children[-1].clone() # Construct open().read(). open_args = ArgList([filename.clone(), Comma(), String('"rb"', ' ')], rparen=execfile_paren) open_call = Node(syms.power, [Name("open"), open_args]) read = [Node(syms.trailer, [Dot(), Name('read')]), Node(syms.trailer, [LParen(), RParen()])] open_expr = [open_call] + read # Wrap the open call in a compile call. This is so the filename will be # preserved in the execed code. filename_arg = filename.clone() filename_arg.prefix = " " exec_str = String("'exec'", " ") compile_args = open_expr + [Comma(), filename_arg, Comma(), exec_str] compile_call = Call(Name("compile"), compile_args, "") # Finally, replace the execfile call with an exec call. args = [compile_call] if globals is not None: args.extend([Comma(), globals.clone()]) if locals is not None: args.extend([Comma(), locals.clone()]) return Call(Name("exec"), args, prefix=node.prefix) fix_except.py000064400000006420152525335740007271 0ustar00"""Fixer for except statements with named exceptions. The following cases will be converted: - "except E, T:" where T is a name: except E as T: - "except E, T:" where T is not a name, tuple or list: except E as t: T = t This is done because the target of an "except" clause must be a name. - "except E, T:" where T is a tuple or list literal: except E as t: T = t.args """ # Author: Collin Winter # Local imports from .. import pytree from ..pgen2 import token from .. import fixer_base from ..fixer_util import Assign, Attr, Name, is_tuple, is_list, syms def find_excepts(nodes): for i, n in enumerate(nodes): if n.type == syms.except_clause: if n.children[0].value == 'except': yield (n, nodes[i+2]) class FixExcept(fixer_base.BaseFix): BM_compatible = True PATTERN = """ try_stmt< 'try' ':' (simple_stmt | suite) cleanup=(except_clause ':' (simple_stmt | suite))+ tail=(['except' ':' (simple_stmt | suite)] ['else' ':' (simple_stmt | suite)] ['finally' ':' (simple_stmt | suite)]) > """ def transform(self, node, results): syms = self.syms tail = [n.clone() for n in results["tail"]] try_cleanup = [ch.clone() for ch in results["cleanup"]] for except_clause, e_suite in find_excepts(try_cleanup): if len(except_clause.children) == 4: (E, comma, N) = except_clause.children[1:4] comma.replace(Name("as", prefix=" ")) if N.type != token.NAME: # Generate a new N for the except clause new_N = Name(self.new_name(), prefix=" ") target = N.clone() target.prefix = "" N.replace(new_N) new_N = new_N.clone() # Insert "old_N = new_N" as the first statement in # the except body. This loop skips leading whitespace # and indents #TODO(cwinter) suite-cleanup suite_stmts = e_suite.children for i, stmt in enumerate(suite_stmts): if isinstance(stmt, pytree.Node): break # The assignment is different if old_N is a tuple or list # In that case, the assignment is old_N = new_N.args if is_tuple(N) or is_list(N): assign = Assign(target, Attr(new_N, Name('args'))) else: assign = Assign(target, new_N) #TODO(cwinter) stopgap until children becomes a smart list for child in reversed(suite_stmts[:i]): e_suite.insert_child(0, child) e_suite.insert_child(i, assign) elif N.prefix == "": # No space after a comma is legal; no space after "as", # not so much. N.prefix = " " #TODO(cwinter) fix this when children becomes a smart list children = [c.clone() for c in node.children[:3]] + try_cleanup + tail return pytree.Node(node.type, children) fix_print.py000064400000005434152525335740007141 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for print. Change: 'print' into 'print()' 'print ...' into 'print(...)' 'print ... ,' into 'print(..., end=" ")' 'print >>x, ...' into 'print(..., file=x)' No changes are applied if print_function is imported from __future__ """ # Local imports from .. import patcomp from .. import pytree from ..pgen2 import token from .. import fixer_base from ..fixer_util import Name, Call, Comma, String parend_expr = patcomp.compile_pattern( """atom< '(' [atom|STRING|NAME] ')' >""" ) class FixPrint(fixer_base.BaseFix): BM_compatible = True PATTERN = """ simple_stmt< any* bare='print' any* > | print_stmt """ def transform(self, node, results): assert results bare_print = results.get("bare") if bare_print: # Special-case print all by itself bare_print.replace(Call(Name("print"), [], prefix=bare_print.prefix)) return assert node.children[0] == Name("print") args = node.children[1:] if len(args) == 1 and parend_expr.match(args[0]): # We don't want to keep sticking parens around an # already-parenthesised expression. return sep = end = file = None if args and args[-1] == Comma(): args = args[:-1] end = " " if args and args[0] == pytree.Leaf(token.RIGHTSHIFT, ">>"): assert len(args) >= 2 file = args[1].clone() args = args[3:] # Strip a possible comma after the file expression # Now synthesize a print(args, sep=..., end=..., file=...) node. l_args = [arg.clone() for arg in args] if l_args: l_args[0].prefix = "" if sep is not None or end is not None or file is not None: if sep is not None: self.add_kwarg(l_args, "sep", String(repr(sep))) if end is not None: self.add_kwarg(l_args, "end", String(repr(end))) if file is not None: self.add_kwarg(l_args, "file", file) n_stmt = Call(Name("print"), l_args) n_stmt.prefix = node.prefix return n_stmt def add_kwarg(self, l_nodes, s_kwd, n_expr): # XXX All this prefix-setting may lose comments (though rarely) n_expr.prefix = "" n_argument = pytree.Node(self.syms.argument, (Name(s_kwd), pytree.Leaf(token.EQUAL, "="), n_expr)) if l_nodes: l_nodes.append(Comma()) n_argument.prefix = " " l_nodes.append(n_argument) fix_xreadlines.py000064400000001261152525335740010135 0ustar00"""Fix "for x in f.xreadlines()" -> "for x in f". This fixer will also convert g(f.xreadlines) into g(f.__iter__).""" # Author: Collin Winter # Local imports from .. import fixer_base from ..fixer_util import Name class FixXreadlines(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > > | power< any+ trailer< '.' no_call='xreadlines' > > """ def transform(self, node, results): no_call = results.get("no_call") if no_call: no_call.replace(Name("__iter__", prefix=no_call.prefix)) else: node.replace([x.clone() for x in results["call"]]) fix_methodattrs.py000064400000001136152525335740010336 0ustar00"""Fix bound method attributes (method.im_? -> method.__?__). """ # Author: Christian Heimes # Local imports from .. import fixer_base from ..fixer_util import Name MAP = { "im_func" : "__func__", "im_self" : "__self__", "im_class" : "__self__.__class__" } class FixMethodattrs(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* > """ def transform(self, node, results): attr = results["attr"][0] new = MAP[attr.value] attr.replace(Name(new, prefix=attr.prefix)) fix_getcwdu.py000064400000000703152525335740007441 0ustar00""" Fixer that changes os.getcwdu() to os.getcwd(). """ # Author: Victor Stinner # Local imports from .. import fixer_base from ..fixer_util import Name class FixGetcwdu(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< 'os' trailer< dot='.' name='getcwdu' > any* > """ def transform(self, node, results): name = results["name"] name.replace(Name("getcwd", prefix=name.prefix)) fix_asserts.py000064400000001730152525335740007464 0ustar00"""Fixer that replaces deprecated unittest method names.""" # Author: Ezio Melotti from ..fixer_base import BaseFix from ..fixer_util import Name NAMES = dict( assert_="assertTrue", assertEquals="assertEqual", assertNotEquals="assertNotEqual", assertAlmostEquals="assertAlmostEqual", assertNotAlmostEquals="assertNotAlmostEqual", assertRegexpMatches="assertRegex", assertRaisesRegexp="assertRaisesRegex", failUnlessEqual="assertEqual", failIfEqual="assertNotEqual", failUnlessAlmostEqual="assertAlmostEqual", failIfAlmostEqual="assertNotAlmostEqual", failUnless="assertTrue", failUnlessRaises="assertRaises", failIf="assertFalse", ) class FixAsserts(BaseFix): PATTERN = """ power< any+ trailer< '.' meth=(%s)> any* > """ % '|'.join(map(repr, NAMES)) def transform(self, node, results): name = results["meth"][0] name.replace(Name(NAMES[str(name)], prefix=name.prefix)) fix_import.py000064400000006270152525335740007316 0ustar00"""Fixer for import statements. If spam is being imported from the local directory, this import: from spam import eggs Becomes: from .spam import eggs And this import: import spam Becomes: from . import spam """ # Local imports from .. import fixer_base from os.path import dirname, join, exists, sep from ..fixer_util import FromImport, syms, token def traverse_imports(names): """ Walks over all the names imported in a dotted_as_names node. """ pending = [names] while pending: node = pending.pop() if node.type == token.NAME: yield node.value elif node.type == syms.dotted_name: yield "".join([ch.value for ch in node.children]) elif node.type == syms.dotted_as_name: pending.append(node.children[0]) elif node.type == syms.dotted_as_names: pending.extend(node.children[::-2]) else: raise AssertionError("unknown node type") class FixImport(fixer_base.BaseFix): BM_compatible = True PATTERN = """ import_from< 'from' imp=any 'import' ['('] any [')'] > | import_name< 'import' imp=any > """ def start_tree(self, tree, name): super(FixImport, self).start_tree(tree, name) self.skip = "absolute_import" in tree.future_features def transform(self, node, results): if self.skip: return imp = results['imp'] if node.type == syms.import_from: # Some imps are top-level (eg: 'import ham') # some are first level (eg: 'import ham.eggs') # some are third level (eg: 'import ham.eggs as spam') # Hence, the loop while not hasattr(imp, 'value'): imp = imp.children[0] if self.probably_a_local_import(imp.value): imp.value = "." + imp.value imp.changed() else: have_local = False have_absolute = False for mod_name in traverse_imports(imp): if self.probably_a_local_import(mod_name): have_local = True else: have_absolute = True if have_absolute: if have_local: # We won't handle both sibling and absolute imports in the # same statement at the moment. self.warning(node, "absolute and local imports together") return new = FromImport(".", [imp]) new.prefix = node.prefix return new def probably_a_local_import(self, imp_name): if imp_name.startswith("."): # Relative imports are certainly not local imports. return False imp_name = imp_name.split(".", 1)[0] base_path = dirname(self.filename) base_path = join(base_path, imp_name) # If there is no __init__.py next to the file its not in a package # so can't be a relative import. if not exists(join(dirname(base_path), "__init__.py")): return False for ext in [".py", sep, ".pyc", ".so", ".sl", ".pyd"]: if exists(base_path + ext): return True return False fix_urllib.py000064400000020257152525335740007276 0ustar00"""Fix changes imports of urllib which are now incompatible. This is rather similar to fix_imports, but because of the more complex nature of the fixing for urllib, it has its own fixer. """ # Author: Nick Edds # Local imports from lib2to3.fixes.fix_imports import alternates, FixImports from lib2to3.fixer_util import (Name, Comma, FromImport, Newline, find_indentation, Node, syms) MAPPING = {"urllib": [ ("urllib.request", ["URLopener", "FancyURLopener", "urlretrieve", "_urlopener", "urlopen", "urlcleanup", "pathname2url", "url2pathname", "getproxies"]), ("urllib.parse", ["quote", "quote_plus", "unquote", "unquote_plus", "urlencode", "splitattr", "splithost", "splitnport", "splitpasswd", "splitport", "splitquery", "splittag", "splittype", "splituser", "splitvalue", ]), ("urllib.error", ["ContentTooShortError"])], "urllib2" : [ ("urllib.request", ["urlopen", "install_opener", "build_opener", "Request", "OpenerDirector", "BaseHandler", "HTTPDefaultErrorHandler", "HTTPRedirectHandler", "HTTPCookieProcessor", "ProxyHandler", "HTTPPasswordMgr", "HTTPPasswordMgrWithDefaultRealm", "AbstractBasicAuthHandler", "HTTPBasicAuthHandler", "ProxyBasicAuthHandler", "AbstractDigestAuthHandler", "HTTPDigestAuthHandler", "ProxyDigestAuthHandler", "HTTPHandler", "HTTPSHandler", "FileHandler", "FTPHandler", "CacheFTPHandler", "UnknownHandler"]), ("urllib.error", ["URLError", "HTTPError"]), ] } # Duplicate the url parsing functions for urllib2. MAPPING["urllib2"].append(MAPPING["urllib"][1]) def build_pattern(): bare = set() for old_module, changes in MAPPING.items(): for change in changes: new_module, members = change members = alternates(members) yield """import_name< 'import' (module=%r | dotted_as_names< any* module=%r any* >) > """ % (old_module, old_module) yield """import_from< 'from' mod_member=%r 'import' ( member=%s | import_as_name< member=%s 'as' any > | import_as_names< members=any* >) > """ % (old_module, members, members) yield """import_from< 'from' module_star=%r 'import' star='*' > """ % old_module yield """import_name< 'import' dotted_as_name< module_as=%r 'as' any > > """ % old_module # bare_with_attr has a special significance for FixImports.match(). yield """power< bare_with_attr=%r trailer< '.' member=%s > any* > """ % (old_module, members) class FixUrllib(FixImports): def build_pattern(self): return "|".join(build_pattern()) def transform_import(self, node, results): """Transform for the basic import case. Replaces the old import name with a comma separated list of its replacements. """ import_mod = results.get("module") pref = import_mod.prefix names = [] # create a Node list of the replacement modules for name in MAPPING[import_mod.value][:-1]: names.extend([Name(name[0], prefix=pref), Comma()]) names.append(Name(MAPPING[import_mod.value][-1][0], prefix=pref)) import_mod.replace(names) def transform_member(self, node, results): """Transform for imports of specific module elements. Replaces the module to be imported from with the appropriate new module. """ mod_member = results.get("mod_member") pref = mod_member.prefix member = results.get("member") # Simple case with only a single member being imported if member: # this may be a list of length one, or just a node if isinstance(member, list): member = member[0] new_name = None for change in MAPPING[mod_member.value]: if member.value in change[1]: new_name = change[0] break if new_name: mod_member.replace(Name(new_name, prefix=pref)) else: self.cannot_convert(node, "This is an invalid module element") # Multiple members being imported else: # a dictionary for replacements, order matters modules = [] mod_dict = {} members = results["members"] for member in members: # we only care about the actual members if member.type == syms.import_as_name: as_name = member.children[2].value member_name = member.children[0].value else: member_name = member.value as_name = None if member_name != ",": for change in MAPPING[mod_member.value]: if member_name in change[1]: if change[0] not in mod_dict: modules.append(change[0]) mod_dict.setdefault(change[0], []).append(member) new_nodes = [] indentation = find_indentation(node) first = True def handle_name(name, prefix): if name.type == syms.import_as_name: kids = [Name(name.children[0].value, prefix=prefix), name.children[1].clone(), name.children[2].clone()] return [Node(syms.import_as_name, kids)] return [Name(name.value, prefix=prefix)] for module in modules: elts = mod_dict[module] names = [] for elt in elts[:-1]: names.extend(handle_name(elt, pref)) names.append(Comma()) names.extend(handle_name(elts[-1], pref)) new = FromImport(module, names) if not first or node.parent.prefix.endswith(indentation): new.prefix = indentation new_nodes.append(new) first = False if new_nodes: nodes = [] for new_node in new_nodes[:-1]: nodes.extend([new_node, Newline()]) nodes.append(new_nodes[-1]) node.replace(nodes) else: self.cannot_convert(node, "All module elements are invalid") def transform_dot(self, node, results): """Transform for calls to module members in code.""" module_dot = results.get("bare_with_attr") member = results.get("member") new_name = None if isinstance(member, list): member = member[0] for change in MAPPING[module_dot.value]: if member.value in change[1]: new_name = change[0] break if new_name: module_dot.replace(Name(new_name, prefix=module_dot.prefix)) else: self.cannot_convert(node, "This is an invalid module element") def transform(self, node, results): if results.get("module"): self.transform_import(node, results) elif results.get("mod_member"): self.transform_member(node, results) elif results.get("bare_with_attr"): self.transform_dot(node, results) # Renaming and star imports are not supported for these modules. elif results.get("module_star"): self.cannot_convert(node, "Cannot handle star imports.") elif results.get("module_as"): self.cannot_convert(node, "This module is now multiple modules") fix_intern.py000064400000002170152525335740007276 0ustar00# Copyright 2006 Georg Brandl. # Licensed to PSF under a Contributor Agreement. """Fixer for intern(). intern(s) -> sys.intern(s)""" # Local imports from .. import fixer_base from ..fixer_util import ImportAndCall, touch_import class FixIntern(fixer_base.BaseFix): BM_compatible = True order = "pre" PATTERN = """ power< 'intern' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > """ def transform(self, node, results): if results: # I feel like we should be able to express this logic in the # PATTERN above but I don't know how to do it so... obj = results['obj'] if obj: if (obj.type == self.syms.argument and obj.children[0].value in {'**', '*'}): return # Make no change. names = ('sys', 'intern') new = ImportAndCall(node, results, names) touch_import(None, 'sys', node) return new fix_nonzero.py000064400000001117152525335740007471 0ustar00"""Fixer for __nonzero__ -> __bool__ methods.""" # Author: Collin Winter # Local imports from .. import fixer_base from ..fixer_util import Name class FixNonzero(fixer_base.BaseFix): BM_compatible = True PATTERN = """ classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='__nonzero__' parameters< '(' NAME ')' > any+ > any* > > """ def transform(self, node, results): name = results["name"] new = Name("__bool__", prefix=name.prefix) name.replace(new) fix_repr.py000064400000001145152525335740006750 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that transforms `xyzzy` into repr(xyzzy).""" # Local imports from .. import fixer_base from ..fixer_util import Call, Name, parenthesize class FixRepr(fixer_base.BaseFix): BM_compatible = True PATTERN = """ atom < '`' expr=any '`' > """ def transform(self, node, results): expr = results["expr"].clone() if expr.type == self.syms.testlist1: expr = parenthesize(expr) return Call(Name("repr"), [expr], prefix=node.prefix) fix_zip.py000064400000002411152525335740006577 0ustar00""" Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...) unless there exists a 'from future_builtins import zip' statement in the top-level namespace. We avoid the transformation if the zip() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. """ # Local imports from .. import fixer_base from ..pytree import Node from ..pygram import python_symbols as syms from ..fixer_util import Name, ArgList, in_special_context class FixZip(fixer_base.ConditionalFix): BM_compatible = True PATTERN = """ power< 'zip' args=trailer< '(' [any] ')' > [trailers=trailer*] > """ skip_on = "future_builtins.zip" def transform(self, node, results): if self.should_skip(node): return if in_special_context(node): return None args = results['args'].clone() args.prefix = "" trailers = [] if 'trailers' in results: trailers = [n.clone() for n in results['trailers']] for n in trailers: n.prefix = "" new = Node(syms.power, [Name("zip"), args], prefix="") new = Node(syms.power, [Name("list"), ArgList([new])] + trailers) new.prefix = node.prefix return new fix_renames.py000064400000004255152525335740007437 0ustar00"""Fix incompatible renames Fixes: * sys.maxint -> sys.maxsize """ # Author: Christian Heimes # based on Collin Winter's fix_import # Local imports from .. import fixer_base from ..fixer_util import Name, attr_chain MAPPING = {"sys": {"maxint" : "maxsize"}, } LOOKUP = {} def alternates(members): return "(" + "|".join(map(repr, members)) + ")" def build_pattern(): #bare = set() for module, replace in list(MAPPING.items()): for old_attr, new_attr in list(replace.items()): LOOKUP[(module, old_attr)] = new_attr #bare.add(module) #bare.add(old_attr) #yield """ # import_name< 'import' (module=%r # | dotted_as_names< any* module=%r any* >) > # """ % (module, module) yield """ import_from< 'from' module_name=%r 'import' ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) > """ % (module, old_attr, old_attr) yield """ power< module_name=%r trailer< '.' attr_name=%r > any* > """ % (module, old_attr) #yield """bare_name=%s""" % alternates(bare) class FixRenames(fixer_base.BaseFix): BM_compatible = True PATTERN = "|".join(build_pattern()) order = "pre" # Pre-order tree traversal # Don't match the node if it's within another match def match(self, node): match = super(FixRenames, self).match results = match(node) if results: if any(match(obj) for obj in attr_chain(node, "parent")): return False return results return False #def start_tree(self, tree, filename): # super(FixRenames, self).start_tree(tree, filename) # self.replace = {} def transform(self, node, results): mod_name = results.get("module_name") attr_name = results.get("attr_name") #bare_name = results.get("bare_name") #import_mod = results.get("module") if mod_name and attr_name: new_attr = LOOKUP[(mod_name.value, attr_name.value)] attr_name.replace(Name(new_attr, prefix=attr_name.prefix)) fix_itertools_imports.py000064400000004046152525335740011604 0ustar00""" Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) """ # Local imports from lib2to3 import fixer_base from lib2to3.fixer_util import BlankLine, syms, token class FixItertoolsImports(fixer_base.BaseFix): BM_compatible = True PATTERN = """ import_from< 'from' 'itertools' 'import' imports=any > """ %(locals()) def transform(self, node, results): imports = results['imports'] if imports.type == syms.import_as_name or not imports.children: children = [imports] else: children = imports.children for child in children[::2]: if child.type == token.NAME: member = child.value name_node = child elif child.type == token.STAR: # Just leave the import as is. return else: assert child.type == syms.import_as_name name_node = child.children[0] member_name = name_node.value if member_name in ('imap', 'izip', 'ifilter'): child.value = None child.remove() elif member_name in ('ifilterfalse', 'izip_longest'): node.changed() name_node.value = ('filterfalse' if member_name[1] == 'f' else 'zip_longest') # Make sure the import statement is still sane children = imports.children[:] or [imports] remove_comma = True for child in children: if remove_comma and child.type == token.COMMA: child.remove() else: remove_comma ^= True while children and children[-1].type == token.COMMA: children.pop().remove() # If there are no imports left, just get rid of the entire statement if (not (imports.children or getattr(imports, 'value', None)) or imports.parent is None): p = node.prefix node = BlankLine() node.prefix = p return node fix_has_key.py000064400000006174152525335740007432 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for has_key(). Calls to .has_key() methods are expressed in terms of the 'in' operator: d.has_key(k) -> k in d CAVEATS: 1) While the primary target of this fixer is dict.has_key(), the fixer will change any has_key() method call, regardless of its class. 2) Cases like this will not be converted: m = d.has_key if m(k): ... Only *calls* to has_key() are converted. While it is possible to convert the above to something like m = d.__contains__ if m(k): ... this is currently not done. """ # Local imports from .. import pytree from .. import fixer_base from ..fixer_util import Name, parenthesize class FixHasKey(fixer_base.BaseFix): BM_compatible = True PATTERN = """ anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > after=any* > | negation=not_test< 'not' anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > > > """ def transform(self, node, results): assert results syms = self.syms if (node.parent.type == syms.not_test and self.pattern.match(node.parent)): # Don't transform a node matching the first alternative of the # pattern when its parent matches the second alternative return None negation = results.get("negation") anchor = results["anchor"] prefix = node.prefix before = [n.clone() for n in results["before"]] arg = results["arg"].clone() after = results.get("after") if after: after = [n.clone() for n in after] if arg.type in (syms.comparison, syms.not_test, syms.and_test, syms.or_test, syms.test, syms.lambdef, syms.argument): arg = parenthesize(arg) if len(before) == 1: before = before[0] else: before = pytree.Node(syms.power, before) before.prefix = " " n_op = Name("in", prefix=" ") if negation: n_not = Name("not", prefix=" ") n_op = pytree.Node(syms.comp_op, (n_not, n_op)) new = pytree.Node(syms.comparison, (arg, n_op, before)) if after: new = parenthesize(new) new = pytree.Node(syms.power, (new,) + tuple(after)) if node.parent.type in (syms.comparison, syms.expr, syms.xor_expr, syms.and_expr, syms.shift_expr, syms.arith_expr, syms.term, syms.factor, syms.power): new = parenthesize(new) new.prefix = prefix return new fix_raw_input.py000064400000000706152525335740010012 0ustar00"""Fixer that changes raw_input(...) into input(...).""" # Author: Andre Roberge # Local imports from .. import fixer_base from ..fixer_util import Name class FixRawInput(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< name='raw_input' trailer< '(' [any] ')' > any* > """ def transform(self, node, results): name = results["name"] name.replace(Name("input", prefix=name.prefix)) fix_reduce.py000064400000001505152525335740007247 0ustar00# Copyright 2008 Armin Ronacher. # Licensed to PSF under a Contributor Agreement. """Fixer for reduce(). Makes sure reduce() is imported from the functools module if reduce is used in that module. """ from lib2to3 import fixer_base from lib2to3.fixer_util import touch_import class FixReduce(fixer_base.BaseFix): BM_compatible = True order = "pre" PATTERN = """ power< 'reduce' trailer< '(' arglist< ( (not(argument) any ',' not(argument > """ def transform(self, node, results): touch_import('functools', 'reduce', node) fix_idioms.py000064400000011414152525335740007264 0ustar00"""Adjust some old Python 2 idioms to their modern counterparts. * Change some type comparisons to isinstance() calls: type(x) == T -> isinstance(x, T) type(x) is T -> isinstance(x, T) type(x) != T -> not isinstance(x, T) type(x) is not T -> not isinstance(x, T) * Change "while 1:" into "while True:". * Change both v = list(EXPR) v.sort() foo(v) and the more general v = EXPR v.sort() foo(v) into v = sorted(EXPR) foo(v) """ # Author: Jacques Frechet, Collin Winter # Local imports from .. import fixer_base from ..fixer_util import Call, Comma, Name, Node, BlankLine, syms CMP = "(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)" TYPE = "power< 'type' trailer< '(' x=any ')' > >" class FixIdioms(fixer_base.BaseFix): explicit = True # The user must ask for this fixer PATTERN = r""" isinstance=comparison< %s %s T=any > | isinstance=comparison< T=any %s %s > | while_stmt< 'while' while='1' ':' any+ > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' power< list='list' trailer< '(' (not arglist) any ')' > > > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > """ % (TYPE, CMP, CMP, TYPE) def match(self, node): r = super(FixIdioms, self).match(node) # If we've matched one of the sort/sorted subpatterns above, we # want to reject matches where the initial assignment and the # subsequent .sort() call involve different identifiers. if r and "sorted" in r: if r["id1"] == r["id2"]: return r return None return r def transform(self, node, results): if "isinstance" in results: return self.transform_isinstance(node, results) elif "while" in results: return self.transform_while(node, results) elif "sorted" in results: return self.transform_sort(node, results) else: raise RuntimeError("Invalid match") def transform_isinstance(self, node, results): x = results["x"].clone() # The thing inside of type() T = results["T"].clone() # The type being compared against x.prefix = "" T.prefix = " " test = Call(Name("isinstance"), [x, Comma(), T]) if "n" in results: test.prefix = " " test = Node(syms.not_test, [Name("not"), test]) test.prefix = node.prefix return test def transform_while(self, node, results): one = results["while"] one.replace(Name("True", prefix=one.prefix)) def transform_sort(self, node, results): sort_stmt = results["sort"] next_stmt = results["next"] list_call = results.get("list") simple_expr = results.get("expr") if list_call: list_call.replace(Name("sorted", prefix=list_call.prefix)) elif simple_expr: new = simple_expr.clone() new.prefix = "" simple_expr.replace(Call(Name("sorted"), [new], prefix=simple_expr.prefix)) else: raise RuntimeError("should not have reached here") sort_stmt.remove() btwn = sort_stmt.prefix # Keep any prefix lines between the sort_stmt and the list_call and # shove them right after the sorted() call. if "\n" in btwn: if next_stmt: # The new prefix should be everything from the sort_stmt's # prefix up to the last newline, then the old prefix after a new # line. prefix_lines = (btwn.rpartition("\n")[0], next_stmt[0].prefix) next_stmt[0].prefix = "\n".join(prefix_lines) else: assert list_call.parent assert list_call.next_sibling is None # Put a blank line after list_call and set its prefix. end_line = BlankLine() list_call.parent.append_child(end_line) assert list_call.next_sibling is end_line # The new prefix should be everything up to the first new line # of sort_stmt's prefix. end_line.prefix = btwn.rpartition("\n")[0] fix_unicode.py000064400000002350152525335740007425 0ustar00r"""Fixer for unicode. * Changes unicode to str and unichr to chr. * If "...\u..." is not unicode literal change it into "...\\u...". * Change u"..." into "...". """ from ..pgen2 import token from .. import fixer_base _mapping = {"unichr" : "chr", "unicode" : "str"} class FixUnicode(fixer_base.BaseFix): BM_compatible = True PATTERN = "STRING | 'unicode' | 'unichr'" def start_tree(self, tree, filename): super(FixUnicode, self).start_tree(tree, filename) self.unicode_literals = 'unicode_literals' in tree.future_features def transform(self, node, results): if node.type == token.NAME: new = node.clone() new.value = _mapping[node.value] return new elif node.type == token.STRING: val = node.value if not self.unicode_literals and val[0] in '\'"' and '\\' in val: val = r'\\'.join([ v.replace('\\u', r'\\u').replace('\\U', r'\\U') for v in val.split(r'\\') ]) if val[0] in 'uU': val = val[1:] if val == node.value: return node new = node.clone() new.value = val return new fix_metaclass.py000064400000020005152525335740007750 0ustar00"""Fixer for __metaclass__ = X -> (metaclass=X) methods. The various forms of classef (inherits nothing, inherits once, inherits many) don't parse the same in the CST so we look at ALL classes for a __metaclass__ and if we find one normalize the inherits to all be an arglist. For one-liner classes ('class X: pass') there is no indent/dedent so we normalize those into having a suite. Moving the __metaclass__ into the classdef can also cause the class body to be empty so there is some special casing for that as well. This fixer also tries very hard to keep original indenting and spacing in all those corner cases. """ # Author: Jack Diederich # Local imports from .. import fixer_base from ..pygram import token from ..fixer_util import syms, Node, Leaf def has_metaclass(parent): """ we have to check the cls_node without changing it. There are two possibilities: 1) clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta') 2) clsdef => simple_stmt => expr_stmt => Leaf('__meta') """ for node in parent.children: if node.type == syms.suite: return has_metaclass(node) elif node.type == syms.simple_stmt and node.children: expr_node = node.children[0] if expr_node.type == syms.expr_stmt and expr_node.children: left_side = expr_node.children[0] if isinstance(left_side, Leaf) and \ left_side.value == '__metaclass__': return True return False def fixup_parse_tree(cls_node): """ one-line classes don't get a suite in the parse tree so we add one to normalize the tree """ for node in cls_node.children: if node.type == syms.suite: # already in the preferred format, do nothing return # !%@#! one-liners have no suite node, we have to fake one up for i, node in enumerate(cls_node.children): if node.type == token.COLON: break else: raise ValueError("No class suite and no ':'!") # move everything into a suite node suite = Node(syms.suite, []) while cls_node.children[i+1:]: move_node = cls_node.children[i+1] suite.append_child(move_node.clone()) move_node.remove() cls_node.append_child(suite) node = suite def fixup_simple_stmt(parent, i, stmt_node): """ if there is a semi-colon all the parts count as part of the same simple_stmt. We just want the __metaclass__ part so we move everything after the semi-colon into its own simple_stmt node """ for semi_ind, node in enumerate(stmt_node.children): if node.type == token.SEMI: # *sigh* break else: return node.remove() # kill the semicolon new_expr = Node(syms.expr_stmt, []) new_stmt = Node(syms.simple_stmt, [new_expr]) while stmt_node.children[semi_ind:]: move_node = stmt_node.children[semi_ind] new_expr.append_child(move_node.clone()) move_node.remove() parent.insert_child(i, new_stmt) new_leaf1 = new_stmt.children[0].children[0] old_leaf1 = stmt_node.children[0].children[0] new_leaf1.prefix = old_leaf1.prefix def remove_trailing_newline(node): if node.children and node.children[-1].type == token.NEWLINE: node.children[-1].remove() def find_metas(cls_node): # find the suite node (Mmm, sweet nodes) for node in cls_node.children: if node.type == syms.suite: break else: raise ValueError("No class suite!") # look for simple_stmt[ expr_stmt[ Leaf('__metaclass__') ] ] for i, simple_node in list(enumerate(node.children)): if simple_node.type == syms.simple_stmt and simple_node.children: expr_node = simple_node.children[0] if expr_node.type == syms.expr_stmt and expr_node.children: # Check if the expr_node is a simple assignment. left_node = expr_node.children[0] if isinstance(left_node, Leaf) and \ left_node.value == '__metaclass__': # We found an assignment to __metaclass__. fixup_simple_stmt(node, i, simple_node) remove_trailing_newline(simple_node) yield (node, i, simple_node) def fixup_indent(suite): """ If an INDENT is followed by a thing with a prefix then nuke the prefix Otherwise we get in trouble when removing __metaclass__ at suite start """ kids = suite.children[::-1] # find the first indent while kids: node = kids.pop() if node.type == token.INDENT: break # find the first Leaf while kids: node = kids.pop() if isinstance(node, Leaf) and node.type != token.DEDENT: if node.prefix: node.prefix = '' return else: kids.extend(node.children[::-1]) class FixMetaclass(fixer_base.BaseFix): BM_compatible = True PATTERN = """ classdef """ def transform(self, node, results): if not has_metaclass(node): return fixup_parse_tree(node) # find metaclasses, keep the last one last_metaclass = None for suite, i, stmt in find_metas(node): last_metaclass = stmt stmt.remove() text_type = node.children[0].type # always Leaf(nnn, 'class') # figure out what kind of classdef we have if len(node.children) == 7: # Node(classdef, ['class', 'name', '(', arglist, ')', ':', suite]) # 0 1 2 3 4 5 6 if node.children[3].type == syms.arglist: arglist = node.children[3] # Node(classdef, ['class', 'name', '(', 'Parent', ')', ':', suite]) else: parent = node.children[3].clone() arglist = Node(syms.arglist, [parent]) node.set_child(3, arglist) elif len(node.children) == 6: # Node(classdef, ['class', 'name', '(', ')', ':', suite]) # 0 1 2 3 4 5 arglist = Node(syms.arglist, []) node.insert_child(3, arglist) elif len(node.children) == 4: # Node(classdef, ['class', 'name', ':', suite]) # 0 1 2 3 arglist = Node(syms.arglist, []) node.insert_child(2, Leaf(token.RPAR, ')')) node.insert_child(2, arglist) node.insert_child(2, Leaf(token.LPAR, '(')) else: raise ValueError("Unexpected class definition") # now stick the metaclass in the arglist meta_txt = last_metaclass.children[0].children[0] meta_txt.value = 'metaclass' orig_meta_prefix = meta_txt.prefix if arglist.children: arglist.append_child(Leaf(token.COMMA, ',')) meta_txt.prefix = ' ' else: meta_txt.prefix = '' # compact the expression "metaclass = Meta" -> "metaclass=Meta" expr_stmt = last_metaclass.children[0] assert expr_stmt.type == syms.expr_stmt expr_stmt.children[1].prefix = '' expr_stmt.children[2].prefix = '' arglist.append_child(last_metaclass) fixup_indent(suite) # check for empty suite if not suite.children: # one-liner that was just __metaclass_ suite.remove() pass_leaf = Leaf(text_type, 'pass') pass_leaf.prefix = orig_meta_prefix node.append_child(pass_leaf) node.append_child(Leaf(token.NEWLINE, '\n')) elif len(suite.children) > 1 and \ (suite.children[-2].type == token.INDENT and suite.children[-1].type == token.DEDENT): # there was only one line in the class body and it was __metaclass__ pass_leaf = Leaf(text_type, 'pass') suite.insert_child(-1, pass_leaf) suite.insert_child(-1, Leaf(token.NEWLINE, '\n')) fix_funcattrs.py000064400000001204152525335740010005 0ustar00"""Fix function attribute names (f.func_x -> f.__x__).""" # Author: Collin Winter # Local imports from .. import fixer_base from ..fixer_util import Name class FixFuncattrs(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals' | 'func_name' | 'func_defaults' | 'func_code' | 'func_dict') > any* > """ def transform(self, node, results): attr = results["attr"][0] attr.replace(Name(("__%s__" % attr.value[5:]), prefix=attr.prefix)) fix_raise.py000064400000005556152525335740007115 0ustar00"""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) __pycache__/fix_urllib.cpython-312.opt-1.pyc000064400000021673152525335740014601 0ustar00 {|j dZddlmZmZddlmZmZmZmZm Z m Z m Z dgdfdgdfdd gfgdgd fdd d gfgd Z e dje dddZGddeZy)zFix changes imports of urllib which are now incompatible. This is rather similar to fix_imports, but because of the more complex nature of the fixing for urllib, it has its own fixer. ) alternates FixImports)NameComma FromImportNewlinefind_indentationNodesymszurllib.request) URLopenerFancyURLopener urlretrieve _urlopenerurlopen urlcleanup pathname2url url2pathname getproxiesz urllib.parse)quote quote_plusunquote unquote_plus urlencode splitattr splithost splitnport splitpasswd splitport splitquerysplittag splittype splituser splitvaluez urllib.errorContentTooShortError)rinstall_opener build_openerRequestOpenerDirector BaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessor ProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandler HTTPHandler HTTPSHandler FileHandler FTPHandlerCacheFTPHandlerUnknownHandlerURLError HTTPError)urlliburllib2r?r>c #Kt}tjD]N\}}|D]D}|\}}t|}d|d|dd|d|d|dd|zd |zd |d |d FPyw) Nzimport_name< 'import' (module=zB | dotted_as_names< any* module=z any* >) > zimport_from< 'from' mod_member=z* 'import' ( member=z | import_as_name< member=z] 'as' any > | import_as_names< members=any* >) > zIimport_from< 'from' module_star=%r 'import' star='*' > ztimport_name< 'import' dotted_as_name< module_as=%r 'as' any > > zpower< bare_with_attr=z trailer< '.' member=z > any* > )setMAPPINGitemsr)bare old_modulechangeschange new_modulememberss 1/usr/lib64/python3.12/lib2to3/fixes/fix_urllib.py build_patternrL0s 5D&}} GF"( J )G$Z1 1 $Wg7 7"# #"# # $W. .! /sA1A3c*eZdZdZdZdZdZdZy) FixUrllibc4djtS)N|)joinrL)selfs rKrLzFixUrllib.build_patternIsxx ((cR|jd}|j}g}t|jddD]+}|j t |d|t g-|jt t|jdd||j|y)zTransform for the basic import case. Replaces the old import name with a comma separated list of its replacements. moduleNrprefix) getrXrCvalueextendrrappendreplace)rRnoderesults import_modprefnamesnames rKtransform_importzFixUrllib.transform_importLs [[*   J,,-cr2D LL$tAwt4eg> ?3 T'*"2"23B7:4HI5!rScD|jd}|j}|jd}|ryt|tr|d}d}t|j D]}|j |dvs|d}n|r|j t||y|j|dyg}i} |d} | D]}|jtjk(r3|jd j } |jdj } n|j } d} | d k7sgt|j D]I}| |dvs |d| vr|j|d| j|dgj|Kg} t|}d }d }|D]}| |}g}|dd D]3}|j!||||jt#5|j!||d |t%||}|r%|j&jj)|r||_| j|d}| rMg}| dd D]}|j!|t+g|j| d |j |y|j|dy)zTransform for imports of specific module elements. Replaces the module to be imported from with the appropriate new module. mod_membermemberrNr@rW!This is an invalid module elementrJ,Tc\|jtjk(rxt|jdj ||jdj |jdj g}ttj|gSt|j |gS)NrrWr@ri)typer import_as_namerchildrenrZcloner )rcrXkidss rK handle_namez/FixUrllib.transform_member..handle_names99 3 33 q!1!7!7G MM!,224 MM!,2246D!!4!4d;<<TZZ788rSrVFzAll module elements are invalid)rYrX isinstancelistrCrZr]rcannot_convertrlr rmrnr\ setdefaultr r[rrparentendswithr)rRr^r_rfrargnew_namerHmodulesmod_dictrJas_name member_name new_nodes indentationfirstrqrUeltsrbeltnewnodesnew_nodes rKtransform_memberzFixUrllib.transform_member\s [[.   X& &$'H!*"2"23<<6!9,%ayH4""4#>?##D*MN GHi(G!;;$"5"55$ooa066G"(//!"4":":K"(,,K"G#%")**:*:";&&)3%ay8 'vay 9$//q 2>EEfM #<"I*40KE 9"'9CLLS$!78LL)% [b489 / 2 2 ; ;K H!,CJ  %" )#2HLL(GI!67!/ Yr]+ U###D*KLrScL|jd}|jd}d}t|tr|d}t|jD]}|j|dvs|d}n|r'|j t ||jy|j|dy)z.Transform for calls to module members in code.bare_with_attrrgNrr@rWrh) rYrrrsrCrZr]rrXrt)rRr^r_ module_dotrgrxrHs rK transform_dotzFixUrllib.transform_dots[[!12 X& fd #AYFj../F||vay(!!90    tH+5+<+< > ?   &I JrScl|jdr|j||y|jdr|j||y|jdr|j||y|jdr|j |dy|jdr|j |dyy)NrUrfr module_starzCannot handle star imports. module_asz#This module is now multiple modules)rYrdrrrt)rRr^r_s rK transformzFixUrllib.transforms ;;x  ! !$ 0 [[ &  ! !$ 0 [[) *   tW - [[ '   &C D [[ %   &K L&rSN)__name__ __module__ __qualname__rLrdrrrrSrKrNrNGs )" JMXK" MrSrNN)__doc__lib2to3.fixes.fix_importsrrlib2to3.fixer_utilrrrrr r r rCr\rLrNrrSrKrs=>>>"CD ?@  +,. /" ' ( -/  B '(+A./..}M }MrS__pycache__/fix_metaclass.cpython-312.pyc000064400000024276152525335740014327 0ustar00 {|j dZddlmZddlmZddlmZmZmZdZ dZ dZ dZ d Z d ZGd d ejZy )aFixer for __metaclass__ = X -> (metaclass=X) methods. The various forms of classef (inherits nothing, inherits once, inherits many) don't parse the same in the CST so we look at ALL classes for a __metaclass__ and if we find one normalize the inherits to all be an arglist. For one-liner classes ('class X: pass') there is no indent/dedent so we normalize those into having a suite. Moving the __metaclass__ into the classdef can also cause the class body to be empty so there is some special casing for that as well. This fixer also tries very hard to keep original indenting and spacing in all those corner cases. ) fixer_base)token)symsNodeLeafc|jD]}|jtjk(r t |cS|jtj k(sK|jsX|jd}|jtj k(s|js|jd}t|ts|jdk(syy)z we have to check the cls_node without changing it. There are two possibilities: 1) clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta') 2) clsdef => simple_stmt => expr_stmt => Leaf('__meta') __metaclass__TF) childrentypersuite has_metaclass simple_stmt expr_stmt isinstancervalue)parentnode expr_node left_sides 4/usr/lib64/python3.12/lib2to3/fixes/fix_metaclass.pyrrs  99 " & & YY$** *t}} a(I~~/I4F4F%..q1 i.!?:  c|jD]!}|jtjk(s!yt |jD]$\}}|jt j k(s$n tdttjg}|j|dzdrT|j|dz}|j|j|j|j|dzdrT|j||}y)zf one-line classes don't get a suite in the parse tree so we add one to normalize the tree NzNo class suite and no ':'!) r r rr enumeraterCOLON ValueErrorr append_childcloneremove)cls_noderir move_nodes rfixup_parse_treer$-s!! 99 " " X../4 99 # 0566 R E   AaCD !%%ac*  9??,-   AaCD ! % Drcxt|jD]$\}}|jtjk(s$ny|j t tjg}t tj|g}|j|drN|j|}|j|j|j |j|drN|j|||jdjd}|jdjd} | j|_ y)z if there is a semi-colon all the parts count as part of the same simple_stmt. We just want the __metaclass__ part so we move everything after the semi-colon into its own simple_stmt node Nr )rr r rSEMIr rrrrrr insert_childprefix) rr" stmt_nodesemi_indrnew_exprnew_stmtr# new_leaf1 old_leaf1s rfixup_simple_stmtr/Gs  $I$6$67$ 99 " 8 KKMDNNB'HD$$xj1H   XY '&&x0 ioo/0   XY ' 8$!!!$--a0I""1%..q1I ''Irc|jrI|jdjtjk(r|jdj yyy)N)r r rNEWLINEr )rs rremove_trailing_newliner3_s@ }}r*//5==@ b  "A}rc#6K|jD]!}|jtjk(s!n t dt t |jD]\}}|jtjk(s$|js1|jd}|jtjk(s^|jsk|jd}t|ts|jdk(st|||t||||fyw)NzNo class suite!r r )r r rr rlistrrrrrrr/r3)r!rr" simple_noder left_nodes r find_metasr8ds!! 99 " "*++y78;   t// /K4H4H#,,Q/I~~/I4F4F%..q1 i.!?:%dA{;+K8K009s/-DAD D ,D: DD'D7"Dc~|jddd}|r1|j}|jtjk(rn|r1|rv|j}t |t r1|jtjk7r|jrd|_y|j|jddd|ruyy)z If an INDENT is followed by a thing with a prefix then nuke the prefix Otherwise we get in trouble when removing __metaclass__ at suite start Nr1) r popr rINDENTrrDEDENTr(extend)r kidsrs r fixup_indentr@{s >>$B$ D xxz 99 $   xxz dD !dii5<<&?{{   KK dd+ , rceZdZdZdZdZy) FixMetaclassTz classdef ct|syt|d}t|D]\}}}|}|j|jdj }t |jdk(r|jdj tjk(r|jd}n4|jdj} ttj| g}|jd|nt |jdk(r-ttjg}|jd|nt |jdk(rttjg}|jdttjd|jd||jdttj dn t#d |jdjd} d | _| j&} |jr1|j)ttj*d d | _nd | _|jd} | j tj,k(sJd | jd_d | jd_|j)|t/|js^|jt|d} | | _|j)| |j)ttj0dyt |jdkDr|jdj tj2k(rt|jdj tj4k(rIt|d} |jd| |jdttj0dyyyy)Nr r)(zUnexpected class definition metaclass, r:rpass r1)rr$r8r r r lenrarglistrr set_childr'rrRPARLPARrrr(rCOMMArr@r2r<r=)selfrresultslast_metaclassr r"stmt text_typerQrmeta_txtorig_meta_prefixr pass_leafs r transformzFixMetaclass.transformsT" (.NE1d!N KKM/MM!$))  t}}  "}}Q$$ 4--*q)//1t||fX6q'*  1 $4<<,G   a )  1 $4<<,G   aejj#!6 7   a )   aejj#!6 7:; ;"**1-66q9$#??     ekk3!7 8!HO HO#++A. ~~///') 1$') 1$^,U~~ LLNY/I/I    i (   d5==$7 8  1 $..$))U\\9..$))U\\9Y/I   r9 -   r4 t#< = ::%rN)__name__ __module__ __qualname__ BM_compatiblePATTERNr^rrrBrBsMGL>rrBN)__doc__r:rpygramr fixer_utilrrrrr$r/r3r8r@BaseFixrBrdrrrisJ())&4(0# 1.-,S>:%%S>r__pycache__/fix_apply.cpython-312.opt-2.pyc000064400000005156152525335740014434 0ustar00 {|j* h ddlmZddlmZddlmZddlmZmZmZGddejZ y))pytree)token) fixer_base)CallComma parenthesizeceZdZdZdZdZy)FixApplyTa. power< 'apply' trailer< '(' arglist< (not argument ')' > > c|j}|d}|d}|jd}|r?|j|jjk(r|jdj dvry|r@|j|jjk(r|jdj dk(ry|j }|j}|jtj|jfvrN|j|jk7s*|jdjtjk(r t|}d|_|j}d|_||j}d|_tjtj d |g}|H|j#t%tjtjd|gd |d_t'||| S) Nfuncargskwds>***rr )prefix)symsgettypeargumentchildrenvaluerclonerNAMEatompower DOUBLESTARrrLeafSTARextendrr) selfnoderesultsrr r rr l_newargss 0/usr/lib64/python3.12/lib2to3/fixes/fix_apply.py transformzFixApply.transformsyyvv{{6"  TYY/// a &&+5 TYY$))"4"44]]1%++t3 zz| IIejj$))4 4 YY$** $ ]]2  # #u'7'7 7%D zz|  ::r4s-9 2264z!!64r*__pycache__/fix_urllib.cpython-312.pyc000064400000021673152525335740013642 0ustar00 {|j dZddlmZmZddlmZmZmZmZm Z m Z m Z dgdfdgdfdd gfgdgd fdd d gfgd Z e dje dddZGddeZy)zFix changes imports of urllib which are now incompatible. This is rather similar to fix_imports, but because of the more complex nature of the fixing for urllib, it has its own fixer. ) alternates FixImports)NameComma FromImportNewlinefind_indentationNodesymszurllib.request) URLopenerFancyURLopener urlretrieve _urlopenerurlopen urlcleanup pathname2url url2pathname getproxiesz urllib.parse)quote quote_plusunquote unquote_plus urlencode splitattr splithost splitnport splitpasswd splitport splitquerysplittag splittype splituser splitvaluez urllib.errorContentTooShortError)rinstall_opener build_openerRequestOpenerDirector BaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessor ProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandler HTTPHandler HTTPSHandler FileHandler FTPHandlerCacheFTPHandlerUnknownHandlerURLError HTTPError)urlliburllib2r?r>c #Kt}tjD]N\}}|D]D}|\}}t|}d|d|dd|d|d|dd|zd |zd |d |d FPyw) Nzimport_name< 'import' (module=zB | dotted_as_names< any* module=z any* >) > zimport_from< 'from' mod_member=z* 'import' ( member=z | import_as_name< member=z] 'as' any > | import_as_names< members=any* >) > zIimport_from< 'from' module_star=%r 'import' star='*' > ztimport_name< 'import' dotted_as_name< module_as=%r 'as' any > > zpower< bare_with_attr=z trailer< '.' member=z > any* > )setMAPPINGitemsr)bare old_modulechangeschange new_modulememberss 1/usr/lib64/python3.12/lib2to3/fixes/fix_urllib.py build_patternrL0s 5D&}} GF"( J )G$Z1 1 $Wg7 7"# #"# # $W. .! /sA1A3c*eZdZdZdZdZdZdZy) FixUrllibc4djtS)N|)joinrL)selfs rKrLzFixUrllib.build_patternIsxx ((cR|jd}|j}g}t|jddD]+}|j t |d|t g-|jt t|jdd||j|y)zTransform for the basic import case. Replaces the old import name with a comma separated list of its replacements. moduleNrprefix) getrXrCvalueextendrrappendreplace)rRnoderesults import_modprefnamesnames rKtransform_importzFixUrllib.transform_importLs [[*   J,,-cr2D LL$tAwt4eg> ?3 T'*"2"23B7:4HI5!rScD|jd}|j}|jd}|ryt|tr|d}d}t|j D]}|j |dvs|d}n|r|j t||y|j|dyg}i} |d} | D]}|jtjk(r3|jd j } |jdj } n|j } d} | d k7sgt|j D]I}| |dvs |d| vr|j|d| j|dgj|Kg} t|}d }d }|D]}| |}g}|dd D]3}|j!||||jt#5|j!||d |t%||}|r%|j&jj)|r||_| j|d}| rMg}| dd D]}|j!|t+g|j| d |j |y|j|dy)zTransform for imports of specific module elements. Replaces the module to be imported from with the appropriate new module. mod_membermemberrNr@rW!This is an invalid module elementrJ,Tc\|jtjk(rxt|jdj ||jdj |jdj g}ttj|gSt|j |gS)NrrWr@ri)typer import_as_namerchildrenrZcloner )rcrXkidss rK handle_namez/FixUrllib.transform_member..handle_names99 3 33 q!1!7!7G MM!,224 MM!,2246D!!4!4d;<<TZZ788rSrVFzAll module elements are invalid)rYrX isinstancelistrCrZr]rcannot_convertrlr rmrnr\ setdefaultr r[rrparentendswithr)rRr^r_rfrargnew_namerHmodulesmod_dictrJas_name member_name new_nodes indentationfirstrqrUeltsrbeltnewnodesnew_nodes rKtransform_memberzFixUrllib.transform_member\s [[.   X& &$'H!*"2"23<<6!9,%ayH4""4#>?##D*MN GHi(G!;;$"5"55$ooa066G"(//!"4":":K"(,,K"G#%")**:*:";&&)3%ay8 'vay 9$//q 2>EEfM #<"I*40KE 9"'9CLLS$!78LL)% [b489 / 2 2 ; ;K H!,CJ  %" )#2HLL(GI!67!/ Yr]+ U###D*KLrScL|jd}|jd}d}t|tr|d}t|jD]}|j|dvs|d}n|r'|j t ||jy|j|dy)z.Transform for calls to module members in code.bare_with_attrrgNrr@rWrh) rYrrrsrCrZr]rrXrt)rRr^r_ module_dotrgrxrHs rK transform_dotzFixUrllib.transform_dots[[!12 X& fd #AYFj../F||vay(!!90    tH+5+<+< > ?   &I JrScl|jdr|j||y|jdr|j||y|jdr|j||y|jdr|j |dy|jdr|j |dyy)NrUrfr module_starzCannot handle star imports. module_asz#This module is now multiple modules)rYrdrrrt)rRr^r_s rK transformzFixUrllib.transforms ;;x  ! !$ 0 [[ &  ! !$ 0 [[) *   tW - [[ '   &C D [[ %   &K L&rSN)__name__ __module__ __qualname__rLrdrrrrSrKrNrNGs )" JMXK" MrSrNN)__doc__lib2to3.fixes.fix_importsrrlib2to3.fixer_utilrrrrr r r rCr\rLrNrrSrKrs=>>>"CD ?@  +,. /" ' ( -/  B '(+A./..}M }MrS__pycache__/fix_itertools_imports.cpython-312.opt-2.pyc000064400000004762152525335740017112 0ustar00 {|j&P ddlmZddlmZmZmZGddej Zy)) fixer_base) BlankLinesymstokenc*eZdZdZdezZdZy)FixItertoolsImportsTzT import_from< 'from' 'itertools' 'import' imports=any > c|d}|jtjk(s |js|g}n |j}|dddD]}|jtj k(r|j }|}n.|jtjk(ry|jd}|j }|dvrd|_|j|dvs|j|ddk(rdnd |_|jddxs|g}d } |D]7}| r.|jtjk(r|j3| d z} 9|ra|d jtjk(rA|jj|r!|d jtjk(rA|js t|d dr |j|j} t}| |_|Sy) Nimportsr)imapizipifilter) ifilterfalse izip_longestf filterfalse zip_longestTvalue)typerimport_as_namechildrenrNAMErSTARremovechangedCOMMApopgetattrparentprefixr) selfnoderesultsr rchildmember name_node member_name remove_commaps r9s%G551*,,1r.__pycache__/fix_raise.cpython-312.pyc000064400000006467152525335740013460 0ustar00 {|jn rdZddlmZddlmZddlmZddlmZmZm Z m Z m Z GddejZ y) a[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. )pytree)token) fixer_base)NameCallAttrArgListis_tupleceZdZdZdZdZy)FixRaiseTzB raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] > cv|j}|dj}|jtjk(rd}|j ||yt |rHt |r6|jdjdj}t |r6d|_d|vr>tj|jtd|g}|j|_|S|dj}t |r+|jddDcgc]}|j} }n d |_|g} d |vr|d j} d | _|} |jtjk7s|jd k7r t|| } t!| td t#| ggz} tj|j$tdg| z}|j|_|Stj|jtdt|| g|j Scc}w)Nexcz+Python 3 does not support string exceptions valraisetbNonewith_traceback)prefix)symsclonetyperSTRINGcannot_convertr childrenrrNode raise_stmtrNAMEvaluerrr simple_stmt) selfnoderesultsrrmsgnewrcargsrewith_tbs 0/usr/lib64/python3.12/lib2to3/fixes/fix_raise.py transformzFixRaise.transform&syyen""$ 88u|| #?C   c *  C=3-ll1o..q17793-CJ  ++dooW s/CDCCJJen""$ C='*||Ab'9:'9!AGGI'9D:CJ5D 7?$$&BBIAxx5::%f)<dO1d#345"GG++d..g'0IJCCJJ;;t $W tC?&*kk3 3);sH6N)__name__ __module__ __qualname__ BM_compatiblePATTERNr/r.r r sMG43r6r N)__doc__rrpgen2rr fixer_utilrrrr r BaseFixr r5r6r.r;s-2<<;3z!!;3r6__pycache__/fix_standarderror.cpython-312.opt-2.pyc000064400000001417152525335740016155 0ustar00 {|jH ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZy)FixStandarderrorTz- 'StandardError' c0td|jS)N Exception)prefix)rr )selfnoderesultss 8/usr/lib64/python3.12/lib2to3/fixes/fix_standarderror.py transformzFixStandarderror.transformsK 44N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrr rr sMG5rrN)r fixer_utilrBaseFixrrrr rs$,5z))5r__pycache__/fix_tuple_params.cpython-312.opt-2.pyc000064400000016514152525335740016003 0ustar00 {|j ddlmZddlmZddlmZddlmZmZmZm Z m Z m Z dZ GddejZdZd Zgd fd Zd Zy ) )pytree)token) fixer_base)AssignNameNewlineNumber Subscriptsymsct|tjxr*|jdjt j k(S)N) isinstancerNodechildrentyperSTRING)stmts 7/usr/lib64/python3.12/lib2to3/fixes/fix_tuple_params.py is_docstringrs5 dFKK ( 1 ==  ELL 01c$eZdZdZdZdZdZdZy)FixTupleParamsTa funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c d|vrj||Sg |d}|d}|djdjtjk(r)d}|djdj }t n(d}d}tjtjd d fd }|jtjk(r ||ne|jtjk(rHt|jD]0\}} | jtjk(s$|| |dkD 2 sy D] } |d| _ |} |dk(r d d_n*t|dj|r| d_|dz} D] } |d| _  |dj| | t!| dz| t# zdzD]}||dj|_|dj%y) Nlambdasuiteargsr rz; cTtj}|j}d|_t ||j}|rd|_|j |j tjtj|jgy)Nr ) rnew_namecloneprefixrreplaceappendrrr simple_stmt) tuple_arg add_prefixnargrend new_linesselfs r handle_tuplez.FixTupleParams.transform..handle_tupleCsT]]_%A//#CCJ#qwwy)D   a   V[[)9)9*. )<> ?r)r)r!)F)transform_lambdarrrINDENTvaluerrLeafr tfpdef typedargslist enumerateparentr$rrangelenchanged)r.noderesultsrrstartindentr/ir+lineafterr,r-s` @@r transformzFixTupleParams.transform.s w ((w7 7  v 8  Q  $ $ 4E1X&&q)//F)CEF++ellB/C ? 99 #   YY$,, ,#DMM2388t{{*!!a%9 3  D(DK A:"%IaL  %(++E2 3"(IaL AIED(DK)2a%&uQwc)n 4Q 67A*0E!H  a '8 arc |d}|d}t|d}|jtjk(r)|j }d|_|j |yt|}t|}|jt|}t|d} |j | j |jD]} | jtjk(s!| j|vs0|| jD cgc]} | j } } tjt j"| j g| z} | j | _| j | ycc} w)Nrbodyinnerr!)r$) simplify_argsrrNAMEr#r$r% find_params map_to_indexr" tuple_namer post_orderr2rrr power)r.r;r<rrDrEparamsto_indextup_name new_paramr*c subscriptsnews rr0zFixTupleParams.transform_lambdans-vvgg./ :: #KKMEEL LL  T"'==F!34#.  Y__&'"Avv#8(;19!''1BC1BAaggi1B Ckk$**#,??#4"5 "BDXX  # #Cs FN)__name__ __module__ __qualname__ run_order BM_compatiblePATTERNrBr0rrrrsIMG>@rrcL|jtjtjfvr|S|jtj k(rL|jtj k(r-|j d}|jtj k(r-|Std|z)NrzReceived unexpected node %s)rr vfplistrrGvfpdefr RuntimeError)r;s rrFrFsx yyT\\5::.. dkk !ii4;;&==#Dii4;;& 4t; <}t|tr|jt|.|j|@dj |S)N_)rrdr&rJjoin)relrfs rrJrJsF A c4 HHZ_ % HHSM  88A;r)rrpgen2rr fixer_utilrrrr r r rBaseFixrrFrHrIrJrZrrrosQ*GG1gZ''gX =L%'$  r__pycache__/fix_types.cpython-312.opt-1.pyc000064400000004345152525335740014451 0ustar00 {|jdZddlmZddlmZidddddd d d d d dd ddddddddddddddddddd d!d"d#d$d d%d&d'ZeDcgc]}d(|z c}ZGd)d*ejZy+cc}w),aFixer for removing uses of the types module. These work for only the known names in the types module. The forms above can include types. or not. ie, It is assumed the module is imported either as: import types from types import ... # either * or specific types The import statements are not modified. There should be another fixer that handles at least the following constants: type([]) -> list type(()) -> tuple type('') -> str ) fixer_base)Name BooleanTypebool BufferType memoryview ClassTypetype ComplexTypecomplexDictTypedictDictionaryType EllipsisTypeztype(Ellipsis) FloatTypefloatIntTypeintListTypelistLongType ObjectTypeobjectNoneTypez type(None)NotImplementedTypeztype(NotImplemented) SliceTypeslice StringTypebytes StringTypesz(str,)tuplestrrange) TupleTypeTypeType UnicodeType XRangeTypez)power< 'types' trailer< '.' name='%s' > >c8eZdZdZdj eZdZy)FixTypesT|cztj|dj}|rt||jSy)Nname)prefix) _TYPE_MAPPINGgetvaluerr-)selfnoderesults new_values 0/usr/lib64/python3.12/lib2to3/fixes/fix_types.py transformzFixTypes.transform9s3!%%gfo&;&;<  $++6 6N)__name__ __module__ __qualname__ BM_compatiblejoin_patsPATTERNr6r7r5r)r)5sMhhuoGr7r)N) __doc__r fixer_utilrr.r=BaseFixr))ts0r5rEs,&| f   F  6  ) W 5 F E x L 5 g!" g#$ %&- 2CPP-Q 4q 8-Pz!! Qs A4__pycache__/fix_getcwdu.cpython-312.opt-2.pyc000064400000001555152525335740014750 0ustar00 {|jH ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZy) FixGetcwduTzR power< 'os' trailer< dot='.' name='getcwdu' > any* > cZ|d}|jtd|jy)Nnamegetcwd)prefix)replacerr )selfnoderesultsrs 2/usr/lib64/python3.12/lib2to3/fixes/fix_getcwdu.py transformzFixGetcwdu.transforms"v T(4;;78N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG9rrN)r fixer_utilrBaseFixrrrrrs$  9## 9r__pycache__/fix_buffer.cpython-312.opt-1.pyc000064400000001702152525335740014550 0ustar00 {|jNJdZddlmZddlmZGddej Zy)z4Fixer that changes buffer(...) into memoryview(...).) fixer_base)NameceZdZdZdZdZdZy) FixBufferTzR power< name='buffer' trailer< '(' [any] ')' > any* > cZ|d}|jtd|jy)Nname memoryview)prefix)replacerr )selfnoderesultsrs 1/usr/lib64/python3.12/lib2to3/fixes/fix_buffer.py transformzFixBuffer.transforms"v T,t{{;<N)__name__ __module__ __qualname__ BM_compatibleexplicitPATTERNrrrrr sMHG=rrN)__doc__r fixer_utilrBaseFixrrrrrs$; = "" =r__pycache__/fix_basestring.cpython-312.opt-1.pyc000064400000001404152525335740015437 0ustar00 {|j@JdZddlmZddlmZGddej Zy)zFixer for basestring -> str.) fixer_base)NameceZdZdZdZdZy) FixBasestringTz 'basestring'c0td|jS)Nstr)prefix)rr )selfnoderesultss 5/usr/lib64/python3.12/lib2to3/fixes/fix_basestring.py transformzFixBasestring.transform sE$++..N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrr rrsMG/rrN)__doc__r fixer_utilrBaseFixrrrr rs""/J&&/r__pycache__/fix_ne.cpython-312.opt-1.pyc000064400000002015152525335740013677 0ustar00 {|j;VdZddlmZddlmZddlmZGddej Zy)zFixer that turns <> into !=.)pytree)token) fixer_basec0eZdZejZdZdZy)FixNec |jdk(S)Nz<>)value)selfnodes -/usr/lib64/python3.12/lib2to3/fixes/fix_ne.pymatchz FixNe.matchszzT!!cftjtjd|j}|S)Nz!=)prefix)rLeafrNOTEQUALr)r r resultsnews r transformzFixNe.transforms!kk%..$t{{C rN)__name__ __module__ __qualname__rr _accept_typer rrr rr s>>L"rrN)__doc__rpgen2rrBaseFixrrrr rs'# J   r__pycache__/fix_reload.cpython-312.opt-1.pyc000064400000002612152525335740014546 0ustar00 {|j9NdZddlmZddlmZmZGddej Zy)z5Fixer for reload(). reload(s) -> importlib.reload(s)) fixer_base) ImportAndCall touch_importceZdZdZdZdZdZy) FixReloadTprez power< 'reload' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > c|rF|d}|r?|j|jjk(r|jdjdvryd}t |||}t dd||S)Nobj>***) importlibreloadr)typesymsargumentchildrenvaluerr)selfnoderesultsr namesnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_reload.py transformzFixReload.transformsf %.CHH 2 22LLO))[8'D'51T;- N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrr sM EG rrN)__doc__r fixer_utilrrBaseFixrr#rrr(s$$ 4 ""r__pycache__/fix_throw.cpython-312.pyc000064400000004617152525335740013513 0ustar00 {|j.rdZddlmZddlmZddlmZddlmZmZm Z m Z m Z GddejZ y) zFixer for generator.throw(E, V, T). g.throw(E) -> g.throw(E) g.throw(E, V) -> g.throw(E(V)) g.throw(E, V, T) -> g.throw(E(V).with_traceback(T)) g.throw("foo"[, V[, T]]) will warn about string exceptions.)pytree)token) fixer_base)NameCallArgListAttris_tupleceZdZdZdZdZy)FixThrowTz power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > c|j}|dj}|jtjur|j |dy|j d}|y|j}t|r+|jddDcgc]}|j}}n d|_ |g}|d}d|vry|dj} d| _ t||} t| td t| ggz} |jtj |j"| y|jt||ycc}w) Nexcz+Python 3 does not support string exceptionsvalargstbwith_traceback)symsclonetyperSTRINGcannot_convertgetr childrenprefixrr rrreplacerNodepower) selfnoderesultsrrrcr throw_argsrewith_tbs 0/usr/lib64/python3.12/lib2to3/fixes/fix_throw.py transformzFixThrow.transforms)yyen""$ 88u|| #   &S T kk%  ; iik C='*||Ab'9:'9!AGGI'9D:CJ5DV_ 7?$$&BBIS$A1d#345"GG   v{{4::w? @   tC /;sEN)__name__ __module__ __qualname__ BM_compatiblePATTERNr)r(r r sMG0r0r N)__doc__rrpgen2rr fixer_utilrrrr r BaseFixr r/r0r(r5s-?<<(0z!!(0r0__pycache__/fix_buffer.cpython-312.opt-2.pyc000064400000001601152525335740014547 0ustar00 {|jNH ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZdZy) FixBufferTzR power< name='buffer' trailer< '(' [any] ')' > any* > cZ|d}|jtd|jy)Nname memoryview)prefix)replacerr )selfnoderesultsrs 1/usr/lib64/python3.12/lib2to3/fixes/fix_buffer.py transformzFixBuffer.transforms"v T,t{{;<N)__name__ __module__ __qualname__ BM_compatibleexplicitPATTERNrrrrr sMHG=rrN)r fixer_utilrBaseFixrrrrrs$; = "" =r__pycache__/fix_xrange.cpython-312.opt-1.pyc000064400000007344152525335740014573 0ustar00 {|j ^dZddlmZddlmZmZmZddlmZGddejZ y)z/Fixer that changes xrange(...) into range(...).) fixer_base)NameCallconsuming_calls)patcompceZdZdZdZfdZdZdZdZdZ dZ e je Z d Ze jeZd ZxZS) FixXrangeTz power< (name='range'|name='xrange') trailer< '(' args=any ')' > rest=any* > cLtt| ||t|_yN)superr start_treesettransformed_xranges)selftreefilename __class__s 1/usr/lib64/python3.12/lib2to3/fixes/fix_xrange.pyr zFixXrange.start_trees i)$9#&5 cd|_yr )r)rrrs r finish_treezFixXrange.finish_trees #' rc|d}|jdk(r|j||S|jdk(r|j||Stt |)Nnamexrangerange)valuetransform_xrangetransform_range ValueErrorreprrnoderesultsrs r transformzFixXrange.transformsXv :: !((w7 7 ZZ7 "''g6 6T$Z( (rc|d}|jtd|j|jj t |y)Nrrprefix)replacerr'raddidr!s rrzFixXrange.transform_xrange$s:v T'$++67   $$RX.rc"t||jvrx|j|sftt d|dj g}tt d|g|j }|dD]}|j||Syy)Nrargslistr&rest)r*rin_special_contextrrcloner' append_child)rr"r# range_call list_callns rrzFixXrange.transform_range*s tHD44 4''-d7mgfo.C.C.E-FGJT&\J<$(KK1IV_&&q)% . 5rz3power< func=NAME trailer< '(' node=any ')' > any* >zfor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > | comparison< any 'in' node=any any*> cB|jyi}|jjL|jj|jj|r|d|ur|djtvS|j j|j|xr|d|uS)NFr"func)parentp1matchrrp2)rr"r#s rr/zFixXrange.in_special_context?s ;;  KK   *ww}}T[[//9v$&6?((O; ;ww}}T[['2Nwv$7NNr)__name__ __module__ __qualname__ BM_compatiblePATTERNr rr$rrP1rcompile_patternr8P2r:r/ __classcell__)rs@rr r sbMG )()/  ?B   $B B !  $B Orr N) __doc__r fixer_utilrrrrBaseFixr rrrIs,644=O ""=Or__pycache__/fix_tuple_params.cpython-312.opt-1.pyc000064400000017226152525335740016003 0ustar00 {|jdZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z dZ GddejZd Zd Zgd fd Zd Zy )a:Fixer for function definitions with tuple parameters. def func(((a, b), c), d): ... -> def func(x, d): ((a, b), c) = x ... It will also support lambdas: lambda (x, y): x + y -> lambda t: t[0] + t[1] # The parens are a syntax error in Python 3 lambda (x): x + y -> lambda x: x + y )pytree)token) fixer_base)AssignNameNewlineNumber Subscriptsymsct|tjxr*|jdjt j k(S)N) isinstancerNodechildrentyperSTRING)stmts 7/usr/lib64/python3.12/lib2to3/fixes/fix_tuple_params.py is_docstringrs5 dFKK ( 1 ==  ELL 01c$eZdZdZdZdZdZdZy)FixTupleParamsTa funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c d|vrj||Sg |d}|d}|djdjtjk(r)d}|djdj }t n(d}d}tjtjd d fd }|jtjk(r ||ne|jtjk(rHt|jD]0\}} | jtjk(s$|| |dkD 2 sy D] } |d| _ |} |dk(r d d_n*t|dj|r| d_|dz} D] } |d| _  |dj| | t!| dz| t# zdzD]}||dj|_|dj%y) Nlambdasuiteargsr rz; cTtj}|j}d|_t ||j}|rd|_|j |j tjtj|jgy)Nr ) rnew_namecloneprefixrreplaceappendrrr simple_stmt) tuple_arg add_prefixnargrend new_linesselfs r handle_tuplez.FixTupleParams.transform..handle_tupleCsT]]_%A//#CCJ#qwwy)D   a   V[[)9)9*. )<> ?r)r)r!)F)transform_lambdarrrINDENTvaluerrLeafr tfpdef typedargslist enumerateparentr$rrangelenchanged)r.noderesultsrrstartindentr/ir+lineafterr,r-s` @@r transformzFixTupleParams.transform.s w ((w7 7  v 8  Q  $ $ 4E1X&&q)//F)CEF++ellB/C ? 99 #   YY$,, ,#DMM2388t{{*!!a%9 3  D(DK A:"%IaL  %(++E2 3"(IaL AIED(DK)2a%&uQwc)n 4Q 67A*0E!H  a '8 arc |d}|d}t|d}|jtjk(r)|j }d|_|j |yt|}t|}|jt|}t|d} |j | j |jD]} | jtjk(s!| j|vs0|| jD cgc]} | j } } tjt j"| j g| z} | j | _| j | ycc} w)Nrbodyinnerr!)r$) simplify_argsrrNAMEr#r$r% find_params map_to_indexr" tuple_namer post_orderr2rrr power)r.r;r<rrDrEparamsto_indextup_name new_paramr*c subscriptsnews rr0zFixTupleParams.transform_lambdans-vvgg./ :: #KKMEEL LL  T"'==F!34#.  Y__&'"Avv#8(;19!''1BC1BAaggi1B Ckk$**#,??#4"5 "BDXX  # #Cs FN)__name__ __module__ __qualname__ run_order BM_compatiblePATTERNrBr0rrrrsIMG>@rrcL|jtjtjfvr|S|jtj k(rL|jtj k(r-|j d}|jtj k(r-|Std|z)NrzReceived unexpected node %s)rr vfplistrrGvfpdefr RuntimeError)r;s rrFrFsx yyT\\5::.. dkk !ii4;;&==#Dii4;;& 4t; <}t|tr|jt|.|j|@dj |S)N_)rrdr&rJjoin)relrfs rrJrJsF A c4 HHZ_ % HHSM  88A;r)__doc__rrpgen2rr fixer_utilrrrr r r rBaseFixrrFrHrIrJrZrrrpsQ*GG1gZ''gX =L%'$  r__pycache__/fix_itertools.cpython-312.opt-2.pyc000064400000003122152525335740015322 0ustar00 {|j H ddlmZddlmZGddejZy)) fixer_base)Namec2eZdZdZdZdezZdZdZy) FixItertoolsTz7('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')z power< it='itertools' trailer< dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > > | power< func=%(it_funcs)s trailer< '(' [any] ')' > > cPd}|dd}d|vr_|jdvrQ|d|d}}|j}|j|j|jj ||xs |j}|j t |jdd|y)Nfuncit) ifilterfalse izip_longestdot)prefix)valuerremoveparentreplacer)selfnoderesultsrr rr s 4/usr/lib64/python3.12/lib2to3/fixes/fix_itertools.py transformzFixItertools.transformsvq! GO JJ> >u~wt}CYYF IIK JJL KK   %&4;; T$**QR.89N) __name__ __module__ __qualname__ BM_compatibleit_funcslocalsPATTERN run_orderrrrrrs+MHH H GI:rrN)r fixer_utilrBaseFixrr#rrr's$::%%:r__pycache__/fix_zip.cpython-312.pyc000064400000003671152525335740013151 0ustar00 {|j jdZddlmZddlmZddlmZddlm Z m Z m Z GddejZ y) a7 Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...) unless there exists a 'from future_builtins import zip' statement in the top-level namespace. We avoid the transformation if the zip() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. ) fixer_base)Node)python_symbols)NameArgListin_special_contextceZdZdZdZdZdZy)FixZipTzN power< 'zip' args=trailer< '(' [any] ')' > [trailers=trailer*] > zfuture_builtins.zipc|j|ryt|ry|dj}d|_g}d|vr.|dDcgc]}|j}}|D] }d|_ t t j td|gd}t t j tdt|gg|z}|j|_|Scc}w)Nargstrailerszip)prefixlist) should_skiprclonerrsymspowerrr)selfnoderesultsr rnnews ./usr/lib64/python3.12/lib2to3/fixes/fix_zip.py transformzFixZip.transforms   D !  d #v$$&   +2:+>?+>a +>H?4::U T22>4::V gsen=HI[[  @sCN)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onrrr r sMG $Gr$r N)__doc__r rpytreerpygramrr fixer_utilrrrConditionalFixr r#r$rr*s-+::Z & &r$__pycache__/fix_dict.cpython-312.opt-1.pyc000064400000010610152525335740014220 0ustar00 {|jdZddlmZddlmZddlmZddlmZmZmZddlmZejdhzZ Gdd ejZ y ) ajFixer for dict methods. d.keys() -> list(d.keys()) d.items() -> list(d.items()) d.values() -> list(d.values()) d.iterkeys() -> iter(d.keys()) d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) d.viewkeys() -> d.keys() d.viewitems() -> d.items() d.viewvalues() -> d.values() Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() or for...in!). Special contexts that apply to both: list(), sorted(), tuple() set(), any(), all(), sum(). Note: iter(d.keys()) could be written as iter(d) but since the original d.iterkeys() was also redundant we don't fix this. And there are (rare) contexts where it makes a difference (e.g. when passing it as an argument to a function that introspects the argument). )pytree)patcomp) fixer_base)NameCallDot) fixer_utilitercpeZdZdZdZdZdZejeZ dZ eje Z dZ y)FixDictTa power< head=any+ trailer< '.' method=('keys'|'items'|'values'| 'iterkeys'|'iteritems'|'itervalues'| 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > c |d}|dd}|d}|j}|j}|jd}|jd} |s| r|dd}|D cgc]} | j}} |D cgc]} | j}} | xr|j ||} |t j |jtt||jg|d jgz} t j |j| } | s#| s!d | _ tt|rdnd | g} |r$t j |j| g|z} |j| _ | Scc} wcc} w) Nheadmethodtailr view)prefixparenslist) symsvalue startswithclonein_special_contextrNodetrailerrrrpowerr)selfnoderesultsrrrr method_nameisiterisviewnspecialargsnews //usr/lib64/python3.12/lib2to3/fixes/fix_dict.py transformzFixDict.transform6spv"1%vyyll ''/''/ V%ab/K#'(4a 4(#'(4a 4((Dt66tVDv{{4<<$'E$(06 %?$@Ax(..0 22 kk$**d+6CJtfF&9C5AC ++djj3%$,7C[[  )(s E:7E?z3power< func=NAME trailer< '(' node=any ')' > any* >zmfor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > c|jyi}|jjm|jj|jj|r=|d|ur6|r|djtvS|djt j vS|sy|jj|j|xr|d|uS)NFr!func)parentp1matchr iter_exemptr consuming_callsp2)r r!r$r"s r*rzFixDict.in_special_contextZs ;;  KK   *ww}}T[[//9v$&v,, ;;v,, 0J0JJJww}}T[['2Nwv$7NNN) __name__ __module__ __qualname__ BM_compatiblePATTERNr+P1rcompile_patternr/P2r3rr4r*r r )sMMG8 ?B   $B B !  $BOr4r N) __doc__rrrrr rrrr2r1BaseFixr r=r4r*r@sH6((((F83 AOj  AOr4__pycache__/fix_sys_exc.cpython-312.opt-1.pyc000064400000003734152525335740014763 0ustar00 {|j bdZddlmZddlmZmZmZmZmZm Z m Z GddejZ y)zFixer for sys.exc_{type, value, traceback} sys.exc_type -> sys.exc_info()[0] sys.exc_value -> sys.exc_info()[1] sys.exc_traceback -> sys.exc_info()[2] ) fixer_base)AttrCallNameNumber SubscriptNodesymscTeZdZgdZdZddj deDzZdZy) FixSysExc)exc_type exc_value exc_tracebackTzN power< 'sys' trailer< dot='.' attribute=(%s) > > |c#&K|] }d|z yw)z'%s'N).0es 2/usr/lib64/python3.12/lib2to3/fixes/fix_sys_exc.py zFixSysExc.s:AVaZsc|dd}t|jj|j}t t d|j }tt d|}|dj |djd_|jt|ttj||j S)N attributeexc_info)prefixsysdot)rrindexvaluerrrrchildrenappendrr r power)selfnoderesultssys_attrrcallattrs r transformzFixSysExc.transforms;'*t}}**8>>:;D$X__=DK&%,U^%:%:Q" Ie$%DJJT[[99N)__name__ __module__ __qualname__r BM_compatiblejoinPATTERNr*rr+rr r s/9HMHH:::;G:r+r N) __doc__r fixer_utilrrrrrr r BaseFixr rr+rr6s*HHH: "":r+__pycache__/fix_buffer.cpython-312.pyc000064400000001702152525335740013611 0ustar00 {|jNJdZddlmZddlmZGddej Zy)z4Fixer that changes buffer(...) into memoryview(...).) fixer_base)NameceZdZdZdZdZdZy) FixBufferTzR power< name='buffer' trailer< '(' [any] ')' > any* > cZ|d}|jtd|jy)Nname memoryview)prefix)replacerr )selfnoderesultsrs 1/usr/lib64/python3.12/lib2to3/fixes/fix_buffer.py transformzFixBuffer.transforms"v T,t{{;<N)__name__ __module__ __qualname__ BM_compatibleexplicitPATTERNrrrrr sMHG=rrN)__doc__r fixer_utilrBaseFixrrrrrs$; = "" =r__pycache__/fix_getcwdu.cpython-312.pyc000064400000001653152525335740014007 0ustar00 {|jJdZddlmZddlmZGddej Zy)z1 Fixer that changes os.getcwdu() to os.getcwd(). ) fixer_base)NameceZdZdZdZdZy) FixGetcwduTzR power< 'os' trailer< dot='.' name='getcwdu' > any* > cZ|d}|jtd|jy)Nnamegetcwd)prefix)replacerr )selfnoderesultsrs 2/usr/lib64/python3.12/lib2to3/fixes/fix_getcwdu.py transformzFixGetcwdu.transforms"v T(4;;78N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG9rrN)__doc__r fixer_utilrBaseFixrrrrrs$  9## 9r__pycache__/__init__.cpython-312.pyc000064400000000220152525335740013223 0ustar00 {|j/y)Nr//usr/lib64/python3.12/lib2to3/fixes/__init__.pyrsr__pycache__/fix_itertools_imports.cpython-312.pyc000064400000005224152525335740016144 0ustar00 {|j&RdZddlmZddlmZmZmZGddejZy)zA Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) ) fixer_base) BlankLinesymstokenc*eZdZdZdezZdZy)FixItertoolsImportsTzT import_from< 'from' 'itertools' 'import' imports=any > c|d}|jtjk(s |js|g}n |j}|dddD]}|jtj k(r|j }|}nM|jtjk(ry|jtjk(sJ|jd}|j }|dvrd|_|j|dvs|j|ddk(rdnd |_|jddxs|g}d } |D]7}| r.|jtjk(r|j3| d z} 9|ra|d jtjk(rA|jj|r!|d jtjk(rA|js t|d dr |j|j} t}| |_|Sy) Nimportsr)imapizipifilter) ifilterfalse izip_longestf filterfalse zip_longestTvalue)typerimport_as_namechildrenrNAMErSTARremovechangedCOMMApopgetattrparentprefixr) selfnoderesultsr rchildmember name_node member_name remove_commaps r:s%G551*,,1r.__pycache__/fix_reduce.cpython-312.opt-2.pyc000064400000002105152525335740014545 0ustar00 {|jEH ddlmZddlmZGddejZy)) fixer_base touch_importceZdZdZdZdZdZy) FixReduceTpreai power< 'reduce' trailer< '(' arglist< ( (not(argument) any ',' not(argument > ctdd|y)N functoolsreducer)selfnoderesultss 1/usr/lib64/python3.12/lib2to3/fixes/fix_reduce.py transformzFixReduce.transform"s[(D1N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrrsM E G2rrN)lib2to3rlib2to3.fixer_utilrBaseFixrrrrrs$ +2 ""2r__pycache__/fix_operator.cpython-312.opt-1.pyc000064400000012761152525335740015141 0ustar00 {|jb ddZddlZddlmZddlmZmZmZm Z dZ GddejZ y)aFixer for operator functions. operator.isCallable(obj) -> callable(obj) operator.sequenceIncludes(obj) -> operator.contains(obj) operator.isSequenceType(obj) -> isinstance(obj, collections.abc.Sequence) operator.isMappingType(obj) -> isinstance(obj, collections.abc.Mapping) operator.isNumberType(obj) -> isinstance(obj, numbers.Number) operator.repeat(obj, n) -> operator.mul(obj, n) operator.irepeat(obj, n) -> operator.imul(obj, n) N) fixer_base)CallNameString touch_importcfd}|S)Nc|_|SN) invocation)fss 3/usr/lib64/python3.12/lib2to3/fixes/fix_operator.pydeczinvocation..decs )r rs` rr r s JrceZdZdZdZdZdZdeeezZdZ e dd Z e d d Z e d d Z e ddZe ddZe ddZe ddZdZdZdZy) FixOperatorTprez method=('isCallable'|'sequenceIncludes' |'isSequenceType'|'isMappingType'|'isNumberType' |'repeat'|'irepeat') z'(' obj=any ')'z power< module='operator' trailer< '.' %(methods)s > trailer< %(obj)s > > | power< %(methods)s trailer< %(obj)s > > )methodsobjc>|j||}| |||Syr ) _check_method)selfnoderesultsmethods r transformzFixOperator.transform+s,##D'2  $( ( rzoperator.contains(%s)c(|j||dS)Ncontains_handle_renamerrrs r_sequenceIncludeszFixOperator._sequenceIncludes0s""4*==rz callable(%s)cl|d}ttd|jg|jS)Nrcallableprefix)rrcloner')rrrrs r _isCallablezFixOperator._isCallable4s+enD$syy{mDKKHHrzoperator.mul(%s)c(|j||dS)Nmulr r"s r_repeatzFixOperator._repeat9s""4%88rzoperator.imul(%s)c(|j||dS)Nimulr r"s r_irepeatzFixOperator._irepeat=s""4&99rz(isinstance(%s, collections.abc.Sequence)c*|j||ddS)Ncollections.abcSequence_handle_type2abcr"s r_isSequenceTypezFixOperator._isSequenceTypeAs$$T74EzRRrz'isinstance(%s, collections.abc.Mapping)c*|j||ddS)Nr1Mappingr3r"s r_isMappingTypezFixOperator._isMappingTypeEs$$T74EyQQrzisinstance(%s, numbers.Number)c*|j||ddS)NnumbersNumberr3r"s r _isNumberTypezFixOperator._isNumberTypeIs$$T7IxHHrcB|dd}||_|jy)Nrr)valuechanged)rrrnamers rr!zFixOperator._handle_renameMs""1% rctd|||d}|jtddj||gzg}t t d||j S)Nrz, . isinstancer&)rr(rjoinrrr')rrrmoduleabcrargss rr4zFixOperator._handle_type2abcRsVT64(en VD388VSM+B$BCDD&T[[AArct|d|ddjz}t|tjj r9d|vr|St |df}|j|z}|j|d|zy)N_rrrErzYou should use '%s' here.) getattrr>rC collectionsrFCallablestrr warning)rrrrsubinvocation_strs rrzFixOperator._check_methodXs|sWX%6q%9%?%??@ fkoo66 77" 75>*,!'!2!2S!8 T#>#OPrN)__name__ __module__ __qualname__ BM_compatibleorderrrdictPATTERNrr r#r)r,r/r5r8r<r!r4rrrrrrsM EG C c2 3G) '(>)>I I"#9$9#$:%::;S<S9:R;R01I2I B rr) __doc__collections.abcrKlib2to3rlib2to3.fixer_utilrrrrr BaseFixrrrrr]s3 ??G*$$Gr__pycache__/fix_ws_comma.cpython-312.opt-1.pyc000064400000003021152525335740015100 0ustar00 {|jBVdZddlmZddlmZddlmZGddej Zy)zFixer that changes 'a ,b' into 'a, b'. This also changes '{a :b}' into '{a: b}', but does not touch other uses of colons. It does not touch other uses of whitespace. )pytree)token) fixer_baseceZdZdZdZej ejdZej ejdZ ee fZ dZ y) FixWsCommaTzH any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]> ,:c|j}d}|jD]S}||jvr*|j}|j r d|vrd|_d};|r|j}|sd|_d}U|S)NF T )clonechildrenSEPSprefixisspace)selfnoderesultsnewcommachildrs 3/usr/lib64/python3.12/lib2to3/fixes/fix_ws_comma.py transformzFixWsComma.transformstjjl\\E !>>#F(:#%EL"\\F!'* " N) __name__ __module__ __qualname__explicitPATTERNrLeafrCOMMACOLONrrrrrr sJHG FKK S )E FKK S )E 5>DrrN)__doc__r rpgen2rrBaseFixrr$rrr(s'##r__pycache__/fix_idioms.cpython-312.opt-1.pyc000064400000012275152525335740014572 0ustar00 {|j fdZddlmZddlmZmZmZmZmZm Z dZ dZ GddejZ y) aAdjust some old Python 2 idioms to their modern counterparts. * Change some type comparisons to isinstance() calls: type(x) == T -> isinstance(x, T) type(x) is T -> isinstance(x, T) type(x) != T -> not isinstance(x, T) type(x) is not T -> not isinstance(x, T) * Change "while 1:" into "while True:". * Change both v = list(EXPR) v.sort() foo(v) and the more general v = EXPR v.sort() foo(v) into v = sorted(EXPR) foo(v) ) fixer_base)CallCommaNameNode BlankLinesymsz0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)z(power< 'type' trailer< '(' x=any ')' > >c XeZdZdZdedededed ZfdZdZdZ d Z d Z xZ S) FixIdiomsTz isinstance=comparison<  z8 T=any > | isinstance=comparison< T=any aX > | while_stmt< 'while' while='1' ':' any+ > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' power< list='list' trailer< '(' (not arglist) any ')' > > > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > cVtt| |}|rd|vr|d|dk(r|Sy|S)Nsortedid1id2)superr match)selfnoder __class__s 1/usr/lib64/python3.12/lib2to3/fixes/fix_idioms.pyrzFixIdioms.matchOs< )T ( . Qx1U8#cd|vr|j||Sd|vr|j||Sd|vr|j||Std)N isinstancewhilerz Invalid match)transform_isinstancetransform_whiletransform_sort RuntimeError)rrresultss r transformzFixIdioms.transformZs^ 7 ",,T7; ;  ''g6 6  &&tW5 5/ /rc0|dj}|dj}d|_d|_ttd|t |g}d|vr,d|_t t jtd|g}|j|_|S)NxTr rnnot)cloneprefixrrrrr not_test)rrr r#r$tests rrzFixIdioms.transform_isinstanceds CL    CL   D&EGQ8 '>DK U T':;Dkk  rcZ|d}|jtd|jy)NrTruer))replacerr))rrr ones rrzFixIdioms.transform_whileps#g D 34rc|d}|d}|jd}|jd}|r'|jtd|jnV|rI|j }d|_|jt td|g|jn t d|j|j}d |vr~|r=|jd d |d jf} d j| |d _yt} |jj| |jd d | _yy) Nsortnextlistexprrr.r%zshould not have reached here ) getr/rr)r(rrremove rpartitionjoinrparent append_child) rrr sort_stmt next_stmt list_call simple_exprnewbtwn prefix_linesend_lines rrzFixIdioms.transform_sortts3FO FO KK' kk&)    d8I4D4DE F ##%CCJ   T(^cU,7,>,>!@ A=> > 4<!% 5a 8)A,:M:MN &*ii &= ! # %;  --h7#'//$"7":! r) __name__ __module__ __qualname__explicitTYPECMPPATTERNrr!rrr __classcell__)rs@rr r %s6HN c4K%!GN 0 5$;rr N)__doc__r%r fixer_utilrrrrrr rKrJBaseFixr rrrRs3<AA81s; ""s;r__pycache__/fix_paren.cpython-312.opt-2.pyc000064400000002726152525335740014414 0ustar00 {|jL ddlmZddlmZmZGddej Zy)) fixer_base)LParenRParenceZdZdZdZdZy)FixParenTa atom< ('[' | '(') (listmaker< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > > | testlist_gexp< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > >) (']' | ')') > c|d}t}|j|_d|_|jd||jt y)Ntarget)rprefix insert_child append_childr)selfnoderesultsr lparens 0/usr/lib64/python3.12/lib2to3/fixes/fix_paren.py transformzFixParen.transform%sE"   Av&FH%N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG,&rrN)r r fixer_utilrrBaseFixrrrrrs%C' &z!! &r__pycache__/fix_intern.cpython-312.opt-1.pyc000064400000002576152525335740014610 0ustar00 {|jxNdZddlmZddlmZmZGddej Zy)z/Fixer for intern(). intern(s) -> sys.intern(s)) fixer_base) ImportAndCall touch_importceZdZdZdZdZdZy) FixInternTprez power< 'intern' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > c|rF|d}|r?|j|jjk(r|jdjdvryd}t |||}t dd||S)Nobj>***)sysinternr)typesymsargumentchildrenvaluerr)selfnoderesultsr namesnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_intern.py transformzFixIntern.transformsf %.CHH 2 22LLO))[8!D'51T5$' N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrr sM EG rrN)__doc__r fixer_utilrrBaseFixrr#rrr(s$ 4 ""r__pycache__/fix_basestring.cpython-312.opt-2.pyc000064400000001333152525335740015441 0ustar00 {|j@H ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZy) FixBasestringTz 'basestring'c0td|jS)Nstr)prefix)rr )selfnoderesultss 5/usr/lib64/python3.12/lib2to3/fixes/fix_basestring.py transformzFixBasestring.transform sE$++..N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrr rrsMG/rrN)r fixer_utilrBaseFixrrrr rs""/J&&/r__pycache__/fix_asserts.cpython-312.opt-1.pyc000064400000002766152525335740014776 0ustar00 {|jbdZddlmZddlmZedddddd d dddddd d ZGddeZy)z5Fixer that replaces deprecated unittest method names.)BaseFix)Name assertTrue assertEqualassertNotEqualassertAlmostEqualassertNotAlmostEqual assertRegexassertRaisesRegex assertRaises assertFalse)assert_ assertEqualsassertNotEqualsassertAlmostEqualsassertNotAlmostEqualsassertRegexpMatchesassertRaisesRegexpfailUnlessEqual failIfEqualfailUnlessAlmostEqualfailIfAlmostEqual failUnlessfailUnlessRaisesfailIfcHeZdZddjeeezZdZy) FixAssertszH power< any+ trailer< '.' meth=(%s)> any* > |c|dd}|jttt||jy)Nmeth)prefix)replacerNAMESstrr")selfnoderesultsnames 2/usr/lib64/python3.12/lib2to3/fixes/fix_asserts.py transformzFixAsserts.transform s0vq! T%D *4;;?@N) __name__ __module__ __qualname__joinmapreprr$PATTERNr+r,r*rrs'HHSu-./GAr,rN)__doc__ fixer_baser fixer_utilrdictr$rr4r,r*r9sR;! $*0%*! -,#  $AAr,__pycache__/fix_asserts.cpython-312.opt-2.pyc000064400000002664152525335740014774 0ustar00 {|j` ddlmZddlmZeddddddd dddddd d ZGd deZy))BaseFix)Name assertTrue assertEqualassertNotEqualassertAlmostEqualassertNotAlmostEqual assertRegexassertRaisesRegex assertRaises assertFalse)assert_ assertEqualsassertNotEqualsassertAlmostEqualsassertNotAlmostEqualsassertRegexpMatchesassertRaisesRegexpfailUnlessEqual failIfEqualfailUnlessAlmostEqualfailIfAlmostEqual failUnlessfailUnlessRaisesfailIfcHeZdZddjeeezZdZy) FixAssertszH power< any+ trailer< '.' meth=(%s)> any* > |c|dd}|jttt||jy)Nmeth)prefix)replacerNAMESstrr")selfnoderesultsnames 2/usr/lib64/python3.12/lib2to3/fixes/fix_asserts.py transformzFixAsserts.transform s0vq! T%D *4;;?@N) __name__ __module__ __qualname__joinmapreprr$PATTERNr+r,r*rrs'HHSu-./GAr,rN) fixer_baser fixer_utilrdictr$rr4r,r*r8sR;! $*0%*! -,#  $AAr,__pycache__/fix_funcattrs.cpython-312.opt-1.pyc000064400000002216152525335740015311 0ustar00 {|jJdZddlmZddlmZGddej Zy)z3Fix function attribute names (f.func_x -> f.__x__).) fixer_base)NameceZdZdZdZdZy) FixFuncattrsTz power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals' | 'func_name' | 'func_defaults' | 'func_code' | 'func_dict') > any* > c|dd}|jtd|jddz|jy)Nattrz__%s__)prefix)replacervaluer )selfnoderesultsrs 4/usr/lib64/python3.12/lib2to3/fixes/fix_funcattrs.py transformzFixFuncattrs.transforms;vq! T8djjn4!%. /N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG /rrN)__doc__r fixer_utilrBaseFixrrrrrs"9 /:%% /r__pycache__/fix_map.cpython-312.opt-1.pyc000064400000010630152525335740014054 0ustar00 {|j8~dZddlmZddlmZddlmZmZmZm Z m Z ddl m Z ddlmZGddej Zy ) aFixer that changes map(F, ...) into list(map(F, ...)) unless there exists a 'from future_builtins import map' statement in the top-level namespace. As a special case, map(None, X) is changed into list(X). (This is necessary because the semantics are changed in this case -- the new map(None, X) is equivalent to [(x,) for x in X].) We avoid the transformation (except for the special case mentioned above) if the map() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on map(F, X, Y, ...) to go on until the longest argument is exhausted, substituting None for missing values -- like zip(), it now stops as soon as the shortest argument is exhausted. )token) fixer_base)NameArgListCallListCompin_special_context)python_symbols)NodeceZdZdZdZdZdZy)FixMapTaL map_none=power< 'map' trailer< '(' arglist< 'None' ',' arg=any [','] > ')' > [extra_trailers=trailer*] > | map_lambda=power< 'map' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'map' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.mapc |j|ryg}d|vr)|dD]!}|j|j#|jjt j k(rA|j|d|j}d|_ttd|g}nd|vrbt|dj|dj|dj}tt j|g|zd }nbd |vr|d j}d|_n d |vr|d }|jt jk(r|jd jt j k(rs|jd jdjt"j$k(r<|jd jdj&dk(r|j|dytt jtd|jg}d|_t)|rytt jtdt+gg|z}d|_|j|_|S)Nextra_trailerszYou should use a for loop herelist map_lambdaxpfpit)prefixmap_noneargargsNonezjcannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequencemap) should_skipappendcloneparenttypesyms simple_stmtwarningrrrrr powertrailerchildrenarglistrNAMEvaluer r)selfnoderesultstrailerstnewrs ./usr/lib64/python3.12/lib2to3/fixes/fix_map.py transformzFixMap.transform@s   D !  w &-. */ ;;  t// / LL? @**,CCJtF|cU+C W $74=..0"4=..0"4=..02CtzzC58#3B?CW$en**, W$"6?DyyDLL0}}Q',, <}}Q'00388EJJF}}Q'00399VC T,NOtzzDK+FGC!#CJ%d+tzzDL'3%.#AH#LMCCJ[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onr3r4r2r r sMG:$G.r4r N)__doc__pgen2rrr fixer_utilrrrrr pygramr r#pytreer ConditionalFixr r;r4r2rBs2&JJ+PZ & &Pr4__pycache__/fix_future.cpython-312.pyc000064400000001617152525335740013657 0ustar00 {|j#JdZddlmZddlmZGddej Zy)zVRemove __future__ imports from __future__ import foo is replaced with an empty line. ) fixer_base) BlankLineceZdZdZdZdZdZy) FixFutureTz;import_from< 'from' module_name="__future__" 'import' any > c<t}|j|_|S)N)rprefix)selfnoderesultsnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_future.py transformzFixFuture.transformsk[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERN run_orderrrrrr sMOGIrrN)__doc__r fixer_utilrBaseFixrrrrrs$"  "" r__pycache__/fix_dict.cpython-312.pyc000064400000010745152525335740013272 0ustar00 {|jdZddlmZddlmZddlmZddlmZmZmZddlmZejdhzZ Gdd ejZ y ) ajFixer for dict methods. d.keys() -> list(d.keys()) d.items() -> list(d.items()) d.values() -> list(d.values()) d.iterkeys() -> iter(d.keys()) d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) d.viewkeys() -> d.keys() d.viewitems() -> d.items() d.viewvalues() -> d.values() Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() or for...in!). Special contexts that apply to both: list(), sorted(), tuple() set(), any(), all(), sum(). Note: iter(d.keys()) could be written as iter(d) but since the original d.iterkeys() was also redundant we don't fix this. And there are (rare) contexts where it makes a difference (e.g. when passing it as an argument to a function that introspects the argument). )pytree)patcomp) fixer_base)NameCallDot) fixer_utilitercpeZdZdZdZdZdZejeZ dZ eje Z dZ y)FixDictTa power< head=any+ trailer< '.' method=('keys'|'items'|'values'| 'iterkeys'|'iteritems'|'itervalues'| 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > c 0|d}|dd}|d}|j}|j}|jd}|jd} |s| r|dd}|dvsJt||D cgc]} | j }} |D cgc]} | j }} | xr|j ||} |t j|jtt||j g|d j gz} t j|j| } | s#| s!d | _ tt|rdnd | g} |r$t j|j| g|z} |j| _ | Scc} wcc} w) Nheadmethodtailr view)keysitemsvalues)prefixparenslist)symsvalue startswithreprclonein_special_contextrNodetrailerrrrpowerr)selfnoderesultsrrrr method_nameisiterisviewnspecialargsnews //usr/lib64/python3.12/lib2to3/fixes/fix_dict.py transformzFixDict.transform6sv"1%vyyll ''/''/ V%ab/K99G4<G9#'(4a 4(#'(4a 4((Dt66tVDv{{4<<$'E$(06 %?$@Ax(..0 22 kk$**d+6CJtfF&9C5AC ++djj3%$,7C[[  )(s .F Fz3power< func=NAME trailer< '(' node=any ')' > any* >zmfor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > c|jyi}|jjm|jj|jj|r=|d|ur6|r|djtvS|djt j vS|sy|jj|j|xr|d|uS)NFr%func)parentp1matchr iter_exemptr consuming_callsp2)r$r%r(r&s r.r zFixDict.in_special_contextZs ;;  KK   *ww}}T[[//9v$&v,, ;;v,, 0J0JJJww}}T[['2Nwv$7NNN) __name__ __module__ __qualname__ BM_compatiblePATTERNr/P1rcompile_patternr3P2r7r r8r.r r )sMMG8 ?B   $B B !  $BOr8r N) __doc__rrrrr rrrr6r5BaseFixr rAr8r.rDsH6((((F83 AOj  AOr8__pycache__/fix_xreadlines.cpython-312.opt-2.pyc000064400000002205152525335740015435 0ustar00 {|jH ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZy) FixXreadlinesTz power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > > | power< any+ trailer< '.' no_call='xreadlines' > > c|jd}|r'|jtd|jy|j|dDcgc]}|j c}ycc}w)Nno_call__iter__)prefixcall)getreplacerr clone)selfnoderesultsrxs 5/usr/lib64/python3.12/lib2to3/fixes/fix_xreadlines.py transformzFixXreadlines.transformsR++i(  OODGNNC D LLWV_=_!'')_= >=s A,N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrr sMG ?rrN)r fixer_utilrBaseFixrrrrrs%D ?J&&?r__pycache__/fix_unicode.cpython-312.pyc000064400000004166152525335740013775 0ustar00 {|jTdZddlmZddlmZdddZGddej Zy ) zFixer for unicode. * Changes unicode to str and unichr to chr. * If "...\u..." is not unicode literal change it into "...\\u...". * Change u"..." into "...". )token) fixer_basechrstr)unichrunicodec,eZdZdZdZfdZdZxZS) FixUnicodeTzSTRING | 'unicode' | 'unichr'cTtt| ||d|jv|_y)Nunicode_literals)superr start_treefuture_featuresr )selftreefilename __class__s 2/usr/lib64/python3.12/lib2to3/fixes/fix_unicode.pyrzFixUnicode.start_trees' j$*4: 2d6J6J Jc $|jtjk(r*|j}t|j |_|S|jtj k(r|j }|jsY|ddvrRd|vrNdj|jdDcgc]$}|jddjdd&c}}|dd vr|d d}||j k(r|S|j}||_|Sycc}w) Nz'"\z\\z\uz\\uz\Uz\\UuU) typerNAMEclone_mappingvalueSTRINGr joinsplitreplace)rnoderesultsnewvalvs r transformzFixUnicode.transforms 99 "**,C ,CIJ YY%,, &**C((SVu_jj YYu-"-IIeV,44UFC-"1v~!"gdjj  **,CCIJ'"s&)D )__name__ __module__ __qualname__ BM_compatiblePATTERNrr) __classcell__)rs@rr r sM-GKrr N)__doc__pgen2rrrBaseFixr rrr5s.% 0##r__pycache__/fix_exitfunc.cpython-312.pyc000064400000006763152525335740014201 0ustar00 {|j bdZddlmZmZddlmZmZmZmZm Z m Z GddejZ y)z7 Convert use of sys.exitfunc to use the atexit module. )pytree fixer_base)NameAttrCallCommaNewlinesymsc:eZdZdZdZdZfdZfdZdZxZ S) FixExitfuncTa ( sys_import=import_name<'import' ('sys' | dotted_as_names< (any ',')* 'sys' (',' any)* > ) > | expr_stmt< power< 'sys' trailer< '.' 'exitfunc' > > '=' func=any > ) c&tt| |yN)superr __init__)selfargs __class__s 3/usr/lib64/python3.12/lib2to3/fixes/fix_exitfunc.pyrzFixExitfunc.__init__s k4)40c<tt| ||d|_yr)rr start_tree sys_import)rtreefilenamers rrzFixExitfunc.start_tree!s k4+D(;rc d|vr|j |d|_y|dj}d|_tjt j ttdtd}t||g|j}|j||j|j|dy|jjd}|jt jk(r5|jt!|jtddy|jj"}|jj%|j}|j"} tjt j&td tddg} tjt j(| g} |j+|dzt-|j+|d z| y) NrfuncatexitregisterzKCan't find sys import; Please add an atexit import at the top of your file. import)rcloneprefixrNoder powerrrrreplacewarningchildrentypedotted_as_names append_childrparentindex import_name simple_stmt insert_childr ) rnoderesultsrrcallnamescontaining_stmtpositionstmt_container new_importnews r transformzFixExitfunc.transform%s 7 "&"),"7 v$$& ;;tzz#DND4DE!Htfdkk2 T ?? " LL ? @ ((+ ::-- -   uw '   tHc2 3"oo44O&//55dooFH,33NT%5%5#H~tHc/BC J++d.. =C  ( (Awy A  ( (As ;r) __name__ __module__ __qualname__keep_line_order BM_compatiblePATTERNrrr< __classcell__)rs@rr r s#OM G1#rIs' 'EE=<*$$= c<t}|j|_|S)N)rprefix)selfnoderesultsnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_future.py transformzFixFuture.transformsk[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERN run_orderrrrrr sMOGIrrN)__doc__r fixer_utilrBaseFixrrrrrs$"  "" r__pycache__/fix_repr.cpython-312.opt-2.pyc000064400000002050152525335740014245 0ustar00 {|jeP ddlmZddlmZmZmZGddej Zy)) fixer_base)CallName parenthesizeceZdZdZdZdZy)FixReprTz7 atom < '`' expr=any '`' > c|dj}|j|jjk(r t |}t t d|g|jS)Nexprrepr)prefix)clonetypesyms testlist1rrrr )selfnoderesultsr s //usr/lib64/python3.12/lib2to3/fixes/fix_repr.py transformzFixRepr.transformsMv$$& 99 ++ +%DDL4&==N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG>rrN)r fixer_utilrrrBaseFixrrrrr s'611 >j  >r__pycache__/fix_repr.cpython-312.opt-1.pyc000064400000002144152525335740014250 0ustar00 {|jeRdZddlmZddlmZmZmZGddejZy)z/Fixer that transforms `xyzzy` into repr(xyzzy).) fixer_base)CallName parenthesizeceZdZdZdZdZy)FixReprTz7 atom < '`' expr=any '`' > c|dj}|j|jjk(r t |}t t d|g|jS)Nexprrepr)prefix)clonetypesyms testlist1rrrr )selfnoderesultsr s //usr/lib64/python3.12/lib2to3/fixes/fix_repr.py transformzFixRepr.transformsMv$$& 99 ++ +%DDL4&==N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG>rrN) __doc__r fixer_utilrrrBaseFixrrrrr!s'611 >j  >r__pycache__/fix_types.cpython-312.opt-2.pyc000064400000003417152525335740014451 0ustar00 {|j ddlmZddlmZiddddddd d d d d d dddddddddddddddddddd d!d"d#dd$d%d&ZeDcgc]}d'|z c}ZGd(d)ej Zy*cc}w)+) fixer_base)Name BooleanTypebool BufferType memoryview ClassTypetype ComplexTypecomplexDictTypedictDictionaryType EllipsisTypeztype(Ellipsis) FloatTypefloatIntTypeintListTypelistLongType ObjectTypeobjectNoneTypez type(None)NotImplementedTypeztype(NotImplemented) SliceTypeslice StringTypebytes StringTypesz(str,)tuplestrrange) TupleTypeTypeType UnicodeType XRangeTypez)power< 'types' trailer< '.' name='%s' > >c8eZdZdZdj eZdZy)FixTypesT|cztj|dj}|rt||jSy)Nname)prefix) _TYPE_MAPPINGgetvaluerr-)selfnoderesults new_values 0/usr/lib64/python3.12/lib2to3/fixes/fix_types.py transformzFixTypes.transform9s3!%%gfo&;&;<  $++6 6N)__name__ __module__ __qualname__ BM_compatiblejoin_patsPATTERNr6r7r5r)r)5sMhhuoGr7r)N)r fixer_utilrr.r=BaseFixr))ts0r5rDs,&| f   F  6  ) W 5 F E x L 5 g!" g#$ %&- 2CPP-Q 4q 8-Pz!! Qs A3__pycache__/fix_isinstance.cpython-312.opt-1.pyc000064400000004447152525335740015450 0ustar00 {|jHJdZddlmZddlmZGddej Zy)a,Fixer that cleans up a tuple argument to isinstance after the tokens in it were fixed. This is mainly used to remove double occurrences of tokens as a leftover of the long -> int / unicode -> str conversion. eg. isinstance(x, (int, long)) -> isinstance(x, (int, int)) -> isinstance(x, int) ) fixer_base)tokenceZdZdZdZdZdZy) FixIsinstanceTz power< 'isinstance' trailer< '(' arglist< any ',' atom< '(' args=testlist_gexp< any+ > ')' > > ')' > > ct}|d}|j}g}t|}|D]\}} | jtj k(rP| j |vrB|t|dz ksC||dzjtjk(sgt|s|j| | jtj k(s|j| j |r#|djtjk(r|d=t|dk(r5|j} | j|d_ | j|dy||dd|jy)Nargs)setchildren enumeratetyperNAMEvaluelenCOMMAnextappendaddparentprefixreplacechanged) selfnoderesultsnames_insertedtestlistr new_argsiteratoridxargatoms 5/usr/lib64/python3.12/lib2to3/fixes/fix_isinstance.py transformzFixIsinstance.transforms6?  T? HCxx5::%#))~*ETQ&4a=+=+=+LN$88uzz)"&&syy1!  ))U[[8 x=A ??D!%HQK  LL! %DG LLNN)__name__ __module__ __qualname__ BM_compatiblePATTERN run_orderr'r(r&rrsMGIr(rN)__doc__r fixer_utilrBaseFixrr/r(r&r4s$$J&&$r(__pycache__/fix_has_key.cpython-312.opt-1.pyc000064400000010155152525335740014724 0ustar00 {|j| ZdZddlmZddlmZddlmZmZGddejZy)a&Fixer for has_key(). Calls to .has_key() methods are expressed in terms of the 'in' operator: d.has_key(k) -> k in d CAVEATS: 1) While the primary target of this fixer is dict.has_key(), the fixer will change any has_key() method call, regardless of its class. 2) Cases like this will not be converted: m = d.has_key if m(k): ... Only *calls* to has_key() are converted. While it is possible to convert the above to something like m = d.__contains__ if m(k): ... this is currently not done. )pytree) fixer_base)Name parenthesizeceZdZdZdZdZy) FixHasKeyTa anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > after=any* > | negation=not_test< 'not' anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > > > c `|j}|jj|jk(r&|jj |jry|j d}|d}|j}|dDcgc]}|j}}|dj} |j d} | r| Dcgc]}|j} }| j|j|j|j|j|j|j|jfvr t| } t!|dk(r|d}n t#j$|j&|}d|_t)d d } |r/t)d d } t#j$|j*| | f} t#j$|j| | |f} | r8t| } t#j$|j&| ft-| z} |jj|j|j.|j0|j2|j4|j6|j8|j:|j&f vr t| } || _| Scc}wcc}w) Nnegationanchorbeforeargafter in)prefixnot)symsparenttypenot_testpatternmatchgetrclone comparisonand_testor_testtestlambdefargumentrlenrNodepowerrcomp_optupleexprxor_exprand_expr shift_expr arith_exprtermfactor)selfnoderesultsrr r rnr r rn_opn_notnews 2/usr/lib64/python3.12/lib2to3/fixes/fix_has_key.py transformzFixHasKey.transformGsyy KK   - LL  t{{ +;;z*"%,X%67%6!'')%67en""$ G$ (-.1QWWYE. 88  diit}}N Ns#C v;! AYF[[V4F D% s+E;;t||eT];Dkk$//Cv+>? s#C++djj3&5<*?@C ;;  DMM $ t $ $ TZZ 9 9s#C  78/s ?J&J+N)__name__ __module__ __qualname__ BM_compatiblePATTERNr7r6rr&sMG<&r>rN) __doc__rr fixer_utilrrBaseFixrr=r>r6rCs):+G ""Gr>__pycache__/fix_has_key.cpython-312.pyc000064400000010174152525335740013766 0ustar00 {|j| ZdZddlmZddlmZddlmZmZGddejZy)a&Fixer for has_key(). Calls to .has_key() methods are expressed in terms of the 'in' operator: d.has_key(k) -> k in d CAVEATS: 1) While the primary target of this fixer is dict.has_key(), the fixer will change any has_key() method call, regardless of its class. 2) Cases like this will not be converted: m = d.has_key if m(k): ... Only *calls* to has_key() are converted. While it is possible to convert the above to something like m = d.__contains__ if m(k): ... this is currently not done. )pytree) fixer_base)Name parenthesizeceZdZdZdZdZy) FixHasKeyTa anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > after=any* > | negation=not_test< 'not' anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > > > c h|sJ|j}|jj|jk(r&|jj |jry|j d}|d}|j}|dDcgc]}|j}}|dj} |j d} | r| Dcgc]}|j} }| j|j|j|j|j|j|j|jfvr t| } t!|dk(r|d}n t#j$|j&|}d|_t)d d } |r/t)d d } t#j$|j*| | f} t#j$|j| | |f} | r8t| } t#j$|j&| ft-| z} |jj|j|j.|j0|j2|j4|j6|j8|j:|j&f vr t| } || _| Scc}wcc}w) Nnegationanchorbeforeargafter in)prefixnot)symsparenttypenot_testpatternmatchgetrclone comparisonand_testor_testtestlambdefargumentrlenrNodepowerrcomp_optupleexprxor_exprand_expr shift_expr arith_exprtermfactor)selfnoderesultsrr r rnr r rn_opn_notnews 2/usr/lib64/python3.12/lib2to3/fixes/fix_has_key.py transformzFixHasKey.transformGs&wyy KK   - LL  t{{ +;;z*"%,X%67%6!'')%67en""$ G$ (-.1QWWYE. 88  diit}}N Ns#C v;! AYF[[V4F D% s+E;;t||eT];Dkk$//Cv+>? s#C++djj3&5<*?@C ;;  DMM $ t $ $ TZZ 9 9s#C  78/s J*J/N)__name__ __module__ __qualname__ BM_compatiblePATTERNr7r6rr&sMG<&r>rN) __doc__rr fixer_utilrrBaseFixrr=r>r6rCs):+G ""Gr>__pycache__/fix_tuple_params.cpython-312.pyc000064400000017226152525335740015044 0ustar00 {|jdZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z dZ GddejZd Zd Zgd fd Zd Zy )a:Fixer for function definitions with tuple parameters. def func(((a, b), c), d): ... -> def func(x, d): ((a, b), c) = x ... It will also support lambdas: lambda (x, y): x + y -> lambda t: t[0] + t[1] # The parens are a syntax error in Python 3 lambda (x): x + y -> lambda x: x + y )pytree)token) fixer_base)AssignNameNewlineNumber Subscriptsymsct|tjxr*|jdjt j k(S)N) isinstancerNodechildrentyperSTRING)stmts 7/usr/lib64/python3.12/lib2to3/fixes/fix_tuple_params.py is_docstringrs5 dFKK ( 1 ==  ELL 01c$eZdZdZdZdZdZdZy)FixTupleParamsTa funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > c d|vrj||Sg |d}|d}|djdjtjk(r)d}|djdj }t n(d}d}tjtjd d fd }|jtjk(r ||ne|jtjk(rHt|jD]0\}} | jtjk(s$|| |dkD 2 sy D] } |d| _ |} |dk(r d d_n*t|dj|r| d_|dz} D] } |d| _  |dj| | t!| dz| t# zdzD]}||dj|_|dj%y) Nlambdasuiteargsr rz; cTtj}|j}d|_t ||j}|rd|_|j |j tjtj|jgy)Nr ) rnew_namecloneprefixrreplaceappendrrr simple_stmt) tuple_arg add_prefixnargrend new_linesselfs r handle_tuplez.FixTupleParams.transform..handle_tupleCsT]]_%A//#CCJ#qwwy)D   a   V[[)9)9*. )<> ?r)r)r!)F)transform_lambdarrrINDENTvaluerrLeafr tfpdef typedargslist enumerateparentr$rrangelenchanged)r.noderesultsrrstartindentr/ir+lineafterr,r-s` @@r transformzFixTupleParams.transform.s w ((w7 7  v 8  Q  $ $ 4E1X&&q)//F)CEF++ellB/C ? 99 #   YY$,, ,#DMM2388t{{*!!a%9 3  D(DK A:"%IaL  %(++E2 3"(IaL AIED(DK)2a%&uQwc)n 4Q 67A*0E!H  a '8 arc |d}|d}t|d}|jtjk(r)|j }d|_|j |yt|}t|}|jt|}t|d} |j | j |jD]} | jtjk(s!| j|vs0|| jD cgc]} | j } } tjt j"| j g| z} | j | _| j | ycc} w)Nrbodyinnerr!)r$) simplify_argsrrNAMEr#r$r% find_params map_to_indexr" tuple_namer post_orderr2rrr power)r.r;r<rrDrEparamsto_indextup_name new_paramr*c subscriptsnews rr0zFixTupleParams.transform_lambdans-vvgg./ :: #KKMEEL LL  T"'==F!34#.  Y__&'"Avv#8(;19!''1BC1BAaggi1B Ckk$**#,??#4"5 "BDXX  # #Cs FN)__name__ __module__ __qualname__ run_order BM_compatiblePATTERNrBr0rrrrsIMG>@rrcL|jtjtjfvr|S|jtj k(rL|jtj k(r-|j d}|jtj k(r-|Std|z)NrzReceived unexpected node %s)rr vfplistrrGvfpdefr RuntimeError)r;s rrFrFsx yyT\\5::.. dkk !ii4;;&==#Dii4;;& 4t; <}t|tr|jt|.|j|@dj |S)N_)rrdr&rJjoin)relrfs rrJrJsF A c4 HHZ_ % HHSM  88A;r)__doc__rrpgen2rr fixer_utilrrrr r r rBaseFixrrFrHrIrJrZrrrpsQ*GG1gZ''gX =L%'$  r__pycache__/fix_nonzero.cpython-312.pyc000064400000002064152525335740014034 0ustar00 {|jOJdZddlmZddlmZGddej Zy)z*Fixer for __nonzero__ -> __bool__ methods.) fixer_base)NameceZdZdZdZdZy) FixNonzeroTz classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='__nonzero__' parameters< '(' NAME ')' > any+ > any* > > c^|d}td|j}|j|y)Nname__bool__)prefix)rr replace)selfnoderesultsrnews 2/usr/lib64/python3.12/lib2to3/fixes/fix_nonzero.py transformzFixNonzero.transforms'v:dkk2 SN)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMGrrN)__doc__r fixer_utilrBaseFixrrrrrs"0 ## r__pycache__/fix_numliterals.cpython-312.pyc000064400000002627152525335740014706 0ustar00 {|jVdZddlmZddlmZddlmZGddejZy)z-Fixer that turns 1L into 1, 0755 into 0o755. )token) fixer_base)Numberc0eZdZejZdZdZy)FixNumliteralsc^|jjdxs|jddvS)N0Ll)value startswith)selfnodes 6/usr/lib64/python3.12/lib2to3/fixes/fix_numliterals.pymatchzFixNumliterals.matchs) %%c*Ddjjn.DEc|j}|ddvr|dd}n@|jdr/|jrtt |dkDrd|ddz}t ||j S)Nr r r 0o)prefix)r r isdigitlensetrr)rrresultsvals r transformzFixNumliterals.transformsdjj r7d?cr(C ^^C S[[]s3s8}q7HQR.Cc$++..rN)__name__ __module__ __qualname__rNUMBER _accept_typerrrrrr s<r(s' /Z''/r__pycache__/fix_unicode.cpython-312.opt-1.pyc000064400000004166152525335740014734 0ustar00 {|jTdZddlmZddlmZdddZGddej Zy ) zFixer for unicode. * Changes unicode to str and unichr to chr. * If "...\u..." is not unicode literal change it into "...\\u...". * Change u"..." into "...". )token) fixer_basechrstr)unichrunicodec,eZdZdZdZfdZdZxZS) FixUnicodeTzSTRING | 'unicode' | 'unichr'cTtt| ||d|jv|_y)Nunicode_literals)superr start_treefuture_featuresr )selftreefilename __class__s 2/usr/lib64/python3.12/lib2to3/fixes/fix_unicode.pyrzFixUnicode.start_trees' j$*4: 2d6J6J Jc $|jtjk(r*|j}t|j |_|S|jtj k(r|j }|jsY|ddvrRd|vrNdj|jdDcgc]$}|jddjdd&c}}|dd vr|d d}||j k(r|S|j}||_|Sycc}w) Nz'"\z\\z\uz\\uz\Uz\\UuU) typerNAMEclone_mappingvalueSTRINGr joinsplitreplace)rnoderesultsnewvalvs r transformzFixUnicode.transforms 99 "**,C ,CIJ YY%,, &**C((SVu_jj YYu-"-IIeV,44UFC-"1v~!"gdjj  **,CCIJ'"s&)D )__name__ __module__ __qualname__ BM_compatiblePATTERNrr) __classcell__)rs@rr r sM-GKrr N)__doc__pgen2rrrBaseFixr rrr5s.% 0##r__pycache__/fix_numliterals.cpython-312.opt-2.pyc000064400000002535152525335740015644 0ustar00 {|jT ddlmZddlmZddlmZGddej Zy))token) fixer_base)Numberc0eZdZejZdZdZy)FixNumliteralsc^|jjdxs|jddvS)N0Ll)value startswith)selfnodes 6/usr/lib64/python3.12/lib2to3/fixes/fix_numliterals.pymatchzFixNumliterals.matchs) %%c*Ddjjn.DEc|j}|ddvr|dd}n@|jdr/|jrtt |dkDrd|ddz}t ||j S)Nr r r 0o)prefix)r r isdigitlensetrr)rrresultsvals r transformzFixNumliterals.transformsdjj r7d?cr(C ^^C S[[]s3s8}q7HQR.Cc$++..rN)__name__ __module__ __qualname__rNUMBER _accept_typerrrrrr s<r's' /Z''/r__pycache__/fix_intern.cpython-312.pyc000064400000002576152525335740013651 0ustar00 {|jxNdZddlmZddlmZmZGddej Zy)z/Fixer for intern(). intern(s) -> sys.intern(s)) fixer_base) ImportAndCall touch_importceZdZdZdZdZdZy) FixInternTprez power< 'intern' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > c|rF|d}|r?|j|jjk(r|jdjdvryd}t |||}t dd||S)Nobj>***)sysinternr)typesymsargumentchildrenvaluerr)selfnoderesultsr namesnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_intern.py transformzFixIntern.transformsf %.CHH 2 22LLO))[8!D'51T5$' N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrr sM EG rrN)__doc__r fixer_utilrrBaseFixrr#rrr(s$ 4 ""r__pycache__/fix_import.cpython-312.opt-2.pyc000064400000007560152525335740014622 0ustar00 {|j n ddlmZddlmZmZmZmZddlmZm Z m Z dZ GddejZ y) ) fixer_base)dirnamejoinexistssep) FromImportsymstokenc#XK |g}|r|j}|jtjk(r|jn|jt j k(r6dj|jDcgc]}|jc}n|jt jk(r|j|jdnJ|jt jk(r"|j|jdddn td|ryycc}ww)Nrzunknown node type)poptyper NAMEvaluer dotted_namerchildrendotted_as_nameappenddotted_as_namesextendAssertionError)namespendingnodechs 1/usr/lib64/python3.12/lib2to3/fixes/fix_import.pytraverse_importsrsgG {{} 99 "**  YY$** *''dmm | import_name< 'import' imp=any > cTtt| ||d|jv|_y)Nabsolute_import)superr! start_treefuture_featuresskip)selftreename __class__s rr%zFixImport.start_tree/s& i)$5%)=)== c|jry|d}|jtjk(rit |ds|j d}t |ds|j |jr%d|jz|_|jyyd}d}t|D]}|j |rd}d}|r|r|j|dytd|g}|j|_ |S)Nimprr.FTz#absolute and local imports together) r'rr import_fromhasattrrprobably_a_local_importrchangedrwarningr prefix)r(rresultsr. have_local have_absolutemod_namenews r transformzFixImport.transform3s 99 en 99(( ( c7+ll1oc7+++CII6#))O  7J!M,S1//9!%J$(M 2 LL'LMS3%(CCJJr,c|jdry|jddd}t|j}t ||}t t t|dsydt ddd d fD]}t ||zsy y) Nr/Frz __init__.pyz.pyz.pycz.soz.slz.pydT) startswithsplitrfilenamerrr)r(imp_name base_pathexts rr2z!FixImport.probably_a_local_importUs   s #>>#q)!,DMM* H- d79-}=>3uf=Ci#o&>r,) __name__ __module__ __qualname__ BM_compatiblePATTERNr%r;r2 __classcell__)r+s@rr!r!&sMG > Dr,r!N)r ros.pathrrrr fixer_utilr r r rBaseFixr!r,rrNs2 ..006&= ""=r,__pycache__/fix_operator.cpython-312.opt-2.pyc000064400000012021152525335740015127 0ustar00 {|jb b ddlZddlmZddlmZmZmZmZdZ GddejZ y)N) fixer_base)CallNameString touch_importcfd}|S)Nc|_|SN) invocation)fss 3/usr/lib64/python3.12/lib2to3/fixes/fix_operator.pydeczinvocation..decs )r rs` rr r s JrceZdZdZdZdZdZdeeezZdZ e dd Z e d d Z e d d Z e ddZe ddZe ddZe ddZdZdZdZy) FixOperatorTprez method=('isCallable'|'sequenceIncludes' |'isSequenceType'|'isMappingType'|'isNumberType' |'repeat'|'irepeat') z'(' obj=any ')'z power< module='operator' trailer< '.' %(methods)s > trailer< %(obj)s > > | power< %(methods)s trailer< %(obj)s > > )methodsobjc>|j||}| |||Syr ) _check_method)selfnoderesultsmethods r transformzFixOperator.transform+s,##D'2  $( ( rzoperator.contains(%s)c(|j||dS)Ncontains_handle_renamerrrs r_sequenceIncludeszFixOperator._sequenceIncludes0s""4*==rz callable(%s)cl|d}ttd|jg|jS)Nrcallableprefix)rrcloner')rrrrs r _isCallablezFixOperator._isCallable4s+enD$syy{mDKKHHrzoperator.mul(%s)c(|j||dS)Nmulr r"s r_repeatzFixOperator._repeat9s""4%88rzoperator.imul(%s)c(|j||dS)Nimulr r"s r_irepeatzFixOperator._irepeat=s""4&99rz(isinstance(%s, collections.abc.Sequence)c*|j||ddS)Ncollections.abcSequence_handle_type2abcr"s r_isSequenceTypezFixOperator._isSequenceTypeAs$$T74EzRRrz'isinstance(%s, collections.abc.Mapping)c*|j||ddS)Nr1Mappingr3r"s r_isMappingTypezFixOperator._isMappingTypeEs$$T74EyQQrzisinstance(%s, numbers.Number)c*|j||ddS)NnumbersNumberr3r"s r _isNumberTypezFixOperator._isNumberTypeIs$$T7IxHHrcB|dd}||_|jy)Nrr)valuechanged)rrrnamers rr!zFixOperator._handle_renameMs""1% rctd|||d}|jtddj||gzg}t t d||j S)Nrz, . isinstancer&)rr(rjoinrrr')rrrmoduleabcrargss rr4zFixOperator._handle_type2abcRsVT64(en VD388VSM+B$BCDD&T[[AArct|d|ddjz}t|tjj r9d|vr|St |df}|j|z}|j|d|zy)N_rrrErzYou should use '%s' here.) getattrr>rC collectionsrFCallablestrr warning)rrrrsubinvocation_strs rrzFixOperator._check_methodXs|sWX%6q%9%?%??@ fkoo66 77" 75>*,!'!2!2S!8 T#>#OPrN)__name__ __module__ __qualname__ BM_compatibleorderrrdictPATTERNrr r#r)r,r/r5r8r<r!r4rrrrrrsM EG C c2 3G) '(>)>I I"#9$9#$:%::;S<S9:R;R01I2I B rr) collections.abcrKlib2to3rlib2to3.fixer_utilrrrrr BaseFixrrrrr\s3 ??G*$$Gr__pycache__/fix_raw_input.cpython-312.opt-2.pyc000064400000001561152525335740015313 0ustar00 {|jH ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZy) FixRawInputTzU power< name='raw_input' trailer< '(' [any] ')' > any* > cZ|d}|jtd|jy)Nnameinput)prefix)replacerr )selfnoderesultsrs 4/usr/lib64/python3.12/lib2to3/fixes/fix_raw_input.py transformzFixRawInput.transforms"v T'$++67N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMG8rrN)r fixer_utilrBaseFixrrrrrs"8 8*$$ 8r__pycache__/fix_dict.cpython-312.opt-2.pyc000064400000007016152525335740014227 0ustar00 {|j ddlmZddlmZddlmZddlmZmZmZddlmZejdhzZ GddejZ y ) )pytree)patcomp) fixer_base)NameCallDot) fixer_utilitercpeZdZdZdZdZdZejeZ dZ eje Z dZ y)FixDictTa power< head=any+ trailer< '.' method=('keys'|'items'|'values'| 'iterkeys'|'iteritems'|'itervalues'| 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > c |d}|dd}|d}|j}|j}|jd}|jd} |s| r|dd}|D cgc]} | j}} |D cgc]} | j}} | xr|j ||} |t j |jtt||jg|d jgz} t j |j| } | s#| s!d | _ tt|rdnd | g} |r$t j |j| g|z} |j| _ | Scc} wcc} w) Nheadmethodtailr view)prefixparenslist) symsvalue startswithclonein_special_contextrNodetrailerrrrpowerr)selfnoderesultsrrrr method_nameisiterisviewnspecialargsnews //usr/lib64/python3.12/lib2to3/fixes/fix_dict.py transformzFixDict.transform6spv"1%vyyll ''/''/ V%ab/K#'(4a 4(#'(4a 4((Dt66tVDv{{4<<$'E$(06 %?$@Ax(..0 22 kk$**d+6CJtfF&9C5AC ++djj3%$,7C[[  )(s E:7E?z3power< func=NAME trailer< '(' node=any ')' > any* >zmfor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > c|jyi}|jjm|jj|jj|r=|d|ur6|r|djtvS|djt j vS|sy|jj|j|xr|d|uS)NFr!func)parentp1matchr iter_exemptr consuming_callsp2)r r!r$r"s r*rzFixDict.in_special_contextZs ;;  KK   *ww}}T[[//9v$&v,, ;;v,, 0J0JJJww}}T[['2Nwv$7NNN) __name__ __module__ __qualname__ BM_compatiblePATTERNr+P1rcompile_patternr/P2r3rr4r*r r )sMMG8 ?B   $B B !  $BOr4r N) rrrrr rrrr2r1BaseFixr r=r4r*r?sH6((((F83 AOj  AOr4__pycache__/fix_basestring.cpython-312.pyc000064400000001404152525335740014500 0ustar00 {|j@JdZddlmZddlmZGddej Zy)zFixer for basestring -> str.) fixer_base)NameceZdZdZdZdZy) FixBasestringTz 'basestring'c0td|jS)Nstr)prefix)rr )selfnoderesultss 5/usr/lib64/python3.12/lib2to3/fixes/fix_basestring.py transformzFixBasestring.transform sE$++..N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrr rrsMG/rrN)__doc__r fixer_utilrBaseFixrrrr rs""/J&&/r__pycache__/fix_next.cpython-312.opt-1.pyc000064400000010400152525335740014250 0ustar00 {|jf dZddlmZddlmZddlmZddlm Z m Z m Z dZ GddejZd Zd Zd Zy ) z.Fixer for it.next() -> next(it), per PEP 3114.)token)python_symbols) fixer_base)NameCall find_bindingz;Calls to builtin next() possibly shadowed by global bindingc0eZdZdZdZdZfdZdZxZS)FixNextTa power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > > | power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > > | classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='next' parameters< '(' NAME ')' > any+ > any* > > | global=global_stmt< 'global' any* 'next' any* > prectt| ||td|}|r|j |t d|_yd|_y)NnextTF)superr start_treerwarning bind_warning shadowed_next)selftreefilenamen __class__s //usr/lib64/python3.12/lib2to3/fixes/fix_next.pyrzFixNext.start_tree$sA gt'h7  & LLL )!%D !&D c,|jd}|jd}|jd}|r|jr'|jtd|jy|Dcgc]}|j }}d|d_|jt td|j|y|r)td|j}|j|y|r{t|rU|d }dj|Dcgc] }t|c}jd k(r|j|ty|jtdyd |vr|j|td |_yycc}wcc}w) Nbaseattrname__next__)prefixr head __builtin__globalT) getrreplacerrcloneris_assign_targetjoinstrstriprr)rnoderesultsrrrrr"s r transformzFixNext.transform.sD{{6"{{6"{{6" !! T*T[[AB+/04a 40!#Q T$vdkk"BDIJ Z 4A LLO  %v77D1DqCFD1288:mKLL|4 LLj) *  LL| ,!%D !!12s -F  F) __name__ __module__ __qualname__ BM_compatiblePATTERNorderrr. __classcell__)rs@rr r s M G E'&rr ct|}|y|jD]/}|jtjk(ryt ||s/yy)NFT) find_assignchildrentyperEQUAL is_subtree)r,assignchilds rr(r(QsG  F ~ :: $ t $ ! rc|jtjk(r|S|jtjk(s |jyt |jSN)r9syms expr_stmt simple_stmtparentr7)r,s rr7r7]sD yyDNN"  yyD$$$ (; t{{ ##rcL|k(rytfd|jDS)NTc36K|]}t|ywr?)r;).0cr,s r zis_subtree..gs:Mqz!T"Ms)anyr8)rootr,s `rr;r;ds" t| :DMM: ::rN)__doc__pgen2rpygramrr@r r fixer_utilrrrrBaseFixr r(r7r;rrrQs@4+11L :&j  :&@ $;r__pycache__/fix_future.cpython-312.opt-2.pyc000064400000001454152525335740014616 0ustar00 {|j#H ddlmZddlmZGddejZy)) fixer_base) BlankLineceZdZdZdZdZdZy) FixFutureTz;import_from< 'from' module_name="__future__" 'import' any > c<t}|j|_|S)N)rprefix)selfnoderesultsnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_future.py transformzFixFuture.transformsk[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERN run_orderrrrrr sMOGIrrN)r fixer_utilrBaseFixrrrrrs$"  "" r__pycache__/fix_numliterals.cpython-312.opt-1.pyc000064400000002627152525335740015645 0ustar00 {|jVdZddlmZddlmZddlmZGddejZy)z-Fixer that turns 1L into 1, 0755 into 0o755. )token) fixer_base)Numberc0eZdZejZdZdZy)FixNumliteralsc^|jjdxs|jddvS)N0Ll)value startswith)selfnodes 6/usr/lib64/python3.12/lib2to3/fixes/fix_numliterals.pymatchzFixNumliterals.matchs) %%c*Ddjjn.DEc|j}|ddvr|dd}n@|jdr/|jrtt |dkDrd|ddz}t ||j S)Nr r r 0o)prefix)r r isdigitlensetrr)rrresultsvals r transformzFixNumliterals.transformsdjj r7d?cr(C ^^C S[[]s3s8}q7HQR.Cc$++..rN)__name__ __module__ __qualname__rNUMBER _accept_typerrrrrr s<r(s' /Z''/r__pycache__/fix_nonzero.cpython-312.opt-1.pyc000064400000002064152525335740014773 0ustar00 {|jOJdZddlmZddlmZGddej Zy)z*Fixer for __nonzero__ -> __bool__ methods.) fixer_base)NameceZdZdZdZdZy) FixNonzeroTz classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='__nonzero__' parameters< '(' NAME ')' > any+ > any* > > c^|d}td|j}|j|y)Nname__bool__)prefix)rr replace)selfnoderesultsrnews 2/usr/lib64/python3.12/lib2to3/fixes/fix_nonzero.py transformzFixNonzero.transforms'v:dkk2 SN)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMGrrN)__doc__r fixer_utilrBaseFixrrrrrs"0 ## r__pycache__/fix_renames.cpython-312.pyc000064400000005453152525335740014001 0ustar00 {|jjdZddlmZddlmZmZdddiiZiZdZdZ Gd d ejZ y ) z?Fix incompatible renames Fixes: * sys.maxint -> sys.maxsize ) fixer_base)Name attr_chainsysmaxintmaxsizecLddjtt|zdzS)N(|))joinmaprepr)memberss 2/usr/lib64/python3.12/lib2to3/fixes/fix_renames.py alternatesrs" #dG,- - 33c #KttjD]J\}}t|jD])\}}|t||f<d|d|d|dd|d|d+Lyw)Nz3 import_from< 'from' module_name=z, 'import' ( attr_name=z | import_as_name< attr_name=z! 'as' any >) > z& power< module_name=z trailer< '.' attr_name=z > any* > )listMAPPINGitemsLOOKUP)modulereplaceold_attrnew_attrs r build_patternrsl 0"&w}}"7 Hh)1FFH% & 85 5  + +#81sA,A.cXeZdZdZdj eZdZfdZdZ xZ S) FixRenamesTr precztt| |}|r!tfdt |dDry|Sy)Nc3.K|] }|yw)N).0objmatchs r z#FixRenames.match..5sD)C#5:)CsparentF)superrr&anyr)selfnoderesultsr& __class__s @rr&zFixRenames.match1s;j$-+ DD()CDDNrc|jd}|jd}|rI|rFt|j|jf}|jt ||j yyy)N module_name attr_name)prefix)getrvaluerrr2)r+r,r-mod_namer1rs r transformzFixRenames.transform>s^;;}-KK ,   x~~y?@H   d8I4D4DE F"8r) __name__ __module__ __qualname__ BM_compatibler rPATTERNorderr&r6 __classcell__)r.s@rrr*s(Mhh}'G EGrrN) __doc__r fixer_utilrrrrrrBaseFixrr#rrrBsF) Hy)  4+*G##Gr__pycache__/fix_idioms.cpython-312.opt-2.pyc000064400000011321152525335740014562 0ustar00 {|j d ddlmZddlmZmZmZmZmZmZdZ dZ GddejZ y)) fixer_base)CallCommaNameNode BlankLinesymsz0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)z(power< 'type' trailer< '(' x=any ')' > >c XeZdZdZdedededed ZfdZdZdZ d Z d Z xZ S) FixIdiomsTz isinstance=comparison<  z8 T=any > | isinstance=comparison< T=any aX > | while_stmt< 'while' while='1' ':' any+ > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' power< list='list' trailer< '(' (not arglist) any ')' > > > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > cVtt| |}|rd|vr|d|dk(r|Sy|S)Nsortedid1id2)superr match)selfnoder __class__s 1/usr/lib64/python3.12/lib2to3/fixes/fix_idioms.pyrzFixIdioms.matchOs< )T ( . Qx1U8#cd|vr|j||Sd|vr|j||Sd|vr|j||Std)N isinstancewhilerz Invalid match)transform_isinstancetransform_whiletransform_sort RuntimeError)rrresultss r transformzFixIdioms.transformZs^ 7 ",,T7; ;  ''g6 6  &&tW5 5/ /rc0|dj}|dj}d|_d|_ttd|t |g}d|vr,d|_t t jtd|g}|j|_|S)NxTr rnnot)cloneprefixrrrrr not_test)rrr r#r$tests rrzFixIdioms.transform_isinstanceds CL    CL   D&EGQ8 '>DK U T':;Dkk  rcZ|d}|jtd|jy)NrTruer))replacerr))rrr ones rrzFixIdioms.transform_whileps#g D 34rc|d}|d}|jd}|jd}|r'|jtd|jnV|rI|j }d|_|jt td|g|jn t d|j|j}d |vr~|r=|jd d |d jf} d j| |d _yt} |jj| |jd d | _yy) Nsortnextlistexprrr.r%zshould not have reached here ) getr/rr)r(rrremove rpartitionjoinrparent append_child) rrr sort_stmt next_stmt list_call simple_exprnewbtwn prefix_linesend_lines rrzFixIdioms.transform_sortts3FO FO KK' kk&)    d8I4D4DE F ##%CCJ   T(^cU,7,>,>!@ A=> > 4<!% 5a 8)A,:M:MN &*ii &= ! # %;  --h7#'//$"7":! r) __name__ __module__ __qualname__explicitTYPECMPPATTERNrr!rrr __classcell__)rs@rr r %s6HN c4K%!GN 0 5$;rr N) r%r fixer_utilrrrrrr rKrJBaseFixr rrrQs3<AA81s; ""s;r__pycache__/fix_reload.cpython-312.opt-2.pyc000064400000002510152525335740014544 0ustar00 {|j9L ddlmZddlmZmZGddej Zy)) fixer_base) ImportAndCall touch_importceZdZdZdZdZdZy) FixReloadTprez power< 'reload' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > c|rF|d}|r?|j|jjk(r|jdjdvryd}t |||}t dd||S)Nobj>***) importlibreloadr)typesymsargumentchildrenvaluerr)selfnoderesultsr namesnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_reload.py transformzFixReload.transformsf %.CHH 2 22LLO))[8'D'51T;- N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrr sM EG rrN)r fixer_utilrrBaseFixrr#rrr's$$ 4 ""r__pycache__/fix_apply.cpython-312.pyc000064400000005323152525335740013470 0ustar00 {|j* jdZddlmZddlmZddlmZddlmZmZm Z GddejZ y) zIFixer for apply(). This converts apply(func, v, k) into (func)(*v, **k).)pytree)token) fixer_base)CallComma parenthesizeceZdZdZdZdZy)FixApplyTa. power< 'apply' trailer< '(' arglist< (not argument ')' > > c|j}|sJ|d}|d}|jd}|r?|j|jjk(r|jdj dvry|r@|j|jjk(r|jdj dk(ry|j }|j}|jtj|jfvrN|j|jk7s*|jdjtjk(r t|}d|_|j}d|_||j}d|_tjtj d |g}|H|j#t%tjtjd|gd |d_t'||| S) Nfuncargskwds>***rr )prefix)symsgettypeargumentchildrenvaluerclonerNAMEatompower DOUBLESTARrrLeafSTARextendrr) selfnoderesultsrr r rr l_newargss 0/usr/lib64/python3.12/lib2to3/fixes/fix_apply.py transformzFixApply.transformsyywvv{{6"  TYY/// a &&+5 TYY$))"4"44]]1%++t3 zz| IIejj$))4 4 YY$** $ ]]2  # #u'7'7 7%D zz|  ::r5s-9 2264z!!64r*__pycache__/fix_intern.cpython-312.opt-2.pyc000064400000002502152525335740014576 0ustar00 {|jxL ddlmZddlmZmZGddej Zy)) fixer_base) ImportAndCall touch_importceZdZdZdZdZdZy) FixInternTprez power< 'intern' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > c|rF|d}|r?|j|jjk(r|jdjdvryd}t |||}t dd||S)Nobj>***)sysinternr)typesymsargumentchildrenvaluerr)selfnoderesultsr namesnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_intern.py transformzFixIntern.transformsf %.CHH 2 22LLO))[8!D'51T5$' N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrr sM EG rrN)r fixer_utilrrBaseFixrr#rrr's$ 4 ""r__pycache__/fix_import.cpython-312.opt-1.pyc000064400000010234152525335740014611 0ustar00 {|j pdZddlmZddlmZmZmZmZddlm Z m Z m Z dZ GddejZy ) zFixer for import statements. If spam is being imported from the local directory, this import: from spam import eggs Becomes: from .spam import eggs And this import: import spam Becomes: from . import spam ) fixer_base)dirnamejoinexistssep) FromImportsymstokenc#VK|g}|r|j}|jtjk(r|jn|jt j k(r6dj|jDcgc]}|jc}n|jt jk(r|j|jdnJ|jt jk(r"|j|jdddn td|ryycc}ww)zF Walks over all the names imported in a dotted_as_names node. rNzunknown node type)poptyper NAMEvaluer dotted_namerchildrendotted_as_nameappenddotted_as_namesextendAssertionError)namespendingnodechs 1/usr/lib64/python3.12/lib2to3/fixes/fix_import.pytraverse_importsrsgG {{} 99 "**  YY$** *''dmm | import_name< 'import' imp=any > cTtt| ||d|jv|_y)Nabsolute_import)superr! start_treefuture_featuresskip)selftreename __class__s rr%zFixImport.start_tree/s& i)$5%)=)== c|jry|d}|jtjk(rit |ds|j d}t |ds|j |jr%d|jz|_|jyyd}d}t|D]}|j |rd}d}|r|r|j|dytd|g}|j|_ |S)Nimprr.FTz#absolute and local imports together) r'rr import_fromhasattrrprobably_a_local_importrchangedrwarningr prefix)r(rresultsr. have_local have_absolutemod_namenews r transformzFixImport.transform3s 99 en 99(( ( c7+ll1oc7+++CII6#))O  7J!M,S1//9!%J$(M 2 LL'LMS3%(CCJJr,c|jdry|jddd}t|j}t ||}t t t|dsydt ddd d fD]}t ||zsy y) Nr/Frz __init__.pyz.pyz.pycz.soz.slz.pydT) startswithsplitrfilenamerrr)r(imp_name base_pathexts rr2z!FixImport.probably_a_local_importUs   s #>>#q)!,DMM* H- d79-}=>3uf=Ci#o&>r,) __name__ __module__ __qualname__ BM_compatiblePATTERNr%r;r2 __classcell__)r+s@rr!r!&sMG > Dr,r!N)__doc__r ros.pathrrrr fixer_utilr r r rBaseFixr!r,rrOs2 ..006&= ""=r,__pycache__/fix_xreadlines.cpython-312.opt-1.pyc000064400000002402152525335740015433 0ustar00 {|jJdZddlmZddlmZGddej Zy)zpFix "for x in f.xreadlines()" -> "for x in f". This fixer will also convert g(f.xreadlines) into g(f.__iter__).) fixer_base)NameceZdZdZdZdZy) FixXreadlinesTz power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > > | power< any+ trailer< '.' no_call='xreadlines' > > c|jd}|r'|jtd|jy|j|dDcgc]}|j c}ycc}w)Nno_call__iter__)prefixcall)getreplacerr clone)selfnoderesultsrxs 5/usr/lib64/python3.12/lib2to3/fixes/fix_xreadlines.py transformzFixXreadlines.transformsR++i(  OODGNNC D LLWV_=_!'')_= >=s A,N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrr sMG ?rrN)__doc__r fixer_utilrBaseFixrrrrr s%D ?J&&?r__pycache__/fix_itertools_imports.cpython-312.opt-1.pyc000064400000005100152525335740017074 0ustar00 {|j&RdZddlmZddlmZmZmZGddejZy)zA Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) ) fixer_base) BlankLinesymstokenc*eZdZdZdezZdZy)FixItertoolsImportsTzT import_from< 'from' 'itertools' 'import' imports=any > c|d}|jtjk(s |js|g}n |j}|dddD]}|jtj k(r|j }|}n.|jtjk(ry|jd}|j }|dvrd|_|j|dvs|j|ddk(rdnd |_|jddxs|g}d } |D]7}| r.|jtjk(r|j3| d z} 9|ra|d jtjk(rA|jj|r!|d jtjk(rA|js t|d dr |j|j} t}| |_|Sy) Nimportsr)imapizipifilter) ifilterfalse izip_longestf filterfalse zip_longestTvalue)typerimport_as_namechildrenrNAMErSTARremovechangedCOMMApopgetattrparentprefixr) selfnoderesultsr rchildmember name_node member_name remove_commaps r:s%G551*,,1r.__pycache__/fix_exec.cpython-312.opt-2.pyc000064400000002626152525335740014232 0ustar00 {|jP ddlmZddlmZmZmZGddej Zy)) fixer_base)CommaNameCallceZdZdZdZdZy)FixExecTzx exec_stmt< 'exec' a=any 'in' b=any [',' c=any] > | exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any > c|j}|d}|jd}|jd}|jg}d|d_|)|j t |jg|)|j t |jgt td||jS)Nabcexec)prefix)symsgetclonerextendrrr)selfnoderesultsrr r r argss //usr/lib64/python3.12/lib2to3/fixes/fix_exec.py transformzFixExec.transformsyy CL KK  KK  {Q = KK!''), - = KK!''), -DL$t{{;;N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMG r$s'** | single=any) ']' > | atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' > ) ')' > > c|jd}|rGtjtj|j g}|j ||}n|d}tjtjdg}|jd|jD|jtjtjd|jj|d_tjtj |}|j|_t#|jdk(r=|jd}|j%|j|jd_|S) Nsingleitems{c3<K|]}|jyw)N)clone).0ns 6/usr/lib64/python3.12/lib2to3/fixes/fix_set_literal.py z*FixSetLiteral.transform..'s9.Qqwwy.s})getrNoder listmakerrreplaceLeafrLBRACEextendchildrenappendRBRACE next_siblingprefix dictsetmakerlenremove) selfnoderesultsr faker literalmakerrs r transformzFixSetLiteral.transformsX& ;;t~~ /?@D NN4 EG$E;;u||S129%..99v{{5<<56"//66  D--w7{{  u~~ ! #q!A HHJ()ENN2  % N)__name__ __module__ __qualname__ BM_compatibleexplicitPATTERNr,r-rrr sMHGr-rN) __doc__lib2to3rrlib2to3.fixer_utilrrBaseFixrr4r-rr9s$ '*)J&&)r-__pycache__/fix_print.cpython-312.opt-1.pyc000064400000006430152525335740014436 0ustar00 {|j dZddlmZddlmZddlmZddlmZddlmZm Z m Z m Z ejdZ Gdd ejZy ) a Fixer for print. Change: 'print' into 'print()' 'print ...' into 'print(...)' 'print ... ,' into 'print(..., end=" ")' 'print >>x, ...' into 'print(..., file=x)' No changes are applied if print_function is imported from __future__ )patcomp)pytree)token) fixer_base)NameCallCommaStringz"atom< '(' [atom|STRING|NAME] ')' >c eZdZdZdZdZdZy)FixPrintTzP simple_stmt< any* bare='print' any* > | print_stmt c :|jd}|r1|jttdg|jy|j dd}t |dk(rtj|drydx}x}}|r|dtk(r|dd}d}|rB|dtjtjdk(r|dj}|d d}|Dcgc]}|j} }| r d | d_|||c|%|j| d t!t#||%|j| d t!t#|||j| d |ttd| } |j| _| Scc}w)Nbareprint)prefix z>>sependfile)getreplacerrrchildrenlen parend_exprmatchr rLeafr RIGHTSHIFTclone add_kwargr repr) selfnoderesults bare_printargsrrrargl_argsn_stmts 0/usr/lib64/python3.12/lib2to3/fixes/fix_print.py transformzFixPrint.transform%s[[(    tDM2&0&7&7 9 : }}QR  t9>k//Q8 cD DH'9DC DGv{{5+;+;TBB7==?D8D)-.##))+. !F1I  ?co1AvufT#Y.?@vufT#Y.?@vvt4d7mV,   /s"Fc(d|_tj|jjt |tj tjd|f}|r |jtd|_|j|y)Nr=r) rrNodesymsargumentrr rEQUALappendr )r%l_nodess_kwdn_expr n_arguments r-r#zFixPrint.add_kwargMsk [[!3!3"&u+"(++ekk3"?"("*+   NN57 # #J z"N)__name__ __module__ __qualname__ BM_compatiblePATTERNr.r#r:r-r r sMG&P #r:r N)__doc__rrrpgen2rr fixer_utilrrr r compile_patternrBaseFixr r@r:r-rFsG 22&g%%6 :#z!!:#r:__pycache__/fix_import.cpython-312.pyc000064400000010234152525335740013652 0ustar00 {|j pdZddlmZddlmZmZmZmZddlm Z m Z m Z dZ GddejZy ) zFixer for import statements. If spam is being imported from the local directory, this import: from spam import eggs Becomes: from .spam import eggs And this import: import spam Becomes: from . import spam ) fixer_base)dirnamejoinexistssep) FromImportsymstokenc#VK|g}|r|j}|jtjk(r|jn|jt j k(r6dj|jDcgc]}|jc}n|jt jk(r|j|jdnJ|jt jk(r"|j|jdddn td|ryycc}ww)zF Walks over all the names imported in a dotted_as_names node. rNzunknown node type)poptyper NAMEvaluer dotted_namerchildrendotted_as_nameappenddotted_as_namesextendAssertionError)namespendingnodechs 1/usr/lib64/python3.12/lib2to3/fixes/fix_import.pytraverse_importsrsgG {{} 99 "**  YY$** *''dmm | import_name< 'import' imp=any > cTtt| ||d|jv|_y)Nabsolute_import)superr! start_treefuture_featuresskip)selftreename __class__s rr%zFixImport.start_tree/s& i)$5%)=)== c|jry|d}|jtjk(rit |ds|j d}t |ds|j |jr%d|jz|_|jyyd}d}t|D]}|j |rd}d}|r|r|j|dytd|g}|j|_ |S)Nimprr.FTz#absolute and local imports together) r'rr import_fromhasattrrprobably_a_local_importrchangedrwarningr prefix)r(rresultsr. have_local have_absolutemod_namenews r transformzFixImport.transform3s 99 en 99(( ( c7+ll1oc7+++CII6#))O  7J!M,S1//9!%J$(M 2 LL'LMS3%(CCJJr,c|jdry|jddd}t|j}t ||}t t t|dsydt ddd d fD]}t ||zsy y) Nr/Frz __init__.pyz.pyz.pycz.soz.slz.pydT) startswithsplitrfilenamerrr)r(imp_name base_pathexts rr2z!FixImport.probably_a_local_importUs   s #>>#q)!,DMM* H- d79-}=>3uf=Ci#o&>r,) __name__ __module__ __qualname__ BM_compatiblePATTERNr%r;r2 __classcell__)r+s@rr!r!&sMG > Dr,r!N)__doc__r ros.pathrrrr fixer_utilr r r rBaseFixr!r,rrOs2 ..006&= ""=r,__pycache__/fix_standarderror.cpython-312.pyc000064400000001501152525335740015207 0ustar00 {|jJdZddlmZddlmZGddej Zy)z%Fixer for StandardError -> Exception.) fixer_base)NameceZdZdZdZdZy)FixStandarderrorTz- 'StandardError' c0td|jS)N Exception)prefix)rr )selfnoderesultss 8/usr/lib64/python3.12/lib2to3/fixes/fix_standarderror.py transformzFixStandarderror.transformsK 44N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrr rr sMG5rrN)__doc__r fixer_utilrBaseFixrrrr rs$,5z))5r__pycache__/fix_raw_input.cpython-312.opt-1.pyc000064400000001660152525335740015312 0ustar00 {|jJdZddlmZddlmZGddej Zy)z2Fixer that changes raw_input(...) into input(...).) fixer_base)NameceZdZdZdZdZy) FixRawInputTzU power< name='raw_input' trailer< '(' [any] ')' > any* > cZ|d}|jtd|jy)Nnameinput)prefix)replacerr )selfnoderesultsrs 4/usr/lib64/python3.12/lib2to3/fixes/fix_raw_input.py transformzFixRawInput.transforms"v T'$++67N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMG8rrN)__doc__r fixer_utilrBaseFixrrrrrs"8 8*$$ 8r__pycache__/fix_apply.cpython-312.opt-1.pyc000064400000005304152525335740014426 0ustar00 {|j* jdZddlmZddlmZddlmZddlmZmZm Z GddejZ y) zIFixer for apply(). This converts apply(func, v, k) into (func)(*v, **k).)pytree)token) fixer_base)CallComma parenthesizeceZdZdZdZdZy)FixApplyTa. power< 'apply' trailer< '(' arglist< (not argument ')' > > c|j}|d}|d}|jd}|r?|j|jjk(r|jdj dvry|r@|j|jjk(r|jdj dk(ry|j }|j}|jtj|jfvrN|j|jk7s*|jdjtjk(r t|}d|_|j}d|_||j}d|_tjtj d |g}|H|j#t%tjtjd|gd |d_t'||| S) Nfuncargskwds>***rr )prefix)symsgettypeargumentchildrenvaluerclonerNAMEatompower DOUBLESTARrrLeafSTARextendrr) selfnoderesultsrr r rr l_newargss 0/usr/lib64/python3.12/lib2to3/fixes/fix_apply.py transformzFixApply.transformsyyvv{{6"  TYY/// a &&+5 TYY$))"4"44]]1%++t3 zz| IIejj$))4 4 YY$** $ ]]2  # #u'7'7 7%D zz|  ::r5s-9 2264z!!64r*__pycache__/fix_except.cpython-312.pyc000064400000007665152525335740013646 0ustar00 {|j |dZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z dZ GddejZy ) aFixer for except statements with named exceptions. The following cases will be converted: - "except E, T:" where T is a name: except E as T: - "except E, T:" where T is not a name, tuple or list: except E as t: T = t This is done because the target of an "except" clause must be a name. - "except E, T:" where T is a tuple or list literal: except E as t: T = t.args )pytree)token) fixer_base)AssignAttrNameis_tupleis_listsymsc#Kt|D]L\}}|jtjk(s$|jdj dk(sA|||dzfNyw)Nexceptr) enumeratetyper except_clausechildrenvalue)nodesins 1/usr/lib64/python3.12/lib2to3/fixes/fix_except.py find_exceptsrsS% 1 66T'' 'zz!}""h.%!*o%!s/AAAceZdZdZdZdZy) FixExceptTa1 try_stmt< 'try' ':' (simple_stmt | suite) cleanup=(except_clause ':' (simple_stmt | suite))+ tail=(['except' ':' (simple_stmt | suite)] ['else' ':' (simple_stmt | suite)] ['finally' ':' (simple_stmt | suite)]) > c |j}|dDcgc]}|j}}|dDcgc]}|j}}t|D]\}} t|jdk(s |jdd\} } } | j t dd| jtjk7r t |jd} | j}d|_ | j | | j} | j}t|D]!\}}t|tjs!nt!| s t#| r t%|t'| t d }n t%|| }t)|dD]}| j+d || j+||v| jdk(sd| _ |jdd Dcgc]}|jc}|z|z}tj|j|Scc}wcc}wcc}w) Ntailcleanupas )prefixargsr )r clonerlenrreplacerrrNAMEnew_namer"r isinstancerNoder r rrreversed insert_child)selfnoderesultsr rrch try_cleanupre_suiteEcommaNnew_Ntarget suite_stmtsrstmtassignchildcrs r transformzFixExcept.transform/syy#*6?3?a ?3,3I,>?,>brxxz,> ?&2;&? "M7=))*a/ - 6 6q ; E1 d44566UZZ' =EWWYF$&FMIIe$!KKME #*"2"2K#,[#94%dFKK8!$:  {gaj!'UDL0I!J!'!6"*+bq/!:,,Q6";((F3XX^ #AHI'@N(,}}Ra'89'8!AGGI'89KG$N{{499h//W4?P:sH:H?:IN)__name__ __module__ __qualname__ BM_compatiblePATTERNr?rrr$sMG.0rFrN)__doc__r#rpgen2rr fixer_utilrrrr r r rBaseFixrrErFrrKs20DD& 90 ""90rF__pycache__/fix_exitfunc.cpython-312.opt-2.pyc000064400000006657152525335740015143 0ustar00 {|j ` ddlmZmZddlmZmZmZmZmZm Z GddejZ y))pytree fixer_base)NameAttrCallCommaNewlinesymsc:eZdZdZdZdZfdZfdZdZxZ S) FixExitfuncTa ( sys_import=import_name<'import' ('sys' | dotted_as_names< (any ',')* 'sys' (',' any)* > ) > | expr_stmt< power< 'sys' trailer< '.' 'exitfunc' > > '=' func=any > ) c&tt| |yN)superr __init__)selfargs __class__s 3/usr/lib64/python3.12/lib2to3/fixes/fix_exitfunc.pyrzFixExitfunc.__init__s k4)40c<tt| ||d|_yr)rr start_tree sys_import)rtreefilenamers rrzFixExitfunc.start_tree!s k4+D(;rc d|vr|j |d|_y|dj}d|_tjt j ttdtd}t||g|j}|j||j|j|dy|jjd}|jt jk(r5|jt!|jtddy|jj"}|jj%|j}|j"} tjt j&td tddg} tjt j(| g} |j+|dzt-|j+|d z| y) NrfuncatexitregisterzKCan't find sys import; Please add an atexit import at the top of your file. import)rcloneprefixrNoder powerrrrreplacewarningchildrentypedotted_as_names append_childrparentindex import_name simple_stmt insert_childr ) rnoderesultsrrcallnamescontaining_stmtpositionstmt_container new_importnews r transformzFixExitfunc.transform%s 7 "&"),"7 v$$& ;;tzz#DND4DE!Htfdkk2 T ?? " LL ? @ ((+ ::-- -   uw '   tHc2 3"oo44O&//55dooFH,33NT%5%5#H~tHc/BC J++d.. =C  ( (Awy A  ( (As ;r) __name__ __module__ __qualname__keep_line_order BM_compatiblePATTERNrrr< __classcell__)rs@rr r s#OM G1#rHs' 'EE=<*$$= g.throw(E) g.throw(E, V) -> g.throw(E(V)) g.throw(E, V, T) -> g.throw(E(V).with_traceback(T)) g.throw("foo"[, V[, T]]) will warn about string exceptions.)pytree)token) fixer_base)NameCallArgListAttris_tupleceZdZdZdZdZy)FixThrowTz power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > c|j}|dj}|jtjur|j |dy|j d}|y|j}t|r+|jddDcgc]}|j}}n d|_ |g}|d}d|vry|dj} d| _ t||} t| td t| ggz} |jtj |j"| y|jt||ycc}w) Nexcz+Python 3 does not support string exceptionsvalargstbwith_traceback)symsclonetyperSTRINGcannot_convertgetr childrenprefixrr rrreplacerNodepower) selfnoderesultsrrrcr throw_argsrewith_tbs 0/usr/lib64/python3.12/lib2to3/fixes/fix_throw.py transformzFixThrow.transforms)yyen""$ 88u|| #   &S T kk%  ; iik C='*||Ab'9:'9!AGGI'9D:CJ5DV_ 7?$$&BBIS$A1d#345"GG   v{{4::w? @   tC /;sEN)__name__ __module__ __qualname__ BM_compatiblePATTERNr)r(r r sMG0r0r N)__doc__rrpgen2rr fixer_utilrrrr r BaseFixr r/r0r(r5s-?<<(0z!!(0r0__pycache__/fix_imports.cpython-312.opt-2.pyc000064400000013636152525335740015006 0ustar00 {|j4R ddlmZddlmZmZidddddddd d d d d ddddddddddddddddddddd d!id"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdCdDdEdFdGdHdIdIdIdJdKdKdLdMdNZdOZefdPZGdQdRejZ yS)T) fixer_base)Name attr_chainStringIOio cStringIOcPicklepickle __builtin__builtinscopy_regcopyregQueuequeue SocketServer socketserver ConfigParser configparserreprreprlib FileDialogztkinter.filedialog tkFileDialog SimpleDialogztkinter.simpledialogtkSimpleDialogtkColorChooserztkinter.colorchoosertkCommonDialogztkinter.commondialogDialogztkinter.dialogTkdndz tkinter.dndtkFontz tkinter.font tkMessageBoxztkinter.messagebox ScrolledTextztkinter.scrolledtext Tkconstantsztkinter.constantsTixz tkinter.tixttkz tkinter.ttkTkintertkinter markupbase _markupbase_winregwinregthread_thread dummy_thread _dummy_threaddbhashzdbm.bsddumbdbmzdbm.dumbdbmzdbm.ndbmgdbmzdbm.gnu xmlrpclibz xmlrpc.clientDocXMLRPCServerz xmlrpc.serverz http.clientz html.entitiesz html.parserz http.cookieszhttp.cookiejarz http.server subprocess collectionsz urllib.parsezurllib.robotparser)SimpleXMLRPCServerhttplibhtmlentitydefs HTMLParserCookie cookielibBaseHTTPServerSimpleHTTPServer CGIHTTPServercommands UserStringUserListurlparse robotparsercLddjtt|zdzS)N(|))joinmapr)memberss 2/usr/lib64/python3.12/lib2to3/fixes/fix_imports.py alternatesrM=s" #dG,- - 33c#Kdj|Dcgc]}d|z c}}t|j}d|d|dd|zd|d|d d |zycc}ww) Nz | zmodule_name='%s'z$name_import=import_name< 'import' ((z;) | multiple_imports=dotted_as_names< any* (z) any* >) > zimport_from< 'from' (%s) 'import' ['('] ( any | import_as_name< any 'as' any > | import_as_names< any* >) [')'] > z(import_name< 'import' (dotted_as_name< (zg) 'as' any > | multiple_imports=dotted_as_names< any* dotted_as_name< (z!) 'as' any > any* >) > z3power< bare_with_attr=(%s) trailer<'.' any > any* >)rIrMkeys)mappingkeymod_list bare_namess rL build_patternrUAszzwGw-3wGHHGLLN+J8 %%  8 %% @* LL!HsA( A#A A(cNeZdZdZdZeZdZdZfdZ fdZ fdZ dZ xZ S) FixImportsTcJdjt|jS)NrG)rIrUrQ)selfs rLrUzFixImports.build_pattern`sxx dll344rNcT|j|_tt|yN)rUPATTERNsuperrWcompile_pattern)rZ __class__s rLr_zFixImports.compile_patterncs"))+  j$/1rNctt| |}|r%d|vrtfdt |dDry|Sy)Nbare_with_attrc3.K|] }|ywr\).0objmatchs rL z#FixImports.match..qsI.Hsc .HsparentF)r^rWrganyr)rZnoderesultsrgr`s @rLrgzFixImports.matchjsEj$-+  w.Ijx.HIINrNc<tt| ||i|_yr\)r^rW start_treereplace)rZtreefilenamer`s rLrnzFixImports.start_treevs j$*4: rNc|jd}|r|j}|j|}|jt ||j d|vr||j|<d|vr'|j |}|r|j||yyy|dd}|jj|j}|r'|jt ||j yy)N module_name)prefix name_importmultiple_importsrb)getvaluerQrorrtrg transform)rZrkrl import_modmod_namenew_name bare_names rLrzzFixImports.transformzs[[/ !''H||H-H   tHZ5F5FG H'*2 X&!W, **T*NN41 - 01!4I||'' 8H!!$x 8H8H"IJrN)__name__ __module__ __qualname__ BM_compatiblekeep_line_orderMAPPINGrQ run_orderrUr_rgrnrz __classcell__)r`s@rLrWrWUs3MOGI52 KrNrWN) r fixer_utilrrrrMrUBaseFixrWrdrNrLrs5)2 :2  2  h2  :2  y 2  G 2  > 2  >2  92  -2  /2  12  32  32  32  %2  M!2 " ^#2 $ /%2 & 1'2 ( -)2 * -+2 , --2 . i/2 0 12 2 h32 4 Y52 6 ?72 : Y;2 < j=2 > *?2 @ 9A2 B C2 D oE2 F"1#-'#(*,)#'%&/c2 j4"M(<K##<KrN__pycache__/fix_ws_comma.cpython-312.pyc000064400000003021152525335740014141 0ustar00 {|jBVdZddlmZddlmZddlmZGddej Zy)zFixer that changes 'a ,b' into 'a, b'. This also changes '{a :b}' into '{a: b}', but does not touch other uses of colons. It does not touch other uses of whitespace. )pytree)token) fixer_baseceZdZdZdZej ejdZej ejdZ ee fZ dZ y) FixWsCommaTzH any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]> ,:c|j}d}|jD]S}||jvr*|j}|j r d|vrd|_d};|r|j}|sd|_d}U|S)NF T )clonechildrenSEPSprefixisspace)selfnoderesultsnewcommachildrs 3/usr/lib64/python3.12/lib2to3/fixes/fix_ws_comma.py transformzFixWsComma.transformstjjl\\E !>>#F(:#%EL"\\F!'* " N) __name__ __module__ __qualname__explicitPATTERNrLeafrCOMMACOLONrrrrrr sJHG FKK S )E FKK S )E 5>DrrN)__doc__r rpgen2rrBaseFixrr$rrr(s'##r__pycache__/fix_paren.cpython-312.opt-1.pyc000064400000003127152525335740014407 0ustar00 {|jNdZddlmZddlmZmZGddej Zy)ztFixer that adds parentheses where they are required This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``.) fixer_base)LParenRParenceZdZdZdZdZy)FixParenTa atom< ('[' | '(') (listmaker< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > > | testlist_gexp< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > >) (']' | ')') > c|d}t}|j|_d|_|jd||jt y)Ntarget)rprefix insert_child append_childr)selfnoderesultsr lparens 0/usr/lib64/python3.12/lib2to3/fixes/fix_paren.py transformzFixParen.transform%sE"   Av&FH%N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG,&rrN)__doc__r r fixer_utilrrBaseFixrrrrrs%C' &z!! &r__pycache__/fix_metaclass.cpython-312.opt-2.pyc000064400000021441152525335740015256 0ustar00 {|j  ddlmZddlmZddlmZmZmZdZdZ dZ dZ dZ d Z Gd d ejZy ) ) fixer_base)token)symsNodeLeafc |jD]}|jtjk(r t |cS|jtj k(sK|jsX|jd}|jtj k(s|js|jd}t|ts|jdk(syy)N __metaclass__TF) childrentypersuite has_metaclass simple_stmt expr_stmt isinstancervalue)parentnode expr_node left_sides 4/usr/lib64/python3.12/lib2to3/fixes/fix_metaclass.pyrrs  99 " & & YY$** *t}} a(I~~/I4F4F%..q1 i.!?:  c |jD]!}|jtjk(s!yt |jD]$\}}|jt j k(s$n tdttjg}|j|dzdrT|j|dz}|j|j|j|j|dzdrT|j||}y)NzNo class suite and no ':'!) r r rr enumeraterCOLON ValueErrorr append_childcloneremove)cls_noderir move_nodes rfixup_parse_treer$-s!! 99 " " X../4 99 # 0566 R E   AaCD !%%ac*  9??,-   AaCD ! % Drcz t|jD]$\}}|jtjk(s$ny|j t tjg}t tj|g}|j|drN|j|}|j|j|j |j|drN|j|||jdjd}|jdjd} | j|_ y)Nr )rr r rSEMIr rrrrrr insert_childprefix) rr" stmt_nodesemi_indrnew_exprnew_stmtr# new_leaf1 old_leaf1s rfixup_simple_stmtr/Gs$I$6$67$ 99 " 8 KKMDNNB'HD$$xj1H   XY '&&x0 ioo/0   XY ' 8$!!!$--a0I""1%..q1I ''Irc|jrI|jdjtjk(r|jdj yyy)N)r r rNEWLINEr )rs rremove_trailing_newliner3_s@ }}r*//5==@ b  "A}rc#6K|jD]!}|jtjk(s!n t dt t |jD]\}}|jtjk(s$|js1|jd}|jtjk(s^|jsk|jd}t|ts|jdk(st|||t||||fyw)NzNo class suite!r r )r r rr rlistrrrrrrr/r3)r!rr" simple_noder left_nodes r find_metasr8ds!! 99 " "*++y78;   t// /K4H4H#,,Q/I~~/I4F4F%..q1 i.!?:%dA{;+K8K009s/-DAD D ,D: DD'D7"Dc |jddd}|r1|j}|jtjk(rn|r1|rv|j}t |t r1|jtjk7r|jrd|_y|j|jddd|ruyy)Nr1) r popr rINDENTrrDEDENTr(extend)r kidsrs r fixup_indentr@{s >>$B$ D xxz 99 $   xxz dD !dii5<<&?{{   KK dd+ , rceZdZdZdZdZy) FixMetaclassTz classdef ct|syt|d}t|D]\}}}|}|j|jdj }t |jdk(r|jdj tjk(r|jd}n4|jdj} ttj| g}|jd|nt |jdk(r-ttjg}|jd|nt |jdk(rttjg}|jdttjd|jd||jdttj dn t#d |jdjd} d | _| j&} |jr1|j)ttj*d d | _nd | _|jd} d | jd_d | jd_|j)|t-|js^|jt|d} | | _|j)| |j)ttj.dyt |jdkDr|jdj tj0k(rt|jdj tj2k(rIt|d} |jd| |jdttj.dyyyy)Nr r)(zUnexpected class definition metaclass, r:rpass r1)rr$r8r r r lenrarglistrr set_childr'rrRPARLPARrrr(rCOMMAr@r2r<r=)selfrresultslast_metaclassr r"stmt text_typerQrmeta_txtorig_meta_prefixr pass_leafs r transformzFixMetaclass.transformsT" (.NE1d!N KKM/MM!$))  t}}  "}}Q$$ 4--*q)//1t||fX6q'*  1 $4<<,G   a )  1 $4<<,G   aejj#!6 7   a )   aejj#!6 7:; ;"**1-66q9$#??     ekk3!7 8!HO HO#++A. ') 1$') 1$^,U~~ LLNY/I/I    i (   d5==$7 8  1 $..$))U\\9..$))U\\9Y/I   r9 -   r4 t#< = ::%rN)__name__ __module__ __qualname__ BM_compatiblePATTERNr^rrrBrBsMGL>rrBN)r:rpygramr fixer_utilrrrrr$r/r3r8r@BaseFixrBrdrrrhsJ())&4(0# 1.-,S>:%%S>r__pycache__/fix_idioms.cpython-312.pyc000064400000012526152525335740013632 0ustar00 {|j fdZddlmZddlmZmZmZmZmZm Z dZ dZ GddejZ y) aAdjust some old Python 2 idioms to their modern counterparts. * Change some type comparisons to isinstance() calls: type(x) == T -> isinstance(x, T) type(x) is T -> isinstance(x, T) type(x) != T -> not isinstance(x, T) type(x) is not T -> not isinstance(x, T) * Change "while 1:" into "while True:". * Change both v = list(EXPR) v.sort() foo(v) and the more general v = EXPR v.sort() foo(v) into v = sorted(EXPR) foo(v) ) fixer_base)CallCommaNameNode BlankLinesymsz0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)z(power< 'type' trailer< '(' x=any ')' > >c XeZdZdZdedededed ZfdZdZdZ d Z d Z xZ S) FixIdiomsTz isinstance=comparison<  z8 T=any > | isinstance=comparison< T=any aX > | while_stmt< 'while' while='1' ':' any+ > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' power< list='list' trailer< '(' (not arglist) any ')' > > > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > | sorted=any< any* simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' > sort= simple_stmt< power< id2=any trailer< '.' 'sort' > trailer< '(' ')' > > '\n' > next=any* > cVtt| |}|rd|vr|d|dk(r|Sy|S)Nsortedid1id2)superr match)selfnoder __class__s 1/usr/lib64/python3.12/lib2to3/fixes/fix_idioms.pyrzFixIdioms.matchOs< )T ( . Qx1U8#cd|vr|j||Sd|vr|j||Sd|vr|j||Std)N isinstancewhilerz Invalid match)transform_isinstancetransform_whiletransform_sort RuntimeError)rrresultss r transformzFixIdioms.transformZs^ 7 ",,T7; ;  ''g6 6  &&tW5 5/ /rc0|dj}|dj}d|_d|_ttd|t |g}d|vr,d|_t t jtd|g}|j|_|S)NxTr rnnot)cloneprefixrrrrr not_test)rrr r#r$tests rrzFixIdioms.transform_isinstanceds CL    CL   D&EGQ8 '>DK U T':;Dkk  rcZ|d}|jtd|jy)NrTruer))replacerr))rrr ones rrzFixIdioms.transform_whileps#g D 34rc|d}|d}|jd}|jd}|r'|jtd|jnV|rI|j }d|_|jt td|g|jn t d|j|j}d |vr|r=|jd d |d jf} d j| |d _y|jsJ|jJt} |jj| |j| usJ|jd d | _yy) Nsortnextlistexprrr.r%zshould not have reached here )getr/rr)r(rrremove rpartitionjoinparent next_siblingr append_child) rrr sort_stmt next_stmt list_call simple_exprnewbtwn prefix_linesend_lines rrzFixIdioms.transform_sorttsfFO FO KK' kk&)    d8I4D4DE F ##%CCJ   T(^cU,7,>,>!@ A=> > 4<!% 5a 8)A,:M:MN &*ii &= ! # '''' --555$;  --h7 --999#'//$"7":! r) __name__ __module__ __qualname__explicitTYPECMPPATTERNrr!rrr __classcell__)rs@rr r %s6HN c4K%!GN 0 5$;rr N)__doc__r%r fixer_utilrrrrrr rLrKBaseFixr rrrSs3<AA81s; ""s;r__pycache__/fix_renames.cpython-312.opt-2.pyc000064400000005337152525335740014742 0ustar00 {|jh ddlmZddlmZmZdddiiZiZdZdZGdd ejZ y ) ) fixer_base)Name attr_chainsysmaxintmaxsizecLddjtt|zdzS)N(|))joinmaprepr)memberss 2/usr/lib64/python3.12/lib2to3/fixes/fix_renames.py alternatesrs" #dG,- - 33c #KttjD]J\}}t|jD])\}}|t||f<d|d|d|dd|d|d+Lyw)Nz3 import_from< 'from' module_name=z, 'import' ( attr_name=z | import_as_name< attr_name=z! 'as' any >) > z& power< module_name=z trailer< '.' attr_name=z > any* > )listMAPPINGitemsLOOKUP)modulereplaceold_attrnew_attrs r build_patternrsl 0"&w}}"7 Hh)1FFH% & 85 5  + +#81sA,A.cXeZdZdZdj eZdZfdZdZ xZ S) FixRenamesTr precztt| |}|r!tfdt |dDry|Sy)Nc3.K|] }|yw)N).0objmatchs r z#FixRenames.match..5sD)C#5:)CsparentF)superrr&anyr)selfnoderesultsr& __class__s @rr&zFixRenames.match1s;j$-+ DD()CDDNrc|jd}|jd}|rI|rFt|j|jf}|jt ||j yyy)N module_name attr_name)prefix)getrvaluerrr2)r+r,r-mod_namer1rs r transformzFixRenames.transform>s^;;}-KK ,   x~~y?@H   d8I4D4DE F"8r) __name__ __module__ __qualname__ BM_compatibler rPATTERNorderr&r6 __classcell__)r.s@rrr*s(Mhh}'G EGrrN) r fixer_utilrrrrrrBaseFixrr#rrrAsF) Hy)  4+*G##Gr__pycache__/fix_unicode.cpython-312.opt-2.pyc000064400000003707152525335740014735 0ustar00 {|jR ddlmZddlmZdddZGddej Zy) )token) fixer_basechrstr)unichrunicodec,eZdZdZdZfdZdZxZS) FixUnicodeTzSTRING | 'unicode' | 'unichr'cTtt| ||d|jv|_y)Nunicode_literals)superr start_treefuture_featuresr )selftreefilename __class__s 2/usr/lib64/python3.12/lib2to3/fixes/fix_unicode.pyrzFixUnicode.start_trees' j$*4: 2d6J6J Jc $|jtjk(r*|j}t|j |_|S|jtj k(r|j }|jsY|ddvrRd|vrNdj|jdDcgc]$}|jddjdd&c}}|dd vr|d d}||j k(r|S|j}||_|Sycc}w) Nz'"\z\\z\uz\\uz\Uz\\UuU) typerNAMEclone_mappingvalueSTRINGr joinsplitreplace)rnoderesultsnewvalvs r transformzFixUnicode.transforms 99 "**,C ,CIJ YY%,, &**C((SVu_jj YYu-"-IIeV,44UFC-"1v~!"gdjj  **,CCIJ'"s&)D )__name__ __module__ __qualname__ BM_compatiblePATTERNrr) __classcell__)rs@rr r sM-GKrr N)pgen2rrrBaseFixr rrr4s.% 0##r__pycache__/fix_input.cpython-312.opt-1.pyc000064400000002357152525335740014445 0ustar00 {|j~dZddlmZddlmZmZddlmZejdZGddejZ y) z4Fixer that changes input(...) into eval(input(...)).) fixer_base)CallName)patcompz&power< 'eval' trailer< '(' any ')' > >ceZdZdZdZdZy)FixInputTzL power< 'input' args=trailer< '(' [any] ')' > > ctj|jjry|j}d|_t t d|g|jS)Neval)prefix)contextmatchparentcloner rr)selfnoderesultsnews 0/usr/lib64/python3.12/lib2to3/fixes/fix_input.py transformzFixInput.transformsF ==++ , jjl DL3% <<N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG=rrN) __doc__r r fixer_utilrrrcompile_patternr BaseFixrrrrr"s::# "' ! !"J K =z!! =r__pycache__/fix_urllib.cpython-312.opt-2.pyc000064400000020644152525335740014577 0ustar00 {|j  ddlmZmZddlmZmZmZmZmZm Z m Z dgdfdgdfddgfgdgd fdd d gfgd Z e d je dddZ GddeZy)) alternates FixImports)NameComma FromImportNewlinefind_indentationNodesymszurllib.request) URLopenerFancyURLopener urlretrieve _urlopenerurlopen urlcleanup pathname2url url2pathname getproxiesz urllib.parse)quote quote_plusunquote unquote_plus urlencode splitattr splithost splitnport splitpasswd splitport splitquerysplittag splittype splituser splitvaluez urllib.errorContentTooShortError)rinstall_opener build_openerRequestOpenerDirector BaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessor ProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandler HTTPHandler HTTPSHandler FileHandler FTPHandlerCacheFTPHandlerUnknownHandlerURLError HTTPError)urlliburllib2r?r>c #Kt}tjD]N\}}|D]D}|\}}t|}d|d|dd|d|d|dd|zd |zd |d |d FPyw) Nzimport_name< 'import' (module=zB | dotted_as_names< any* module=z any* >) > zimport_from< 'from' mod_member=z* 'import' ( member=z | import_as_name< member=z] 'as' any > | import_as_names< members=any* >) > zIimport_from< 'from' module_star=%r 'import' star='*' > ztimport_name< 'import' dotted_as_name< module_as=%r 'as' any > > zpower< bare_with_attr=z trailer< '.' member=z > any* > )setMAPPINGitemsr)bare old_modulechangeschange new_modulememberss 1/usr/lib64/python3.12/lib2to3/fixes/fix_urllib.py build_patternrL0s 5D&}} GF"( J )G$Z1 1 $Wg7 7"# #"# # $W. .! /sA1A3c*eZdZdZdZdZdZdZy) FixUrllibc4djtS)N|)joinrL)selfs rKrLzFixUrllib.build_patternIsxx ((cT |jd}|j}g}t|jddD]+}|j t |d|t g-|jt t|jdd||j|y)Nmodulerprefix) getrXrCvalueextendrrappendreplace)rRnoderesults import_modprefnamesnames rKtransform_importzFixUrllib.transform_importLs [[*   J,,-cr2D LL$tAwt4eg> ?3 T'*"2"23B7:4HI5!rScF |jd}|j}|jd}|ryt|tr|d}d}t|j D]}|j |dvs|d}n|r|j t||y|j|dyg}i} |d} | D]}|jtjk(r3|jdj } |jdj } n|j } d} | d k7sgt|j D]I}| |dvs |d| vr|j|d| j|dgj|Kg} t|}d }d }|D]}| |}g}|dd D]3}|j!||||jt#5|j!||d |t%||}|r%|j&jj)|r||_| j|d }| rMg}| dd D]}|j!|t+g|j| d |j |y|j|dy)N mod_membermemberrr@rW!This is an invalid module elementrJ,Tc\|jtjk(rxt|jdj ||jdj |jdj g}ttj|gSt|j |gS)NrrWr@ri)typer import_as_namerchildrenrZcloner )rcrXkidss rK handle_namez/FixUrllib.transform_member..handle_names99 3 33 q!1!7!7G MM!,224 MM!,2246D!!4!4d;<<TZZ788rSrVFzAll module elements are invalid)rYrX isinstancelistrCrZr]rcannot_convertrlr rmrnr\ setdefaultr r[rrparentendswithr)rRr^r_rfrargnew_namerHmodulesmod_dictrJas_name member_name new_nodes indentationfirstrqrUeltsrbeltnewnodesnew_nodes rKtransform_memberzFixUrllib.transform_member\s [[.   X& &$'H!*"2"23<<6!9,%ayH4""4#>?##D*MN GHi(G!;;$"5"55$ooa066G"(//!"4":":K"(,,K"G#%")**:*:";&&)3%ay8 'vay 9$//q 2>EEfM #<"I*40KE 9"'9CLLS$!78LL)% [b489 / 2 2 ; ;K H!,CJ  %" )#2HLL(GI!67!/ Yr]+ U###D*KLrScN |jd}|jd}d}t|tr|d}t|jD]}|j|dvs|d}n|r'|j t ||jy|j|dy)Nbare_with_attrrgrr@rWrh) rYrrrsrCrZr]rrXrt)rRr^r_ module_dotrgrxrHs rK transform_dotzFixUrllib.transform_dots<[[!12 X& fd #AYFj../F||vay(!!90    tH+5+<+< > ?   &I JrScl|jdr|j||y|jdr|j||y|jdr|j||y|jdr|j |dy|jdr|j |dyy)NrUrfr module_starzCannot handle star imports. module_asz#This module is now multiple modules)rYrdrrrt)rRr^r_s rK transformzFixUrllib.transforms ;;x  ! !$ 0 [[ &  ! !$ 0 [[) *   tW - [[ '   &C D [[ %   &K L&rSN)__name__ __module__ __qualname__rLrdrrrrSrKrNrNGs )" JMXK" MrSrNN)lib2to3.fixes.fix_importsrrlib2to3.fixer_utilrrrrr r r rCr\rLrNrrSrKrs=>>>"CD ?@  +,. /" ' ( -/  B '(+A./..}M }MrS__pycache__/fix_raw_input.cpython-312.pyc000064400000001660152525335740014353 0ustar00 {|jJdZddlmZddlmZGddej Zy)z2Fixer that changes raw_input(...) into input(...).) fixer_base)NameceZdZdZdZdZy) FixRawInputTzU power< name='raw_input' trailer< '(' [any] ')' > any* > cZ|d}|jtd|jy)Nnameinput)prefix)replacerr )selfnoderesultsrs 4/usr/lib64/python3.12/lib2to3/fixes/fix_raw_input.py transformzFixRawInput.transforms"v T'$++67N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMG8rrN)__doc__r fixer_utilrBaseFixrrrrrs"8 8*$$ 8r__pycache__/fix_imports2.cpython-312.pyc000064400000001144152525335740014117 0ustar00 {|j!HdZddlmZdddZGddejZy)zTFix incompatible imports and module references that must be fixed after fix_imports.) fix_importsdbm)whichdbanydbmceZdZdZeZy) FixImports2N)__name__ __module__ __qualname__ run_orderMAPPINGmapping3/usr/lib64/python3.12/lib2to3/fixes/fix_imports2.pyrr s IGrrN)__doc__rr FixImportsrrrrrs.  +((r__pycache__/fix_imports.cpython-312.pyc000064400000013732152525335740014043 0ustar00 {|j4TdZddlmZddlmZmZiddddddd d d d d ddddddddddddddddddddd d!d"id#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdDdEdFdGdHdIdJdJdJdKdLdLdMdNdOZdPZefdQZGdRdSejZ yT)Uz/Fix incompatible imports and module references.) fixer_base)Name attr_chainStringIOio cStringIOcPicklepickle __builtin__builtinscopy_regcopyregQueuequeue SocketServer socketserver ConfigParser configparserreprreprlib FileDialogztkinter.filedialog tkFileDialog SimpleDialogztkinter.simpledialogtkSimpleDialogtkColorChooserztkinter.colorchoosertkCommonDialogztkinter.commondialogDialogztkinter.dialogTkdndz tkinter.dndtkFontz tkinter.font tkMessageBoxztkinter.messagebox ScrolledTextztkinter.scrolledtext Tkconstantsztkinter.constantsTixz tkinter.tixttkz tkinter.ttkTkintertkinter markupbase _markupbase_winregwinregthread_thread dummy_thread _dummy_threaddbhashzdbm.bsddumbdbmzdbm.dumbdbmzdbm.ndbmgdbmzdbm.gnu xmlrpclibz xmlrpc.clientDocXMLRPCServerz xmlrpc.serverz http.clientz html.entitiesz html.parserz http.cookieszhttp.cookiejarz http.server subprocess collectionsz urllib.parsezurllib.robotparser)SimpleXMLRPCServerhttplibhtmlentitydefs HTMLParserCookie cookielibBaseHTTPServerSimpleHTTPServer CGIHTTPServercommands UserStringUserListurlparse robotparsercLddjtt|zdzS)N(|))joinmapr)memberss 2/usr/lib64/python3.12/lib2to3/fixes/fix_imports.py alternatesrM=s" #dG,- - 33c#Kdj|Dcgc]}d|z c}}t|j}d|d|dd|zd|d|d d |zycc}ww) Nz | zmodule_name='%s'z$name_import=import_name< 'import' ((z;) | multiple_imports=dotted_as_names< any* (z) any* >) > zimport_from< 'from' (%s) 'import' ['('] ( any | import_as_name< any 'as' any > | import_as_names< any* >) [')'] > z(import_name< 'import' (dotted_as_name< (zg) 'as' any > | multiple_imports=dotted_as_names< any* dotted_as_name< (z!) 'as' any > any* >) > z3power< bare_with_attr=(%s) trailer<'.' any > any* >)rIrMkeys)mappingkeymod_list bare_namess rL build_patternrUAszzwGw-3wGHHGLLN+J8 %%  8 %% @* LL!HsA( A#A A(cNeZdZdZdZeZdZdZfdZ fdZ fdZ dZ xZ S) FixImportsTcJdjt|jS)NrG)rIrUrQ)selfs rLrUzFixImports.build_pattern`sxx dll344rNcT|j|_tt|yN)rUPATTERNsuperrWcompile_pattern)rZ __class__s rLr_zFixImports.compile_patterncs"))+  j$/1rNctt| |}|r%d|vrtfdt |dDry|Sy)Nbare_with_attrc3.K|] }|ywr\).0objmatchs rL z#FixImports.match..qsI.Hsc .HsparentF)r^rWrganyr)rZnoderesultsrgr`s @rLrgzFixImports.matchjsEj$-+  w.Ijx.HIINrNc<tt| ||i|_yr\)r^rW start_treereplace)rZtreefilenamer`s rLrnzFixImports.start_treevs j$*4: rNc|jd}|r|j}|j|}|jt ||j d|vr||j|<d|vr'|j |}|r|j||yyy|dd}|jj|j}|r'|jt ||j yy)N module_name)prefix name_importmultiple_importsrb)getvaluerQrorrtrg transform)rZrkrl import_modmod_namenew_name bare_names rLrzzFixImports.transformzs[[/ !''H||H-H   tHZ5F5FG H'*2 X&!W, **T*NN41 - 01!4I||'' 8H!!$x 8H8H"IJrN)__name__ __module__ __qualname__ BM_compatiblekeep_line_orderMAPPINGrQ run_orderrUr_rgrnrz __classcell__)r`s@rLrWrWUs3MOGI52 KrNrWN) __doc__r fixer_utilrrrrMrUBaseFixrWrdrNrLrs5)2 :2  2  h2  :2  y 2  G 2  > 2  >2  92  -2  /2  12  32  32  32  %2  M!2 " ^#2 $ /%2 & 1'2 ( -)2 * -+2 , --2 . i/2 0 12 2 h32 4 Y52 6 ?72 : Y;2 < j=2 > *?2 @ 9A2 B C2 D oE2 F"1#-'#(*,)#'%&/c2 j4"M(<K##<KrN__pycache__/fix_exec.cpython-312.opt-1.pyc000064400000003070152525335740014223 0ustar00 {|jRdZddlmZddlmZmZmZGddejZy)zFixer for exec. This converts usages of the exec statement into calls to a built-in exec() function. exec code in ns1, ns2 -> exec(code, ns1, ns2) ) fixer_base)CommaNameCallceZdZdZdZdZy)FixExecTzx exec_stmt< 'exec' a=any 'in' b=any [',' c=any] > | exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any > c|j}|d}|jd}|jd}|jg}d|d_|)|j t |jg|)|j t |jgt td||jS)Nabcexec)prefix)symsgetclonerextendrrr)selfnoderesultsrr r r argss //usr/lib64/python3.12/lib2to3/fixes/fix_exec.py transformzFixExec.transformsyy CL KK  KK  {Q = KK!''), - = KK!''), -DL$t{{;;N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMG r%s'**rs.  +((r__pycache__/fix_sys_exc.cpython-312.pyc000064400000003734152525335740014024 0ustar00 {|j bdZddlmZddlmZmZmZmZmZm Z m Z GddejZ y)zFixer for sys.exc_{type, value, traceback} sys.exc_type -> sys.exc_info()[0] sys.exc_value -> sys.exc_info()[1] sys.exc_traceback -> sys.exc_info()[2] ) fixer_base)AttrCallNameNumber SubscriptNodesymscTeZdZgdZdZddj deDzZdZy) FixSysExc)exc_type exc_value exc_tracebackTzN power< 'sys' trailer< dot='.' attribute=(%s) > > |c#&K|] }d|z yw)z'%s'N).0es 2/usr/lib64/python3.12/lib2to3/fixes/fix_sys_exc.py zFixSysExc.s:AVaZsc|dd}t|jj|j}t t d|j }tt d|}|dj |djd_|jt|ttj||j S)N attributeexc_info)prefixsysdot)rrindexvaluerrrrchildrenappendrr r power)selfnoderesultssys_attrrcallattrs r transformzFixSysExc.transforms;'*t}}**8>>:;D$X__=DK&%,U^%:%:Q" Ie$%DJJT[[99N)__name__ __module__ __qualname__r BM_compatiblejoinPATTERNr*rr+rr r s/9HMHH:::;G:r+r N) __doc__r fixer_utilrrrrrr r BaseFixr rr+rr6s*HHH: "":r+__pycache__/fix_input.cpython-312.opt-2.pyc000064400000002256152525335740014444 0ustar00 {|j| ddlmZddlmZmZddlmZej dZGddejZ y)) fixer_base)CallName)patcompz&power< 'eval' trailer< '(' any ')' > >ceZdZdZdZdZy)FixInputTzL power< 'input' args=trailer< '(' [any] ')' > > ctj|jjry|j}d|_t t d|g|jS)Neval)prefix)contextmatchparentcloner rr)selfnoderesultsnews 0/usr/lib64/python3.12/lib2to3/fixes/fix_input.py transformzFixInput.transformsF ==++ , jjl DL3% <<N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG=rrN) r r fixer_utilrrrcompile_patternr BaseFixrrrrr!s::# "' ! !"J K =z!! =r__pycache__/fix_next.cpython-312.pyc000064400000010415152525335740013317 0ustar00 {|jf dZddlmZddlmZddlmZddlm Z m Z m Z dZ GddejZd Zd Zd Zy ) z.Fixer for it.next() -> next(it), per PEP 3114.)token)python_symbols) fixer_base)NameCall find_bindingz;Calls to builtin next() possibly shadowed by global bindingc0eZdZdZdZdZfdZdZxZS)FixNextTa power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > > | power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > > | classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='next' parameters< '(' NAME ')' > any+ > any* > > | global=global_stmt< 'global' any* 'next' any* > prectt| ||td|}|r|j |t d|_yd|_y)NnextTF)superr start_treerwarning bind_warning shadowed_next)selftreefilenamen __class__s //usr/lib64/python3.12/lib2to3/fixes/fix_next.pyrzFixNext.start_tree$sA gt'h7  & LLL )!%D !&D c4|sJ|jd}|jd}|jd}|r|jr'|jtd|jy|Dcgc]}|j }}d|d_|jt td|j|y|r)td|j}|j|y|r{t|rU|d }dj|Dcgc] }t|c}jd k(r|j|ty|jtdyd |vr|j|td |_yycc}wcc}w) Nbaseattrname__next__)prefixr head __builtin__globalT) getrreplacerrcloneris_assign_targetjoinstrstriprr)rnoderesultsrrrrr"s r transformzFixNext.transform.sIw{{6"{{6"{{6" !! T*T[[AB+/04a 40!#Q T$vdkk"BDIJ Z 4A LLO  %v77D1DqCFD1288:mKLL|4 LLj) *  LL| ,!%D !!12s 1FF) __name__ __module__ __qualname__ BM_compatiblePATTERNorderrr. __classcell__)rs@rr r s M G E'&rr ct|}|y|jD]/}|jtjk(ryt ||s/yy)NFT) find_assignchildrentyperEQUAL is_subtree)r,assignchilds rr(r(QsG  F ~ :: $ t $ ! rc|jtjk(r|S|jtjk(s |jyt |jSN)r9syms expr_stmt simple_stmtparentr7)r,s rr7r7]sD yyDNN"  yyD$$$ (; t{{ ##rcL|k(rytfd|jDS)NTc36K|]}t|ywr?)r;).0cr,s r zis_subtree..gs:Mqz!T"Ms)anyr8)rootr,s `rr;r;ds" t| :DMM: ::rN)__doc__pgen2rpygramrr@r r fixer_utilrrrrBaseFixr r(r7r;rrrQs@4+11L :&j  :&@ $;r__pycache__/fix_asserts.cpython-312.pyc000064400000002766152525335740014037 0ustar00 {|jbdZddlmZddlmZedddddd d dddddd d ZGddeZy)z5Fixer that replaces deprecated unittest method names.)BaseFix)Name assertTrue assertEqualassertNotEqualassertAlmostEqualassertNotAlmostEqual assertRegexassertRaisesRegex assertRaises assertFalse)assert_ assertEqualsassertNotEqualsassertAlmostEqualsassertNotAlmostEqualsassertRegexpMatchesassertRaisesRegexpfailUnlessEqual failIfEqualfailUnlessAlmostEqualfailIfAlmostEqual failUnlessfailUnlessRaisesfailIfcHeZdZddjeeezZdZy) FixAssertszH power< any+ trailer< '.' meth=(%s)> any* > |c|dd}|jttt||jy)Nmeth)prefix)replacerNAMESstrr")selfnoderesultsnames 2/usr/lib64/python3.12/lib2to3/fixes/fix_asserts.py transformzFixAsserts.transform s0vq! T%D *4;;?@N) __name__ __module__ __qualname__joinmapreprr$PATTERNr+r,r*rrs'HHSu-./GAr,rN)__doc__ fixer_baser fixer_utilrdictr$rr4r,r*r9sR;! $*0%*! -,#  $AAr,__pycache__/fix_itertools.cpython-312.pyc000064400000003666152525335740014377 0ustar00 {|j JdZddlmZddlmZGddej Zy)aT Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363) imports from itertools are fixed in fix_itertools_import.py If itertools is imported as something else (ie: import itertools as it; it.izip(spam, eggs)) method calls will not get fixed. ) fixer_base)Namec2eZdZdZdZdezZdZdZy) FixItertoolsTz7('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')z power< it='itertools' trailer< dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > > | power< func=%(it_funcs)s trailer< '(' [any] ')' > > cPd}|dd}d|vr_|jdvrQ|d|d}}|j}|j|j|jj ||xs |j}|j t |jdd|y)Nfuncit) ifilterfalse izip_longestdot)prefix)valuerremoveparentreplacer)selfnoderesultsrr rr s 4/usr/lib64/python3.12/lib2to3/fixes/fix_itertools.py transformzFixItertools.transformsvq! GO JJ> >u~wt}CYYF IIK JJL KK   %&4;; T$**QR.89N) __name__ __module__ __qualname__ BM_compatibleit_funcslocalsPATTERN run_orderrrrrrs+MHH H GI:rrN)__doc__r fixer_utilrBaseFixrr#rrr(s$::%%:r__pycache__/fix_metaclass.cpython-312.opt-1.pyc000064400000024145152525335740015261 0ustar00 {|j dZddlmZddlmZddlmZmZmZdZ dZ dZ dZ d Z d ZGd d ejZy )aFixer for __metaclass__ = X -> (metaclass=X) methods. The various forms of classef (inherits nothing, inherits once, inherits many) don't parse the same in the CST so we look at ALL classes for a __metaclass__ and if we find one normalize the inherits to all be an arglist. For one-liner classes ('class X: pass') there is no indent/dedent so we normalize those into having a suite. Moving the __metaclass__ into the classdef can also cause the class body to be empty so there is some special casing for that as well. This fixer also tries very hard to keep original indenting and spacing in all those corner cases. ) fixer_base)token)symsNodeLeafc|jD]}|jtjk(r t |cS|jtj k(sK|jsX|jd}|jtj k(s|js|jd}t|ts|jdk(syy)z we have to check the cls_node without changing it. There are two possibilities: 1) clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta') 2) clsdef => simple_stmt => expr_stmt => Leaf('__meta') __metaclass__TF) childrentypersuite has_metaclass simple_stmt expr_stmt isinstancervalue)parentnode expr_node left_sides 4/usr/lib64/python3.12/lib2to3/fixes/fix_metaclass.pyrrs  99 " & & YY$** *t}} a(I~~/I4F4F%..q1 i.!?:  c|jD]!}|jtjk(s!yt |jD]$\}}|jt j k(s$n tdttjg}|j|dzdrT|j|dz}|j|j|j|j|dzdrT|j||}y)zf one-line classes don't get a suite in the parse tree so we add one to normalize the tree NzNo class suite and no ':'!) r r rr enumeraterCOLON ValueErrorr append_childcloneremove)cls_noderir move_nodes rfixup_parse_treer$-s!! 99 " " X../4 99 # 0566 R E   AaCD !%%ac*  9??,-   AaCD ! % Drcxt|jD]$\}}|jtjk(s$ny|j t tjg}t tj|g}|j|drN|j|}|j|j|j |j|drN|j|||jdjd}|jdjd} | j|_ y)z if there is a semi-colon all the parts count as part of the same simple_stmt. We just want the __metaclass__ part so we move everything after the semi-colon into its own simple_stmt node Nr )rr r rSEMIr rrrrrr insert_childprefix) rr" stmt_nodesemi_indrnew_exprnew_stmtr# new_leaf1 old_leaf1s rfixup_simple_stmtr/Gs  $I$6$67$ 99 " 8 KKMDNNB'HD$$xj1H   XY '&&x0 ioo/0   XY ' 8$!!!$--a0I""1%..q1I ''Irc|jrI|jdjtjk(r|jdj yyy)N)r r rNEWLINEr )rs rremove_trailing_newliner3_s@ }}r*//5==@ b  "A}rc#6K|jD]!}|jtjk(s!n t dt t |jD]\}}|jtjk(s$|js1|jd}|jtjk(s^|jsk|jd}t|ts|jdk(st|||t||||fyw)NzNo class suite!r r )r r rr rlistrrrrrrr/r3)r!rr" simple_noder left_nodes r find_metasr8ds!! 99 " "*++y78;   t// /K4H4H#,,Q/I~~/I4F4F%..q1 i.!?:%dA{;+K8K009s/-DAD D ,D: DD'D7"Dc~|jddd}|r1|j}|jtjk(rn|r1|rv|j}t |t r1|jtjk7r|jrd|_y|j|jddd|ruyy)z If an INDENT is followed by a thing with a prefix then nuke the prefix Otherwise we get in trouble when removing __metaclass__ at suite start Nr1) r popr rINDENTrrDEDENTr(extend)r kidsrs r fixup_indentr@{s >>$B$ D xxz 99 $   xxz dD !dii5<<&?{{   KK dd+ , rceZdZdZdZdZy) FixMetaclassTz classdef ct|syt|d}t|D]\}}}|}|j|jdj }t |jdk(r|jdj tjk(r|jd}n4|jdj} ttj| g}|jd|nt |jdk(r-ttjg}|jd|nt |jdk(rttjg}|jdttjd|jd||jdttj dn t#d |jdjd} d | _| j&} |jr1|j)ttj*d d | _nd | _|jd} d | jd_d | jd_|j)|t-|js^|jt|d} | | _|j)| |j)ttj.dyt |jdkDr|jdj tj0k(rt|jdj tj2k(rIt|d} |jd| |jdttj.dyyyy)Nr r)(zUnexpected class definition metaclass, r:rpass r1)rr$r8r r r lenrarglistrr set_childr'rrRPARLPARrrr(rCOMMAr@r2r<r=)selfrresultslast_metaclassr r"stmt text_typerQrmeta_txtorig_meta_prefixr pass_leafs r transformzFixMetaclass.transformsT" (.NE1d!N KKM/MM!$))  t}}  "}}Q$$ 4--*q)//1t||fX6q'*  1 $4<<,G   a )  1 $4<<,G   aejj#!6 7   a )   aejj#!6 7:; ;"**1-66q9$#??     ekk3!7 8!HO HO#++A. ') 1$') 1$^,U~~ LLNY/I/I    i (   d5==$7 8  1 $..$))U\\9..$))U\\9Y/I   r9 -   r4 t#< = ::%rN)__name__ __module__ __qualname__ BM_compatiblePATTERNr^rrrBrBsMGL>rrBN)__doc__r:rpygramr fixer_utilrrrrr$r/r3r8r@BaseFixrBrdrrrisJ())&4(0# 1.-,S>:%%S>r__pycache__/fix_except.cpython-312.opt-2.pyc000064400000006773152525335740014605 0ustar00 {|j z ddlmZddlmZddlmZddlmZmZmZm Z m Z m Z dZ GddejZy) )pytree)token) fixer_base)AssignAttrNameis_tupleis_listsymsc#Kt|D]L\}}|jtjk(s$|jdj dk(sA|||dzfNyw)Nexceptr) enumeratetyper except_clausechildrenvalue)nodesins 1/usr/lib64/python3.12/lib2to3/fixes/fix_except.py find_exceptsrsS% 1 66T'' 'zz!}""h.%!*o%!s/AAAceZdZdZdZdZy) FixExceptTa1 try_stmt< 'try' ':' (simple_stmt | suite) cleanup=(except_clause ':' (simple_stmt | suite))+ tail=(['except' ':' (simple_stmt | suite)] ['else' ':' (simple_stmt | suite)] ['finally' ':' (simple_stmt | suite)]) > c |j}|dDcgc]}|j}}|dDcgc]}|j}}t|D]\}} t|jdk(s |jdd\} } } | j t dd| jtjk7r t |jd} | j}d|_ | j | | j} | j}t|D]!\}}t|tjs!nt!| s t#| r t%|t'| t d }n t%|| }t)|dD]}| j+d || j+||v| jdk(sd| _ |jdd Dcgc]}|jc}|z|z}tj|j|Scc}wcc}wcc}w) Ntailcleanupas )prefixargsr )r clonerlenrreplacerrrNAMEnew_namer"r isinstancerNoder r rrreversed insert_child)selfnoderesultsr rrch try_cleanupre_suiteEcommaNnew_Ntarget suite_stmtsrstmtassignchildcrs r transformzFixExcept.transform/syy#*6?3?a ?3,3I,>?,>brxxz,> ?&2;&? "M7=))*a/ - 6 6q ; E1 d44566UZZ' =EWWYF$&FMIIe$!KKME #*"2"2K#,[#94%dFKK8!$:  {gaj!'UDL0I!J!'!6"*+bq/!:,,Q6";((F3XX^ #AHI'@N(,}}Ra'89'8!AGGI'89KG$N{{499h//W4?P:sH:H?:IN)__name__ __module__ __qualname__ BM_compatiblePATTERNr?rrr$sMG.0rFrN)r#rpgen2rr fixer_utilrrrr r r rBaseFixrrErFrrJs20DD& 90 ""90rF__pycache__/fix_xrange.cpython-312.opt-2.pyc000064400000007250152525335740014570 0ustar00 {|j \ ddlmZddlmZmZmZddlmZGddejZy)) fixer_base)NameCallconsuming_calls)patcompceZdZdZdZfdZdZdZdZdZ dZ e je Z d Ze jeZd ZxZS) FixXrangeTz power< (name='range'|name='xrange') trailer< '(' args=any ')' > rest=any* > cLtt| ||t|_yN)superr start_treesettransformed_xranges)selftreefilename __class__s 1/usr/lib64/python3.12/lib2to3/fixes/fix_xrange.pyr zFixXrange.start_trees i)$9#&5 cd|_yr )r)rrrs r finish_treezFixXrange.finish_trees #' rc|d}|jdk(r|j||S|jdk(r|j||Stt |)Nnamexrangerange)valuetransform_xrangetransform_range ValueErrorreprrnoderesultsrs r transformzFixXrange.transformsXv :: !((w7 7 ZZ7 "''g6 6T$Z( (rc|d}|jtd|j|jj t |y)Nrrprefix)replacerr'raddidr!s rrzFixXrange.transform_xrange$s:v T'$++67   $$RX.rc"t||jvrx|j|sftt d|dj g}tt d|g|j }|dD]}|j||Syy)Nrargslistr&rest)r*rin_special_contextrrcloner' append_child)rr"r# range_call list_callns rrzFixXrange.transform_range*s tHD44 4''-d7mgfo.C.C.E-FGJT&\J<$(KK1IV_&&q)% . 5rz3power< func=NAME trailer< '(' node=any ')' > any* >zfor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > | comparison< any 'in' node=any any*> cB|jyi}|jjL|jj|jj|r|d|ur|djtvS|j j|j|xr|d|uS)NFr"func)parentp1matchrrp2)rr"r#s rr/zFixXrange.in_special_context?s ;;  KK   *ww}}T[[//9v$&6?((O; ;ww}}T[['2Nwv$7NNr)__name__ __module__ __qualname__ BM_compatiblePATTERNr rr$rrP1rcompile_patternr8P2r:r/ __classcell__)rs@rr r sbMG )()/  ?B   $B B !  $B Orr N) r fixer_utilrrrrBaseFixr rrrHs,644=O ""=Or__pycache__/fix_filter.cpython-312.opt-2.pyc000064400000006114152525335740014567 0ustar00 {|j p ddlmZddlmZddlmZddlmZm Z m Z m Z m Z GddejZy)) fixer_base)Node)python_symbols)NameArgListListCompin_special_context parenthesizeceZdZdZdZdZdZy) FixFilterTaV filter_lambda=power< 'filter' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'filter' trailer< '(' arglist< none='None' ',' seq=any > ')' > [extra_trailers=trailer*] > | power< 'filter' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.filterc|j|ryg}d|vr)|dD]!}|j|j#d|vr|jdj}|jt j k(rd|_t|}t|jdj|jdj|jdj|}tt j|g|zd}nd|vr[ttd td |d jtd }tt j|g|zd}nt|ry|d j}tt jtd |gd}tt jtd t|gg|z}d|_|j|_|S)Nextra_trailers filter_lambdaxpfpit)prefixnone_fseqargsfilterlist) should_skipappendclonegettypesymstestrr rrpowerrr r)selfnoderesultstrailerstrnewrs 1/usr/lib64/python3.12/lib2to3/fixes/fix_filter.py transformzFixFilter.transform:s   D !  w &-. */ g %T"((*Bww$))# !"%7;;t,224";;t,224";;t,224b:CtzzC58#3B?C w 4::"5>//1:'CtzzC58#3B?C"$'6?((*DtzzDND#9"ECtzzDL'3%.#AH#LMCCJ[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onr*r+r)r r sMG<'G$r+r N)rrpytreerpygramrr fixer_utilrrrr r ConditionalFixr r2r+r)r7s/ +RRG ))Gr+__pycache__/fix_funcattrs.cpython-312.pyc000064400000002216152525335740014352 0ustar00 {|jJdZddlmZddlmZGddej Zy)z3Fix function attribute names (f.func_x -> f.__x__).) fixer_base)NameceZdZdZdZdZy) FixFuncattrsTz power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals' | 'func_name' | 'func_defaults' | 'func_code' | 'func_dict') > any* > c|dd}|jtd|jddz|jy)Nattrz__%s__)prefix)replacervaluer )selfnoderesultsrs 4/usr/lib64/python3.12/lib2to3/fixes/fix_funcattrs.py transformzFixFuncattrs.transforms;vq! T8djjn4!%. /N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG /rrN)__doc__r fixer_utilrBaseFixrrrrrs"9 /:%% /r__pycache__/fix_throw.cpython-312.opt-2.pyc000064400000004254152525335740014450 0ustar00 {|j.p ddlmZddlmZddlmZddlmZmZmZm Z m Z GddejZ y))pytree)token) fixer_base)NameCallArgListAttris_tupleceZdZdZdZdZy)FixThrowTz power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > c|j}|dj}|jtjur|j |dy|j d}|y|j}t|r+|jddDcgc]}|j}}n d|_ |g}|d}d|vry|dj} d| _ t||} t| td t| ggz} |jtj |j"| y|jt||ycc}w) Nexcz+Python 3 does not support string exceptionsvalargstbwith_traceback)symsclonetyperSTRINGcannot_convertgetr childrenprefixrr rrreplacerNodepower) selfnoderesultsrrrcr throw_argsrewith_tbs 0/usr/lib64/python3.12/lib2to3/fixes/fix_throw.py transformzFixThrow.transforms)yyen""$ 88u|| #   &S T kk%  ; iik C='*||Ab'9:'9!AGGI'9D:CJ5DV_ 7?$$&BBIS$A1d#345"GG   v{{4::w? @   tC /;sEN)__name__ __module__ __qualname__ BM_compatiblePATTERNr)r(r r sMG0r0r N) rrpgen2rr fixer_utilrrrr r BaseFixr r/r0r(r4s-?<<(0z!!(0r0__pycache__/fix_exitfunc.cpython-312.opt-1.pyc000064400000006763152525335740015140 0ustar00 {|j bdZddlmZmZddlmZmZmZmZm Z m Z GddejZ y)z7 Convert use of sys.exitfunc to use the atexit module. )pytree fixer_base)NameAttrCallCommaNewlinesymsc:eZdZdZdZdZfdZfdZdZxZ S) FixExitfuncTa ( sys_import=import_name<'import' ('sys' | dotted_as_names< (any ',')* 'sys' (',' any)* > ) > | expr_stmt< power< 'sys' trailer< '.' 'exitfunc' > > '=' func=any > ) c&tt| |yN)superr __init__)selfargs __class__s 3/usr/lib64/python3.12/lib2to3/fixes/fix_exitfunc.pyrzFixExitfunc.__init__s k4)40c<tt| ||d|_yr)rr start_tree sys_import)rtreefilenamers rrzFixExitfunc.start_tree!s k4+D(;rc d|vr|j |d|_y|dj}d|_tjt j ttdtd}t||g|j}|j||j|j|dy|jjd}|jt jk(r5|jt!|jtddy|jj"}|jj%|j}|j"} tjt j&td tddg} tjt j(| g} |j+|dzt-|j+|d z| y) NrfuncatexitregisterzKCan't find sys import; Please add an atexit import at the top of your file. import)rcloneprefixrNoder powerrrrreplacewarningchildrentypedotted_as_names append_childrparentindex import_name simple_stmt insert_childr ) rnoderesultsrrcallnamescontaining_stmtpositionstmt_container new_importnews r transformzFixExitfunc.transform%s 7 "&"),"7 v$$& ;;tzz#DND4DE!Htfdkk2 T ?? " LL ? @ ((+ ::-- -   uw '   tHc2 3"oo44O&//55dooFH,33NT%5%5#H~tHc/BC J++d.. =C  ( (Awy A  ( (As ;r) __name__ __module__ __qualname__keep_line_order BM_compatiblePATTERNrrr< __classcell__)rs@rr r s#OM G1#rIs' 'EE=<*$$= cv|j}|dj}|jtjk(rd}|j ||yt |rHt |r6|jdjdj}t |r6d|_d|vr>tj|jtd|g}|j|_|S|dj}t |r+|jddDcgc]}|j} }n d |_|g} d |vr|d j} d | _|} |jtjk7s|jd k7r t|| } t!| td t#| ggz} tj|j$tdg| z}|j|_|Stj|jtdt|| g|j Scc}w)Nexcz+Python 3 does not support string exceptions valraisetbNonewith_traceback)prefix)symsclonetyperSTRINGcannot_convertr childrenrrNode raise_stmtrNAMEvaluerrr simple_stmt) selfnoderesultsrrmsgnewrcargsrewith_tbs 0/usr/lib64/python3.12/lib2to3/fixes/fix_raise.py transformzFixRaise.transform&syyen""$ 88u|| #?C   c *  C=3-ll1o..q17793-CJ  ++dooW s/CDCCJJen""$ C='*||Ab'9:'9!AGGI'9D:CJ5D 7?$$&BBIAxx5::%f)<dO1d#345"GG++d..g'0IJCCJJ;;t $W tC?&*kk3 3);sH6N)__name__ __module__ __qualname__ BM_compatiblePATTERNr/r.r r sMG43r6r N) rrpgen2rr fixer_utilrrrr r BaseFixr r5r6r.r:s-2<<;3z!!;3r6__pycache__/fix_imports.cpython-312.opt-1.pyc000064400000013732152525335740015002 0ustar00 {|j4TdZddlmZddlmZmZiddddddd d d d d ddddddddddddddddddddd d!d"id#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdDdEdFdGdHdIdJdJdJdKdLdLdMdNdOZdPZefdQZGdRdSejZ yT)Uz/Fix incompatible imports and module references.) fixer_base)Name attr_chainStringIOio cStringIOcPicklepickle __builtin__builtinscopy_regcopyregQueuequeue SocketServer socketserver ConfigParser configparserreprreprlib FileDialogztkinter.filedialog tkFileDialog SimpleDialogztkinter.simpledialogtkSimpleDialogtkColorChooserztkinter.colorchoosertkCommonDialogztkinter.commondialogDialogztkinter.dialogTkdndz tkinter.dndtkFontz tkinter.font tkMessageBoxztkinter.messagebox ScrolledTextztkinter.scrolledtext Tkconstantsztkinter.constantsTixz tkinter.tixttkz tkinter.ttkTkintertkinter markupbase _markupbase_winregwinregthread_thread dummy_thread _dummy_threaddbhashzdbm.bsddumbdbmzdbm.dumbdbmzdbm.ndbmgdbmzdbm.gnu xmlrpclibz xmlrpc.clientDocXMLRPCServerz xmlrpc.serverz http.clientz html.entitiesz html.parserz http.cookieszhttp.cookiejarz http.server subprocess collectionsz urllib.parsezurllib.robotparser)SimpleXMLRPCServerhttplibhtmlentitydefs HTMLParserCookie cookielibBaseHTTPServerSimpleHTTPServer CGIHTTPServercommands UserStringUserListurlparse robotparsercLddjtt|zdzS)N(|))joinmapr)memberss 2/usr/lib64/python3.12/lib2to3/fixes/fix_imports.py alternatesrM=s" #dG,- - 33c#Kdj|Dcgc]}d|z c}}t|j}d|d|dd|zd|d|d d |zycc}ww) Nz | zmodule_name='%s'z$name_import=import_name< 'import' ((z;) | multiple_imports=dotted_as_names< any* (z) any* >) > zimport_from< 'from' (%s) 'import' ['('] ( any | import_as_name< any 'as' any > | import_as_names< any* >) [')'] > z(import_name< 'import' (dotted_as_name< (zg) 'as' any > | multiple_imports=dotted_as_names< any* dotted_as_name< (z!) 'as' any > any* >) > z3power< bare_with_attr=(%s) trailer<'.' any > any* >)rIrMkeys)mappingkeymod_list bare_namess rL build_patternrUAszzwGw-3wGHHGLLN+J8 %%  8 %% @* LL!HsA( A#A A(cNeZdZdZdZeZdZdZfdZ fdZ fdZ dZ xZ S) FixImportsTcJdjt|jS)NrG)rIrUrQ)selfs rLrUzFixImports.build_pattern`sxx dll344rNcT|j|_tt|yN)rUPATTERNsuperrWcompile_pattern)rZ __class__s rLr_zFixImports.compile_patterncs"))+  j$/1rNctt| |}|r%d|vrtfdt |dDry|Sy)Nbare_with_attrc3.K|] }|ywr\).0objmatchs rL z#FixImports.match..qsI.Hsc .HsparentF)r^rWrganyr)rZnoderesultsrgr`s @rLrgzFixImports.matchjsEj$-+  w.Ijx.HIINrNc<tt| ||i|_yr\)r^rW start_treereplace)rZtreefilenamer`s rLrnzFixImports.start_treevs j$*4: rNc|jd}|r|j}|j|}|jt ||j d|vr||j|<d|vr'|j |}|r|j||yyy|dd}|jj|j}|r'|jt ||j yy)N module_name)prefix name_importmultiple_importsrb)getvaluerQrorrtrg transform)rZrkrl import_modmod_namenew_name bare_names rLrzzFixImports.transformzs[[/ !''H||H-H   tHZ5F5FG H'*2 X&!W, **T*NN41 - 01!4I||'' 8H!!$x 8H8H"IJrN)__name__ __module__ __qualname__ BM_compatiblekeep_line_orderMAPPINGrQ run_orderrUr_rgrnrz __classcell__)r`s@rLrWrWUs3MOGI52 KrNrWN) __doc__r fixer_utilrrrrMrUBaseFixrWrdrNrLrs5)2 :2  2  h2  :2  y 2  G 2  > 2  >2  92  -2  /2  12  32  32  32  %2  M!2 " ^#2 $ /%2 & 1'2 ( -)2 * -+2 , --2 . i/2 0 12 2 h32 4 Y52 6 ?72 : Y;2 < j=2 > *?2 @ 9A2 B C2 D oE2 F"1#-'#(*,)#'%&/c2 j4"M(<K##<KrN__pycache__/fix_map.cpython-312.pyc000064400000010630152525335740013115 0ustar00 {|j8~dZddlmZddlmZddlmZmZmZm Z m Z ddl m Z ddlmZGddej Zy ) aFixer that changes map(F, ...) into list(map(F, ...)) unless there exists a 'from future_builtins import map' statement in the top-level namespace. As a special case, map(None, X) is changed into list(X). (This is necessary because the semantics are changed in this case -- the new map(None, X) is equivalent to [(x,) for x in X].) We avoid the transformation (except for the special case mentioned above) if the map() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on map(F, X, Y, ...) to go on until the longest argument is exhausted, substituting None for missing values -- like zip(), it now stops as soon as the shortest argument is exhausted. )token) fixer_base)NameArgListCallListCompin_special_context)python_symbols)NodeceZdZdZdZdZdZy)FixMapTaL map_none=power< 'map' trailer< '(' arglist< 'None' ',' arg=any [','] > ')' > [extra_trailers=trailer*] > | map_lambda=power< 'map' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'map' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.mapc |j|ryg}d|vr)|dD]!}|j|j#|jjt j k(rA|j|d|j}d|_ttd|g}nd|vrbt|dj|dj|dj}tt j|g|zd }nbd |vr|d j}d|_n d |vr|d }|jt jk(r|jd jt j k(rs|jd jdjt"j$k(r<|jd jdj&dk(r|j|dytt jtd|jg}d|_t)|rytt jtdt+gg|z}d|_|j|_|S)Nextra_trailerszYou should use a for loop herelist map_lambdaxpfpit)prefixmap_noneargargsNonezjcannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequencemap) should_skipappendcloneparenttypesyms simple_stmtwarningrrrrr powertrailerchildrenarglistrNAMEvaluer r)selfnoderesultstrailerstnewrs ./usr/lib64/python3.12/lib2to3/fixes/fix_map.py transformzFixMap.transform@s   D !  w &-. */ ;;  t// / LL? @**,CCJtF|cU+C W $74=..0"4=..0"4=..02CtzzC58#3B?CW$en**, W$"6?DyyDLL0}}Q',, <}}Q'00388EJJF}}Q'00399VC T,NOtzzDK+FGC!#CJ%d+tzzDL'3%.#AH#LMCCJ[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onr3r4r2r r sMG:$G.r4r N)__doc__pgen2rrr fixer_utilrrrrr pygramr r#pytreer ConditionalFixr r;r4r2rBs2&JJ+PZ & &Pr4__pycache__/fix_itertools.cpython-312.opt-1.pyc000064400000003666152525335740015336 0ustar00 {|j JdZddlmZddlmZGddej Zy)aT Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363) imports from itertools are fixed in fix_itertools_import.py If itertools is imported as something else (ie: import itertools as it; it.izip(spam, eggs)) method calls will not get fixed. ) fixer_base)Namec2eZdZdZdZdezZdZdZy) FixItertoolsTz7('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')z power< it='itertools' trailer< dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > > | power< func=%(it_funcs)s trailer< '(' [any] ')' > > cPd}|dd}d|vr_|jdvrQ|d|d}}|j}|j|j|jj ||xs |j}|j t |jdd|y)Nfuncit) ifilterfalse izip_longestdot)prefix)valuerremoveparentreplacer)selfnoderesultsrr rr s 4/usr/lib64/python3.12/lib2to3/fixes/fix_itertools.py transformzFixItertools.transformsvq! GO JJ> >u~wt}CYYF IIK JJL KK   %&4;; T$**QR.89N) __name__ __module__ __qualname__ BM_compatibleit_funcslocalsPATTERN run_orderrrrrrs+MHH H GI:rrN)__doc__r fixer_utilrBaseFixrr#rrr(s$::%%:r__pycache__/fix_xrange.cpython-312.pyc000064400000007344152525335740013634 0ustar00 {|j ^dZddlmZddlmZmZmZddlmZGddejZ y)z/Fixer that changes xrange(...) into range(...).) fixer_base)NameCallconsuming_calls)patcompceZdZdZdZfdZdZdZdZdZ dZ e je Z d Ze jeZd ZxZS) FixXrangeTz power< (name='range'|name='xrange') trailer< '(' args=any ')' > rest=any* > cLtt| ||t|_yN)superr start_treesettransformed_xranges)selftreefilename __class__s 1/usr/lib64/python3.12/lib2to3/fixes/fix_xrange.pyr zFixXrange.start_trees i)$9#&5 cd|_yr )r)rrrs r finish_treezFixXrange.finish_trees #' rc|d}|jdk(r|j||S|jdk(r|j||Stt |)Nnamexrangerange)valuetransform_xrangetransform_range ValueErrorreprrnoderesultsrs r transformzFixXrange.transformsXv :: !((w7 7 ZZ7 "''g6 6T$Z( (rc|d}|jtd|j|jj t |y)Nrrprefix)replacerr'raddidr!s rrzFixXrange.transform_xrange$s:v T'$++67   $$RX.rc"t||jvrx|j|sftt d|dj g}tt d|g|j }|dD]}|j||Syy)Nrargslistr&rest)r*rin_special_contextrrcloner' append_child)rr"r# range_call list_callns rrzFixXrange.transform_range*s tHD44 4''-d7mgfo.C.C.E-FGJT&\J<$(KK1IV_&&q)% . 5rz3power< func=NAME trailer< '(' node=any ')' > any* >zfor_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > | comparison< any 'in' node=any any*> cB|jyi}|jjL|jj|jj|r|d|ur|djtvS|j j|j|xr|d|uS)NFr"func)parentp1matchrrp2)rr"r#s rr/zFixXrange.in_special_context?s ;;  KK   *ww}}T[[//9v$&6?((O; ;ww}}T[['2Nwv$7NNr)__name__ __module__ __qualname__ BM_compatiblePATTERNr rr$rrP1rcompile_patternr8P2r:r/ __classcell__)rs@rr r sbMG )()/  ?B   $B B !  $B Orr N) __doc__r fixer_utilrrrrBaseFixr rrrIs,644=O ""=Or__pycache__/fix_methodattrs.cpython-312.opt-1.pyc000064400000002172152525335740015637 0ustar00 {|j^VdZddlmZddlmZddddZGdd ej Zy ) z;Fix bound method attributes (method.im_? -> method.__?__). ) fixer_base)Name__func____self__z__self__.__class__)im_funcim_selfim_classceZdZdZdZdZy)FixMethodattrsTzU power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* > c|dd}t|j}|jt||jy)Nattr)prefix)MAPvaluereplacerr)selfnoderesultsr news 6/usr/lib64/python3.12/lib2to3/fixes/fix_methodattrs.py transformzFixMethodattrs.transforms4vq!$**o T#dkk23N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrr r sMG4rr N)__doc__r fixer_utilrrBaseFixr rrrr$s6 % 4Z'' 4r__pycache__/fix_exec.cpython-312.pyc000064400000003107152525335740013265 0ustar00 {|jRdZddlmZddlmZmZmZGddejZy)zFixer for exec. This converts usages of the exec statement into calls to a built-in exec() function. exec code in ns1, ns2 -> exec(code, ns1, ns2) ) fixer_base)CommaNameCallceZdZdZdZdZy)FixExecTzx exec_stmt< 'exec' a=any 'in' b=any [',' c=any] > | exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any > c|sJ|j}|d}|jd}|jd}|jg}d|d_|)|j t |jg|)|j t |jgt td||jS)Nabcexec)prefix)symsgetclonerextendrrr)selfnoderesultsrr r r argss //usr/lib64/python3.12/lib2to3/fixes/fix_exec.py transformzFixExec.transformswyy CL KK  KK  {Q = KK!''), - = KK!''), -DL$t{{;;N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMG r%s'**), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. ) fixer_base)Node)python_symbols)NameArgListin_special_contextceZdZdZdZdZdZy)FixZipTzN power< 'zip' args=trailer< '(' [any] ')' > [trailers=trailer*] > zfuture_builtins.zipc|j|ryt|ry|dj}d|_g}d|vr.|dDcgc]}|j}}|D] }d|_ t t j td|gd}t t j tdt|gg|z}|j|_|Scc}w)Nargstrailerszip)prefixlist) should_skiprclonerrsymspowerrr)selfnoderesultsr rnnews ./usr/lib64/python3.12/lib2to3/fixes/fix_zip.py transformzFixZip.transforms   D !  d #v$$&   +2:+>?+>a +>H?4::U T22>4::V gsen=HI[[  @sCN)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onrrr r sMG $Gr$r N)__doc__r rpytreerpygramrr fixer_utilrrrConditionalFixr r#r$rr*s-+::Z & &r$__pycache__/fix_set_literal.cpython-312.pyc000064400000005105152525335740014650 0ustar00 {|jRdZddlmZmZddlmZmZGddejZy)z: Optional fixer to transform set() calls to set literals. ) fixer_basepytree)tokensymsceZdZdZdZdZdZy) FixSetLiteralTajpower< 'set' trailer< '(' (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) > | single=any) ']' > | atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' > ) ')' > > c|jd}|rGtjtj|j g}|j ||}n|d}tjtjdg}|jd|jD|jtjtjd|jj|d_tjtj |}|j|_t#|jdk(r=|jd}|j%|j|jd_|S) Nsingleitems{c3<K|]}|jyw)N)clone).0ns 6/usr/lib64/python3.12/lib2to3/fixes/fix_set_literal.py z*FixSetLiteral.transform..'s9.Qqwwy.s})getrNoder listmakerrreplaceLeafrLBRACEextendchildrenappendRBRACE next_siblingprefix dictsetmakerlenremove) selfnoderesultsr faker literalmakerrs r transformzFixSetLiteral.transformsX& ;;t~~ /?@D NN4 EG$E;;u||S129%..99v{{5<<56"//66  D--w7{{  u~~ ! #q!A HHJ()ENN2  % N)__name__ __module__ __qualname__ BM_compatibleexplicitPATTERNr,r-rrr sMHGr-rN) __doc__lib2to3rrlib2to3.fixer_utilrrBaseFixrr4r-rr9s$ '*)J&&)r-__pycache__/__init__.cpython-312.opt-1.pyc000064400000000220152525335740014162 0ustar00 {|j/y)Nr//usr/lib64/python3.12/lib2to3/fixes/__init__.pyrsr__pycache__/__init__.cpython-312.opt-2.pyc000064400000000220152525335740014163 0ustar00 {|j/y)Nr//usr/lib64/python3.12/lib2to3/fixes/__init__.pyrsr__pycache__/fix_has_key.cpython-312.opt-2.pyc000064400000007067152525335740014735 0ustar00 {|j| X ddlmZddlmZddlmZmZGddej Zy))pytree) fixer_base)Name parenthesizeceZdZdZdZdZy) FixHasKeyTa anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > after=any* > | negation=not_test< 'not' anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > > > c `|j}|jj|jk(r&|jj |jry|j d}|d}|j}|dDcgc]}|j}}|dj} |j d} | r| Dcgc]}|j} }| j|j|j|j|j|j|j|jfvr t| } t!|dk(r|d}n t#j$|j&|}d|_t)d d } |r/t)d d } t#j$|j*| | f} t#j$|j| | |f} | r8t| } t#j$|j&| ft-| z} |jj|j|j.|j0|j2|j4|j6|j8|j:|j&f vr t| } || _| Scc}wcc}w) Nnegationanchorbeforeargafter in)prefixnot)symsparenttypenot_testpatternmatchgetrclone comparisonand_testor_testtestlambdefargumentrlenrNodepowerrcomp_optupleexprxor_exprand_expr shift_expr arith_exprtermfactor)selfnoderesultsrr r rnr r rn_opn_notnews 2/usr/lib64/python3.12/lib2to3/fixes/fix_has_key.py transformzFixHasKey.transformGsyy KK   - LL  t{{ +;;z*"%,X%67%6!'')%67en""$ G$ (-.1QWWYE. 88  diit}}N Ns#C v;! AYF[[V4F D% s+E;;t||eT];Dkk$//Cv+>? s#C++djj3&5<*?@C ;;  DMM $ t $ $ TZZ 9 9s#C  78/s ?J&J+N)__name__ __module__ __qualname__ BM_compatiblePATTERNr7r6rr&sMG<&r>rN)rr fixer_utilrrBaseFixrr=r>r6rBs):+G ""Gr>__pycache__/fix_filter.cpython-312.opt-1.pyc000064400000007024152525335740014567 0ustar00 {|j rdZddlmZddlmZddlmZddlm Z m Z m Z m Z m Z GddejZy) aFixer that changes filter(F, X) into list(filter(F, X)). We avoid the transformation if the filter() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on filter(F, X) to return a string if X is a string and a tuple if X is a tuple. That would require type inference, which we don't do. Let Python 2.6 figure it out. ) fixer_base)Node)python_symbols)NameArgListListCompin_special_context parenthesizeceZdZdZdZdZdZy) FixFilterTaV filter_lambda=power< 'filter' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'filter' trailer< '(' arglist< none='None' ',' seq=any > ')' > [extra_trailers=trailer*] > | power< 'filter' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.filterc|j|ryg}d|vr)|dD]!}|j|j#d|vr|jdj}|jt j k(rd|_t|}t|jdj|jdj|jdj|}tt j|g|zd}nd|vr[ttd td |d jtd }tt j|g|zd}nt|ry|d j}tt jtd |gd}tt jtd t|gg|z}d|_|j|_|S)Nextra_trailers filter_lambdaxpfpit)prefixnone_fseqargsfilterlist) should_skipappendclonegettypesymstestrr rrpowerrr r)selfnoderesultstrailerstrnewrs 1/usr/lib64/python3.12/lib2to3/fixes/fix_filter.py transformzFixFilter.transform:s   D !  w &-. */ g %T"((*Bww$))# !"%7;;t,224";;t,224";;t,224b:CtzzC58#3B?C w 4::"5>//1:'CtzzC58#3B?C"$'6?((*DtzzDND#9"ECtzzDL'3%.#AH#LMCCJ[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onr*r+r)r r sMG<'G$r+r N)__doc__rrpytreerpygramrr fixer_utilrrrr r ConditionalFixr r2r+r)r8s/ +RRG ))Gr+__pycache__/fix_ne.cpython-312.pyc000064400000002015152525335740012740 0ustar00 {|j;VdZddlmZddlmZddlmZGddej Zy)zFixer that turns <> into !=.)pytree)token) fixer_basec0eZdZejZdZdZy)FixNec |jdk(S)Nz<>)value)selfnodes -/usr/lib64/python3.12/lib2to3/fixes/fix_ne.pymatchz FixNe.matchszzT!!cftjtjd|j}|S)Nz!=)prefix)rLeafrNOTEQUALr)r r resultsnews r transformzFixNe.transforms!kk%..$t{{C rN)__name__ __module__ __qualname__rr _accept_typer rrr rr s>>L"rrN)__doc__rpgen2rrBaseFixrrrr rs'# J   r__pycache__/fix_long.cpython-312.pyc000064400000001506152525335740013301 0ustar00 {|jJdZddlmZddlmZGddej Zy)z/Fixer that turns 'long' into 'int' everywhere. ) fixer_base)is_probably_builtinceZdZdZdZdZy)FixLongTz'long'cJt|rd|_|jyy)Nint)rvaluechanged)selfnoderesultss //usr/lib64/python3.12/lib2to3/fixes/fix_long.py transformzFixLong.transforms t $DJ LLN %N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMGrrN)__doc__lib2to3rlib2to3.fixer_utilrBaseFixrrrrrs$2j  r__pycache__/fix_execfile.cpython-312.opt-2.pyc000064400000005047152525335740015072 0ustar00 {|jl ddlmZddlmZmZmZmZmZmZm Z m Z m Z m Z GddejZy)) fixer_base) CommaNameCallLParenRParenDotNodeArgListStringsymsceZdZdZdZdZy) FixExecfileTz power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > > | power< 'execfile' trailer< '(' filename=any ')' > > c|d}|jd}|jd}|jdjdj}t|jt t ddg|}t tjtd|g}t tjttd gt tjttgg} |g| z} |j} d| _t d d} | t | t | gz} ttd | d }|g}|)|j!t |jg|)|j!t |jgttd ||jS)Nfilenameglobalslocalsz"rb" )rparenopenreadz'exec'compileexec)prefix)getchildrencloner rr r r powerrtrailerr rrrrextend)selfnoderesultsrrrexecfile_paren open_args open_callr open_expr filename_argexec_str compile_args compile_callargss 3/usr/lib64/python3.12/lib2to3/fixes/fix_execfile.py transformzFixExecfile.transformsu:&++i(X&r*33B7==?X^^-uwvs8KL#13 d6lI%>? T\\CE4<#89T\\FHfh#78:K$&  ~~' ! (C( EG\57H#MM DO\2> ~   KK'--/2 3   KK&,,.1 2DL$t{{;;N)__name__ __module__ __qualname__ BM_compatiblePATTERNr0r1r/rrsMG r:s0 111&<*$$& ,:c|j}d}|jD]S}||jvr*|j}|j r d|vrd|_d};|r|j}|sd|_d}U|S)NF T )clonechildrenSEPSprefixisspace)selfnoderesultsnewcommachildrs 3/usr/lib64/python3.12/lib2to3/fixes/fix_ws_comma.py transformzFixWsComma.transformstjjl\\E !>>#F(:#%EL"\\F!'* " N) __name__ __module__ __qualname__explicitPATTERNrLeafrCOMMACOLONrrrrrr sJHG FKK S )E FKK S )E 5>DrrN)r rpgen2rrBaseFixrr$rrr's'##r__pycache__/fix_reload.cpython-312.pyc000064400000002612152525335740013607 0ustar00 {|j9NdZddlmZddlmZmZGddej Zy)z5Fixer for reload(). reload(s) -> importlib.reload(s)) fixer_base) ImportAndCall touch_importceZdZdZdZdZdZy) FixReloadTprez power< 'reload' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > c|rF|d}|r?|j|jjk(r|jdjdvryd}t |||}t dd||S)Nobj>***) importlibreloadr)typesymsargumentchildrenvaluerr)selfnoderesultsr namesnews 1/usr/lib64/python3.12/lib2to3/fixes/fix_reload.py transformzFixReload.transformsf %.CHH 2 22LLO))[8'D'51T;- N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrr sM EG rrN)__doc__r fixer_utilrrBaseFixrr#rrr(s$$ 4 ""r__pycache__/fix_filter.cpython-312.pyc000064400000007024152525335740013630 0ustar00 {|j rdZddlmZddlmZddlmZddlm Z m Z m Z m Z m Z GddejZy) aFixer that changes filter(F, X) into list(filter(F, X)). We avoid the transformation if the filter() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on filter(F, X) to return a string if X is a string and a tuple if X is a tuple. That would require type inference, which we don't do. Let Python 2.6 figure it out. ) fixer_base)Node)python_symbols)NameArgListListCompin_special_context parenthesizeceZdZdZdZdZdZy) FixFilterTaV filter_lambda=power< 'filter' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'filter' trailer< '(' arglist< none='None' ',' seq=any > ')' > [extra_trailers=trailer*] > | power< 'filter' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.filterc|j|ryg}d|vr)|dD]!}|j|j#d|vr|jdj}|jt j k(rd|_t|}t|jdj|jdj|jdj|}tt j|g|zd}nd|vr[ttd td |d jtd }tt j|g|zd}nt|ry|d j}tt jtd |gd}tt jtd t|gg|z}d|_|j|_|S)Nextra_trailers filter_lambdaxpfpit)prefixnone_fseqargsfilterlist) should_skipappendclonegettypesymstestrr rrpowerrr r)selfnoderesultstrailerstrnewrs 1/usr/lib64/python3.12/lib2to3/fixes/fix_filter.py transformzFixFilter.transform:s   D !  w &-. */ g %T"((*Bww$))# !"%7;;t,224";;t,224";;t,224b:CtzzC58#3B?C w 4::"5>//1:'CtzzC58#3B?C"$'6?((*DtzzDND#9"ECtzzDL'3%.#AH#LMCCJ[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onr*r+r)r r sMG<'G$r+r N)__doc__rrpytreerpygramrr fixer_utilrrrr r ConditionalFixr r2r+r)r8s/ +RRG ))Gr+__pycache__/fix_methodattrs.cpython-312.pyc000064400000002172152525335740014700 0ustar00 {|j^VdZddlmZddlmZddddZGdd ej Zy ) z;Fix bound method attributes (method.im_? -> method.__?__). ) fixer_base)Name__func____self__z__self__.__class__)im_funcim_selfim_classceZdZdZdZdZy)FixMethodattrsTzU power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* > c|dd}t|j}|jt||jy)Nattr)prefix)MAPvaluereplacerr)selfnoderesultsr news 6/usr/lib64/python3.12/lib2to3/fixes/fix_methodattrs.py transformzFixMethodattrs.transforms4vq!$**o T#dkk23N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrr r sMG4rr N)__doc__r fixer_utilrrBaseFixr rrrr$s6 % 4Z'' 4r__pycache__/fix_getcwdu.cpython-312.opt-1.pyc000064400000001653152525335740014746 0ustar00 {|jJdZddlmZddlmZGddej Zy)z1 Fixer that changes os.getcwdu() to os.getcwd(). ) fixer_base)NameceZdZdZdZdZy) FixGetcwduTzR power< 'os' trailer< dot='.' name='getcwdu' > any* > cZ|d}|jtd|jy)Nnamegetcwd)prefix)replacerr )selfnoderesultsrs 2/usr/lib64/python3.12/lib2to3/fixes/fix_getcwdu.py transformzFixGetcwdu.transforms"v T(4;;78N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG9rrN)__doc__r fixer_utilrBaseFixrrrrrs$  9## 9r__pycache__/fix_execfile.cpython-312.pyc000064400000005262152525335740014131 0ustar00 {|jndZddlmZddlmZmZmZmZmZm Z m Z m Z m Z m Z GddejZy)zoFixer for execfile. This converts usages of the execfile function into calls to the built-in exec() function. ) fixer_base) CommaNameCallLParenRParenDotNodeArgListStringsymsceZdZdZdZdZy) FixExecfileTz power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > > | power< 'execfile' trailer< '(' filename=any ')' > > c|sJ|d}|jd}|jd}|jdjdj}t|jt t ddg|}t tjtd|g}t tjttd gt tjttgg} |g| z} |j} d| _t d d} | t | t | gz} ttd | d }|g}|)|j!t |jg|)|j!t |jgttd ||jS)Nfilenameglobalslocalsz"rb" )rparenopenreadz'exec'compileexec)prefix)getchildrencloner rr r r powerrtrailerr rrrrextend)selfnoderesultsrrrexecfile_paren open_args open_callr open_expr filename_argexec_str compile_args compile_callargss 3/usr/lib64/python3.12/lib2to3/fixes/fix_execfile.py transformzFixExecfile.transforms|w:&++i(X&r*33B7==?X^^-uwvs8KL#13 d6lI%>? T\\CE4<#89T\\FHfh#78:K$&  ~~' ! (C( EG\57H#MM DO\2> ~   KK'--/2 3   KK&,,.1 2DL$t{{;;N)__name__ __module__ __qualname__ BM_compatiblePATTERNr0r1r/rrsMG r;s0 111&<*$$& any* > c|dd}|jtd|jddz|jy)Nattrz__%s__)prefix)replacervaluer )selfnoderesultsrs 4/usr/lib64/python3.12/lib2to3/fixes/fix_funcattrs.py transformzFixFuncattrs.transforms;vq! T8djjn4!%. /N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG /rrN)r fixer_utilrBaseFixrrrrrs"9 /:%% /r__pycache__/fix_reduce.cpython-312.opt-1.pyc000064400000002303152525335740014544 0ustar00 {|jEJdZddlmZddlmZGddej Zy)zqFixer for reduce(). Makes sure reduce() is imported from the functools module if reduce is used in that module. ) fixer_base touch_importceZdZdZdZdZdZy) FixReduceTpreai power< 'reduce' trailer< '(' arglist< ( (not(argument) any ',' not(argument > ctdd|y)N functoolsreducer)selfnoderesultss 1/usr/lib64/python3.12/lib2to3/fixes/fix_reduce.py transformzFixReduce.transform"s[(D1N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrrsM E G2rrN)__doc__lib2to3rlib2to3.fixer_utilrBaseFixrrrrrs$ +2 ""2r__pycache__/fix_execfile.cpython-312.opt-1.pyc000064400000005243152525335740015067 0ustar00 {|jndZddlmZddlmZmZmZmZmZm Z m Z m Z m Z m Z GddejZy)zoFixer for execfile. This converts usages of the execfile function into calls to the built-in exec() function. ) fixer_base) CommaNameCallLParenRParenDotNodeArgListStringsymsceZdZdZdZdZy) FixExecfileTz power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > > | power< 'execfile' trailer< '(' filename=any ')' > > c|d}|jd}|jd}|jdjdj}t|jt t ddg|}t tjtd|g}t tjttd gt tjttgg} |g| z} |j} d| _t d d} | t | t | gz} ttd | d }|g}|)|j!t |jg|)|j!t |jgttd ||jS)Nfilenameglobalslocalsz"rb" )rparenopenreadz'exec'compileexec)prefix)getchildrencloner rr r r powerrtrailerr rrrrextend)selfnoderesultsrrrexecfile_paren open_args open_callr open_expr filename_argexec_str compile_args compile_callargss 3/usr/lib64/python3.12/lib2to3/fixes/fix_execfile.py transformzFixExecfile.transformsu:&++i(X&r*33B7==?X^^-uwvs8KL#13 d6lI%>? T\\CE4<#89T\\FHfh#78:K$&  ~~' ! (C( EG\57H#MM DO\2> ~   KK'--/2 3   KK&,,.1 2DL$t{{;;N)__name__ __module__ __qualname__ BM_compatiblePATTERNr0r1r/rrsMG r;s0 111&<*$$& trailer< '(' ')' > > | power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > > | classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='next' parameters< '(' NAME ')' > any+ > any* > > | global=global_stmt< 'global' any* 'next' any* > prectt| ||td|}|r|j |t d|_yd|_y)NnextTF)superr start_treerwarning bind_warning shadowed_next)selftreefilenamen __class__s //usr/lib64/python3.12/lib2to3/fixes/fix_next.pyrzFixNext.start_tree$sA gt'h7  & LLL )!%D !&D c,|jd}|jd}|jd}|r|jr'|jtd|jy|Dcgc]}|j }}d|d_|jt td|j|y|r)td|j}|j|y|r{t|rU|d }dj|Dcgc] }t|c}jd k(r|j|ty|jtdyd |vr|j|td |_yycc}wcc}w) Nbaseattrname__next__)prefixr head __builtin__globalT) getrreplacerrcloneris_assign_targetjoinstrstriprr)rnoderesultsrrrrr"s r transformzFixNext.transform.sD{{6"{{6"{{6" !! T*T[[AB+/04a 40!#Q T$vdkk"BDIJ Z 4A LLO  %v77D1DqCFD1288:mKLL|4 LLj) *  LL| ,!%D !!12s -F  F) __name__ __module__ __qualname__ BM_compatiblePATTERNorderrr. __classcell__)rs@rr r s M G E'&rr ct|}|y|jD]/}|jtjk(ryt ||s/yy)NFT) find_assignchildrentyperEQUAL is_subtree)r,assignchilds rr(r(QsG  F ~ :: $ t $ ! rc|jtjk(r|S|jtjk(s |jyt |jSN)r9syms expr_stmt simple_stmtparentr7)r,s rr7r7]sD yyDNN"  yyD$$$ (; t{{ ##rcL|k(rytfd|jDS)NTc36K|]}t|ywr?)r;).0cr,s r zis_subtree..gs:Mqz!T"Ms)anyr8)rootr,s `rr;r;ds" t| :DMM: ::rN)pgen2rpygramrr@r r fixer_utilrrrrBaseFixr r(r7r;rrrPs@4+11L :&j  :&@ $;r__pycache__/fix_methodattrs.cpython-312.opt-2.pyc000064400000002062152525335740015636 0ustar00 {|j^T ddlmZddlmZddddZGddej Zy ) ) fixer_base)Name__func____self__z__self__.__class__)im_funcim_selfim_classceZdZdZdZdZy)FixMethodattrsTzU power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* > c|dd}t|j}|jt||jy)Nattr)prefix)MAPvaluereplacerr)selfnoderesultsr news 6/usr/lib64/python3.12/lib2to3/fixes/fix_methodattrs.py transformzFixMethodattrs.transforms4vq!$**o T#dkk23N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrr r sMG4rr N)r fixer_utilrrBaseFixr rrrr#s6 % 4Z'' 4r__pycache__/fix_print.cpython-312.pyc000064400000006657152525335740013512 0ustar00 {|j dZddlmZddlmZddlmZddlmZddlmZm Z m Z m Z ejdZ Gdd ejZy ) a Fixer for print. Change: 'print' into 'print()' 'print ...' into 'print(...)' 'print ... ,' into 'print(..., end=" ")' 'print >>x, ...' into 'print(..., file=x)' No changes are applied if print_function is imported from __future__ )patcomp)pytree)token) fixer_base)NameCallCommaStringz"atom< '(' [atom|STRING|NAME] ')' >c eZdZdZdZdZdZy)FixPrintTzP simple_stmt< any* bare='print' any* > | print_stmt c |sJ|jd}|r1|jttdg|jy|j dtdk(sJ|j dd}t |dk(rtj|drydx}x}}|r|dtk(r|dd}d}|rR|dtjtjdk(r(t |d k\sJ|dj}|d d}|Dcgc]}|j} }| r d | d_|||c|%|j| d t!t#||%|j| d t!t#|||j| d|ttd| } |j| _| Scc}w)Nbareprint)prefix z>>rsependfile)getreplacerrrchildrenlen parend_exprmatchr rLeafr RIGHTSHIFTclone add_kwargr repr) selfnoderesults bare_printargsrrrargl_argsn_stmts 0/usr/lib64/python3.12/lib2to3/fixes/fix_print.py transformzFixPrint.transform%sw[[(    tDM2&0&7&7 9 : }}Q4=000}}QR  t9>k//Q8 cD DH'9DC DGv{{5+;+;TBBt9> !>7==?D8D)-.##))+. !F1I  ?co1AvufT#Y.?@vufT#Y.?@vvt4d7mV,   /sG c(d|_tj|jjt |tj tjd|f}|r |jtd|_|j|y)Nr=r) rrNodesymsargumentrr rEQUALappendr )r%l_nodess_kwdn_expr n_arguments r-r#zFixPrint.add_kwargMsk [[!3!3"&u+"(++ekk3"?"("*+   NN57 # #J z"N)__name__ __module__ __qualname__ BM_compatiblePATTERNr.r#r:r-r r sMG&P #r:r N)__doc__rrrpgen2rr fixer_utilrrr r compile_patternrBaseFixr r@r:r-rFsG 22&g%%6 :#z!!:#r:__pycache__/fix_isinstance.cpython-312.pyc000064400000004447152525335740014511 0ustar00 {|jHJdZddlmZddlmZGddej Zy)a,Fixer that cleans up a tuple argument to isinstance after the tokens in it were fixed. This is mainly used to remove double occurrences of tokens as a leftover of the long -> int / unicode -> str conversion. eg. isinstance(x, (int, long)) -> isinstance(x, (int, int)) -> isinstance(x, int) ) fixer_base)tokenceZdZdZdZdZdZy) FixIsinstanceTz power< 'isinstance' trailer< '(' arglist< any ',' atom< '(' args=testlist_gexp< any+ > ')' > > ')' > > ct}|d}|j}g}t|}|D]\}} | jtj k(rP| j |vrB|t|dz ksC||dzjtjk(sgt|s|j| | jtj k(s|j| j |r#|djtjk(r|d=t|dk(r5|j} | j|d_ | j|dy||dd|jy)Nargs)setchildren enumeratetyperNAMEvaluelenCOMMAnextappendaddparentprefixreplacechanged) selfnoderesultsnames_insertedtestlistr new_argsiteratoridxargatoms 5/usr/lib64/python3.12/lib2to3/fixes/fix_isinstance.py transformzFixIsinstance.transforms6?  T? HCxx5::%#))~*ETQ&4a=+=+=+LN$88uzz)"&&syy1!  ))U[[8 x=A ??D!%HQK  LL! %DG LLNN)__name__ __module__ __qualname__ BM_compatiblePATTERN run_orderr'r(r&rrsMGIr(rN)__doc__r fixer_utilrBaseFixrr/r(r&r4s$$J&&$r(__pycache__/fix_long.cpython-312.opt-2.pyc000064400000001412152525335740014235 0ustar00 {|jH ddlmZddlmZGddejZy)) fixer_base)is_probably_builtinceZdZdZdZdZy)FixLongTz'long'cJt|rd|_|jyy)Nint)rvaluechanged)selfnoderesultss //usr/lib64/python3.12/lib2to3/fixes/fix_long.py transformzFixLong.transforms t $DJ LLN %N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMGrrN)lib2to3rlib2to3.fixer_utilrBaseFixrrrrrs$2j  r__pycache__/fix_input.cpython-312.pyc000064400000002357152525335740013506 0ustar00 {|j~dZddlmZddlmZmZddlmZejdZGddejZ y) z4Fixer that changes input(...) into eval(input(...)).) fixer_base)CallName)patcompz&power< 'eval' trailer< '(' any ')' > >ceZdZdZdZdZy)FixInputTzL power< 'input' args=trailer< '(' [any] ')' > > ctj|jjry|j}d|_t t d|g|jS)Neval)prefix)contextmatchparentcloner rr)selfnoderesultsnews 0/usr/lib64/python3.12/lib2to3/fixes/fix_input.py transformzFixInput.transformsF ==++ , jjl DL3% <<N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG=rrN) __doc__r r fixer_utilrrrcompile_patternr BaseFixrrrrr"s::# "' ! !"J K =z!! =r__pycache__/fix_map.cpython-312.opt-2.pyc000064400000007200152525335740014054 0ustar00 {|j8| ddlmZddlmZddlmZmZmZmZm Z ddl m Z ddl mZGddejZy) )token) fixer_base)NameArgListCallListCompin_special_context)python_symbols)NodeceZdZdZdZdZdZy)FixMapTaL map_none=power< 'map' trailer< '(' arglist< 'None' ',' arg=any [','] > ')' > [extra_trailers=trailer*] > | map_lambda=power< 'map' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'map' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.mapc |j|ryg}d|vr)|dD]!}|j|j#|jjt j k(rA|j|d|j}d|_ttd|g}nd|vrbt|dj|dj|dj}tt j|g|zd }nbd |vr|d j}d|_n d |vr|d }|jt jk(r|jd jt j k(rs|jd jdjt"j$k(r<|jd jdj&dk(r|j|dytt jtd|jg}d|_t)|rytt jtdt+gg|z}d|_|j|_|S)Nextra_trailerszYou should use a for loop herelist map_lambdaxpfpit)prefixmap_noneargargsNonezjcannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequencemap) should_skipappendcloneparenttypesyms simple_stmtwarningrrrrr powertrailerchildrenarglistrNAMEvaluer r)selfnoderesultstrailerstnewrs ./usr/lib64/python3.12/lib2to3/fixes/fix_map.py transformzFixMap.transform@s   D !  w &-. */ ;;  t// / LL? @**,CCJtF|cU+C W $74=..0"4=..0"4=..02CtzzC58#3B?CW$en**, W$"6?DyyDLL0}}Q',, <}}Q'00388EJJF}}Q'00399VC T,NOtzzDK+FGC!#CJ%d+tzzDL'3%.#AH#LMCCJ[[  N)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onr3r4r2r r sMG:$G.r4r N)pgen2rrr fixer_utilrrrrr pygramr r#pytreer ConditionalFixr r;r4r2rAs2&JJ+PZ & &Pr4__pycache__/fix_print.cpython-312.opt-2.pyc000064400000005775152525335740014452 0ustar00 {|j  ddlmZddlmZddlmZddlmZddlmZmZm Z m Z ejdZ GddejZy ) )patcomp)pytree)token) fixer_base)NameCallCommaStringz"atom< '(' [atom|STRING|NAME] ')' >c eZdZdZdZdZdZy)FixPrintTzP simple_stmt< any* bare='print' any* > | print_stmt c :|jd}|r1|jttdg|jy|j dd}t |dk(rtj|drydx}x}}|r|dtk(r|dd}d}|rB|dtjtjdk(r|dj}|d d}|Dcgc]}|j} }| r d | d_|||c|%|j| d t!t#||%|j| d t!t#|||j| d |ttd| } |j| _| Scc}w)Nbareprint)prefix z>>sependfile)getreplacerrrchildrenlen parend_exprmatchr rLeafr RIGHTSHIFTclone add_kwargr repr) selfnoderesults bare_printargsrrrargl_argsn_stmts 0/usr/lib64/python3.12/lib2to3/fixes/fix_print.py transformzFixPrint.transform%s[[(    tDM2&0&7&7 9 : }}QR  t9>k//Q8 cD DH'9DC DGv{{5+;+;TBB7==?D8D)-.##))+. !F1I  ?co1AvufT#Y.?@vufT#Y.?@vvt4d7mV,   /s"Fc(d|_tj|jjt |tj tjd|f}|r |jtd|_|j|y)Nr=r) rrNodesymsargumentrr rEQUALappendr )r%l_nodess_kwdn_expr n_arguments r-r#zFixPrint.add_kwargMsk [[!3!3"&u+"(++ekk3"?"("*+   NN57 # #J z"N)__name__ __module__ __qualname__ BM_compatiblePATTERNr.r#r:r-r r sMG&P #r:r N)rrrpgen2rr fixer_utilrrr r compile_patternrBaseFixr r@r:r-rEsG 22&g%%6 :#z!!:#r:__pycache__/fix_long.cpython-312.opt-1.pyc000064400000001506152525335740014240 0ustar00 {|jJdZddlmZddlmZGddej Zy)z/Fixer that turns 'long' into 'int' everywhere. ) fixer_base)is_probably_builtinceZdZdZdZdZy)FixLongTz'long'cJt|rd|_|jyy)Nint)rvaluechanged)selfnoderesultss //usr/lib64/python3.12/lib2to3/fixes/fix_long.py transformzFixLong.transforms t $DJ LLN %N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMGrrN)__doc__lib2to3rlib2to3.fixer_utilrBaseFixrrrrrs$2j  r__pycache__/fix_operator.cpython-312.pyc000064400000012761152525335740014202 0ustar00 {|jb ddZddlZddlmZddlmZmZmZm Z dZ GddejZ y)aFixer for operator functions. operator.isCallable(obj) -> callable(obj) operator.sequenceIncludes(obj) -> operator.contains(obj) operator.isSequenceType(obj) -> isinstance(obj, collections.abc.Sequence) operator.isMappingType(obj) -> isinstance(obj, collections.abc.Mapping) operator.isNumberType(obj) -> isinstance(obj, numbers.Number) operator.repeat(obj, n) -> operator.mul(obj, n) operator.irepeat(obj, n) -> operator.imul(obj, n) N) fixer_base)CallNameString touch_importcfd}|S)Nc|_|SN) invocation)fss 3/usr/lib64/python3.12/lib2to3/fixes/fix_operator.pydeczinvocation..decs )r rs` rr r s JrceZdZdZdZdZdZdeeezZdZ e dd Z e d d Z e d d Z e ddZe ddZe ddZe ddZdZdZdZy) FixOperatorTprez method=('isCallable'|'sequenceIncludes' |'isSequenceType'|'isMappingType'|'isNumberType' |'repeat'|'irepeat') z'(' obj=any ')'z power< module='operator' trailer< '.' %(methods)s > trailer< %(obj)s > > | power< %(methods)s trailer< %(obj)s > > )methodsobjc>|j||}| |||Syr ) _check_method)selfnoderesultsmethods r transformzFixOperator.transform+s,##D'2  $( ( rzoperator.contains(%s)c(|j||dS)Ncontains_handle_renamerrrs r_sequenceIncludeszFixOperator._sequenceIncludes0s""4*==rz callable(%s)cl|d}ttd|jg|jS)Nrcallableprefix)rrcloner')rrrrs r _isCallablezFixOperator._isCallable4s+enD$syy{mDKKHHrzoperator.mul(%s)c(|j||dS)Nmulr r"s r_repeatzFixOperator._repeat9s""4%88rzoperator.imul(%s)c(|j||dS)Nimulr r"s r_irepeatzFixOperator._irepeat=s""4&99rz(isinstance(%s, collections.abc.Sequence)c*|j||ddS)Ncollections.abcSequence_handle_type2abcr"s r_isSequenceTypezFixOperator._isSequenceTypeAs$$T74EzRRrz'isinstance(%s, collections.abc.Mapping)c*|j||ddS)Nr1Mappingr3r"s r_isMappingTypezFixOperator._isMappingTypeEs$$T74EyQQrzisinstance(%s, numbers.Number)c*|j||ddS)NnumbersNumberr3r"s r _isNumberTypezFixOperator._isNumberTypeIs$$T7IxHHrcB|dd}||_|jy)Nrr)valuechanged)rrrnamers rr!zFixOperator._handle_renameMs""1% rctd|||d}|jtddj||gzg}t t d||j S)Nrz, . isinstancer&)rr(rjoinrrr')rrrmoduleabcrargss rr4zFixOperator._handle_type2abcRsVT64(en VD388VSM+B$BCDD&T[[AArct|d|ddjz}t|tjj r9d|vr|St |df}|j|z}|j|d|zy)N_rrrErzYou should use '%s' here.) getattrr>rC collectionsrFCallablestrr warning)rrrrsubinvocation_strs rrzFixOperator._check_methodXs|sWX%6q%9%?%??@ fkoo66 77" 75>*,!'!2!2S!8 T#>#OPrN)__name__ __module__ __qualname__ BM_compatibleorderrrdictPATTERNrr r#r)r,r/r5r8r<r!r4rrrrrrsM EG C c2 3G) '(>)>I I"#9$9#$:%::;S<S9:R;R01I2I B rr) __doc__collections.abcrKlib2to3rlib2to3.fixer_utilrrrrr BaseFixrrrrr]s3 ??G*$$Gr__pycache__/fix_paren.cpython-312.pyc000064400000003127152525335740013450 0ustar00 {|jNdZddlmZddlmZmZGddej Zy)ztFixer that adds parentheses where they are required This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``.) fixer_base)LParenRParenceZdZdZdZdZy)FixParenTa atom< ('[' | '(') (listmaker< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > > | testlist_gexp< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > >) (']' | ')') > c|d}t}|j|_d|_|jd||jt y)Ntarget)rprefix insert_child append_childr)selfnoderesultsr lparens 0/usr/lib64/python3.12/lib2to3/fixes/fix_paren.py transformzFixParen.transform%sE"   Av&FH%N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG,&rrN)__doc__r r fixer_utilrrBaseFixrrrrrs%C' &z!! &r__pycache__/fix_except.cpython-312.opt-1.pyc000064400000007665152525335740014605 0ustar00 {|j |dZddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z dZ GddejZy ) aFixer for except statements with named exceptions. The following cases will be converted: - "except E, T:" where T is a name: except E as T: - "except E, T:" where T is not a name, tuple or list: except E as t: T = t This is done because the target of an "except" clause must be a name. - "except E, T:" where T is a tuple or list literal: except E as t: T = t.args )pytree)token) fixer_base)AssignAttrNameis_tupleis_listsymsc#Kt|D]L\}}|jtjk(s$|jdj dk(sA|||dzfNyw)Nexceptr) enumeratetyper except_clausechildrenvalue)nodesins 1/usr/lib64/python3.12/lib2to3/fixes/fix_except.py find_exceptsrsS% 1 66T'' 'zz!}""h.%!*o%!s/AAAceZdZdZdZdZy) FixExceptTa1 try_stmt< 'try' ':' (simple_stmt | suite) cleanup=(except_clause ':' (simple_stmt | suite))+ tail=(['except' ':' (simple_stmt | suite)] ['else' ':' (simple_stmt | suite)] ['finally' ':' (simple_stmt | suite)]) > c |j}|dDcgc]}|j}}|dDcgc]}|j}}t|D]\}} t|jdk(s |jdd\} } } | j t dd| jtjk7r t |jd} | j}d|_ | j | | j} | j}t|D]!\}}t|tjs!nt!| s t#| r t%|t'| t d }n t%|| }t)|dD]}| j+d || j+||v| jdk(sd| _ |jdd Dcgc]}|jc}|z|z}tj|j|Scc}wcc}wcc}w) Ntailcleanupas )prefixargsr )r clonerlenrreplacerrrNAMEnew_namer"r isinstancerNoder r rrreversed insert_child)selfnoderesultsr rrch try_cleanupre_suiteEcommaNnew_Ntarget suite_stmtsrstmtassignchildcrs r transformzFixExcept.transform/syy#*6?3?a ?3,3I,>?,>brxxz,> ?&2;&? "M7=))*a/ - 6 6q ; E1 d44566UZZ' =EWWYF$&FMIIe$!KKME #*"2"2K#,[#94%dFKK8!$:  {gaj!'UDL0I!J!'!6"*+bq/!:,,Q6";((F3XX^ #AHI'@N(,}}Ra'89'8!AGGI'89KG$N{{499h//W4?P:sH:H?:IN)__name__ __module__ __qualname__ BM_compatiblePATTERNr?rrr$sMG.0rFrN)__doc__r#rpgen2rr fixer_utilrrrr r r rBaseFixrrErFrrKs20DD& 90 ""90rF__pycache__/fix_repr.cpython-312.pyc000064400000002144152525335740013311 0ustar00 {|jeRdZddlmZddlmZmZmZGddejZy)z/Fixer that transforms `xyzzy` into repr(xyzzy).) fixer_base)CallName parenthesizeceZdZdZdZdZy)FixReprTz7 atom < '`' expr=any '`' > c|dj}|j|jjk(r t |}t t d|g|jS)Nexprrepr)prefix)clonetypesyms testlist1rrrr )selfnoderesultsr s //usr/lib64/python3.12/lib2to3/fixes/fix_repr.py transformzFixRepr.transformsMv$$& 99 ++ +%DDL4&==N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrr sMG>rrN) __doc__r fixer_utilrrrBaseFixrrrrr!s'611 >j  >r__pycache__/fix_set_literal.cpython-312.opt-2.pyc000064400000004776152525335740015625 0ustar00 {|jP ddlmZmZddlmZmZGddej Zy)) fixer_basepytree)tokensymsceZdZdZdZdZdZy) FixSetLiteralTajpower< 'set' trailer< '(' (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) > | single=any) ']' > | atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' > ) ')' > > c|jd}|rGtjtj|j g}|j ||}n|d}tjtjdg}|jd|jD|jtjtjd|jj|d_tjtj |}|j|_t#|jdk(r=|jd}|j%|j|jd_|S) Nsingleitems{c3<K|]}|jyw)N)clone).0ns 6/usr/lib64/python3.12/lib2to3/fixes/fix_set_literal.py z*FixSetLiteral.transform..'s9.Qqwwy.s})getrNoder listmakerrreplaceLeafrLBRACEextendchildrenappendRBRACE next_siblingprefix dictsetmakerlenremove) selfnoderesultsr faker literalmakerrs r transformzFixSetLiteral.transformsX& ;;t~~ /?@D NN4 EG$E;;u||S129%..99v{{5<<56"//66  D--w7{{  u~~ ! #q!A HHJ()ENN2  % N)__name__ __module__ __qualname__ BM_compatibleexplicitPATTERNr,r-rrr sMHGr-rN)lib2to3rrlib2to3.fixer_utilrrBaseFixrr4r-rr8s$ '*)J&&)r-__pycache__/fix_zip.cpython-312.opt-2.pyc000064400000003162152525335740014104 0ustar00 {|j h ddlmZddlmZddlmZddlmZm Z m Z GddejZ y)) fixer_base)Node)python_symbols)NameArgListin_special_contextceZdZdZdZdZdZy)FixZipTzN power< 'zip' args=trailer< '(' [any] ')' > [trailers=trailer*] > zfuture_builtins.zipc|j|ryt|ry|dj}d|_g}d|vr.|dDcgc]}|j}}|D] }d|_ t t j td|gd}t t j tdt|gg|z}|j|_|Scc}w)Nargstrailerszip)prefixlist) should_skiprclonerrsymspowerrr)selfnoderesultsr rnnews ./usr/lib64/python3.12/lib2to3/fixes/fix_zip.py transformzFixZip.transforms   D !  d #v$$&   +2:+>?+>a +>H?4::U T22>4::V gsen=HI[[  @sCN)__name__ __module__ __qualname__ BM_compatiblePATTERNskip_onrrr r sMG $Gr$r N) r rpytreerpygramrr fixer_utilrrrConditionalFixr r#r$rr)s-+::Z & &r$__pycache__/fix_raise.cpython-312.opt-1.pyc000064400000006467152525335740014417 0ustar00 {|jn rdZddlmZddlmZddlmZddlmZmZm Z m Z m Z GddejZ y) a[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. )pytree)token) fixer_base)NameCallAttrArgListis_tupleceZdZdZdZdZy)FixRaiseTzB raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] > cv|j}|dj}|jtjk(rd}|j ||yt |rHt |r6|jdjdj}t |r6d|_d|vr>tj|jtd|g}|j|_|S|dj}t |r+|jddDcgc]}|j} }n d |_|g} d |vr|d j} d | _|} |jtjk7s|jd k7r t|| } t!| td t#| ggz} tj|j$tdg| z}|j|_|Stj|jtdt|| g|j Scc}w)Nexcz+Python 3 does not support string exceptions valraisetbNonewith_traceback)prefix)symsclonetyperSTRINGcannot_convertr childrenrrNode raise_stmtrNAMEvaluerrr simple_stmt) selfnoderesultsrrmsgnewrcargsrewith_tbs 0/usr/lib64/python3.12/lib2to3/fixes/fix_raise.py transformzFixRaise.transform&syyen""$ 88u|| #?C   c *  C=3-ll1o..q17793-CJ  ++dooW s/CDCCJJen""$ C='*||Ab'9:'9!AGGI'9D:CJ5D 7?$$&BBIAxx5::%f)<dO1d#345"GG++d..g'0IJCCJJ;;t $W tC?&*kk3 3);sH6N)__name__ __module__ __qualname__ BM_compatiblePATTERNr/r.r r sMG43r6r N)__doc__rrpgen2rr fixer_utilrrrr r BaseFixr r5r6r.r;s-2<<;3z!!;3r6__pycache__/fix_sys_exc.cpython-312.opt-2.pyc000064400000003467152525335740014767 0ustar00 {|j ` ddlmZddlmZmZmZmZmZmZm Z GddejZ y)) fixer_base)AttrCallNameNumber SubscriptNodesymscTeZdZgdZdZddj deDzZdZy) FixSysExc)exc_type exc_value exc_tracebackTzN power< 'sys' trailer< dot='.' attribute=(%s) > > |c#&K|] }d|z yw)z'%s'N).0es 2/usr/lib64/python3.12/lib2to3/fixes/fix_sys_exc.py zFixSysExc.s:AVaZsc|dd}t|jj|j}t t d|j }tt d|}|dj |djd_|jt|ttj||j S)N attributeexc_info)prefixsysdot)rrindexvaluerrrrchildrenappendrr r power)selfnoderesultssys_attrrcallattrs r transformzFixSysExc.transforms;'*t}}**8>>:;D$X__=DK&%,U^%:%:Q" Ie$%DJJT[[99N)__name__ __module__ __qualname__r BM_compatiblejoinPATTERNr*rr+rr r s/9HMHH:::;G:r+r N) r fixer_utilrrrrrr r BaseFixr rr+rr5s*HHH: "":r+__pycache__/fix_reduce.cpython-312.pyc000064400000002303152525335740013605 0ustar00 {|jEJdZddlmZddlmZGddej Zy)zqFixer for reduce(). Makes sure reduce() is imported from the functools module if reduce is used in that module. ) fixer_base touch_importceZdZdZdZdZdZy) FixReduceTpreai power< 'reduce' trailer< '(' arglist< ( (not(argument) any ',' not(argument > ctdd|y)N functoolsreducer)selfnoderesultss 1/usr/lib64/python3.12/lib2to3/fixes/fix_reduce.py transformzFixReduce.transform"s[(D1N)__name__ __module__ __qualname__ BM_compatibleorderPATTERNrrrrrsM E G2rrN)__doc__lib2to3rlib2to3.fixer_utilrBaseFixrrrrrs$ +2 ""2r__pycache__/fix_imports2.cpython-312.opt-1.pyc000064400000001144152525335740015056 0ustar00 {|j!HdZddlmZdddZGddejZy)zTFix incompatible imports and module references that must be fixed after fix_imports.) fix_importsdbm)whichdbanydbmceZdZdZeZy) FixImports2N)__name__ __module__ __qualname__ run_orderMAPPINGmapping3/usr/lib64/python3.12/lib2to3/fixes/fix_imports2.pyrr s IGrrN)__doc__rr FixImportsrrrrrs.  +((r__pycache__/fix_isinstance.cpython-312.opt-2.pyc000064400000003753152525335740015450 0ustar00 {|jHH ddlmZddlmZGddejZy)) fixer_base)tokenceZdZdZdZdZdZy) FixIsinstanceTz power< 'isinstance' trailer< '(' arglist< any ',' atom< '(' args=testlist_gexp< any+ > ')' > > ')' > > ct}|d}|j}g}t|}|D]\}} | jtj k(rP| j |vrB|t|dz ksC||dzjtjk(sgt|s|j| | jtj k(s|j| j |r#|djtjk(r|d=t|dk(r5|j} | j|d_ | j|dy||dd|jy)Nargs)setchildren enumeratetyperNAMEvaluelenCOMMAnextappendaddparentprefixreplacechanged) selfnoderesultsnames_insertedtestlistr new_argsiteratoridxargatoms 5/usr/lib64/python3.12/lib2to3/fixes/fix_isinstance.py transformzFixIsinstance.transforms6?  T? HCxx5::%#))~*ETQ&4a=+=+=+LN$88uzz)"&&syy1!  ))U[[8 x=A ??D!%HQK  LL! %DG LLNN)__name__ __module__ __qualname__ BM_compatiblePATTERN run_orderr'r(r&rrsMGIr(rN)r fixer_utilrBaseFixrr/r(r&r3s$$J&&$r(__pycache__/fix_renames.cpython-312.opt-1.pyc000064400000005453152525335740014740 0ustar00 {|jjdZddlmZddlmZmZdddiiZiZdZdZ Gd d ejZ y ) z?Fix incompatible renames Fixes: * sys.maxint -> sys.maxsize ) fixer_base)Name attr_chainsysmaxintmaxsizecLddjtt|zdzS)N(|))joinmaprepr)memberss 2/usr/lib64/python3.12/lib2to3/fixes/fix_renames.py alternatesrs" #dG,- - 33c #KttjD]J\}}t|jD])\}}|t||f<d|d|d|dd|d|d+Lyw)Nz3 import_from< 'from' module_name=z, 'import' ( attr_name=z | import_as_name< attr_name=z! 'as' any >) > z& power< module_name=z trailer< '.' attr_name=z > any* > )listMAPPINGitemsLOOKUP)modulereplaceold_attrnew_attrs r build_patternrsl 0"&w}}"7 Hh)1FFH% & 85 5  + +#81sA,A.cXeZdZdZdj eZdZfdZdZ xZ S) FixRenamesTr precztt| |}|r!tfdt |dDry|Sy)Nc3.K|] }|yw)N).0objmatchs r z#FixRenames.match..5sD)C#5:)CsparentF)superrr&anyr)selfnoderesultsr& __class__s @rr&zFixRenames.match1s;j$-+ DD()CDDNrc|jd}|jd}|rI|rFt|j|jf}|jt ||j yyy)N module_name attr_name)prefix)getrvaluerrr2)r+r,r-mod_namer1rs r transformzFixRenames.transform>s^;;}-KK ,   x~~y?@H   d8I4D4DE F"8r) __name__ __module__ __qualname__ BM_compatibler rPATTERNorderr&r6 __classcell__)r.s@rrr*s(Mhh}'G EGrrN) __doc__r fixer_utilrrrrrrBaseFixrr#rrrBsF) Hy)  4+*G##Gr__pycache__/fix_types.cpython-312.pyc000064400000004345152525335740013512 0ustar00 {|jdZddlmZddlmZidddddd d d d d dd ddddddddddddddddddd d!d"d#d$d d%d&d'ZeDcgc]}d(|z c}ZGd)d*ejZy+cc}w),aFixer for removing uses of the types module. These work for only the known names in the types module. The forms above can include types. or not. ie, It is assumed the module is imported either as: import types from types import ... # either * or specific types The import statements are not modified. There should be another fixer that handles at least the following constants: type([]) -> list type(()) -> tuple type('') -> str ) fixer_base)Name BooleanTypebool BufferType memoryview ClassTypetype ComplexTypecomplexDictTypedictDictionaryType EllipsisTypeztype(Ellipsis) FloatTypefloatIntTypeintListTypelistLongType ObjectTypeobjectNoneTypez type(None)NotImplementedTypeztype(NotImplemented) SliceTypeslice StringTypebytes StringTypesz(str,)tuplestrrange) TupleTypeTypeType UnicodeType XRangeTypez)power< 'types' trailer< '.' name='%s' > >c8eZdZdZdj eZdZy)FixTypesT|cztj|dj}|rt||jSy)Nname)prefix) _TYPE_MAPPINGgetvaluerr-)selfnoderesults new_values 0/usr/lib64/python3.12/lib2to3/fixes/fix_types.py transformzFixTypes.transform9s3!%%gfo&;&;<  $++6 6N)__name__ __module__ __qualname__ BM_compatiblejoin_patsPATTERNr6r7r5r)r)5sMhhuoGr7r)N) __doc__r fixer_utilrr.r=BaseFixr))ts0r5rEs,&| f   F  6  ) W 5 F E x L 5 g!" g#$ %&- 2CPP-Q 4q 8-Pz!! Qs A4__pycache__/fix_xreadlines.cpython-312.pyc000064400000002402152525335740014474 0ustar00 {|jJdZddlmZddlmZGddej Zy)zpFix "for x in f.xreadlines()" -> "for x in f". This fixer will also convert g(f.xreadlines) into g(f.__iter__).) fixer_base)NameceZdZdZdZdZy) FixXreadlinesTz power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > > | power< any+ trailer< '.' no_call='xreadlines' > > c|jd}|r'|jtd|jy|j|dDcgc]}|j c}ycc}w)Nno_call__iter__)prefixcall)getreplacerr clone)selfnoderesultsrxs 5/usr/lib64/python3.12/lib2to3/fixes/fix_xreadlines.py transformzFixXreadlines.transformsR++i(  OODGNNC D LLWV_=_!'')_= >=s A,N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrr sMG ?rrN)__doc__r fixer_utilrBaseFixrrrrr s%D ?J&&?r__pycache__/fix_ne.cpython-312.opt-2.pyc000064400000001744152525335740013710 0ustar00 {|j;T ddlmZddlmZddlmZGddej Zy))pytree)token) fixer_basec0eZdZejZdZdZy)FixNec |jdk(S)Nz<>)value)selfnodes -/usr/lib64/python3.12/lib2to3/fixes/fix_ne.pymatchz FixNe.matchszzT!!cftjtjd|j}|S)Nz!=)prefix)rLeafrNOTEQUALr)r r resultsnews r transformzFixNe.transforms!kk%..$t{{C rN)__name__ __module__ __qualname__rr _accept_typer rrr rr s>>L"rrN)rpgen2rrBaseFixrrrr rs'# J   r__pycache__/fix_nonzero.cpython-312.opt-2.pyc000064400000001775152525335740015004 0ustar00 {|jOH ddlmZddlmZGddejZy)) fixer_base)NameceZdZdZdZdZy) FixNonzeroTz classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='__nonzero__' parameters< '(' NAME ')' > any+ > any* > > c^|d}td|j}|j|y)Nname__bool__)prefix)rr replace)selfnoderesultsrnews 2/usr/lib64/python3.12/lib2to3/fixes/fix_nonzero.py transformzFixNonzero.transforms'v:dkk2 SN)__name__ __module__ __qualname__ BM_compatiblePATTERNrrrrrsMGrrN)r fixer_utilrBaseFixrrrrrs"0 ## r__pycache__/fix_standarderror.cpython-312.opt-1.pyc000064400000001501152525335740016146 0ustar00 {|jJdZddlmZddlmZGddej Zy)z%Fixer for StandardError -> Exception.) fixer_base)NameceZdZdZdZdZy)FixStandarderrorTz- 'StandardError' c0td|jS)N Exception)prefix)rr )selfnoderesultss 8/usr/lib64/python3.12/lib2to3/fixes/fix_standarderror.py transformzFixStandarderror.transformsK 44N)__name__ __module__ __qualname__ BM_compatiblePATTERNrrr rr sMG5rrN)__doc__r fixer_utilrBaseFixrrrr rs$,5z))5rfix_apply.py000064400000004452152525335740007131 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for apply(). This converts apply(func, v, k) into (func)(*v, **k).""" # Local imports from .. import pytree from ..pgen2 import token from .. import fixer_base from ..fixer_util import Call, Comma, parenthesize class FixApply(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< 'apply' trailer< '(' arglist< (not argument ')' > > """ def transform(self, node, results): syms = self.syms assert results func = results["func"] args = results["args"] kwds = results.get("kwds") # I feel like we should be able to express this logic in the # PATTERN above but I don't know how to do it so... if args: if (args.type == self.syms.argument and args.children[0].value in {'**', '*'}): return # Make no change. if kwds and (kwds.type == self.syms.argument and kwds.children[0].value == '**'): return # Make no change. prefix = node.prefix func = func.clone() if (func.type not in (token.NAME, syms.atom) and (func.type != syms.power or func.children[-2].type == token.DOUBLESTAR)): # Need to parenthesize func = parenthesize(func) func.prefix = "" args = args.clone() args.prefix = "" if kwds is not None: kwds = kwds.clone() kwds.prefix = "" l_newargs = [pytree.Leaf(token.STAR, "*"), args] if kwds is not None: l_newargs.extend([Comma(), pytree.Leaf(token.DOUBLESTAR, "**"), kwds]) l_newargs[-2].prefix = " " # that's the ** token # XXX Sometimes we could be cleverer, e.g. apply(f, (x, y) + t) # can be translated into f(x, y, *t) instead of f(*(x, y) + t) #new = pytree.Node(syms.power, (func, ArgList(l_newargs))) return Call(func, l_newargs, prefix=prefix) fix_isinstance.py000064400000003110152525335740010132 0ustar00# Copyright 2008 Armin Ronacher. # Licensed to PSF under a Contributor Agreement. """Fixer that cleans up a tuple argument to isinstance after the tokens in it were fixed. This is mainly used to remove double occurrences of tokens as a leftover of the long -> int / unicode -> str conversion. eg. isinstance(x, (int, long)) -> isinstance(x, (int, int)) -> isinstance(x, int) """ from .. import fixer_base from ..fixer_util import token class FixIsinstance(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< 'isinstance' trailer< '(' arglist< any ',' atom< '(' args=testlist_gexp< any+ > ')' > > ')' > > """ run_order = 6 def transform(self, node, results): names_inserted = set() testlist = results["args"] args = testlist.children new_args = [] iterator = enumerate(args) for idx, arg in iterator: if arg.type == token.NAME and arg.value in names_inserted: if idx < len(args) - 1 and args[idx + 1].type == token.COMMA: next(iterator) continue else: new_args.append(arg) if arg.type == token.NAME: names_inserted.add(arg.value) if new_args and new_args[-1].type == token.COMMA: del new_args[-1] if len(new_args) == 1: atom = testlist.parent new_args[0].prefix = atom.prefix atom.replace(new_args[0]) else: args[:] = new_args node.changed() fix_set_literal.py000064400000003241152525335740010306 0ustar00""" Optional fixer to transform set() calls to set literals. """ # Author: Benjamin Peterson from lib2to3 import fixer_base, pytree from lib2to3.fixer_util import token, syms class FixSetLiteral(fixer_base.BaseFix): BM_compatible = True explicit = True PATTERN = """power< 'set' trailer< '(' (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) > | single=any) ']' > | atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' > ) ')' > > """ def transform(self, node, results): single = results.get("single") if single: # Make a fake listmaker fake = pytree.Node(syms.listmaker, [single.clone()]) single.replace(fake) items = fake else: items = results["items"] # Build the contents of the literal literal = [pytree.Leaf(token.LBRACE, "{")] literal.extend(n.clone() for n in items.children) literal.append(pytree.Leaf(token.RBRACE, "}")) # Set the prefix of the right brace to that of the ')' or ']' literal[-1].prefix = items.next_sibling.prefix maker = pytree.Node(syms.dictsetmaker, literal) maker.prefix = node.prefix # If the original was a one tuple, we need to remove the extra comma. if len(maker.children) == 4: n = maker.children[2] n.remove() maker.children[-1].prefix = n.prefix # Finally, replace the set call with our shiny new literal. return maker fix_ne.py000064400000001073152525335740006402 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that turns <> into !=.""" # Local imports from .. import pytree from ..pgen2 import token from .. import fixer_base class FixNe(fixer_base.BaseFix): # This is so simple that we don't need the pattern compiler. _accept_type = token.NOTEQUAL def match(self, node): # Override return node.value == "<>" def transform(self, node, results): new = pytree.Leaf(token.NOTEQUAL, "!=", prefix=node.prefix) return new fix_reload.py000064400000002071152525335740007245 0ustar00"""Fixer for reload(). reload(s) -> importlib.reload(s)""" # Local imports from .. import fixer_base from ..fixer_util import ImportAndCall, touch_import class FixReload(fixer_base.BaseFix): BM_compatible = True order = "pre" PATTERN = """ power< 'reload' trailer< lpar='(' ( not(arglist | argument) any ','> ) rpar=')' > after=any* > """ def transform(self, node, results): if results: # I feel like we should be able to express this logic in the # PATTERN above but I don't know how to do it so... obj = results['obj'] if obj: if (obj.type == self.syms.argument and obj.children[0].value in {'**', '*'}): return # Make no change. names = ('importlib', 'reload') new = ImportAndCall(node, results, names) touch_import(None, 'importlib', node) return new fix_itertools.py000064400000003014152525335740010021 0ustar00""" Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363) imports from itertools are fixed in fix_itertools_import.py If itertools is imported as something else (ie: import itertools as it; it.izip(spam, eggs)) method calls will not get fixed. """ # Local imports from .. import fixer_base from ..fixer_util import Name class FixItertools(fixer_base.BaseFix): BM_compatible = True it_funcs = "('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')" PATTERN = """ power< it='itertools' trailer< dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > > | power< func=%(it_funcs)s trailer< '(' [any] ')' > > """ %(locals()) # Needs to be run after fix_(map|zip|filter) run_order = 6 def transform(self, node, results): prefix = None func = results['func'][0] if ('it' in results and func.value not in ('ifilterfalse', 'izip_longest')): dot, it = (results['dot'], results['it']) # Remove the 'itertools' prefix = it.prefix it.remove() # Replace the node which contains ('.', 'function') with the # function (to be consistent with the second part of the pattern) dot.remove() func.parent.replace(func) prefix = prefix or func.prefix func.replace(Name(func.value[1:], prefix=prefix)) fix_paren.py000064400000002312152525335740007102 0ustar00"""Fixer that adds parentheses where they are required This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``.""" # By Taek Joo Kim and Benjamin Peterson # Local imports from .. import fixer_base from ..fixer_util import LParen, RParen # XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2] class FixParen(fixer_base.BaseFix): BM_compatible = True PATTERN = """ atom< ('[' | '(') (listmaker< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > > | testlist_gexp< any comp_for< 'for' NAME 'in' target=testlist_safe< any (',' any)+ [','] > [any] > >) (']' | ')') > """ def transform(self, node, results): target = results["target"] lparen = LParen() lparen.prefix = target.prefix target.prefix = "" # Make it hug the parentheses target.insert_child(0, lparen) target.append_child(RParen()) fix_exitfunc.py000064400000004677152525335740007642 0ustar00""" Convert use of sys.exitfunc to use the atexit module. """ # Author: Benjamin Peterson from lib2to3 import pytree, fixer_base from lib2to3.fixer_util import Name, Attr, Call, Comma, Newline, syms class FixExitfunc(fixer_base.BaseFix): keep_line_order = True BM_compatible = True PATTERN = """ ( sys_import=import_name<'import' ('sys' | dotted_as_names< (any ',')* 'sys' (',' any)* > ) > | expr_stmt< power< 'sys' trailer< '.' 'exitfunc' > > '=' func=any > ) """ def __init__(self, *args): super(FixExitfunc, self).__init__(*args) def start_tree(self, tree, filename): super(FixExitfunc, self).start_tree(tree, filename) self.sys_import = None def transform(self, node, results): # First, find the sys import. We'll just hope it's global scope. if "sys_import" in results: if self.sys_import is None: self.sys_import = results["sys_import"] return func = results["func"].clone() func.prefix = "" register = pytree.Node(syms.power, Attr(Name("atexit"), Name("register")) ) call = Call(register, [func], node.prefix) node.replace(call) if self.sys_import is None: # That's interesting. self.warning(node, "Can't find sys import; Please add an atexit " "import at the top of your file.") return # Now add an atexit import after the sys import. names = self.sys_import.children[1] if names.type == syms.dotted_as_names: names.append_child(Comma()) names.append_child(Name("atexit", " ")) else: containing_stmt = self.sys_import.parent position = containing_stmt.children.index(self.sys_import) stmt_container = containing_stmt.parent new_import = pytree.Node(syms.import_name, [Name("import"), Name("atexit", " ")] ) new = pytree.Node(syms.simple_stmt, [new_import]) containing_stmt.insert_child(position + 1, Newline()) containing_stmt.insert_child(position + 2, new) fix_dict.py000064400000007260152525335740006727 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for dict methods. d.keys() -> list(d.keys()) d.items() -> list(d.items()) d.values() -> list(d.values()) d.iterkeys() -> iter(d.keys()) d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) d.viewkeys() -> d.keys() d.viewitems() -> d.items() d.viewvalues() -> d.values() Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() or for...in!). Special contexts that apply to both: list(), sorted(), tuple() set(), any(), all(), sum(). Note: iter(d.keys()) could be written as iter(d) but since the original d.iterkeys() was also redundant we don't fix this. And there are (rare) contexts where it makes a difference (e.g. when passing it as an argument to a function that introspects the argument). """ # Local imports from .. import pytree from .. import patcomp from .. import fixer_base from ..fixer_util import Name, Call, Dot from .. import fixer_util iter_exempt = fixer_util.consuming_calls | {"iter"} class FixDict(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< head=any+ trailer< '.' method=('keys'|'items'|'values'| 'iterkeys'|'iteritems'|'itervalues'| 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > """ def transform(self, node, results): head = results["head"] method = results["method"][0] # Extract node for method name tail = results["tail"] syms = self.syms method_name = method.value isiter = method_name.startswith("iter") isview = method_name.startswith("view") if isiter or isview: method_name = method_name[4:] assert method_name in ("keys", "items", "values"), repr(method) head = [n.clone() for n in head] tail = [n.clone() for n in tail] special = not tail and self.in_special_context(node, isiter) args = head + [pytree.Node(syms.trailer, [Dot(), Name(method_name, prefix=method.prefix)]), results["parens"].clone()] new = pytree.Node(syms.power, args) if not (special or isview): new.prefix = "" new = Call(Name("iter" if isiter else "list"), [new]) if tail: new = pytree.Node(syms.power, [new] + tail) new.prefix = node.prefix return new P1 = "power< func=NAME trailer< '(' node=any ')' > any* >" p1 = patcomp.compile_pattern(P1) P2 = """for_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > """ p2 = patcomp.compile_pattern(P2) def in_special_context(self, node, isiter): if node.parent is None: return False results = {} if (node.parent.parent is not None and self.p1.match(node.parent.parent, results) and results["node"] is node): if isiter: # iter(d.iterkeys()) -> iter(d.keys()), etc. return results["func"].value in iter_exempt else: # list(d.keys()) -> list(d.keys()), etc. return results["func"].value in fixer_util.consuming_calls if not isiter: return False # for ... in d.iterkeys() -> for ... in d.keys(), etc. return self.p2.match(node.parent, results) and results["node"] is node fix_next.py000064400000006146152525335740006764 0ustar00"""Fixer for it.next() -> next(it), per PEP 3114.""" # Author: Collin Winter # Things that currently aren't covered: # - listcomp "next" names aren't warned # - "with" statement targets aren't checked # Local imports from ..pgen2 import token from ..pygram import python_symbols as syms from .. import fixer_base from ..fixer_util import Name, Call, find_binding bind_warning = "Calls to builtin next() possibly shadowed by global binding" class FixNext(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > > | power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > > | classdef< 'class' any+ ':' suite< any* funcdef< 'def' name='next' parameters< '(' NAME ')' > any+ > any* > > | global=global_stmt< 'global' any* 'next' any* > """ order = "pre" # Pre-order tree traversal def start_tree(self, tree, filename): super(FixNext, self).start_tree(tree, filename) n = find_binding('next', tree) if n: self.warning(n, bind_warning) self.shadowed_next = True else: self.shadowed_next = False def transform(self, node, results): assert results base = results.get("base") attr = results.get("attr") name = results.get("name") if base: if self.shadowed_next: attr.replace(Name("__next__", prefix=attr.prefix)) else: base = [n.clone() for n in base] base[0].prefix = "" node.replace(Call(Name("next", prefix=node.prefix), base)) elif name: n = Name("__next__", prefix=name.prefix) name.replace(n) elif attr: # We don't do this transformation if we're assigning to "x.next". # Unfortunately, it doesn't seem possible to do this in PATTERN, # so it's being done here. if is_assign_target(node): head = results["head"] if "".join([str(n) for n in head]).strip() == '__builtin__': self.warning(node, bind_warning) return attr.replace(Name("__next__")) elif "global" in results: self.warning(node, bind_warning) self.shadowed_next = True ### The following functions help test if node is part of an assignment ### target. def is_assign_target(node): assign = find_assign(node) if assign is None: return False for child in assign.children: if child.type == token.EQUAL: return False elif is_subtree(child, node): return True return False def find_assign(node): if node.type == syms.expr_stmt: return node if node.type == syms.simple_stmt or node.parent is None: return None return find_assign(node.parent) def is_subtree(root, node): if root == node: return True return any(is_subtree(c, node) for c in root.children) fix_buffer.py000064400000001116152525335740007247 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that changes buffer(...) into memoryview(...).""" # Local imports from .. import fixer_base from ..fixer_util import Name class FixBuffer(fixer_base.BaseFix): BM_compatible = True explicit = True # The user must ask for this fixer PATTERN = """ power< name='buffer' trailer< '(' [any] ')' > any* > """ def transform(self, node, results): name = results["name"] name.replace(Name("memoryview", prefix=name.prefix)) fix_long.py000064400000000734152525335740006742 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that turns 'long' into 'int' everywhere. """ # Local imports from lib2to3 import fixer_base from lib2to3.fixer_util import is_probably_builtin class FixLong(fixer_base.BaseFix): BM_compatible = True PATTERN = "'long'" def transform(self, node, results): if is_probably_builtin(node): node.value = "int" node.changed() fix_imports2.py000064400000000441152525335740007555 0ustar00"""Fix incompatible imports and module references that must be fixed after fix_imports.""" from . import fix_imports MAPPING = { 'whichdb': 'dbm', 'anydbm': 'dbm', } class FixImports2(fix_imports.FixImports): run_order = 7 mapping = MAPPING fix_map.py000064400000007070152525335740006560 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that changes map(F, ...) into list(map(F, ...)) unless there exists a 'from future_builtins import map' statement in the top-level namespace. As a special case, map(None, X) is changed into list(X). (This is necessary because the semantics are changed in this case -- the new map(None, X) is equivalent to [(x,) for x in X].) We avoid the transformation (except for the special case mentioned above) if the map() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on map(F, X, Y, ...) to go on until the longest argument is exhausted, substituting None for missing values -- like zip(), it now stops as soon as the shortest argument is exhausted. """ # Local imports from ..pgen2 import token from .. import fixer_base from ..fixer_util import Name, ArgList, Call, ListComp, in_special_context from ..pygram import python_symbols as syms from ..pytree import Node class FixMap(fixer_base.ConditionalFix): BM_compatible = True PATTERN = """ map_none=power< 'map' trailer< '(' arglist< 'None' ',' arg=any [','] > ')' > [extra_trailers=trailer*] > | map_lambda=power< 'map' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'map' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > """ skip_on = 'future_builtins.map' def transform(self, node, results): if self.should_skip(node): return trailers = [] if 'extra_trailers' in results: for t in results['extra_trailers']: trailers.append(t.clone()) if node.parent.type == syms.simple_stmt: self.warning(node, "You should use a for loop here") new = node.clone() new.prefix = "" new = Call(Name("list"), [new]) elif "map_lambda" in results: new = ListComp(results["xp"].clone(), results["fp"].clone(), results["it"].clone()) new = Node(syms.power, [new] + trailers, prefix="") else: if "map_none" in results: new = results["arg"].clone() new.prefix = "" else: if "args" in results: args = results["args"] if args.type == syms.trailer and \ args.children[1].type == syms.arglist and \ args.children[1].children[0].type == token.NAME and \ args.children[1].children[0].value == "None": self.warning(node, "cannot convert map(None, ...) " "with multiple arguments because map() " "now truncates to the shortest sequence") return new = Node(syms.power, [Name("map"), args.clone()]) new.prefix = "" if in_special_context(node): return None new = Node(syms.power, [Name("list"), ArgList([new])] + trailers) new.prefix = "" new.prefix = node.prefix return new fix_exec.py000064400000001723152525335740006726 0ustar00# Copyright 2006 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for exec. This converts usages of the exec statement into calls to a built-in exec() function. exec code in ns1, ns2 -> exec(code, ns1, ns2) """ # Local imports from .. import fixer_base from ..fixer_util import Comma, Name, Call class FixExec(fixer_base.BaseFix): BM_compatible = True PATTERN = """ exec_stmt< 'exec' a=any 'in' b=any [',' c=any] > | exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any > """ def transform(self, node, results): assert results syms = self.syms a = results["a"] b = results.get("b") c = results.get("c") args = [a.clone()] args[0].prefix = "" if b is not None: args.extend([Comma(), b.clone()]) if c is not None: args.extend([Comma(), c.clone()]) return Call(Name("exec"), args, prefix=node.prefix) fix_future.py000064400000001043152525335740007307 0ustar00"""Remove __future__ imports from __future__ import foo is replaced with an empty line. """ # Author: Christian Heimes # Local imports from .. import fixer_base from ..fixer_util import BlankLine class FixFuture(fixer_base.BaseFix): BM_compatible = True PATTERN = """import_from< 'from' module_name="__future__" 'import' any >""" # This should be run last -- some things check for the import run_order = 10 def transform(self, node, results): new = BlankLine() new.prefix = node.prefix return new fix_imports.py000064400000013064152525335740007500 0ustar00"""Fix incompatible imports and module references.""" # Authors: Collin Winter, Nick Edds # Local imports from .. import fixer_base from ..fixer_util import Name, attr_chain MAPPING = {'StringIO': 'io', 'cStringIO': 'io', 'cPickle': 'pickle', '__builtin__' : 'builtins', 'copy_reg': 'copyreg', 'Queue': 'queue', 'SocketServer': 'socketserver', 'ConfigParser': 'configparser', 'repr': 'reprlib', 'FileDialog': 'tkinter.filedialog', 'tkFileDialog': 'tkinter.filedialog', 'SimpleDialog': 'tkinter.simpledialog', 'tkSimpleDialog': 'tkinter.simpledialog', 'tkColorChooser': 'tkinter.colorchooser', 'tkCommonDialog': 'tkinter.commondialog', 'Dialog': 'tkinter.dialog', 'Tkdnd': 'tkinter.dnd', 'tkFont': 'tkinter.font', 'tkMessageBox': 'tkinter.messagebox', 'ScrolledText': 'tkinter.scrolledtext', 'Tkconstants': 'tkinter.constants', 'Tix': 'tkinter.tix', 'ttk': 'tkinter.ttk', 'Tkinter': 'tkinter', 'markupbase': '_markupbase', '_winreg': 'winreg', 'thread': '_thread', 'dummy_thread': '_dummy_thread', # anydbm and whichdb are handled by fix_imports2 'dbhash': 'dbm.bsd', 'dumbdbm': 'dbm.dumb', 'dbm': 'dbm.ndbm', 'gdbm': 'dbm.gnu', 'xmlrpclib': 'xmlrpc.client', 'DocXMLRPCServer': 'xmlrpc.server', 'SimpleXMLRPCServer': 'xmlrpc.server', 'httplib': 'http.client', 'htmlentitydefs' : 'html.entities', 'HTMLParser' : 'html.parser', 'Cookie': 'http.cookies', 'cookielib': 'http.cookiejar', 'BaseHTTPServer': 'http.server', 'SimpleHTTPServer': 'http.server', 'CGIHTTPServer': 'http.server', #'test.test_support': 'test.support', 'commands': 'subprocess', 'UserString' : 'collections', 'UserList' : 'collections', 'urlparse' : 'urllib.parse', 'robotparser' : 'urllib.robotparser', } def alternates(members): return "(" + "|".join(map(repr, members)) + ")" def build_pattern(mapping=MAPPING): mod_list = ' | '.join(["module_name='%s'" % key for key in mapping]) bare_names = alternates(mapping.keys()) yield """name_import=import_name< 'import' ((%s) | multiple_imports=dotted_as_names< any* (%s) any* >) > """ % (mod_list, mod_list) yield """import_from< 'from' (%s) 'import' ['('] ( any | import_as_name< any 'as' any > | import_as_names< any* >) [')'] > """ % mod_list yield """import_name< 'import' (dotted_as_name< (%s) 'as' any > | multiple_imports=dotted_as_names< any* dotted_as_name< (%s) 'as' any > any* >) > """ % (mod_list, mod_list) # Find usages of module members in code e.g. thread.foo(bar) yield "power< bare_with_attr=(%s) trailer<'.' any > any* >" % bare_names class FixImports(fixer_base.BaseFix): BM_compatible = True keep_line_order = True # This is overridden in fix_imports2. mapping = MAPPING # We want to run this fixer late, so fix_import doesn't try to make stdlib # renames into relative imports. run_order = 6 def build_pattern(self): return "|".join(build_pattern(self.mapping)) def compile_pattern(self): # We override this, so MAPPING can be pragmatically altered and the # changes will be reflected in PATTERN. self.PATTERN = self.build_pattern() super(FixImports, self).compile_pattern() # Don't match the node if it's within another match. def match(self, node): match = super(FixImports, self).match results = match(node) if results: # Module usage could be in the trailer of an attribute lookup, so we # might have nested matches when "bare_with_attr" is present. if "bare_with_attr" not in results and \ any(match(obj) for obj in attr_chain(node, "parent")): return False return results return False def start_tree(self, tree, filename): super(FixImports, self).start_tree(tree, filename) self.replace = {} def transform(self, node, results): import_mod = results.get("module_name") if import_mod: mod_name = import_mod.value new_name = self.mapping[mod_name] import_mod.replace(Name(new_name, prefix=import_mod.prefix)) if "name_import" in results: # If it's not a "from x import x, y" or "import x as y" import, # marked its usage to be replaced. self.replace[mod_name] = new_name if "multiple_imports" in results: # This is a nasty hack to fix multiple imports on a line (e.g., # "import StringIO, urlparse"). The problem is that I can't # figure out an easy way to make a pattern recognize the keys of # MAPPING randomly sprinkled in an import statement. results = self.match(node) if results: self.transform(node, results) else: # Replace usage of the module. bare_name = results["bare_with_attr"][0] new_name = self.replace.get(bare_name.value) if new_name: bare_name.replace(Name(new_name, prefix=bare_name.prefix)) fix_xrange.py000064400000005206152525335750007267 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that changes xrange(...) into range(...).""" # Local imports from .. import fixer_base from ..fixer_util import Name, Call, consuming_calls from .. import patcomp class FixXrange(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< (name='range'|name='xrange') trailer< '(' args=any ')' > rest=any* > """ def start_tree(self, tree, filename): super(FixXrange, self).start_tree(tree, filename) self.transformed_xranges = set() def finish_tree(self, tree, filename): self.transformed_xranges = None def transform(self, node, results): name = results["name"] if name.value == "xrange": return self.transform_xrange(node, results) elif name.value == "range": return self.transform_range(node, results) else: raise ValueError(repr(name)) def transform_xrange(self, node, results): name = results["name"] name.replace(Name("range", prefix=name.prefix)) # This prevents the new range call from being wrapped in a list later. self.transformed_xranges.add(id(node)) def transform_range(self, node, results): if (id(node) not in self.transformed_xranges and not self.in_special_context(node)): range_call = Call(Name("range"), [results["args"].clone()]) # Encase the range call in list(). list_call = Call(Name("list"), [range_call], prefix=node.prefix) # Put things that were after the range() call after the list call. for n in results["rest"]: list_call.append_child(n) return list_call P1 = "power< func=NAME trailer< '(' node=any ')' > any* >" p1 = patcomp.compile_pattern(P1) P2 = """for_stmt< 'for' any 'in' node=any ':' any* > | comp_for< 'for' any 'in' node=any any* > | comparison< any 'in' node=any any*> """ p2 = patcomp.compile_pattern(P2) def in_special_context(self, node): if node.parent is None: return False results = {} if (node.parent.parent is not None and self.p1.match(node.parent.parent, results) and results["node"] is node): # list(d.keys()) -> list(d.keys()), etc. return results["func"].value in consuming_calls # for ... in d.iterkeys() -> for ... in d.keys(), etc. return self.p2.match(node.parent, results) and results["node"] is node fix_filter.py000064400000005315152525335750007271 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer that changes filter(F, X) into list(filter(F, X)). We avoid the transformation if the filter() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on filter(F, X) to return a string if X is a string and a tuple if X is a tuple. That would require type inference, which we don't do. Let Python 2.6 figure it out. """ # Local imports from .. import fixer_base from ..pytree import Node from ..pygram import python_symbols as syms from ..fixer_util import Name, ArgList, ListComp, in_special_context, parenthesize class FixFilter(fixer_base.ConditionalFix): BM_compatible = True PATTERN = """ filter_lambda=power< 'filter' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'filter' trailer< '(' arglist< none='None' ',' seq=any > ')' > [extra_trailers=trailer*] > | power< 'filter' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > """ skip_on = "future_builtins.filter" def transform(self, node, results): if self.should_skip(node): return trailers = [] if 'extra_trailers' in results: for t in results['extra_trailers']: trailers.append(t.clone()) if "filter_lambda" in results: xp = results.get("xp").clone() if xp.type == syms.test: xp.prefix = "" xp = parenthesize(xp) new = ListComp(results.get("fp").clone(), results.get("fp").clone(), results.get("it").clone(), xp) new = Node(syms.power, [new] + trailers, prefix="") elif "none" in results: new = ListComp(Name("_f"), Name("_f"), results["seq"].clone(), Name("_f")) new = Node(syms.power, [new] + trailers, prefix="") else: if in_special_context(node): return None args = results['args'].clone() new = Node(syms.power, [Name("filter"), args], prefix="") new = Node(syms.power, [Name("list"), ArgList([new])] + trailers) new.prefix = "" new.prefix = node.prefix return new fix_standarderror.py000064400000000701152525335750010650 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for StandardError -> Exception.""" # Local imports from .. import fixer_base from ..fixer_util import Name class FixStandarderror(fixer_base.BaseFix): BM_compatible = True PATTERN = """ 'StandardError' """ def transform(self, node, results): return Name("Exception", prefix=node.prefix) fix_operator.py000064400000006542152525335750007642 0ustar00"""Fixer for operator functions. operator.isCallable(obj) -> callable(obj) operator.sequenceIncludes(obj) -> operator.contains(obj) operator.isSequenceType(obj) -> isinstance(obj, collections.abc.Sequence) operator.isMappingType(obj) -> isinstance(obj, collections.abc.Mapping) operator.isNumberType(obj) -> isinstance(obj, numbers.Number) operator.repeat(obj, n) -> operator.mul(obj, n) operator.irepeat(obj, n) -> operator.imul(obj, n) """ import collections.abc # Local imports from lib2to3 import fixer_base from lib2to3.fixer_util import Call, Name, String, touch_import def invocation(s): def dec(f): f.invocation = s return f return dec class FixOperator(fixer_base.BaseFix): BM_compatible = True order = "pre" methods = """ method=('isCallable'|'sequenceIncludes' |'isSequenceType'|'isMappingType'|'isNumberType' |'repeat'|'irepeat') """ obj = "'(' obj=any ')'" PATTERN = """ power< module='operator' trailer< '.' %(methods)s > trailer< %(obj)s > > | power< %(methods)s trailer< %(obj)s > > """ % dict(methods=methods, obj=obj) def transform(self, node, results): method = self._check_method(node, results) if method is not None: return method(node, results) @invocation("operator.contains(%s)") def _sequenceIncludes(self, node, results): return self._handle_rename(node, results, "contains") @invocation("callable(%s)") def _isCallable(self, node, results): obj = results["obj"] return Call(Name("callable"), [obj.clone()], prefix=node.prefix) @invocation("operator.mul(%s)") def _repeat(self, node, results): return self._handle_rename(node, results, "mul") @invocation("operator.imul(%s)") def _irepeat(self, node, results): return self._handle_rename(node, results, "imul") @invocation("isinstance(%s, collections.abc.Sequence)") def _isSequenceType(self, node, results): return self._handle_type2abc(node, results, "collections.abc", "Sequence") @invocation("isinstance(%s, collections.abc.Mapping)") def _isMappingType(self, node, results): return self._handle_type2abc(node, results, "collections.abc", "Mapping") @invocation("isinstance(%s, numbers.Number)") def _isNumberType(self, node, results): return self._handle_type2abc(node, results, "numbers", "Number") def _handle_rename(self, node, results, name): method = results["method"][0] method.value = name method.changed() def _handle_type2abc(self, node, results, module, abc): touch_import(None, module, node) obj = results["obj"] args = [obj.clone(), String(", " + ".".join([module, abc]))] return Call(Name("isinstance"), args, prefix=node.prefix) def _check_method(self, node, results): method = getattr(self, "_" + results["method"][0].value) if isinstance(method, collections.abc.Callable): if "module" in results: return method else: sub = (str(results["obj"]),) invocation_str = method.invocation % sub self.warning(node, "You should use '%s' here." % invocation_str) return None fix_ws_comma.py000064400000002102152525335750007600 0ustar00"""Fixer that changes 'a ,b' into 'a, b'. This also changes '{a :b}' into '{a: b}', but does not touch other uses of colons. It does not touch other uses of whitespace. """ from .. import pytree from ..pgen2 import token from .. import fixer_base class FixWsComma(fixer_base.BaseFix): explicit = True # The user must ask for this fixers PATTERN = """ any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]> """ COMMA = pytree.Leaf(token.COMMA, ",") COLON = pytree.Leaf(token.COLON, ":") SEPS = (COMMA, COLON) def transform(self, node, results): new = node.clone() comma = False for child in new.children: if child in self.SEPS: prefix = child.prefix if prefix.isspace() and "\n" not in prefix: child.prefix = "" comma = True else: if comma: prefix = child.prefix if not prefix: child.prefix = " " comma = False return new fix_throw.py000064400000003056152525335750007147 0ustar00"""Fixer for generator.throw(E, V, T). g.throw(E) -> g.throw(E) g.throw(E, V) -> g.throw(E(V)) g.throw(E, V, T) -> g.throw(E(V).with_traceback(T)) g.throw("foo"[, V[, T]]) will warn about string exceptions.""" # Author: Collin Winter # Local imports from .. import pytree from ..pgen2 import token from .. import fixer_base from ..fixer_util import Name, Call, ArgList, Attr, is_tuple class FixThrow(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< any trailer< '.' 'throw' > trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' > > | power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > > """ def transform(self, node, results): syms = self.syms exc = results["exc"].clone() if exc.type is token.STRING: self.cannot_convert(node, "Python 3 does not support string exceptions") return # Leave "g.throw(E)" alone val = results.get("val") if val is None: return val = val.clone() if is_tuple(val): args = [c.clone() for c in val.children[1:-1]] else: val.prefix = "" args = [val] throw_args = results["args"] if "tb" in results: tb = results["tb"].clone() tb.prefix = "" e = Call(exc, args) with_tb = Attr(e, Name('with_traceback')) + [ArgList([tb])] throw_args.replace(pytree.Node(syms.power, with_tb)) else: throw_args.replace(Call(exc, args)) fix_sys_exc.py000064400000002012152525335750007450 0ustar00"""Fixer for sys.exc_{type, value, traceback} sys.exc_type -> sys.exc_info()[0] sys.exc_value -> sys.exc_info()[1] sys.exc_traceback -> sys.exc_info()[2] """ # By Jeff Balogh and Benjamin Peterson # Local imports from .. import fixer_base from ..fixer_util import Attr, Call, Name, Number, Subscript, Node, syms class FixSysExc(fixer_base.BaseFix): # This order matches the ordering of sys.exc_info(). exc_info = ["exc_type", "exc_value", "exc_traceback"] BM_compatible = True PATTERN = """ power< 'sys' trailer< dot='.' attribute=(%s) > > """ % '|'.join("'%s'" % e for e in exc_info) def transform(self, node, results): sys_attr = results["attribute"][0] index = Number(self.exc_info.index(sys_attr.value)) call = Call(Name("exc_info"), prefix=sys_attr.prefix) attr = Attr(Name("sys"), call) attr[1].children[0].prefix = results["dot"].prefix attr.append(Subscript(index)) return Node(syms.power, attr, prefix=node.prefix) fix_input.py000064400000001304152525335750007135 0ustar00"""Fixer that changes input(...) into eval(input(...)).""" # Author: Andre Roberge # Local imports from .. import fixer_base from ..fixer_util import Call, Name from .. import patcomp context = patcomp.compile_pattern("power< 'eval' trailer< '(' any ')' > >") class FixInput(fixer_base.BaseFix): BM_compatible = True PATTERN = """ power< 'input' args=trailer< '(' [any] ')' > > """ def transform(self, node, results): # If we're already wrapped in an eval() call, we're done. if context.match(node.parent.parent): return new = node.clone() new.prefix = "" return Call(Name("eval"), [new], prefix=node.prefix) __init__.py000064400000000057152525335750006673 0ustar00# Dummy file to make this directory a package. fix_types.py000064400000003356152525335750007153 0ustar00# Copyright 2007 Google, Inc. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. """Fixer for removing uses of the types module. These work for only the known names in the types module. The forms above can include types. or not. ie, It is assumed the module is imported either as: import types from types import ... # either * or specific types The import statements are not modified. There should be another fixer that handles at least the following constants: type([]) -> list type(()) -> tuple type('') -> str """ # Local imports from .. import fixer_base from ..fixer_util import Name _TYPE_MAPPING = { 'BooleanType' : 'bool', 'BufferType' : 'memoryview', 'ClassType' : 'type', 'ComplexType' : 'complex', 'DictType': 'dict', 'DictionaryType' : 'dict', 'EllipsisType' : 'type(Ellipsis)', #'FileType' : 'io.IOBase', 'FloatType': 'float', 'IntType': 'int', 'ListType': 'list', 'LongType': 'int', 'ObjectType' : 'object', 'NoneType': 'type(None)', 'NotImplementedType' : 'type(NotImplemented)', 'SliceType' : 'slice', 'StringType': 'bytes', # XXX ? 'StringTypes' : '(str,)', # XXX ? 'TupleType': 'tuple', 'TypeType' : 'type', 'UnicodeType': 'str', 'XRangeType' : 'range', } _pats = ["power< 'types' trailer< '.' name='%s' > >" % t for t in _TYPE_MAPPING] class FixTypes(fixer_base.BaseFix): BM_compatible = True PATTERN = '|'.join(_pats) def transform(self, node, results): new_value = _TYPE_MAPPING.get(results["name"].value) if new_value: return Name(new_value, prefix=node.prefix) return None fix_basestring.py000064400000000500152525335750010134 0ustar00"""Fixer for basestring -> str.""" # Author: Christian Heimes # Local imports from .. import fixer_base from ..fixer_util import Name class FixBasestring(fixer_base.BaseFix): BM_compatible = True PATTERN = "'basestring'" def transform(self, node, results): return Name("str", prefix=node.prefix) fix_numliterals.py000064400000001400152525335750010332 0ustar00"""Fixer that turns 1L into 1, 0755 into 0o755. """ # Copyright 2007 Georg Brandl. # Licensed to PSF under a Contributor Agreement. # Local imports from ..pgen2 import token from .. import fixer_base from ..fixer_util import Number class FixNumliterals(fixer_base.BaseFix): # This is so simple that we don't need the pattern compiler. _accept_type = token.NUMBER def match(self, node): # Override return (node.value.startswith("0") or node.value[-1] in "Ll") def transform(self, node, results): val = node.value if val[-1] in 'Ll': val = val[:-1] elif val.startswith('0') and val.isdigit() and len(set(val)) > 1: val = "0o" + val[1:] return Number(val, prefix=node.prefix) fix_tuple_params.py000064400000012675152525335750010507 0ustar00"""Fixer for function definitions with tuple parameters. def func(((a, b), c), d): ... -> def func(x, d): ((a, b), c) = x ... It will also support lambdas: lambda (x, y): x + y -> lambda t: t[0] + t[1] # The parens are a syntax error in Python 3 lambda (x): x + y -> lambda x: x + y """ # Author: Collin Winter # Local imports from .. import pytree from ..pgen2 import token from .. import fixer_base from ..fixer_util import Assign, Name, Newline, Number, Subscript, syms def is_docstring(stmt): return isinstance(stmt, pytree.Node) and \ stmt.children[0].type == token.STRING class FixTupleParams(fixer_base.BaseFix): run_order = 4 #use a lower order since lambda is part of other #patterns BM_compatible = True PATTERN = """ funcdef< 'def' any parameters< '(' args=any ')' > ['->' any] ':' suite=any+ > | lambda= lambdef< 'lambda' args=vfpdef< '(' inner=any ')' > ':' body=any > """ def transform(self, node, results): if "lambda" in results: return self.transform_lambda(node, results) new_lines = [] suite = results["suite"] args = results["args"] # This crap is so "def foo(...): x = 5; y = 7" is handled correctly. # TODO(cwinter): suite-cleanup if suite[0].children[1].type == token.INDENT: start = 2 indent = suite[0].children[1].value end = Newline() else: start = 0 indent = "; " end = pytree.Leaf(token.INDENT, "") # We need access to self for new_name(), and making this a method # doesn't feel right. Closing over self and new_lines makes the # code below cleaner. def handle_tuple(tuple_arg, add_prefix=False): n = Name(self.new_name()) arg = tuple_arg.clone() arg.prefix = "" stmt = Assign(arg, n.clone()) if add_prefix: n.prefix = " " tuple_arg.replace(n) new_lines.append(pytree.Node(syms.simple_stmt, [stmt, end.clone()])) if args.type == syms.tfpdef: handle_tuple(args) elif args.type == syms.typedargslist: for i, arg in enumerate(args.children): if arg.type == syms.tfpdef: # Without add_prefix, the emitted code is correct, # just ugly. handle_tuple(arg, add_prefix=(i > 0)) if not new_lines: return # This isn't strictly necessary, but it plays nicely with other fixers. # TODO(cwinter) get rid of this when children becomes a smart list for line in new_lines: line.parent = suite[0] # TODO(cwinter) suite-cleanup after = start if start == 0: new_lines[0].prefix = " " elif is_docstring(suite[0].children[start]): new_lines[0].prefix = indent after = start + 1 for line in new_lines: line.parent = suite[0] suite[0].children[after:after] = new_lines for i in range(after+1, after+len(new_lines)+1): suite[0].children[i].prefix = indent suite[0].changed() def transform_lambda(self, node, results): args = results["args"] body = results["body"] inner = simplify_args(results["inner"]) # Replace lambda ((((x)))): x with lambda x: x if inner.type == token.NAME: inner = inner.clone() inner.prefix = " " args.replace(inner) return params = find_params(args) to_index = map_to_index(params) tup_name = self.new_name(tuple_name(params)) new_param = Name(tup_name, prefix=" ") args.replace(new_param.clone()) for n in body.post_order(): if n.type == token.NAME and n.value in to_index: subscripts = [c.clone() for c in to_index[n.value]] new = pytree.Node(syms.power, [new_param.clone()] + subscripts) new.prefix = n.prefix n.replace(new) ### Helper functions for transform_lambda() def simplify_args(node): if node.type in (syms.vfplist, token.NAME): return node elif node.type == syms.vfpdef: # These look like vfpdef< '(' x ')' > where x is NAME # or another vfpdef instance (leading to recursion). while node.type == syms.vfpdef: node = node.children[1] return node raise RuntimeError("Received unexpected node %s" % node) def find_params(node): if node.type == syms.vfpdef: return find_params(node.children[1]) elif node.type == token.NAME: return node.value return [find_params(c) for c in node.children if c.type != token.COMMA] def map_to_index(param_list, prefix=[], d=None): if d is None: d = {} for i, obj in enumerate(param_list): trailer = [Subscript(Number(str(i)))] if isinstance(obj, list): map_to_index(obj, trailer, d=d) else: d[obj] = prefix + trailer return d def tuple_name(param_list): l = [] for obj in param_list: if isinstance(obj, list): l.append(tuple_name(obj)) else: l.append(obj) return "_".join(l)