Reformat with autopep8

This commit is contained in:
Jakub Stasiak 2014-10-10 09:41:15 +01:00
parent 765d7df36d
commit 93f2a8d068
34 changed files with 212 additions and 136 deletions

View File

@ -73,7 +73,8 @@ def launch_heavy_threads():
server_sock.bind(('localhost', 0))
server_sock.listen(50)
addr = ('localhost', server_sock.getsockname()[1])
accepter_thread = threading.Thread(None, heavy_accepter, "accepter thread", (server_sock, threads))
accepter_thread = threading.Thread(
None, heavy_accepter, "accepter thread", (server_sock, threads))
accepter_thread.start()
threads.append(accepter_thread)
for i in six.moves.range(CONCURRENCY):
@ -112,4 +113,5 @@ if __name__ == "__main__":
print("green:", results[launch_green_threads])
if opts.threading:
print("threads:", results[launch_heavy_threads])
print("%", (results[launch_green_threads] - results[launch_heavy_threads]) / results[launch_heavy_threads] * 100)
print("%", (results[launch_green_threads] - results[launch_heavy_threads]
) / results[launch_heavy_threads] * 100)

View File

@ -127,7 +127,8 @@ except ImportError:
from eventlet.green.OpenSSL import SSL
except ImportError:
def wrap_ssl_impl(*a, **kw):
raise ImportError("To use SSL with Eventlet, you must install PyOpenSSL or use Python 2.6 or later.")
raise ImportError(
"To use SSL with Eventlet, you must install PyOpenSSL or use Python 2.6 or later.")
else:
def wrap_ssl_impl(sock, keyfile=None, certfile=None, server_side=False,
cert_reqs=None, ssl_version=None, ca_certs=None,

View File

@ -317,73 +317,107 @@ class GenericConnectionWrapper(object):
# setattr(class, name, lambda self, *a, **kw: getattr(self._base, name)(*a, **kw))
# * def __getattr__(self, name): if name in (...): return getattr(self._base, name)
# * other?
def __enter__(self): return self._base.__enter__()
def __enter__(self):
return self._base.__enter__()
def __exit__(self, exc, value, tb): return self._base.__exit__(exc, value, tb)
def __exit__(self, exc, value, tb):
return self._base.__exit__(exc, value, tb)
def __repr__(self): return self._base.__repr__()
def __repr__(self):
return self._base.__repr__()
def affected_rows(self): return self._base.affected_rows()
def affected_rows(self):
return self._base.affected_rows()
def autocommit(self, *args, **kwargs): return self._base.autocommit(*args, **kwargs)
def autocommit(self, *args, **kwargs):
return self._base.autocommit(*args, **kwargs)
def begin(self): return self._base.begin()
def begin(self):
return self._base.begin()
def change_user(self, *args, **kwargs): return self._base.change_user(*args, **kwargs)
def change_user(self, *args, **kwargs):
return self._base.change_user(*args, **kwargs)
def character_set_name(self, *args, **kwargs): return self._base.character_set_name(*args, **kwargs)
def character_set_name(self, *args, **kwargs):
return self._base.character_set_name(*args, **kwargs)
def close(self, *args, **kwargs): return self._base.close(*args, **kwargs)
def close(self, *args, **kwargs):
return self._base.close(*args, **kwargs)
def commit(self, *args, **kwargs): return self._base.commit(*args, **kwargs)
def commit(self, *args, **kwargs):
return self._base.commit(*args, **kwargs)
def cursor(self, *args, **kwargs): return self._base.cursor(*args, **kwargs)
def cursor(self, *args, **kwargs):
return self._base.cursor(*args, **kwargs)
def dump_debug_info(self, *args, **kwargs): return self._base.dump_debug_info(*args, **kwargs)
def dump_debug_info(self, *args, **kwargs):
return self._base.dump_debug_info(*args, **kwargs)
def errno(self, *args, **kwargs): return self._base.errno(*args, **kwargs)
def errno(self, *args, **kwargs):
return self._base.errno(*args, **kwargs)
def error(self, *args, **kwargs): return self._base.error(*args, **kwargs)
def error(self, *args, **kwargs):
return self._base.error(*args, **kwargs)
def errorhandler(self, *args, **kwargs): return self._base.errorhandler(*args, **kwargs)
def errorhandler(self, *args, **kwargs):
return self._base.errorhandler(*args, **kwargs)
def insert_id(self, *args, **kwargs): return self._base.insert_id(*args, **kwargs)
def insert_id(self, *args, **kwargs):
return self._base.insert_id(*args, **kwargs)
def literal(self, *args, **kwargs): return self._base.literal(*args, **kwargs)
def literal(self, *args, **kwargs):
return self._base.literal(*args, **kwargs)
def set_character_set(self, *args, **kwargs): return self._base.set_character_set(*args, **kwargs)
def set_character_set(self, *args, **kwargs):
return self._base.set_character_set(*args, **kwargs)
def set_sql_mode(self, *args, **kwargs): return self._base.set_sql_mode(*args, **kwargs)
def set_sql_mode(self, *args, **kwargs):
return self._base.set_sql_mode(*args, **kwargs)
def show_warnings(self): return self._base.show_warnings()
def show_warnings(self):
return self._base.show_warnings()
def warning_count(self): return self._base.warning_count()
def warning_count(self):
return self._base.warning_count()
def ping(self, *args, **kwargs): return self._base.ping(*args, **kwargs)
def ping(self, *args, **kwargs):
return self._base.ping(*args, **kwargs)
def query(self, *args, **kwargs): return self._base.query(*args, **kwargs)
def query(self, *args, **kwargs):
return self._base.query(*args, **kwargs)
def rollback(self, *args, **kwargs): return self._base.rollback(*args, **kwargs)
def rollback(self, *args, **kwargs):
return self._base.rollback(*args, **kwargs)
def select_db(self, *args, **kwargs): return self._base.select_db(*args, **kwargs)
def select_db(self, *args, **kwargs):
return self._base.select_db(*args, **kwargs)
def set_server_option(self, *args, **kwargs): return self._base.set_server_option(*args, **kwargs)
def set_server_option(self, *args, **kwargs):
return self._base.set_server_option(*args, **kwargs)
def server_capabilities(self, *args, **kwargs): return self._base.server_capabilities(*args, **kwargs)
def server_capabilities(self, *args, **kwargs):
return self._base.server_capabilities(*args, **kwargs)
def shutdown(self, *args, **kwargs): return self._base.shutdown(*args, **kwargs)
def shutdown(self, *args, **kwargs):
return self._base.shutdown(*args, **kwargs)
def sqlstate(self, *args, **kwargs): return self._base.sqlstate(*args, **kwargs)
def sqlstate(self, *args, **kwargs):
return self._base.sqlstate(*args, **kwargs)
def stat(self, *args, **kwargs): return self._base.stat(*args, **kwargs)
def stat(self, *args, **kwargs):
return self._base.stat(*args, **kwargs)
def store_result(self, *args, **kwargs): return self._base.store_result(*args, **kwargs)
def store_result(self, *args, **kwargs):
return self._base.store_result(*args, **kwargs)
def string_literal(self, *args, **kwargs): return self._base.string_literal(*args, **kwargs)
def string_literal(self, *args, **kwargs):
return self._base.string_literal(*args, **kwargs)
def thread_id(self, *args, **kwargs): return self._base.thread_id(*args, **kwargs)
def thread_id(self, *args, **kwargs):
return self._base.thread_id(*args, **kwargs)
def use_result(self, *args, **kwargs): return self._base.use_result(*args, **kwargs)
def use_result(self, *args, **kwargs):
return self._base.use_result(*args, **kwargs)
class PooledConnectionWrapper(GenericConnectionWrapper):
@ -420,7 +454,7 @@ class PooledConnectionWrapper(GenericConnectionWrapper):
def __del__(self):
return # this causes some issues if __del__ is called in the
# main coroutine, so for now this is disabled
# main coroutine, so for now this is disabled
# self.close()

View File

@ -18,11 +18,13 @@ __all__ = dir(builtins_orig)
__patched__ = ['file', 'open']
slurp_properties(builtins_orig, globals(),
ignore=__patched__, srckeys=dir(builtins_orig))
ignore=__patched__, srckeys=dir(builtins_orig))
hubs.get_hub()
__original_file = file
class file(__original_file):
def __init__(self, *args, **kwargs):
super(file, self).__init__(*args, **kwargs)
@ -30,6 +32,8 @@ class file(__original_file):
__original_open = open
__opening = False
def open(*args):
global __opening
result = __original_open(*args)
@ -40,4 +44,4 @@ def open(*args):
__opening = True
hubs.notify_opened(result.fileno())
__opening = False
return result
return result

