Skip to main content

Fabulous

Makes Your Terminal Output Totally Fabulous

Version:

0.1.6

Copyright:

Copyright (c) 2009-2016 Justine Tunney

Manual section:

3

Manual group:

Library Calls

Getting Started

Download and extract the latest version:

sudo apt-get install gcc python-imaging python-setuptools
sudo python setup.py install

Run the demo to see what’s available:

python -m fabulous.demo

Basic Examples

Colors

4-bit color. These colors and styles are standard and work almost everywhere. They are useful in helping make your program output easier to read:

from fabulous import bold, magenta, highlight_red

print bold(magenta('hello kitty'))
print highlight_red('DANGER DANGER!')

print bold('hello') + ' ' + magenta( kitty')

assert len(bold('test')) == 4

8-bit color. If you want to spice things up a bit, Fabulous supports xterm256 colors:

from fabulous import fg256, bg256
print fg256('#F0F', 'hello kitty')
print fg256('magenta', 'hello kitty')

Fancy Text

Way cool text. This is something neat you can use when you program starts up to display its name with style:

from fabulous import text
print text.Text("Fabulous", color='#0099ff', shadow=True, scew=5)

Images

Fabulous lets you print images, which is more fun than useful. Fabulous’ unique method of printing images really shines when used with semi-transparent PNG files. When blending backgrounds, Fabulous assumes by default that your terminal has a black background. Don’t worry if your image is huge, it’ll be resized by default to fit your terminal:

from fabulous import utils, image
print image.Image("balls.png")

# adjust for a white background
utils.term.bgcolor = 'white'
print image.Image("balls.png")

It’s scriptable too (like img2txt)

python -m fabulous.image balls.png >balls.txt
cat balls.txt

Transient Logging

This is very useful tool for monitoring what your Python scripts are doing. It allows you to have full verbosity without drowning out important error messages:

import time, logging
from fabulous import logs
logs.basicConfig(level='WARNING')

for n in range(20):
    logging.debug("verbose stuff you don't care about")
    time.sleep(0.1)
logging.warning("something bad happened!")
for n in range(20):
    logging.debug("verbose stuff you don't care about")
    time.sleep(0.1)

Why Fabulous?

Here’s how Fabulous compares to other similar libraries:

  • fabulous: Licensed MIT. Focuses on delivering useful features in the simplest, most user-friendly way possible (without a repulsive name.) Written in pure-python but will attempt to auto-magically compile/link a speedup library. ~1,000 lines of code.

  • libcaca: WTFPL. This is the established and respected standard for doing totally insane things with ascii art (ever wanted to watch a movie on the command line?) Weighing in at ~72k lines of C, this project is a monster. It uses an older, more complex text/dithering-based rendering method. Compared to fabulous, some images look better, some worse. I found the docs somewhat difficult to follow and couldn’t find support for transparency or 256-colors.

  • asciiporn: GPL. Similar to libcaca but has an interesting feature for drawing math graphs to the terminal… Needs to compile C code, requires numpy/python2.6, and I couldn’t get the darn thing to work. Aprox 17k lines of code.

  • pygments: BSD. Has excellent support for terminal syntax highlighting.

  • termcolor: GPL. Only supports 4-bit ANSI colors.

ToDo

Metadata

Release files for fabulous 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fabulous 0.1.6
File Size Uploaded
fabulous-0.1.6.tar.gz 35.5 kB Details

Release files / fabulous-0.1.6.tar.gz

Download URL fabulous-0.1.6.tar.gz
Size 35.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f410398ab427458526315113fc5c142977178194b45064a54c61248c67e5c4c7
BLAKE2b-256 checksum
How to use checksums
bf037523be28ff2c9c21cf7cd1623e4f63bf38e68ef8520494d5f4ba93d8e68c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.4.0

1 release file

0.3.0

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.8

1 release file

0.1.7

1 release file

This release

0.1.6 This release

1 release file

0.1.5

0.1.4

0.1.3

0.1.2

0.1.1

0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page