fixed various minor issues that pyflakes complained about, removed extraneous whitespace, wrapped long lines

This commit is contained in:
Tavis Rudd
2010-02-24 22:09:12 -08:00
parent a7eaa4b701
commit cc73169f5b
13 changed files with 248 additions and 238 deletions

View File

@@ -1,5 +1,4 @@
import collections import collections
import time
import traceback import traceback
import warnings import warnings
@@ -148,7 +147,8 @@ class Queue(object):
return len(self.items) return len(self.items)
def __repr__(self): def __repr__(self):
params = (self.__class__.__name__, hex(id(self)), len(self.items), len(self._waiters)) params = (self.__class__.__name__, hex(id(self)),
len(self.items), len(self._waiters))
return '<%s at %s items[%d] _waiters[%s]>' % params return '<%s at %s items[%d] _waiters[%s]>' % params
def send(self, result=None, exc=None): def send(self, result=None, exc=None):
@@ -221,7 +221,9 @@ class Channel(object):
return len(self.items) return len(self.items)
def __repr__(self): def __repr__(self):
params = (self.__class__.__name__, hex(id(self)), self.max_size, len(self.items), len(self._waiters), len(self._senders)) params = (self.__class__.__name__, hex(id(self)),
self.max_size, len(self.items),
len(self._waiters), len(self._senders))
return '<%s at %s max=%s items[%d] _w[%s] _s[%s]>' % params return '<%s at %s max=%s items[%d] _w[%s] _s[%s]>' % params
def send(self, result=None, exc=None): def send(self, result=None, exc=None):
@@ -397,4 +399,3 @@ class Actor(object):
>>> eventlet.kill(a._killer) # test cleanup >>> eventlet.kill(a._killer) # test cleanup
""" """
raise NotImplementedError() raise NotImplementedError()

View File

@@ -21,6 +21,3 @@ def _patch_main_thread(mod):
curthread = mod._active.pop(mod._get_ident(), None) curthread = mod._active.pop(mod._get_ident(), None)
if curthread: if curthread:
mod._active[thread.get_ident()] = curthread mod._active[thread.get_ident()] = curthread
if __name__ == '__main__':
_test()

View File

@@ -1,7 +1,4 @@
import eventlet
from eventlet.hubs import trampoline from eventlet.hubs import trampoline
from eventlet.hubs import get_hub
BUFFER_SIZE = 4096 BUFFER_SIZE = 4096
import errno import errno
@@ -12,10 +9,6 @@ import sys
import time import time
import warnings import warnings
from errno import EWOULDBLOCK, EAGAIN
__all__ = ['GreenSocket', 'GreenPipe', 'shutdown_safe'] __all__ = ['GreenSocket', 'GreenPipe', 'shutdown_safe']
CONNECT_ERR = set((errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK)) CONNECT_ERR = set((errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK))
@@ -302,7 +295,6 @@ class GreenSocket(object):
return total_sent return total_sent
def sendall(self, data, flags=0): def sendall(self, data, flags=0):
fd = self.fd
tail = self.send(data, flags) tail = self.send(data, flags)
len_data = len(data) len_data = len(data)
while tail < len_data: while tail < len_data:
@@ -375,7 +367,7 @@ class GreenPipe(object):
try: try:
return fd.read(buflen) return fd.read(buflen)
except IOError, e: except IOError, e:
if e[0] != EAGAIN: if e[0] != errno.EAGAIN:
return '' return ''
except socket.error, e: except socket.error, e:
if e[0] == errno.EPIPE: if e[0] == errno.EPIPE:
@@ -407,7 +399,7 @@ class GreenPipe(object):
fd.flush() fd.flush()
return len(data) return len(data)
except IOError, e: except IOError, e:
if e[0] != EAGAIN: if e[0] != errno.EAGAIN:
raise raise
except ValueError, e: except ValueError, e:
# what's this for? # what's this for?

View File

