[Python-checkins] cpython: packaging: use with open() instead of try/finally: close

victor.stinner python-checkins at python.org
Thu May 19 15:53:39 CEST 2011


http://hg.python.org/cpython/rev/8dc80509f181
changeset:   70202:8dc80509f181
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Thu May 19 15:51:27 2011 +0200
summary:
  packaging: use with open() instead of try/finally: close

files:
  Lib/packaging/command/config.py                     |  36 ++++-----
  Lib/packaging/command/upload_docs.py                |  15 +--
  Lib/packaging/compiler/ccompiler.py                 |   5 +-
  Lib/packaging/tests/support.py                      |   5 +-
  Lib/packaging/tests/test_command_build_scripts.py   |   5 +-
  Lib/packaging/tests/test_command_install_dist.py    |   5 +-
  Lib/packaging/tests/test_command_install_scripts.py |   5 +-
  Lib/packaging/tests/test_create.py                  |   5 +-
  Lib/packaging/tests/test_pypi_server.py             |   8 +-
  Lib/packaging/tests/test_util.py                    |  16 +--
  Lib/packaging/util.py                               |   5 +-
  11 files changed, 41 insertions(+), 69 deletions(-)


diff --git a/Lib/packaging/command/config.py b/Lib/packaging/command/config.py
--- a/Lib/packaging/command/config.py
+++ b/Lib/packaging/command/config.py
@@ -110,15 +110,14 @@
 
     def _gen_temp_sourcefile(self, body, headers, lang):
         filename = "_configtest" + LANG_EXT[lang]
-        file = open(filename, "w")
-        if headers:
-            for header in headers:
-                file.write("#include <%s>\n" % header)
-            file.write("\n")
-        file.write(body)
-        if body[-1] != "\n":
-            file.write("\n")
-        file.close()
+        with open(filename, "w") as file:
+            if headers:
+                for header in headers:
+                    file.write("#include <%s>\n" % header)
+                file.write("\n")
+            file.write(body)
+            if body[-1] != "\n":
+                file.write("\n")
         return filename
 
     def _preprocess(self, body, headers, include_dirs, lang):
@@ -207,17 +206,16 @@
         if isinstance(pattern, str):
             pattern = re.compile(pattern)
 
-        file = open(out)
-        match = False
-        while True:
-            line = file.readline()
-            if line == '':
-                break
-            if pattern.search(line):
-                match = True
-                break
+        with open(out) as file:
+            match = False
+            while True:
+                line = file.readline()
+                if line == '':
+                    break
+                if pattern.search(line):
+                    match = True
+                    break
 
-        file.close()
         self._clean()
         return match
 
diff --git a/Lib/packaging/command/upload_docs.py b/Lib/packaging/command/upload_docs.py
--- a/Lib/packaging/command/upload_docs.py
+++ b/Lib/packaging/command/upload_docs.py
@@ -18,14 +18,13 @@
 def zip_dir(directory):
     """Compresses recursively contents of directory into a BytesIO object"""
     destination = BytesIO()
-    zip_file = zipfile.ZipFile(destination, "w")
-    for root, dirs, files in os.walk(directory):
-        for name in files:
-            full = os.path.join(root, name)
-            relative = root[len(directory):].lstrip(os.path.sep)
-            dest = os.path.join(relative, name)
-            zip_file.write(full, dest)
-    zip_file.close()
+    with zipfile.ZipFile(destination, "w") as zip_file:
+        for root, dirs, files in os.walk(directory):
+            for name in files:
+                full = os.path.join(root, name)
+                relative = root[len(directory):].lstrip(os.path.sep)
+                dest = os.path.join(relative, name)
+                zip_file.write(full, dest)
     return destination
 
 
diff --git a/Lib/packaging/compiler/ccompiler.py b/Lib/packaging/compiler/ccompiler.py
--- a/Lib/packaging/compiler/ccompiler.py
+++ b/Lib/packaging/compiler/ccompiler.py
@@ -728,8 +728,7 @@
         if library_dirs is None:
             library_dirs = []
         fd, fname = tempfile.mkstemp(".c", funcname, text=True)
-        f = os.fdopen(fd, "w")
-        try:
+        with os.fdopen(fd, "w") as f:
             for incl in includes:
                 f.write("""#include "%s"\n""" % incl)
             f.write("""\
@@ -737,8 +736,6 @@
     %s();
 }
 """ % funcname)
-        finally:
-            f.close()
         try:
             objects = self.compile([fname], include_dirs=include_dirs)
         except CompileError:
diff --git a/Lib/packaging/tests/support.py b/Lib/packaging/tests/support.py
--- a/Lib/packaging/tests/support.py
+++ b/Lib/packaging/tests/support.py
@@ -146,11 +146,8 @@
         """
         if isinstance(path, (list, tuple)):
             path = os.path.join(*path)
-        f = open(path, 'w')
-        try:
+        with open(path, 'w') as f:
             f.write(content)
-        finally:
-            f.close()
 
     def create_dist(self, **kw):
         """Create a stub distribution object and files.
