当前位置: 首页>>代码示例>>Python>>正文


Python ast.NodeVisitor方法代码示例

本文整理汇总了Python中ast.NodeVisitor方法的典型用法代码示例。如果您正苦于以下问题:Python ast.NodeVisitor方法的具体用法?Python ast.NodeVisitor怎么用?Python ast.NodeVisitor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ast的用法示例。


在下文中一共展示了ast.NodeVisitor方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: parse_version

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def parse_version(fpath):
    """
    Statically parse the version number from a python file
    """
    import ast
    if not exists(fpath):
        raise ValueError('fpath={!r} does not exist'.format(fpath))
    with open(fpath, 'r') as file_:
        sourcecode = file_.read()
    pt = ast.parse(sourcecode)
    class VersionVisitor(ast.NodeVisitor):
        def visit_Assign(self, node):
            for target in node.targets:
                if getattr(target, 'id', None) == '__version__':
                    self.version = node.value.s
    visitor = VersionVisitor()
    visitor.visit(pt)
    return visitor.version 
开发者ID:Erotemic,项目名称:ibeis,代码行数:20,代码来源:setup.py

示例2: parse_version

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def parse_version(package):
    """
    Statically parse the version number from __init__.py

    CommandLine:
        python -c "import setup; print(setup.parse_version('ovharn'))"
    """
    from os.path import dirname, join
    import ast
    init_fpath = join(dirname(__file__), package, '__init__.py')
    with open(init_fpath) as file_:
        sourcecode = file_.read()
    pt = ast.parse(sourcecode)
    class VersionVisitor(ast.NodeVisitor):
        def visit_Assign(self, node):
            for target in node.targets:
                if target.id == '__version__':
                    self.version = node.value.s
    visitor = VersionVisitor()
    visitor.visit(pt)
    return visitor.version 
开发者ID:Erotemic,项目名称:ibeis,代码行数:23,代码来源:super_setup.py

示例3: visit_Call

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_Call(self, node):
            p = ParseCall()
            p.visit(node.func)
            ast.NodeVisitor.generic_visit(self, node)

            if p.ls[-1] == 'simplefilter' or p.ls[-1] == 'filterwarnings':
                if node.args[0].s == "ignore":
                    self.bad_filters.append(
                        "{}:{}".format(self.__filename, node.lineno))

            if p.ls[-1] == 'warn' and (
                    len(p.ls) == 1 or p.ls[-2] == 'warnings'):

                if self.__filename == "_lib/tests/test_warnings.py":
                    # This file
                    return

                # See if stacklevel exists:
                if len(node.args) == 3:
                    return
                args = {kw.arg for kw in node.keywords}
                if "stacklevel" not in args:
                    self.bad_stacklevels.append(
                        "{}:{}".format(self.__filename, node.lineno)) 
开发者ID:Relph1119,项目名称:GraphicDesignPatternByPython,代码行数:26,代码来源:test_warnings.py

示例4: visit_all

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_all(self, nodes, inline=False):
        """Visit all nodes in the given list"""

        if not inline:
            last_ctx = self.context.last()
            last_ctx["locals"].push()

        visitor = NodeVisitor(context=self.context, config=self.config)

        if isinstance(nodes, list):
            for node in nodes:
                visitor.visit(node)
            if not inline:
                self.output.append(visitor.output)
        else:
            visitor.visit(nodes)
            if not inline:
                self.output.extend(visitor.output)

        if not inline:
            last_ctx = self.context.last()
            last_ctx["locals"].pop()

        if inline:
            return " ".join(visitor.output) 
开发者ID:dmitrii-eremin,项目名称:python-lua,代码行数:27,代码来源:nodevisitor.py

示例5: _parse_slice

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def _parse_slice(string):
    slices = []

    class SliceVisitor(ast.NodeVisitor):
        def visit_Slice(self, node):
            start = ast.literal_eval(node.lower) if node.lower else None
            stop = ast.literal_eval(node.upper) if node.upper else None
            step = ast.literal_eval(node.step) if node.step else None
            slices.append(slice(start, stop, step))

    try:
        SliceVisitor().visit(ast.parse('_[{}]'.format(string)))
        sl, = slices
    except (SyntaxError, ValueError):
        raise ValueError('{} is not a valid slice string'.format(string))
    return sl 
开发者ID:anntzer,项目名称:defopt,代码行数:18,代码来源:defopt.py

示例6: visit_Attribute

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_Attribute(self, node):  # pylint: disable=invalid-name
    """Handle bare Attributes i.e. [tf.foo, tf.bar].

    Args:
      node: Node that is of type ast.Attribute
    """
    full_name = self._get_attribute_full_path(node)
    if full_name and full_name.startswith("tf."):
      self._rename_functions(node, full_name)
    if full_name in self._api_change_spec.change_to_function:
      if not hasattr(node, "is_function_for_call"):
        new_text = full_name + "()"
        self._file_edit.add("Changed %r to %r"%(full_name, new_text),
                            node.lineno, node.col_offset, full_name, new_text)

    ast.NodeVisitor.generic_visit(self, node) 
开发者ID:hclhkbu,项目名称:dlbench,代码行数:18,代码来源:tf_upgrade.py

