Used functools.wrap for the decorator + reordered imports
This commit is contained in:
parent
bbb5d61662
commit
76b5af6bf3
@ -5,15 +5,17 @@
|
|||||||
|
|
||||||
import abc
|
import abc
|
||||||
import collections
|
import collections
|
||||||
import os
|
import contextlib
|
||||||
import stat
|
|
||||||
import shutil
|
|
||||||
import errno
|
import errno
|
||||||
import sys
|
import functools
|
||||||
import inspect
|
import inspect
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
|
import shutil
|
||||||
|
import stat
|
||||||
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
from contextlib import contextmanager
|
|
||||||
from six import string_types, add_metaclass
|
from six import string_types, add_metaclass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -80,10 +82,11 @@ def get_full_namespace(namespace):
|
|||||||
_package_prepend = 'from spack.pkgkit import *'
|
_package_prepend = 'from spack.pkgkit import *'
|
||||||
|
|
||||||
|
|
||||||
def _autospec(function):
|
def autospec(function):
|
||||||
"""Decorator that automatically converts the argument of a single-arg
|
"""Decorator that automatically converts the first argument of a
|
||||||
function to a Spec."""
|
function to a Spec.
|
||||||
|
"""
|
||||||
|
@functools.wraps(function)
|
||||||
def converter(self, spec_like, *args, **kwargs):
|
def converter(self, spec_like, *args, **kwargs):
|
||||||
if not isinstance(spec_like, spack.spec.Spec):
|
if not isinstance(spec_like, spack.spec.Spec):
|
||||||
spec_like = spack.spec.Spec(spec_like)
|
spec_like = spack.spec.Spec(spec_like)
|
||||||
@ -551,14 +554,14 @@ def patch_index(self):
|
|||||||
|
|
||||||
return self._patch_index
|
return self._patch_index
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def providers_for(self, vpkg_spec):
|
def providers_for(self, vpkg_spec):
|
||||||
providers = self.provider_index.providers_for(vpkg_spec)
|
providers = self.provider_index.providers_for(vpkg_spec)
|
||||||
if not providers:
|
if not providers:
|
||||||
raise UnknownPackageError(vpkg_spec.name)
|
raise UnknownPackageError(vpkg_spec.name)
|
||||||
return providers
|
return providers
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def extensions_for(self, extendee_spec):
|
def extensions_for(self, extendee_spec):
|
||||||
return [p for p in self.all_packages() if p.extends(extendee_spec)]
|
return [p for p in self.all_packages() if p.extends(extendee_spec)]
|
||||||
|
|
||||||
@ -634,7 +637,7 @@ def repo_for_pkg(self, spec):
|
|||||||
# that can operate on packages that don't exist yet.
|
# that can operate on packages that don't exist yet.
|
||||||
return self.first_repo()
|
return self.first_repo()
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def get(self, spec, new=False):
|
def get(self, spec, new=False):
|
||||||
"""Find a repo that contains the supplied spec's package.
|
"""Find a repo that contains the supplied spec's package.
|
||||||
|
|
||||||
@ -646,7 +649,7 @@ def get_pkg_class(self, pkg_name):
|
|||||||
"""Find a class for the spec's package and return the class object."""
|
"""Find a class for the spec's package and return the class object."""
|
||||||
return self.repo_for_pkg(pkg_name).get_pkg_class(pkg_name)
|
return self.repo_for_pkg(pkg_name).get_pkg_class(pkg_name)
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def dump_provenance(self, spec, path):
|
def dump_provenance(self, spec, path):
|
||||||
"""Dump provenance information for a spec to a particular path.
|
"""Dump provenance information for a spec to a particular path.
|
||||||
|
|
||||||
@ -868,7 +871,7 @@ def _read_config(self):
|
|||||||
tty.die("Error reading %s when opening %s"
|
tty.die("Error reading %s when opening %s"
|
||||||
% (self.config_file, self.root))
|
% (self.config_file, self.root))
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def get(self, spec):
|
def get(self, spec):
|
||||||
if not self.exists(spec.name):
|
if not self.exists(spec.name):
|
||||||
raise UnknownPackageError(spec.name)
|
raise UnknownPackageError(spec.name)
|
||||||
@ -891,7 +894,7 @@ def get(self, spec):
|
|||||||
sys.excepthook(*sys.exc_info())
|
sys.excepthook(*sys.exc_info())
|
||||||
raise FailedConstructorError(spec.fullname, *sys.exc_info())
|
raise FailedConstructorError(spec.fullname, *sys.exc_info())
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def dump_provenance(self, spec, path):
|
def dump_provenance(self, spec, path):
|
||||||
"""Dump provenance information for a spec to a particular path.
|
"""Dump provenance information for a spec to a particular path.
|
||||||
|
|
||||||
@ -948,14 +951,14 @@ def patch_index(self):
|
|||||||
"""Index of patches and packages they're defined on."""
|
"""Index of patches and packages they're defined on."""
|
||||||
return self.index['patches']
|
return self.index['patches']
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def providers_for(self, vpkg_spec):
|
def providers_for(self, vpkg_spec):
|
||||||
providers = self.provider_index.providers_for(vpkg_spec)
|
providers = self.provider_index.providers_for(vpkg_spec)
|
||||||
if not providers:
|
if not providers:
|
||||||
raise UnknownPackageError(vpkg_spec.name)
|
raise UnknownPackageError(vpkg_spec.name)
|
||||||
return providers
|
return providers
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def extensions_for(self, extendee_spec):
|
def extensions_for(self, extendee_spec):
|
||||||
return [p for p in self.all_packages() if p.extends(extendee_spec)]
|
return [p for p in self.all_packages() if p.extends(extendee_spec)]
|
||||||
|
|
||||||
@ -964,14 +967,14 @@ def _check_namespace(self, spec):
|
|||||||
if spec.namespace and spec.namespace != self.namespace:
|
if spec.namespace and spec.namespace != self.namespace:
|
||||||
raise UnknownNamespaceError(spec.namespace)
|
raise UnknownNamespaceError(spec.namespace)
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def dirname_for_package_name(self, spec):
|
def dirname_for_package_name(self, spec):
|
||||||
"""Get the directory name for a particular package. This is the
|
"""Get the directory name for a particular package. This is the
|
||||||
directory that contains its package.py file."""
|
directory that contains its package.py file."""
|
||||||
self._check_namespace(spec)
|
self._check_namespace(spec)
|
||||||
return os.path.join(self.packages_path, spec.name)
|
return os.path.join(self.packages_path, spec.name)
|
||||||
|
|
||||||
@_autospec
|
@autospec
|
||||||
def filename_for_package_name(self, spec):
|
def filename_for_package_name(self, spec):
|
||||||
"""Get the filename for the module we should load for a particular
|
"""Get the filename for the module we should load for a particular
|
||||||
package. Packages for a Repo live in
|
package. Packages for a Repo live in
|
||||||
@ -1205,7 +1208,7 @@ def set_path(repo):
|
|||||||
return append
|
return append
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextlib.contextmanager
|
||||||
def swap(repo_path):
|
def swap(repo_path):
|
||||||
"""Temporarily use another RepoPath."""
|
"""Temporarily use another RepoPath."""
|
||||||
global path
|
global path
|
||||||
|
Loading…
Reference in New Issue
Block a user