View File

@ -96,6 +96,8 @@ def waitpid(pid, options):
greenthread.sleep(0.01)
__original_open__ = os_orig.open
def open(file, flags, mode=0o777):
""" Wrap os.open
This behaves identically, but collaborates with

View File

@ -58,7 +58,7 @@ class GreenSSLSocket(_original_sslsocket):
# nonblocking socket handshaking on connect got disabled so let's pretend it's disabled
# even when it's on
super(GreenSSLSocket, self).__init__(
sock.fd, keyfile, certfile, server_side,cert_reqs, ssl_version,
sock.fd, keyfile, certfile, server_side, cert_reqs, ssl_version,
ca_certs, do_handshake_on_connect and six.PY2, *args, **kw)
# the superclass initializer trashes the methods so we remove
@ -208,17 +208,20 @@ class GreenSSLSocket(_original_sslsocket):
def recv_into(self, buffer, nbytes=None, flags=0):
if not self.act_non_blocking:
trampoline(self, read=True, timeout=self.gettimeout(), timeout_exc=timeout_exc('timed out'))
trampoline(self, read=True, timeout=self.gettimeout(),
timeout_exc=timeout_exc('timed out'))
return super(GreenSSLSocket, self).recv_into(buffer, nbytes, flags)
def recvfrom(self, addr, buflen=1024, flags=0):
if not self.act_non_blocking:
trampoline(self, read=True, timeout=self.gettimeout(), timeout_exc=timeout_exc('timed out'))
trampoline(self, read=True, timeout=self.gettimeout(),
timeout_exc=timeout_exc('timed out'))
return super(GreenSSLSocket, self).recvfrom(addr, buflen, flags)
def recvfrom_into(self, buffer, nbytes=None, flags=0):
if not self.act_non_blocking:
trampoline(self, read=True, timeout=self.gettimeout(), timeout_exc=timeout_exc('timed out'))
trampoline(self, read=True, timeout=self.gettimeout(),
timeout_exc=timeout_exc('timed out'))
return super(GreenSSLSocket, self).recvfrom_into(buffer, nbytes, flags)
def unwrap(self):

View File

@ -74,6 +74,7 @@ if hasattr(__thread, 'stack_size'):
return __original_stack_size__(size)
else:
pass
# not going to decrease stack_size, because otherwise other greenlets in this thread will suffer
# not going to decrease stack_size, because otherwise other greenlets in
# this thread will suffer
from eventlet.corolocal import local as _local

View File

@ -191,8 +191,8 @@ class GreenSocket(object):
raise IOClosed()
try:
return trampoline(fd, read=read, write=write, timeout=timeout,
timeout_exc=timeout_exc,
mark_as_closed=self._mark_as_closed)
timeout_exc=timeout_exc,
mark_as_closed=self._mark_as_closed)
except IOClosed:
# This socket's been obsoleted. De-fang it.
self._mark_as_closed()
@ -209,7 +209,7 @@ class GreenSocket(object):
set_nonblocking(client)
return type(self)(client), addr
self._trampoline(fd, read=True, timeout=self.gettimeout(),
timeout_exc=socket.timeout("timed out"))
timeout_exc=socket.timeout("timed out"))
def _mark_as_closed(self):
""" Mark this socket as being closed """
@ -243,7 +243,7 @@ class GreenSocket(object):
raise socket.timeout("timed out")
try:
self._trampoline(fd, write=True, timeout=end - time.time(),
timeout_exc=socket.timeout("timed out"))
timeout_exc=socket.timeout("timed out"))
except IOClosed:
# ... we need some workable errno here.
raise socket.error(errno.EBADFD)
@ -271,7 +271,7 @@ class GreenSocket(object):
if time.time() >= end:
raise socket.timeout(errno.EAGAIN)
self._trampoline(fd, write=True, timeout=end - time.time(),
timeout_exc=socket.timeout(errno.EAGAIN))
timeout_exc=socket.timeout(errno.EAGAIN))
socket_checkerr(fd)
except socket.error as ex:
return get_errno(ex)
@ -327,19 +327,19 @@ class GreenSocket(object):
def recvfrom(self, *args):
if not self.act_non_blocking:
self._trampoline(self.fd, read=True, timeout=self.gettimeout(),
timeout_exc=socket.timeout("timed out"))
timeout_exc=socket.timeout("timed out"))
return self.fd.recvfrom(*args)
def recvfrom_into(self, *args):
if not self.act_non_blocking:
self._trampoline(self.fd, read=True, timeout=self.gettimeout(),
timeout_exc=socket.timeout("timed out"))
timeout_exc=socket.timeout("timed out"))
return self.fd.recvfrom_into(*args)
def recv_into(self, *args):
if not self.act_non_blocking:
self._trampoline(self.fd, read=True, timeout=self.gettimeout(),
timeout_exc=socket.timeout("timed out"))
timeout_exc=socket.timeout("timed out"))
return self.fd.recv_into(*args)
def send(self, data, flags=0):
@ -362,7 +362,7 @@ class GreenSocket(object):
try:
self._trampoline(self.fd, write=True, timeout=self.gettimeout(),
timeout_exc=socket.timeout("timed out"))
timeout_exc=socket.timeout("timed out"))
except IOClosed:
raise socket.error(errno.ECONNRESET, 'Connection closed by another thread')
@ -432,8 +432,8 @@ class _SocketDuckForFd(object):
raise IOClosed()
try:
return trampoline(fd, read=read, write=write, timeout=timeout,
timeout_exc=timeout_exc,
mark_as_closed=self._mark_as_closed)
timeout_exc=timeout_exc,
mark_as_closed=self._mark_as_closed)
except IOClosed:
# Our fileno has been obsoleted. Defang ourselves to
# prevent spurious closes.

View File

@ -8,7 +8,8 @@ from eventlet.hubs import timer
from eventlet.support import greenlets as greenlet, six
import warnings
__all__ = ['getcurrent', 'sleep', 'spawn', 'spawn_n', 'spawn_after', 'spawn_after_local', 'GreenThread']
__all__ = ['getcurrent', 'sleep', 'spawn', 'spawn_n',
'spawn_after', 'spawn_after_local', 'GreenThread']
getcurrent = greenlet.getcurrent

View File

@ -120,7 +120,7 @@ from eventlet import timeout
def trampoline(fd, read=None, write=None, timeout=None,
timeout_exc=timeout.Timeout,
mark_as_closed = None):
mark_as_closed=None):
"""Suspend the current coroutine until the given socket object or file
descriptor is ready to *read*, ready to *write*, or the specified
*timeout* elapses, depending on arguments specified.
@ -163,6 +163,7 @@ def trampoline(fd, read=None, write=None, timeout=None,
if t is not None:
t.cancel()
def notify_close(fd):
"""
A particular file descriptor has been explicitly closed. Register for any
@ -171,6 +172,7 @@ def notify_close(fd):
hub = get_hub()
hub.notify_close(fd)
def notify_opened(fd):
"""
Some file descriptors may be closed 'silently' - that is, by the garbage

View File

@ -173,7 +173,7 @@ class BaseHub(object):
"If you do know what you're doing and want to disable "
"this error, call "
"eventlet.debug.hub_prevent_multiple_readers(False) - MY THREAD=%s; THAT THREAD=%s" % (
evtype, fileno, evtype, cb, bucket[fileno]))
evtype, fileno, evtype, cb, bucket[fileno]))
# store off the second listener in another structure
self.secondaries[evtype].setdefault(fileno, []).append(listener)
else:
@ -365,7 +365,8 @@ class BaseHub(object):
if self.running:
self.stopping = True
if wait:
assert self.greenlet is not greenlet.getcurrent(), "Can't abort with wait from inside the hub's greenlet."
assert self.greenlet is not greenlet.getcurrent(
), "Can't abort with wait from inside the hub's greenlet."
# schedule an immediate timer just so the hub doesn't sleep
self.schedule_call_global(0, lambda: None)
# switch to it; when done the hub will switch back to its parent,

