refactor: make Package.name consistent with other class attributes
- The 'name' attribute for packages was being set in DirectiveMeta, which wasn't consistent with other class properties (like fullname, etc.) - Move it to be a class property of `PackageMeta`, and add the corresponding property method wrapper on `PackageBase`
This commit is contained in:
parent
3f5141d629
commit
87e6cb9f72
@ -100,11 +100,6 @@ def __init__(cls, name, bases, attr_dict):
|
|||||||
# that the directives are called on the class to set it up
|
# that the directives are called on the class to set it up
|
||||||
|
|
||||||
if 'spack.pkg' in cls.__module__:
|
if 'spack.pkg' in cls.__module__:
|
||||||
# Package name as taken
|
|
||||||
# from llnl.util.lang.get_calling_module_name
|
|
||||||
pkg_name = cls.__module__.split('.')[-1]
|
|
||||||
setattr(cls, 'name', pkg_name)
|
|
||||||
|
|
||||||
# Ensure the presence of the dictionaries associated
|
# Ensure the presence of the dictionaries associated
|
||||||
# with the directives
|
# with the directives
|
||||||
for d in DirectiveMeta._directive_names:
|
for d in DirectiveMeta._directive_names:
|
||||||
|
@ -229,6 +229,19 @@ def fullname(self):
|
|||||||
"""Name of this package, including the namespace"""
|
"""Name of this package, including the namespace"""
|
||||||
return '%s.%s' % (self.namespace, self.name)
|
return '%s.%s' % (self.namespace, self.name)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
"""The name of this package.
|
||||||
|
|
||||||
|
The name of a package is the name of its Python module, without
|
||||||
|
the containing module names.
|
||||||
|
"""
|
||||||
|
if not hasattr(self, '_name'):
|
||||||
|
self._name = self.module.__name__
|
||||||
|
if '.' in self._name:
|
||||||
|
self._name = self._name[self._name.rindex('.') + 1:]
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
|
||||||
def run_before(*phases):
|
def run_before(*phases):
|
||||||
"""Registers a method of a package to be run before a given phase"""
|
"""Registers a method of a package to be run before a given phase"""
|
||||||
@ -472,12 +485,6 @@ def __init__(self, spec):
|
|||||||
# this determines how the package should be built.
|
# this determines how the package should be built.
|
||||||
self.spec = spec
|
self.spec = spec
|
||||||
|
|
||||||
# Name of package is the name of its module, without the
|
|
||||||
# containing module names.
|
|
||||||
self.name = self.module.__name__
|
|
||||||
if '.' in self.name:
|
|
||||||
self.name = self.name[self.name.rindex('.') + 1:]
|
|
||||||
|
|
||||||
# Allow custom staging paths for packages
|
# Allow custom staging paths for packages
|
||||||
self.path = None
|
self.path = None
|
||||||
|
|
||||||
@ -585,6 +592,11 @@ def fullname(self):
|
|||||||
"""Name of this package, including namespace: namespace.name."""
|
"""Name of this package, including namespace: namespace.name."""
|
||||||
return type(self).fullname
|
return type(self).fullname
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
"""Name of this package (the module without parent modules)."""
|
||||||
|
return type(self).name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def global_license_dir(self):
|
def global_license_dir(self):
|
||||||
"""Returns the directory where global license files for all
|
"""Returns the directory where global license files for all
|
||||||
|
Loading…
Reference in New Issue
Block a user