msg62413 - (view) |
Author: Rick Harris (rharris) |
Date: 2008-02-14 21:22 |
The copy module will not properly copy/deepcopy weakrefs, it will bomb out with __new__ not having enough args. This is a problem b/c it makes deepcopying of objects that make use of Weak(Key|Value)Dictionaries difficult. To replicate: import copy, weakref class Test(object): pass t = Test() wr = weakref.ref(t) wr_new = copy.copy(wr) |
|
|
msg64101 - (view) |
Author: Sean Reifschneider (jafo) *  |
Date: 2008-03-19 21:12 |
Rick: In the future, please provide a context or unified diff ("diff -c") so that we get the file name that the diff is for and some additional context. |
|
|
msg64909 - (view) |
Author: Rick Harris (rharris) |
Date: 2008-04-04 01:06 |
Sorry about forgetting the -c arg! The patch is intended for python/trunk/Lib/copy.py. It looks like Raymond Hettinger has made a similar-ish change recently to make Ellipsis copyable. |
|
|
msg83606 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-03-14 23:49 |
Should a deepcopy of a weakref return the same weakref, or a weakref to a new copied object? Also, what about the optional callback? |
|
|
msg83607 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-03-14 23:53 |
Hmm, forget that question. If we deepcopy the weakref target, it will be destroyed just afterwards, making the deepcopied weakref useless. |
|
|
msg83609 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-03-15 00:34 |
Here is a patch providing proper copy and deepcopy support, including for weak dicts (the Proxy type is unsupported, though). |
|
|
msg83612 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-03-15 00:45 |
Updated patch so that copied weakdicts are decoupled (adding an item to the copy doesn't mutate the original). |
|
|
msg86917 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-05-01 21:48 |
Raymond, Guido, any opinion on this one? |
|
|
msg87822 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-05-15 17:06 |
Committed in r72662, r72670. Thanks! |
|
|