Skip to main content

Debug Tools for py4web

Project description

py4web debug tools

Tooling to improve the developer experience when working with py4web.

There are two main tools and some helpers that this package provides.

  1. A better error 500 screen, that shows the error + traceback of what happened
  2. A debug bar containing the requests's data, queries including duplicate and custom caught data.

In this package:

  • tools:
    • enable(db: DAL, enabled?: bool, errorpage_enabled?: bool, errorpage_renderer?: Callable, debugbar_enabled?: bool, debugbar_fancy_rendering?: bool, debugbar_style?: "bootstrap", debugbar_slow_threshold_ms?: int, set_env_var?: bool):
      activate or disable the debug tools (add the custom error screen and create the Debug Bar Fixture).
      The first argument (DAL) is required for the debug bar to collect queries.
      enabled can be used to dynamically turn on/off the debug features.
      errorpage_enabled and debugbar_enabled can be used to turn on/off the error page and debug bar respectively.
      errorpage_renderer can be used to override the default error page renderer.
      debugbar_fancy_rendering: This will render the data section of the debug bar using json-browse, which includes jQuery. If this clashes with the other JS on a page, this can be set to False to simply show a <pre> block with data.
      debugbar_style: only bootstrap is supported at this moment.
      debugbar_slow_threshold_ms: amount of milliseconds an SQL query has to take before it is considered a 'slow query' in the debug bar.
      set_env_var: set the PY4WEB_DEBUG environment variable to True when enabling the debug tools.
    • debug_bar: this Fixture can be used on py4web actions to enable the bar for that page.
  • catch(*): Data and a stacktrace of where catch() is called can be found in the catch tab of the debug bar.
  • dump(*): convert objects to JSON, with a more capable converter than the default json.dumps (e.g. it works better with NamedTuples, pyDAL Rows, objects with some variation of as_dict and more. See dumping.py:DDJsonEncoder for specifics)
  • dd(*): Show a page with the data passed to this method and halt execution directly.
  • wsgi: a patched version of py4web's wsgi module, that will enable the modified error page.

Example:

# controllers.py

from py4web_debug import tools, catch, dump, dd

tools.enable(db, enabled=True)


@action("index")
@action.uses("index.html", db, tools.debug_bar)
def index():
    catch("Catch to Debug Bar")
    return {}


@action("other")
@action.uses("index.html", db)
def page_without_debugbar():
    dd("Stop executing here!")
    return {}


@action("error")
@action.uses("index.html", db)
def page_with_error():
    0 / 0
    return {}

Caveats:

When using uwsgi, the default method (in __init__) of changing py4web's catch_errors will not work. This is because the routes are set up before this package can be enabled. You can modify your py4web_uwsgi.py file:

# no: from py4web.core import wsgi
# yes:
from py4web_debug import wsgi

application = wsgi(apps_folder="apps",
                   password_file='password.txt',
                   dashboard_mode="full")

After this, you can tools.enable as before. Do note this process will keep py4web patched though, even when enable(enabled=False) is passed!

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

py4web-debug-tools-0.2.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

py4web_debug_tools-0.2.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file py4web-debug-tools-0.2.1.tar.gz.

File metadata

  • Download URL: py4web-debug-tools-0.2.1.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for py4web-debug-tools-0.2.1.tar.gz
Algorithm Hash digest
SHA256 f36b231c4119e86607a12afa0bc89611cb70530bf28a6e821bb801261a540d85
MD5 e54fda12777ae5a8123a9c77d3b825bc
BLAKE2b-256 bc8ec9f9a4386aaf1ca52d16f57789291a22de4a7f73b6414063dab54b8bd258

See more details on using hashes here.

File details

Details for the file py4web_debug_tools-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for py4web_debug_tools-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 54316258e353e59c7b44264e692b36fc38c043679973d4e284868b6aefd857d5
MD5 a8d997a6c62916f7c305d8f8df2aca53
BLAKE2b-256 3933cbc1a9b7143aab8b3b101cc7525115dd05d96980713445819e5fa0e8661f

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