Format codebase with black and check formatting in CQ

Apply rules set by https://gerrit-review.googlesource.com/c/git-repo/+/362954/ across the codebase and fix any lingering errors caught
by flake8. Also check black formatting in run_tests (and CQ).

Bug: b/267675342
Change-Id: I972d77649dac351150dcfeb1cd1ad0ea2efc1956
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/363474
Reviewed-by: Mike Frysinger <vapier@google.com>
Tested-by: Gavin Mak <gavinmak@google.com>
Commit-Queue: Gavin Mak <gavinmak@google.com>
diff --git a/platform_utils.py b/platform_utils.py
index 0203249..2c48e62 100644
--- a/platform_utils.py
+++ b/platform_utils.py
@@ -20,246 +20,264 @@
 
 
 def isWindows():
-  """ Returns True when running with the native port of Python for Windows,
-  False when running on any other platform (including the Cygwin port of
-  Python).
-  """
-  # Note: The cygwin port of Python returns "CYGWIN_NT_xxx"
-  return platform.system() == "Windows"
+    """Returns True when running with the native port of Python for Windows,
+    False when running on any other platform (including the Cygwin port of
+    Python).
+    """
+    # Note: The cygwin port of Python returns "CYGWIN_NT_xxx"
+    return platform.system() == "Windows"
 
 
 def symlink(source, link_name):
-  """Creates a symbolic link pointing to source named link_name.
-  Note: On Windows, source must exist on disk, as the implementation needs
-  to know whether to create a "File" or a "Directory" symbolic link.
-  """
-  if isWindows():
-    import platform_utils_win32
-    source = _validate_winpath(source)
-    link_name = _validate_winpath(link_name)
-    target = os.path.join(os.path.dirname(link_name), source)
-    if isdir(target):
-      platform_utils_win32.create_dirsymlink(_makelongpath(source), link_name)
+    """Creates a symbolic link pointing to source named link_name.
+
+    Note: On Windows, source must exist on disk, as the implementation needs
+    to know whether to create a "File" or a "Directory" symbolic link.
+    """
+    if isWindows():
+        import platform_utils_win32
+
+        source = _validate_winpath(source)
+        link_name = _validate_winpath(link_name)
+        target = os.path.join(os.path.dirname(link_name), source)
+        if isdir(target):
+            platform_utils_win32.create_dirsymlink(
+                _makelongpath(source), link_name
+            )
+        else:
+            platform_utils_win32.create_filesymlink(
+                _makelongpath(source), link_name
+            )
     else:
-      platform_utils_win32.create_filesymlink(_makelongpath(source), link_name)
-  else:
-    return os.symlink(source, link_name)
+        return os.symlink(source, link_name)
 
 
 def _validate_winpath(path):
-  path = os.path.normpath(path)
-  if _winpath_is_valid(path):
-    return path
-  raise ValueError("Path \"%s\" must be a relative path or an absolute "
-                   "path starting with a drive letter".format(path))
+    path = os.path.normpath(path)
+    if _winpath_is_valid(path):
+        return path
+    raise ValueError(
+        'Path "{}" must be a relative path or an absolute '
+        "path starting with a drive letter".format(path)
+    )
 
 
 def _winpath_is_valid(path):
-  """Windows only: returns True if path is relative (e.g. ".\\foo") or is
-  absolute including a drive letter (e.g. "c:\\foo"). Returns False if path
-  is ambiguous (e.g. "x:foo" or "\\foo").
-  """
-  assert isWindows()
-  path = os.path.normpath(path)
-  drive, tail = os.path.splitdrive(path)
-  if tail:
-    if not drive:
-      return tail[0] != os.sep  # "\\foo" is invalid
+    """Windows only: returns True if path is relative (e.g. ".\\foo") or is
+    absolute including a drive letter (e.g. "c:\\foo"). Returns False if path
+    is ambiguous (e.g. "x:foo" or "\\foo").
+    """
+    assert isWindows()
+    path = os.path.normpath(path)
+    drive, tail = os.path.splitdrive(path)
+    if tail:
+        if not drive:
+            return tail[0] != os.sep  # "\\foo" is invalid
+        else:
+            return tail[0] == os.sep  # "x:foo" is invalid
     else:
