aboutsummaryrefslogtreecommitdiffstats
path: root/mako/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'mako/exceptions.py')
-rw-r--r--mako/exceptions.py96
1 files changed, 64 insertions, 32 deletions
diff --git a/mako/exceptions.py b/mako/exceptions.py
index e2d78bd..7720356 100644
--- a/mako/exceptions.py
+++ b/mako/exceptions.py
@@ -6,9 +6,11 @@
"""exception classes"""
-import traceback
import sys
-from mako import util, compat
+import traceback
+
+from mako import compat
+from mako import util
class MakoException(Exception):
@@ -27,11 +29,10 @@ def _format_filepos(lineno, pos, filename):
class CompileException(MakoException):
-
def __init__(self, message, source, lineno, pos, filename):
MakoException.__init__(
- self,
- message + _format_filepos(lineno, pos, filename))
+ self, message + _format_filepos(lineno, pos, filename)
+ )
self.lineno = lineno
self.pos = pos
self.filename = filename
@@ -39,11 +40,10 @@ class CompileException(MakoException):
class SyntaxException(MakoException):
-
def __init__(self, message, source, lineno, pos, filename):
MakoException.__init__(
- self,
- message + _format_filepos(lineno, pos, filename))
+ self, message + _format_filepos(lineno, pos, filename)
+ )
self.lineno = lineno
self.pos = pos
self.filename = filename
@@ -115,7 +115,7 @@ class RichTraceback(object):
# str(Exception(u'\xe6')) work in Python < 2.6
self.message = self.error.args[0]
if not isinstance(self.message, compat.text_type):
- self.message = compat.text_type(self.message, 'ascii', 'replace')
+ self.message = compat.text_type(self.message, "ascii", "replace")
def _get_reformatted_records(self, records):
for rec in records:
@@ -151,12 +151,13 @@ class RichTraceback(object):
source, and code line from that line number of the template."""
import mako.template
+
mods = {}
rawrecords = traceback.extract_tb(trcback)
new_trcback = []
for filename, lineno, function, line in rawrecords:
if not line:
- line = ''
+ line = ""
try:
(line_map, template_lines) = mods[filename]
except KeyError:
@@ -169,7 +170,7 @@ class RichTraceback(object):
# A normal .py file (not a Template)
if not compat.py3k:
try:
- fp = open(filename, 'rb')
+ fp = open(filename, "rb")
encoding = util.parse_encoding(fp)
fp.close()
except IOError:
@@ -177,20 +178,32 @@ class RichTraceback(object):
if encoding:
line = line.decode(encoding)
else:
- line = line.decode('ascii', 'replace')
- new_trcback.append((filename, lineno, function, line,
- None, None, None, None))
+ line = line.decode("ascii", "replace")
+ new_trcback.append(
+ (
+ filename,
+ lineno,
+ function,
+ line,
+ None,
+ None,
+ None,
+ None,
+ )
+ )
continue
template_ln = 1
- source_map = mako.template.ModuleInfo.\
- get_module_source_metadata(
- module_source, full_line_map=True)
- line_map = source_map['full_line_map']
+ mtm = mako.template.ModuleInfo
+ source_map = mtm.get_module_source_metadata(
+ module_source, full_line_map=True
+ )
+ line_map = source_map["full_line_map"]
- template_lines = [line_ for line_ in
- template_source.split("\n")]
+ template_lines = [
+ line_ for line_ in template_source.split("\n")
+ ]
mods[filename] = (line_map, template_lines)
template_ln = line_map[lineno - 1]
@@ -199,9 +212,18 @@ class RichTraceback(object):
template_line = template_lines[template_ln - 1]
else:
template_line = None
- new_trcback.append((filename, lineno, function,
- line, template_filename, template_ln,
- template_line, template_source))
+ new_trcback.append(
+ (
+ filename,
+ lineno,
+ function,
+ line,
+ template_filename,
+ template_ln,
+ template_line,
+ template_source,
+ )
+ )
if not self.source:
for l in range(len(new_trcback) - 1, 0, -1):
if new_trcback[l][5]:
@@ -212,17 +234,17 @@ class RichTraceback(object):
if new_trcback:
try:
# A normal .py file (not a Template)
- fp = open(new_trcback[-1][0], 'rb')
+ fp = open(new_trcback[-1][0], "rb")
encoding = util.parse_encoding(fp)
if compat.py3k and not encoding:
- encoding = 'utf-8'
+ encoding = "utf-8"
fp.seek(0)
self.source = fp.read()
fp.close()
if encoding:
self.source = self.source.decode(encoding)
except IOError:
- self.source = ''
+ self.source = ""
self.lineno = new_trcback[-1][1]
return new_trcback
@@ -235,7 +257,9 @@ def text_error_template(lookup=None):
"""
import mako.template
- return mako.template.Template(r"""
+
+ return mako.template.Template(
+ r"""
<%page args="error=None, traceback=None"/>
<%!
from mako.exceptions import RichTraceback
@@ -249,7 +273,8 @@ Traceback (most recent call last):
${line | trim}
% endfor
${tback.errorname}: ${tback.message}
-""")
+"""
+ )
def _install_pygments():
@@ -261,9 +286,10 @@ def _install_pygments():
def _install_fallback():
global syntax_highlight, pygments_html_formatter
from mako.filters import html_escape
+
pygments_html_formatter = None
- def syntax_highlight(filename='', language=None):
+ def syntax_highlight(filename="", language=None):
return html_escape
@@ -272,6 +298,8 @@ def _install_highlighting():
_install_pygments()
except ImportError:
_install_fallback()
+
+
_install_highlighting()
@@ -289,7 +317,9 @@ def html_error_template():
"""
import mako.template
- return mako.template.Template(r"""
+
+ return mako.template.Template(
+ r"""
<%!
from mako.exceptions import RichTraceback, syntax_highlight,\
pygments_html_formatter
@@ -392,5 +422,7 @@ def html_error_template():
</body>
</html>
% endif
-""", output_encoding=sys.getdefaultencoding(),
- encoding_errors='htmlentityreplace')
+""",
+ output_encoding=sys.getdefaultencoding(),
+ encoding_errors="htmlentityreplace",
+ )