[bmap-tools] [PATCH 3/4] TransRead: do not cache local uncompressed files

dedekind1 at gmail.com dedekind1 at gmail.com
Wed Aug 14 07:50:44 EDT 2013


From: Artem Bityutskiy <artem.bityutskiy at intel.com>

When the file is already local and uncompressed, do not create a temporary copy
of it when 'local' is True.

On top of this, re-use own __init__ function to re-open the local copy of the
remote/compressed file.

Change-Id: I2093419ed2cfc6d40f73a47657682436b8932402
Signed-off-by: Artem Bityutskiy <artem.bityutskiy at intel.com>
---
 bmaptools/TransRead.py | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/bmaptools/TransRead.py b/bmaptools/TransRead.py
index 9d064e6..a16d0c8 100644
--- a/bmaptools/TransRead.py
+++ b/bmaptools/TransRead.py
@@ -222,10 +222,10 @@ class TransRead:
         """
         Class constructor. The 'filepath' argument is the full path to the file
         to read transparently. If 'local' is True, then the file-like object is
-        guaranteed to be backed by a local file. This means that if the source
-        file is compressed or an URL, then it will first be copied to a
-        temporary local file, and then all the subsequent operations will be
-        done with the local copy.
+        guaranteed to be backed by an uncompressed local file. This means that
+        if the source file is compressed and/or an URL, then it will first be
+        copied to an temporary local file, and then all the subsequent
+        operations will be done with the uncompresed local copy.
         """
 
         self.name = filepath
@@ -266,7 +266,7 @@ class TransRead:
 
         self._open_compressed_file()
 
-        if local:
+        if local and (self.is_url or self.is_compressed):
             self._create_local_copy()
 
     def __del__(self):
@@ -491,17 +491,10 @@ class TransRead:
             tmp_file_obj.write(chunk)
 
         tmp_file_obj.flush()
-        self.close()
-        self.is_compressed = False
-        self.is_url = False
-        self._f_objs.append(tmp_file_obj)
 
-        try:
-            f_obj = open(tmp_file_obj.name, "rb")
-            self._f_objs.appen(f_obj)
-        except IOError as err:
-            raise Error("cannot open own temporary file '%s': %s"
-                        % (tmp_file_obj.name, err))
+        self.close()
+        self.__init__(tmp_file_obj.name, local = False)
+        tmp_file_obj.close()
 
     def read(self, size=-1):
         """
-- 
1.8.1.4




More information about the Bmap-tools mailing list