]> git.scottworley.com Git - pinch/commitdiff
New pylint likes 'with'
authorScott Worley <scottworley@scottworley.com>
Sat, 16 Apr 2022 06:18:37 +0000 (23:18 -0700)
committerScott Worley <scottworley@scottworley.com>
Sat, 16 Apr 2022 06:54:28 +0000 (23:54 -0700)
pinch.py

index 332d13088f301a4cca91313c80b974a97063d508..79622f471d09f8dcadc96c8e10e8c5ddbb013db2 100644 (file)
--- a/pinch.py
+++ b/pinch.py
@@ -248,10 +248,10 @@ def compare(a: str, b: str) -> Tuple[List[str], List[str], List[str]]:
 def fetch_channel(
         v: Verification, channel: ChannelSearchPath) -> Tuple[str, str]:
     v.status('Fetching channel from %s' % channel.channel_url)
-    request = urllib.request.urlopen(channel.channel_url, timeout=10)
-    channel_html = request.read().decode()
-    forwarded_url = request.geturl()
-    v.result(request.status == 200)  # type: ignore  # (for old mypy)
+    with urllib.request.urlopen(channel.channel_url, timeout=10) as request:
+        channel_html = request.read().decode()
+        forwarded_url = request.geturl()
+        v.result(request.status == 200)
     v.check('Got forwarded', channel.channel_url != forwarded_url)
     return channel_html, forwarded_url
 
@@ -368,7 +368,8 @@ def fetch_resources(
         fields.file = fetch_with_nix_prefetch_url(
             v, fields.absolute_url, fields.digest)
     v.status('Verifying git commit on main page matches git commit in table')
-    v.result(open(table['git-revision'].file).read(999) == pin.git_revision)
+    with open(table['git-revision'].file, encoding='utf-8') as rev_file:
+        v.result(rev_file.read(999) == pin.git_revision)
 
 
 def tarball_cache_file(channel: TarrableSearchPath, pin: GitPin) -> str:
@@ -446,19 +447,15 @@ def git_checkout(
         pin: GitPin,
         dest: str) -> None:
     v.status('Checking out corresponding git revision')
-    git = subprocess.Popen(['git',
-                            '-C',
-                            git_cache.git_cachedir(channel.git_repo),
-                            'archive',
-                            pin.git_revision],
-                           stdout=subprocess.PIPE)
-    tar = subprocess.Popen(
-        ['tar', 'x', '-C', dest, '-f', '-'], stdin=git.stdout)
-    if git.stdout:
-        git.stdout.close()
-    tar.wait()
-    git.wait()
-    v.result(git.returncode == 0 and tar.returncode == 0)
+    with subprocess.Popen(
+            ['git', '-C', git_cache.git_cachedir(channel.git_repo), 'archive', pin.git_revision],
+            stdout=subprocess.PIPE) as git:
+        with subprocess.Popen(['tar', 'x', '-C', dest, '-f', '-'], stdin=git.stdout) as tar:
+            if git.stdout:
+                git.stdout.close()
+            tar.wait()
+            git.wait()
+            v.result(git.returncode == 0 and tar.returncode == 0)
 
 
 def git_get_tarball(
@@ -467,33 +464,32 @@ def git_get_tarball(
         pin: GitPin) -> str:
     cache_file = tarball_cache_file(channel, pin)
     if os.path.exists(cache_file):
-        cached_tarball = open(cache_file).read(9999)
-        if os.path.exists(cached_tarball):
-            return cached_tarball
+        with open(cache_file, encoding='utf-8') as f:
+            cached_tarball = f.read(9999)
+            if os.path.exists(cached_tarball):
+                return cached_tarball
 
     with tempfile.TemporaryDirectory() as output_dir:
         output_filename = os.path.join(
             output_dir, pin.release_name + '.tar.xz')
-        with open(output_filename, 'w') as output_file:
+        with open(output_filename, 'w', encoding='utf-8') as output_file:
             v.status(
                 'Generating tarball for git revision %s' %
                 pin.git_revision)
-            git = subprocess.Popen(['git',
-                                    '-C',
-                                    git_cache.git_cachedir(channel.git_repo),
-                                    'archive',
-                                    '--prefix=%s/' % pin.release_name,
-                                    pin.git_revision],
-                                   stdout=subprocess.PIPE)
-            xz = subprocess.Popen(['xz'], stdin=git.stdout, stdout=output_file)
-            xz.wait()
-            git.wait()
-            v.result(git.returncode == 0 and xz.returncode == 0)
+            with subprocess.Popen(
+                    ['git', '-C', git_cache.git_cachedir(channel.git_repo),
+                        'archive', '--prefix=%s/' % pin.release_name, pin.git_revision],
+                    stdout=subprocess.PIPE) as git:
+                with subprocess.Popen(['xz'], stdin=git.stdout, stdout=output_file) as xz:
+                    xz.wait()
+                    git.wait()
+                    v.result(git.returncode == 0 and xz.returncode == 0)
 
         store_tarball = copy_to_nix_store(v, output_filename)
 
         os.makedirs(os.path.dirname(cache_file), exist_ok=True)
-        open(cache_file, 'w').write(store_tarball)
+        with open(cache_file, 'w', encoding='utf-8') as f:
+            f.write(store_tarball)
         return store_tarball  # type: ignore  # (for old mypy)
 
 
@@ -502,21 +498,16 @@ def check_channel_metadata(
         pin: GitPin,
         channel_contents: str) -> None:
     v.status('Verifying git commit in channel tarball')
-    v.result(
-        open(
-            os.path.join(
-                channel_contents,
-                pin.release_name,
-                '.git-revision')).read(999) == pin.git_revision)
+    with open(os.path.join(channel_contents, pin.release_name, '.git-revision'),
+              encoding='utf-8') as f:
+        v.result(f.read(999) == pin.git_revision)
 
     v.status(
         'Verifying version-suffix is a suffix of release name %s:' %
         pin.release_name)
-    version_suffix = open(
-        os.path.join(
-            channel_contents,
-            pin.release_name,
-            '.version-suffix')).read(999)
+    with open(os.path.join(channel_contents, pin.release_name, '.version-suffix'),
+              encoding='utf-8') as f:
+        version_suffix = f.read(999)
     v.status(version_suffix)
     v.result(pin.release_name.endswith(version_suffix))
 
@@ -610,7 +601,8 @@ def read_pinned_config_section(
 
 def read_config(filename: str) -> configparser.ConfigParser:
     config = configparser.ConfigParser()
-    config.read_file(open(filename), filename)
+    with open(filename, encoding='utf-8') as f:
+        config.read_file(f, filename)
     return config
 
 
@@ -637,7 +629,7 @@ def pinCommand(args: argparse.Namespace) -> None:
 
         config[section].update(sp.pin(v, old_pin)._asdict())
 
-    with open(args.channels_file, 'w') as configfile:
+    with open(args.channels_file, 'w', encoding='utf-8') as configfile:
         config.write(configfile)