Skip to main content

Automatically color Python’s uncaught exception tracebacks.

This one’s for anybody who’s ever struggled to read python’s stacktraces on the terminal. Something about the two-lines-per-frame approach really just makes them tough to scan visually.

Compare this:

Traceback (most recent call last):
  File "./workflowy.py", line 525, in <module>
    main()
  File "./workflowy.py", line 37, in main
    projects = cli.load_json(args, input_is_pipe)
  File "./workflowy.py", line 153, in load_json
    return json.load(sys.stdin)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 290, in load
    **kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

To this:

Traceback (most recent call last):
  File "./workflowy.py", line 525, in <module>
    main()
  File "./workflowy.py", line 37, in main
    projects = cli.load_json(args, input_is_pipe)
  File "./workflowy.py", line 153, in load_json
    return json.load(sys.stdin)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 290, in load
    **kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Installation

Through pip:

pip install colored-traceback

Or directly:

git clone http://www.github.com/staticshock/colored-traceback.py
cd colored-traceback.py
pip install .

On Windows, which has no real support for ANSI escape sequences, this will also install colorama.

Usage

Colored Traceback can be executed as a module:

python -m colored_traceback somefile.py

Colored Traceback also works well within a script or even directly in the interpreter REPL. Standard usage will color the output, unless it’s being redirected to a pipe:

import colored_traceback
colored_traceback.add_hook()

If want to retain color even when stderr is being piped, tack on an always=True argument:

import colored_traceback
colored_traceback.add_hook(always=True)

There are also a couple of convenience imports, which get the footprint down to one line:

# Same as add_hook()
import colored_traceback.auto

# Same as add_hook(always=True)
import colored_traceback.always

It goes without saying that you might want to catch ImportError, making the presence of the package optional:

try:
    import colored_traceback.auto
except ImportError:
    pass

Download files

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

Source Distribution

colored-traceback-0.4.2.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

colored_traceback-0.4.2-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file colored-traceback-0.4.2.tar.gz.

File metadata

  • Download URL: colored-traceback-0.4.2.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.4

File hashes

Hashes for colored-traceback-0.4.2.tar.gz
Algorithm Hash digest
SHA256 ecbc8e41f0712ea81931d7cd436b8beb9f3eff1595d2498f183e0ef69b56fe84
MD5 b3660a83cbf8b75f76435fdecb1449d0
BLAKE2b-256 0780afcf567031ab8565f8f8d2bd14b007d313ea3258e50394e85b10a405099c

See more details on using hashes here.

File details

Details for the file colored_traceback-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for colored_traceback-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8ad752a5b3c4e50bccd99d4a2d01e16d80926b519e07a85437ecbf8b4f8ce884
MD5 54684c0b208f9b96640603d8bad01fed
BLAKE2b-256 da2805e035e2d95dc469408bcb1edfbee5d4fcfe3b0a5fa3701c5f1f10c77c49

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page