From 4b93c57d440b244532597d0c5b840a9f8b3412ec Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 30 Nov 2023 08:37:11 +0100 Subject: argparse: make scope choices lazy s.t. validation in tests works (#41344) --- lib/spack/spack/cmd/add.py | 2 +- lib/spack/spack/cmd/bootstrap.py | 7 +++---- lib/spack/spack/cmd/buildcache.py | 6 ++---- lib/spack/spack/cmd/change.py | 2 +- lib/spack/spack/cmd/clean.py | 2 +- lib/spack/spack/cmd/common/arguments.py | 10 ++++++++++ lib/spack/spack/cmd/common/env_utility.py | 2 +- lib/spack/spack/cmd/compiler.py | 11 +++++------ lib/spack/spack/cmd/compilers.py | 5 ++--- lib/spack/spack/cmd/config.py | 10 ++++------ lib/spack/spack/cmd/deconcretize.py | 2 +- lib/spack/spack/cmd/dependencies.py | 2 +- lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/cmd/deprecate.py | 2 +- lib/spack/spack/cmd/dev_build.py | 2 +- lib/spack/spack/cmd/develop.py | 2 +- lib/spack/spack/cmd/diff.py | 2 +- lib/spack/spack/cmd/env.py | 2 +- lib/spack/spack/cmd/extensions.py | 2 +- lib/spack/spack/cmd/external.py | 8 +++----- lib/spack/spack/cmd/fetch.py | 2 +- lib/spack/spack/cmd/find.py | 2 +- lib/spack/spack/cmd/gpg.py | 2 +- lib/spack/spack/cmd/graph.py | 2 +- lib/spack/spack/cmd/info.py | 2 +- lib/spack/spack/cmd/install.py | 2 +- lib/spack/spack/cmd/list.py | 2 +- lib/spack/spack/cmd/load.py | 2 +- lib/spack/spack/cmd/location.py | 2 +- lib/spack/spack/cmd/mark.py | 2 +- lib/spack/spack/cmd/mirror.py | 15 ++++++--------- lib/spack/spack/cmd/modules/__init__.py | 2 +- lib/spack/spack/cmd/patch.py | 2 +- lib/spack/spack/cmd/pkg.py | 2 +- lib/spack/spack/cmd/remove.py | 2 +- lib/spack/spack/cmd/repo.py | 8 ++++---- lib/spack/spack/cmd/restage.py | 2 +- lib/spack/spack/cmd/solve.py | 2 +- lib/spack/spack/cmd/spec.py | 2 +- lib/spack/spack/cmd/stage.py | 2 +- lib/spack/spack/cmd/test.py | 2 +- lib/spack/spack/cmd/tutorial.py | 2 +- lib/spack/spack/cmd/undevelop.py | 2 +- lib/spack/spack/cmd/uninstall.py | 2 +- lib/spack/spack/cmd/unload.py | 2 +- lib/spack/spack/cmd/versions.py | 2 +- 46 files changed, 76 insertions(+), 78 deletions(-) diff --git a/lib/spack/spack/cmd/add.py b/lib/spack/spack/cmd/add.py index 53544ad40a..dd5338e3ca 100644 --- a/lib/spack/spack/cmd/add.py +++ b/lib/spack/spack/cmd/add.py @@ -6,7 +6,7 @@ import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments +from spack.cmd.common import arguments description = "add a spec to an environment" section = "environments" diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index 71c3d3a045..7c07625895 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -15,13 +15,13 @@ import spack import spack.bootstrap import spack.bootstrap.config import spack.bootstrap.core -import spack.cmd.common.arguments import spack.config import spack.main import spack.mirror import spack.spec import spack.stage import spack.util.path +from spack.cmd.common import arguments description = "manage bootstrap configuration" section = "system" @@ -68,10 +68,9 @@ SOURCE_METADATA = { def _add_scope_option(parser): - scopes = spack.config.scopes() parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, help="configuration scope to read/modify", ) @@ -106,7 +105,7 @@ def setup_parser(subparser): disable.add_argument("name", help="name of the source to be disabled", nargs="?", default=None) reset = sp.add_parser("reset", help="reset bootstrapping configuration to Spack defaults") - spack.cmd.common.arguments.add_common_arguments(reset, ["yes_to_all"]) + arguments.add_common_arguments(reset, ["yes_to_all"]) root = sp.add_parser("root", help="get/set the root bootstrap directory") _add_scope_option(root) diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py index 94cce16030..7896b54373 100644 --- a/lib/spack/spack/cmd/buildcache.py +++ b/lib/spack/spack/cmd/buildcache.py @@ -21,7 +21,6 @@ from llnl.util.lang import elide_list import spack.binary_distribution as bindist import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev import spack.error @@ -40,6 +39,7 @@ import spack.util.url as url_util import spack.util.web as web_util from spack.build_environment import determine_number_of_jobs from spack.cmd import display_specs +from spack.cmd.common import arguments from spack.oci.image import ( Digest, ImageReference, @@ -182,11 +182,9 @@ def setup_parser(subparser: argparse.ArgumentParser): ) # used to construct scope arguments below - scopes = spack.config.scopes() - check.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope containing mirrors to check", diff --git a/lib/spack/spack/cmd/change.py b/lib/spack/spack/cmd/change.py index 0a57cb6da5..3662dc22e6 100644 --- a/lib/spack/spack/cmd/change.py +++ b/lib/spack/spack/cmd/change.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import spack.cmd -import spack.cmd.common.arguments as arguments +from spack.cmd.common import arguments description = "change an existing spec in an environment" section = "environments" diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index 5a1831cda5..59b0529fd2 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -12,13 +12,13 @@ import llnl.util.tty as tty import spack.bootstrap import spack.caches -import spack.cmd.common.arguments as arguments import spack.cmd.test import spack.config import spack.repo import spack.stage import spack.store import spack.util.path +from spack.cmd.common import arguments from spack.paths import lib_path, var_path description = "remove temporary build files and/or downloaded archives" diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 9aa3edac47..79f844d0e2 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -124,6 +124,16 @@ class DeptypeAction(argparse.Action): setattr(namespace, self.dest, deptype) +class ConfigScopeChoices: + """A lazy list of config scope values (values may change at runtime in tests).""" + + def __contains__(self, item): + return item in spack.config.scopes() + + def __iter__(self): + return iter(spack.config.scopes().keys()) + + def _cdash_reporter(namespace): """Helper function to create a CDash reporter. This function gets an early reference to the argparse namespace under construction, so it can later use it to create the object. diff --git a/lib/spack/spack/cmd/common/env_utility.py b/lib/spack/spack/cmd/common/env_utility.py index b8a6338d92..175105d906 100644 --- a/lib/spack/spack/cmd/common/env_utility.py +++ b/lib/spack/spack/cmd/common/env_utility.py @@ -8,13 +8,13 @@ import os import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.deptypes as dt import spack.error import spack.paths import spack.spec import spack.store from spack import build_environment, traverse +from spack.cmd.common import arguments from spack.context import Context from spack.util.environment import dump_environment, pickle_environment diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 76eb8d3150..6ba6371087 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -14,6 +14,7 @@ from llnl.util.tty.color import colorize import spack.compilers import spack.config import spack.spec +from spack.cmd.common import arguments description = "manage compilers" section = "system" @@ -23,8 +24,6 @@ level = "long" def setup_parser(subparser): sp = subparser.add_subparsers(metavar="SUBCOMMAND", dest="compiler_command") - scopes = spack.config.scopes() - # Find find_parser = sp.add_parser( "find", @@ -47,7 +46,7 @@ def setup_parser(subparser): find_parser.add_argument("add_paths", nargs=argparse.REMAINDER) find_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope("compilers"), help="configuration scope to modify", @@ -61,7 +60,7 @@ def setup_parser(subparser): remove_parser.add_argument("compiler_spec") remove_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=None, help="configuration scope to modify", @@ -71,7 +70,7 @@ def setup_parser(subparser): list_parser = sp.add_parser("list", help="list available compilers") list_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_list_scope(), help="configuration scope to read from", @@ -82,7 +81,7 @@ def setup_parser(subparser): info_parser.add_argument("compiler_spec") info_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_list_scope(), help="configuration scope to read from", diff --git a/lib/spack/spack/cmd/compilers.py b/lib/spack/spack/cmd/compilers.py index 6d0ff43ea2..25831da7fb 100644 --- a/lib/spack/spack/cmd/compilers.py +++ b/lib/spack/spack/cmd/compilers.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import spack.config +from spack.cmd.common import arguments from spack.cmd.compiler import compiler_list description = "list available compilers" @@ -12,11 +13,9 @@ level = "short" def setup_parser(subparser): - scopes = spack.config.scopes() - subparser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, help="configuration scope to read/modify", ) diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index 14514400a8..c99f045876 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -10,7 +10,6 @@ from typing import List import llnl.util.filesystem as fs import llnl.util.tty as tty -import spack.cmd.common.arguments import spack.config import spack.environment as ev import spack.repo @@ -18,6 +17,7 @@ import spack.schema.env import spack.schema.packages import spack.store import spack.util.spack_yaml as syaml +from spack.cmd.common import arguments from spack.util.editor import editor description = "get and set configuration options" @@ -26,12 +26,10 @@ level = "long" def setup_parser(subparser): - scopes = spack.config.scopes() - # User can only choose one subparser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, help="configuration scope to read/modify", ) @@ -101,13 +99,13 @@ def setup_parser(subparser): setup_parser.add_parser = add_parser update = sp.add_parser("update", help="update configuration files to the latest format") - spack.cmd.common.arguments.add_common_arguments(update, ["yes_to_all"]) + arguments.add_common_arguments(update, ["yes_to_all"]) update.add_argument("section", help="section to update") revert = sp.add_parser( "revert", help="revert configuration files to their state before update" ) - spack.cmd.common.arguments.add_common_arguments(revert, ["yes_to_all"]) + arguments.add_common_arguments(revert, ["yes_to_all"]) revert.add_argument("section", help="section to update") diff --git a/lib/spack/spack/cmd/deconcretize.py b/lib/spack/spack/cmd/deconcretize.py index dbcf72ea8b..706986e2b3 100644 --- a/lib/spack/spack/cmd/deconcretize.py +++ b/lib/spack/spack/cmd/deconcretize.py @@ -10,10 +10,10 @@ from typing import List import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.cmd.common.confirmation as confirmation import spack.environment as ev import spack.spec +from spack.cmd.common import arguments description = "remove specs from the concretized lockfile of an environment" section = "environments" diff --git a/lib/spack/spack/cmd/dependencies.py b/lib/spack/spack/cmd/dependencies.py index ed85d47d22..abc79f8904 100644 --- a/lib/spack/spack/cmd/dependencies.py +++ b/lib/spack/spack/cmd/dependencies.py @@ -9,11 +9,11 @@ import llnl.util.tty as tty from llnl.util.tty.colify import colify import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.package_base import spack.repo import spack.store +from spack.cmd.common import arguments description = "show dependencies of a package" section = "basic" diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 733feaf715..302fde6c75 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -9,10 +9,10 @@ import llnl.util.tty as tty from llnl.util.tty.colify import colify import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.repo import spack.store +from spack.cmd.common import arguments description = "show packages that depend on another" section = "basic" diff --git a/lib/spack/spack/cmd/deprecate.py b/lib/spack/spack/cmd/deprecate.py index dca9b49756..4e9ebd1468 100644 --- a/lib/spack/spack/cmd/deprecate.py +++ b/lib/spack/spack/cmd/deprecate.py @@ -20,9 +20,9 @@ import llnl.util.tty as tty from llnl.util.symlink import symlink import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.store +from spack.cmd.common import arguments from spack.database import InstallStatuses from spack.error import SpackError diff --git a/lib/spack/spack/cmd/dev_build.py b/lib/spack/spack/cmd/dev_build.py index 90008c8b3e..59f68a26c6 100644 --- a/lib/spack/spack/cmd/dev_build.py +++ b/lib/spack/spack/cmd/dev_build.py @@ -9,9 +9,9 @@ import sys import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.repo +from spack.cmd.common import arguments description = "developer build: build from code in current working directory" section = "build" diff --git a/lib/spack/spack/cmd/develop.py b/lib/spack/spack/cmd/develop.py index ac7e89596f..f515352175 100644 --- a/lib/spack/spack/cmd/develop.py +++ b/lib/spack/spack/cmd/develop.py @@ -8,10 +8,10 @@ import shutil import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.spec import spack.util.path import spack.version +from spack.cmd.common import arguments from spack.error import SpackError description = "add a spec to an environment's dev-build information" diff --git a/lib/spack/spack/cmd/diff.py b/lib/spack/spack/cmd/diff.py index e321c28afb..f6a5c5ce7a 100644 --- a/lib/spack/spack/cmd/diff.py +++ b/lib/spack/spack/cmd/diff.py @@ -10,11 +10,11 @@ import llnl.util.tty as tty from llnl.util.tty.color import cprint, get_color_when import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.solver.asp as asp import spack.util.environment import spack.util.spack_json as sjson +from spack.cmd.common import arguments description = "compare two specs" section = "basic" diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index bb1ad13ec2..41a7b08bfa 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -20,7 +20,6 @@ from llnl.util.tty.color import colorize import spack.cmd import spack.cmd.common import spack.cmd.common.arguments -import spack.cmd.common.arguments as arguments import spack.cmd.install import spack.cmd.modules import spack.cmd.uninstall @@ -31,6 +30,7 @@ import spack.environment.shell import spack.schema.env import spack.spec import spack.tengine +from spack.cmd.common import arguments from spack.util.environment import EnvironmentModifications description = "manage virtual environments" diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py index 1bf5c9ecff..e021623d52 100644 --- a/lib/spack/spack/cmd/extensions.py +++ b/lib/spack/spack/cmd/extensions.py @@ -10,10 +10,10 @@ import llnl.util.tty as tty from llnl.util.tty.colify import colify import spack.cmd as cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.repo import spack.store +from spack.cmd.common import arguments description = "list extensions for package" section = "extensions" diff --git a/lib/spack/spack/cmd/external.py b/lib/spack/spack/cmd/external.py index 081ec80394..c3e791fd6a 100644 --- a/lib/spack/spack/cmd/external.py +++ b/lib/spack/spack/cmd/external.py @@ -14,12 +14,12 @@ import llnl.util.tty.colify as colify import spack import spack.cmd -import spack.cmd.common.arguments import spack.config import spack.cray_manifest as cray_manifest import spack.detection import spack.error import spack.util.environment +from spack.cmd.common import arguments description = "manage external packages in Spack configuration" section = "config" @@ -29,8 +29,6 @@ level = "short" def setup_parser(subparser): sp = subparser.add_subparsers(metavar="SUBCOMMAND", dest="external_command") - scopes = spack.config.scopes() - find_parser = sp.add_parser("find", help="add external packages to packages.yaml") find_parser.add_argument( "--not-buildable", @@ -48,7 +46,7 @@ def setup_parser(subparser): ) find_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope("packages"), help="configuration scope to modify", @@ -56,7 +54,7 @@ def setup_parser(subparser): find_parser.add_argument( "--all", action="store_true", help="search for all packages that Spack knows about" ) - spack.cmd.common.arguments.add_common_arguments(find_parser, ["tags", "jobs"]) + arguments.add_common_arguments(find_parser, ["tags", "jobs"]) find_parser.add_argument("packages", nargs=argparse.REMAINDER) find_parser.epilog = ( 'The search is by default on packages tagged with the "build-tools" or ' diff --git a/lib/spack/spack/cmd/fetch.py b/lib/spack/spack/cmd/fetch.py index 227f7e8973..a11ba35c67 100644 --- a/lib/spack/spack/cmd/fetch.py +++ b/lib/spack/spack/cmd/fetch.py @@ -6,11 +6,11 @@ import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev import spack.repo import spack.traverse +from spack.cmd.common import arguments description = "fetch archives for packages" section = "build" diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index a057003845..0dbd751c41 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -12,9 +12,9 @@ import llnl.util.tty.color as color import spack.bootstrap import spack.cmd as cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.repo +from spack.cmd.common import arguments from spack.database import InstallStatuses description = "list and search installed packages" diff --git a/lib/spack/spack/cmd/gpg.py b/lib/spack/spack/cmd/gpg.py index 0bce5f4736..b22c21178b 100644 --- a/lib/spack/spack/cmd/gpg.py +++ b/lib/spack/spack/cmd/gpg.py @@ -7,11 +7,11 @@ import argparse import os import spack.binary_distribution -import spack.cmd.common.arguments as arguments import spack.mirror import spack.paths import spack.util.gpg import spack.util.url +from spack.cmd.common import arguments description = "handle GPG actions for spack" section = "packaging" diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index 4122d8d588..212aac3953 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -5,10 +5,10 @@ from llnl.util import tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev import spack.store +from spack.cmd.common import arguments from spack.graph import DAGWithDependencyTypes, SimpleDAG, graph_ascii, graph_dot, static_graph_dot description = "generate graphs of package dependency relationships" diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 1f90831f65..0ce04ef23b 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -11,13 +11,13 @@ import llnl.util.tty as tty import llnl.util.tty.color as color from llnl.util.tty.colify import colify -import spack.cmd.common.arguments as arguments import spack.deptypes as dt import spack.fetch_strategy as fs import spack.install_test import spack.repo import spack.spec import spack.version +from spack.cmd.common import arguments from spack.package_base import preferred_version description = "get detailed information on a particular package" diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index b74f982755..5db30ba7b5 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -14,7 +14,6 @@ from llnl.util import lang, tty import spack.build_environment import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev import spack.fetch_strategy @@ -23,6 +22,7 @@ import spack.paths import spack.report import spack.spec import spack.store +from spack.cmd.common import arguments from spack.error import SpackError from spack.installer import PackageInstaller diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index a46d7fa5e0..0bfe8041f5 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -15,9 +15,9 @@ from html import escape import llnl.util.tty as tty from llnl.util.tty.colify import colify -import spack.cmd.common.arguments as arguments import spack.deptypes as dt import spack.repo +from spack.cmd.common import arguments from spack.version import VersionList description = "list and search available packages" diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index 5cdd2909c7..3945651341 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -8,12 +8,12 @@ import sys import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.cmd.find import spack.environment as ev import spack.store import spack.user_environment as uenv import spack.util.environment +from spack.cmd.common import arguments description = "add package to the user environment" section = "user environment" diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index b4bbaf54b8..d2aa0bc981 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -9,11 +9,11 @@ import llnl.util.tty as tty import spack.builder import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.paths import spack.repo import spack.stage +from spack.cmd.common import arguments description = "print out locations of packages and spack directories" section = "basic" diff --git a/lib/spack/spack/cmd/mark.py b/lib/spack/spack/cmd/mark.py index 61939c9458..a31beacd1c 100644 --- a/lib/spack/spack/cmd/mark.py +++ b/lib/spack/spack/cmd/mark.py @@ -8,11 +8,11 @@ import sys from llnl.util import tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.error import spack.package_base import spack.repo import spack.store +from spack.cmd.common import arguments from spack.database import InstallStatuses description = "mark packages as explicitly or implicitly installed" diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index 1036dcbe91..a9c93618c7 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -11,7 +11,6 @@ import llnl.util.tty.colify as colify import spack.caches import spack.cmd -import spack.cmd.common.arguments as arguments import spack.concretize import spack.config import spack.environment as ev @@ -20,6 +19,7 @@ import spack.repo import spack.spec import spack.util.path import spack.util.web as web_util +from spack.cmd.common import arguments from spack.error import SpackError description = "manage mirrors (source and binary)" @@ -88,16 +88,13 @@ def setup_parser(subparser): "--mirror-url", metavar="mirror_url", type=str, help="find mirror to destroy by url" ) - # used to construct scope arguments below - scopes = spack.config.scopes() - # Add add_parser = sp.add_parser("add", help=mirror_add.__doc__) add_parser.add_argument("name", help="mnemonic name for mirror", metavar="mirror") add_parser.add_argument("url", help="url of mirror directory from 'spack mirror create'") add_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope to modify", @@ -117,7 +114,7 @@ def setup_parser(subparser): remove_parser.add_argument("name", help="mnemonic name for mirror", metavar="mirror") remove_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope to modify", @@ -136,7 +133,7 @@ def setup_parser(subparser): ) set_url_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope to modify", @@ -165,7 +162,7 @@ def setup_parser(subparser): set_parser.add_argument("--url", help="url of mirror directory from 'spack mirror create'") set_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope to modify", @@ -176,7 +173,7 @@ def setup_parser(subparser): list_parser = sp.add_parser("list", help=mirror_list.__doc__) list_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_list_scope(), help="configuration scope to read from", diff --git a/lib/spack/spack/cmd/modules/__init__.py b/lib/spack/spack/cmd/modules/__init__.py index 65b174a06f..c63e14aba5 100644 --- a/lib/spack/spack/cmd/modules/__init__.py +++ b/lib/spack/spack/cmd/modules/__init__.py @@ -14,11 +14,11 @@ from llnl.util import filesystem, tty from llnl.util.tty import color import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.modules import spack.modules.common import spack.repo +from spack.cmd.common import arguments description = "manipulate module files" section = "environment" diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index 2d2596c9c5..c8277b26ee 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -6,12 +6,12 @@ import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev import spack.package_base import spack.repo import spack.traverse +from spack.cmd.common import arguments description = "patch expanded archive sources in preparation for install" section = "build" diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 9bbd34ca81..0f025ace25 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -12,11 +12,11 @@ import llnl.util.tty as tty from llnl.util.tty.colify import colify import spack.cmd -import spack.cmd.common.arguments as arguments import spack.paths import spack.repo import spack.util.executable as exe import spack.util.package_hash as ph +from spack.cmd.common import arguments description = "query packages associated with particular git revisions" section = "developer" diff --git a/lib/spack/spack/cmd/remove.py b/lib/spack/spack/cmd/remove.py index 4fdb36a5e5..ca6d641727 100644 --- a/lib/spack/spack/cmd/remove.py +++ b/lib/spack/spack/cmd/remove.py @@ -6,7 +6,7 @@ import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments +from spack.cmd.common import arguments description = "remove specs from an environment" section = "environments" diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index 7953f227e5..a8bba6c2dc 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -11,6 +11,7 @@ import llnl.util.tty as tty import spack.config import spack.repo import spack.util.path +from spack.cmd.common import arguments description = "manage package source repositories" section = "config" @@ -19,7 +20,6 @@ level = "long" def setup_parser(subparser): sp = subparser.add_subparsers(metavar="SUBCOMMAND", dest="repo_command") - scopes = spack.config.scopes() # Create create_parser = sp.add_parser("create", help=repo_create.__doc__) @@ -43,7 +43,7 @@ def setup_parser(subparser): list_parser = sp.add_parser("list", help=repo_list.__doc__) list_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_list_scope(), help="configuration scope to read from", @@ -54,7 +54,7 @@ def setup_parser(subparser): add_parser.add_argument("path", help="path to a Spack package repository directory") add_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope to modify", @@ -67,7 +67,7 @@ def setup_parser(subparser): ) remove_parser.add_argument( "--scope", - choices=scopes, + choices=arguments.ConfigScopeChoices(), metavar=spack.config.SCOPES_METAVAR, default=spack.config.default_modify_scope(), help="configuration scope to modify", diff --git a/lib/spack/spack/cmd/restage.py b/lib/spack/spack/cmd/restage.py index ab4d68dcc9..3078f59cdd 100644 --- a/lib/spack/spack/cmd/restage.py +++ b/lib/spack/spack/cmd/restage.py @@ -6,8 +6,8 @@ import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.repo +from spack.cmd.common import arguments description = "revert checked out package source code" section = "build" diff --git a/lib/spack/spack/cmd/solve.py b/lib/spack/spack/cmd/solve.py index 4a30b1694b..c97428b8e3 100644 --- a/lib/spack/spack/cmd/solve.py +++ b/lib/spack/spack/cmd/solve.py @@ -12,12 +12,12 @@ import llnl.util.tty.color as color import spack import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment import spack.hash_types as ht import spack.package_base import spack.solver.asp as asp +from spack.cmd.common import arguments description = "concretize a specs using an ASP solver" section = "developer" diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 0abd63ff6a..d55fa3d3b8 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -10,11 +10,11 @@ import llnl.util.tty as tty import spack import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.hash_types as ht import spack.spec import spack.store +from spack.cmd.common import arguments description = "show what would be installed, given a spec" section = "build" diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index 4405ddedca..acb0b53dea 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -8,13 +8,13 @@ import os import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments import spack.config import spack.environment as ev import spack.package_base import spack.repo import spack.stage import spack.traverse +from spack.cmd.common import arguments description = "expand downloaded archive in preparation for install" section = "build" diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index 99c2e90604..2f13e8cb5b 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -15,12 +15,12 @@ from llnl.util import lang, tty from llnl.util.tty import colify import spack.cmd -import spack.cmd.common.arguments as arguments import spack.environment as ev import spack.install_test import spack.package_base import spack.repo import spack.report +from spack.cmd.common import arguments description = "run spack's tests for an install" section = "admin" diff --git a/lib/spack/spack/cmd/tutorial.py b/lib/spack/spack/cmd/tutorial.py index 5759912b66..fcfab00513 100644 --- a/lib/spack/spack/cmd/tutorial.py +++ b/lib/spack/spack/cmd/tutorial.py @@ -10,11 +10,11 @@ import llnl.util.tty as tty from llnl.util.filesystem import working_dir import spack -import spack.cmd.common.arguments as arguments import spack.config import spack.paths import spack.util.git import spack.util.gpg +from spack.cmd.common import arguments from spack.util.spack_yaml import syaml_dict description = "set up spack for our tutorial (WARNING: modifies config!)" diff --git a/lib/spack/spack/cmd/undevelop.py b/lib/spack/spack/cmd/undevelop.py index f633a6d0d6..8f3c19cd1a 100644 --- a/lib/spack/spack/cmd/undevelop.py +++ b/lib/spack/spack/cmd/undevelop.py @@ -6,7 +6,7 @@ import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments +from spack.cmd.common import arguments description = "remove specs from an environment" section = "environments" diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index 3288404151..59ea18edc8 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -10,13 +10,13 @@ from llnl.util import tty from llnl.util.tty.colify import colify import spack.cmd -import spack.cmd.common.arguments as arguments import spack.cmd.common.confirmation as confirmation import spack.environment as ev import spack.package_base import spack.spec import spack.store import spack.traverse as traverse +from spack.cmd.common import arguments from spack.database import InstallStatuses description = "remove installed packages" diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py index 7fe634c56d..cd161f61c5 100644 --- a/lib/spack/spack/cmd/unload.py +++ b/lib/spack/spack/cmd/unload.py @@ -7,10 +7,10 @@ import os import sys import spack.cmd -import spack.cmd.common.arguments as arguments import spack.error import spack.user_environment as uenv import spack.util.environment +from spack.cmd.common import arguments description = "remove package from the user environment" section = "user environment" diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index 9ac6c9e4da..3ca23dcbe6 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -8,9 +8,9 @@ import sys import llnl.util.tty as tty from llnl.util.tty.colify import colify -import spack.cmd.common.arguments as arguments import spack.repo import spack.spec +from spack.cmd.common import arguments from spack.version import infinity_versions, ver description = "list available versions of a package" -- cgit v1.2.3-60-g2f50