summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/__init__.py5
-rw-r--r--pym/portage/exception.py7
2 files changed, 11 insertions, 1 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 38724fc45..dc21b10d5 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -6617,7 +6617,10 @@ def cpv_expand(mycpv, mydb=None, use_cache=1, settings=None):
else:
virtual_name_collision = True
if not virtual_name_collision:
- raise ValueError, matches
+ # AmbiguousPackageName inherits from ValueError,
+ # for backward compatibility with calling code
+ # that already handles ValueError.
+ raise portage.exception.AmbiguousPackageName(matches)
elif matches:
mykey=matches[0]
diff --git a/pym/portage/exception.py b/pym/portage/exception.py
index ff34993a6..6626fa3bf 100644
--- a/pym/portage/exception.py
+++ b/pym/portage/exception.py
@@ -67,6 +67,13 @@ class ReadOnlyFileSystem(PortageException):
class CommandNotFound(PortageException):
"""A required binary was not available or executable"""
+class AmbiguousPackageName(ValueError, PortageException):
+ """Raised by portage.cpv_expand() when the package name is ambiguous due
+ to the existence of multiple matches in different categories. This inherits
+ from ValueError, for backward compatibility with calling code that already
+ handles ValueError."""
+ def __str__(self):
+ return ValueError.__str__(self)
class PortagePackageException(PortageException):
"""Malformed or missing package data"""