PyCQA / redbaron

Bottom-up approach to refactoring in python
http://redbaron.pycqa.org/
699 stars 74 forks source link

Introduction

Build Status Latest Version Supported Python versions Development Status Wheel Status Download format License Backers on Open Collective Sponsors on Open Collective

RedBaron is a python library and tool powerful enough to be used into IPython solely that intent to make the process of writing code that modify source code as easy and as simple as possible. That include writing custom refactoring, generic refactoring, tools, IDE or directly modifying you source code into IPython with a higher and more powerful abstraction than the advanced texts modification tools that you find in advanced text editors and IDE.

RedBaron guaranteed you that it will only modify your code where you ask him to. To achieve this, it is based on Baron a lossless AST for Python that guarantees the operation ast_to_code(code_to_ast(source_code)) == source_code. (Baron's AST is called an FST, a Full Syntax Tree).

RedBaron API and feel is heavily inspired by BeautifulSoup. It tries to be simple and intuitive and that once you've get the basics principles, you are good without reading the doc for 80% of your operations.

For now, RedBaron can be considered in alpha, the core is quite stable but it is not battle tested yet and is still a bit rough. Feedback and contribution are very welcome.

The public documented API on the other side is guaranteed to be retro-compatible and won't break until 2.0 (if breaking is needed at that point). There might be the only exception that if you directly call specific nodes constructors with FST that this API change, but this is not documented and simply horribly unpracticable, so I'm expecting no one to do that.

Support

RedBaron is support python python 2 and up to python 3.7 grammar.

Roadmap

Current roadmap is as boring as needed:

Installation

pip install redbaron[pygments]

Or if you don't want to have syntax highlight in your shell or don't need it:

pip install redbaron

Running tests

pip install pytest
py.test tests

Community

You can reach us on irc.freenode.net#baron or irc.freenode.net##python-code-quality.

Financial support

Baron and RedBaron are a very advanced piece of engineering that requires a lot of time of concentration to work on. Until the end of 2018, the development has been a full volunteer work mostly done by Bram, but now, to reach the next level and bring those projects to the stability and quality you expect, we need your support.

You can join our contributors and sponsors on our transparent OpenCollective, every contribution will count and will be mainly used to work on the projects stability and quality but also on continuing, on the side, the R&D side of those projects.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Contributors

This project exists thanks to all the people who contribute.

Code of Conduct

As a member of PyCQA, RedBaron follows its Code of Conduct.

Links

RedBaron is fully documented, be sure to check the tutorial and documentation.