o
     JAfp!                     @   s   	 d dl mZmZmZ d dlmZ d dlZg dZG dd dej	j
ZG dd dej	j
ZG d	d
 d
eZG dd deZdddZdS )    )DEFAULT_PROTOCOLPickler	Unpickler)BytesION)Shelf
BsdDbShelfDbfilenameShelfopenc                   @   s6   e Zd Z	 dd Ze Z Z Z Z ZZ	dd Z
dS )_ClosedDictc                 G   s   t d)Nz!invalid operation on closed shelf)
ValueError)selfargs r   /usr/lib/python3.10/shelve.pyclosedE   s   z_ClosedDict.closedc                 C   s   dS )Nz<Closed Dictionary>r   r   r   r   r   __repr__I      z_ClosedDict.__repr__N)__name__
__module____qualname__r   __iter____len____getitem____setitem____delitem__keysr   r   r   r   r   r
   B   s
    r
   c                   @   s~   e Zd Z	 		dddZdd Zdd	 Zd
d ZdddZdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS ) r   NFutf-8c                 C   s.   || _ |d u r	t}|| _|| _i | _|| _d S N)dictr   	_protocol	writebackcachekeyencodingr   r   protocolr!   r#   r   r   r   __init__T   s   
zShelf.__init__c                 c   s$    | j  D ]	}|| jV  qd S r   )r   r   decoder#   )r   kr   r   r   r   ^   s   zShelf.__iter__c                 C   s
   t | jS r   )lenr   r   r   r   r   r   b   s   
zShelf.__len__c                 C   s   | | j| jv S r   encoder#   r   r   keyr   r   r   __contains__e   s   zShelf.__contains__c                 C   s   | | j| jv r| | S |S r   r*   )r   r-   defaultr   r   r   geth   s   z	Shelf.getc                 C   s^   z| j | }W |S  ty.   t| j|| j }t| }| jr+|| j |< Y |S Y |S w r   )	r"   KeyErrorr   r   r+   r#   r   loadr!   r   r-   valuefr   r   r   r   m   s   zShelf.__getitem__c                 C   sF   | j r|| j|< t }t|| j}|| | | j|| j	< d S r   )
r!   r"   r   r   r    dumpgetvaluer   r+   r#   )r   r-   r4   r5   pr   r   r   r   w   s   

zShelf.__setitem__c                 C   s4   | j || j= z| j|= W d S  ty   Y d S w r   )r   r+   r#   r"   r1   r,   r   r   r   r      s   zShelf.__delitem__c                 C   s   | S r   r   r   r   r   r   	__enter__   r   zShelf.__enter__c                 C   s   |    d S r   )close)r   typer4   	tracebackr   r   r   __exit__   s   zShelf.__exit__c                 C   s|   | j d u rd S z'|   z| j   W n	 ty   Y nw W zt | _ W d S    d | _ Y d S zt | _ W w    d | _ Y w r   )r   syncr:   AttributeErrorr
   r   r   r   r   r:      s$   

zShelf.closec                 C   s   t | dsd S |   d S )Nr!   )hasattrr:   r   r   r   r   __del__   s   
zShelf.__del__c                 C   sX   | j r| jrd| _ | j D ]\}}|| |< qd| _ i | _t| jdr*| j  d S d S )NFTr>   )r!   r"   itemsr@   r   r>   )r   r-   entryr   r   r   r>      s   
z
Shelf.syncNFr   r   )r   r   r   r&   r   r   r.   r0   r   r   r   r9   r=   r:   rA   r>   r   r   r   r   r   M   s"    



r   c                   @   sD   e Zd Z	 		dddZdd Zdd	 Zd
d Zdd Zdd ZdS )r   NFr   c                 C   s   t | |||| d S r   )r   r&   r$   r   r   r   r&      s   zBsdDbShelf.__init__c                 C   s0   | j |\}}t|}|| jt| fS r   )r   set_locationr   r'   r#   r   r2   r3   r   r   r   rE      s   zBsdDbShelf.set_locationc                 C   s.   t | j\}}t|}|| jt| fS r   )nextr   r   r'   r#   r   r2   r3   r   r   r   rF         zBsdDbShelf.nextc                 C   .   | j  \}}t|}|| jt| fS r   )r   previousr   r'   r#   r   r2   r3   r   r   r   rI      rG   zBsdDbShelf.previousc                 C   rH   r   )r   firstr   r'   r#   r   r2   r3   r   r   r   rJ      rG   zBsdDbShelf.firstc                 C   rH   r   )r   lastr   r'   r#   r   r2   r3   r   r   r   rK      rG   zBsdDbShelf.lastrD   )	r   r   r   r&   rE   rF   rI   rJ   rK   r   r   r   r   r      s    
r   c                   @   s   e Zd Z	 dddZdS )r   cNFc                 C   s$   dd l }t| ||||| d S )Nr   )dbmr   r&   r	   )r   filenameflagr%   r!   rM   r   r   r   r&      s   zDbfilenameShelf.__init__rL   NF)r   r   r   r&   r   r   r   r   r      s    r   rL   Fc                 C   s   	 t | |||S r   )r   )rN   rO   r%   r!   r   r   r   r	      s   r	   rP   )pickler   r   r   ior   collections.abccollections__all__abcMutableMappingr
   r   r   r   r	   r   r   r   r   <module>   s    :b+