Python advanced pretty printer. This pretty printer is intended to
replace the old
pprint python module which does not allow developers
to provide their own pretty print callbacks.
This module is based on ruby's
prettyprint.rb library by
This was converted to python3 by
Mark Grandi and others
To directly print the representation of an object use
from pretty import pprint pprint(complex_object)
To get a string of the output use
from pretty import pretty string = pretty(complex_object)
The pretty library allows developers to add pretty printing rules for their
own objects. This process is straightforward. All you have to do is to
__pretty__ method to your object and call the methods on the
pretty printer passed:
class MyObject(object): def __pretty__(self, p, cycle): ...
Here the example implementation of a
__pretty__ method for a list
class MyList(list): def __pretty__(self, p, cycle): if cycle: p.text('MyList(...)') else: with p.group(8, 'MyList([', '])'): for idx, item in enumerate(self): if idx: p.text(',') p.breakable() p.pretty(item)
cycle parameter is
True if pretty detected a cycle. You have to
react to that or the result is an infinite loop.
p.text() just adds
non breaking text to the output,
p.breakable() either adds a whitespace
or breaks here. If you pass it an argument it's used instead of the
p.pretty prettyprints another object using the pretty print
The first parameter to the
group function specifies the extra indentation
of the next line. The second and the third parameter are the opening and
closing strings that will be printed before and after the group.
In this example the next item will either be not
breaked (if the items are short enough) or aligned with the right edge of
the opening bracked of
- Merged pull request #2 (https://github.com/mgrandi/pretty-py3/pull/2) from @alexshpilkin, "Fix double indentation in PrettyPrinter.group()"
- Merged pull request #3 (https://github.com/mgrandi/pretty-py3/pull/3) from @alexshpilkin, "Better support for set and OrderedDict types"
- Merged pull request #1 (https://github.com/mgrandi/pretty-py3/pull/1) from @avoidscorn, "Add missing comma in single-element tuple."
- Finish porting it to python3
copyright 2007 by Armin Ronacher.
copyright 2014 by Mark Grandi - python 3 port
license BSD License.