-      return tail[0] == os.sep  # "x:foo" is invalid
-  else:
-    return not drive  # "x:" is invalid
+        return not drive  # "x:" is invalid
 
 
 def _makelongpath(path):
-  """Return the input path normalized to support the Windows long path syntax
-  ("\\\\?\\" prefix) if needed, i.e. if the input path is longer than the
-  MAX_PATH limit.
-  """
-  if isWindows():
-    # Note: MAX_PATH is 260, but, for directories, the maximum value is actually 246.
-    if len(path) < 246:
-      return path
-    if path.startswith(u"\\\\?\\"):
-      return path
-    if not os.path.isabs(path):
-      return path
-    # Append prefix and ensure unicode so that the special longpath syntax
-    # is supported by underlying Win32 API calls
-    return u"\\\\?\\" + os.path.normpath(path)
-  else:
-    return path
+    """Return the input path normalized to support the Windows long path syntax
+    ("\\\\?\\" prefix) if needed, i.e. if the input path is longer than the
+    MAX_PATH limit.
+    """
+    if isWindows():
+        # Note: MAX_PATH is 260, but, for directories, the maximum value is
+        # actually 246.
+        if len(path) < 246:
+            return path
+        if path.startswith("\\\\?\\"):
+            return path
+        if not os.path.isabs(path):
+            return path
+        # Append prefix and ensure unicode so that the special longpath syntax
+        # is supported by underlying Win32 API calls
+        return "\\\\?\\" + os.path.normpath(path)
+    else:
+        return path
 
 
 def rmtree(path, ignore_errors=False):
-  """shutil.rmtree(path) wrapper with support for long paths on Windows.
+    """shutil.rmtree(path) wrapper with support for long paths on Windows.
 
-  Availability: Unix, Windows."""
-  onerror = None
-  if isWindows():
-    path = _makelongpath(path)
-    onerror = handle_rmtree_error
-  shutil.rmtree(path, ignore_errors=ignore_errors, onerror=onerror)
+    Availability: Unix, Windows.
+    """
+    onerror = None
+    if isWindows():
+        path = _makelongpath(path)
+        onerror = handle_rmtree_error
+    shutil.rmtree(path, ignore_errors=ignore_errors, onerror=onerror)
 
 
 def handle_rmtree_error(function, path, excinfo):
-  # Allow deleting read-only files
-  os.chmod(path, stat.S_IWRITE)
-  function(path)
+    # Allow deleting read-only files.
+    os.chmod(path, stat.S_IWRITE)
+    function(path)
 
 
 def rename(src, dst):
-  """os.rename(src, dst) wrapper with support for long paths on Windows.
+    """os.rename(src, dst) wrapper with support for long paths on Windows.
 
-  Availability: Unix, Windows."""
-  if isWindows():
-    # On Windows, rename fails if destination exists, see
-    # https://docs.python.org/2/library/os.html#os.rename
-    try:
-      os.rename(_makelongpath(src), _makelongpath(dst))
-    except OSError as e:
-      if e.errno == errno.EEXIST:
-        os.remove(_makelongpath(dst))
-        os.rename(_makelongpath(src), _makelongpath(dst))
-      else:
-        raise
-  else:
-    shutil.move(src, dst)
+    Availability: Unix, Windows.
+    """
+    if isWindows():
+        # On Windows, rename fails if destination exists, see
+        # https://docs.python.org/2/library/os.html#os.rename
+        try:
+            os.rename(_makelongpath(src), _makelongpath(dst))
+        except OSError as e:
+            if e.errno == errno.EEXIST:
+                os.remove(_makelongpath(dst))
+                os.rename(_makelongpath(src), _makelongpath(dst))
+            else:
+                raise
+    else:
+        shutil.move(src, dst)
 
 
 def remove(path, missing_ok=False):
