node_visitor.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:bandit-ss 作者: zeroSteiner 项目源码 文件源码
def preprocess_nodes(self, node):
        """Run preprocessors on nodes for the visitor."""
        for _, value in ast.iter_fields(node):
            if isinstance(value, list):
                max_idx = len(value) - 1
                for idx, item in enumerate(value):
                    if not isinstance(item, ast.AST):
                        continue
                    if idx < max_idx:
                        setattr(item, 'sibling', value[idx + 1])
                    else:
                        setattr(item, 'sibling', None)
                    setattr(item, 'parent', node)
                    setattr(item, 'storage', {})
                    if not self.pre_visit(item, preprocess=True):
                        continue
                    self.preprocess_nodes(item)
                    self.post_visit(item)

            elif isinstance(value, ast.AST):
                setattr(value, 'sibling', None)
                setattr(value, 'parent', node)
                setattr(value, 'storage', {})
                if not self.pre_visit(value, preprocess=True):
                    continue
                self.preprocess_nodes(value)
                self.post_visit(value)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号