fromtypingimportOptionalimportcopyfromeasydictimportEasyDictfromding.worker.bufferimportDequeBufferfromding.utilsimportBUFFER_REGISTRY@BUFFER_REGISTRY.register('deque')classDequeBufferWrapper(object):@classmethoddefdefault_config(cls:type)->EasyDict:cfg=EasyDict(copy.deepcopy(cls.config))cfg.cfg_type=cls.__name__+'Dict'returncfgconfig=dict(replay_buffer_size=10000,)def__init__(self,cfg:EasyDict,tb_logger:Optional[object]=None,exp_name:str='default_experiement')->None:self.buffer=DequeBuffer(size=cfg.replay_buffer_size)defsample(self,size:int,train_iter:int):output=self.buffer.sample(size=size,ignore_insufficient=True)iflen(output)>0:return[o.dataforoinoutput]else:returnNonedefpush(self,data,cur_collector_envstep:int=-1)->None:# meta = {'train_iter_data_collected': }fordindata:self.buffer.push(d)