Formatting: Format all python code with black.

This CL is probably not what you're looking for, it's only
automated formatting. Ignore it with
`git blame --ignore-rev <revision>` for this commit.

BUG=b:233893248
TEST=CQ

Change-Id: I66591d7a738d241aed3290138c0f68065ab10a6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3879174
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
diff --git a/scripts/autotest_quickmerge.py b/scripts/autotest_quickmerge.py
index 4fb59d5..d3cdaf4 100644
--- a/scripts/autotest_quickmerge.py
+++ b/scripts/autotest_quickmerge.py
@@ -25,420 +25,470 @@
 
 
 if cros_build_lib.IsInsideChroot():
-  # pylint: disable=import-error
-  import portage
+    # pylint: disable=import-error
+    import portage
 
 
-INCLUDE_PATTERNS_FILENAME = 'autotest-quickmerge-includepatterns'
-AUTOTEST_SYMLINK = 'autotest_lib'
-AUTOTEST_PROJECT_NAME = 'chromiumos/third_party/autotest'
-AUTOTEST_EBUILD = 'chromeos-base/autotest'
-DOWNGRADE_EBUILDS = ['chromeos-base/autotest']
+INCLUDE_PATTERNS_FILENAME = "autotest-quickmerge-includepatterns"
+AUTOTEST_SYMLINK = "autotest_lib"
+AUTOTEST_PROJECT_NAME = "chromiumos/third_party/autotest"
+AUTOTEST_EBUILD = "chromeos-base/autotest"
+DOWNGRADE_EBUILDS = ["chromeos-base/autotest"]
 
-IGNORE_SUBDIRS = ['ExternalSource',
-                  'logs',
-                  'results',
-                  'site-packages']
+IGNORE_SUBDIRS = ["ExternalSource", "logs", "results", "site-packages"]
 
 # Data structure describing a single rsync filesystem change.
 #
 # change_description: An 11 character string, the rsync change description
 #                     for the particular file.
 # absolute_path: The absolute path of the created or modified file.
-ItemizedChange = namedtuple('ItemizedChange', ['change_description',
-                                               'absolute_path'])
+ItemizedChange = namedtuple(
+    "ItemizedChange", ["change_description", "absolute_path"]
+)
 
 # Data structure describing the rsync new/modified files or directories.
 #
 # new_files: A list of ItemizedChange objects for new files.
 # modified_files: A list of ItemizedChange objects for modified files.
 # new_directories: A list of ItemizedChange objects for new directories.
-ItemizedChangeReport = namedtuple('ItemizedChangeReport',
-                                  ['new_files', 'modified_files',
-                                   'new_directories'])
+ItemizedChangeReport = namedtuple(
+    "ItemizedChangeReport", ["new_files", "modified_files", "new_directories"]
+)
 
 
 class PortagePackageAPIError(Exception):
-  """Exception thrown when unable to retrieve a portage package API."""
+    """Exception thrown when unable to retrieve a portage package API."""
 
 
 def GetStalePackageNames(change_list, autotest_sysroot):
-  """Given a rsync change report, returns the names of stale test packages.
+    """Given a rsync change report, returns the names of stale test packages.
 
-  This function pulls out test package names for client-side tests, stored
-  within the client/site_tests directory tree, that had any files added or
-  modified and for whom any existing bzipped test packages may now be stale.
+    This function pulls out test package names for client-side tests, stored
+    within the client/site_tests directory tree, that had any files added or
+    modified and for whom any existing bzipped test packages may now be stale.
 
-  Args:
-    change_list: A list of ItemizedChange objects corresponding to changed
-                 or modified files.
-    autotest_sysroot: Absolute path of autotest in the sysroot,
-                      e.g. '/build/lumpy/usr/local/build/autotest'
+    Args:
+      change_list: A list of ItemizedChange objects corresponding to changed
+                   or modified files.
+      autotest_sysroot: Absolute path of autotest in the sysroot,
+                        e.g. '/build/lumpy/usr/local/build/autotest'
 
