Skip to main content

arbol -- Arborescent Printouts in Python

Project description

arbol -- Arborescent Printouts in Python

Do you have a script, a command line tool, or some workflow in Python that has lots of 'prints out', and you can't make sense of it? Sounds familiar?
arbol organises your stdout prints in a hierarchy that follows the structure of your code. Moreover, arbol measures the elpased time for each node of the tree and displays that conveniently.

Arbol means 'tree' in spanish.

Why not use a more traditional Python logging? We have made the choice of sticking to a oplain and simple scheme that matches the usage of 'print' statements

Installation

Simply use pip:

pip install arbol

Optional dependencies

If you want colors, install the ansicolors package:

pip install ansicolors

T make sure that yo get the colors on all platforms including Windows, install the colorama package:

pip install colorama

Note: both colorama and ansicolors are optional -- arbol will work fine without it installed.

Example

Here is a simple example:

from arbol.arbol import lprint, lsection, section, Arbol

# for colors, install the ansicolors package: 'pip install ansicolors',
# and for windows install the colorama package: 'pip install colorama'

# You can limit the tree depth:
Arbol.max_depth = 4

# use lprint instead of the standard print
lprint('Test')

# You can decorate functions:
@section('function')
def fun(x):
    if x >= 0:
        with lsection('recursive call to f'):
            lprint(f"f(x)+1={fun(x-1)}")

# The context manager let's you start a 'section' i.e. a node in the tree
with lsection('a section'):
    lprint('a line')
    lprint('another line')
    lprint('we are done')

    with lsection('a subsection'):
        lprint('another line')
        lprint('we are done')

    fun(2)

    # You can deactivate the elapsed time measurement and printing:
    Arbol.elapsed_time = False
    fun(100)

lprint('demo is finished...')

# You can also turn off all output with one switch:
Arbol.enable_output = False
lprint('you will not see that')

example

Roadmap

Some ideas:

  • More color styles to choose from
  • Intercept stdout from C code so that printouts from libraries called from python are formatted too.
  • Generate tree automatically by inspecting stack?
  • Interoperability with logging package

Authors

Loic A. Royer (@loicaroyer) Ahmet Can Solak (@_ahmetcansolak)

Project details


Download files

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

Source Distribution

arbol-2020.11.1.tar.gz (5.2 kB view hashes)

Uploaded Source

Built Distribution

arbol-2020.11.1-py3-none-any.whl (6.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page