Skip to main content

Human-readable tracebacks in Jupyter notebooks

Project description

Nicer error messages for Python

Other languages such as C++ have gotten quite useful error messages and diagnostics with tips on how the fix the problems but Python is still stuck with the bare stacktraces that are very intimidating and often not very helpful.

Niceback Niceback backtrace shows where the user has terminated the program.

Niceback hides the irrelevant IPython/notebook internals and concisely shows what happened (the program was interrupted) and where that happened. This could further be improved by converting the KeyboardInterrupt message into something more suitable, like "You stopped the program", but what you see above is just the default handling that never considered this particular error.

Although IPython and Google Colab developers have done their tweaks to improve backtraces, it is all too apparent that much remains to be done:

Colab Standard backtrace from Google Colab.

Even for the experienced programmer, it is tedious to read through the wall of text to find the relevant details of what went wrong.

In more complex situations where one might get many screenfuls of standard traceback, Niceback produces scrollable outputs that concentrate on the relevant details but also provide variable inspectors on each frame where it may be relevant:

Nested exceptions Niceback output with nested exceptions.

Usage

At the beginning of your Notebook:

!pip install niceback
%load_ext niceback

Background

This project is a proof of concept, showing a modern way to format error messages in a human-readable manner. Heuristics are used to hide (by default) irrelevant stack frames and show the actual location of the problem. Since it would otherwise be impossible to find out the variable contents after the program has crashed, a variable inspector built into each stack frame quickly reveals problems with the variables mentioned at the source of error. Care is taken to add revelant details such as notebook input field numbers and class names not normally present in Python tracebacks, while hiding overly long paths and other clutter.

All output is in HTML and as such only works in Jupyter notebooks and other browser-based systems (this should be useful for web development frameworks as well). This allows interactivity and much better layout than that of the text console.

Help wanted

I won't be able to maintain this all by myself. If you like the idea of nicer tracebacks, please offer your help in development! Pull requests are welcome but it would be even better if you could pick up the whole project as your own.

As of now, this project is in no way properly polished for release. Yet, it is useful enough to such a degree that I always use it in my notebooks, and it really makes Python development a much smoother experience.

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

niceback-0.4.1.tar.gz (594.6 kB view details)

Uploaded Source

Built Distribution

niceback-0.4.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file niceback-0.4.1.tar.gz.

File metadata

  • Download URL: niceback-0.4.1.tar.gz
  • Upload date:
  • Size: 594.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for niceback-0.4.1.tar.gz
Algorithm Hash digest
SHA256 14fdf1b76532fa11f82ec9cff5618f2b62a268ffb2615cbff4f2700e69adb0b4
MD5 6cffb9cf12d97bb5b6c3e9d032e66e5d
BLAKE2b-256 7789144e7e1e8830499f77f0c5a0a914a7f526f0d7769bb080475e33aea38adc

See more details on using hashes here.

File details

Details for the file niceback-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: niceback-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for niceback-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 de227607f11dc9bc8aa4b626b4b3b4b64c9d3e51dfb921f038cea2129d2fee37
MD5 d5c8fc6166120e56be6643b2edd1b5f2
BLAKE2b-256 5bff5156bb15e050056e9dd21898ce9e97b271820d80747f6e13db33203e1b25

See more details on using hashes here.

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