View File

@ -88,7 +88,8 @@ class Hub(BaseHub):
def abort(self, wait=True):
self.schedule_call_global(0, self.greenlet.throw, greenlet.GreenletExit)
if wait:
assert self.greenlet is not greenlet.getcurrent(), "Can't abort with wait from inside the hub's greenlet."
assert self.greenlet is not greenlet.getcurrent(
), "Can't abort with wait from inside the hub's greenlet."
self.switch()
def _getrunning(self):

View File

@ -38,7 +38,7 @@ def callLater(DelayedCallClass, reactor, _seconds, _f, *args, **kw):
if not isinstance(_seconds, (int, long, float)):
raise TypeError("Seconds must be int, long, or float, was " + type(_seconds))
assert sys.maxint >= _seconds >= 0, \
"%s is not greater than or equal to 0 seconds" % (_seconds,)
"%s is not greater than or equal to 0 seconds" % (_seconds,)
tple = DelayedCallClass(reactor.seconds() + _seconds, _f, args, kw,
reactor._cancelCallLater,
reactor._moveCallLaterSooner,
@ -109,11 +109,11 @@ class BaseTwistedHub(object):
def switch(self):
assert greenlet.getcurrent() is not self.greenlet, \
"Cannot switch from MAINLOOP to MAINLOOP"
"Cannot switch from MAINLOOP to MAINLOOP"
try:
greenlet.getcurrent().parent = self.greenlet
greenlet.getcurrent().parent = self.greenlet
except ValueError:
pass
pass
return self.greenlet.switch()
def stop(self):
@ -197,17 +197,17 @@ class TwistedHub(BaseTwistedHub):
def __init__(self):
assert Hub.state == 0, ('%s hub can only be instantiated once' % type(self).__name__,
Hub.state)
Hub.state)
Hub.state = 1
make_twisted_threadpool_daemonic() # otherwise the program
# would hang after the main
# greenlet exited
# would hang after the main
# greenlet exited
g = greenlet.greenlet(self.run)
BaseTwistedHub.__init__(self, g)
def switch(self):
assert greenlet.getcurrent() is not self.greenlet, \
"Cannot switch from MAINLOOP to MAINLOOP"
"Cannot switch from MAINLOOP to MAINLOOP"
if self.greenlet.dead:
self.greenlet = greenlet.greenlet(self.run)
try:

