fix green package not to use absolute_import and otherwise be nice on 2.4

This commit is contained in:
Denis Bilenko
2009-05-19 16:19:05 +07:00
parent 8eba50247f
commit 23d8a30c03
9 changed files with 61 additions and 51 deletions

View File

@@ -1,10 +1,12 @@
from __future__ import absolute_import
import sys
from eventlet.green import socket
from eventlet.green import SocketServer
from BaseHTTPServer import (DEFAULT_ERROR_MESSAGE, _quote_html, __version__, __all__,
BaseHTTPRequestHandler as __BaseHTTPRequestHandler)
__import_lst = ['DEFAULT_ERROR_MESSAGE', '_quote_html', '__version__', '__all__', 'BaseHTTPRequestHandler']
__BaseHTTPServer = __import__('BaseHTTPServer')
for var in __import_lst:
exec "%s = __BaseHTTPServer.%s" % (var, var)
class HTTPServer(SocketServer.TCPServer):
@@ -18,7 +20,7 @@ class HTTPServer(SocketServer.TCPServer):
self.server_port = port
class BaseHTTPRequestHandler(__BaseHTTPRequestHandler):
class BaseHTTPRequestHandler(BaseHTTPRequestHandler):
def address_string(self):
host, port = self.client_address[:2]

View File

@@ -1,13 +1,15 @@
from __future__ import absolute_import
from SocketServer import (__all__, __version__, BaseServer, TCPServer as __TCPServer,
UDPServer as __UDPServer, ForkingMixIn, ThreadingMixIn as __ThreadingMixIn,
BaseRequestHandler, StreamRequestHandler, DatagramRequestHandler)
__import_lst = ['__all__', '__version__', 'BaseServer', 'TCPServer', 'UDPServer', 'ForkingMixIn',
'ThreadingMixIn', 'BaseRequestHandler', 'StreamRequestHandler', 'DatagramRequestHandler']
__SocketServer = __import__('SocketServer')
for var in __import_lst:
exec "%s = __SocketServer.%s" % (var, var)
# QQQ ForkingMixIn should be fixed to use green waitpid?
from eventlet.green import socket
class TCPServer(__TCPServer):
class TCPServer(TCPServer):
def __init__(self, server_address, RequestHandlerClass):
"""Constructor. May be extended, do not override."""
@@ -17,7 +19,7 @@ class TCPServer(__TCPServer):
self.server_bind()
self.server_activate()
class UDPServer(__UDPServer):
class UDPServer(UDPServer):
def __init__(self, server_address, RequestHandlerClass):
"""Constructor. May be extended, do not override."""
@@ -27,7 +29,7 @@ class UDPServer(__UDPServer):
self.server_bind()
self.server_activate()
class ThreadingMixIn(__ThreadingMixIn):
class ThreadingMixIn(ThreadingMixIn):
def process_request(self, request, client_address):
"""Start a new thread to process the request."""

View File

@@ -1,3 +1,5 @@
from __future__ import absolute_import
from select import *
__select = __import__('select')
for var in dir(__select):
exec "%s = __select.%s" % (var, var)
from eventlet.api import select
del poll

View File

@@ -1,7 +1,6 @@
from __future__ import absolute_import
import socket
import socket as __socket
from socket import *
__socket = __import__('socket')
for var in __socket.__all__:
exec "%s = __socket.%s" % (var, var)
_fileobject = __socket._fileobject
from eventlet.api import get_hub

View File

@@ -1,11 +1,10 @@
"""implements standard module 'thread' with greenlets"""
from __future__ import absolute_import
import thread as thread_module
__thread = __import__('thread')
from eventlet.support import greenlets as greenlet
from eventlet.api import spawn
from eventlet.coros import Semaphore as LockType
error = thread_module.error
error = __thread.error
def get_ident(gr=None):
if gr is None:
@@ -23,13 +22,14 @@ def allocate_lock():
def exit():
raise greenlet.GreenletExit
def stack_size(size=None):
if size is None:
return thread_module.stack_size()
if size > thread_module.stack_size():
return thread_module.stack_size(size)
else:
pass
# not going to decrease stack_size, because otherwise other greenlets in this thread will suffer
if hasattr(__thread, 'stack_size'):
def stack_size(size=None):
if size is None:
return __thread.stack_size()
if size > __thread.stack_size():
return __thread.stack_size(size)
else:
pass
# not going to decrease stack_size, because otherwise other greenlets in this thread will suffer
# XXX interrupt_main

View File

@@ -9,7 +9,7 @@ from collections import deque
# Rename some stuff so "from threading import *" is safe
__all__ = ['activeCount', 'Condition', 'currentThread', 'enumerate', 'Event',
'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Thread',
'Timer', 'setprofile', 'settrace', 'local', 'stack_size']
'Timer', 'setprofile', 'settrace', 'local']
_start_new_thread = thread.start_new_thread
_allocate_lock = thread.allocate_lock
@@ -743,7 +743,11 @@ def enumerate():
_active_limbo_lock.release()
return active
from thread import stack_size
try:
from thread import stack_size
__all__.append('stack_size')
except ImportError:
pass
# Create the main thread object,
# and make it available for the interpreter

View File

@@ -1,7 +1,4 @@
from __future__ import absolute_import
from time import *
__time = __import__('time')
for var in dir(__time):
exec "%s = __time.%s" % (var, var)
from eventlet.api import sleep
def _install():
import time
time.sleep = sleep

View File

@@ -1,16 +1,19 @@
from __future__ import absolute_import
import urllib
from urllib import *
urllib = __import__('urllib')
for var in dir(urllib):
exec "%s = urllib.%s" % (var, var)
# import the following to be a better drop-in replacement
from urllib import (__all__, __version__, MAXFTPCACHE, ContentTooShortError,
ftpcache, _noheaders, noheaders, addbase, addclosehook,
addinfo, addinfourl, _is_unicode, toBytes, _hextochr,
always_safe, getproxies_environment, proxy_bypass)
__import_lst = ['__all__', '__version__', 'MAXFTPCACHE', 'ContentTooShortError',
'ftpcache', '_noheaders', 'noheaders', 'addbase', 'addclosehook',
'addinfo', 'addinfourl', '_is_unicode', 'toBytes', '_hextochr',
'always_safe', 'getproxies_environment', 'proxy_bypass']
for var in __import_lst:
exec "%s = urllib.%s" % (var, var)
from eventlet.green import socket
import os
import time
from eventlet.green import time
import sys
from urlparse import urljoin as basejoin

View File

@@ -1,11 +1,12 @@
from __future__ import absolute_import
urllib2 = __import__('urllib2')
for var in dir(urllib2):
exec "%s = urllib2.%s" % (var, var)
# XXX blocking builtin open() is used in randombytes()
# AbstractHTTPHandler uses socket.error and socket._fileobject but that's OK
# as long as evenlet.green.socket imports them, does not reimplement them
import urllib2
from urllib2 import *
from urllib2 import __version__, _cut_port_re, _parse_proxy
# import the following to be a better drop-in replacement
__import_lst = ['__version__', '__cut_port_re', '_parse_proxy']
for var in __import_lst:
exec "%s = getattr(urllib2, %r, None)" % (var, var)
del (urlopen, install_opener, build_opener, HTTPHandler, HTTPSHandler,
HTTPCookieProcessor, FileHandler, FTPHandler, CacheFTPHandler, GopherError)