Assume that I have a python source file, the names of a specific class and a from this file, and a string to replace the body of that function. How can I write a program to do this automatically? I am not looking for “string”-matching solutions. I am mostly looking for a python library that might facilitate this task.
To clarify, the main challenge I am facing is: “How to locate the said class/function since it can be nested like class/function/function, or many other ways”
Here is an example:
INPUT:
# old.py class C: def f1(): # body_stmts_f1 def g1(j): a = 10 b = 30 return a + b * j # class/function of interest: C, g1 # new_g1_body.py def g1(j): a = 40 x = 100 return a - x + j
OUTPUT:
class C: def f1(): # body_stmts_f1 def g1(j): a = 40 x = 100 return a - x + j
Advertisement
Answer
I ended up using Python’s own AST package. First, I parse
the original file, then I find the function that I want to change using visitors
, then I make the desired changes to that function. Finally, I unparse
the modified AST.