View File

@ -70,7 +70,7 @@ def inject(module_name, new_globals, *additional_modules):
_green_socket_modules() +
_green_thread_modules() +
_green_time_modules())
# _green_MySQLdb()) # enable this after a short baking-in period
# _green_MySQLdb()) # enable this after a short baking-in period
# after this we are gonna screw with sys.modules, so capture the
# state of all the modules we're going to mess with, and lock

View File

@ -108,7 +108,8 @@ class Waiter(object):
"""Wake up the greenlet that is calling wait() currently (if there is one).
Can only be called from Hub's greenlet.
"""
assert getcurrent() is get_hub().greenlet, "Can only use Waiter.switch method from the mainloop"
assert getcurrent() is get_hub(
).greenlet, "Can only use Waiter.switch method from the mainloop"
if self.greenlet is not None:
try:
self.greenlet.switch(value)
@ -119,7 +120,8 @@ class Waiter(object):
"""Make greenlet calling wait() wake up (if there is a wait()).
Can only be called from Hub's greenlet.
"""
assert getcurrent() is get_hub().greenlet, "Can only use Waiter.switch method from the mainloop"
assert getcurrent() is get_hub(
).greenlet, "Can only use Waiter.switch method from the mainloop"
if self.greenlet is not None:
try:
self.greenlet.throw(*throw_args)
@ -335,7 +337,8 @@ class LightQueue(object):
getter = self.getters.pop()
if getter:
item = putter.item
putter.item = _NONE # this makes greenlet calling put() not to call _put() again
# this makes greenlet calling put() not to call _put() again
putter.item = _NONE
self._put(item)
item = self._get()
getter.switch(item)

