pythonguts

Tool aimed at python code correction that allows to automatically find and replace function definition


Keywords
py-parser, python-parser, py-editor, python-editor, py-generator, python-generator
License
MIT
Install
pip install pythonguts==0.2.0

Documentation

pythonguts

If your project depends on some external python projects and you want to make some changes in external functions/methods and then copy/paste these changes automatically - this package may help you.

There is a tool editpy wich we will discuss.

Same tool aimed at editing cpp files is also available as cppguts

Installation

pythonguts is available at PyPI:

pip install pythonguts

The idea behind editpy tool

editpy uses astor to find replaceable functions and replaces matching functions.

To find common function editpy checks:

  • are they both functions?
  • do they both have the same name?
  • do they both have the same args?
  • do they both have the same parent (i.e. classname for example)?

Example

original function/method definition file dest.py:

class MyClass:
   def my_method(self, i: float, j: int, k: float) -> float:
       return 0


def foo(i: float) -> float:
   return i


def bar():
   return 0


# this function stays unchanged
def unchanged():
   return 0

new function/method definition file src.py:

class MyClass:
    def my_method(self, i: float, j: int, k: float) -> float:
        print('new definition')
        return 0


def foo(i: float) -> float:
    print('new definition')
    return i


def bar():
    print('new definition')
    return 0

Run:

editpy --src-file=src.py --dest-file=dest.py --oldfile-keep

--oldfile-keep (default) is used to keep the original file (it will be renamed by adding _OLD_N suffix). Otherwise use --oldfile-delete to delete the original file.

Another option is to run the test (though the test deletes all the generated files so you better take a look in /tests dir):

python -m unittest pythonguts.tests.test_pythonguts