Unified
Split
Showing
with
323 additions
and 157 deletions.
- +0 −2 .travis.yml
- +12 −0 CHANGES.txt
- +18 −0 MANIFEST.in
- +14 −0 setup.cfg
- +11 −12 setup.py
- +8 −0 { → src}/pyramid_debugtoolbar/__init__.py
- +18 −20 { → src}/pyramid_debugtoolbar/compat.py
- +3 −1 { → src}/pyramid_debugtoolbar/console.py
- +3 −0 { → src}/pyramid_debugtoolbar/panels/__init__.py
- +1 −0 { → src}/pyramid_debugtoolbar/panels/headers.py
- +5 −4 { → src}/pyramid_debugtoolbar/panels/introspection.py
- +44 −4 { → src}/pyramid_debugtoolbar/panels/logger.py
- +31 −28 { → src}/pyramid_debugtoolbar/panels/performance.py
- +3 −1 { → src}/pyramid_debugtoolbar/panels/renderings.py
- +3 −2 { → src}/pyramid_debugtoolbar/panels/request_vars.py
- +5 −4 { → src}/pyramid_debugtoolbar/panels/routes.py
- +1 −0 { → src}/pyramid_debugtoolbar/panels/settings.py
- +10 −5 { → src}/pyramid_debugtoolbar/panels/sqla.py
- 0 { → src}/pyramid_debugtoolbar/panels/templates/headers.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/introspection.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/logger.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/performance.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/renderings.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/request_vars.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/routes.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/settings.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/sqlalchemy.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/sqlalchemy_explain.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/sqlalchemy_select.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/traceback.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/tweens.dbtmako
- 0 { → src}/pyramid_debugtoolbar/panels/templates/versions.dbtmako
- +13 −10 { → src}/pyramid_debugtoolbar/panels/traceback.py
- +2 −1 { → src}/pyramid_debugtoolbar/panels/tweens.py
- +1 −0 { → src}/pyramid_debugtoolbar/panels/versions.py
- +13 −11 { → src}/pyramid_debugtoolbar/repr.py
- 0 { → src}/pyramid_debugtoolbar/static/bootstrap/css/bootstrap.min.css
- BIN { → src}/pyramid_debugtoolbar/static/bootstrap/fonts/glyphicons-halflings-regular.eot
- 0 { → src}/pyramid_debugtoolbar/static/bootstrap/fonts/glyphicons-halflings-regular.svg
- BIN { → src}/pyramid_debugtoolbar/static/bootstrap/fonts/glyphicons-halflings-regular.ttf
- BIN { → src}/pyramid_debugtoolbar/static/bootstrap/fonts/glyphicons-halflings-regular.woff
- BIN { → src}/pyramid_debugtoolbar/static/bootstrap/fonts/glyphicons-halflings-regular.woff2
- 0 { → src}/pyramid_debugtoolbar/static/bootstrap/js/bootstrap.min.js
- 0 { → src}/pyramid_debugtoolbar/static/debugger/debugger.css
- 0 { → src}/pyramid_debugtoolbar/static/debugger/debugger.js
- BIN { → src}/pyramid_debugtoolbar/static/debugger/img/console.png
- BIN { → src}/pyramid_debugtoolbar/static/debugger/img/source.png
- 0 { → src}/pyramid_debugtoolbar/static/eventsource/LICENSE
- 0 { → src}/pyramid_debugtoolbar/static/eventsource/eventsource.js
- 0 { → src}/pyramid_debugtoolbar/static/jquery.cookie/jquery.cookie.js
- 0 { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/README.rst
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/black-asc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/black-desc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/black-unsorted.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/bootstrap-black-unsorted.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/bootstrap-white-unsorted.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/dragtable-handle.png
- 0 { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/dragtable-handle.svg
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/dropbox-asc-hovered.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/dropbox-asc.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/dropbox-desc-hovered.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/dropbox-desc.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/first.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/green-asc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/green-desc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/green-header.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/green-unsorted.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/ice-asc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/ice-desc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/ice-unsorted.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/last.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/loading.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/metro-black-asc.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/metro-black-desc.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/metro-loading.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/metro-unsorted.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/metro-white-asc.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/metro-white-desc.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/next.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/prev.png
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/white-asc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/white-desc.gif
- BIN { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/images/white-unsorted.gif
- 0 { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/css/theme.bootstrap.min.css
- 0 { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/js/jquery.tablesorter.min.js
- 0 { → src}/pyramid_debugtoolbar/static/jquery.tablesorter/js/jquery.tablesorter.widgets.min.js
- 0 { → src}/pyramid_debugtoolbar/static/jquery/jquery.min.js
- 0 { → src}/pyramid_debugtoolbar/static/toolbar/dashboard.css
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/asc.gif
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/back.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/back_hover.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/bg.gif
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/close.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/close_hover.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/cross.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/desc.gif
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/headerbg.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/indicator.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/less.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/more.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/panel_bg.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/pdtb.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/pyramid.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/tick-default.png
- BIN { → src}/pyramid_debugtoolbar/static/toolbar/img/tick.png
- 0 { → src}/pyramid_debugtoolbar/static/toolbar/toolbar.css
- 0 { → src}/pyramid_debugtoolbar/static/toolbar/toolbar.js
- 0 { → src}/pyramid_debugtoolbar/static/toolbar/toolbar_button.css
- +38 −35 { → src}/pyramid_debugtoolbar/tbtools.py
- 0 { → src}/pyramid_debugtoolbar/templates/exception.dbtmako
- 0 { → src}/pyramid_debugtoolbar/templates/exception_summary.dbtmako
- 0 { → src}/pyramid_debugtoolbar/templates/global_tab.dbtmako
- +1 −1 { → src}/pyramid_debugtoolbar/templates/history_tab.dbtmako
- 0 { → src}/pyramid_debugtoolbar/templates/redirect.dbtmako
- 0 { → src}/pyramid_debugtoolbar/templates/settings_tab.dbtmako
- 0 { → src}/pyramid_debugtoolbar/templates/toolbar.dbtmako
- +8 −4 { → src}/pyramid_debugtoolbar/toolbar.py
- +8 −0 { → src}/pyramid_debugtoolbar/toolbar_app.py
- +30 −11 { → src}/pyramid_debugtoolbar/utils.py
- +19 −1 tox.ini
| @@ -22,8 +22,6 @@ matrix: | ||
| env: TOXENV=docs | ||
| - python: 2.7 | ||
| env: TOXENV=py27-pyramid14 | ||
| - python: 2.7 | ||
| env: TOXENV=py27-pyramid15 | ||
| install: | ||
| - travis_retry pip install -U setuptools | ||
| @@ -1,3 +1,15 @@ | ||
| 4.3 (2017-07-14) | ||
| ---------------- | ||
| - The logging panel indicator is now color-coded to indicate the severity of | ||
| the log messages as well as the number of messages at said level. There may | ||
| be more messages, but the most severe show up in the annotation. | ||
| This feature also added a new ``nav_subtitle_style`` hook to the | ||
| ``DebugPanel`` API for adding a custom CSS class to the subtitle tag. | ||
| See https://github.com/Pylons/pyramid_debugtoolbar/pull/322 | ||
| 4.2.1 (2017-06-30) | ||
| ------------------ | ||
| @@ -0,0 +1,18 @@ | ||
| graft src | ||
| graft tests | ||
| graft docs | ||
| graft demo | ||
| prune docs/_build | ||
| prune demo/mako_modules | ||
| include README.rst | ||
| include CHANGES.txt | ||
| include LICENSE.txt | ||
| include CONTRIBUTORS.txt | ||
| include contributing.md | ||
| include RELEASING.txt | ||
| include TODO.txt | ||
| include tox.ini .travis.yml rtd.txt | ||
| recursive-exclude * __pycache__ *.py[cod] |
| @@ -11,6 +11,20 @@ zip_ok = false | ||
| match=^test | ||
| nocapture=1 | ||
| [flake8] | ||
| ignore = | ||
| E114, | ||
| E116, | ||
| W503, | ||
| E731 | ||
| builtins = | ||
| basestring, | ||
| unicode | ||
| exclude = | ||
| src/pyramid_debugtoolbar/compat.py | ||
| show-source = True | ||
| max-line-length = 80 | ||
| [aliases] | ||
| dev = develop easy_install pyramid_debugtoolbar[testing] | ||
| docs = develop easy_install pyramid_debugtoolbar[docs] | ||
| @@ -12,16 +12,14 @@ | ||
| # | ||
| ############################################################################## | ||
| import os | ||
| from setuptools import setup, find_packages | ||
| here = os.path.abspath(os.path.dirname(__file__)) | ||
| try: | ||
| README = open(os.path.join(here, 'README.rst')).read() | ||
| CHANGES = open(os.path.join(here, 'CHANGES.txt')).read() | ||
| except IOError: | ||
| README = CHANGES = '' | ||
| def readfile(name): | ||
| with open(name) as f: | ||
| return f.read() | ||
| README = readfile('README.rst') | ||
| CHANGES = readfile('CHANGES.txt') | ||
| install_requires = [ | ||
| 'pyramid>=1.4', | ||
| @@ -46,7 +44,7 @@ | ||
| ] | ||
| setup(name='pyramid_debugtoolbar', | ||
| version='4.2.1', | ||
| version='4.3', | ||
| description=('A package which provides an interactive HTML debugger ' | ||
| 'for Pyramid application development'), | ||
| long_description=README + '\n\n' + CHANGES, | ||
| @@ -67,17 +65,18 @@ | ||
| author=("Chris McDonough, Michael Merickel, Casey Duncan, " | ||
| "Blaise Laflamme"), | ||
| author_email="pylons-discuss@googlegroups.com", | ||
| url="http://docs.pylonsproject.org/projects/pyramid-debugtoolbar/en/latest/", | ||
| url="https://docs.pylonsproject.org/projects/pyramid-debugtoolbar/en/latest/", | ||
| license="BSD", | ||
| packages=find_packages(exclude=('tests',)), | ||
| packages=find_packages('src', exclude=['tests']), | ||
| package_dir={'': 'src'}, | ||
| include_package_data=True, | ||
| zip_safe=False, | ||
| install_requires=install_requires, | ||
| python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*', | ||
| extras_require = { | ||
| ':python_version<"3.3"': extra_requires, | ||
| 'testing':testing_extras, | ||
| 'docs':docs_extras, | ||
| }, | ||
| test_suite="tests", | ||
| entry_points='', | ||
| ) | ||
| @@ -55,6 +55,7 @@ | ||
| ('reload_templates', asbool, 'false'), | ||
| ] | ||
| def parse_settings(settings): | ||
| parsed = {} | ||
| @@ -75,6 +76,7 @@ def populate(name, convert, default): | ||
| return parsed | ||
| def transform_settings(settings): | ||
| parsed = {} | ||
| @@ -89,13 +91,15 @@ def populate(name): | ||
| return parsed | ||
| def set_request_authorization_callback(config, callback): | ||
| """ | ||
| Register IRequestAuthorization utility to authorize toolbar per request. | ||
| """ | ||
| config.registry.registerUtility(callback, IRequestAuthorization) | ||
| def includeme(config): | ||
| """ | ||
| Activate the debug toolbar. | ||
| @@ -140,6 +144,7 @@ def includeme(config): | ||
| config.introspection = introspection | ||
| def _apply_parent_actions(parent_registry): | ||
| toolbar_app = parent_registry.queryUtility(IToolbarWSGIApp) | ||
| if toolbar_app is None: | ||
| @@ -171,6 +176,7 @@ def _apply_parent_actions(parent_registry): | ||
| parent_config.commit() | ||
| # AVERT YOUR EYES NOTHING TO SEE HERE | ||
| # | ||
| # Okay so, we need a way to affect the Pyramid config **after** the user is | ||
| @@ -195,6 +201,7 @@ def __call__(self, registry): | ||
| _apply_parent_actions(registry) | ||
| return self.wrapped_router(registry) | ||
| def _monkeypatch_pyramid_router(): | ||
| import pyramid.config | ||
| router_factory = pyramid.config.Router | ||
| @@ -203,4 +210,5 @@ def _monkeypatch_pyramid_router(): | ||
| if not isinstance(pyramid.config.Router, _ToolbarRouterFactory): | ||
| pyramid.config.Router = _ToolbarRouterFactory(router_factory) | ||
| _monkeypatch_pyramid_router() | ||
| @@ -4,7 +4,7 @@ | ||
| # True if we are running on Python 3. | ||
| PY3 = sys.version_info[0] == 3 | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| string_types = str, | ||
| integer_types = int, | ||
| class_types = type, | ||
| @@ -24,33 +24,35 @@ | ||
| def text_(s, encoding='latin-1', errors='strict'): | ||
| if isinstance(s, binary_type): | ||
| return s.decode(encoding, errors) | ||
| return s # pragma: no cover | ||
| return s # pragma: no cover | ||
| def bytes_(s, encoding='latin-1', errors='strict'): | ||
| if isinstance(s, text_type): # pragma: no cover | ||
| if isinstance(s, text_type): # pragma: no cover | ||
| return s.encode(encoding, errors) | ||
| return s | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| def native_(s, encoding='latin-1', errors='strict'): | ||
| if isinstance(s, text_type): | ||
| return s | ||
| return str(s, encoding, errors) | ||
| else: | ||
| def native_(s, encoding='latin-1', errors='strict'): | ||
| if isinstance(s, text_type): # pragma: no cover | ||
| if isinstance(s, text_type): # pragma: no cover | ||
| return s.encode(encoding, errors) | ||
| return str(s) | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| import builtins | ||
| exec_ = getattr(builtins, "exec") | ||
| def reraise(exc_info): | ||
| etype, exc, tb = exc_info | ||
| if exc.__traceback__ is not tb: | ||
| raise exc.with_traceback(tb) | ||
| raise exc | ||
| else: # pragma: no cover | ||
| else: # pragma: no cover | ||
| def exec_(code, globs=None, locs=None): | ||
| """Execute code in a namespace.""" | ||
| if globs is None: | ||
| @@ -66,14 +68,14 @@ def exec_(code, globs=None, locs=None): | ||
| raise exc_info[0], exc_info[1], exc_info[2] | ||
| """) | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| from io import StringIO | ||
| from io import BytesIO | ||
| else: | ||
| from StringIO import StringIO | ||
| BytesIO = StringIO | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| import builtins | ||
| exec_ = getattr(builtins, "exec") | ||
| @@ -83,10 +85,9 @@ def reraise(tp, value, tb=None): | ||
| raise value.with_traceback(tb) | ||
| raise value | ||
| del builtins | ||
| else: # pragma: no cover | ||
| else: # pragma: no cover | ||
| def exec_(code, globs=None, locs=None): | ||
| """Execute code in a namespace.""" | ||
| if globs is None: | ||
| @@ -99,12 +100,11 @@ def exec_(code, globs=None, locs=None): | ||
| locs = globs | ||
| exec("""exec code in globs, locs""") | ||
| exec_("""def reraise(tp, value, tb=None): | ||
| raise tp, value, tb | ||
| """) | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| from urllib import parse | ||
| urlparse = parse | ||
| from urllib.parse import quote as url_quote | ||
| @@ -120,13 +120,13 @@ def exec_(code, globs=None, locs=None): | ||
| from urllib import urlencode as url_encode | ||
| from urllib2 import urlopen as url_open | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| xrange_ = range | ||
| else: | ||
| xrange_ = xrange | ||
| if PY3: # pragma: no cover | ||
| if PY3: # pragma: no cover | ||
| def iteritems_(d): | ||
| return d.items() | ||
| else: | ||
| @@ -135,10 +135,8 @@ def iteritems_(d): | ||
| try: | ||
| import json | ||
| except ImportError: # pragma: no cover | ||
| except ImportError: # pragma: no cover | ||
| try: | ||
| import simplejson as json | ||
| except NotImplementedError: | ||
| from django.utils import simplejson as json # GAE | ||
| from django.utils import simplejson as json # GAE | ||
| @@ -21,6 +21,7 @@ | ||
| _local = threading.local() | ||
| class HTMLStringO(object): | ||
| """A StringO version that HTML escapes on write.""" | ||
| @@ -137,6 +138,7 @@ def get_source_by_code(self, code): | ||
| def _wrap_compiler(console): | ||
| compile = console.compile | ||
| def func(source, filename, symbol): | ||
| code = compile(source, filename, symbol) | ||
| console.loader.register(code, source) | ||
| @@ -216,7 +218,7 @@ class _ConsoleFrame(object): | ||
| """Helper class so that we can reuse the frame console code for the | ||
| standalone console. | ||
| """ | ||
| def __init__(self, namespace): | ||
| self.console = Console(namespace) | ||
| self.id = 0 | ||
| @@ -60,6 +60,9 @@ class DebugPanel(object): | ||
| #: Subtitle showing until title in toolbar. | ||
| nav_subtitle = '' | ||
| #: CSS class used to give the subtitle a background color. | ||
| nav_subtitle_style = '' | ||
| #: Title showing in panel. Must be overridden. | ||
| title = NotImplemented | ||
| @@ -34,5 +34,6 @@ def process_response_deferred(self): | ||
| ] | ||
| self.data['response_headers'] = response_headers | ||
| def includeme(config): | ||
| config.add_debugtoolbar_panel(HeaderDebugPanel) | ||
| @@ -4,16 +4,16 @@ | ||
| try: | ||
| from pyramid.interfaces import IIntrospector | ||
| IIntrospector = IIntrospector # pyflakes | ||
| IIntrospector = IIntrospector # pyflakes | ||
| from pyramid.util import object_description | ||
| except ImportError: # pragma: no cover | ||
| except ImportError: # pragma: no cover | ||
| has_content = False | ||
| else: | ||
| has_content = True | ||
| _ = lambda x: x | ||
| class IntrospectionDebugPanel(DebugPanel): | ||
| """ | ||
| A panel to display generic Pyramid introspection info. | ||
| @@ -31,7 +31,7 @@ def __init__(self, request): | ||
| self.data = { | ||
| 'categorized': categorized, | ||
| 'debug_repr': debug_repr, | ||
| 'object_description':object_description, | ||
| 'object_description': object_description, | ||
| 'nl2br': nl2br} | ||
| def render_vars(self, request): | ||
| @@ -41,5 +41,6 @@ def render_vars(self, request): | ||
| def nl2br(s): | ||
| return s.replace('\n', '<br/>') | ||
| def includeme(config): | ||
| config.add_debugtoolbar_panel(IntrospectionDebugPanel, is_global=True) | ||
Oops, something went wrong.