Reformat with autopep8
This commit is contained in:
@@ -73,7 +73,8 @@ def launch_heavy_threads():
|
|||||||
server_sock.bind(('localhost', 0))
|
server_sock.bind(('localhost', 0))
|
||||||
server_sock.listen(50)
|
server_sock.listen(50)
|
||||||
addr = ('localhost', server_sock.getsockname()[1])
|
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()
|
accepter_thread.start()
|
||||||
threads.append(accepter_thread)
|
threads.append(accepter_thread)
|
||||||
for i in six.moves.range(CONCURRENCY):
|
for i in six.moves.range(CONCURRENCY):
|
||||||
@@ -112,4 +113,5 @@ if __name__ == "__main__":
|
|||||||
print("green:", results[launch_green_threads])
|
print("green:", results[launch_green_threads])
|
||||||
if opts.threading:
|
if opts.threading:
|
||||||
print("threads:", results[launch_heavy_threads])
|
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)
|
||||||
|
|||||||
@@ -127,7 +127,8 @@ except ImportError:
|
|||||||
from eventlet.green.OpenSSL import SSL
|
from eventlet.green.OpenSSL import SSL
|
||||||
except ImportError:
|
except ImportError:
|
||||||
def wrap_ssl_impl(*a, **kw):
|
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:
|
else:
|
||||||
def wrap_ssl_impl(sock, keyfile=None, certfile=None, server_side=False,
|
def wrap_ssl_impl(sock, keyfile=None, certfile=None, server_side=False,
|
||||||
cert_reqs=None, ssl_version=None, ca_certs=None,
|
cert_reqs=None, ssl_version=None, ca_certs=None,
|
||||||
|
|||||||
@@ -317,73 +317,107 @@ class GenericConnectionWrapper(object):
|
|||||||
# setattr(class, name, lambda self, *a, **kw: getattr(self._base, name)(*a, **kw))
|
# 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)
|
# * def __getattr__(self, name): if name in (...): return getattr(self._base, name)
|
||||||
# * other?
|
# * 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):
|
class PooledConnectionWrapper(GenericConnectionWrapper):
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ slurp_properties(builtins_orig, globals(),
|
|||||||
hubs.get_hub()
|
hubs.get_hub()
|
||||||
|
|
||||||
__original_file = file
|
__original_file = file
|
||||||
|
|
||||||
|
|
||||||
class file(__original_file):
|
class file(__original_file):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(file, self).__init__(*args, **kwargs)
|
super(file, self).__init__(*args, **kwargs)
|
||||||
@@ -30,6 +32,8 @@ class file(__original_file):
|
|||||||
|
|
||||||
__original_open = open
|
__original_open = open
|
||||||
__opening = False
|
__opening = False
|
||||||
|
|
||||||
|
|
||||||
def open(*args):
|
def open(*args):
|
||||||
global __opening
|
global __opening
|
||||||
result = __original_open(*args)
|
result = __original_open(*args)
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ def waitpid(pid, options):
|
|||||||
greenthread.sleep(0.01)
|
greenthread.sleep(0.01)
|
||||||
|
|
||||||
__original_open__ = os_orig.open
|
__original_open__ = os_orig.open
|
||||||
|
|
||||||
|
|
||||||
def open(file, flags, mode=0o777):
|
def open(file, flags, mode=0o777):
|
||||||
""" Wrap os.open
|
""" Wrap os.open
|
||||||
This behaves identically, but collaborates with
|
This behaves identically, but collaborates with
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class GreenSSLSocket(_original_sslsocket):
|
|||||||
# nonblocking socket handshaking on connect got disabled so let's pretend it's disabled
|
# nonblocking socket handshaking on connect got disabled so let's pretend it's disabled
|
||||||
# even when it's on
|
# even when it's on
|
||||||
super(GreenSSLSocket, self).__init__(
|
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)
|
ca_certs, do_handshake_on_connect and six.PY2, *args, **kw)
|
||||||
|
|
||||||
# the superclass initializer trashes the methods so we remove
|
# 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):
|
def recv_into(self, buffer, nbytes=None, flags=0):
|
||||||
if not self.act_non_blocking:
|
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)
|
return super(GreenSSLSocket, self).recv_into(buffer, nbytes, flags)
|
||||||
|
|
||||||
def recvfrom(self, addr, buflen=1024, flags=0):
|
def recvfrom(self, addr, buflen=1024, flags=0):
|
||||||
if not self.act_non_blocking:
|
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)
|
return super(GreenSSLSocket, self).recvfrom(addr, buflen, flags)
|
||||||
|
|
||||||
def recvfrom_into(self, buffer, nbytes=None, flags=0):
|
def recvfrom_into(self, buffer, nbytes=None, flags=0):
|
||||||
if not self.act_non_blocking:
|
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)
|
return super(GreenSSLSocket, self).recvfrom_into(buffer, nbytes, flags)
|
||||||
|
|
||||||
def unwrap(self):
|
def unwrap(self):
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ if hasattr(__thread, 'stack_size'):
|
|||||||
return __original_stack_size__(size)
|
return __original_stack_size__(size)
|
||||||
else:
|
else:
|
||||||
pass
|
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
|
from eventlet.corolocal import local as _local
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ from eventlet.hubs import timer
|
|||||||
from eventlet.support import greenlets as greenlet, six
|
from eventlet.support import greenlets as greenlet, six
|
||||||
import warnings
|
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
|
getcurrent = greenlet.getcurrent
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ from eventlet import timeout
|
|||||||
|
|
||||||
def trampoline(fd, read=None, write=None, timeout=None,
|
def trampoline(fd, read=None, write=None, timeout=None,
|
||||||
timeout_exc=timeout.Timeout,
|
timeout_exc=timeout.Timeout,
|
||||||
mark_as_closed = None):
|
mark_as_closed=None):
|
||||||
"""Suspend the current coroutine until the given socket object or file
|
"""Suspend the current coroutine until the given socket object or file
|
||||||
descriptor is ready to *read*, ready to *write*, or the specified
|
descriptor is ready to *read*, ready to *write*, or the specified
|
||||||
*timeout* elapses, depending on arguments 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:
|
if t is not None:
|
||||||
t.cancel()
|
t.cancel()
|
||||||
|
|
||||||
|
|
||||||
def notify_close(fd):
|
def notify_close(fd):
|
||||||
"""
|
"""
|
||||||
A particular file descriptor has been explicitly closed. Register for any
|
A particular file descriptor has been explicitly closed. Register for any
|
||||||
@@ -171,6 +172,7 @@ def notify_close(fd):
|
|||||||
hub = get_hub()
|
hub = get_hub()
|
||||||
hub.notify_close(fd)
|
hub.notify_close(fd)
|
||||||
|
|
||||||
|
|
||||||
def notify_opened(fd):
|
def notify_opened(fd):
|
||||||
"""
|
"""
|
||||||
Some file descriptors may be closed 'silently' - that is, by the garbage
|
Some file descriptors may be closed 'silently' - that is, by the garbage
|
||||||
|
|||||||
@@ -365,7 +365,8 @@ class BaseHub(object):
|
|||||||
if self.running:
|
if self.running:
|
||||||
self.stopping = True
|
self.stopping = True
|
||||||
if wait:
|
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
|
# schedule an immediate timer just so the hub doesn't sleep
|
||||||
self.schedule_call_global(0, lambda: None)
|
self.schedule_call_global(0, lambda: None)
|
||||||
# switch to it; when done the hub will switch back to its parent,
|
# switch to it; when done the hub will switch back to its parent,
|
||||||
|
|||||||
@@ -88,7 +88,8 @@ class Hub(BaseHub):
|
|||||||
def abort(self, wait=True):
|
def abort(self, wait=True):
|
||||||
self.schedule_call_global(0, self.greenlet.throw, greenlet.GreenletExit)
|
self.schedule_call_global(0, self.greenlet.throw, greenlet.GreenletExit)
|
||||||
if wait:
|
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()
|
self.switch()
|
||||||
|
|
||||||
def _getrunning(self):
|
def _getrunning(self):
|
||||||
|
|||||||
@@ -108,7 +108,8 @@ class Waiter(object):
|
|||||||
"""Wake up the greenlet that is calling wait() currently (if there is one).
|
"""Wake up the greenlet that is calling wait() currently (if there is one).
|
||||||
Can only be called from Hub's greenlet.
|
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:
|
if self.greenlet is not None:
|
||||||
try:
|
try:
|
||||||
self.greenlet.switch(value)
|
self.greenlet.switch(value)
|
||||||
@@ -119,7 +120,8 @@ class Waiter(object):
|
|||||||
"""Make greenlet calling wait() wake up (if there is a wait()).
|
"""Make greenlet calling wait() wake up (if there is a wait()).
|
||||||
Can only be called from Hub's greenlet.
|
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:
|
if self.greenlet is not None:
|
||||||
try:
|
try:
|
||||||
self.greenlet.throw(*throw_args)
|
self.greenlet.throw(*throw_args)
|
||||||
@@ -335,7 +337,8 @@ class LightQueue(object):
|
|||||||
getter = self.getters.pop()
|
getter = self.getters.pop()
|
||||||
if getter:
|
if getter:
|
||||||
item = putter.item
|
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)
|
self._put(item)
|
||||||
item = self._get()
|
item = self._get()
|
||||||
getter.switch(item)
|
getter.switch(item)
|
||||||
|
|||||||
@@ -262,7 +262,8 @@ del attr
|
|||||||
|
|
||||||
Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes
|
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):
|
class Module_six_moves_urllib_error(_LazyModule):
|
||||||
@@ -280,7 +281,8 @@ del attr
|
|||||||
|
|
||||||
Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes
|
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):
|
class Module_six_moves_urllib_request(_LazyModule):
|
||||||
@@ -328,7 +330,8 @@ del attr
|
|||||||
|
|
||||||
Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes
|
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):
|
class Module_six_moves_urllib_response(_LazyModule):
|
||||||
@@ -347,7 +350,8 @@ del attr
|
|||||||
|
|
||||||
Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes
|
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):
|
class Module_six_moves_urllib_robotparser(_LazyModule):
|
||||||
@@ -363,7 +367,8 @@ del attr
|
|||||||
|
|
||||||
Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes
|
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):
|
class Module_six_moves_urllib(types.ModuleType):
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from eventlet.hubs import get_hub
|
from eventlet.hubs import get_hub
|
||||||
from eventlet import spawn, getcurrent
|
from eventlet import spawn, getcurrent
|
||||||
|
|
||||||
|
|
||||||
def block_on(deferred):
|
def block_on(deferred):
|
||||||
cur = [getcurrent()]
|
cur = [getcurrent()]
|
||||||
synchronous = []
|
synchronous = []
|
||||||
@@ -28,6 +29,7 @@ def block_on(deferred):
|
|||||||
finally:
|
finally:
|
||||||
del cur[0]
|
del cur[0]
|
||||||
|
|
||||||
|
|
||||||
def _putResultInDeferred(deferred, f, args, kwargs):
|
def _putResultInDeferred(deferred, f, args, kwargs):
|
||||||
try:
|
try:
|
||||||
result = f(*args, **kwargs)
|
result = f(*args, **kwargs)
|
||||||
@@ -38,17 +40,19 @@ def _putResultInDeferred(deferred, f, args, kwargs):
|
|||||||
else:
|
else:
|
||||||
deferred.callback(result)
|
deferred.callback(result)
|
||||||
|
|
||||||
|
|
||||||
def deferToGreenThread(func, *args, **kwargs):
|
def deferToGreenThread(func, *args, **kwargs):
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
d = defer.Deferred()
|
d = defer.Deferred()
|
||||||
spawn(_putResultInDeferred, d, func, args, kwargs)
|
spawn(_putResultInDeferred, d, func, args, kwargs)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
def callInGreenThread(func, *args, **kwargs):
|
def callInGreenThread(func, *args, **kwargs):
|
||||||
return spawn(func, *args, **kwargs)
|
return spawn(func, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
if __name__=='__main__':
|
if __name__ == '__main__':
|
||||||
import sys
|
import sys
|
||||||
try:
|
try:
|
||||||
num = int(sys.argv[1])
|
num = int(sys.argv[1])
|
||||||
@@ -58,21 +62,20 @@ if __name__=='__main__':
|
|||||||
def test():
|
def test():
|
||||||
print(block_on(reactor.resolver.getHostByName('www.google.com')))
|
print(block_on(reactor.resolver.getHostByName('www.google.com')))
|
||||||
print(block_on(reactor.resolver.getHostByName('###')))
|
print(block_on(reactor.resolver.getHostByName('###')))
|
||||||
if num==0:
|
if num == 0:
|
||||||
test()
|
test()
|
||||||
elif num==1:
|
elif num == 1:
|
||||||
spawn(test)
|
spawn(test)
|
||||||
from eventlet import sleep
|
from eventlet import sleep
|
||||||
print('sleeping..')
|
print('sleeping..')
|
||||||
sleep(5)
|
sleep(5)
|
||||||
print('done sleeping..')
|
print('done sleeping..')
|
||||||
elif num==2:
|
elif num == 2:
|
||||||
from eventlet.twistedutil import join_reactor
|
from eventlet.twistedutil import join_reactor
|
||||||
spawn(test)
|
spawn(test)
|
||||||
reactor.run()
|
reactor.run()
|
||||||
elif num==3:
|
elif num == 3:
|
||||||
from eventlet.twistedutil import join_reactor
|
from eventlet.twistedutil import join_reactor
|
||||||
print("fails because it's impossible to use block_on from the mainloop")
|
print("fails because it's impossible to use block_on from the mainloop")
|
||||||
reactor.callLater(0, test)
|
reactor.callLater(0, test)
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class ValueQueue(Queue):
|
|||||||
Queue and it is an exception, raise it, but keep it in the Queue, so
|
Queue and it is an exception, raise it, but keep it in the Queue, so
|
||||||
that future calls to wait() will raise it again.
|
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
|
# the last item, which is an exception, raise without emptying the Queue
|
||||||
getcurrent().throw(*self.items[0][1])
|
getcurrent().throw(*self.items[0][1])
|
||||||
else:
|
else:
|
||||||
@@ -49,6 +49,7 @@ class Event(BaseEvent):
|
|||||||
self.reset()
|
self.reset()
|
||||||
return BaseEvent.send_exception(self, *throw_args)
|
return BaseEvent.send_exception(self, *throw_args)
|
||||||
|
|
||||||
|
|
||||||
class Producer2Event(object):
|
class Producer2Event(object):
|
||||||
|
|
||||||
# implements IPullProducer
|
# implements IPullProducer
|
||||||
@@ -117,7 +118,7 @@ class GreenTransportBase(object):
|
|||||||
self._disconnected_event.wait()
|
self._disconnected_event.wait()
|
||||||
|
|
||||||
def __getattr__(self, item):
|
def __getattr__(self, item):
|
||||||
if item=='transport':
|
if item == 'transport':
|
||||||
raise AttributeError(item)
|
raise AttributeError(item)
|
||||||
if hasattr(self, 'transport'):
|
if hasattr(self, 'transport'):
|
||||||
try:
|
try:
|
||||||
@@ -131,12 +132,12 @@ class GreenTransportBase(object):
|
|||||||
|
|
||||||
def resumeProducing(self):
|
def resumeProducing(self):
|
||||||
self.paused -= 1
|
self.paused -= 1
|
||||||
if self.paused==0:
|
if self.paused == 0:
|
||||||
self.transport.resumeProducing()
|
self.transport.resumeProducing()
|
||||||
|
|
||||||
def pauseProducing(self):
|
def pauseProducing(self):
|
||||||
self.paused += 1
|
self.paused += 1
|
||||||
if self.paused==1:
|
if self.paused == 1:
|
||||||
self.transport.pauseProducing()
|
self.transport.pauseProducing()
|
||||||
|
|
||||||
def _init_transport_producer(self):
|
def _init_transport_producer(self):
|
||||||
@@ -229,7 +230,7 @@ class GreenTransport(GreenTransportBase):
|
|||||||
except:
|
except:
|
||||||
if not self._disconnected_event.has_exception():
|
if not self._disconnected_event.has_exception():
|
||||||
raise
|
raise
|
||||||
if size>=0:
|
if size >= 0:
|
||||||
result, self._buffer = self._buffer[:size], self._buffer[size:]
|
result, self._buffer = self._buffer[:size], self._buffer[size:]
|
||||||
else:
|
else:
|
||||||
result, self._buffer = self._buffer, ''
|
result, self._buffer = self._buffer, ''
|
||||||
@@ -247,7 +248,7 @@ class GreenTransport(GreenTransportBase):
|
|||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
recvd = self._wait()
|
recvd = self._wait()
|
||||||
#print 'received %r' % recvd
|
# print 'received %r' % recvd
|
||||||
self._buffer += recvd
|
self._buffer += recvd
|
||||||
except ConnectionDone:
|
except ConnectionDone:
|
||||||
pass
|
pass
|
||||||
@@ -411,4 +412,3 @@ class SpawnFactory(SimpleSpawnFactory):
|
|||||||
for g in self.greenlets:
|
for g in self.greenlets:
|
||||||
results.append(g.wait())
|
results.append(g.wait())
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|||||||
@@ -38,4 +38,3 @@ class LineOnlyReceiverTransport(GreenTransportBase):
|
|||||||
return self.readline()
|
return self.readline()
|
||||||
except ConnectionDone:
|
except ConnectionDone:
|
||||||
raise StopIteration
|
raise StopIteration
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ conn.loseWriteConnection()
|
|||||||
print(conn.read())
|
print(conn.read())
|
||||||
|
|
||||||
# read from SSL connection line by line
|
# 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')
|
conn.write('GET / HTTP/1.0\r\n\r\n')
|
||||||
try:
|
try:
|
||||||
for num, line in enumerate(conn):
|
for num, line in enumerate(conn):
|
||||||
print('%3s %r' % (num, line))
|
print('%3s %r' % (num, line))
|
||||||
except ConnectionClosed as ex:
|
except ConnectionClosed as ex:
|
||||||
print(ex)
|
print(ex)
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from eventlet.twistedutil import deferToGreenThread
|
|||||||
from eventlet.twistedutil import join_reactor
|
from eventlet.twistedutil import join_reactor
|
||||||
from eventlet.green import httplib
|
from eventlet.green import httplib
|
||||||
|
|
||||||
|
|
||||||
class LineOnlyReceiver(basic.LineOnlyReceiver):
|
class LineOnlyReceiver(basic.LineOnlyReceiver):
|
||||||
|
|
||||||
def connectionMade(self):
|
def connectionMade(self):
|
||||||
@@ -31,7 +32,7 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
|
|||||||
|
|
||||||
def requestReceived(self, lines):
|
def requestReceived(self, lines):
|
||||||
request = re.match('^(\w+) http://(.*?)(/.*?) HTTP/1..$', lines[0])
|
request = re.match('^(\w+) http://(.*?)(/.*?) HTTP/1..$', lines[0])
|
||||||
#print request.groups()
|
# print request.groups()
|
||||||
method, host, path = request.groups()
|
method, host, path = request.groups()
|
||||||
headers = dict(x.split(': ', 1) for x in lines[1:])
|
headers = dict(x.split(': ', 1) for x in lines[1:])
|
||||||
def callback(result):
|
def callback(result):
|
||||||
@@ -43,6 +44,7 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
|
|||||||
d = deferToGreenThread(http_request, method, host, path, headers=headers)
|
d = deferToGreenThread(http_request, method, host, path, headers=headers)
|
||||||
d.addCallbacks(callback, errback)
|
d.addCallbacks(callback, errback)
|
||||||
|
|
||||||
|
|
||||||
def http_request(method, host, path, headers):
|
def http_request(method, host, path, headers):
|
||||||
conn = httplib.HTTPConnection(host)
|
conn = httplib.HTTPConnection(host)
|
||||||
conn.request(method, path, headers=headers)
|
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))
|
print(method, host, path, response.status, response.reason, len(body))
|
||||||
return format_response(response, body)
|
return format_response(response, body)
|
||||||
|
|
||||||
|
|
||||||
def format_response(response, body):
|
def format_response(response, body):
|
||||||
result = "HTTP/1.1 %s %s" % (response.status, response.reason)
|
result = "HTTP/1.1 %s %s" % (response.status, response.reason)
|
||||||
for k, v in response.getheaders():
|
for k, v in response.getheaders():
|
||||||
@@ -61,6 +64,7 @@ def format_response(response, body):
|
|||||||
result += '\r\n'
|
result += '\r\n'
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
class MyFactory(Factory):
|
class MyFactory(Factory):
|
||||||
protocol = LineOnlyReceiver
|
protocol = LineOnlyReceiver
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from eventlet.twistedutil import join_reactor
|
|||||||
from eventlet.twistedutil.protocol import GreenClientCreator, SpawnFactory, UnbufferedTransport
|
from eventlet.twistedutil.protocol import GreenClientCreator, SpawnFactory, UnbufferedTransport
|
||||||
from eventlet import proc
|
from eventlet import proc
|
||||||
|
|
||||||
|
|
||||||
def forward(source, dest):
|
def forward(source, dest):
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
@@ -17,6 +18,7 @@ def forward(source, dest):
|
|||||||
finally:
|
finally:
|
||||||
dest.loseConnection()
|
dest.loseConnection()
|
||||||
|
|
||||||
|
|
||||||
def handler(local):
|
def handler(local):
|
||||||
client = str(local.getHost())
|
client = str(local.getHost())
|
||||||
print('accepted connection from %s' % client)
|
print('accepted connection from %s' % client)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from eventlet.twistedutil import join_reactor
|
|||||||
from eventlet.twistedutil.protocol import SpawnFactory
|
from eventlet.twistedutil.protocol import SpawnFactory
|
||||||
from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
|
from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
|
||||||
|
|
||||||
|
|
||||||
class Chat:
|
class Chat:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -39,4 +40,3 @@ chat = Chat()
|
|||||||
from twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
reactor.listenTCP(8007, SpawnFactory(chat.handler, LineOnlyReceiverTransport))
|
reactor.listenTCP(8007, SpawnFactory(chat.handler, LineOnlyReceiverTransport))
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,13 @@ from gnutls.interfaces.twisted import X509Credentials
|
|||||||
from eventlet.twistedutil.protocol import GreenClientCreator
|
from eventlet.twistedutil.protocol import GreenClientCreator
|
||||||
from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
|
from eventlet.twistedutil.protocols.basic import LineOnlyReceiverTransport
|
||||||
|
|
||||||
|
|
||||||
class NoisySRVConnector(SRVConnector):
|
class NoisySRVConnector(SRVConnector):
|
||||||
|
|
||||||
def pickServer(self):
|
def pickServer(self):
|
||||||
host, port = SRVConnector.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
|
return host, port
|
||||||
|
|
||||||
cred = X509Credentials(None, None)
|
cred = X509Credentials(None, None)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from xcaplib.green import XCAPClient
|
|||||||
from eventlet.twistedutil import deferToGreenThread
|
from eventlet.twistedutil import deferToGreenThread
|
||||||
from eventlet.twistedutil import join_reactor
|
from eventlet.twistedutil import join_reactor
|
||||||
|
|
||||||
|
|
||||||
class LineOnlyReceiver(basic.LineOnlyReceiver):
|
class LineOnlyReceiver(basic.LineOnlyReceiver):
|
||||||
|
|
||||||
def lineReceived(self, line):
|
def lineReceived(self, line):
|
||||||
@@ -14,8 +15,8 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
|
|||||||
if not line:
|
if not line:
|
||||||
return
|
return
|
||||||
app, context, node = (line + ' ').split(' ', 3)
|
app, context, node = (line + ' ').split(' ', 3)
|
||||||
context = {'u' : 'users', 'g': 'global'}.get(context, context)
|
context = {'u': 'users', 'g': 'global'}.get(context, context)
|
||||||
d = deferToGreenThread(client._get, app, node, globaltree=context=='global')
|
d = deferToGreenThread(client._get, app, node, globaltree=context == 'global')
|
||||||
def callback(result):
|
def callback(result):
|
||||||
self.transport.write(str(result))
|
self.transport.write(str(result))
|
||||||
def errback(error):
|
def errback(error):
|
||||||
@@ -23,6 +24,7 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
|
|||||||
d.addCallback(callback)
|
d.addCallback(callback)
|
||||||
d.addErrback(errback)
|
d.addErrback(errback)
|
||||||
|
|
||||||
|
|
||||||
class MyFactory(Factory):
|
class MyFactory(Factory):
|
||||||
protocol = LineOnlyReceiver
|
protocol = LineOnlyReceiver
|
||||||
|
|
||||||
|
|||||||
@@ -220,7 +220,8 @@ def verify_hub_empty():
|
|||||||
num_readers = len(hub.get_readers())
|
num_readers = len(hub.get_readers())
|
||||||
num_writers = len(hub.get_writers())
|
num_writers = len(hub.get_writers())
|
||||||
num_timers = hub.get_timers_count()
|
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):
|
def find_command(command):
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import os
|
|||||||
__test__ = False
|
__test__ = False
|
||||||
_proc_status = '/proc/%d/status' % os.getpid()
|
_proc_status = '/proc/%d/status' % os.getpid()
|
||||||
|
|
||||||
_scale = {'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}
|
'KB': 1024.0, 'MB': 1024.0 * 1024.0}
|
||||||
|
|
||||||
|
|
||||||
def _VmB(VmKey):
|
def _VmB(VmKey):
|
||||||
|
|||||||
@@ -1405,7 +1405,7 @@ def _patch_object(
|
|||||||
target, attribute, new=DEFAULT, spec=None,
|
target, attribute, new=DEFAULT, spec=None,
|
||||||
create=False, spec_set=None, autospec=None,
|
create=False, spec_set=None, autospec=None,
|
||||||
new_callable=None, **kwargs
|
new_callable=None, **kwargs
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
patch.object(target, attribute, new=DEFAULT, spec=None, create=False,
|
patch.object(target, attribute, new=DEFAULT, spec=None, create=False,
|
||||||
spec_set=None, autospec=None, new_callable=None, **kwargs)
|
spec_set=None, autospec=None, new_callable=None, **kwargs)
|
||||||
@@ -1481,7 +1481,7 @@ def _patch_multiple(target, spec=None, create=False, spec_set=None,
|
|||||||
def patch(
|
def patch(
|
||||||
target, new=DEFAULT, spec=None, create=False,
|
target, new=DEFAULT, spec=None, create=False,
|
||||||
spec_set=None, autospec=None, new_callable=None, **kwargs
|
spec_set=None, autospec=None, new_callable=None, **kwargs
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
`patch` acts as a function decorator, class decorator or a context
|
`patch` acts as a function decorator, class decorator or a context
|
||||||
manager. Inside the body of the function or with statement, the `target`
|
manager. Inside the body of the function or with statement, the `target`
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ def parse_unittest_output(s):
|
|||||||
num = int(re.search('^Ran (\d+) test.*?$', s, re.M).group(1))
|
num = int(re.search('^Ran (\d+) test.*?$', s, re.M).group(1))
|
||||||
ok = re.search('^OK$', s, re.M)
|
ok = re.search('^OK$', s, re.M)
|
||||||
error, fail, timeout = 0, 0, 0
|
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)
|
ok_match = re.search('^OK$', s, re.M)
|
||||||
if failed_match:
|
if failed_match:
|
||||||
assert not ok_match, (ok_match, s)
|
assert not ok_match, (ok_match, s)
|
||||||
|
|||||||
@@ -218,7 +218,8 @@ class TestQueue(LimitedTestCase):
|
|||||||
|
|
||||||
self.assertEqual(['waiting', 'sending hello', 'hello', 'sending world', 'world'], events)
|
self.assertEqual(['waiting', 'sending hello', 'hello', 'sending world', 'world'], events)
|
||||||
eventlet.sleep(0)
|
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):
|
def test_channel_waiters(self):
|
||||||
c = eventlet.Queue(0)
|
c = eventlet.Queue(0)
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ patcher.inject(
|
|||||||
('urllib2', urllib2))
|
('urllib2', urllib2))
|
||||||
|
|
||||||
HandlerTests.test_file = patcher.patch_function(HandlerTests.test_file, ('socket', socket))
|
HandlerTests.test_file = patcher.patch_function(HandlerTests.test_file, ('socket', socket))
|
||||||
HandlerTests.test_cookie_redirect = patcher.patch_function(HandlerTests.test_cookie_redirect, ('urllib2', urllib2))
|
HandlerTests.test_cookie_redirect = patcher.patch_function(
|
||||||
OpenerDirectorTests.test_badly_named_methods = patcher.patch_function(OpenerDirectorTests.test_badly_named_methods, ('urllib2', urllib2))
|
HandlerTests.test_cookie_redirect, ('urllib2', urllib2))
|
||||||
|
OpenerDirectorTests.test_badly_named_methods = patcher.patch_function(
|
||||||
|
OpenerDirectorTests.test_badly_named_methods, ('urllib2', urllib2))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
test_main()
|
||||||
|
|||||||
@@ -39,4 +39,3 @@ class Test(unittest.TestCase):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user