Ignore:
Timestamp:
Mar 19, 2014, 11:11:30 AM (11 years ago)
Author:
dmik
Message:

python: Update vendor to 2.7.6.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/vendor/current/Lib/copy.py

    r2 r388  
    5050
    5151import types
     52import weakref
    5253from copy_reg import dispatch_table
    5354
     
    103104          frozenset, type, xrange, types.ClassType,
    104105          types.BuiltinFunctionType, type(Ellipsis),
    105           types.FunctionType):
     106          types.FunctionType, weakref.ref):
    106107    d[t] = _copy_immutable
    107108for name in ("ComplexType", "UnicodeType", "CodeType"):
     
    221222d[types.BuiltinFunctionType] = _deepcopy_atomic
    222223d[types.FunctionType] = _deepcopy_atomic
     224d[weakref.ref] = _deepcopy_atomic
    223225
    224226def _deepcopy_list(x, memo):
     
    259261    d[PyStringMap] = _deepcopy_dict
    260262
     263def _deepcopy_method(x, memo): # Copy instance methods
     264    return type(x)(x.im_func, deepcopy(x.im_self, memo), x.im_class)
     265_deepcopy_dispatch[types.MethodType] = _deepcopy_method
     266
    261267def _keep_alive(x, memo):
    262268    """Keeps a reference to the object x in the memo.
     
    323329    y = callable(*args)
    324330    memo[id(x)] = y
    325     if listiter is not None:
    326         for item in listiter:
    327             if deep:
    328                 item = deepcopy(item, memo)
    329             y.append(item)
    330     if dictiter is not None:
    331         for key, value in dictiter:
    332             if deep:
    333                 key = deepcopy(key, memo)
    334                 value = deepcopy(value, memo)
    335             y[key] = value
     331
    336332    if state:
    337333        if deep:
     
    349345                for key, value in slotstate.iteritems():
    350346                    setattr(y, key, value)
     347
     348    if listiter is not None:
     349        for item in listiter:
     350            if deep:
     351                item = deepcopy(item, memo)
     352            y.append(item)
     353    if dictiter is not None:
     354        for key, value in dictiter:
     355            if deep:
     356                key = deepcopy(key, memo)
     357                value = deepcopy(value, memo)
     358            y[key] = value
    351359    return y
    352360
     
    411419    print map(repr.repr, l2)
    412420    print map(repr.repr, l3)
     421    class odict(dict):
     422        def __init__(self, d = {}):
     423            self.a = 99
     424            dict.__init__(self, d)
     425        def __setitem__(self, k, i):
     426            dict.__setitem__(self, k, i)
     427            self.a
     428    o = odict({"A" : "B"})
     429    x = deepcopy(o)
     430    print(o, x)
    413431
    414432if __name__ == '__main__':
Note: See TracChangeset for help on using the changeset viewer.