Source code for rez.exceptions

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project


"""
Exceptions.
"""
from contextlib import contextmanager


[docs]class RezError(Exception): """Base-class Rez error.""" def __init__(self, value=None): self.value = value def __str__(self): return str(self.value)
[docs]class RezSystemError(RezError): """Rez system/internal error.""" pass
[docs]class RezBindError(RezError): """A bind-related error.""" pass
[docs]class RezPluginError(RezError): """An error related to plugin or plugin load.""" pass
[docs]class ConfigurationError(RezError): """A misconfiguration error.""" pass
[docs]class ResolveError(RezError): """A resolve-related error.""" pass
[docs]class PackageFamilyNotFoundError(RezError): """A package could not be found on disk.""" pass
[docs]class PackageNotFoundError(RezError): """A package could not be found on disk.""" pass
[docs]class ResourceError(RezError): """Resource-related exception base class.""" pass
[docs]class ResourceNotFoundError(ResourceError): """A resource could not be found.""" pass
[docs]class ResourceContentError(ResourceError): """A resource contains incorrect data.""" type_name = "resource file" def __init__(self, value=None, path=None, resource_key=None): msg = [] if resource_key is not None: msg.append("resource type: %r" % resource_key) if path is not None: msg.append("%s: %s" % (self.type_name, path)) if value is not None: msg.append(value) ResourceError.__init__(self, ": ".join(msg))
[docs]class PackageMetadataError(ResourceContentError): """There is an error in a package's definition file.""" type_name = "package definition file"
[docs]class PackageCommandError(RezError): """There is an error in a command or list of commands""" pass
[docs]class PackageRequestError(RezError): """There is an error related to a package request.""" pass
[docs]class PackageCopyError(RezError): """There was a problem copying a package.""" pass
[docs]class PackageMoveError(RezError): """There was a problem moving a package.""" pass
[docs]class ContextBundleError(RezError): """There was a problem bundling a context.""" pass
[docs]class PackageCacheError(RezError): """There was an error related to a package cache.""" pass
[docs]class PackageTestError(RezError): """There was a problem running a package test.""" pass
[docs]class ResolvedContextError(RezError): """An error occurred in a resolved context.""" pass
[docs]class RexError(RezError): """There is an error in Rex code.""" pass
[docs]class RexUndefinedVariableError(RexError): """There is a reference to an undefined variable.""" pass
[docs]class RexStopError(RexError): """Special error raised when a package commands uses the 'stop' command.""" pass
[docs]class BuildError(RezError): """Base class for any build-related error.""" pass
[docs]class BuildSystemError(BuildError): """Base class for buildsys-related errors.""" pass
[docs]class BuildContextResolveError(BuildError): """Raised if unable to resolve the required context when creating the environment for a build process.""" def __init__(self, context): self.context = context assert context.status != "solved" msg = ("The build environment could not be resolved:\n%s" % context.failure_description) super(BuildContextResolveError, self).__init__(msg)
[docs]class BuildProcessError(RezError): """Base class for build process-related errors.""" pass
[docs]class ReleaseError(RezError): """Any release-related error.""" pass
[docs]class ReleaseVCSError(ReleaseError): """Base class for release VCS-related errors.""" pass
[docs]class ReleaseHookError(RezError): """Base class for release-hook- related errors.""" pass
[docs]class ReleaseHookCancellingError(RezError): """A release hook error that asks to cancel the release as a result.""" pass
[docs]class SuiteError(RezError): """Any suite-related error.""" pass
[docs]class PackageRepositoryError(RezError): """Base class for package repository- related errors.""" pass
[docs]class InvalidPackageError(RezError): """A special case exception used in package 'preprocess function'.""" pass
[docs]class RezGuiQTImportError(ImportError): """A special case - see cli/gui.py """ pass
class _NeverError(RezError): """Exception that is never raised. Used to toggle exception handling in some cases. """ pass
[docs]@contextmanager def convert_errors(from_, to, msg=None): exc = None try: yield None except from_ as e: exc = e if exc: info = "%s: %s" % (exc.__class__.__name__, str(exc)) if msg: info = "%s: %s" % (msg, info) raise to(info)