-  Returns:
-    A list of test package names, eg ['factory_Leds', 'login_UserPolicyKeys'].
-    May contain duplicate entries if multiple files within a test directory
-    were modified.
-  """
-  exp = os.path.abspath(autotest_sysroot) + r'/client/site_tests/(.*?)/.*'
-  matches = [re.match(exp, change.absolute_path) for change in change_list]
-  return [match.group(1) for match in matches if match]
+    Returns:
+      A list of test package names, eg ['factory_Leds', 'login_UserPolicyKeys'].
+      May contain duplicate entries if multiple files within a test directory
+      were modified.
+    """
+    exp = os.path.abspath(autotest_sysroot) + r"/client/site_tests/(.*?)/.*"
+    matches = [re.match(exp, change.absolute_path) for change in change_list]
+    return [match.group(1) for match in matches if match]
 
 
 def ItemizeChangesFromRsyncOutput(rsync_output, destination_path):
-  """Convert the output of an rsync with `-i` to a ItemizedChangeReport object.
+    """Convert the output of an rsync with `-i` to a ItemizedChangeReport object.
 
-  Args:
-    rsync_output: String stdout of rsync command that was run with `-i` option.
-    destination_path: String absolute path of the destination directory for the
-                      rsync operations. This argument is necessary because
-                      rsync's output only gives the relative path of
-                      touched/added files.
+    Args:
+      rsync_output: String stdout of rsync command that was run with `-i` option.
+      destination_path: String absolute path of the destination directory for the
+                        rsync operations. This argument is necessary because
+                        rsync's output only gives the relative path of
+                        touched/added files.
 
-  Returns:
-    ItemizedChangeReport object giving the absolute paths of files that were
-    created or modified by rsync.
-  """
-  modified_matches = re.findall(r'([.>]f[^+]{9}) (.*)', rsync_output)
-  new_matches = re.findall(r'(>f\+{9}) (.*)', rsync_output)
-  new_symlink_matches = re.findall(r'(cL\+{9}) (.*) -> .*', rsync_output)
-  new_dir_matches = re.findall(r'(cd\+{9}) (.*)', rsync_output)
+    Returns:
+      ItemizedChangeReport object giving the absolute paths of files that were
+      created or modified by rsync.
+    """
+    modified_matches = re.findall(r"([.>]f[^+]{9}) (.*)", rsync_output)
+    new_matches = re.findall(r"(>f\+{9}) (.*)", rsync_output)
+    new_symlink_matches = re.findall(r"(cL\+{9}) (.*) -> .*", rsync_output)
+    new_dir_matches = re.findall(r"(cd\+{9}) (.*)", rsync_output)
 
-  absolute_modified = [ItemizedChange(c, os.path.join(destination_path, f))
-                       for (c, f) in modified_matches]
+    absolute_modified = [
+        ItemizedChange(c, os.path.join(destination_path, f))
+        for (c, f) in modified_matches
+    ]
 
-  # Note: new symlinks are treated as new files.
-  absolute_new = [ItemizedChange(c, os.path.join(destination_path, f))
-                  for (c, f) in new_matches + new_symlink_matches]
+    # Note: new symlinks are treated as new files.
+    absolute_new = [
+        ItemizedChange(c, os.path.join(destination_path, f))
+        for (c, f) in new_matches + new_symlink_matches
+    ]
 
-  absolute_new_dir = [ItemizedChange(c, os.path.join(destination_path, f))
-                      for (c, f) in new_dir_matches]
+    absolute_new_dir = [
+        ItemizedChange(c, os.path.join(destination_path, f))
+        for (c, f) in new_dir_matches
+    ]
 
-  return ItemizedChangeReport(new_files=absolute_new,
-                              modified_files=absolute_modified,
-                              new_directories=absolute_new_dir)
+    return ItemizedChangeReport(
+        new_files=absolute_new,
+        modified_files=absolute_modified,
+        new_directories=absolute_new_dir,
+    )
 
 
 def GetPackageAPI(portage_root, package_cp):
-  """Gets portage API handles for the given package.
+    """Gets portage API handles for the given package.
 
-  Args:
-    portage_root: Root directory of portage tree. Eg '/' or '/build/lumpy'
-    package_cp: A string similar to 'chromeos-base/autotest-tests'.
+    Args:
+      portage_root: Root directory of portage tree. Eg '/' or '/build/lumpy'
+      package_cp: A string similar to 'chromeos-base/autotest-tests'.
 
