a DOgO!@sddlmZmZddlmZddlZgdZGdddejj Z Gdddejj Z Gd d d e Z Gd d d e Z dddZdS))Pickler Unpickler)BytesION)Shelf BsdDbShelfDbfilenameShelfopenc@s4eZdZddZeZZZZZZ ddZ dS) _ClosedDictcGs tddS)Nz!invalid operation on closed shelf) ValueError)selfargsr /usr/lib64/python3.9/shelve.pyclosedEsz_ClosedDict.closedcCsdS)Nzr r r r r__repr__Isz_ClosedDict.__repr__N) __name__ __module__ __qualname__r__iter____len__ __getitem__ __setitem__ __delitem__keysrr r r rr Bsr c@sxeZdZdddZddZdd Zd d Zdd d ZddZddZ ddZ ddZ ddZ ddZ ddZddZdS) rNFutf-8cCs.||_|durd}||_||_i|_||_dS)N)dict _protocol writebackcache keyencodingr rprotocolrr!r r r__init__TszShelf.__init__ccs"|jD]}||jVq dSN)rrdecoder!)r kr r rr^szShelf.__iter__cCs t|jSr%)lenrrr r rrbsz Shelf.__len__cCs||j|jvSr%encoder!rr keyr r r __contains__eszShelf.__contains__cCs||j|jvr||S|Sr%r))r r,defaultr r rgethsz Shelf.getcCsXz|j|}WnDtyRt|j||j}t|}|jrN||j|<Yn0|Sr%) r KeyErrorrrr*r!rloadrr r,valuefr r rrms  zShelf.__getitem__cCsF|jr||j|<t}t||j}||||j||j <dSr%) rr rrrdumpgetvaluerr*r!)r r,r3r4pr r rrws    zShelf.__setitem__cCs4|j||j=z |j|=Wnty.Yn0dSr%)rr*r!r r0r+r r rrs   zShelf.__delitem__cCs|Sr%r rr r r __enter__szShelf.__enter__cCs |dSr%)close)r typer3 tracebackr r r__exit__szShelf.__exit__c Cs|jdurdSzN|z|jWnty8Yn0Wz t|_Wqd|_Yq0n"z t|_Wnd|_Yn00dSr%)rsyncr9AttributeErrorr rr r rr9s     z Shelf.closecCst|dsdS|dS)Nr)hasattrr9rr r r__del__s z Shelf.__del__cCsT|jr:|jr:d|_|jD]\}}|||<qd|_i|_t|jdrP|jdS)NFTr=)rr itemsr?rr=)r r,entryr r rr=s   z Shelf.sync)NFr)N)rrrr$rrr-r/rrrr8r<r9r@r=r r r rrMs   rc@s>eZdZdddZddZdd Zd d Zd d ZddZdS)rNFrcCst|||||dSr%)rr$r"r r rr$szBsdDbShelf.__init__cCs0|j|\}}t|}||jt|fSr%)r set_locationrr&r!rr1r2r r rrCszBsdDbShelf.set_locationcCs.t|j\}}t|}||jt|fSr%)nextrrr&r!rr1r2r r rrDszBsdDbShelf.nextcCs.|j\}}t|}||jt|fSr%)rpreviousrr&r!rr1r2r r rrEszBsdDbShelf.previouscCs.|j\}}t|}||jt|fSr%)rfirstrr&r!rr1r2r r rrFszBsdDbShelf.firstcCs.|j\}}t|}||jt|fSr%)rlastrr&r!rr1r2r r rrGszBsdDbShelf.last)NFr) rrrr$rCrDrErFrGr r r rrs  rc@seZdZdddZdS)rcNFcCs$ddl}t||||||dS)Nr)dbmrr$r)r filenameflagr#rrIr r rr$szDbfilenameShelf.__init__)rHNF)rrrr$r r r rrsrrHFcCst||||Sr%)r)rJrKr#rr r rrs r)rHNF)picklerriorcollections.abc collections__all__abcMutableMappingr rrrrr r r r;s  b+