Skip to main content

##############

NOTE: this is a fork of https://github.com/alex-oleshkevich/starception

All rights to him and the contributors for that repo.

This fork exists to implement starception for starlite: https://github.com/starlite-api/starlite.

Starlite left starlette since version [1.39.0] for there own implementations.

Therefore the orginal repo doens't work anymore

Seeing starception was originally built for starlette backed frameworks. So a fork was needed to make this work with starlite

Note2 : I will keep the fork in sync with the main repo except for the starlette stuff.

##############

Starception-starlite

Beautiful exception page for Starlette and FastAPI apps.

PyPI GitHub Workflow Status GitHub Libraries.io dependency status for latest release PyPI - Downloads GitHub Release Date

Installation

Install starlite-starception using PIP or poetry:

pip install starlite_starception
# or
poetry add starlite_starception

With syntax highlight support

If you want to colorize code snippets, install pygments library.

pip install starlite_starception[pygments]
# or
poetry add starlite_starception -E pygments

Screenshot

image

Dark theme

Features

  • secrets masking
  • solution hints
  • code snippets
  • display request info: query, body, headers, cookies
  • session contents
  • request and app state
  • platform information
  • environment variables
  • syntax highlight
  • open paths in editor (vscode only)
  • exception chains
  • dark theme

The middleware will automatically mask any value which key contains key, secret, token, password.

Quick start

See example application in examples/ directory of this repository.

Usage

Starception will work only in debug mode so don't forget to set debug=True for local development.

Monkey patching Starlette

To replace built-in debug exception handler call install_error_handler before you create Starlette instance.

Currently, this is a recommended approach.

from starlite_starception import install_error_handler
from starlite import Starlite, get


@get("/")
def view() -> None:
    raise TypeError('Oops')


install_error_handler()
app = Starlite(route_handlers=[view])

Using middleware

To render a beautiful exception page you need to install a StarceptionMiddleware middleware to your application.

Note, to catch as many exceptions as possible the middleware has to be the first one in the stack.

import typing

from starlite import Starlite

from starlite_starception import StarceptionMiddleware


async def index_view() -> None:
    raise Exception('Oops, something really went wrong...')


app = Starlite(
    debug=True,
    route_handlers=[index_view],
    middleware=[
        StarceptionMiddleware,
        # other middleware go here
    ]
)

Solution hints

If exception class has solution attribute then its content will be used as a solution hint.

class WithHintError(Exception):
    solution = (
        'The connection to the database cannot be established. '
        'Either the database server is down or connection credentials are invalid.'
    )

image

Opening files in editor

Set your current editor to open paths in your editor/IDE.

from starlite_starception import set_editor

set_editor('vscode')

image

Note, currently only VSCode supported. If you know how to integrate other editors - please PR

Registering link templates

If your editor is not supported, you can add it by calling add_link_template and then selecting it with set_editor.

from starlite_starception import set_editor, add_link_template

add_link_template('vscode', 'vscode://file/{path}:{lineno}')
set_editor('vscode')

Credentials

Metadata

Release files for starlite-starception 1.0.1.1

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

Source distribution (sdist)

Source distribution for starlite-starception 1.0.1.1
File Size Uploaded
starlite_starception-1.0.1.1.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for starlite-starception 1.0.1.1
File Interpreter ABI Platform
starlite_starception-1.0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 38.1 kB

Release files / starlite_starception-1.0.1.1.tar.gz

Download URL starlite_starception-1.0.1.1.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
eec06b50eb65d5f1f26485a217056a9063d97f69574a0c63211e8dfa3c499fb4
BLAKE2b-256 checksum
How to use checksums
b686673b9ee317199e0b440df1238a077cc160d765b4b09f693db9800c496f79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.10.6 Linux/6.0.6-76060006-generic

Release files / starlite_starception-1.0.1.1-py3-none-any.whl

Download URL starlite_starception-1.0.1.1-py3-none-any.whl
Size 20.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
de0d0a9729c987d757c547311bfeded2f914fb5a96effe1ad492e492a69495c3
BLAKE2b-256 checksum
How to use checksums
47ac47cc25ed185289fd04180edb5fc0472bf9e8ea0ff6570e73c1cf399f1d73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.10.6 Linux/6.0.6-76060006-generic

Release history Release notifications | RSS feed

This release

1.0.1.1 This release

2 release files

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