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 fst_to_code(code_to_fst(source_code))==source_code.

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.

This documentation is full of example for nearly everything. But in fact, those
aren’t really “example”: those are real life code that are executed at the
compilation time of this documentation, this guaranteed the example you see to
work exactly the same way for you.

Funny side effect: this make it possible to “break” this documentation.

Easy nodes modifications, you already know how to code in python, so pass
python code (in a string) on the attribute you want to modify (wonder what
.value is? look at the output of .help() in the previous
example):

In [6]: red[0].value="1 + 4"In [7]: redOut[7]: 0 some_value = 1 + 4

Easy queries, just like in BeautifulSoup:

In [8]: red.find("int",value=4)In [9]: red.find_all("int")# can also be written red("int") like in BeautifulSoupOut[9]: 0 11 4

Queries can be very powerful, you can test each attributes with value/lambda/regex/special syntax for regex/globs.

Now let’s pretend that we are editing a django settings.py (notice that we are
extending our source code using the same API than the one of a python list
since we are in a list of lines):

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](https://github.com/psycojoker),
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](https://opencollective.com/redbaron), 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.