diff --git a/Lib/packaging/tests/test_command_build_scripts.py b/Lib/packaging/tests/test_command_build_scripts.py
--- a/Lib/packaging/tests/test_command_build_scripts.py
+++ b/Lib/packaging/tests/test_command_build_scripts.py
@@ -71,11 +71,8 @@
         return expected
 
     def write_script(self, dir, name, text):
-        f = open(os.path.join(dir, name), "w")
-        try:
+        with open(os.path.join(dir, name), "w") as f:
             f.write(text)
-        finally:
-            f.close()
 
     def test_version_int(self):
         source = self.mkdtemp()
diff --git a/Lib/packaging/tests/test_command_install_dist.py b/Lib/packaging/tests/test_command_install_dist.py
--- a/Lib/packaging/tests/test_command_install_dist.py
+++ b/Lib/packaging/tests/test_command_install_dist.py
@@ -193,11 +193,8 @@
         # let's check the record file was created with four
         # lines, one for each .dist-info entry: METADATA,
         # INSTALLER, REQUSTED, RECORD
-        f = open(cmd.record)
-        try:
+        with open(cmd.record) as f:
             self.assertEqual(len(f.readlines()), 4)
-        finally:
-            f.close()
 
         # XXX test that fancy_getopt is okay with options named
         # record and no-record but unrelated
diff --git a/Lib/packaging/tests/test_command_install_scripts.py b/Lib/packaging/tests/test_command_install_scripts.py
--- a/Lib/packaging/tests/test_command_install_scripts.py
+++ b/Lib/packaging/tests/test_command_install_scripts.py
@@ -38,11 +38,8 @@
 
         def write_script(name, text):
             expected.append(name)
-            f = open(os.path.join(source, name), "w")
-            try:
+            with open(os.path.join(source, name), "w") as f:
                 f.write(text)
-            finally:
-                f.close()
 
         write_script("script1.py", ("#! /usr/bin/env python2.3\n"
                                     "# bogus script w/ Python sh-bang\n"
diff --git a/Lib/packaging/tests/test_create.py b/Lib/packaging/tests/test_create.py
--- a/Lib/packaging/tests/test_create.py
+++ b/Lib/packaging/tests/test_create.py
@@ -173,11 +173,8 @@
                         dedent("""
         # -*- coding: utf-8 -*-
         from distutils.core import setup
-        fp = open('README.txt')
-        try:
+        with open('README.txt') as fp:
             long_description = fp.read()
-        finally:
-            fp.close()
 
         setup(name='pyxfoil',
               version='0.2',
diff --git a/Lib/packaging/tests/test_pypi_server.py b/Lib/packaging/tests/test_pypi_server.py
--- a/Lib/packaging/tests/test_pypi_server.py
+++ b/Lib/packaging/tests/test_pypi_server.py
@@ -54,11 +54,9 @@
             url = server.full_address + url_path
             request = urllib.request.Request(url)
             response = urllib.request.urlopen(request)
-            file = open(PYPI_DEFAULT_STATIC_PATH + "/test_pypi_server" +
-               url_path)
-            answer = response.read().decode() == file.read()
-            file.close()
-            return answer
+            with open(PYPI_DEFAULT_STATIC_PATH + "/test_pypi_server"
+                      + url_path) as file:
+                return response.read().decode() == file.read()
 
         server = PyPIServer(static_uri_paths=["simple", "external"],
             static_filesystem_paths=["test_pypi_server"])
diff --git a/Lib/packaging/tests/test_util.py b/Lib/packaging/tests/test_util.py
--- a/Lib/packaging/tests/test_util.py
+++ b/Lib/packaging/tests/test_util.py
@@ -720,17 +720,15 @@
             dir_paths.append(path)
         for f in files:
             path = os.path.join(tempdir, f)
-            _f = open(path, 'w')
-            _f.write(f)
-            _f.close()
+            with open(path, 'w') as _f:
+                _f.write(f)
             file_paths.append(path)
 
-        record_file = open(record_file_path, 'w')
-        for fpath in file_paths:
-            record_file.write(fpath + '\n')
-        for dpath in dir_paths:
-            record_file.write(dpath + '\n')
-        record_file.close()
+        with open(record_file_path, 'w') as record_file:
+            for fpath in file_paths:
+                record_file.write(fpath + '\n')
+            for dpath in dir_paths:
+                record_file.write(dpath + '\n')
 
         return (tempdir, record_file_path)
 
diff --git a/Lib/packaging/util.py b/Lib/packaging/util.py
--- a/Lib/packaging/util.py
+++ b/Lib/packaging/util.py
@@ -350,7 +350,7 @@
             else:
                 script = open(script_name, "w")
 
-            try:
+            with script:
                 script.write("""\
 from packaging.util import byte_compile
 files = [
@@ -378,9 +378,6 @@
              direct=True)
 """ % (optimize, force, prefix, base_dir, verbose))
 
-            finally:
-                script.close()
-
         cmd = [sys.executable, script_name]
         if optimize == 1:
             cmd.insert(1, "-O")

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list