Bowler
Bowler copied to clipboard
Move `rename_transform` outside of `Query.rename`
For example, you want to rename node only if it matches some pattern. You can do this:
def modify(node: LN, capture: Capture, filename: Filename) -> None:
if re.match(...):
rename_transform(...)
However, rename_transform
isn't available for import. BTW, it's can be really useful to have bowler.modifiers
with some common modifiers to reuse them. Maybe, moving rename_transform
in it is a good start. Same for add_argument_transform
, encapsulate_transform
etc
And what if use _modifier
instead of _transform
?
I can do PR for it if you agree with the point.
That example would make a great filter, would that solve much of the use case?
Filter can cover situation with choosing the right action, but not case with some simple preparation. For example, do relative imports if possible: make relative path if possible and pass it into rename_trfansform, otherwise use absolute import.
Moving away from closures for these transforms will also be necessary to eventually support Windows (or Py3.8+ on Mac) where multiprocessing uses spawned processes.