From 5da51eb9ab2e8b0c2e6c1a895b8e07bc98a6d2ea Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 25 Jun 2008 08:42:02 +0000 Subject: [PATCH] Implement __contains__, pop() and clear() for Package.metadata attributes. svn path=/main/trunk/; revision=10780 --- pym/_emerge/__init__.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 8ce5d1969..7b6dc6e40 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1446,6 +1446,29 @@ class _PackageMetadataWrapper(object): except KeyError: return default + def __contains__(self, k): + return hasattr(self, "_val_" + k) + + def pop(self, key, *args): + if len(args) > 1: + raise TypeError("pop expected at most 2 arguments, got " + \ + repr(1 + len(args))) + try: + value = self[key] + except KeyError: + if args: + return args[0] + raise + del self[key] + return value + + def clear(self): + for k in self._keys: + try: + delattr(self, "_val_" + k) + except AttributError: + pass + def _set_inherited(self, k, v): if isinstance(v, basestring): v = frozenset(v.split()) -- 2.26.2