diff options
Diffstat (limited to 'Lib/weakref.py')
-rw-r--r-- | Lib/weakref.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Lib/weakref.py b/Lib/weakref.py index 78b74ad320..84d81a2734 100644 --- a/Lib/weakref.py +++ b/Lib/weakref.py @@ -85,6 +85,17 @@ class WeakValueDictionary(UserDict.UserDict): new[key] = o return new + __copy__ = copy + + def __deepcopy__(self, memo): + from copy import deepcopy + new = self.__class__() + for key, wr in self.data.items(): + o = wr() + if o is not None: + new[deepcopy(key, memo)] = o + return new + def get(self, key, default=None): try: wr = self.data[key] @@ -256,6 +267,17 @@ class WeakKeyDictionary(UserDict.UserDict): new[o] = value return new + __copy__ = copy + + def __deepcopy__(self, memo): + from copy import deepcopy + new = self.__class__() + for key, value in self.data.items(): + o = key() + if o is not None: + new[o] = deepcopy(value, memo) + return new + def get(self, key, default=None): return self.data.get(ref(key),default) |