tbpatch
pasta
tbpatch | pasta | |
---|---|---|
1 | 1 | |
0 | 335 | |
- | 0.9% | |
0.0 | 3.8 | |
about 3 years ago | 3 months ago | |
Rust | Python | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tbpatch
-
Our Engineering Team Used Python's AST to Patch 100,000s of Lines of Code
I had a problem of applying patches to the files that got indented differently meantime.
So I wrote a tool that takes a context diff, rebuilds the before and after text, then parses both as vectors of (leading whitespaces, token), then creates a diff of those vectors ignoring the whitespaces, parses the target file as a similar vector, and applies this diff to such a vector (again with ignoring/copying whitespaces) - after which it reconstructs the text.
The results are surprisingly robust, despite the relatively naive tokenization heuristic.
https://github.com/ayourtch/tbpatch
pasta
What are some alternatives?
LibCST - A concrete syntax tree parser and serializer library for Python that preserves many aspects of Python's abstract syntax tree
RedBaron - Bottom-up approach to refactoring in python
Bowler - Safe code refactoring for modern Python.
lib3to6 - Build universally compatible python packages from a substantial subset of Python 3.8.