View File

@ -228,7 +228,7 @@ def getnameinfo(sockaddr, flags):
except (ValueError, TypeError):
if not isinstance(sockaddr, tuple):
del sockaddr # to pass a stdlib test that is
# hyper-careful about reference counts
# hyper-careful about reference counts
raise TypeError('getnameinfo() argument 1 must be a tuple')
else:
# must be ipv6 sockaddr, pretending we don't know how to resolve it

View File

@ -5,7 +5,7 @@ try:
getcurrent = greenlet.greenlet.getcurrent
GreenletExit = greenlet.greenlet.GreenletExit
preserves_excinfo = (distutils.version.LooseVersion(greenlet.__version__)
>= distutils.version.LooseVersion('0.3.2'))
>= distutils.version.LooseVersion('0.3.2'))
greenlet = greenlet.greenlet
except ImportError as e:
raise

View File

@ -262,7 +262,8 @@ del attr
Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes
sys.modules[__name__ + ".moves.urllib_parse"] = sys.modules[__name__ + ".moves.urllib.parse"] = Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse")
sys.modules[__name__ + ".moves.urllib_parse"] = sys.modules[__name__ +
".moves.urllib.parse"] = Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse")
class Module_six_moves_urllib_error(_LazyModule):
@ -280,7 +281,8 @@ del attr
Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes
sys.modules[__name__ + ".moves.urllib_error"] = sys.modules[__name__ + ".moves.urllib.error"] = Module_six_moves_urllib_error(__name__ + ".moves.urllib.error")
sys.modules[__name__ + ".moves.urllib_error"] = sys.modules[__name__ +
".moves.urllib.error"] = Module_six_moves_urllib_error(__name__ + ".moves.urllib.error")
class Module_six_moves_urllib_request(_LazyModule):
@ -328,7 +330,8 @@ del attr
Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes
sys.modules[__name__ + ".moves.urllib_request"] = sys.modules[__name__ + ".moves.urllib.request"] = Module_six_moves_urllib_request(__name__ + ".moves.urllib.request")
sys.modules[__name__ + ".moves.urllib_request"] = sys.modules[__name__ +
".moves.urllib.request"] = Module_six_moves_urllib_request(__name__ + ".moves.urllib.request")
class Module_six_moves_urllib_response(_LazyModule):
@ -347,7 +350,8 @@ del attr
Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes
sys.modules[__name__ + ".moves.urllib_response"] = sys.modules[__name__ + ".moves.urllib.response"] = Module_six_moves_urllib_response(__name__ + ".moves.urllib.response")
sys.modules[__name__ + ".moves.urllib_response"] = sys.modules[__name__ +
".moves.urllib.response"] = Module_six_moves_urllib_response(__name__ + ".moves.urllib.response")
class Module_six_moves_urllib_robotparser(_LazyModule):
@ -363,7 +367,8 @@ del attr
Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes
sys.modules[__name__ + ".moves.urllib_robotparser"] = sys.modules[__name__ + ".moves.urllib.robotparser"] = Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser")
sys.modules[__name__ + ".moves.urllib_robotparser"] = sys.modules[__name__ +
".moves.urllib.robotparser"] = Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser")
class Module_six_moves_urllib(types.ModuleType):
@ -574,8 +579,8 @@ if print_ is None:
data = str(data)
# If the file has an encoding, encode unicode with it.
if (isinstance(fp, file) and
isinstance(data, unicode) and
fp.encoding is not None):
isinstance(data, unicode) and
fp.encoding is not None):
errors = getattr(fp, "errors", None)
if errors is None:
errors = "strict"

View File