@@ -30,7 +30,8 @@ class DebugListener(FdListener):
self.greenlet = greenlet.getcurrent() self.greenlet = greenlet.getcurrent()
super(DebugListener, self).__init__(evtype, fileno, cb) super(DebugListener, self).__init__(evtype, fileno, cb)
def __repr__(self): def __repr__(self):
return "DebugListener(%r, %r, %r, %r)\n%sEndDebugFdListener" % (self.evtype, return "DebugListener(%r, %r, %r, %r)\n%sEndDebugFdListener" % (
self.evtype,
self.fileno, self.fileno,
self.cb, self.cb,
self.greenlet, self.greenlet,
@@ -231,8 +232,6 @@ class BaseHub(object):
t = self.timers t = self.timers
heappop = heapq.heappop heappop = heapq.heappop
i = 0
while t: while t:
next = t[0] next = t[0]

View File

@@ -35,7 +35,8 @@ def inject(module_name, new_globals, *additional_modules):
saved[name] = sys.modules.get(name, None) saved[name] = sys.modules.get(name, None)
sys.modules[name] = mod sys.modules[name] = mod
## Remove the old module from sys.modules and reimport it while the specified modules are in place ## Remove the old module from sys.modules and reimport it while
## the specified modules are in place
old_module = sys.modules.pop(module_name, None) old_module = sys.modules.pop(module_name, None)
try: try:
module = __import__(module_name, {}, {}, module_name.split('.')[:-1]) module = __import__(module_name, {}, {}, module_name.split('.')[:-1])
@@ -150,11 +151,12 @@ def monkey_patch(all=True, os=False, select=False,
for name, mod in modules_to_patch: for name, mod in modules_to_patch:
orig_mod = sys.modules.get(name) orig_mod = sys.modules.get(name)
for attr in mod.__patched__: for attr_name in mod.__patched__:
orig_attr = getattr(orig_mod, attr, None) #orig_attr = getattr(orig_mod, attr_name, None)
patched_attr = getattr(mod, attr, None) # @@tavis: line above wasn't used, not sure what author intended
patched_attr = getattr(mod, attr_name, None)
if patched_attr is not None: if patched_attr is not None:
setattr(orig_mod, attr, patched_attr) setattr(orig_mod, attr_name, patched_attr)
def _green_os_modules(): def _green_os_modules():
from eventlet.green import os from eventlet.green import os

View File

@@ -165,5 +165,3 @@ class TokenPool(Pool):
""" """
def create(self): def create(self):
return Token() return Token()

View File

@@ -11,7 +11,6 @@ import popen2
import signal import signal
from eventlet import api from eventlet import api
from eventlet import coros
from eventlet import pools from eventlet import pools
from eventlet import greenio from eventlet import greenio
@@ -69,7 +68,9 @@ class Process(object):
greenio.set_nonblocking(child_stdout_stderr) greenio.set_nonblocking(child_stdout_stderr)
greenio.set_nonblocking(child_stdin) greenio.set_nonblocking(child_stdin)
self.child_stdout_stderr = greenio.GreenPipe(child_stdout_stderr) self.child_stdout_stderr = greenio.GreenPipe(child_stdout_stderr)
self.child_stdout_stderr.newlines = '\n' # the default is \r\n, which aren't sent over pipes self.child_stdout_stderr.newlines = '\n' # the default is
# \r\n, which aren't sent over
# pipes
self.child_stdin = greenio.GreenPipe(child_stdin) self.child_stdin = greenio.GreenPipe(child_stdin)
self.child_stdin.newlines = '\n' self.child_stdin.newlines = '\n'

View File

@@ -36,7 +36,10 @@ def wrap(obj, dead_callback = None):
return wrap_module(obj.__name__, dead_callback) return wrap_module(obj.__name__, dead_callback)
pythonpath_sync() pythonpath_sync()
if _g_debug_mode: if _g_debug_mode:
p = Process(sys.executable, ["-W", "ignore", __file__, '--child', '--logfile', os.path.join(tempfile.gettempdir(), 'saranwrap.log')], dead_callback) p = Process(sys.executable,
["-W", "ignore", __file__, '--child',
'--logfile', os.path.join(tempfile.gettempdir(), 'saranwrap.log')],
dead_callback)
else: else:
p = Process(sys.executable, ["-W", "ignore", __file__, '--child'], dead_callback) p = Process(sys.executable, ["-W", "ignore", __file__, '--child'], dead_callback)
prox = Proxy(ChildProcess(p, p)) prox = Proxy(ChildProcess(p, p))
@@ -53,9 +56,13 @@ def wrap_module(fqname, dead_callback = None):
pythonpath_sync() pythonpath_sync()
global _g_debug_mode global _g_debug_mode
if _g_debug_mode: if _g_debug_mode:
p = Process(sys.executable, ["-W", "ignore", __file__, '--module', fqname, '--logfile', os.path.join(tempfile.gettempdir(), 'saranwrap.log')], dead_callback) p = Process(sys.executable,
["-W", "ignore", __file__, '--module', fqname,
'--logfile', os.path.join(tempfile.gettempdir(), 'saranwrap.log')],
dead_callback)
else: else:
p = Process(sys.executable, ["-W", "ignore", __file__, '--module', fqname,], dead_callback) p = Process(sys.executable,
["-W", "ignore", __file__, '--module', fqname,], dead_callback)
prox = Proxy(ChildProcess(p,p)) prox = Proxy(ChildProcess(p,p))
return prox return prox
@@ -140,7 +147,8 @@ def _write_request(param, output):
def _is_local(attribute): def _is_local(attribute):
"Return ``True`` if the attribute should be handled locally" "Return ``True`` if the attribute should be handled locally"
# return attribute in ('_in', '_out', '_id', '__getattribute__', '__setattr__', '__dict__') # return attribute in ('_in', '_out', '_id', '__getattribute__',
# '__setattr__', '__dict__')
# good enough for now. :) # good enough for now. :)
if '__local_dict' in attribute: if '__local_dict' in attribute:
return True return True
@@ -266,7 +274,8 @@ class Proxy(object):
my_cp = self.__local_dict['_cp'] my_cp = self.__local_dict['_cp']
my_id = self.__local_dict['_id'] my_id = self.__local_dict['_id']
# Pass the set attribute across # Pass the set attribute across
request = Request('setattr', {'id':my_id, 'attribute':attribute, 'value':value}) request = Request('setattr',
{'id':my_id, 'attribute':attribute, 'value':value})
return my_cp.make_request(request, attribute=attribute) return my_cp.make_request(request, attribute=attribute)
class ObjectProxy(Proxy): class ObjectProxy(Proxy):
@@ -324,7 +333,8 @@ class ObjectProxy(Proxy):
return self.__str__() return self.__str__()
def __nonzero__(self): def __nonzero__(self):
# bool(obj) is another method that skips __getattribute__. There's no good way to just pass # bool(obj) is another method that skips __getattribute__.
# There's no good way to just pass
# the method on, so we use a special message. # the method on, so we use a special message.
my_cp = self.__local_dict['_cp'] my_cp = self.__local_dict['_cp']
my_id = self.__local_dict['_id'] my_id = self.__local_dict['_id']
@@ -395,7 +405,9 @@ class CallableProxy(object):
# having already checked if the method starts with '_' so we # having already checked if the method starts with '_' so we
# can safely pass this one to the remote object. # can safely pass this one to the remote object.
#_prnt("calling %s %s" % (self._object_id, self._name) #_prnt("calling %s %s" % (self._object_id, self._name)
request = Request('call', {'id':self._object_id, 'name':self._name, 'args':args, 'kwargs':kwargs}) request = Request('call', {'id':self._object_id,
'name':self._name,
'args':args, 'kwargs':kwargs})
return self._cp.make_request(request, attribute=self._name) return self._cp.make_request(request, attribute=self._name)
class Server(object): class Server(object):
@@ -444,14 +456,15 @@ class Server(object):
def handle_setitem(self, obj, req): def handle_setitem(self, obj, req):
obj[req['key']] = req['value'] obj[req['key']] = req['value']
return None # *TODO figure out what the actual return value of __setitem__ should be return None # *TODO figure out what the actual return value
# of __setitem__ should be
def handle_eq(self, obj, req): def handle_eq(self, obj, req):
#_log("__eq__ %s %s" % (obj, req)) #_log("__eq__ %s %s" % (obj, req))
rhs = None rhs = None
try: try:
rhs = self._objects[req['rhs']] rhs = self._objects[req['rhs']]
except KeyError, e: except KeyError:
return False return False
return (obj == rhs) return (obj == rhs)
@@ -565,7 +578,7 @@ class Server(object):
#_log("objects: %s" % self._objects) #_log("objects: %s" % self._objects)
s = Pickle.dumps(body) s = Pickle.dumps(body)
_log(`s`) _log(`s`)
str_ = _write_lp_hunk(self._out, s) _write_lp_hunk(self._out, s)
def write_exception(self, e): def write_exception(self, e):
"""Helper method to respond with an exception.""" """Helper method to respond with an exception."""
@@ -621,14 +634,16 @@ def named(name):
import_err_strings.append(err.__str__()) import_err_strings.append(err.__str__())
toimport = '.'.join(toimport.split('.')[:-1]) toimport = '.'.join(toimport.split('.')[:-1])
if obj is None: if obj is None:
raise ImportError('%s could not be imported. Import errors: %r' % (name, import_err_strings)) raise ImportError(
'%s could not be imported. Import errors: %r' % (name, import_err_strings))
for seg in name.split('.')[1:]: for seg in name.split('.')[1:]:
try: try:
obj = getattr(obj, seg) obj = getattr(obj, seg)
except AttributeError: except AttributeError:
dirobj = dir(obj) dirobj = dir(obj)
dirobj.sort() dirobj.sort()
raise AttributeError('attribute %r missing from %r (%r) %r. Import errors: %r' % ( raise AttributeError(
'attribute %r missing from %r (%r) %r. Import errors: %r' % (
seg, obj, dirobj, name, import_err_strings)) seg, obj, dirobj, name, import_err_strings))
return obj return obj

View File

@@ -4,10 +4,10 @@ You generally don't have to use it unless you need to call reactor.run()
yourself. yourself.
""" """
from eventlet.hubs.twistedr import BaseTwistedHub from eventlet.hubs.twistedr import BaseTwistedHub
from eventlet.api import use_hub, _threadlocal from eventlet import use_hub
from eventlet.support import greenlets as greenlet from eventlet.support import greenlets as greenlet
from eventlet.hubs import _threadlocal
use_hub(BaseTwistedHub) use_hub(BaseTwistedHub)
assert not hasattr(_threadlocal, 'hub') assert not hasattr(_threadlocal, 'hub')
hub = _threadlocal.hub = _threadlocal.Hub(greenlet.getcurrent()) hub = _threadlocal.hub = _threadlocal.Hub(greenlet.getcurrent())

View File

@@ -1,12 +1,11 @@
import os
import socket import socket
import errno
import warnings import warnings
from eventlet import greenio
def g_log(*args): def g_log(*args):
warnings.warn("eventlet.util.g_log is deprecated because we're pretty sure no one uses it. Send mail to eventletdev@lists.secondlife.com if you are actually using it.", warnings.warn("eventlet.util.g_log is deprecated because "
"we're pretty sure no one uses it. "
"Send mail to eventletdev@lists.secondlife.com "
"if you are actually using it.",
DeprecationWarning, stacklevel=2) DeprecationWarning, stacklevel=2)
import sys import sys
from eventlet.support import greenlets as greenlet from eventlet.support import greenlets as greenlet
@@ -49,7 +48,8 @@ except ImportError:
try: try:
from eventlet.green.OpenSSL import SSL from eventlet.green.OpenSSL import SSL
except ImportError: except ImportError:
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.")
context = SSL.Context(SSL.SSLv23_METHOD) context = SSL.Context(SSL.SSLv23_METHOD)
if certificate is not None: if certificate is not None:
context.use_certificate_file(certificate) context.use_certificate_file(certificate)
@@ -126,4 +126,3 @@ def set_reuse_addr(descriptor):
descriptor.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1) descriptor.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1)
except socket.error: except socket.error:
pass pass

View File

@@ -15,7 +15,8 @@ DEFAULT_MAX_SIMULTANEOUS_REQUESTS = 1024
DEFAULT_MAX_HTTP_VERSION = 'HTTP/1.1' DEFAULT_MAX_HTTP_VERSION = 'HTTP/1.1'
MAX_REQUEST_LINE = 8192 MAX_REQUEST_LINE = 8192
MINIMUM_CHUNK_SIZE = 4096 MINIMUM_CHUNK_SIZE = 4096
DEFAULT_LOG_FORMAT='%(client_ip)s - - [%(date_time)s] "%(request_line)s" %(status_code)s %(body_length)s %(wall_seconds).6f' DEFAULT_LOG_FORMAT= ('%(client_ip)s - - [%(date_time)s] "%(request_line)s"'
' %(status_code)s %(body_length)s %(wall_seconds).6f')
__all__ = ['server', 'format_date_time'] __all__ = ['server', 'format_date_time']
@@ -173,7 +174,8 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
self.raw_requestline = self.rfile.readline(MAX_REQUEST_LINE) self.raw_requestline = self.rfile.readline(MAX_REQUEST_LINE)
if len(self.raw_requestline) == MAX_REQUEST_LINE: if len(self.raw_requestline) == MAX_REQUEST_LINE:
self.wfile.write( self.wfile.write(
"HTTP/1.0 414 Request URI Too Long\r\nConnection: close\r\nContent-length: 0\r\n\r\n") "HTTP/1.0 414 Request URI Too Long\r\n"
"Connection: close\r\nContent-length: 0\r\n\r\n")
self.close_connection = 1 self.close_connection = 1
return return
except greenio.SSL.ZeroReturnError: except greenio.SSL.ZeroReturnError:
@@ -277,7 +279,8 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
_writelines(towrite) _writelines(towrite)
length[0] = length[0] + sum(map(len, towrite)) length[0] = length[0] + sum(map(len, towrite))
except UnicodeEncodeError: except UnicodeEncodeError:
print "Encountered unicode while attempting to write wsgi response: ", [x for x in towrite if isinstance(x, unicode)] print "Encountered unicode while attempting to write wsgi response: ", \
[x for x in towrite if isinstance(x, unicode)]
traceback.print_exc() traceback.print_exc()
_writelines( _writelines(
["HTTP/1.0 500 Internal Server Error\r\n", ["HTTP/1.0 500 Internal Server Error\r\n",
@@ -285,7 +288,8 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
"Content-type: text/plain\r\n", "Content-type: text/plain\r\n",
"Content-length: 98\r\n", "Content-length: 98\r\n",
"\r\n", "\r\n",
"Internal Server Error: wsgi application passed a unicode object to the server instead of a string."]) ("Internal Server Error: wsgi application passed "
"a unicode object to the server instead of a string.")])
def start_response(status, response_headers, exc_info=None): def start_response(status, response_headers, exc_info=None):
status_code[0] = status.split()[0] status_code[0] = status.split()[0]
@@ -298,7 +302,8 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
# Avoid dangling circular ref # Avoid dangling circular ref
exc_info = None exc_info = None
capitalized_headers = [('-'.join([x.capitalize() for x in key.split('-')]), value) capitalized_headers = [('-'.join([x.capitalize()
for x in key.split('-')]), value)
for key, value in response_headers] for key, value in response_headers]
headers_set[:] = [status, capitalized_headers] headers_set[:] = [status, capitalized_headers]
@@ -329,17 +334,19 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
write(''.join(towrite)) write(''.join(towrite))
if not headers_sent or (use_chunked[0] and just_written_size): if not headers_sent or (use_chunked[0] and just_written_size):
write('') write('')
except Exception, e: except Exception:
self.close_connection = 1 self.close_connection = 1
exc = traceback.format_exc() exc = traceback.format_exc()
print exc print exc
if not headers_set: if not headers_set:
start_response("500 Internal Server Error", [('Content-type', 'text/plain')]) start_response("500 Internal Server Error",
[('Content-type', 'text/plain')])
write(exc) write(exc)
finally: finally:
if hasattr(result, 'close'): if hasattr(result, 'close'):
result.close() result.close()
if self.environ['eventlet.input'].position < self.environ.get('CONTENT_LENGTH', 0): if (self.environ['eventlet.input'].position
< self.environ.get('CONTENT_LENGTH', 0)):
## Read and discard body if there was no pending 100-continue ## Read and discard body if there was no pending 100-continue
if not self.environ['eventlet.input'].wfile: if not self.environ['eventlet.input'].wfile:
while self.environ['eventlet.input'].read(MINIMUM_CHUNK_SIZE): while self.environ['eventlet.input'].read(MINIMUM_CHUNK_SIZE):
@@ -454,7 +461,6 @@ class Server(BaseHTTPServer.HTTPServer):
self.log_format = log_format self.log_format = log_format
def get_environ(self): def get_environ(self):
socket = self.socket
d = { d = {
'wsgi.errors': sys.stderr, 'wsgi.errors': sys.stderr,
'wsgi.version': (1, 0), 'wsgi.version': (1, 0),
@@ -543,7 +549,8 @@ def server(sock, site,
if port == ':80': if port == ':80':
port = '' port = ''
serv.log.write("(%s) wsgi starting up on %s://%s%s/\n" % (os.getpid(), scheme, host, port)) serv.log.write("(%s) wsgi starting up on %s://%s%s/\n" % (
os.getpid(), scheme, host, port))
while True: while True:
try: try:
client_socket = sock.accept() client_socket = sock.accept()
@@ -572,4 +579,3 @@ def server(sock, site,
except socket.error, e: except socket.error, e:
if get_errno(e) not in BROKEN_SOCK: if get_errno(e) not in BROKEN_SOCK:
traceback.print_exc() traceback.print_exc()