U e5dO!�@s�ddlmZmZddlmZddlZddddgZGdd �d ejj �Z Gd d�dejj �Z Gd d�de �Z Gd d�de �Z ddd�ZdS)�)�Pickler� Unpickler)�BytesION�Shelf� BsdDbShelf�DbfilenameShelf�openc@s4eZdZdd�ZeZZZZZZ dd�Z dS)� _ClosedDictcGs td��dS)Nz!invalid operation on closed shelf)� ValueError)�self�args�r �/usr/lib64/python3.8/shelve.py�closedEsz_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@sxeZdZddd�Zdd�Zdd �Zd d �Zdd d �Zdd�Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�ZdS) rNF�utf-8cCs.||_|dkrd}||_||_i|_||_dS)N�)�dict� _protocol� writeback�cache� keyencoding�r r�protocolrr!r r r�__init__TszShelf.__init__ccs"|j��D]}|�|j�Vq dS�N)rr�decoder!)r �kr r rr^szShelf.__iter__cCs t|j�Sr%)�lenrrr r rrbsz Shelf.__len__cCs|�|j�|jkSr%��encoder!r�r �keyr r r� __contains__eszShelf.__contains__cCs|�|j�|jkr||S|Sr%r))r r,�defaultr r r�gethsz Shelf.getcCsZz|j|}WnFtk rTt|j|�|j��}t|���}|jrP||j|<YnX|Sr%) r �KeyErrorrrr*r!r�loadr�r r,�value�fr r rrms zShelf.__getitem__cCsF|jr||j|<t�}t||j�}|�|�|��|j|�|j �<dSr%) rr rrr�dump�getvaluerr*r!)r r,r3r4�pr r rrws    zShelf.__setitem__cCs6|j|�|j�=z |j|=Wntk r0YnXdSr%)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 Csf|jdkrdSz0|��z|j��Wntk r:YnXW5z t�|_Wnd|_YnXXdSr%)rr �syncr9�AttributeErrorrr r rr9�s   z Shelf.closecCst|d�sdS|��dS)Nr)�hasattrr9rr r r�__del__�s z Shelf.__del__cCsT|jr:|jr:d|_|j��D]\}}|||<qd|_i|_t|jd�rP|j��dS)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�   c@s>eZdZddd�Zdd�Zdd �Zd d �Zd d �Zdd�ZdS)rNFrcCst�|||||�dSr%)rr$r"r r rr$�szBsdDbShelf.__init__cCs0|j�|�\}}t|�}|�|j�t|���fSr%)r� set_locationrr&r!rr1r2r r rrC�szBsdDbShelf.set_locationcCs.t|j�\}}t|�}|�|j�t|���fSr%)�nextrrr&r!rr1r2r r rrD�szBsdDbShelf.nextcCs.|j��\}}t|�}|�|j�t|���fSr%)r�previousrr&r!rr1r2r r rrE�szBsdDbShelf.previouscCs.|j��\}}t|�}|�|j�t|���fSr%)r�firstrr&r!rr1r2r r rrF�szBsdDbShelf.firstcCs.|j��\}}t|�}|�|j�t|���fSr%)r�lastrr&r!rr1r2r r rrG�szBsdDbShelf.last)NFr) rrrr$rCrDrErFrGr r r rr�s � c@seZdZddd�ZdS)r�cNFcCs$ddl}t�||�||�||�dS)Nr)�dbmrr$r)r �filename�flagr#rrIr r rr$�szDbfilenameShelf.__init__)rHNF)rrrr$r r r rr�srHFcCst||||�Sr%)r)rJrKr#rr r rr�s )rHNF)�picklerr�iorZcollections.abc� collections�__all__�abc�MutableMappingr rrrrr r r r�;s   b+