Commit 4dac1b65 authored by Denis Bilenko's avatar Denis Bilenko

fix reraise on py3

based on #362 by @fantix
parent 5d6c9dd9
# this produces syntax error on Python3
__all__ = ['reraise']
def reraise(type, value, tb):
raise type, value, tb
...@@ -34,11 +34,19 @@ if PY3: ...@@ -34,11 +34,19 @@ if PY3:
string_types = str, string_types = str,
integer_types = int, integer_types = int,
xrange = range xrange = range
def reraise(tp, value, tb=None):
if value.__traceback__ is not tb:
raise value.with_traceback(tb)
raise value
else: else:
string_types = basestring, string_types = basestring,
integer_types = (int, long) integer_types = (int, long)
xrange = xrange xrange = xrange
from gevent._util_py2 import reraise
if sys.version_info[0] <= 2: if sys.version_info[0] <= 2:
import thread import thread
......
...@@ -11,8 +11,7 @@ from urllib import unquote ...@@ -11,8 +11,7 @@ from urllib import unquote
from gevent import socket from gevent import socket
import gevent import gevent
from gevent.server import StreamServer from gevent.server import StreamServer
from gevent.hub import GreenletExit from gevent.hub import GreenletExit, PY3, reraise
from gevent.hub import PY3
__all__ = ['WSGIHandler', 'WSGIServer'] __all__ = ['WSGIHandler', 'WSGIServer']
...@@ -434,7 +433,7 @@ class WSGIHandler(object): ...@@ -434,7 +433,7 @@ class WSGIHandler(object):
try: try:
if self.headers_sent: if self.headers_sent:
# Re-raise original exception if headers sent # Re-raise original exception if headers sent
raise exc_info[0], exc_info[1], exc_info[2] reraise(*exc_info)
finally: finally:
# Avoid dangling circular ref # Avoid dangling circular ref
exc_info = None exc_info = None
......
...@@ -13,6 +13,7 @@ gevent/__init__.py:\d+:.*imported but unused ...@@ -13,6 +13,7 @@ gevent/__init__.py:\d+:.*imported but unused
gevent/__init__.py:\d+: redefinition of unused 'signal' from line gevent/__init__.py:\d+: redefinition of unused 'signal' from line
gevent/coros.py:\d+: 'from gevent.lock import *' used; unable to detect undefined names gevent/coros.py:\d+: 'from gevent.lock import *' used; unable to detect undefined names
gevent/coros.py:\d+: '__all__' imported but unused gevent/coros.py:\d+: '__all__' imported but unused
gevent/hub.py:\d+: 'reraise' imported but unused
gevent/thread.py:\d+: '_local' imported but unused gevent/thread.py:\d+: '_local' imported but unused
gevent/threading.py:\d+: '\w+' imported but unused gevent/threading.py:\d+: '\w+' imported but unused
gevent/wsgi.py:1: 'from gevent.pywsgi import *' used; unable to detect undefined names gevent/wsgi.py:1: 'from gevent.pywsgi import *' used; unable to detect undefined names
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment