Skip to content

Commit 43cf5d0

Browse files
author
willmcgugan@gmail.com
committed
opener fix
1 parent 369aa5f commit 43cf5d0

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

fs/filelike.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ def _do_read(self,size):
465465
sizeSoFar = len(newData)
466466
while sizeSoFar < size:
467467
newData = self._read(size-sizeSoFar)
468-
if newData is None:
468+
if not newData:
469469
break
470470
data.append(newData)
471471
sizeSoFar += len(newData)

fs/opener.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,19 @@ def _split_url_path(url):
121121
url = '%s://%s' % (scheme, netloc)
122122
return url, path
123123

124-
class _FSClosingFile(FileWrapper):
125-
"""A file like object that closes its parent FS when closed itself"""
126-
def close(self):
127-
fs = getattr(self, '_closefs', None)
128-
ret = super(_FSClosingFile, self).close()
129-
if fs is not None:
130-
fs.close
131-
return ret
124+
125+
def _FSClosingFile(fs, file_object, mode):
126+
original_close = file_object.close
127+
128+
def close():
129+
try:
130+
fs.close()
131+
except:
132+
pass
133+
return original_close()
134+
file_object.close = close
135+
return file_object
136+
132137

133138
class OpenerRegistry(object):
134139

@@ -267,8 +272,8 @@ def open(self, fs_url, mode='r', **kwargs):
267272
fs, path = self.parse(fs_url, writeable=writeable)
268273
file_object = fs.open(path, mode)
269274

270-
file_object = _FSClosingFile(file_object, mode)
271-
file_object.fs = fs
275+
file_object = _FSClosingFile(fs, file_object, mode)
276+
#file_object.fs = fs
272277
return file_object
273278

274279
def getcontents(self, fs_url, mode='rb', encoding=None, errors=None, newline=None):

0 commit comments

Comments
 (0)