def calls(self, **kw): calls = QueryConstructor(ast.Call, **kw) calls.visit(self.parsed) return [{ 'line_no': x.lineno, 'col_no': x.col_offset, 'node': x } for x in calls.results]
def classes(self, **kw): from docs.classes import Class functions = QueryConstructor(ast.ClassDef, **kw) functions.visit(self.parsed) return [ Class(x) for x in sorted(functions.results, key=lambda x: x.lineno) if x.parent and x.parent._ast_obj == self.parsed ]
def assignments(self, **kw): assignments = QueryConstructor(ast.Assign, **kw) assignments.visit(self.parsed) return [{ 'line_no': x.lineno, 'col_no': x.col_offset, 'node': x } for x in assignments.results]
def functions(self, **kw): from docs.function.function import Function functions = QueryConstructor(ast.FunctionDef, **kw) functions.visit(self.parsed) return [ Function(x) for x in sorted(functions.results, key=lambda x: x.lineno) if x.parent and x.parent._ast_obj == self.parsed ]
def classes(self, **kw): from docs.classes import Class functions = QueryConstructor(ast.ClassDef, **kw) functions.visit(self.parsed) return [Class(x) for x in sorted( functions.results, key=lambda x: x.lineno ) if x.parent and x.parent._ast_obj == self.parsed]
def calls(self, **kw): calls = QueryConstructor(ast.Call, **kw) calls.visit(self.parsed) return [{ 'line_no': x.lineno, 'col_no': x.col_offset, 'node': x } for x in calls.results ]
def assignments(self, **kw): assignments = QueryConstructor(ast.Assign, **kw) assignments.visit(self.parsed) return [{ 'line_no': x.lineno, 'col_no': x.col_offset, 'node': x } for x in assignments.results ]
def functions(self, **kw): from docs.function.function import Function functions = QueryConstructor(ast.FunctionDef, **kw) functions.visit(self.parsed) return [ Function(x) for x in sorted( functions.results, key=lambda x: x.lineno ) if x.parent and x.parent._ast_obj == self.parsed ]
def get_var(self, var): """Helper for getting module metadata like __author__""" variables = QueryConstructor(ast.Name, id=var) variables.visit(self.parsed) if variables.results: result = variables.results[0].parent.value else: return [] if isinstance(result, ast.Str): return [result.s] elif isinstance(result, ast.List): return [x.s for x in result.elts] return []
def imports(self, **kw): """Lists the imports declared in the module Always returns a list. """ from docs.imports import Import imports = QueryConstructor(ast.Import, **kw) import_froms = QueryConstructor(ast.ImportFrom, **kw) imports.visit(self.parsed) import_froms.visit(self.parsed) return [ Import(x) for x in sorted(imports.results + import_froms.results, key=lambda x: x.lineno) ]
def imports(self, **kw): """Lists the imports declared in the module Always returns a list. """ from docs.imports import Import imports = QueryConstructor(ast.Import, **kw) import_froms = QueryConstructor(ast.ImportFrom, **kw) imports.visit(self.parsed) import_froms.visit(self.parsed) return [Import(x) for x in sorted( imports.results + import_froms.results, key=lambda x: x.lineno )]