diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-10-30 23:32:42 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-10-30 23:34:13 -0700 |
commit | 6f19c917919a6ce119c7cec9ca674d6afe0510f2 (patch) | |
tree | d8ce97ebaf79e3daf6ff0ea7d7c65ca7d8f75555 | |
parent | e4813a9b821f1f941fdc1bd3bb7f0ad57a4b88fc (diff) | |
download | portage-6f19c917919a6ce119c7cec9ca674d6afe0510f2.tar.gz portage-6f19c917919a6ce119c7cec9ca674d6afe0510f2.tar.bz2 portage-6f19c917919a6ce119c7cec9ca674d6afe0510f2.zip |
Update docstring for LazyItemsDict.__deepcopy__()
-rw-r--r-- | pym/portage/util/__init__.py | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index d766690b3..237ede658 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -1288,23 +1288,10 @@ class LazyItemsDict(UserDict): def __deepcopy__(self, memo=None): """ - WARNING: If any of the lazy items contains a bound method then it's - typical for deepcopy() to raise an exception like this: - - File "/usr/lib/python2.5/copy.py", line 189, in deepcopy - y = _reconstruct(x, rv, 1, memo) - File "/usr/lib/python2.5/copy.py", line 322, in _reconstruct - y = callable(*args) - File "/usr/lib/python2.5/copy_reg.py", line 92, in __newobj__ - return cls.__new__(cls, *args) - TypeError: instancemethod expected at least 2 arguments, got 0 - - If deepcopy() needs to work, this problem can be avoided by - implementing lazy items with normal (non-bound) functions. - - If deepcopy() raises a TypeError for a lazy item that has been added - via a call to addLazySingleton(), the singleton will be automatically - evaluated and deepcopy() will instead be called on the result. + This forces evaluation of each contained lazy item, and deepcopy of + the result. A TypeError is raised if any contained lazy item is not + a singleton, since it is not necessarily possible for the behavior + of this type of item to be safely preserved. """ if memo is None: memo = {} |