Skip to main content

Pretty and helpful exceptions, automatically

Project description

**Note:** *This a fork of the original* ``better_exceptions`` *library.
This fork is intended to fix some edge cases I reported (see*
`#47 <https://github.com/Qix-/better-exceptions/issues/47>`__), *but for
this it adds two dependencies to the project. The fixed errors are too
small to justify the addition of dependency to the main library, hence
this fork that I publish for personal use.*

better-exceptions |Travis|
==========================

Pretty and more helpful exceptions in Python, automatically.

.. image:: https://github.com/Delgan/better-exceptions/raw/master_fork/screenshot.png
:alt: Example screenshot of exceptions

Usage
-----

Install ``better_exceptions`` via pip:

.. code:: console

$ pip install better_exceptions

And set the ``BETTER_EXCEPTIONS`` environment variable to any value:

.. code:: bash

export BETTER_EXCEPTIONS=1 # Linux / OSX
setx BETTER_EXCEPTIONS 1 # Windows

That's it!

Python REPL (Interactive Shell)
~~~~~~~~~~~~~~

In order to use ``better_exceptions`` in the Python REPL, first install the
package (as instructed above) and run:

.. code:: console

$ python -m better_exceptions
Type "help", "copyright", "credits" or "license" for more information.
(BetterExceptionsConsole)
>>>

in order to drop into a ``better_exceptions``-enabled Python interactive shell.

Advanced Usage
~~~~~~~~~~~~~~

If you want to allow the entirety of values to be outputted instead of
being truncated to a certain amount of characters:

.. code:: python

import better_exceptions
better_exceptions.MAX_LENGTH = None

While using ``better_exceptions`` in production, do not forget to unset
the ``BETTER_EXCEPTIONS`` variable to avoid leaking sensitive data in
your logs.

Troubleshooting
---------------

If you do not see beautiful exceptions, first make sure that the
environment variable does exist. You can try ``echo $BETTER_EXCEPTIONS``
(Linux / OSX) or ``echo %BETTER_EXCEPTIONS%`` (Windows). On Linux and
OSX, the ``export`` command does not add the variable permanently, you
will probably need to edit the ``~/.profile`` file to make it
persistent. On Windows, you need to open a new terminal after the
``setx`` command.

Check that there is no conflict with another library, and that the
``sys.excepthook`` function has been correctly replaced with the
``better_exceptions``'s one. Sometimes other components can set up their
own exception handlers, such as the ``python3-apport`` Ubuntu package
that you may need to uninstall.

Make sure that you have not inadvertently deleted the
``better_exceptions_hook.pth`` file that should be in the same place as
the ``better_exceptions`` folder where all of your Python packages are
installed. Otherwise, try re-installing ``better_exceptions``.

You can also try to manually activate the hook by adding
``import better_exceptions; better_exceptions.hook()`` at the beginning
of your script.

Finally, if you still can not get this module to work, `open a new
issue <https://github.com/Qix-/better-exceptions/issues/new>`__ by
describing your problem precisely and detailing your configuration
(Python and ``better_exceptions`` versions, OS, code snippet,
interpeter, etc.) so that we can reproduce the bug you are experiencing.

License
=======

Copyright © 2017, Josh Junon. Licensed under the `MIT
license <LICENSE.txt>`__.

.. |Travis| image:: https://img.shields.io/travis/Delgan/better-exceptions.svg?style=flat-square
:target: https://travis-ci.org/Delgan/better-exceptions

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

better_exceptions_fork-0.2.1.post3.tar.gz (29.1 kB view hashes)

Uploaded Source

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