diff --git a/dependency_injector/catalogs.py b/dependency_injector/catalogs.py index f0bfc079..934c9f2c 100644 --- a/dependency_injector/catalogs.py +++ b/dependency_injector/catalogs.py @@ -3,6 +3,7 @@ import six from .errors import Error +from .errors import UndefinedProviderError from .utils import is_provider from .utils import is_catalog @@ -54,7 +55,8 @@ class CatalogBundle(object): """Raise an error on every attempt to get undefined provider.""" if item.startswith('__') and item.endswith('__'): return super(CatalogBundle, self).__getattr__(item) - raise Error('Provider "{0}" is not a part of {1}'.format(item, self)) + raise UndefinedProviderError('Provider "{0}" is not a part ' + 'of {1}'.format(item, self)) def __repr__(self): """Return string representation of catalog bundle.""" @@ -149,8 +151,8 @@ class DynamicCatalog(object): try: return self.providers[name] except KeyError: - raise Error('{0} has no provider with such name - {1}'.format( - self, name)) + raise UndefinedProviderError('{0} has no provider with such ' + 'name - {1}'.format(self, name)) def bind_provider(self, name, provider): """Bind provider to catalog with specified name.""" diff --git a/dependency_injector/errors.py b/dependency_injector/errors.py index 0140fa82..37be4f82 100644 --- a/dependency_injector/errors.py +++ b/dependency_injector/errors.py @@ -3,3 +3,7 @@ class Error(Exception): """Base error.""" + + +class UndefinedProviderError(Error, AttributeError): + """Undefined provider error."""