示例#1
0
def add_sep_part(sep, pos, lst):
    if sep is not None and not isNone(sep) and \
       not (sep.type == token.STRING and sep.value in ("' '", '" "')):
        temp = []
        for arg in pos:
            temp.append(_unicode(arg.clone()))
            if sys.version_info >= (2, 6):
                warnings.warn(
                    "Calling unicode() on what may be a bytes object")
            temp.append(Comma())
        del temp[-1]
        sep = sep.clone()
        sep.prefix = " "
        args = Node(syms.listmaker, temp)
        new_list = Node(syms.atom,
                        [Leaf(token.LSQB, "["), args,
                         Leaf(token.RSQB, "]")])
        join_arg = Node(syms.trailer, [LParen(), new_list, RParen()])
        sep_join = Node(syms.power,
                        [sep, Node(syms.trailer, [Dot(), Name("join")])])
        lst.append(sep_join)
        lst.append(join_arg)
    else:
        if pos:
            pos[0].prefix = " "
        for arg in pos:
            lst.append(arg.clone())
            lst.append(Comma())
        del lst[-1]
示例#2
0
 def transform(self, node, results):
     method = results['method']
     method_name = method.value
     if method_name == 'numframes':
         method_name = 'n_frames'
     syms = self.syms
     args = [pytree.Node(syms.trailer, [Dot(), Name(method_name)])]
     new = pytree.Node(syms.power, args)
     return new
示例#3
0
def add_end_part(end, file, parent, loc):
    if isNone(end):
        return
    if end.type == token.STRING and end.value in ("' '", '" "', "u' '", 'u" "',
                                                  "b' '", 'b" "'):
        return
    if file is None:
        touch_import(None, "sys", parent)
        file = Node(syms.power,
                    [Name("sys"),
                     Node(syms.trailer, [Dot(), Name("stdout")])])
    end_part = Node(syms.power, [
        file,
        Node(syms.trailer, [Dot(), Name("write")]),
        Node(syms.trailer, [LParen(), end, RParen()])
    ])
    end_part.prefix = " "
    parent.insert_child(loc, Leaf(token.SEMI, ";"))
    parent.insert_child(loc + 1, end_part)
示例#4
0
def DottedName(full_name: str, prefix: Optional[str]) -> Node:
    names = [name.strip() for name in full_name.split(".")]

    dotted_name = []
    for name in names:
        dotted_name.append(Name(name))
        dotted_name.append(Dot())
    dotted_name.pop()

    return Node(syms.dotted_name, dotted_name, prefix=prefix)
示例#5
0
 def transform(self, node, results):
     head = results['head']
     method = results['method']
     tail = results['tail']
     syms = self.syms
     method_name = 'dihedrals'
     head = [n.clone() for n in head]
     tail = [n.clone() for n in tail]
     args = head + [pytree.Node(syms.trailer, [Dot(), Name(method_name, prefix = method.prefix)])]
     new = pytree.Node(syms.power, args)
     return new
示例#6
0
    def transform(self, node, results):
        method = results['method'][0]
        method_name = method.value
        #with the exception of applyPBC, all camelcase changes here involve replacing a capital letter with an underscore and the lower case version of that letter
        if not method_name == 'applyPBC':
            method_name = re.sub(r'([A-Z]{1})', r'_\1', method_name).lower()
        else:
            method_name = 'apply_PBC'

        syms = self.syms
        args = [pytree.Node(syms.trailer, [Dot(), Name(method_name)])]
        new = pytree.Node(syms.power, args)
        return new
示例#7
0
 def package_tree(self, package):
     """ Return pytree tree for accessing the package
     
     Example:
         >>> package_tree("Orange.feature.scoring")
         [Name('Orange'), trailer('.' 'feature'), trailer('.', 'scoring')]
     """
     path = package.split('.')
     nodes = [Name(path[0])]
     for name in path[1:]:
         new = pytree.Node(self.syms.trailer, [Dot(), Name(name)])
         nodes.append(new)
     return nodes
示例#8
0
 def transform(self, node, results):
     head = results['head']
     method = results['method'][0]
     tail = results['tail']
     syms = self.syms
     method_name = method.value
     if method_name == 'torsion':
         method_name = 'dihedral'
     head = [n.clone() for n in head]
     tail = [n.clone() for n in tail]
     args = head + [
         pytree.Node(syms.trailer, [
             Dot(),
             Name(method_name, prefix=method.prefix),
             Dot(),
             Name('value'),
             LParen(),
             RParen()
         ])
     ]
     new = pytree.Node(syms.power, args)
     return new
 def transform(self, node, results):
     head = results['head']
     method = results['method'][0]
     tail = results['tail']
     syms = self.syms
     method_name = method.value
     head = [n.clone() for n in head]
     tail = [n.clone() for n in tail]
     if method_name == 'set_radius': #different plural conversion 
         method_name = 'set_radii'
     elif method_name == 'set_mass': #another different plural form
         method_name = 'set_masses'
     else:
         method_name += 's' #standard plural conversion for all others
     args = head + [pytree.Node(syms.trailer, [Dot(), Name(method_name, prefix = method.prefix)])] + tail
     new = pytree.Node(syms.power, args)
     return new
示例#10
0
 def transform(self, node, results):
     if 'method' in results.keys():
         method = results['method']
         syms = self.syms
         method_name = method.value
         replacement_dict = {'calc_torsions': 'calc_dihedrals'}
         method_name = replacement_dict[method_name]
         args = [
             pytree.Node(
                 syms.trailer,
                 [Dot(), Name(method_name, prefix=method.prefix)])
         ]
         new = pytree.Node(syms.power, args)
         return new
     elif 'import_name' in results.keys():
         import_name = results['import_name']
         import_name.replace(Name(' calc_dihedrals'))
 def transform(self, node, results):
     head = results['head']
     method = results['method'][0]
     tail = results['tail']
     syms = self.syms
     method_name = method.value
     head = [n.clone() for n in head]
     tail = [n.clone() for n in tail]
     replacement_dict = {
         'numberOfAtoms': 'n_atoms',
         'numberOfResidues': 'n_residues',
         'numberOfSegments': 'n_segments'
     }
     method_name = replacement_dict[method_name]
     args = head + [
         pytree.Node(syms.trailer,
                     [Dot(), Name(method_name, prefix=method.prefix)])
     ]
     new = pytree.Node(syms.power, args)
     return new
示例#12
0
def AttrChain(name: str) -> List[Node]:
    first, *rest = name.split(".")
    children = [Name(first)]
    for attr in rest:
        children.append(Node(syms.trailer, [Dot(), Name(attr)]))
    return children