
    [e                        U d dl mZ d dlZd dlmZ d dlmZ d dlmZmZm	Z	 erd dl
mZ e	d         Zded	<    G d
 deeef                   ZdS )    )annotationsN)Iterator)MutableMapping)TYPE_CHECKINGAnyLiteral)	TypeAlias)rwxar	   FileModec                       e Zd ZU dZded<   ded<   ded<   d#d$ fd
Ze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-dZd.d"Z xZS )/Zipa9  Mutable Mapping interface to a Zip file

    Keys must be strings, values must be bytes

    Parameters
    ----------
    filename: string
    mode: string, ('r', 'w', 'a'), defaults to 'a'

    Notes
    -----
    None of this class is thread-safe - not even normally trivial methods such as
    ``__len__ `` or ``__contains__``.

    Examples
    --------
    >>> z = Zip('myfile.zip')  # doctest: +SKIP
    >>> z['x'] = b'123'  # doctest: +SKIP
    >>> z['x']  # doctest: +SKIP
    b'123'
    >>> z.flush()  # flush and write metadata to disk  # doctest: +SKIP
    strfilenamezFileMode | Literal['closed']modezzipfile.ZipFile | None_filer   r   c                r    t                                                       || _        || _        d | _        d S N)super__init__r   r   r   )selfr   r   	__class__s      (lib/python3.11/site-packages/zict/zip.pyr   zZip.__init__+   s2     	


    returnzipfile.ZipFilec                    | j         dk    rt          d          | j        r| j        j        s%t	          j        | j        | j                   | _        | j        S )NclosedzFile closed)r   )r   OSErrorr   fpzipfileZipFiler   r   s    r   filezZip.file1   sV    9  -(((z 	H 	H TYGGGDJzr   keybytesc                ~    t          |t                    st          |          | j                            |          S r   )
isinstancer   KeyErrorr&   readr   r'   s     r   __getitem__zZip.__getitem__9   s4    #s## 	 3--y~~c"""r   valuebytes | bytearray | memoryviewNonec                   t          |t                    st          |          t          |t          t          t
          f          st          |          || v rt          d          | j                            ||           d S NzNot supported by stdlib zipfile)	r*   r   	TypeErrorr(   	bytearray
memoryviewNotImplementedErrorr&   writestr)r   r'   r/   s      r   __setitem__zZip.__setitem__>   s}    #s## 	!C.. %%J!?@@ 	#E"""$;;%&GHHH	3&&&&&r   Iterator[str]c                .    d | j         j        D             S )Nc              3  $   K   | ]}|j         V  d S r   )r   ).0zis     r   	<genexpr>zZip.__iter__.<locals>.<genexpr>H   s$      99999999r   )r&   filelistr%   s    r   __iter__zZip.__iter__G   s    99di&89999r   objectboolc                    t          |t                    sdS 	 | j                            |           dS # t          $ r Y dS w xY w)NFT)r*   r   r&   getinfor+   r-   s     r   __contains__zZip.__contains__J   s[    #s## 	5	Ic"""4 	 	 	55	s   5 
AAc                     t          d          r3   )r7   r-   s     r   __delitem__zZip.__delitem__S   s    !"CDDDr   intc                4    t          | j        j                  S r   )lenr&   r@   r%   s    r   __len__zZip.__len__V   s    49%&&&r   c                    | j         rL| j         j        r| j         j                                         | j                                          d | _         d S d S r   )r   r"   flushcloser%   s    r   rN   z	Zip.flushY   sW    : 	z} &
##%%%JDJJJ		 	r   c                <    |                                   d| _        d S )Nr    )rN   r   r%   s    r   rO   z	Zip.close`   s    

			r   c                    | S r    r%   s    r   	__enter__zZip.__enter__d   s    r   argsr   c                .    |                                   d S r   )rO   )r   rT   s     r   __exit__zZip.__exit__g   s    

r   )r   )r   r   r   r   )r   r   )r'   r   r   r(   )r'   r   r/   r0   r   r1   )r   r:   )r'   rB   r   rC   )r'   r   r   r1   )r   rI   )r   r1   )r   r   )rT   r   r   r1   )__name__
__module____qualname____doc____annotations__r   propertyr&   r.   r9   rA   rF   rH   rL   rN   rO   rS   rV   __classcell__)r   s   @r   r   r      s]         . MMM&&&&!!!!          X# # # #
' ' ' ': : : :   E E E E' ' ' '                r   r   )
__future__r   r#   collections.abcr   typingr   r   r   r   typing_extensionsr	   r   r[   r   r(   r   rR   r   r   <module>rb      s    " " " " " " "  $ $ $ $ $ $ ! ! ! ! ! ! . . . . . . . . . . ,++++++01 1 1 1 1Y Y Y Y Y.e
$ Y Y Y Y Yr   