Compatibility fixes for Python 3

Fixes #54 (at least the basic stuff, this is still a bit experimental)
This commit is contained in:
Matt Good
2013-11-06 09:06:05 -08:00
parent d5987410d1
commit 091c4fa70c
4 changed files with 19 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ from werkzeug.exceptions import HTTPException
from werkzeug.urls import url_quote_plus
from flask_debugtoolbar.toolbar import DebugToolbar
from flask_debugtoolbar.compat import iteritems
from flask import Blueprint
@@ -27,13 +28,9 @@ def replace_insensitive(string, target, replacement):
def _printable(value):
if isinstance(value, unicode):
return value.encode('unicode_escape')
elif isinstance(value, str):
return value.encode('string_escape')
try:
return repr(value)
except Exception, e:
except Exception as e:
return '<repr(%s) raised %s: %s>' % (
object.__repr__(value), type(e).__name__, e)
@@ -61,7 +58,7 @@ class DebugToolbarExtension(object):
self.init_app(app)
def init_app(self, app):
for k, v in self._default_config(app).iteritems():
for k, v in iteritems(self._default_config(app)):
app.config.setdefault(k, v)
if not app.config['DEBUG_TB_ENABLED']:

View File

@@ -0,0 +1,9 @@
import sys
PY2 = sys.version_info[0] == 2
if PY2:
iteritems = lambda d: d.iteritems()
else:
iteritems = lambda d: iter(d.items())

View File

@@ -6,7 +6,7 @@
</tr>
</thead>
<tbody>
{% for key, value in headers.iteritems() %}
{% for key, value in headers|dictsort %}
<tr class="{{ loop.cycle('flDebugOdd', 'flDebugEven') }}">
<td>{{ key|escape }}</td>
<td>{{ value|escape }}</td>

View File

@@ -1,4 +1,7 @@
import urllib
try:
from urllib.parse import unquote
except ImportError:
from urllib import unquote
from flask import url_for, current_app
from werkzeug.utils import import_string
@@ -24,7 +27,7 @@ class DebugToolbar(object):
Populate debug panels
"""
activated = self.request.cookies.get('fldt_active', '')
activated = urllib.unquote(activated).split(';')
activated = unquote(activated).split(';')
for panel_path in current_app.config['DEBUG_TB_PANELS']:
panel_class = self._import_panel(panel_path)
@@ -54,7 +57,7 @@ class DebugToolbar(object):
try:
panel_class = import_string(path)
except ImportError, e:
except ImportError as e:
current_app.logger.warning('Disabled %s due to ImportError: %s', path, e)
panel_class = None