Implement DependencyArg __equals__, __hash__, and __unicode__ methods.
authorZac Medico <zmedico@gentoo.org>
Thu, 16 Sep 2010 02:39:00 +0000 (19:39 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 16 Sep 2010 02:39:00 +0000 (19:39 -0700)
pym/_emerge/DependencyArg.py

index 3bcaabefee6d650f7cf389c1dc6dae43dfdfdac2..31cd882b5938794075fe3a990ab2149e12b99634 100644 (file)
@@ -1,11 +1,33 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
+import sys
+
+from portage import _encodings, _unicode_encode, _unicode_decode
+
 class DependencyArg(object):
        def __init__(self, arg=None, root_config=None):
                self.arg = arg
                self.root_config = root_config
 
+       def __equals__(self, other):
+               if self.__class__ is not other.__class__:
+                       return False
+               return self.arg == other.arg and \
+                       self.root_config.root == other.root_config.root
+
+       def __hash__(self):
+               return hash((self.arg, self.root_config.root))
+
        def __str__(self):
-               return str(self.arg)
+               # Force unicode format string for python-2.x safety,
+               # ensuring that self.arg.__unicode__() is used
+               # when necessary.
+               return _unicode_decode("%s") % (self.arg,)
+
+       if sys.hexversion < 0x3000000:
+
+               __unicode__ = __str__
 
+               def __str__(self):
+                       return _unicode_encode(self.__unicode__(), encoding=_encodings['content'])