From b97f47c481288f6c399af41cc33e0ad349842e8b Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 29 Oct 2010 16:29:37 -0700 Subject: Fix LazyItemsDict.__deepcopy__() for python 2.7. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In python-2.7, changes in deepcopy() make LazyItemsDict.__deepcopy__() fail in some cases. Thanks to Diego E. Pettenò for reporting. --- pym/portage/util/__init__.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'pym/portage/util/__init__.py') diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 0c2dc3382..a0f578eb4 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -1341,15 +1341,12 @@ class LazyItemsDict(UserDict): k_copy = deepcopy(k, memo) if k in self.lazy_items: lazy_item = self.lazy_items[k] - try: - result.lazy_items[k_copy] = deepcopy(lazy_item, memo) - except TypeError: - if not lazy_item.singleton: - raise - UserDict.__setitem__(result, - k_copy, deepcopy(self[k], memo)) - else: - UserDict.__setitem__(result, k_copy, None) + if not lazy_item.singleton: + raise TypeError("LazyItemsDict deepcopy is " + \ + "unsafe with lazy items that " + \ + "are not singletons: %s" % (lazy_item,)) + UserDict.__setitem__(result, + k_copy, deepcopy(self[k], memo)) else: UserDict.__setitem__(result, k_copy, deepcopy(self[k], memo)) return result -- cgit v1.2.3-1-g7c22