§
    dŠtjw  ã                   óF   — d dl Z d dlZd dlZd dlmZ  G d„ de¦  «        ZdS )é    N)ÚAbstractArchiveFileSystemc                   ó’   ‡ — e Zd ZdZdZdZdZddddej        ddfˆ fd„	Z	e
ˆ fd	„¦   «         Zd
„ Zd„ Zd„ Zd„ Z	 	 	 	 dd„Zdd„Zˆ xZS )ÚZipFileSystemz©Read/Write contents of ZIP archive as a file-system

    Keeps file object open while instance lives.

    This class is pickleable, but not necessarily thread-safe
    Ú ÚzipFÚrNTc                 óÀ  •—  t          ¦   «         j        | fi |¤Ž |t          d¦  «        vrt          d|› d�¦  «        ‚|| _        t          |t          t          j        f¦  «        r%|dk    rd}	n|dz   }	t          j
        |f|	|dœ|pi ¤Ž}|| _        || _        |                     ¦   «         | _        t          j        | j        ||||¬¦  «        | _        d	| _        d	S )
a«  
        Parameters
        ----------
        fo: str or file-like
            Contains ZIP, and must exist. If a str, will fetch file using
            :meth:`~fsspec.open_files`, which must return one file exactly.
        mode: str
            Accept: "r", "w", "a"
        target_protocol: str (optional)
            If ``fo`` is a string, this value can be used to override the
            FS protocol inferred from a URL
        target_options: dict (optional)
            Kwargs passed when instantiating the target FS, if ``fo`` is
            a string.
        compression, allowZip64, compresslevel: passed to ZipFile
            Only relevant when creating a ZIP
        Úrwazmode 'z' no understoodÚazr+bÚb)ÚmodeÚprotocol)r   ÚcompressionÚ