-  Returns:
-    Returns (package, vartree) tuple, where
-      package is of type portage.dbapi.vartree.dblink
-      vartree is of type portage.dbapi.vartree.vartree
-  """
-  if portage_root is None:
+    Returns:
+      Returns (package, vartree) tuple, where
+        package is of type portage.dbapi.vartree.dblink
+        vartree is of type portage.dbapi.vartree.vartree
+    """
+    if portage_root is None:
+        # pylint: disable=no-member
+        portage_root = portage.root
+    # Ensure that portage_root ends with trailing slash.
+    portage_root = os.path.join(portage_root, "")
+
+    # Create a vartree object corresponding to portage_root.
+    trees = portage.create_trees(portage_root, portage_root)
+    vartree = trees[portage_root]["vartree"]
+
+    # List the matching installed packages in cpv format.
+    matching_packages = vartree.dbapi.cp_list(package_cp)
+
+    if not matching_packages:
+        raise PortagePackageAPIError(
+            "No matching package for %s in portage_root "
+            "%s" % (package_cp, portage_root)
+        )
+
+    if len(matching_packages) > 1:
+        raise PortagePackageAPIError(
+            "Too many matching packages for %s in "
+            "portage_root %s" % (package_cp, portage_root)
+        )
+
+    # Convert string match to package dblink.
+    package_cpv = matching_packages[0]
+    package_split = package_info.SplitCPV(package_cpv)
     # pylint: disable=no-member
-    portage_root = portage.root
-  # Ensure that portage_root ends with trailing slash.
-  portage_root = os.path.join(portage_root, '')
+    package = portage.dblink(
+        package_split.category,
+        package_split.pv,
+        settings=vartree.settings,
+        vartree=vartree,
+    )
 
-  # Create a vartree object corresponding to portage_root.
-  trees = portage.create_trees(portage_root, portage_root)
-  vartree = trees[portage_root]['vartree']
-
-  # List the matching installed packages in cpv format.
-  matching_packages = vartree.dbapi.cp_list(package_cp)
-
-  if not matching_packages:
-    raise PortagePackageAPIError('No matching package for %s in portage_root '
-                                 '%s' % (package_cp, portage_root))
-
-  if len(matching_packages) > 1:
-    raise PortagePackageAPIError('Too many matching packages for %s in '
-                                 'portage_root %s' % (package_cp,
-                                                      portage_root))
-
-  # Convert string match to package dblink.
-  package_cpv = matching_packages[0]
-  package_split = package_info.SplitCPV(package_cpv)
-  # pylint: disable=no-member
-  package = portage.dblink(package_split.category,
-                           package_split.pv, settings=vartree.settings,
-                           vartree=vartree)
-
-  return package, vartree
+    return package, vartree
 
 
-def DowngradePackageVersion(portage_root, package_cp,
-                            downgrade_to_version='0'):
-  """Downgrade the specified portage package version.
+def DowngradePackageVersion(portage_root, package_cp, downgrade_to_version="0"):
+    """Downgrade the specified portage package version.
 
-  Args:
-    portage_root: Root directory of portage tree. Eg '/' or '/build/lumpy'
-    package_cp: A string similar to 'chromeos-base/autotest-tests'.
-    downgrade_to_version: String version to downgrade to. Default: '0'
+    Args:
+      portage_root: Root directory of portage tree. Eg '/' or '/build/lumpy'
+      package_cp: A string similar to 'chromeos-base/autotest-tests'.
+      downgrade_to_version: String version to downgrade to. Default: '0'
 
-  Returns:
-    True on success. False on failure (nonzero return code from `mv` command).
-  """
-  try:
-    package, _ = GetPackageAPI(portage_root, package_cp)
-  except PortagePackageAPIError:
-    # Unable to fetch a corresponding portage package API for this
-    # package_cp (either no such package, or name ambigious and matches).
-    # So, just fail out.
-    return False
+    Returns:
+      True on success. False on failure (nonzero return code from `mv` command).
+    """
+    try:
+        package, _ = GetPackageAPI(portage_root, package_cp)
+    except PortagePackageAPIError:
+        # Unable to fetch a corresponding portage package API for this
+        # package_cp (either no such package, or name ambigious and matches).
+        # So, just fail out.
+        return False
 
