From 19443c4550f7f17ee99329c272b05d9671d3be9b Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Wed, 18 Aug 2010 23:26:49 -0700 Subject: [PATCH] More robust transference of properties from stdlib modules. Also more efficient and cleaner. --- eventlet/green/_socket_nodns.py | 6 +++--- eventlet/green/os.py | 5 ++++- eventlet/green/profile.py | 7 ++++--- eventlet/green/socket.py | 14 ++++---------- eventlet/green/ssl.py | 4 +++- eventlet/green/time.py | 4 +++- 6 files changed, 21 insertions(+), 19 deletions(-) diff --git a/eventlet/green/_socket_nodns.py b/eventlet/green/_socket_nodns.py index b200aea..d650c93 100644 --- a/eventlet/green/_socket_nodns.py +++ b/eventlet/green/_socket_nodns.py @@ -1,10 +1,11 @@ __socket = __import__('socket') -exec "\n".join(["%s = __socket.%s" % (var, var) for var in __socket.__all__]) +globals().update(dict([(var, getattr(__socket, var)) + for var in dir(__socket) + if not var.startswith('__')])) os = __import__('os') import sys import warnings - from eventlet.hubs import get_hub from eventlet.greenio import GreenSocket as socket from eventlet.greenio import SSL as _SSL # for exceptions @@ -13,7 +14,6 @@ from eventlet.greenio import _fileobject __all__ = __socket.__all__ __patched__ = ['fromfd', 'socketpair', 'create_connection', 'ssl', 'socket'] - try: __original_fromfd__ = __socket.fromfd def fromfd(*args): diff --git a/eventlet/green/os.py b/eventlet/green/os.py index cdb0635..7269eaf 100644 --- a/eventlet/green/os.py +++ b/eventlet/green/os.py @@ -8,7 +8,10 @@ from eventlet import greenthread from eventlet import hubs __patched__ = ['fdopen', 'read', 'write', 'wait', 'waitpid'] -exec "\n".join(["%s = os_orig.%s" % (var, var) for var in dir(os_orig)]) +globals().update(dict([(var, getattr(os_orig, var)) + for var in dir(os_orig) + if not var.startswith('__')])) +__all__ = os_orig.__all__ def fdopen(fd, *args, **kw): """fdopen(fd [, mode='r' [, bufsize]]) -> file_object diff --git a/eventlet/green/profile.py b/eventlet/green/profile.py index 28cb77b..344dfe7 100644 --- a/eventlet/green/profile.py +++ b/eventlet/green/profile.py @@ -29,9 +29,10 @@ FIXME: No testcases for this module. """ profile_orig = __import__('profile') - -exec "\n".join(["%s = profile_orig.%s" % (var, var) - for var in profile_orig.__all__]) +globals().update(dict([(var, getattr(profile_orig, var)) + for var in dir(profile_orig) + if not var.startswith('__')])) +__all__ = profile_orig.__all__ import new import sys diff --git a/eventlet/green/socket.py b/eventlet/green/socket.py index 3fbb08e..42f47ac 100644 --- a/eventlet/green/socket.py +++ b/eventlet/green/socket.py @@ -3,16 +3,10 @@ import sys from eventlet.hubs import get_hub __import__('eventlet.green._socket_nodns') __socket = sys.modules['eventlet.green._socket_nodns'] -exec "\n".join(["%s = __socket.%s" % (var, var) for var in __socket.__all__]) -# these are desired but are not in __all__ -_GLOBAL_DEFAULT_TIMEOUT = __socket._GLOBAL_DEFAULT_TIMEOUT -_fileobject = __socket._fileobject -# missing from __all__ because 2.6.1 is still common on Macs -create_connection = __socket.create_connection -try: - ssl = __socket.ssl -except AttributeError: - pass +globals().update(dict([(var, getattr(__socket, var)) + for var in dir(__socket) + if not var.startswith('__')])) + __all__ = __socket.__all__ __patched__ = __socket.__patched__ + ['gethostbyname', 'getaddrinfo'] diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py index fd60ba7..177cf68 100644 --- a/eventlet/green/ssl.py +++ b/eventlet/green/ssl.py @@ -1,6 +1,8 @@ __ssl = __import__('ssl') -exec "\n".join("%s = __ssl.%s" % (attr, attr) for attr in dir(__ssl)) +globals().update(dict([(var, getattr(__ssl, var)) + for var in dir(__ssl) + if not var.startswith('__')])) import sys import errno diff --git a/eventlet/green/time.py b/eventlet/green/time.py index 0a54d3a..b1c23e5 100644 --- a/eventlet/green/time.py +++ b/eventlet/green/time.py @@ -1,5 +1,7 @@ __time = __import__('time') -exec "\n".join("%s = __time.%s" % (var, var) for var in dir(__time)) +globals().update(dict([(var, getattr(__time, var)) + for var in dir(__time) + if not var.startswith('__')])) __patched__ = ['sleep'] from eventlet.greenthread import sleep sleep # silence pyflakes