From 92d12567b20dbe159a1a8a8db4d2cd05d15e6588 Mon Sep 17 00:00:00 2001 From: Viktors Date: Thu, 17 Apr 2014 21:07:09 +0300 Subject: [PATCH] python3 compatibility: range, zip, StringIO --- eventlet/greenpool.py | 8 ++++---- eventlet/hubs/timer.py | 16 +++++++++------- eventlet/websocket.py | 2 +- tests/debug_test.py | 25 +++++++++++-------------- tests/greenpool_test.py | 2 +- tests/websocket_new_test.py | 2 +- tests/wsgi_test.py | 15 +++++---------- 7 files changed, 32 insertions(+), 38 deletions(-) diff --git a/eventlet/greenpool.py b/eventlet/greenpool.py index afac07d..693a37a 100644 --- a/eventlet/greenpool.py +++ b/eventlet/greenpool.py @@ -1,4 +1,3 @@ -import itertools import traceback from eventlet import event @@ -6,6 +5,7 @@ from eventlet import greenthread from eventlet import queue from eventlet import semaphore from eventlet.support import greenlets as greenlet +from eventlet.support import six __all__ = ['GreenPool', 'GreenPile'] @@ -154,16 +154,16 @@ class GreenPool(object): def imap(self, function, *iterables): """This is the same as :func:`itertools.imap`, and has the same concurrency and memory behavior as :meth:`starmap`. - + It's quite convenient for, e.g., farming out jobs from a file:: - + def worker(line): return do_something(line) pool = GreenPool() for result in pool.imap(worker, open("filename", 'r')): print result """ - return self.starmap(function, itertools.izip(*iterables)) + return self.starmap(function, six.moves.zip(*iterables)) def return_stop_iteration(): diff --git a/eventlet/hubs/timer.py b/eventlet/hubs/timer.py index 53c4935..4031a53 100644 --- a/eventlet/hubs/timer.py +++ b/eventlet/hubs/timer.py @@ -1,10 +1,13 @@ -from eventlet.support import greenlets as greenlet +import traceback + +from eventlet.support import greenlets as greenlet, six from eventlet.hubs import get_hub """ If true, captures a stack trace for each timer when constructed. This is useful for debugging leaking timers, to find out where the timer was set up. """ _g_debug = False + class Timer(object): def __init__(self, seconds, cb, *args, **kw): """Create a timer. @@ -20,8 +23,7 @@ class Timer(object): self.tpl = cb, args, kw self.called = False if _g_debug: - import traceback, cStringIO - self.traceback = cStringIO.StringIO() + self.traceback = six.StringIO() traceback.print_stack(file=self.traceback) @property @@ -31,7 +33,7 @@ class Timer(object): def __repr__(self): secs = getattr(self, 'seconds', None) cb, args, kw = getattr(self, 'tpl', (None, None, None)) - retval = "Timer(%s, %s, *%s, **%s)" % ( + retval = "Timer(%s, %s, *%s, **%s)" % ( secs, cb, args, kw) if _g_debug and hasattr(self, 'traceback'): retval += '\n' + self.traceback.getvalue() @@ -74,8 +76,9 @@ class Timer(object): # No default ordering in 3.x. heapq uses < # FIXME should full set be added? - def __lt__(self, other): - return id(self)