? mypatch.diff Index: copy.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/copy.py,v retrieving revision 1.43 diff -c -r1.43 copy.py *** copy.py 8 Mar 2004 05:59:33 -0000 1.43 --- copy.py 12 Jan 2005 00:33:09 -0000 *************** *** 319,335 **** args = deepcopy(args, memo) y = callable(*args) memo[id(x)] = y ! if listiter is not None: ! for item in listiter: ! if deep: ! item = deepcopy(item, memo) ! y.append(item) ! if dictiter is not None: ! for key, value in dictiter: ! if deep: ! key = deepcopy(key, memo) ! value = deepcopy(value, memo) ! y[key] = value if state: if deep: state = deepcopy(state, memo) --- 319,325 ---- args = deepcopy(args, memo) y = callable(*args) memo[id(x)] = y ! if state: if deep: state = deepcopy(state, memo) *************** *** 345,350 **** --- 335,352 ---- if slotstate is not None: for key, value in slotstate.iteritems(): setattr(y, key, value) + + if listiter is not None: + for item in listiter: + if deep: + item = deepcopy(item, memo) + y.append(item) + if dictiter is not None: + for key, value in dictiter: + if deep: + key = deepcopy(key, memo) + value = deepcopy(value, memo) + y[key] = value return y del d *************** *** 407,412 **** print map(repr.repr, l1) print map(repr.repr, l2) print map(repr.repr, l3) ! if __name__ == '__main__': _test() --- 409,424 ---- print map(repr.repr, l1) print map(repr.repr, l2) print map(repr.repr, l3) ! class odict(dict): ! def __init__(self, d = {}): ! self.a = 99 ! dict.__init__(self, d) ! def __setitem__(self, k, i): ! dict.__setitem__(self, k, i) ! self.a ! o = odict({"A" : "B"}) ! x = deepcopy(o) ! print o, x ! if __name__ == '__main__': _test()