[issue29809] TypeError in traceback.print_exc - unicode does not have the buffer interface
Jason R. Coombs
report at bugs.python.org
Tue Mar 14 10:29:49 EDT 2017
New submission from Jason R. Coombs:
I'm writing a routine that captures exceptions and logs them to a database. In doing so, I encountered a situation that when parsing a Unicode file that has an IndentationError (SyntaxError), print_exc will fail when it tries to render the unicode line. Here's a script that replicates the failure.
# coding: utf-8
from __future__ import unicode_literals
import io
import sys
import traceback
PY3 = sys.version_info > (3,)
print(sys.version)
buffer = io.StringIO() if PY3 else io.BytesIO()
try:
args = str('<tokenize>'), 7, 2, ' // test'
raise IndentationError('failed', args)
except Exception:
traceback.print_exc(file=buffer)
And the output
$ python2 test-unicode-tb.py
2.7.13 (default, Dec 24 2016, 21:20:02)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]
Traceback (most recent call last):
File "test-unicode-tb.py", line 19, in <module>
traceback.print_exc(file=buffer)
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/traceback.py", line 233, in print_exc
print_exception(etype, value, tb, limit, file)
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/traceback.py", line 128, in print_exception
_print(file, line, '')
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/traceback.py", line 13, in _print
file.write(str+terminator)
TypeError: 'unicode' does not have the buffer interface
The same test runs without error on Python 3. It's surprising to me that I'm the first person to encounter this issue. Is it possible I'm abusing the tokenize module and a unicode value shouldn't be present in the args for the IndentationError?
----------
messages: 289592
nosy: jason.coombs
priority: normal
severity: normal
status: open
title: TypeError in traceback.print_exc - unicode does not have the buffer interface
versions: Python 2.7
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue29809>
_______________________________________
More information about the Python-bugs-list
mailing list