We are excited to announce Bowler, the safe refactoring tool for modern Python! We created Bowler as a tool for building powerful and reusable code mods for all of the Python services and utilities that we've created at Facebook. This tool has already proved useful in upgrading old code to new APIs, fixing broken attributes in build rules, and in making these changes trivial to repeat in production.

Bowler is built using syntax trees from the Python standard library, enabling compatibility with all past and future versions of Python. Bowler's fluent query API allows you to build refactoring scripts from composable and reusable components that can continue providing value into the future, rather than being thrown away or wasted.

As of today, we have made Bowler available in "early access" on Github, while we continue to iterate on both the feature set and the API. It's already quite useful for common refactoring in a large code base, and we look forward to your feedback and suggestions for how to improve Bowler in the future.

Getting Started

Take a look at the documentation on how Bowler works, or dive into the Query API. If you're interested in making Bowler even better, head over to the contributors guide, or let us know on Twitter.