python3.2 fixes: ResourceWarning: unclosed file
authorZac Medico <zmedico@gentoo.org>
Fri, 26 Aug 2011 19:53:55 +0000 (12:53 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 26 Aug 2011 19:53:55 +0000 (12:53 -0700)
pym/_emerge/BinpkgEnvExtractor.py
pym/portage/dbapi/vartree.py
pym/portage/xpak.py

index f68971b3509b0f2b0d68cb746bacc84282ef8c1a..1c9471877b08a24051701ebdac4584707f1e9028 100644 (file)
@@ -59,7 +59,7 @@ class BinpkgEnvExtractor(CompositeTask):
                # This is a signal to ebuild.sh, so that it knows to filter
                # out things like SANDBOX_{DENY,PREDICT,READ,WRITE} that
                # would be preserved between normal phases.
-               open(_unicode_encode(self._get_dest_env_path() + '.raw'), 'w')
+               open(_unicode_encode(self._get_dest_env_path() + '.raw'), 'wb').close()
 
                self._current_task = None
                self.returncode = os.EX_OK
index 7f7873bd4c492d9106eca48a53d559e51d951b35..6e49f38f88616da440b347d87249e1bc4c68ae5d 100644 (file)
@@ -3192,17 +3192,22 @@ class dblink(object):
                                        pass
                                continue
 
+                       f = None
                        try:
-                               val = io.open(_unicode_encode(
+                               f = io.open(_unicode_encode(
                                        os.path.join(inforoot, var_name),
                                        encoding=_encodings['fs'], errors='strict'),
                                        mode='r', encoding=_encodings['repo.content'],
-                                       errors='replace').readline().strip()
+                                       errors='replace')
+                               val = f.readline().strip()
                        except EnvironmentError as e:
                                if e.errno != errno.ENOENT:
                                        raise
                                del e
                                val = ''
+                       finally:
+                               if f is not None:
+                                       f.close()
 
                        if var_name == 'SLOT':
                                slot = val
@@ -3558,10 +3563,12 @@ class dblink(object):
                # write local package counter for recording
                if counter is None:
                        counter = self.vartree.dbapi.counter_tick(mycpv=self.mycpv)
-               io.open(_unicode_encode(os.path.join(self.dbtmpdir, 'COUNTER'),
+               f = io.open(_unicode_encode(os.path.join(self.dbtmpdir, 'COUNTER'),
                        encoding=_encodings['fs'], errors='strict'),
                        mode='w', encoding=_encodings['repo.content'],
-                       errors='backslashreplace').write(_unicode_decode(str(counter)))
+                       errors='backslashreplace')
+               f.write(_unicode_decode(str(counter)))
+               f.close()
 
                self.updateprotect()
 
index 01cfe7b0a6745d7536c8523477e1aa661c1ff682..a05a86009b53a61be7a65d9d98030d1564260813 100644 (file)
@@ -99,7 +99,8 @@ def xpak(rootdir,outfile=None):
                        # CONTENTS is generated during the merge process.
                        continue
                x = _unicode_encode(x, encoding=_encodings['fs'], errors='strict')
-               mydata[x] = open(os.path.join(rootdir, x), 'rb').read()
+               with open(os.path.join(rootdir, x), 'rb') as f:
+                       mydata[x] = f.read()
 
        xpak_segment = xpak_mem(mydata)
        if outfile: