
    Be                        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y)    )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_filec                L    t         |           || _        || _        d | _        y N)super__init__r   r   r   )selfr   r   	__class__s      (lib/python3.12/site-packages/zict/zip.pyr   zZip.__init__+   s#     	
    c                    | j                   dk(  rt        d      | j                  r| j                  j                  s0t	        j
                  | j                  | j                         | _        | j                  S )NclosedzFile closed)r   )r   OSErrorr   fpzipfileZipFiler   r   s    r   filezZip.file1   sN    99 -((zz TYYGDJzzr   c                n    t        |t              st        |      | j                  j	                  |      S r   )
isinstancer   KeyErrorr$   readr   keys     r   __getitem__zZip.__getitem__9   s)    #s#3-yy~~c""r   c                    t        |t              st        |      t        |t        t        t
        f      st        |      || v rt        d      | j                  j                  ||       y NzNot supported by stdlib zipfile)	r&   r   	TypeErrorbytes	bytearray
memoryviewNotImplementedErrorr$   writestr)r   r*   values      r   __setitem__zZip.__setitem__>   sY    #s#C. %%J!?@E""$;%&GHH		3&r   c                <    d | j                   j                  D        S )Nc              3  4   K   | ]  }|j                     y wr   )r   ).0zis     r   	<genexpr>zZip.__iter__.<locals>.<genexpr>H   s     99s   )r$   filelistr#   s    r   __iter__zZip.__iter__G   s    9dii&8&899r   c                |    t        |t              sy	 | j                  j                  |       y# t        $ r Y yw xY w)NFT)r&   r   r$   getinfor'   r)   s     r   __contains__zZip.__contains__J   s;    #s#	IIc" 		s   / 	;;c                    t        d      r-   )r2   r)   s     r   __delitem__zZip.__delitem__S   s    !"CDDr   c                @    t        | j                  j                        S r   )lenr$   r;   r#   s    r   __len__zZip.__len__V   s    499%%&&r   c                    | j                   r\| j                   j                  r$| j                   j                  j                          | j                   j                          d | _         y y r   )r   r    flushcloser#   s    r   rF   z	Zip.flushY   sD    ::zz}}

##%JJDJ	 r   c                2    | j                          d| _        y )Nr   )rF   r   r#   s    r   rG   z	Zip.close`   s    

	r   c                    | S r    r#   s    r   	__enter__zZip.__enter__d   s    r   c                $    | j                          y r   )rG   )r   argss     r   __exit__zZip.__exit__g   s    

r   )r   )r   r   r   r   )returnzzipfile.ZipFile)r*   r   rO   r/   )r*   r   r4   zbytes | bytearray | memoryviewrO   None)rO   zIterator[str])r*   objectrO   bool)r*   r   rO   rP   )rO   int)rO   rP   )rO   r   )rM   r   rO   rP   )__name__
__module____qualname____doc____annotations__r   propertyr$   r+   r5   r<   r?   rA   rD   rF   rG   rK   rN   __classcell__)r   s   @r   r   r      sg    . M
&&!!  #
':E'r   r   )
__future__r   r!   collections.abcr   typingr   r   r   r   typing_extensionsr	   r   rX   r   r/   r   rJ   r   r   <module>r_      sD    "  $ ! . .+01) 1Y.e
$ Yr   