summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurelien Campeas <aurelien.campeas@logilab.fr>2014-10-07 17:39:39 +0200
committerAurelien Campeas <aurelien.campeas@logilab.fr>2014-10-07 17:39:39 +0200
commit69ca62f2e1bfe1796692906290d775d6bd1b6b44 (patch)
treec459e584c6a4b2bc9f46312b514241ed2c270181
parent0f277e978151d808270b29acb03d665d602b9a17 (diff)
downloadlogilab-common-69ca62f2e1bfe1796692906290d775d6bd1b6b44.tar.gz
[registry] raise a typed exception rather than a bare Exception
-rw-r--r--logilab/common/registry.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/logilab/common/registry.py b/logilab/common/registry.py
index a52b2eb..86a85f9 100644
--- a/logilab/common/registry.py
+++ b/logilab/common/registry.py
@@ -119,6 +119,12 @@ class NoSelectableObject(RegistryException):
return ('args: %s, kwargs: %s\ncandidates: %s'
% (self.args, self.kwargs.keys(), self.objects))
+class SelectAmbiguity(RegistryException):
+ """Raised when several objects compete at selection time with an equal
+ score.
+
+ """
+
def _modname_from_path(path, extrapath=None):
modpath = modpath_from_file(path, extrapath)
@@ -402,7 +408,7 @@ class Registry(dict):
msg = 'select ambiguity: %s\n(args: %s, kwargs: %s)'
if self.debugmode:
# raise bare exception in debug mode
- raise Exception(msg % (winners, args, kwargs.keys()))
+ raise SelectAmbiguity(msg % (winners, args, kwargs.keys()))
self.error(msg, winners, args, kwargs.keys())
# return the result of calling the object
return self.selected(winners[0], args, kwargs)