A package which provides an interactive HTML debugger for Pyramid application development
Project description
pyramid_debugtoolbar
pyramid_debugtoolbar provides a debug toolbar useful while you’re developing your Pyramid application.
Note that pyramid_debugtoolbar is a blatant rip-off of Michael van Tellingen’s flask-debugtoolbar (which itself was derived from Rob Hudson’s django-debugtoolbar). It also includes a lightly sanded down version of the Werkzeug debugger code by Armin Ronacher and team.
Documentation
The documentation of the current stable release of pyramid_debugtoolbar is available at http://docs.pylonsproject.org/projects/pyramid-debugtoolbar/en/latest/.
Demonstration
For a demonstration:
Create a virtualenv:
$ VENV=$(pwd)/venv # just set the path to our virtualenv $ virtualenv --python=python2.7 $VENV
Clone the Pyramid trunk:
$ git clone https://github.com/Pylons/pyramid.git
Install the Pyramid trunk into the virtualenv:
$ cd pyramid $ $VENV/bin/pip install -e .
Clone the pyramid_debugtoolbar trunk:
$ git clone https://github.com/Pylons/pyramid_debugtoolbar.git
Install the pyramid_debugtoolbar trunk into the virtualenv:
$ cd pyramid_debugtoolbar $ $VENV/bin/pip install -e .
Install the pyramid_debugtoolbar/demo package into the virtualenv:
$ cd demo $ $VENV/bin/pip install -e .
Run the pyramid_debugtoolbar package’s demo/demo.py file using the virtualenv’s Python:
$ $VENV/bin/python demo.py
You will see a page full of test options to try when you visit http://localhost:8080.
2.5 (2016-04-20)
Drop Python 2.6 and Python 3.2 support.
Add Python 3.5 support.
Remove inline javascript from injected pages to work better with any Content Security Policy that may be in place. See https://github.com/Pylons/pyramid_debugtoolbar/pull/250
Added the packages’ .location to the “Versions” panel so developers can tell which version of each package is actually being used. See https://github.com/Pylons/pyramid_debugtoolbar/pull/240
Upon exception do a better job guessing the charset of the sourcefile when reading it in to display tracebacks. See https://github.com/Pylons/pyramid_debugtoolbar/pull/244
Removed jQuery code in the toolbar referring to a DOM node called ‘myTab’, which doesn’t seem to exist anymore. See https://github.com/Pylons/pyramid_debugtoolbar/pull/247
Updated the “Request Vars” panel: 1. Show additional values that were previously missing 2. Sections upgraded to link to Pyramid Documentation when possible 3. Mako reformatted into “defs” for simpler reorganization in the future See https://github.com/Pylons/pyramid_debugtoolbar/pull/241
Fix to prevent the toolbar from loading the session until it is actually accessed by the user. This avoids unnecessary parsing of the session object as well as waiting to parse it until later in the request which may meet more expectations of the session factory. See https://github.com/Pylons/pyramid_debugtoolbar/pull/249
2.4.2 (2015-10-28)
Fix a long-standing bug in which log messages were not rendered until the end of the response. By this time the arguments passed to the logger may no longer be valid (such as SQLAlchemy managed objects) and you would see a DetachedInstanceError. See https://github.com/Pylons/pyramid_debugtoolbar/issues/188
2.4.1 (2015-08-12)
Remove the extra query hash constructed when indexing into SQL queries via url as it was unused after releasing 2.4. See https://github.com/Pylons/pyramid_debugtoolbar/pull/232
2.4 (2015-06-04)
This release changes some details of the panel API, so if you are writing any custom panels for the toolbar please review the changes.
Document the cookie used to activate panels on a per-request basis. It is possible to specify the cookie per-request to turn on certain panels. This is used by default in the browser, but may also be used on a per-request basis by curl or other http APIs.
Add new debugtoolbar.active_panels setting which can specify certain panels to be always active.
Modify DebugPanel.name to be a valid python identifier, used for settings and lookup.
The toolbar no longer will clobber the request.id property. It now namespaces its usage as request.pdtb_id, freeing up request.id for applications.
Add a lock icon next to the request method in the sidebar if the request was accessed over https. See https://github.com/Pylons/pyramid_debugtoolbar/pull/213
Update to bootstrap 3.1.1. See https://github.com/Pylons/pyramid_debugtoolbar/pull/213
Fix display of POST variables where the same key is used multiple times. See https://github.com/Pylons/pyramid_debugtoolbar/pull/210
Fix auth callback so it protects the toolbar views. Auth system is tested now. See https://github.com/Pylons/pyramid_debugtoolbar/pull/226
Convert SQLAlchemy views to obtain the query and params internally; this allows executing queries with parameters that are not serializable. See https://github.com/Pylons/pyramid_debugtoolbar/pull/227
Adds Pyramid version tests and bumps required Pyramid version to 1.4. The pyramid_mako dependency requires 1.3, but debugtoolbar also uses invoke_subrequest which was added in 1.4. The invoke_subrequest call was added in pyramid_debugtoolbar 2.0; if you need Pyramid 1.3 compatibility, try an older version. See https://github.com/Pylons/pyramid_debugtoolbar/issues/183 and https://github.com/Pylons/pyramid_debugtoolbar/pull/225
2.3 (2015-01-05)
Support a debugtoolbar.includes setting which will allow addons to extend the toolbar’s internal Pyramid application with custom logic. See https://github.com/Pylons/pyramid_debugtoolbar/issues/207
Fixed an issue when the toolbar is not mounted at the root of the domain. See https://github.com/Pylons/pyramid_debugtoolbar/pull/201
Fixed an issue where the button_css was not pulled from the settings. Added support for configurable max_request_history and max_visible_requests. See https://github.com/Pylons/pyramid_debugtoolbar/pull/206
2.2.2 (2014-11-09)
Brownbagged 2.2.1, forgot to include the templates!
2.2.1 (2014-11-09)
Several internal links were not relative causing them to fail when the app is mounted at a path prefix. See https://github.com/Pylons/pyramid_debugtoolbar/pull/185 and https://github.com/Pylons/pyramid_debugtoolbar/pull/196
Pin pygments<2 on 3.2 as the new release has dropped support.
2.2 (2014-08-12)
Avoid polluting user code with unnecessary toolbar css just to show the button. See https://github.com/Pylons/pyramid_debugtoolbar/pull/174
Inject the toolbar button into application/xhtml+xml requests. See https://github.com/Pylons/pyramid_debugtoolbar/pull/176
Make the toolbar accessible before another request has been served by the application. See https://github.com/Pylons/pyramid_debugtoolbar/pull/171
2.1 (2014-05-22)
Add new “debugtoolbar.” configuration settings that allow enabling or disabling various Pyramid knobs in a users .ini file. This for instance allows easy enabling/disabling of template reloading for the debugtoolbar.
Allow the toolbar to display always, even when the parent application is using a default permission. See https://github.com/Pylons/pyramid_debugtoolbar/issues/147
Stabilize and document the pyramid_debugtoolbar.panels.DebugPanel API to allow developers to create their own panels.
Add new debugtoolbar.extra_panels and debugtoolbar.extra_global_panels configuration settings to make it simpler to support custom panels without overwriting the default panels.
2.0.2 (2014-02-13)
Fix breaking bugs when run under Py3k.
2.0.1 (2014-02-12)
Fixes a bug in 2.0 expecting pyramid_beaker to be around.
2.0 (2014-02-12)
The toolbar has undergone a major refactoring to mitigate the effects of the toolbar’s internal behavior on the application to which it is connected and make it possible to inspect arbitrary requests. It is now available at /_debug_toolbar and can be used to monitor any and all requests serviced by the Pyramid application that it is wrapping, including non-html responses.
The toolbar will live-update (on conforming browsers via Server Sent Events) when requests come into the Pyramid application, and can be used to debug and inspect multiple requests simultaneously.
1.0.9 (2013-10-20)
Use new pyramid_mako configuration directive add_mako_renderer.
1.0.8 (2013-09-09)
Depend on pyramid_mako (Mako support will be split out of Pyramid in 1.5+).
1.0.7 (2013-08-29)
Drop support for Python 2.5.
Fix computation of proxy addresses. See https://github.com/Pylons/pyramid_debugtoolbar/pull/100 .
Make templates compatible with no-MarkupSafe Mako under Python 3.2.
Decode platform name to Unicode using utf-8 encoding to cope with nonascii characters in platform (e.g. Fedora’s Schrodinger’s Cat). See https://github.com/Pylons/pyramid_debugtoolbar/pull/98
Raise a pyramid.exceptions.URLDecodeError instead of a raw UnicodeDecodeError when the request path cannot be decoded. See https://github.com/Pylons/pyramid/issues/1057.
Added new configuration option: debugtoolbar.show_on_exc_only ( default=false). If set to true (debugtoolbar.show_on_exc_only = true) the debugtoolbar will only be injected into the response in case a exception is raised. If the response is processed without exception the returned html code is not changed at all. See https://github.com/Pylons/pyramid_debugtoolbar/issues/54
Fix various UnicodeDecodeError exceptions.
1.0.6 (2013-04-17)
Packaging release only, no code changes. 1.0.5 was a brownbag release due to missing directories in the tarball.
1.0.5 (2013-04-17)
Parse IPs correctly when request.remote_addr is a comma separated list of proxies IPs.
If you are also using require.js, the debug toolbar’s version of jQuery will no longer conflict with your application’s version of the library.
Use the “n” filter to disable default_filters when including the raw SQL in links, leaving only the “u” filter (URL escaping).
Support for per-request authorization of toolbar middleware via config.set_debugtoolbar_request_authorization(callback) where callback accepts request object and returns boolean value whether toolbar is enabled or not.
Short term fix for preventing error when converting binary query params to json.
Fix sqlalchemy query duration from microseconds to milliseconds.
1.0.4 (2013-01-05)
Add a debugtoolbar.excluded_prefixes setting. When a URL path prefix matches one of these prefixes, the toolbar will not be shown on the resulting page.
Show the prompt and little text file icons show all the time, instead of only on hover.
Do not set max-height on result boxes (which result in nested scroll on the page, which makes it hard to find information quickly).
When an expression result is long, do not truncate with an ellipsis, which requires one more click to get at the information I need.
Support pip install from the github repository by adding all static files required to install in the package_data setup.py. Setuptools usually uses Subversion or CVS to tell it what static files it needs to package up for egg distribution, but does not support reading git metadata.
The debug toolbar now use a patched version of require.js with a distinct private name that cannot clash with the dojo loader or other incompatible versions of require that may already be loaded on the page. You no longer need to add the toolbar to your own require.js to make it work.
1.0.3 (2012-09-23)
The valid_host custom predicate used internally by pyramid_debugtoolbar views didn’t use newer “ipaddr”-based logic. Symptom: some views may have been incorrectly inaccessible if you used a network mask as a “debugtoolbar.hosts” option.
The debug console now works with Google App Engine.
The debug console now adds a shortcut for accessing the last result through _.
1.0.2 (2012-04-19)
Moved the toolbar and debugger javascript files to use requirejs for better dependency loading and module isolation to play better with mutiple library versions. Recurrent problem was with async loading and application specific jquery library where the expected version was overrided by the toolbar one.
If you are already using requirejs and want the toolbar to load, just add it to your path and module:
require.config({ paths: { "jquery": "jquery-1.7.2.min", "toolbar": "/_debug_toolbar/static/js/toolbar" } }); require(["jquery", "toolbar"], function($, toolbar) { $(function() { // your module }); });
1.0.1 (2012-03-27)
If request.remote_addr is None, disable the toolbar.
1.0 (2012-03-17)
Don’t URL-quote SQL parameters on SQLAlchemy panel.
Allow hostmask values as debugtoolbar.hosts entries (e.g. 192.168.1.0/24).
0.9.9.1 (2012-02-22)
When used with Pyramid 1.3a9+, views, routes, and other registrations made by pyramid_debugtoolbar itself will not show up in the introspectables panel.
0.9.9 (2012-02-19)
Try to take advantage of MakoRendererFactoryHelper in Pyramid 1.3a8+. If we can do this, the toolbar templates won’t be effected by normal mako settings. The most visible change is that toolbar mako templates now have a dbtmako extension.
0.9.8 (2012-01-09)
Show request headers instead of mistakenly showing environ values in Headers panel under “Request Headers”. This also fixes a potential UnicodeDecodeError.
Set content_length on response object when we regenerate app_iter while replacing original content.
0.9.7 (2011-12-09)
The performance panel of the debugtoolbar used a variable named function_calls which was not initialised when stats are not collected. This caused a NameError when mako rendered the template with the strict_undefined option.
Fix Python 3 compatibility in SQLAlchemy panel.
Make SQLAlchemy explain and select work again.
0.9.6 (2011-12-09)
Added “Introspection” panel; active only under Pyramid 1.3dev+ (requires Pyramid introspection subsystem).
Address heisenbug reported where performance panel template variables cause unexpected results. Can’t repeat, but reporter indicates the fix works for him, so hail marying. See https://github.com/Pylons/pyramid_debugtoolbar/commit/5719c97ea2a3a41fc01e261403d0167cc38f3b49
0.9.5 (2011-11-12)
Adjust tox setup to test older Pyramid and WebOb branches under 2.5.
Convert all templates to Mako.
Don’t rely on pyramid.compat.json.
Add Tweens toolbar panel.
0.9.4 (2011-09-28)
Upgrade to jquery 1.6.4 and tablesorter plugin 2.0.5b
Introduced new setting debugtoolbar.button_style. Which can be used to override the default style (top:30px) set by toolbar.css.
Compatible with Python 3.2 (requires Pyramid 1.3dev+).
Appease settings values that were sensitive to __getattr__ in the settings debug panel (e.g. MongoDB databases). See https://github.com/Pylons/pyramid_debugtoolbar/issues/30
0.9.3 (2011-09-12)
All debug toolbar panels and underlying views are now always executable by entirely anonymous users, regardless of the default permission that may be in effect (use the NO_PERMISSION_REQUIRED permission for all debugtoolbar views).
Toolbar cookie settings name changed (from fldt to p_dt), to avoid messing up folks who use both the flask debugtoolbar and Pyramid’s.
Fix IE7 and IE8 renderings of the toolbar.
0.9.2 (2011-09-05)
Log an exception body to the debug toolbar logger when an exception happens.
Don’t reset the root logger level to NOTSET in the logging panel (changes console logging output to sanity again).
0.9.1 (2011-08-30)
The debugtoolbar.intercept_exc setting is now a tri-state setting. It can be one of debug, display or false. debug means show the pretty traceback page with debugging controls. display means show the pretty traceback package but omit the debugging controls. false means don’t show the pretty traceback page. For backwards compatibility purposes, true means debug.
A URL is now logged to the console for each exception when debugtoolbar.intercept_exc is debug or display. This URL leads to a rendering of the “pretty” traceback page for an exception. This is useful when the exception was caused by an AJAX or non-human-driven request. This URL is also injected into the pretty traceback page (at the bottom).
“Unfixed” indentation of SQL EXPLAIN done in 0.9, it broke the explain page when a column value isn’t a string.
0.9 (2011-08-29)
Fixed indentation of SQL EXPLAIN by replacing spaces with HTML spaces.
response.charset in some undefined user-reported cases may be None, which would lead to an exception when attempting to render the debug toolbar. In such cases we now assume the charset is UTF-8.
Some renderings of the request vars and renderer values would raise an uncaught exception.
0.8 (2011-08-24)
Try to cope with braindead Debian Python installs which package the pstats module separately from Python for god only knows what reason. Turn the performance panel off in this case instead of crashing.
0.7 (2011-08-24)
Docs-only changes.
0.6 (2011-08-21)
Do not register an alias when registering an implicit tween factory (compat with future 1.2 release).
0.5 (2011-08-18)
The toolbar didn’t work under Windows due to usage of the resource module: https://github.com/Pylons/pyramid_debugtoolbar/issues/12
0.4 (2011-08-18)
Change the default value for debugtoolbar.intercept_redirects to false. Rationale: it confuses people when first developing if the application they’re working on has a home page which does a redirection.
0.3 (2011-08-15)
Request vars panel would cause a UnicodeDecodeError under some circumstances (see https://github.com/Pylons/pyramid_debugtoolbar/issues/9).
Dynamicize URLs for SQLAlchemy subpanels.
Require “pyramid>=1.2dev” for install; the trunk is now “1.2dev” instead of “1.1.1dev”.
Requires trunk after 2011-08-14: WSGIHTTPException “prepare” method and alias param to add_tween, BeforeRender event has no “_system” attr.
Fix memory leak.
HTML HTTP exceptions now are rendered with the debug toolbar div.
Added NotFound page to demo app and selenium tests.
0.2 (2011-08-07)
Add SQLAlchemy “explain” and “select” pages (available from the SQLALchemy panel next to each query shown in the page).
Requires newer Pyramid trunk (checked out on 2011-08-07 or later).
Add a link to the SQLAlchemy demo page from the demo app index page.
0.1 (2011-07-30)
Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyramid_debugtoolbar-2.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04f2131d7d1cf4d5882bbd100fe8faa3000452073e7a0c78f0200cc50e5ea5d6 |
|
MD5 | 33f36a7213b58f05ee72395b1c4eb40c |
|
BLAKE2b-256 | b60e771f911e7b1bc91128a543430a954b011455cb0ed69d3f3f0b4d43024f3b |