allowZip64ÚcompresslevelN)ÚsuperÚ__init__ÚsetÚ
ValueErrorr   Ú
isinstanceÚstrÚosÚPathLikeÚfsspecÚopenÚforce_zip_64ÚofÚ	__enter__ÚfoÚzipfileÚZipFiler   Ú	dir_cache)Úselfr   r   Útarget_protocolÚtarget_optionsr   r   r   ÚkwargsÚmÚ	__class__s             €úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/fsspec/implementations/zip.pyr   zZipFileSystem.__init__   s  ø€ ð8 	�‰ŒÔ˜Ð(Ð( Ð(Ð(Ð(Ø•s˜5‘z”zÐ!Ð!ÝÐ; dÐ;Ð;Ð;Ñ<Ô<Ð<ØˆŒ	Ý�b�3¥¤Ð,Ñ-Ô-ð 	Ø�sŠ{ˆ{Ø��à˜3‘J�Ý”ØðØ _ðð Ø9GÐ9MÈ2ðð ˆBð 'ˆÔØˆŒØ—,’,‘.”.ˆŒÝ”?ØŒGØØ#Ø!Ø'ð
ñ 
ô 
ˆŒð ˆŒˆˆó    c                 ól   •— t          ¦   «                              |¦  «                             d¦  «        S )Nú/)r   Ú_strip_protocolÚlstrip)ÚclsÚpathr(   s     €r)   r-   zZipFileSystem._strip_protocolH   s+   ø€ õ ‰wŒw×&Ò& tÑ,Ô,×3Ò3°CÑ8Ô8Ð8r*   c                 óÜ   — t          | d¦  «        r|                      ¦   «          | `t          | d¦  «        r3t          | j        d¦  «        r | j                             d d d ¦  «         d S d S d S )Nr   r   Ú__exit__)ÚhasattrÚcloser   r   r2   ©r#   s    r)   Ú__del__zZipFileSystem.__del__M   s   € Ý�4˜ÑÔð 	Ø�JŠJ‰LŒLˆLØ�Ý�4˜ÑÔð 	/¥7¨4¬7°JÑ#?Ô#?ð 	/ØŒG×Ò˜T 4¨Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/ð 	/ð 	/r*   c                 ó8   — | j                              ¦   «          dS )z;Commits any write changes to the file. Done on ``del`` too.N)r   r4   r5   s    r)   r4   zZipFileSystem.closeT   s   € àŒ�ŠÑÔÐÐÐr*   c                 óê  ‡— | j         �| j        t          d¦  «        v rÒ| j                             ¦   «         }d„ |                      | j                             ¦   «         ¦  «        D ¦   «         | _         |D ]}Šˆfd„t          j        j	        D ¦   «         }| 
                    ‰j                             d¦  «        ‰j        ‰                     ¦   «         rdnddœ¦  «         || j         |d         <   Œ|d S d S )	NÚwac                 óh   — i | ]/}|                      d ¦  «        |                      d ¦  «        dddœ“Œ0S )r,   r   Ú	directory©ÚnameÚsizeÚtype)Úrstrip)Ú.0Údirnames     r)   ú
<dictcomp>z+ZipFileSystem._get_dirs.<locals>.<dictcomp>]   sU   € ð ð ð ð ð —’˜sÑ#Ô#Ø#ŸNšN¨3Ñ/Ô/ØØ'ð&ð &ðð ð r*   c                 ó4   •— i | ]}|t          ‰|d ¦  «        “ŒS ©N)Úgetattr)rA   ÚsÚzs     €r)   rC   z+ZipFileSystem._get_dirs.<locals>.<dictcomp>f   s'   ø€ ÐOÐOÐO°�Q�  1 dÑ+Ô+ÐOÐOÐOr*   r,   r;   Úfiler<   r=   )r"   r   r   r   ÚinfolistÚ_all_dirnamesÚnamelistr    ÚZipInfoÚ	__slots__ÚupdateÚfilenamer@   Ú	file_sizeÚis_dir)r#   ÚfilesÚfrH   s      @r)   Ú	_get_dirszZipFileSystem._get_dirsX   s  ø€ ØŒ>Ð! T¤Yµ#°d±)´)Ð%;Ð%;ð ”H×%Ò%Ñ'Ô'ˆEðð ð  $×1Ò1°$´(×2CÒ2CÑ2EÔ2EÑFÔFðñ ô ˆDŒNð ð 	.ð 	.�ØOÐOÐOÐOµW´_Ô5NÐOÑOÔO�Ø—’à !¤
× 1Ò 1°#Ñ 6Ô 6Ø !¤Ø01·²±
´
Ð!F  Àðð ñô ð ð -.�”˜q œyÑ)Ð)ð+ &<Ð%;ð	.ð 	.r*   c                 ó.   —  | j         j        ||fi |¤Ž d S rE   )r   Úwritestr)r#   r0   Úvaluer&   s       r)   Ú	pipe_filezZipFileSystem.pipe_filep   s'   € àˆŒÔ˜$ Ð0Ð0¨Ð0Ð0Ð0Ð0Ð0r*   Úrbc                 óÒ  — |                       |¦  «        }d|v rI| j        t          d¦  «        v r3|                      |¦  «        rt	          d¦  «        ‚t          |¦  «        ‚d| j        v rd|v rt	          d¦  «        ‚| j                             ||                     d¦  «        | j	        ¬¦  «        }d|v r/|  
                    |¦  «        }|d         |_        |d         |_        |S )	Nr   r9   z7ZipFS can only be open for reading or writing, not bothÚwr   )Úforce_zip64r>   r=   )r-   r   r   ÚexistsÚOSErrorÚFileNotFoundErrorr   r   Ústripr   Úinfor>   r=   )	r#   r0   r   Ú
block_sizeÚ
autocommitÚcache_optionsr&   Úoutrb   s	            r)   Ú_openzZipFileSystem._opent   sá   € ð ×#Ò# DÑ)Ô)ˆØ�$ˆ;ˆ;˜4œ9­¨D©	¬	Ð1Ð1Ø�{Š{˜4Ñ Ô ð YÝÐWÑXÔXÐXÝ# DÑ)Ô)Ð)Ø�$”)ÐÐ  t  ÝÐSÑTÔTÐTØŒh�mŠm˜D $§*¢*¨S¡/¤/¸tÔ?PˆmÑQÔQˆØ�$ˆ;ˆ;Ø—9’9˜T‘?”?ˆDØ˜F”|ˆCŒHØ˜F”|ˆCŒHØˆ
r*   c                 ó0  ‡‡— ‰�‰dk     rt          d¦  «        ‚dt          fd„}t          |t          ¦  «        st          |¦  «        }|                     d¦  «        } ||¦  «        }t	          |¦  «        Š|                      ¦   «          i }|| j        v r.| j        |         d         dk    r| j        |         ||<   |r|n|gS | j                             ¦   «         D ]ƒ\  }	}
t	           ||	¦  «        x}¦  «        ‰k     s't          d„ t          ||¦  «        D ¦   «         ¦  «        rŒK|
d         d	k    r|r|	|vr|
||	 
                    d¦  «        <   Œv|	|vr	|r|
nd ||	<   Œ„‰r!ˆˆfd
„|                     ¦   «         D ¦   «         }|r|nt          |¦  «        S )Né   zmaxdepth must be at least 1Ú_pathc           	      óŠ   — t          t          d |                      dd¦  «                             d¦  «        ¦  «        ¦  «        S )Nú\r,   )ÚlistÚfilterÚreplaceÚsplit)rj   s    r)   Úto_partsz$ZipFileSystem.find.<locals>.to_parts�   s6   € Ý�˜t U§]¢]°4¸Ñ%=Ô%=×%CÒ%CÀCÑ%HÔ%HÑIÔIÑJÔJÐJr*   r,   r?   rI   c              3   ó(   K  — | ]\  }}||k    V — Œd S rE   © )rA   r   r   s      r)   ú	<genexpr>z%ZipFileSystem.find.<locals>.<genexpr>¥   sC   è è € ð Jð JÙ˜1˜a��Q’ðJð Jð Jð Jð Jð Jr*   r;   c                 óT   •— i | ]$\  }}|                      d ¦  «        ‰‰z   k     ¯!||“Œ%S )r,   )Úcount)rA   ÚkÚvÚmaxdepthÚ
path_depths      €€r)   rC   z&ZipFileSystem.find.<locals>.<dictcomp>´   s?   ø€ ð ð ð Ù˜˜A°1·7²7¸3±<´<À(ÈZÑBWÒ3WÐ3W��1Ð3WÐ3WÐ3Wr*   )r   r   r   r.   ÚlenrU   r"   ÚitemsÚanyr   ra   Úsorted)r#   r0   ry   ÚwithdirsÚdetailr&   rq   Ú
path_partsÚresultÚ	file_pathÚ	file_infoÚ
file_partsrz   s     `         @r)   ÚfindzZipFileSystem.find‹   s  øø€ ØÐ H¨q¢L LÝÐ:Ñ;Ô;Ð;ð	K�Cð 	Kð 	Kð 	Kð 	Kõ ˜$¥Ñ$Ô$ð 	Ý�t‘9”9ˆDð �{Š{˜3ÑÔˆØ�X˜d‘^”^ˆ
Ý˜‘_”_ˆ
à�ŠÑÔÐàˆð �4”>Ð!Ð! d¤n°TÔ&:¸6Ô&BÀfÒ&LÐ&LØœ>¨$Ô/ˆF�4‰LØ#Ð/�6�6¨$¨Ð/à$(¤N×$8Ò$8Ñ$:Ô$:ð 	Bð 	BÑ ˆI�yÝ  ¨)Ñ!4Ô!4Ð4�:Ñ5Ô5¸
ÒBÐBÅcð Jð JÝ#& z°:Ñ#>Ô#>ðJñ Jô Jñ Gô GÐBð à˜Ô  KÒ/Ð/Øð = 	°Ð 7Ð 7Ø3<�F˜9Ÿ?š?¨3Ñ/Ô/Ñ0Øà Ð&Ð&Ø17Ð$A I I¸T��yÑ!øàð 	ðð ð ð ð Ø!'§¢¡¤ðñ ô ˆFð  Ð3ˆvˆv¥V¨F¡^¤^Ð3r*   )rZ   NTN)NFF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úroot_markerr   Úcachabler    Ú
ZIP_STOREDr   Úclassmethodr-   r6   r4   rU   rY   rg   r†   Ú__classcell__)r(   s   @r)   r   r      s
  ø€ € € € € ðð ð €KØ€HØ€Hð ØØØØÔ&ØØð2ð 2ð 2ð 2ð 2ð 2ðh ð9ð 9ð 9ð 9ñ „[ð9ð/ð /ð /ðð ð ð.ð .ð .ð01ð 1ð 1ð ØØØðð ð ð ð.,4ð ,4ð ,4ð ,4ð ,4ð ,4ð ,4ð ,4r*   r   )r   r    r   Úfsspec.archiver   r   rs   r*   r)   ú<module>r‘      sq   ðØ 	€	€	€	Ø €€€à €€€Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðo4ð o4ð o4ð o4ð o4Ð-ñ o4ô o4ð o4ð o4ð o4r*   