-  source_directory = package.dbdir
-  destination_path = os.path.join(
-      package.dbroot, package_cp + '-' + downgrade_to_version)
-  if os.path.abspath(source_directory) == os.path.abspath(destination_path):
-    return True
-  command = ['mv', source_directory, destination_path]
-  code = cros_build_lib.sudo_run(command, check=False).returncode
-  return code == 0
+    source_directory = package.dbdir
+    destination_path = os.path.join(
+        package.dbroot, package_cp + "-" + downgrade_to_version
+    )
+    if os.path.abspath(source_directory) == os.path.abspath(destination_path):
+        return True
+    command = ["mv", source_directory, destination_path]
+    code = cros_build_lib.sudo_run(command, check=False).returncode
+    return code == 0
 
 
 def UpdatePackageContents(change_report, package_cp, portage_root=None):
-  """Add newly created files/directors to package contents.
+    """Add newly created files/directors to package contents.
 
-  Given an ItemizedChangeReport, add the newly created files and directories
-  to the CONTENTS of an installed portage package, such that these files are
-  considered owned by that package.
+    Given an ItemizedChangeReport, add the newly created files and directories
+    to the CONTENTS of an installed portage package, such that these files are
+    considered owned by that package.
 
-  Args:
-    change_report: ItemizedChangeReport object for the changes to be
-                   made to the package.
-    package_cp: A string similar to 'chromeos-base/autotest-tests' giving
-                the package category and name of the package to be altered.
-    portage_root: Portage root path, corresponding to the board that
-                  we are working on. Defaults to '/'
-  """
-  package, vartree = GetPackageAPI(portage_root, package_cp)
+    Args:
+      change_report: ItemizedChangeReport object for the changes to be
+                     made to the package.
+      package_cp: A string similar to 'chromeos-base/autotest-tests' giving
+                  the package category and name of the package to be altered.
+      portage_root: Portage root path, corresponding to the board that
+                    we are working on. Defaults to '/'
+    """
+    package, vartree = GetPackageAPI(portage_root, package_cp)
 
-  # Append new contents to package contents dictionary.
-  contents = package.getcontents().copy()
-  for _, filename in change_report.new_files:
-    contents.setdefault(filename, (u'obj', '0', '0'))
-  for _, dirname in change_report.new_directories:
-    # Strip trailing slashes if present.
-    contents.setdefault(dirname.rstrip('/'), (u'dir',))
+    # Append new contents to package contents dictionary.
+    contents = package.getcontents().copy()
+    for _, filename in change_report.new_files:
+        contents.setdefault(filename, ("obj", "0", "0"))
+    for _, dirname in change_report.new_directories:
+        # Strip trailing slashes if present.
+        contents.setdefault(dirname.rstrip("/"), ("dir",))
 
-  # Write new contents dictionary to file.
-  vartree.dbapi.writeContentsToContentsFile(package, contents)
+    # Write new contents dictionary to file.
+    vartree.dbapi.writeContentsToContentsFile(package, contents)
 
 
 def RemoveBzipPackages(autotest_sysroot):
-  """Remove all bzipped test/dep/profiler packages from sysroot autotest.
+    """Remove all bzipped test/dep/profiler packages from sysroot autotest.
 
-  Args:
-    autotest_sysroot: Absolute path of autotest in the sysroot,
-                      e.g. '/build/lumpy/usr/local/build/autotest'
-  """
-  osutils.RmDir(os.path.join(autotest_sysroot, 'packages'),
-                ignore_missing=True)
-  osutils.SafeUnlink(os.path.join(autotest_sysroot, 'packages.checksum'))
+    Args:
+      autotest_sysroot: Absolute path of autotest in the sysroot,
+                        e.g. '/build/lumpy/usr/local/build/autotest'
+    """
+    osutils.RmDir(
+        os.path.join(autotest_sysroot, "packages"), ignore_missing=True
+    )
+    osutils.SafeUnlink(os.path.join(autotest_sysroot, "packages.checksum"))
 
 
-def RsyncQuickmerge(source_path, sysroot_autotest_path,
-                    include_pattern_file=None, pretend=False,
-                    overwrite=False):
-  """Run rsync quickmerge command, with specified arguments.
+def RsyncQuickmerge(
+    source_path,
+    sysroot_autotest_path,
+    include_pattern_file=None,
+    pretend=False,
+    overwrite=False,
+):
+    """Run rsync quickmerge command, with specified arguments.
 
