From 4731481f488d3a8fd71e773fc0e044de9fc3b35f Mon Sep 17 00:00:00 2001 From: helmutm Date: Sun, 6 Jun 2010 13:19:25 +0000 Subject: [PATCH] add 'default' argument to Jeep.pop() git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3887 fd906abe-77d9-0310-91a1-e0d9ade77398 --- util/jeep.py | 14 +++++++++----- util/jeep.txt | 5 +++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/util/jeep.py b/util/jeep.py index a4fa305..f48cd15 100644 --- a/util/jeep.py +++ b/util/jeep.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2007 Helmut Merz helmutm@cy55.de +# Copyright (c) 2010 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,6 +25,7 @@ $Id$ """ _notfound = object() +_undefined = object() class Jeep(object): @@ -86,7 +87,7 @@ class Jeep(object): def values(self): return list(self) - return [self[k] for k in self] + #return [self[k] for k in self] def items(self): return [(k, self[k]) for k in self._sequence] @@ -121,11 +122,14 @@ class Jeep(object): for key, value in mapping.items(): self[key] = value - def pop(self, key=-1): - value = self[key] + def pop(self, key=-1, default=_undefined): if type(key) in (int, long): key = self._sequence[key] - delattr(self, key) + if default is _undefined: + value = self[key] + else: + value = self.get(key, default) + self.remove(key) return value def find(self, obj): diff --git a/util/jeep.txt b/util/jeep.txt index 61fdf80..3506753 100644 --- a/util/jeep.txt +++ b/util/jeep.txt @@ -113,6 +113,11 @@ More Methods and Operators 'third value' >>> len(jeep) 2 + >>> jeep.pop('blubb') + Traceback (most recent call last): + ... + KeyError: 'blubb' + >>> jeep.pop('blubb', None) >>> 'third' in jeep False