3 \C!�@s�ddlmZmZddlmZddlZddddgZGdd �d ej�ZGd d�dej�Z Gd d�de �Z Gd d�de �Z ddd�Z dS)�)�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.6/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&x |jj�D]}|j|j�Vq WdS)N)rr�decoder )r �kr r rr^szShelf.__iter__cCs t|j�S)N)�lenr)r r r rrbsz Shelf.__len__cCs|j|j�|jkS)N)�encoder r)r �keyr r r� __contains__eszShelf.__contains__cCs|j|j�|jkr||S|S)N)r&r r)r r'�defaultr r r�gethsz Shelf.getc CsZy|j|}WnFtk rTt|j|j|j��}t|�j�}|jrP||j|<YnX|S)N) r�KeyErrorrrr&r r�loadr)r r'�value�fr r rrms zShelf.__getitem__cCsF|jr||j|<t�}t||j�}|j|�|j�|j|j|j �<dS)N) rrrrr�dump�getvaluerr&r )r r'r-r.�pr r rrws    zShelf.__setitem__c Cs6|j|j|j�=y |j|=Wntk r0YnXdS)N)rr&r rr+)r r'r r rrs  zShelf.__delitem__cCs|S)Nr )r r r r� __enter__�szShelf.__enter__cCs |j�dS)N)�close)r �typer-� tracebackr r r�__exit__�szShelf.__exit__cCsf|jdkrdSz0|j�y|jj�Wntk r:YnXWdy t�|_Wnd|_YnXXdS)N)r�syncr3�AttributeErrorr )r r r rr3�s   z Shelf.closecCst|d�sdS|j�dS)Nr)�hasattrr3)r r r r�__del__�s z Shelf.__del__cCsX|jr>|jr>d|_x|jj�D]\}}|||<qWd|_i|_t|jd�rT|jj�dS)NFTr7)rr�itemsr9rr7)r r'�entryr r rr7�s   z Shelf.sync)NFr)N)rrrr"rrr(r*rrrr2r6r3r:r7r r r rrMs   c@s>eZdZddd�Zdd�Zdd �Zd d �Zd d �Zdd�ZdS)rNF�utf-8cCstj|||||�dS)N)rr")r rr!rr r r rr"�szBsdDbShelf.__init__cCs0|jj|�\}}t|�}|j|j�t|�j�fS)N)r� set_locationrr#r rr,)r r'r-r.r r rr>�szBsdDbShelf.set_locationcCs.t|j�\}}t|�}|j|j�t|�j�fS)N)�nextrrr#r rr,)r r'r-r.r r rr?�szBsdDbShelf.nextcCs.|jj�\}}t|�}|j|j�t|�j�fS)N)r�previousrr#r rr,)r r'r-r.r r rr@�szBsdDbShelf.previouscCs.|jj�\}}t|�}|j|j�t|�j�fS)N)r�firstrr#r rr,)r r'r-r.r r rrA�szBsdDbShelf.firstcCs.|jj�\}}t|�}|j|j�t|�j�fS)N)r�lastrr#r rr,)r r'r-r.r r rrB�szBsdDbShelf.last)NFr=) rrrr"r>r?r@rArBr r r rr�s  c@seZdZddd�ZdS)r�cNFcCs$ddl}tj||j||�||�dS)Nr)�dbmrr"r)r �filename�flagr!rrDr r rr"�szDbfilenameShelf.__init__)rCNF)rrrr"r r r rr�srCFcCst||||�S)N)r)rErFr!rr r rr�s )rCNF) �picklerr�ior� collections�__all__�MutableMappingr rrrrr r r r�;s   b+