示例7: visit_Subscript

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_Subscript(self, node):
        if hasattr(node.slice, 'value') and hasattr(node.slice.value, 'id'):
            self.stack.append('[' + str(node.slice.value.id) + ']')
            self.in_subscript += 1
            self.seen_name = False
        elif hasattr(node.slice, 'value') and hasattr(node.slice.value, 'n'):
            self.stack.append('[' + str(node.slice.value.n) + ']')
            self.in_subscript += 1
            self.seen_name = False
        elif hasattr(node.slice, 'value') and hasattr(node.slice.value, 's'):
            self.stack.append('[' + repr(str(node.slice.value.s)) + ']')
            self.in_subscript += 1
            self.seen_name = False
        else:
            self.seen_complexity = 1
        ast.NodeVisitor.generic_visit(self, node)
        if hasattr(node.slice, 'slice') and (hasattr(node.slice.value, 'id') or hasattr(node.slice.value, 'n')):
            self.in_subscript -= 1 
开发者ID:jhpyle,项目名称:docassemble,代码行数:20,代码来源:astparser.py

示例8: visit_Assign

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_Assign(self, node):
        for key, val in ast.iter_fields(node):
            if key == 'targets':
                for subnode in val:
                    if type(subnode) is ast.Tuple:
                        for subsubnode in subnode.elts:
                            crawler = myextract()
                            crawler.visit(subsubnode)
                            self.targets[fix_assign.sub(r'\1', ".".join(reversed(crawler.stack)))] = 1
                    else:
                        crawler = myextract()
                        crawler.visit(subnode)
                        self.targets[fix_assign.sub(r'\1', ".".join(reversed(crawler.stack)))] = 1
        self.depth += 1
        #ast.NodeVisitor.generic_visit(self, node)
        self.generic_visit(node)
        self.depth -= 1 
开发者ID:jhpyle,项目名称:docassemble,代码行数:19,代码来源:astparser.py

示例9: from_code

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def from_code(cls, code, **kwargs):
        '''Instanciate the class from source code (string object). The
        `**kwargs` are directly passed to the `ast.NodeVisitor` constructor.
        '''
        return cls.from_ast(code2ast(code), **kwargs) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:7,代码来源:visitors.py

示例10: from_ast

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def from_ast(cls, ast_node, **kwargs):
        '''Instantiate the class from an AST node. The `**kwargs` are
        directly passed to the `ast.NodeVisitor` constructor.
        '''
        visitor = cls(**kwargs)
        visitor.visit(ast_node)
        return visitor 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:9,代码来源:visitors.py

示例11: visit_Attribute

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_Attribute(self, node):
            ast.NodeVisitor.generic_visit(self, node)
            self.ls.append(node.attr) 
开发者ID:Frank-qlu,项目名称:recruit,代码行数:5,代码来源:test_warnings.py

示例12: visit_Call

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit_Call(self, node):
            p = ParseCall()
            p.visit(node.func)
            ast.NodeVisitor.generic_visit(self, node)

            if p.ls[-1] == 'simplefilter' or p.ls[-1] == 'filterwarnings':
                if node.args[0].s == "ignore":
                    raise AssertionError(
                        "ignore filter should not be used; found in "
                        "{} on line {}".format(self.__filename, node.lineno))

            if p.ls[-1] == 'warn' and (
                    len(p.ls) == 1 or p.ls[-2] == 'warnings'):

                if "testing/tests/test_warnings.py" is self.__filename:
                    # This file
                    return

                # See if stacklevel exists:
                if len(node.args) == 3:
                    return
                args = {kw.arg for kw in node.keywords}
                if "stacklevel" in args:
                    return
                raise AssertionError(
                    "warnings should have an appropriate stacklevel; found in "
                    "{} on line {}".format(self.__filename, node.lineno)) 
开发者ID:Frank-qlu,项目名称:recruit,代码行数:29,代码来源:test_warnings.py

示例13: generic_visit

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def generic_visit(self, node):
        lineno = getattr(node, 'lineno', 0)
        self.boundary = max(self.boundary, lineno)

        ast.NodeVisitor.generic_visit(self, node) 
开发者ID:GoogleCloudPlatform,项目名称:cloudml-samples,代码行数:7,代码来源:to_ipynb.py

示例14: scan_opcodes_cli

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def scan_opcodes_cli(self, co):
        import ast
        with open(co.co_filename, 'rU') as f:
            nodes = ast.parse(f.read(), co.co_filename)

        items = []

        class ModuleFinderVisitor(ast.NodeVisitor):
            def visit_Assign(self, node):
                for x in node.targets:
                    if isinstance(x, ast.Subscript):
                        if isinstance(x.value, ast.Name):
                            items.append(("store", (x.value.id, )))
                        elif isinstance(x.value, ast.Attribute):
                            items.append(("store", (x.value.attr, )))
                        else:
                            print 'Unknown in store: %s' % type(x.value).__name__
                    elif isinstance(x, ast.Name):
                        items.append(("store", (x.id, )))

            def visit_Import(self, node):
                items.extend([("import", (None, x.name)) for x in node.names])

            def visit_ImportFrom(self, node):
                if node.level == 1:
                    items.append(("relative_import", (node.level, [x.name for x in node.names], node.module)))
                else:
                    items.extend([("import", ([x.name for x in node.names], node.module))])

        v = ModuleFinderVisitor()
        v.visit(nodes)

        for what, args in items:
            yield what, args 
开发者ID:IronLanguages,项目名称:ironpython2,代码行数:36,代码来源:modulefinder.py

示例15: visit

# 需要导入模块: import ast [as 别名]
# 或者: from ast import NodeVisitor [as 别名]
def visit(self, node):
        # We could have subclassed ast.NodeVisitor, but it's better to fail
        # hard on AST nodes we don't support
        name = node.__class__.__name__
        visit_func = getattr(self, 'visit_' + name, None)
        assert visit_func is not None, '{} not supported - node {}'.format(
                name, ast.dump(node))
        visit_func(node) 
开发者ID:benhoyt,项目名称:pyast64,代码行数:10,代码来源:pyast64.py


注:本文中的ast.NodeVisitor方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。