
    z%ip!                         	 d dl mZmZmZ d dlmZ d dlZg dZ G d dej                  j                        Z G d dej                  j                        Z G d	 d
e      Z G d de      ZddZy)    )DEFAULT_PROTOCOLPickler	Unpickler)BytesION)Shelf
BsdDbShelfDbfilenameShelfopenc                   2    e Zd Z	 d ZexZxZxZxZxZZ	d Z
y)_ClosedDictc                     t        d      )Nz!invalid operation on closed shelf)
ValueError)selfargss     :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/shelve.pyclosedz_ClosedDict.closedE   s    <==    c                      y)Nz<Closed Dictionary> r   s    r   __repr__z_ClosedDict.__repr__I   s    $r   N)__name__
__module____qualname__r   __iter____len____getitem____setitem____delitem__keysr   r   r   r   r   r   B   s-    D>JPPHPwPP{P[4%r   r   c                   d    e Zd Z	 	 	 ddZd Zd Zd ZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zy)r   Nc                 Z    || _         |t        }|| _        || _        i | _        || _        y N)dictr   	_protocol	writebackcachekeyencodingr   r$   protocolr&   r(   s        r   __init__zShelf.__init__T   s1    	'H!"
&r   c              #      K   | j                   j                         D ]  }|j                  | j                         ! y wr#   )r$   r    decoder(   )r   ks     r   r   zShelf.__iter__^   s5     ! 	-A((4++,,	-s   >A c                 ,    t        | j                        S r#   )lenr$   r   s    r   r   zShelf.__len__b   s    499~r   c                 P    |j                  | j                        | j                  v S r#   encoder(   r$   r   keys     r   __contains__zShelf.__contains__e   s     zz$**+tyy88r   c                 ^    |j                  | j                        | j                  v r| |   S |S r#   r2   )r   r5   defaults      r   getz	Shelf.geth   s,    ::d&&'49949r   c                    	 | j                   |   }|S # t        $ ri t        | j                  |j	                  | j
                                 }t        |      j                         }| j                  r|| j                   |<   Y |S w xY wr#   )	r'   KeyErrorr   r$   r3   r(   r   loadr&   r   r5   valuefs       r   r   zShelf.__getitem__m   sz    	(JJsOE   	(		#**T-=-=">?@AaL%%'E~~"'

3	(s    A.BBc                    | j                   r|| j                  |<   t               }t        || j                        }|j                  |       |j                         | j                  |j                  | j                        <   y r#   )
r&   r'   r   r   r%   dumpgetvaluer$   r3   r(   )r   r5   r>   r?   ps        r   r   zShelf.__setitem__w   s[    >>#DJJsOIAt~~&	u23**,		#**T--./r   c                     | j                   |j                  | j                        = 	 | j                  |= y # t        $ r Y y w xY wr#   )r$   r3   r(   r'   r;   r4   s     r   r   zShelf.__delitem__   s?    IIcjj!1!123	

3 		s   6 	AAc                     | S r#   r   r   s    r   	__enter__zShelf.__enter__   s    r   c                 $    | j                          y r#   )close)r   typer>   	tracebacks       r   __exit__zShelf.__exit__   s    

r   c                    | j                   y 	 | j                          	 | j                   j                          	 t	               | _         y # t        $ r Y w xY w#  d | _         Y y xY w# 	 t	               | _         w #  d | _         Y w xY wxY wr#   )r$   syncrH   AttributeErrorr   r   s    r   rH   zShelf.close   s{    99	!IIK		!!'M	 " ! 	!'M	! 	sK   A( A A 	AA( AA( 	A%(B*A:9B:	BBc                 >    t        | d      sy | j                          y )Nr&   )hasattrrH   r   s    r   __del__zShelf.__del__   s    t[) 

r   c                    | j                   rH| j                  r<d| _         | j                  j                         D ]
  \  }}|| |<    d| _         i | _        t        | j                  d      r| j                  j                          y y )NFTrM   )r&   r'   itemsrP   r$   rM   )r   r5   entrys      r   rM   z
Shelf.sync   sn    >>djj"DN"jj..0 "
U!S	"!DNDJ499f%IINN &r   NFzutf-8r#   )r   r   r   r+   r   r   r6   r9   r   r   r   rF   rK   rH   rQ   rM   r   r   r   r   r   M   sP     7<$'-9
?!"r   r   c                   8    e Zd Z	 	 	 ddZd Zd Zd Zd Zd Zy)	r   Nc                 6    t         j                  | ||||       y r#   )r   r+   r)   s        r   r+   zBsdDbShelf.__init__   s    tT8YDr   c                     | j                   j                  |      \  }}t        |      }|j                  | j                        t        |      j                         fS r#   )r$   set_locationr   r-   r(   r   r<   r=   s       r   rY   zBsdDbShelf.set_location   sJ    yy--c2eEN

4++,il.?.?.ABBr   c                     t        | j                        \  }}t        |      }|j                  | j                        t        |      j                         fS r#   )nextr$   r   r-   r(   r   r<   r=   s       r   r[   zBsdDbShelf.next   sC    DIIeEN

4++,il.?.?.ABBr   c                     | j                   j                         \  }}t        |      }|j                  | j                        t        |      j                         fS r#   )r$   previousr   r-   r(   r   r<   r=   s       r   r]   zBsdDbShelf.previous   sH    yy))+eEN

4++,il.?.?.ABBr   c                     | j                   j                         \  }}t        |      }|j                  | j                        t        |      j                         fS r#   )r$   firstr   r-   r(   r   r<   r=   s       r   r_   zBsdDbShelf.first   sF    yy(eEN

4++,il.?.?.ABBr   c                     | j                   j                         \  }}t        |      }|j                  | j                        t        |      j                         fS r#   )r$   lastr   r-   r(   r   r<   r=   s       r   ra   zBsdDbShelf.last   sF    yy~~'eEN

4++,il.?.?.ABBr   rU   )	r   r   r   r+   rY   r[   r]   r_   ra   r   r   r   r   r      s3    
 7<$EC
C
C
C
Cr   r   c                       e Zd Z	 ddZy)r	   Nc                 \    dd l }t        j                  | |j                  ||      ||       y )Nr   )dbmr   r+   r
   )r   filenameflagr*   r&   rd   s         r   r+   zDbfilenameShelf.__init__   s"    tSXXh5xKr   cNF)r   r   r   r+   r   r   r   r	   r	      s    Lr   r	   c                      	 t        | |||      S r#   )r	   )re   rf   r*   r&   s       r   r
   r
      s    
 8T8Y??r   rg   )pickler   r   r   ior   collections.abccollections__all__abcMutableMappingr   r   r   r	   r
   r   r   r   <module>rq      sp   8t 8 7  
<%+//00 %_KOO** _D(C (CV	Le 	L@r   