-  Command will take form `rsync -a [options] --exclude=**.pyc
-                         --exclude=**.pyo
-                         [optional --include-from include_pattern_file]
-                         --exclude=* [source_path] [sysroot_autotest_path]`
+    Command will take form `rsync -a [options] --exclude=**.pyc
+                           --exclude=**.pyo
+                           [optional --include-from include_pattern_file]
+                           --exclude=* [source_path] [sysroot_autotest_path]`
 
-  Args:
-    source_path: Directory to rsync from.
-    sysroot_autotest_path: Directory to rsync too.
-    include_pattern_file: Optional pattern of files to include in rsync.
-    pretend: True to use the '-n' option to rsync, to perform dry run.
-    overwrite: True to omit '-u' option, overwrite all files in sysroot,
-               not just older files.
+    Args:
+      source_path: Directory to rsync from.
+      sysroot_autotest_path: Directory to rsync too.
+      include_pattern_file: Optional pattern of files to include in rsync.
+      pretend: True to use the '-n' option to rsync, to perform dry run.
+      overwrite: True to omit '-u' option, overwrite all files in sysroot,
+                 not just older files.
 
-  Returns:
-    The cros_build_lib.CompletedProcess object resulting from the rsync command.
-  """
-  command = ['rsync', '-a']
+    Returns:
+      The cros_build_lib.CompletedProcess object resulting from the rsync command.
+    """
+    command = ["rsync", "-a"]
 
-  # For existing files, preserve destination permissions. This ensures that
-  # existing files end up with the file permissions set by the ebuilds.
-  # If this script copies over a file that does not exist in the destination
-  # tree, it will set the least restrictive permissions allowed in the
-  # destination tree. This could happen if the file copied is not installed by
-  # *any* ebuild, or if the ebuild that installs the file was never emerged.
-  command += ['--no-p', '--chmod=ugo=rwX']
+    # For existing files, preserve destination permissions. This ensures that
+    # existing files end up with the file permissions set by the ebuilds.
+    # If this script copies over a file that does not exist in the destination
+    # tree, it will set the least restrictive permissions allowed in the
+    # destination tree. This could happen if the file copied is not installed by
+    # *any* ebuild, or if the ebuild that installs the file was never emerged.
+    command += ["--no-p", "--chmod=ugo=rwX"]
 
-  if pretend:
-    command += ['-n']
+    if pretend:
+        command += ["-n"]
 
-  if not overwrite:
-    command += ['-u']
+    if not overwrite:
+        command += ["-u"]
 
-  command += ['-i']
+    command += ["-i"]
 
-  command += ['--exclude=**.pyc']
-  command += ['--exclude=**.pyo']
+    command += ["--exclude=**.pyc"]
+    command += ["--exclude=**.pyo"]
 
-  # Always exclude the autotest symlink to avoid a possible recursion hole.
-  # The order here is (unfortunately) extremely important.
-  if AUTOTEST_SYMLINK not in source_path:
-    command += ['--exclude=%s/' % AUTOTEST_SYMLINK]
+    # Always exclude the autotest symlink to avoid a possible recursion hole.
+    # The order here is (unfortunately) extremely important.
+    if AUTOTEST_SYMLINK not in source_path:
+        command += ["--exclude=%s/" % AUTOTEST_SYMLINK]
 
-  # Exclude files with a specific substring in their name, because
-  # they create an ambiguous itemized report. (see unit test file for details)
-  command += ['--exclude=** -> *']
+    # Exclude files with a specific substring in their name, because
+    # they create an ambiguous itemized report. (see unit test file for details)
+    command += ["--exclude=** -> *"]
 
-  # Order seems important here, and this include must come before the possible
-  # exclude below...
-  if include_pattern_file:
-    command += ['--include-from=%s' % include_pattern_file]
+    # Order seems important here, and this include must come before the possible
+    # exclude below...
+    if include_pattern_file:
+        command += ["--include-from=%s" % include_pattern_file]
 
