Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

extensible pprint successor - python3 version

Project Description

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 Tanaka Akira.

Example Usage

To directly print the representation of an object use pprint:

from pretty import pprint

To get a string of the output use pretty:

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 add a __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 subclass:

class MyList(list):

    def __pretty__(self, p, cycle):
        if cycle:
            with, 'MyList([', '])'):
                for idx, item in enumerate(self):
                    if idx:

The 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 default space. p.pretty prettyprints another object using the pretty print method.

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 MyList.

copyright:2007 by Armin Ronacher.
copyright:2014 by Mark Grandi - python 3 port
license:BSD License.

Release History

This version
History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(6.1 kB) Copy SHA256 Hash SHA256
Source None Mar 5, 2014

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers DreamHost DreamHost Log Hosting