@ -1,6 +1,7 @@
from eventlet.hubs import get_hub
from eventlet import spawn, getcurrent
def block_on(deferred):
cur = [getcurrent()]
synchronous = []
@ -28,6 +29,7 @@ def block_on(deferred):
finally:
del cur[0]
def _putResultInDeferred(deferred, f, args, kwargs):
try:
result = f(*args, **kwargs)
@ -38,17 +40,19 @@ def _putResultInDeferred(deferred, f, args, kwargs):
else:
deferred.callback(result)
def deferToGreenThread(func, *args, **kwargs):
from twisted.internet import defer
d = defer.Deferred()
spawn(_putResultInDeferred, d, func, args, kwargs)
return d
def callInGreenThread(func, *args, **kwargs):
return spawn(func, *args, **kwargs)
if __name__=='__main__':
if __name__ == '__main__':
import sys
try:
num = int(sys.argv[1])
@ -58,21 +62,20 @@ if __name__=='__main__':
def test():
print(block_on(reactor.resolver.getHostByName('www.google.com')))
print(block_on(reactor.resolver.getHostByName('###')))
if num==0:
if num == 0:
test()
elif num==1:
elif num == 1:
spawn(test)
from eventlet import sleep
print('sleeping..')
sleep(5)
print('done sleeping..')
elif num==2:
elif num == 2:
from eventlet.twistedutil import join_reactor
spawn(test)
reactor.run()
elif num==3:
elif num == 3:
from eventlet.twistedutil import join_reactor
print("fails because it's impossible to use block_on from the mainloop")
reactor.callLater(0, test)
reactor.run()

View File

