File Explorer

/proc/self/root/proc/self/root/proc/self/root/usr/lib64/python3.9/lib2to3/fixes

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

fix_set_literal.py1.7 KB · 54 lines
"""Optional fixer to transform set() calls to set literals.""" # Author: Benjamin Peterson from lib2to3 import fixer_base, pytreefrom 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