﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
27308	BytesWarning exception raised when running with python 3 -bb option	Gustavo J. A. M. Carneiro	nobody	"When your template file does not exist, naturally Django gives an exception.  But if TEMPLATE_DEBUG is True, it also tries to generate a pretty html traceback, and this is where the bug is, if you try to run with the python 3 -bb option, which complains when you try to do str() on a bytes value.

I have Django version 1.10.1.

{{{
$ python3 -bb
Python 3.5.2 (default, Sep 10 2016, 08:21:44) 
[GCC 5.4.0 20160609] on linux
Type ""help"", ""copyright"", ""credits"" or ""license"" for more information.
>>> str(b'')
Traceback (most recent call last):
  File ""<stdin>"", line 1, in <module>
BytesWarning: str() on a bytes instance
>>> repr(b'')
""b''""
>>> 
}}}

Traceback:

{{{
2016-10-03 17:47:29,582 ERROR production.py:138 GET /login -> TemplateDoesNotExist(b'loginxxx.html',)
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>
Internal Server Error: /login
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>
2016-10-03 17:47:29,583 ERROR exception.py:124 Internal Server Error: /login
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>
2016-10-03 17:47:29,599 ERROR production.py:138 GET /login -> BytesWarning('str() on a bytes instance',)
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/mollybet/apps/home/geoipblocking.py"", line 17, in middleware
    return get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 41, in inner
    response = response_for_exception(request, exc)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 86, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 128, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 316, in get_traceback_html
    c = Context(self.get_traceback_data(), use_l10n=False)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 308, in get_traceback_data
    c['exception_value'] = smart_text(self.exc_value, errors='replace')
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 41, in smart_text
    return force_text(s, encoding, strings_only, errors)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 76, in force_text
    s = six.text_type(s)
BytesWarning: str() on a bytes instance
Internal Server Error: /login
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/mollybet/apps/home/geoipblocking.py"", line 17, in middleware
    return get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 41, in inner
    response = response_for_exception(request, exc)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 86, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 128, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 316, in get_traceback_html
    c = Context(self.get_traceback_data(), use_l10n=False)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 308, in get_traceback_data
    c['exception_value'] = smart_text(self.exc_value, errors='replace')
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 41, in smart_text
    return force_text(s, encoding, strings_only, errors)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 76, in force_text
    s = six.text_type(s)
BytesWarning: str() on a bytes instance
2016-10-03 17:47:29,601 ERROR exception.py:124 Internal Server Error: /login
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/mollybet/apps/home/geoipblocking.py"", line 17, in middleware
    return get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 41, in inner
    response = response_for_exception(request, exc)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 86, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 128, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 316, in get_traceback_html
    c = Context(self.get_traceback_data(), use_l10n=False)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 308, in get_traceback_data
    c['exception_value'] = smart_text(self.exc_value, errors='replace')
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 41, in smart_text
    return force_text(s, encoding, strings_only, errors)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 76, in force_text
    s = six.text_type(s)
BytesWarning: str() on a bytes instance
2016-10-03 17:47:29,687 ERROR production.py:138 GET /login -> BytesWarning('str() on a bytes instance',)
Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/base.py"", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/decorators.py"", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File ""/home/gjc/projects/molly/mollybet/apps/home/views.py"", line 124, in login
    new_molly_url=settings.NEW_MOLLY_URL)
  File ""/home/gjc/projects/molly/mollybet/webutils.py"", line 167, in render
    t = loader.get_template((name + '.html').encode(""ascii""))
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/template/loader.py"", line 25, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: <unprintable TemplateDoesNotExist object>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/mollybet/apps/home/geoipblocking.py"", line 17, in middleware
    return get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 41, in inner
    response = response_for_exception(request, exc)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 86, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 128, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 316, in get_traceback_html
    c = Context(self.get_traceback_data(), use_l10n=False)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 308, in get_traceback_data
    c['exception_value'] = smart_text(self.exc_value, errors='replace')
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 41, in smart_text
    return force_text(s, encoding, strings_only, errors)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/utils/encoding.py"", line 76, in force_text
    s = six.text_type(s)
BytesWarning: str() on a bytes instance

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 39, in inner
    response = get_response(request)
  File ""/home/gjc/projects/molly/mollybet/apps/home/auth.py"", line 113, in middleware
    return get_response(request)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 41, in inner
    response = response_for_exception(request, exc)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 86, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 128, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/gjc/projects/molly/env/lib/python3.4/site-packages/django/views/debug.py"", line 317, in get_traceback_html
    return t.render(c)
[...]
}}}"	Cleanup/optimization	closed	Core (Other)	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