-  """Remove (delete) the file path. This is a replacement for os.remove that
-  allows deleting read-only files on Windows, with support for long paths and
-  for deleting directory symbolic links.
+    """Remove (delete) the file path. This is a replacement for os.remove that
+    allows deleting read-only files on Windows, with support for long paths and
+    for deleting directory symbolic links.
 
-  Availability: Unix, Windows."""
-  longpath = _makelongpath(path) if isWindows() else path
-  try:
-    os.remove(longpath)
-  except OSError as e:
-    if e.errno == errno.EACCES:
-      os.chmod(longpath, stat.S_IWRITE)
-      # Directory symbolic links must be deleted with 'rmdir'.
-      if islink(longpath) and isdir(longpath):
-        os.rmdir(longpath)
-      else:
+    Availability: Unix, Windows.
+    """
+    longpath = _makelongpath(path) if isWindows() else path
+    try:
         os.remove(longpath)
-    elif missing_ok and e.errno == errno.ENOENT:
-      pass
-    else:
-      raise
+    except OSError as e:
+        if e.errno == errno.EACCES:
+            os.chmod(longpath, stat.S_IWRITE)
+            # Directory symbolic links must be deleted with 'rmdir'.
+            if islink(longpath) and isdir(longpath):
+                os.rmdir(longpath)
+            else:
+                os.remove(longpath)
+        elif missing_ok and e.errno == errno.ENOENT:
+            pass
+        else:
+            raise
 
 
 def walk(top, topdown=True, onerror=None, followlinks=False):
-  """os.walk(path) wrapper with support for long paths on Windows.
+    """os.walk(path) wrapper with support for long paths on Windows.
 
-  Availability: Windows, Unix.
-  """
-  if isWindows():
-    return _walk_windows_impl(top, topdown, onerror, followlinks)
-  else:
-    return os.walk(top, topdown, onerror, followlinks)
+    Availability: Windows, Unix.
+    """
+    if isWindows():
+        return _walk_windows_impl(top, topdown, onerror, followlinks)
+    else:
+        return os.walk(top, topdown, onerror, followlinks)
 
 
 def _walk_windows_impl(top, topdown, onerror, followlinks):
-  try:
-    names = listdir(top)
-  except Exception as err:
-    if onerror is not None:
-      onerror(err)
-    return
+    try:
+        names = listdir(top)
+    except Exception as err:
+        if onerror is not None:
+            onerror(err)
+        return
 
-  dirs, nondirs = [], []
-  for name in names:
-    if isdir(os.path.join(top, name)):
-      dirs.append(name)
-    else:
-      nondirs.append(name)
+    dirs, nondirs = [], []
+    for name in names:
+        if isdir(os.path.join(top, name)):
+            dirs.append(name)
+        else:
+            nondirs.append(name)
 
-  if topdown:
-    yield top, dirs, nondirs
-  for name in dirs:
-    new_path = os.path.join(top, name)
-    if followlinks or not islink(new_path):
-      for x in _walk_windows_impl(new_path, topdown, onerror, followlinks):
-        yield x
-  if not topdown:
-    yield top, dirs, nondirs
+    if topdown:
+        yield top, dirs, nondirs
+    for name in dirs:
+        new_path = os.path.join(top, name)
+        if followlinks or not islink(new_path):
+            for x in _walk_windows_impl(
+                new_path, topdown, onerror, followlinks
+            ):
+                yield x
+    if not topdown:
+        yield top, dirs, nondirs
 
 
 def listdir(path):
-  """os.listdir(path) wrapper with support for long paths on Windows.
+    """os.listdir(path) wrapper with support for long paths on Windows.
 
-  Availability: Windows, Unix.
-  """
-  return os.listdir(_makelongpath(path))
+    Availability: Windows, Unix.
+    """
+    return os.listdir(_makelongpath(path))
 
 
 def rmdir(path):
