Skip to content

Commit

Permalink
PEP 302 source loaders already decode appropriately
Browse files Browse the repository at this point in the history
  • Loading branch information
clelland committed Oct 10, 2012
1 parent 71c6133 commit a670593
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions django/views/debug.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,15 +354,19 @@ def _get_lines_from_file(self, filename, lineno, context_lines, loader=None, mod
if source is None:
return None, [], None, []

encoding = 'ascii'
for line in source[:2]:
# File coding may be specified. Match pattern from PEP-263
# (http://www.python.org/dev/peps/pep-0263/)
match = re.search(br'coding[:=]\s*([-\w.]+)', line)
if match:
encoding = match.group(1).decode('ascii')
break
source = [six.text_type(sline, encoding, 'replace') for sline in source]
# If we just read the source from a file, or if the loader did not
# apply tokenize.detect_encoding to decode the source into a Unicode
# string, then we should do that ourselves.
if isinstance(source[0], six.binary_type):
encoding = 'ascii'
for line in source[:2]:
# File coding may be specified. Match pattern from PEP-263
# (http://www.python.org/dev/peps/pep-0263/)
match = re.search(br'coding[:=]\s*([-\w.]+)', line)
if match:
encoding = match.group(1).decode('ascii')
break
source = [six.text_type(sline, encoding, 'replace') for sline in source]

lower_bound = max(0, lineno - context_lines)
upper_bound = lineno + context_lines
Expand Down

0 comments on commit a670593

Please sign in to comment.