From a1d9a56a43fa59d5e3609047bf2037a92006dc4f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 22 Mar 2021 11:47:24 -0700 Subject: specs: remove "or ''" from Spec comparisons Since `lazy_lexicographic_ordering` handles `None` comparison for us, we don't need to adjust the spec comparators to return empty strings or other type-specific empty types. We can just leverage the None-awareness of `lazy_lexicographic_ordering`. - [x] remove "or ''" from `_cmp_iter` in `Spec` - [x] remove setting of `self.namespace` to `''` in `MockPackage` --- lib/spack/spack/spec.py | 4 ++-- lib/spack/spack/util/mock_package.py | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 370a5d2f0c..f7a78863d4 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -3617,8 +3617,8 @@ class Spec(object): def _cmp_node(self): """Yield comparable elements of just *this node* and not its deps.""" - yield self.name or '' - yield self.namespace or '' + yield self.name + yield self.namespace yield self.versions yield self.variants yield self.compiler diff --git a/lib/spack/spack/util/mock_package.py b/lib/spack/spack/util/mock_package.py index 0b5e681f26..847177ae05 100644 --- a/lib/spack/spack/util/mock_package.py +++ b/lib/spack/spack/util/mock_package.py @@ -81,8 +81,8 @@ class MockPackageMultiRepo(object): def __init__(self): self.spec_to_pkg = {} - self.namespace = '' - self.full_namespace = 'spack.pkg.mock' + self.namespace = 'mock' # repo namespace + self.full_namespace = 'spack.pkg.mock' # python import namespace def get(self, spec): if not isinstance(spec, spack.spec.Spec): @@ -92,6 +92,10 @@ class MockPackageMultiRepo(object): return self.spec_to_pkg[spec.name] def get_pkg_class(self, name): + namespace, _, name = name.rpartition(".") + if namespace and namespace != self.namespace: + raise spack.repo.InvalidNamespaceError( + "bad namespace: %s" % self.namespace) return self.spec_to_pkg[name] def exists(self, name): -- cgit v1.2.3-60-g2f50