[docs]defmake_copy(obj:Any)->Any:"""Makes a copy of the objects."""ifisinstance(obj,np.ndarray):returnobj.copy()ifisinstance(obj,tuple):returntuple(make_copy(_)for_inobj)ifisinstance(obj,list):return[make_copy(_)for_inobj]ifisinstance(obj,dict):return{k:make_copy(v)fork,vinobj.items()}ifhasattr(obj,"clone"):returnobj.clone()ifobj.__class__.__name__in("DynamicCache","patched_DynamicCache"):cache=obj.__class__()ifhasattr(obj,"_seen_tokens"):cache._seen_tokens=obj._seen_tokenscache.key_cache=make_copy(obj.key_cache)cache.value_cache=make_copy(obj.value_cache)returncachetry:returncopy.deepcopy(obj)exceptRuntimeErrorase:raiseRuntimeError(f"deepcopy did not work on type {type(obj)}: {string_type(obj)}")frome