-  """os.rmdir(path) wrapper with support for long paths on Windows.
+    """os.rmdir(path) wrapper with support for long paths on Windows.
 
-  Availability: Windows, Unix.
-  """
-  os.rmdir(_makelongpath(path))
+    Availability: Windows, Unix.
+    """
+    os.rmdir(_makelongpath(path))
 
 
 def isdir(path):
-  """os.path.isdir(path) wrapper with support for long paths on Windows.
+    """os.path.isdir(path) wrapper with support for long paths on Windows.
 
-  Availability: Windows, Unix.
-  """
-  return os.path.isdir(_makelongpath(path))
+    Availability: Windows, Unix.
+    """
+    return os.path.isdir(_makelongpath(path))
 
 
 def islink(path):
-  """os.path.islink(path) wrapper with support for long paths on Windows.
+    """os.path.islink(path) wrapper with support for long paths on Windows.
 
-  Availability: Windows, Unix.
-  """
-  if isWindows():
-    import platform_utils_win32
-    return platform_utils_win32.islink(_makelongpath(path))
-  else:
-    return os.path.islink(path)
+    Availability: Windows, Unix.
+    """
+    if isWindows():
+        import platform_utils_win32
+
+        return platform_utils_win32.islink(_makelongpath(path))
+    else:
+        return os.path.islink(path)
 
 
 def readlink(path):
-  """Return a string representing the path to which the symbolic link
-  points. The result may be either an absolute or relative pathname;
-  if it is relative, it may be converted to an absolute pathname using
-  os.path.join(os.path.dirname(path), result).
+    """Return a string representing the path to which the symbolic link
+    points. The result may be either an absolute or relative pathname;
+    if it is relative, it may be converted to an absolute pathname using
+    os.path.join(os.path.dirname(path), result).
 
-  Availability: Windows, Unix.
-  """
-  if isWindows():
-    import platform_utils_win32
-    return platform_utils_win32.readlink(_makelongpath(path))
-  else:
-    return os.readlink(path)
+    Availability: Windows, Unix.
+    """
+    if isWindows():
+        import platform_utils_win32
+
+        return platform_utils_win32.readlink(_makelongpath(path))
+    else:
+        return os.readlink(path)
 
 
 def realpath(path):
-  """Return the canonical path of the specified filename, eliminating
-  any symbolic links encountered in the path.
+    """Return the canonical path of the specified filename, eliminating
+    any symbolic links encountered in the path.
 
-  Availability: Windows, Unix.
-  """
-  if isWindows():
-    current_path = os.path.abspath(path)
-    path_tail = []
-    for c in range(0, 100):  # Avoid cycles
-      if islink(current_path):
-        target = readlink(current_path)
-        current_path = os.path.join(os.path.dirname(current_path), target)
-      else:
-        basename = os.path.basename(current_path)
-        if basename == '':
-          path_tail.append(current_path)
-          break
-        path_tail.append(basename)
-        current_path = os.path.dirname(current_path)
-    path_tail.reverse()
-    result = os.path.normpath(os.path.join(*path_tail))
-    return result
-  else:
-    return os.path.realpath(path)
+    Availability: Windows, Unix.
+    """
+    if isWindows():
+        current_path = os.path.abspath(path)
+        path_tail = []
+        for c in range(0, 100):  # Avoid cycles
+            if islink(current_path):
+                target = readlink(current_path)
+                current_path = os.path.join(
+                    os.path.dirname(current_path), target
+                )
+            else:
+                basename = os.path.basename(current_path)
+                if basename == "":
+                    path_tail.append(current_path)
+                    break
+                path_tail.append(basename)
+                current_path = os.path.dirname(current_path)
+        path_tail.reverse()
+        result = os.path.normpath(os.path.join(*path_tail))
+        return result
+    else:
+        return os.path.realpath(path)