From ed898f7fe2e35d79b66b4e902d34582907abe4a6 Mon Sep 17 00:00:00 2001 From: Roman Mogilatov Date: Wed, 11 Nov 2015 19:14:56 +0200 Subject: [PATCH] Add UndefinedProviderError(Error, AttributeError) for proper work of hasattr() --- dependency_injector/catalogs.py | 8 +++++--- dependency_injector/errors.py | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) 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."""