-  if AUTOTEST_SYMLINK in source_path:
-    command += ['-l']
-  else:
-    command += ['-L', '--exclude=*']
+    if AUTOTEST_SYMLINK in source_path:
+        command += ["-l"]
+    else:
+        command += ["-L", "--exclude=*"]
 
-  command += [source_path, sysroot_autotest_path]
+    command += [source_path, sysroot_autotest_path]
 
-  return cros_build_lib.sudo_run(command, stdout=True, encoding='utf-8')
+    return cros_build_lib.sudo_run(command, stdout=True, encoding="utf-8")
 
 
 def ParseArguments(argv):
-  """Parse command line arguments
+    """Parse command line arguments
 
-  Returns:
-    parsed arguments.
-  """
-  parser = commandline.ArgumentParser(
-      description='Perform a fast approximation to emerge-$board '
-                  'autotest-all, by rsyncing source tree to sysroot.')
+    Returns:
+      parsed arguments.
+    """
+    parser = commandline.ArgumentParser(
+        description="Perform a fast approximation to emerge-$board "
+        "autotest-all, by rsyncing source tree to sysroot."
+    )
 
-  default_board = cros_build_lib.GetDefaultBoard()
-  parser.add_argument('--board', metavar='BOARD', default=default_board,
-                      help='Board to perform quickmerge for. Default: ' +
-                      (default_board or 'Not configured.'))
-  parser.add_argument('--pretend', action='store_true',
-                      help='Dry run only, do not modify sysroot autotest.')
-  parser.add_argument('--overwrite', action='store_true',
-                      help='Overwrite existing files even if newer.')
-  parser.add_argument('--force', action='store_true',
-                      help=argparse.SUPPRESS)
+    default_board = cros_build_lib.GetDefaultBoard()
+    parser.add_argument(
+        "--board",
+        metavar="BOARD",
+        default=default_board,
+        help="Board to perform quickmerge for. Default: "
+        + (default_board or "Not configured."),
+    )
+    parser.add_argument(
+        "--pretend",
+        action="store_true",
+        help="Dry run only, do not modify sysroot autotest.",
+    )
+    parser.add_argument(
+        "--overwrite",
+        action="store_true",
+        help="Overwrite existing files even if newer.",
+    )
+    parser.add_argument("--force", action="store_true", help=argparse.SUPPRESS)
 
-  # Used only if test_that is calling autotest_quickmerge and has detected that
-  # the sysroot autotest path is still in usr/local/autotest (ie the build
-  # pre-dates https://chromium-review.googlesource.com/#/c/62880/ )
-  parser.add_argument('--legacy_path', action='store_true',
-                      help=argparse.SUPPRESS)
+    # Used only if test_that is calling autotest_quickmerge and has detected that
+    # the sysroot autotest path is still in usr/local/autotest (ie the build
+    # pre-dates https://chromium-review.googlesource.com/#/c/62880/ )
+    parser.add_argument(
+        "--legacy_path", action="store_true", help=argparse.SUPPRESS
+    )
 
-  return parser.parse_args(argv)
+    return parser.parse_args(argv)
 
 
 def _maybe_add_autotest_symlink(src_paths, path, dest_path):
-  """If the symlink folders exists, add them to the src to quickmerge."""
-  autotest_client_symlink = os.path.join(path, 'client', AUTOTEST_SYMLINK)
-  if os.path.exists(autotest_client_symlink):
-    src_paths.append((autotest_client_symlink,
-                      os.path.join(dest_path, 'client/')))
-  autotest_main_symlink = os.path.join(path, AUTOTEST_SYMLINK)
-  if os.path.exists(autotest_main_symlink):
-    src_paths.append((autotest_main_symlink, dest_path))
+    """If the symlink folders exists, add them to the src to quickmerge."""
+    autotest_client_symlink = os.path.join(path, "client", AUTOTEST_SYMLINK)
+    if os.path.exists(autotest_client_symlink):
+        src_paths.append(
+            (autotest_client_symlink, os.path.join(dest_path, "client/"))
+        )
+    autotest_main_symlink = os.path.join(path, AUTOTEST_SYMLINK)
+    if os.path.exists(autotest_main_symlink):
+        src_paths.append((autotest_main_symlink, dest_path))
 
 
 def main(argv):
