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]
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
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)
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)
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
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
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
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
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
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