diff options
author | Jakub Stasiak <jakub@stasiak.at> | 2015-02-09 17:50:00 +0100 |
---|---|---|
committer | Jakub Stasiak <jakub@stasiak.at> | 2015-02-09 23:16:30 +0100 |
commit | 2c04b9eff881fa5892f17a1ecf0f4622fb36b707 (patch) | |
tree | 857af19e3c9eb2b900d5884473e8ecb9c388d00f | |
parent | 91ebc9e7a25c06f5ce63a252f0f3d46225b5ab7a (diff) | |
download | eventlet-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.py | 14 |
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 |