-  cros_build_lib.AssertInsideChroot()
+    cros_build_lib.AssertInsideChroot()
 
-  args = ParseArguments(argv)
+    args = ParseArguments(argv)
 
-  if osutils.IsNonRootUser():
-    try:
-      cros_build_lib.sudo_run([sys.executable] + sys.argv)
-    except cros_build_lib.RunCommandError:
-      return 1
-    return 0
+    if osutils.IsNonRootUser():
+        try:
+            cros_build_lib.sudo_run([sys.executable] + sys.argv)
+        except cros_build_lib.RunCommandError:
+            return 1
+        return 0
 
-  if not args.board:
-    print('No board specified. Aborting.')
-    return 1
+    if not args.board:
+        print("No board specified. Aborting.")
+        return 1
 
-  manifest = git.ManifestCheckout.Cached(constants.SOURCE_ROOT)
-  checkout = manifest.FindCheckout(AUTOTEST_PROJECT_NAME)
-  brillo_autotest_src_path = os.path.join(checkout.GetPath(absolute=True), '')
+    manifest = git.ManifestCheckout.Cached(constants.SOURCE_ROOT)
+    checkout = manifest.FindCheckout(AUTOTEST_PROJECT_NAME)
+    brillo_autotest_src_path = os.path.join(checkout.GetPath(absolute=True), "")
 
-  script_path = os.path.dirname(__file__)
-  include_pattern_file = os.path.join(script_path, INCLUDE_PATTERNS_FILENAME)
+    script_path = os.path.dirname(__file__)
+    include_pattern_file = os.path.join(script_path, INCLUDE_PATTERNS_FILENAME)
 
-  # TODO: Determine the following string programatically.
-  sysroot_path = os.path.join('/build', args.board, '')
-  sysroot_autotest_path = os.path.join(sysroot_path,
-                                       constants.AUTOTEST_BUILD_PATH, '')
-  if args.legacy_path:
-    sysroot_autotest_path = os.path.join(sysroot_path, 'usr/local/autotest',
-                                         '')
+    # TODO: Determine the following string programatically.
+    sysroot_path = os.path.join("/build", args.board, "")
+    sysroot_autotest_path = os.path.join(
+        sysroot_path, constants.AUTOTEST_BUILD_PATH, ""
+    )
+    if args.legacy_path:
+        sysroot_autotest_path = os.path.join(
+            sysroot_path, "usr/local/autotest", ""
+        )
 
-  # Generate the list of source paths to copy.
-  src_paths = {os.path.abspath(brillo_autotest_src_path)}
-  for quickmerge_file in glob.glob(os.path.join(sysroot_autotest_path,
-                                                'quickmerge', '*', '*')):
-    try:
-      path = osutils.ReadFile(quickmerge_file).strip()
-      if path and os.path.exists(path):
-        src_paths.add(os.path.abspath(path))
-    except IOError:
-      logging.error('Could not quickmerge for project: %s',
-                    os.path.basename(quickmerge_file))
+    # Generate the list of source paths to copy.
+    src_paths = {os.path.abspath(brillo_autotest_src_path)}
+    for quickmerge_file in glob.glob(
+        os.path.join(sysroot_autotest_path, "quickmerge", "*", "*")
+    ):
+        try:
+            path = osutils.ReadFile(quickmerge_file).strip()
+            if path and os.path.exists(path):
+                src_paths.add(os.path.abspath(path))
+        except IOError:
+            logging.error(
+                "Could not quickmerge for project: %s",
+                os.path.basename(quickmerge_file),
+            )
 
-  # Autotest uses a circular symlink in client that *must* be added after the
-  # other sections of Autotest.
-  src_paths = list(src_paths)
+    # Autotest uses a circular symlink in client that *must* be added after the
+    # other sections of Autotest.
+    src_paths = list(src_paths)
 
-  # All destination paths up to this point are the same, but other sources
-  # added below might have a different one.
-  src_dest_paths = [(src_path + '/', sysroot_autotest_path)
-                    for src_path in src_paths]
+    # All destination paths up to this point are the same, but other sources
+    # added below might have a different one.
+    src_dest_paths = [
+        (src_path + "/", sysroot_autotest_path) for src_path in src_paths
+    ]
 
