diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2022-07-30 15:19:18 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2022-07-31 13:29:20 -0700 |
commit | f52f6e99dbf1131886a80112b8c79dfc414afb7c (patch) | |
tree | 05cb7d64b2395922f2f24683da49f472075be12c /lib/spack/spack/cmd/create.py | |
parent | 549ba1ed32372c67fc57271cde3797d58b7dec6e (diff) | |
download | spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.tar.gz spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.tar.bz2 spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.tar.xz spack-f52f6e99dbf1131886a80112b8c79dfc414afb7c.zip |
black: reformat entire repository with black
Diffstat (limited to 'lib/spack/spack/cmd/create.py')
-rw-r--r-- | lib/spack/spack/cmd/create.py | 356 |
1 files changed, 185 insertions, 171 deletions
diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index b2a8e17a28..ea2f6d2ed9 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -84,7 +84,7 @@ class BundlePackageTemplate(object): Provides the default values to be used for a bundle package file template. """ - base_class_name = 'BundlePackage' + base_class_name = "BundlePackage" dependencies = """\ # FIXME: Add dependencies if required. @@ -94,29 +94,32 @@ class BundlePackageTemplate(object): body_def = " # There is no need for install() since there is no code." def __init__(self, name, versions): - self.name = name + self.name = name self.class_name = mod_to_class(name) - self.versions = versions + self.versions = versions def write(self, pkg_path): """Writes the new package file.""" # Write out a template for the file with open(pkg_path, "w") as pkg_file: - pkg_file.write(package_template.format( - name=self.name, - class_name=self.class_name, - base_class_name=self.base_class_name, - url_def=self.url_def, - versions=self.versions, - dependencies=self.dependencies, - body_def=self.body_def)) + pkg_file.write( + package_template.format( + name=self.name, + class_name=self.class_name, + base_class_name=self.base_class_name, + url_def=self.url_def, + versions=self.versions, + dependencies=self.dependencies, + body_def=self.body_def, + ) + ) class PackageTemplate(BundlePackageTemplate): """Provides the default values to be used for the package file template""" - base_class_name = 'Package' + base_class_name = "Package" body_def = """\ def install(self, spec, prefix): @@ -136,7 +139,7 @@ class AutotoolsPackageTemplate(PackageTemplate): """Provides appropriate overrides for Autotools-based packages that *do* come with a ``configure`` script""" - base_class_name = 'AutotoolsPackage' + base_class_name = "AutotoolsPackage" body_def = """\ def configure_args(self): @@ -150,7 +153,7 @@ class AutoreconfPackageTemplate(PackageTemplate): """Provides appropriate overrides for Autotools-based packages that *do not* come with a ``configure`` script""" - base_class_name = 'AutotoolsPackage' + base_class_name = "AutotoolsPackage" dependencies = """\ depends_on('autoconf', type='build') @@ -176,7 +179,7 @@ class AutoreconfPackageTemplate(PackageTemplate): class CMakePackageTemplate(PackageTemplate): """Provides appropriate overrides for CMake-based packages""" - base_class_name = 'CMakePackage' + base_class_name = "CMakePackage" body_def = """\ def cmake_args(self): @@ -190,7 +193,7 @@ class CMakePackageTemplate(PackageTemplate): class LuaPackageTemplate(PackageTemplate): """Provides appropriate overrides for LuaRocks-based packages""" - base_class_name = 'LuaPackage' + base_class_name = "LuaPackage" body_def = """\ def luarocks_args(self): @@ -201,17 +204,17 @@ class LuaPackageTemplate(PackageTemplate): def __init__(self, name, url, *args, **kwargs): # If the user provided `--name lua-lpeg`, don't rename it lua-lua-lpeg - if not name.startswith('lua-'): + if not name.startswith("lua-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to lua-{0}".format(name)) - name = 'lua-{0}'.format(name) + name = "lua-{0}".format(name) super(LuaPackageTemplate, self).__init__(name, url, *args, **kwargs) class MesonPackageTemplate(PackageTemplate): """Provides appropriate overrides for meson-based packages""" - base_class_name = 'MesonPackage' + base_class_name = "MesonPackage" body_def = """\ def meson_args(self): @@ -223,7 +226,7 @@ class MesonPackageTemplate(PackageTemplate): class QMakePackageTemplate(PackageTemplate): """Provides appropriate overrides for QMake-based packages""" - base_class_name = 'QMakePackage' + base_class_name = "QMakePackage" body_def = """\ def qmake_args(self): @@ -235,7 +238,7 @@ class QMakePackageTemplate(PackageTemplate): class MavenPackageTemplate(PackageTemplate): """Provides appropriate overrides for Maven-based packages""" - base_class_name = 'MavenPackage' + base_class_name = "MavenPackage" body_def = """\ def build(self, spec, prefix): @@ -246,7 +249,7 @@ class MavenPackageTemplate(PackageTemplate): class SconsPackageTemplate(PackageTemplate): """Provides appropriate overrides for SCons-based packages""" - base_class_name = 'SConsPackage' + base_class_name = "SConsPackage" body_def = """\ def build_args(self, spec, prefix): @@ -259,7 +262,7 @@ class SconsPackageTemplate(PackageTemplate): class WafPackageTemplate(PackageTemplate): """Provides appropriate override for Waf-based packages""" - base_class_name = 'WafPackage' + base_class_name = "WafPackage" body_def = """\ # FIXME: Override configure_args(), build_args(), @@ -281,7 +284,8 @@ class BazelPackageTemplate(PackageTemplate): class RacketPackageTemplate(PackageTemplate): """Provides approriate overrides for Racket extensions""" - base_class_name = 'RacketPackage' + + base_class_name = "RacketPackage" url_line = """\ # FIXME: set the proper location from which to fetch your package @@ -307,17 +311,18 @@ class RacketPackageTemplate(PackageTemplate): def __init__(self, name, url, *args, **kwargs): # If the user provided `--name rkt-scribble`, don't rename it rkt-rkt-scribble - if not name.startswith('rkt-'): + if not name.startswith("rkt-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to rkt-{0}".format(name)) - name = 'rkt-{0}'.format(name) + name = "rkt-{0}".format(name) self.body_def = self.body_def.format(name[4:]) super(RacketPackageTemplate, self).__init__(name, url, *args, **kwargs) class PythonPackageTemplate(PackageTemplate): """Provides appropriate overrides for python extensions""" - base_class_name = 'PythonPackage' + + base_class_name = "PythonPackage" dependencies = """\ # FIXME: Only add the python/pip/wheel dependencies if you need specific versions @@ -351,10 +356,10 @@ class PythonPackageTemplate(PackageTemplate): def __init__(self, name, url, *args, **kwargs): # If the user provided `--name py-numpy`, don't rename it py-py-numpy - if not name.startswith('py-'): + if not name.startswith("py-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to py-{0}".format(name)) - name = 'py-{0}'.format(name) + name = "py-{0}".format(name) # Simple PyPI URLs: # https://<hostname>/packages/<type>/<first character of project>/<project>/<download file> @@ -377,38 +382,39 @@ class PythonPackageTemplate(PackageTemplate): # https://files.pythonhosted.org/packages/cp35.cp36.cp37.cp38.cp39/s/shiboken2/shiboken2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-abi3-manylinux1_x86_64.whl # https://files.pythonhosted.org/packages/f4/99/ad2ef1aeeb395ee2319bb981ea08dbbae878d30dd28ebf27e401430ae77a/azureml_core-1.36.0.post2-py3-none-any.whl#sha256=60bcad10b4380d78a8280deb7365de2c2cd66527aacdcb4a173f613876cbe739 - match = re.search( - r'(?:pypi|pythonhosted)[^/]+/packages' + '/([^/#]+)' * 4, - url - ) + match = re.search(r"(?:pypi|pythonhosted)[^/]+/packages" + "/([^/#]+)" * 4, url) if match: # PyPI URLs for wheels are too complicated, ignore them for now # https://www.python.org/dev/peps/pep-0427/#file-name-convention - if not match.group(4).endswith('.whl'): + if not match.group(4).endswith(".whl"): if len(match.group(2)) == 1: # Simple PyPI URL - url = '/'.join(match.group(3, 4)) + url = "/".join(match.group(3, 4)) else: # PyPI URL containing hash # Project name doesn't necessarily match download name, but it # usually does, so this is the best we can do project = parse_name(url) - url = '/'.join([project, match.group(4)]) + url = "/".join([project, match.group(4)]) self.url_line = ' pypi = "{url}"' else: # Add a reminder about spack preferring PyPI URLs - self.url_line = ''' + self.url_line = ( + """ # FIXME: ensure the package is not available through PyPI. If it is, # re-run `spack create --force` with the PyPI URL. -''' + self.url_line +""" + + self.url_line + ) super(PythonPackageTemplate, self).__init__(name, url, *args, **kwargs) class RPackageTemplate(PackageTemplate): """Provides appropriate overrides for R extensions""" - base_class_name = 'RPackage' + + base_class_name = "RPackage" dependencies = """\ # FIXME: Add dependencies if required. @@ -423,30 +429,23 @@ class RPackageTemplate(PackageTemplate): def __init__(self, name, url, *args, **kwargs): # If the user provided `--name r-rcpp`, don't rename it r-r-rcpp - if not name.startswith('r-'): + if not name.startswith("r-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to r-{0}".format(name)) - name = 'r-{0}'.format(name) + name = "r-{0}".format(name) r_name = parse_name(url) - cran = re.search( - r'(?:r-project|rstudio)[^/]+/src' + '/([^/]+)' * 2, - url - ) + cran = re.search(r"(?:r-project|rstudio)[^/]+/src" + "/([^/]+)" * 2, url) if cran: url = r_name self.url_line = ' cran = "{url}"' - bioc = re.search( - r'(?:bioconductor)[^/]+/packages' + '/([^/]+)' * 5, - url - ) + bioc = re.search(r"(?:bioconductor)[^/]+/packages" + "/([^/]+)" * 5, url) if bioc: - self.url_line = ' url = "{0}"\n'\ - ' bioc = "{1}"'.format(url, r_name) + self.url_line = ' url = "{0}"\n' ' bioc = "{1}"'.format(url, r_name) super(RPackageTemplate, self).__init__(name, url, *args, **kwargs) @@ -454,7 +453,8 @@ class RPackageTemplate(PackageTemplate): class PerlmakePackageTemplate(PackageTemplate): """Provides appropriate overrides for Perl extensions that come with a Makefile.PL""" - base_class_name = 'PerlPackage' + + base_class_name = "PerlPackage" dependencies = """\ # FIXME: Add dependencies if required: @@ -469,10 +469,10 @@ class PerlmakePackageTemplate(PackageTemplate): def __init__(self, name, *args, **kwargs): # If the user provided `--name perl-cpp`, don't rename it perl-perl-cpp - if not name.startswith('perl-'): + if not name.startswith("perl-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to perl-{0}".format(name)) - name = 'perl-{0}'.format(name) + name = "perl-{0}".format(name) super(PerlmakePackageTemplate, self).__init__(name, *args, **kwargs) @@ -480,6 +480,7 @@ class PerlmakePackageTemplate(PackageTemplate): class PerlbuildPackageTemplate(PerlmakePackageTemplate): """Provides appropriate overrides for Perl extensions that come with a Build.PL instead of a Makefile.PL""" + dependencies = """\ depends_on('perl-module-build', type='build') @@ -490,7 +491,7 @@ class PerlbuildPackageTemplate(PerlmakePackageTemplate): class OctavePackageTemplate(PackageTemplate): """Provides appropriate overrides for octave packages""" - base_class_name = 'OctavePackage' + base_class_name = "OctavePackage" dependencies = """\ extends('octave') @@ -501,10 +502,10 @@ class OctavePackageTemplate(PackageTemplate): def __init__(self, name, *args, **kwargs): # If the user provided `--name octave-splines`, don't rename it # octave-octave-splines - if not name.startswith('octave-'): + if not name.startswith("octave-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to octave-{0}".format(name)) - name = 'octave-{0}'.format(name) + name = "octave-{0}".format(name) super(OctavePackageTemplate, self).__init__(name, *args, **kwargs) @@ -512,7 +513,7 @@ class OctavePackageTemplate(PackageTemplate): class RubyPackageTemplate(PackageTemplate): """Provides appropriate overrides for Ruby packages""" - base_class_name = 'RubyPackage' + base_class_name = "RubyPackage" dependencies = """\ # FIXME: Add dependencies if required. Only add the ruby dependency @@ -529,10 +530,10 @@ class RubyPackageTemplate(PackageTemplate): def __init__(self, name, *args, **kwargs): # If the user provided `--name ruby-numpy`, don't rename it # ruby-ruby-numpy - if not name.startswith('ruby-'): + if not name.startswith("ruby-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to ruby-{0}".format(name)) - name = 'ruby-{0}'.format(name) + name = "ruby-{0}".format(name) super(RubyPackageTemplate, self).__init__(name, *args, **kwargs) @@ -540,7 +541,7 @@ class RubyPackageTemplate(PackageTemplate): class MakefilePackageTemplate(PackageTemplate): """Provides appropriate overrides for Makefile packages""" - base_class_name = 'MakefilePackage' + base_class_name = "MakefilePackage" body_def = """\ def edit(self, spec, prefix): @@ -553,7 +554,7 @@ class MakefilePackageTemplate(PackageTemplate): class IntelPackageTemplate(PackageTemplate): """Provides appropriate overrides for licensed Intel software""" - base_class_name = 'IntelPackage' + base_class_name = "IntelPackage" body_def = """\ # FIXME: Override `setup_environment` if necessary.""" @@ -562,7 +563,7 @@ class IntelPackageTemplate(PackageTemplate): class SIPPackageTemplate(PackageTemplate): """Provides appropriate overrides for SIP packages.""" - base_class_name = 'SIPPackage' + base_class_name = "SIPPackage" body_def = """\ def configure_args(self, spec, prefix): @@ -573,70 +574,78 @@ class SIPPackageTemplate(PackageTemplate): def __init__(self, name, *args, **kwargs): # If the user provided `--name py-pyqt4`, don't rename it py-py-pyqt4 - if not name.startswith('py-'): + if not name.startswith("py-"): # Make it more obvious that we are renaming the package tty.msg("Changing package name from {0} to py-{0}".format(name)) - name = 'py-{0}'.format(name) + name = "py-{0}".format(name) super(SIPPackageTemplate, self).__init__(name, *args, **kwargs) templates = { - 'autotools': AutotoolsPackageTemplate, - 'autoreconf': AutoreconfPackageTemplate, - 'cmake': CMakePackageTemplate, - 'bundle': BundlePackageTemplate, - 'qmake': QMakePackageTemplate, - 'maven': MavenPackageTemplate, - 'scons': SconsPackageTemplate, - 'waf': WafPackageTemplate, - 'bazel': BazelPackageTemplate, - 'python': PythonPackageTemplate, - 'r': RPackageTemplate, - 'racket': RacketPackageTemplate, - 'perlmake': PerlmakePackageTemplate, - 'perlbuild': PerlbuildPackageTemplate, - 'octave': OctavePackageTemplate, - 'ruby': RubyPackageTemplate, - 'makefile': MakefilePackageTemplate, - 'intel': IntelPackageTemplate, - 'meson': MesonPackageTemplate, - 'lua': LuaPackageTemplate, - 'sip': SIPPackageTemplate, - 'generic': PackageTemplate, + "autotools": AutotoolsPackageTemplate, + "autoreconf": AutoreconfPackageTemplate, + "cmake": CMakePackageTemplate, + "bundle": BundlePackageTemplate, + "qmake": QMakePackageTemplate, + "maven": MavenPackageTemplate, + "scons": SconsPackageTemplate, + "waf": WafPackageTemplate, + "bazel": BazelPackageTemplate, + "python": PythonPackageTemplate, + "r": RPackageTemplate, + "racket": RacketPackageTemplate, + "perlmake": PerlmakePackageTemplate, + "perlbuild": PerlbuildPackageTemplate, + "octave": OctavePackageTemplate, + "ruby": RubyPackageTemplate, + "makefile": MakefilePackageTemplate, + "intel": IntelPackageTemplate, + "meson": MesonPackageTemplate, + "lua": LuaPackageTemplate, + "sip": SIPPackageTemplate, + "generic": PackageTemplate, } def setup_parser(subparser): + subparser.add_argument("url", nargs="?", help="url of package archive") subparser.add_argument( - 'url', nargs='?', - help="url of package archive") - subparser.add_argument( - '--keep-stage', action='store_true', - help="don't clean up staging area when command completes") + "--keep-stage", + action="store_true", + help="don't clean up staging area when command completes", + ) + subparser.add_argument("-n", "--name", help="name of the package to create") subparser.add_argument( - '-n', '--name', - help="name of the package to create") - subparser.add_argument( - '-t', '--template', metavar='TEMPLATE', + "-t", + "--template", + metavar="TEMPLATE", choices=sorted(templates.keys()), - help="build system template to use. options: %(choices)s") + help="build system template to use. options: %(choices)s", + ) subparser.add_argument( - '-r', '--repo', - help="path to a repository where the package should be created") + "-r", "--repo", help="path to a repository where the package should be created" + ) subparser.add_argument( - '-N', '--namespace', + "-N", + "--namespace", help="specify a namespace for the package. must be the namespace of " - "a repository registered with Spack") + "a repository registered with Spack", + ) subparser.add_argument( - '-f', '--force', action='store_true', - help="overwrite any existing package file with the same name") + "-f", + "--force", + action="store_true", + help="overwrite any existing package file with the same name", + ) subparser.add_argument( - '--skip-editor', action='store_true', - help="skip the edit session for the package (e.g., automation)") + "--skip-editor", + action="store_true", + help="skip the edit session for the package (e.g., automation)", + ) subparser.add_argument( - '-b', '--batch', action='store_true', - help="don't ask which versions to checksum") + "-b", "--batch", action="store_true", help="don't ask which versions to checksum" + ) class BuildSystemGuesser: @@ -647,7 +656,7 @@ class BuildSystemGuesser: def __init__(self): """Sets the default build system.""" - self.build_system = 'generic' + self.build_system = "generic" def __call__(self, stage, url): """Try to guess the type of build system used by a project based on @@ -657,17 +666,17 @@ class BuildSystemGuesser: # Most octave extensions are hosted on Octave-Forge: # https://octave.sourceforge.net/index.html # They all have the same base URL. - if 'downloads.sourceforge.net/octave/' in url: - self.build_system = 'octave' + if "downloads.sourceforge.net/octave/" in url: + self.build_system = "octave" return - if url.endswith('.gem'): - self.build_system = 'ruby' + if url.endswith(".gem"): + self.build_system = "ruby" return - if url.endswith('.whl') or '.whl#' in url: - self.build_system = 'python' + if url.endswith(".whl") or ".whl#" in url: + self.build_system = "python" return - if url.endswith('.rock'): - self.build_system = 'lua' + if url.endswith(".rock"): + self.build_system = "lua" return # A list of clues that give us an idea of the build system a package @@ -676,46 +685,44 @@ class BuildSystemGuesser: # NOTE: Order is important here. If a package supports multiple # build systems, we choose the first match in this list. clues = [ - (r'/CMakeLists\.txt$', 'cmake'), - (r'/NAMESPACE$', 'r'), - (r'/configure$', 'autotools'), - (r'/configure\.(in|ac)$', 'autoreconf'), - (r'/Makefile\.am$', 'autoreconf'), - (r'/pom\.xml$', 'maven'), - (r'/SConstruct$', 'scons'), - (r'/waf$', 'waf'), - (r'/pyproject.toml', 'python'), - (r'/setup\.(py|cfg)$', 'python'), - (r'/WORKSPACE$', 'bazel'), - (r'/Build\.PL$', 'perlbuild'), - (r'/Makefile\.PL$', 'perlmake'), - (r'/.*\.gemspec$', 'ruby'), - (r'/Rakefile$', 'ruby'), - (r'/setup\.rb$', 'ruby'), - (r'/.*\.pro$', 'qmake'), - (r'/.*\.rockspec$', 'lua'), - (r'/(GNU)?[Mm]akefile$', 'makefile'), - (r'/DESCRIPTION$', 'octave'), - (r'/meson\.build$', 'meson'), - (r'/configure\.py$', 'sip'), + (r"/CMakeLists\.txt$", "cmake"), + (r"/NAMESPACE$", "r"), + (r"/configure$", "autotools"), + (r"/configure\.(in|ac)$", "autoreconf"), + (r"/Makefile\.am$", "autoreconf"), + (r"/pom\.xml$", "maven"), + (r"/SConstruct$", "scons"), + (r"/waf$", "waf"), + (r"/pyproject.toml", "python"), + (r"/setup\.(py|cfg)$", "python"), + (r"/WORKSPACE$", "bazel"), + (r"/Build\.PL$", "perlbuild"), + (r"/Makefile\.PL$", "perlmake"), + (r"/.*\.gemspec$", "ruby"), + (r"/Rakefile$", "ruby"), + (r"/setup\.rb$", "ruby"), + (r"/.*\.pro$", "qmake"), + (r"/.*\.rockspec$", "lua"), + (r"/(GNU)?[Mm]akefile$", "makefile"), + (r"/DESCRIPTION$", "octave"), + (r"/meson\.build$", "meson"), + (r"/configure\.py$", "sip"), ] # Peek inside the compressed file. - if (stage.archive_file.endswith('.zip') or - '.zip#' in stage.archive_file): + if stage.archive_file.endswith(".zip") or ".zip#" in stage.archive_file: try: - unzip = which('unzip') - output = unzip('-lq', stage.archive_file, output=str) + unzip = which("unzip") + output = unzip("-lq", stage.archive_file, output=str) except ProcessError: - output = '' + output = "" else: try: - tar = which('tar') - output = tar('--exclude=*/*/*', '-tf', - stage.archive_file, output=str) + tar = which("tar") + output = tar("--exclude=*/*/*", "-tf", stage.archive_file, output=str) except ProcessError: - output = '' - lines = output.split('\n') + output = "" + lines = output.split("\n") # Determine the build system based on the files contained # in the archive. @@ -740,7 +747,7 @@ def get_name(args): """ # Default package name - name = 'example' + name = "example" if args.name is not None: # Use a user-supplied name if one is present @@ -754,14 +761,16 @@ def get_name(args): try: name = parse_name(args.url) if name != args.url: - desc = 'URL' + desc = "URL" else: - desc = 'package name' + desc = "package name" tty.msg("This looks like a {0} for {1}".format(desc, name)) except UndetectableNameError: - tty.die("Couldn't guess a name for this package.", - " Please report this bug. In the meantime, try running:", - " `spack create --name <name> <url>`") + tty.die( + "Couldn't guess a name for this package.", + " Please report this bug. In the meantime, try running:", + " `spack create --name <name> <url>`", + ) name = simplify_name(name) @@ -784,7 +793,7 @@ def get_url(args): """ # Default URL - url = 'https://www.example.com/example-1.2.3.tar.gz' + url = "https://www.example.com/example-1.2.3.tar.gz" if args.url: # Use a user-supplied URL if one is present @@ -824,12 +833,12 @@ def get_versions(args, name): valid_url = True try: spack.util.url.require_url_format(args.url) - if args.url.startswith('file://'): + if args.url.startswith("file://"): valid_url = False # No point in spidering these except (ValueError, TypeError): valid_url = False - if args.url is not None and args.template != 'bundle' and valid_url: + if args.url is not None and args.template != "bundle" and valid_url: # Find available versions try: url_dict = spack.util.web.find_versions_of_archive(args.url) @@ -844,9 +853,12 @@ def get_versions(args, name): url_dict = {version: args.url} versions = spack.stage.get_checksums_for_versions( - url_dict, name, first_stage_function=guesser, + url_dict, + name, + first_stage_function=guesser, keep_stage=args.keep_stage, - batch=(args.batch or len(url_dict) == 1)) + batch=(args.batch or len(url_dict) == 1), + ) else: versions = unhashed_versions @@ -869,7 +881,7 @@ def get_build_system(args, guesser): str: The name of the build system template to use """ # Default template - template = 'generic' + template = "generic" if args.template is not None: # Use a user-supplied template if one is present @@ -878,9 +890,8 @@ def get_build_system(args, guesser): elif args.url is not None: # Use whatever build system the guesser detected template = guesser.build_system - if template == 'generic': - tty.warn("Unable to detect a build system. " - "Using a generic package template.") + if template == "generic": + tty.warn("Unable to detect a build system. " "Using a generic package template.") else: msg = "This package looks like it uses the {0} build system" tty.msg(msg.format(template)) @@ -903,8 +914,7 @@ def get_repository(args, name): spec = Spec(name) # Figure out namespace for spec if spec.namespace and args.namespace and spec.namespace != args.namespace: - tty.die("Namespaces '{0}' and '{1}' do not match.".format( - spec.namespace, args.namespace)) + tty.die("Namespaces '{0}' and '{1}' do not match.".format(spec.namespace, args.namespace)) if not spec.namespace and args.namespace: spec.namespace = args.namespace @@ -914,8 +924,10 @@ def get_repository(args, name): if repo_path is not None: repo = spack.repo.Repo(repo_path) if spec.namespace and spec.namespace != repo.namespace: - tty.die("Can't create package with namespace {0} in repo with " - "namespace {1}".format(spec.namespace, repo.namespace)) + tty.die( + "Can't create package with namespace {0} in repo with " + "namespace {1}".format(spec.namespace, repo.namespace) + ) else: if spec.namespace: repo = spack.repo.path.get_repo(spec.namespace, None) @@ -939,10 +951,10 @@ def create(parser, args): build_system = get_build_system(args, guesser) # Create the package template object - constr_args = {'name': name, 'versions': versions} + constr_args = {"name": name, "versions": versions} package_class = templates[build_system] if package_class != BundlePackageTemplate: - constr_args['url'] = url + constr_args["url"] = url package = package_class(**constr_args) tty.msg("Created template for {0} package".format(package.name)) @@ -950,8 +962,10 @@ def create(parser, args): repo = get_repository(args, name) pkg_path = repo.filename_for_package_name(package.name) if os.path.exists(pkg_path) and not args.force: - tty.die('{0} already exists.'.format(pkg_path), - ' Try running `spack create --force` to overwrite it.') + tty.die( + "{0} already exists.".format(pkg_path), + " Try running `spack create --force` to overwrite it.", + ) else: mkdirp(os.path.dirname(pkg_path)) |