Abstraction on top of baron, a FST for python to make writing refactoring code a realistic task
Project description
Introduction
RedBaron is a python library and tool powerful enough to be used into IPython solely that intent to make the process of writting 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 an 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 a 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 is very welcome.
Installation
pip install redbaron
Links
RedBaron is fully documented, be sure to check the turorial and documentation.
IRC chat: irc.freenode.net#baron
Changelog
0.5 (2015-01-31)
fix index handling in get_absolute_bounding_box_of_attribute method in a LineProxyList
pretty rendering of RedBaron repr in ipython notebook using _repr_html_, see: https://cloud.githubusercontent.com/assets/41827/5731132/65ff4c92-9b80-11e4-977c-0faebbf63415.png
fix: RedBaron repr was crashing in bpython and in ipython notebook. The new behavior should be way more stable and never crash.
new helpers .names, .modules, .full_path_modules for from_import node https://redbaron.readthedocs.org/en/latest/other.html#index-on-parent-raw
add a node.index_on_parent_raw and make node.index_on_parent works has it should be intuitivly according to the proxy list api https://redbaron.readthedocs.org/en/latest/other.html#index-on-parent-raw
new helper methods: .insert_before and .insert_after https://redbaron.readthedocs.org/en/latest/other.html#insert-before-insert-after
fix: some white space bugs in the merging algorithm of line proxy
fix: on_attribute and parent were correctly set on newly added elements to the root node
0.4 (2014-12-11)
compatibility with baron upstream (removal of def_argument_node and uniformisation of def_arguments structure)
fix: long wasn’t supported in redbaron (due to a bug in baron)
0.3 (2014-11-12)
proxy lists, major improvement in the management of list of things
.append_value is no more since it is useless now due to proxy lists
.index has been renamed to .index_on_parent to be more coherent
0.2 (2014-09-23)
for EVERY NODES in RedBaron, the automagic behavior when passing a string to modify an attribute has been done, this is HUGE improvement https://redbaron.readthedocs.org/en/latest/modifying.html#full-documentations
it’s now possible to use regex, globs, list/tuple and lambda (callable) in .find and .find_all, see https://redbaron.readthedocs.org/en/latest/querying.html#advanced-querying
new method on node: .replace() to replace in place a node https://redbaron.readthedocs.org/en/latest/other.html#replace
.map .filter and .apply are now documented https://redbaron.readthedocs.org/en/latest/other.html#map-filter-apply
.edit() new helper method to launch a text editor on the selected node and replace the node with the modified code https://redbaron.readthedocs.org/en/latest/other.html#edit
.root node attribute (property) that return the root node of the tree in which the node is stored https://redbaron.readthedocs.org/en/latest/other.html#root
.index node attribute (property) that returns the index at which the node is store if it’s store in a nodelist, None otherwise https://redbaron.readthedocs.org/en/latest/other.html#index
setitem (a[x] = b) on nodelist now works as expected (accepting string, fst node and redbaron node)
new method to handle indentation: .increase_indentation and .decrease_indentation https://redbaron.readthedocs.org/en/latest/other.html#increase-indentation-and-decrease-indentation
various small bugfix
we have one new contributor o/ https://github.com/ze42
to_node has been move to a class method of Node: Node.from_fst
pretty print of nodes when using redbaron in a script
0.1 (2014-06-13)
First release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for redbaron-0.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fe9b6ab391b0e4a9d6813f6ac1fd7d79c25fa28ba9a683496a36df63f2144dc |
|
MD5 | 8abf2d24c85bf31cb167b309f2b576a0 |
|
BLAKE2b-256 | 94a3b347eb32317b0ee997e7bc6e8e51939b9ae5f49639669b40098274ed360e |