-  _maybe_add_autotest_symlink(src_dest_paths, brillo_autotest_src_path,
-                              sysroot_autotest_path)
-  num_new_files = 0
-  num_modified_files = 0
-  for src_path, dest_path in src_dest_paths:
-    rsync_output = RsyncQuickmerge(src_path, dest_path,
-                                   include_pattern_file, args.pretend,
-                                   args.overwrite)
+    _maybe_add_autotest_symlink(
+        src_dest_paths, brillo_autotest_src_path, sysroot_autotest_path
+    )
+    num_new_files = 0
+    num_modified_files = 0
+    for src_path, dest_path in src_dest_paths:
+        rsync_output = RsyncQuickmerge(
+            src_path,
+            dest_path,
+            include_pattern_file,
+            args.pretend,
+            args.overwrite,
+        )
 
-    if args.verbose:
-      logging.info(rsync_output.stdout)
-    change_report = ItemizeChangesFromRsyncOutput(rsync_output.stdout,
-                                                  sysroot_autotest_path)
-    num_new_files = num_new_files + len(change_report.new_files)
-    num_modified_files = num_modified_files + len(change_report.modified_files)
+        if args.verbose:
+            logging.info(rsync_output.stdout)
+        change_report = ItemizeChangesFromRsyncOutput(
+            rsync_output.stdout, sysroot_autotest_path
+        )
+        num_new_files = num_new_files + len(change_report.new_files)
+        num_modified_files = num_modified_files + len(
+            change_report.modified_files
+        )
+        if not args.pretend:
+            logging.info("Updating portage database.")
+            UpdatePackageContents(change_report, AUTOTEST_EBUILD, sysroot_path)
+
     if not args.pretend:
-      logging.info('Updating portage database.')
-      UpdatePackageContents(change_report, AUTOTEST_EBUILD, sysroot_path)
+        for logfile in glob.glob(
+            os.path.join(sysroot_autotest_path, "packages", "*.log")
+        ):
+            try:
+                # Open file in a try-except block, for atomicity, instead of
+                # doing existence check.
+                with open(logfile, "r") as f:
+                    package_cp = f.readline().strip()
+                    DOWNGRADE_EBUILDS.append(package_cp)
+            except IOError:
+                pass
 
-  if not args.pretend:
-    for logfile in glob.glob(os.path.join(sysroot_autotest_path, 'packages',
-                                          '*.log')):
-      try:
-        # Open file in a try-except block, for atomicity, instead of
-        # doing existence check.
-        with open(logfile, 'r') as f:
-          package_cp = f.readline().strip()
-          DOWNGRADE_EBUILDS.append(package_cp)
-      except IOError:
-        pass
+        for ebuild in DOWNGRADE_EBUILDS:
+            if not DowngradePackageVersion(sysroot_path, ebuild):
+                logging.warning(
+                    "Unable to downgrade package %s version number.", ebuild
+                )
+        RemoveBzipPackages(sysroot_autotest_path)
 
-    for ebuild in DOWNGRADE_EBUILDS:
-      if not DowngradePackageVersion(sysroot_path, ebuild):
-        logging.warning('Unable to downgrade package %s version number.',
-                        ebuild)
-    RemoveBzipPackages(sysroot_autotest_path)
+        sentinel_filename = os.path.join(
+            sysroot_autotest_path, ".quickmerge_sentinel"
+        )
+        cros_build_lib.run(["touch", sentinel_filename])
 
-    sentinel_filename = os.path.join(sysroot_autotest_path,
-                                     '.quickmerge_sentinel')
-    cros_build_lib.run(['touch', sentinel_filename])
+    if args.pretend:
+        logging.info(
+            "The following message is pretend only. No filesystem "
+            "changes made."
+        )
+    logging.info(
+        "Quickmerge complete. Created or modified %s files.",
+        num_new_files + num_modified_files,
+    )
 
-  if args.pretend:
-    logging.info('The following message is pretend only. No filesystem '
-                 'changes made.')
-  logging.info('Quickmerge complete. Created or modified %s files.',
-               num_new_files + num_modified_files)
-
-  return 0
+    return 0