summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Stasiak <jakub@stasiak.at>2015-02-09 17:50:00 +0100
committerJakub Stasiak <jakub@stasiak.at>2015-02-09 23:16:30 +0100
commit2c04b9eff881fa5892f17a1ecf0f4622fb36b707 (patch)
tree857af19e3c9eb2b900d5884473e8ecb9c388d00f
parent91ebc9e7a25c06f5ce63a252f0f3d46225b5ab7a (diff)
downloadeventlet-2c04b9eff881fa5892f17a1ecf0f4622fb36b707.tar.gz
Python 3 compat: Add some GreenPipe hacks
GreenPipe will most likely need to be rewritten for Python 3 but this'll do for some cases
-rw-r--r--eventlet/greenio.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/eventlet/greenio.py b/eventlet/greenio.py
index 808ff7d..46e3909 100644
--- a/eventlet/greenio.py
+++ b/eventlet/greenio.py
@@ -555,15 +555,27 @@ class GreenPipe(_fileobject):
else:
fileno = os.dup(f.fileno())
self._name = f.name
- if f.mode != mode:
+ if not (
+ f.mode == mode or
+ six.PY3 and f.mode == 'rb+' and mode == 'wb+'
+ ):
raise ValueError('file.mode %r does not match mode parameter %r' % (f.mode, mode))
self._name = f.name
f.close()
+ if six.PY3:
+ mode = mode.rstrip('+')
+
super(GreenPipe, self).__init__(_SocketDuckForFd(fileno), mode)
set_nonblocking(self)
self.softspace = 0
+ if six.PY3:
+ def write(self, data):
+ while data:
+ sent = _fileobject.write(self, data)
+ data = data[sent:]
+
@property
def name(self):
return self._name