Basically I want to use jedi to retrieve a function's or a class' code from the details of it's definition(s) (path, line, column). To be more explicit, what I really wish is to get the code from a file, that is not executed, static.
It seems that you can use ast
and codegen
to accomplish this task.
I will post a sample of code to illustrate this:
import ast,codegen
def find_by_line(root, line):
found = None
if hasattr(root, "lineno"):
if root.lineno == line:
return root
if hasattr(root, "body"):
for node in root.body:
found = find_by_line(node, line)
if found:
break
return found
def get_func_code(path, line):
with open(path) as file:
code_tree = ast.parse(file.read())
unit = find_by_line(code_tree, line)
return codegen.to_source(unit)