@ -27,7 +27,7 @@ class ValueQueue(Queue):
Queue and it is an exception, raise it, but keep it in the Queue, so
that future calls to wait() will raise it again.
"""
if self.has_error() and len(self.items)==1:
if self.has_error() and len(self.items) == 1:
# the last item, which is an exception, raise without emptying the Queue
getcurrent().throw(*self.items[0][1])
else:
@ -49,6 +49,7 @@ class Event(BaseEvent):
self.reset()
return BaseEvent.send_exception(self, *throw_args)
class Producer2Event(object):
# implements IPullProducer
@ -117,7 +118,7 @@ class GreenTransportBase(object):
self._disconnected_event.wait()
def __getattr__(self, item):
if item=='transport':
if item == 'transport':
raise AttributeError(item)
if hasattr(self, 'transport'):
try:
@ -131,12 +132,12 @@ class GreenTransportBase(object):
def resumeProducing(self):
self.paused -= 1
if self.paused==0:
if self.paused == 0:
self.transport.resumeProducing()
def pauseProducing(self):
self.paused += 1
if self.paused==1:
if self.paused == 1:
self.transport.pauseProducing()
def _init_transport_producer(self):
@ -229,7 +230,7 @@ class GreenTransport(GreenTransportBase):
except:
if not self._disconnected_event.has_exception():
raise
if size>=0:
if size >= 0:
result, self._buffer = self._buffer[:size], self._buffer[size:]
else:
result, self._buffer = self._buffer, ''
@ -247,7 +248,7 @@ class GreenTransport(GreenTransportBase):
try:
try:
recvd = self._wait()
#print 'received %r' % recvd
# print 'received %r' % recvd
self._buffer += recvd
except ConnectionDone:
pass
@ -411,4 +412,3 @@ class SpawnFactory(SimpleSpawnFactory):
for g in self.greenlets:
results.append(g.wait())
return results

View File

@ -38,4 +38,3 @@ class LineOnlyReceiverTransport(GreenTransportBase):
return self.readline()
except ConnectionDone:
raise StopIteration

View File

@ -16,11 +16,11 @@ conn.loseWriteConnection()
print(conn.read())
# read from SSL connection line by line
conn = GreenClientCreator(reactor, LineOnlyReceiverTransport).connectSSL('sf.net', 443, ssl.ClientContextFactory())
conn = GreenClientCreator(reactor, LineOnlyReceiverTransport).connectSSL(
'sf.net', 443, ssl.ClientContextFactory())
conn.write('GET / HTTP/1.0\r\n\r\n')
try:
for num, line in enumerate(conn):
print('%3s %r' % (num, line))
except ConnectionClosed as ex:
print(ex)

View File

@ -17,6 +17,7 @@ from eventlet.twistedutil import deferToGreenThread
from eventlet.twistedutil import join_reactor
from eventlet.green import httplib
class LineOnlyReceiver(basic.LineOnlyReceiver):
def connectionMade(self):
@ -31,7 +32,7 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
def requestReceived(self, lines):
request = re.match('^(\w+) http://(.*?)(/.*?) HTTP/1..$', lines[0])
#print request.groups()
# print request.groups()
method, host, path = request.groups()
headers = dict(x.split(': ', 1) for x in lines[1:])
def callback(result):
@ -43,6 +44,7 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
d = deferToGreenThread(http_request, method, host, path, headers=headers)
d.addCallbacks(callback, errback)
def http_request(method, host, path, headers):
conn = httplib.HTTPConnection(host)
conn.request(method, path, headers=headers)
@ -51,6 +53,7 @@ def http_request(method, host, path, headers):
print(method, host, path, response.status, response.reason, len(body))
return format_response(response, body)
def format_response(response, body):
result = "HTTP/1.1 %s %s" % (response.status, response.reason)
for k, v in response.getheaders():
@ -61,6 +64,7 @@ def format_response(response, body):
result += '\r\n'
return result
class MyFactory(Factory):
protocol = LineOnlyReceiver

View File

@ -6,6 +6,7 @@ from eventlet.twistedutil import join_reactor
from eventlet.twistedutil.protocol import GreenClientCreator, SpawnFactory, UnbufferedTransport
from eventlet import proc
def forward(source, dest):
try:
while True:
@ -17,6 +18,7 @@ def forward(source, dest):
finally:
dest.loseConnection()
def handler(local):
client = str(local.getHost())
print('accepted connection from %s' % client)

View File

@ -9,6 +9,7 @@ from eventlet.twistedutil import join_reactor
from eventlet.twistedutil.protocol import SpawnFactory
from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
class Chat:
def __init__(self):
@ -39,4 +40,3 @@ chat = Chat()
from twisted.internet import reactor
reactor.listenTCP(8007, SpawnFactory(chat.handler, LineOnlyReceiverTransport))
reactor.run()

View File

@ -5,11 +5,13 @@ from gnutls.interfaces.twisted import X509Credentials
from eventlet.twistedutil.protocol import GreenClientCreator
from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
class NoisySRVConnector(SRVConnector):
def pickServer(self):
host, port = SRVConnector.pickServer(self)
print('Resolved _%s._%s.%s --> %s:%s' % (self.service, self.protocol, self.domain, host, port))
print('Resolved _%s._%s.%s --> %s:%s' %
(self.service, self.protocol, self.domain, host, port))
return host, port
cred = X509Credentials(None, None)

View File

@ -7,6 +7,7 @@ from xcaplib.green import XCAPClient
from eventlet.twistedutil import deferToGreenThread
from eventlet.twistedutil import join_reactor
class LineOnlyReceiver(basic.LineOnlyReceiver):
def lineReceived(self, line):
@ -14,8 +15,8 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
if not line:
return
app, context, node = (line + ' ').split(' ', 3)
context = {'u' : 'users', 'g': 'global'}.get(context, context)
d = deferToGreenThread(client._get, app, node, globaltree=context=='global')
context = {'u': 'users', 'g': 'global'}.get(context, context)
d = deferToGreenThread(client._get, app, node, globaltree=context == 'global')
def callback(result):
self.transport.write(str(result))
def errback(error):
@ -23,6 +24,7 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
d.addCallback(callback)
d.addErrback(errback)
class MyFactory(Factory):
protocol = LineOnlyReceiver

View File

@ -220,7 +220,8 @@ def verify_hub_empty():
num_readers = len(hub.get_readers())
num_writers = len(hub.get_writers())
num_timers = hub.get_timers_count()
assert num_readers == 0 and num_writers == 0, "Readers: %s Writers: %s" % (num_readers, num_writers)
assert num_readers == 0 and num_writers == 0, "Readers: %s Writers: %s" % (
num_readers, num_writers)
def find_command(command):

View File

@ -6,15 +6,15 @@ import os
__test__ = False
_proc_status = '/proc/%d/status' % os.getpid()
_scale = {'kB': 1024.0, 'mB': 1024.0*1024.0,
'KB': 1024.0, 'MB': 1024.0*1024.0}
_scale = {'kB': 1024.0, 'mB': 1024.0 * 1024.0,
'KB': 1024.0, 'MB': 1024.0 * 1024.0}
def _VmB(VmKey):
'''Private.
'''
global _proc_status, _scale
# get pseudo file /proc/<pid>/status
# get pseudo file /proc/<pid>/status
try:
t = open(_proc_status)
v = t.read()

View File

@ -461,8 +461,8 @@ def _check_and_set_parent(parent, value, name, new_name):
if not _is_instance_mock(value):
return False
if ((value._mock_name or value._mock_new_name) or
(value._mock_parent is not None) or
(value._mock_new_parent is not None)):
(value._mock_parent is not None) or
(value._mock_new_parent is not None)):
return False
_parent = parent
@ -502,10 +502,10 @@ class NonCallableMock(Base):
return instance
def __init__(
self, spec=None, wraps=None, name=None, spec_set=None,
parent=None, _spec_state=None, _new_name='', _new_parent=None,
**kwargs
):
self, spec=None, wraps=None, name=None, spec_set=None,
parent=None, _spec_state=None, _new_name='', _new_parent=None,
**kwargs
):
if _new_parent is None:
_new_parent = parent
@ -768,8 +768,8 @@ class NonCallableMock(Base):
# property setters go through here
return object.__setattr__(self, name, value)
elif (self._spec_set and self._mock_methods is not None and
name not in self._mock_methods and
name not in self.__dict__):
name not in self._mock_methods and
name not in self.__dict__):
raise AttributeError("Mock object has no attribute '%s'" % name)
elif name in _unsupported_magics:
msg = 'Attempting to set unsupported magic method %r.' % name
@ -1018,7 +1018,7 @@ class CallableMixin(Base):
ret_val = self.return_value
if (self._mock_wraps is not None and
self._mock_return_value is DEFAULT):
self._mock_return_value is DEFAULT):
return self._mock_wraps(*args, **kwargs)
if ret_val is DEFAULT:
ret_val = self.return_value
@ -1110,9 +1110,9 @@ class _patch(object):
_active_patches = set()
def __init__(
self, getter, attribute, new, spec, create,
spec_set, autospec, new_callable, kwargs
):
self, getter, attribute, new, spec, create,
spec_set, autospec, new_callable, kwargs
):
if new_callable is not None:
if new is not DEFAULT:
raise ValueError(
@ -1193,7 +1193,7 @@ class _patch(object):
return func(*args, **keywargs)
except:
if (patching not in entered_patchers and
_is_started(patching)):
_is_started(patching)):
# the patcher may have been started, but an exception
# raised whilst entering one of its additional_patchers
entered_patchers.append(patching)
@ -1252,7 +1252,7 @@ class _patch(object):
if spec is not None and autospec is not None:
raise TypeError("Can't specify spec and autospec")
if ((spec is not None or autospec is not None) and
spec_set not in (True, None)):
spec_set not in (True, None)):
raise TypeError("Can't provide explicit spec_set *and* spec or autospec")
original, local = self.get_original()
@ -1301,7 +1301,7 @@ class _patch(object):
# add a name to mocks
if (isinstance(Klass, type) and
issubclass(Klass, NonCallableMock) and self.attribute):
issubclass(Klass, NonCallableMock) and self.attribute):
_kwargs['name'] = self.attribute
_kwargs.update(kwargs)
@ -1314,7 +1314,7 @@ class _patch(object):
if spec_set is not None:
this_spec = spec_set
if (not _is_list(this_spec) and not
_instance_callable(this_spec)):
_instance_callable(this_spec)):
Klass = NonCallableMagicMock
_kwargs.pop('name')
@ -1402,10 +1402,10 @@ def _get_target(target):
def _patch_object(
target, attribute, new=DEFAULT, spec=None,
create=False, spec_set=None, autospec=None,
new_callable=None, **kwargs
):
target, attribute, new=DEFAULT, spec=None,
create=False, spec_set=None, autospec=None,
new_callable=None, **kwargs
):
"""
patch.object(target, attribute, new=DEFAULT, spec=None, create=False,
spec_set=None, autospec=None, new_callable=None, **kwargs)
@ -1479,9 +1479,9 @@ def _patch_multiple(target, spec=None, create=False, spec_set=None,
def patch(
target, new=DEFAULT, spec=None, create=False,
spec_set=None, autospec=None, new_callable=None, **kwargs
):
target, new=DEFAULT, spec=None, create=False,
spec_set=None, autospec=None, new_callable=None, **kwargs
):
"""
`patch` acts as a function decorator, class decorator or a context
manager. Inside the body of the function or with statement, the `target`
@ -1611,7 +1611,7 @@ class _patch_dict(object):
for attr in dir(klass):
attr_value = getattr(klass, attr)
if (attr.startswith(patch.TEST_PREFIX) and
hasattr(attr_value, "__call__")):
hasattr(attr_value, "__call__")):
decorator = _patch_dict(self.in_dict, self.values, self.clear)
decorated = decorator(attr_value)
setattr(klass, attr, decorated)

View File

@ -39,7 +39,8 @@ def parse_unittest_output(s):
num = int(re.search('^Ran (\d+) test.*?$', s, re.M).group(1))
ok = re.search('^OK$', s, re.M)
error, fail, timeout = 0, 0, 0
failed_match = re.search(r'^FAILED \((?:failures=(?P<f>\d+))?,? ?(?:errors=(?P<e>\d+))?\)$', s, re.M)
failed_match = re.search(
r'^FAILED \((?:failures=(?P<f>\d+))?,? ?(?:errors=(?P<e>\d+))?\)$', s, re.M)
ok_match = re.search('^OK$', s, re.M)
if failed_match:
assert not ok_match, (ok_match, s)

View File

@ -218,7 +218,8 @@ class TestQueue(LimitedTestCase):
self.assertEqual(['waiting', 'sending hello', 'hello', 'sending world', 'world'], events)
eventlet.sleep(0)
self.assertEqual(['waiting', 'sending hello', 'hello', 'sending world', 'world', 'sent world'], events)
self.assertEqual(
['waiting', 'sending hello', 'hello', 'sending world', 'world', 'sent world'], events)
def test_channel_waiters(self):
c = eventlet.Queue(0)

View File

@ -9,8 +9,10 @@ patcher.inject(
('urllib2', urllib2))
HandlerTests.test_file = patcher.patch_function(HandlerTests.test_file, ('socket', socket))
HandlerTests.test_cookie_redirect = patcher.patch_function(HandlerTests.test_cookie_redirect, ('urllib2', urllib2))
OpenerDirectorTests.test_badly_named_methods = patcher.patch_function(OpenerDirectorTests.test_badly_named_methods, ('urllib2', urllib2))
HandlerTests.test_cookie_redirect = patcher.patch_function(
HandlerTests.test_cookie_redirect, ('urllib2', urllib2))
OpenerDirectorTests.test_badly_named_methods = patcher.patch_function(
OpenerDirectorTests.test_badly_named_methods, ('urllib2', urllib2))
if __name__ == "__main__":
test_main()

View File

@ -39,4 +39,3 @@ class Test(unittest.TestCase):
if __name__ == '__main__':
unittest.main()