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
This commit is contained in:
Jakub Stasiak
2015-02-09 17:50:00 +01:00
parent 91ebc9e7a2
commit 2c04b9eff8

View File

@@ -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