
    h                    (   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  SSK	J
r
  SSKJrJrJr  SSKJr  SSKJrJrJrJr  SS	KJr  \R0                  (       a  S S
KJr  S SKJrJr  SSKJr   " S S\
5      r " S S\
5      r  " S S\5      r!g)    )annotationsN)datetime   )FS)FileExpectedResourceNotFoundResourceReadOnly)Info)dirnameforcedirnormpathrelpath)TempFS)
Collection)IOAny)SubFSc                  t    \ rS rSrSr S     SS jjr\R                  (       a   S     SS jjrSr	gSr	g)	ZipFS   zRead and write zip files.c                <    U(       a  [        X5      $ [        X5      $ N)
WriteZipFS	ReadZipFS)clsfilewriteencodings       Z/var/www/fran/franai/venv/lib/python3.13/site-packages/fontTools/misc/filesystem/_zipfs.py__new__ZipFS.__new__   s     d--T,,    c                    g r    )selfr   r   r   s       r   __init__ZipFS.__init__%   s     r"   r$   N)Futf-8)r   str | os.PathLiker   boolr   str)
__name__
__module____qualname____firstlineno____doc__r    typingTYPE_CHECKINGr&   __static_attributes__r$   r"   r   r   r      sb    # LS-$--1-EH-  QX	)	26	JM	 	 r"   r   c                    ^  \ rS rSrSrSSU 4S jjjrSS jrSS jrSS jr\	SS j5       r
U 4S jrSSS	 jjrSS
 jrSS jrSS jrSS jrSS S jjrSS S jjrS!S jrS!S jrS!S jrSS"S jjrS#S jrS$S%S jjrSrU =r$ )&r   +   zA readable zip file.c                   > [         TU ]  5         [        R                  " U5      U l        X l        [        R                  " US5      U l        S U l	        g )Nr)
superr&   osfspath_filer   zipfileZipFile_zip_directory_fsr%   r   r   	__class__s      r   r&   ReadZipFS.__init__.   s<    YYt_
 OOD#.	!r"   c                $    SU R                   < S3$ )Nz
ReadZipFS()r;   r%   s    r   __repr__ReadZipFS.__repr__5   s    DJJ>++r"   c                "    SU R                    S3$ )Nz<zipfs ''>rE   rF   s    r   __str__ReadZipFS.__str__8   s    $**R((r"   c                    [        [        U5      5      nU R                  R                  U5      (       a  [	        U5      nU$ )z"Convert a path to a zip file name.)r   r   
_directoryisdirr   r%   paths     r   _path_to_zip_nameReadZipFS._path_to_zip_name;   s3    x~&??  &&D>Dr"   c                @   U R                   c  [        5       =U l         nU R                  R                  5        HW  nUnUR	                  S5      (       a  UR                  USS9  M-  UR                  [        U5      SS9  UR                  U5        MY     U R                   $ )N/T)recreate)r?   r   r>   namelistendswithmakedirsr   create)r%   _fszip_nameresource_names       r   rN   ReadZipFS._directoryB   s    %'-x/D II..0 ( ))#..LLL>LL!7$LGJJ}- 1 !!!r"   c                   > [         [        U ]  5         U R                  R                  5         U R                  b  U R                  R                  5         g g r   )r8   r   closer>   r?   )r%   rA   s    r   r`   ReadZipFS.closeO   sA    i$&		)$$& *r"   c                X   U=(       d    Sn0 nUS:X  a$  SSS.US'   SU;   a  S[         R                  0US'   OU R                  R                  U5      nUR                  UR
                  S.US'   SU;   a  U R                  U5      n U R                  R                  U5      nSU;   ai  UR                  [        UR
                  (       a  [         R                  O[         R                  5      [        UR                  6 R                  5       S	.US'   [        U5      $ ! [         a     Nf = f)
Nr$   rU    T)nameis_dirbasicdetailstype)sizerh   modified)statS_IFDIRrN   getinford   re   rR   r>   	file_sizeintS_IFREGr   	date_time	timestampKeyErrorr
   )r%   rQ   
namespacesraw_info
basic_infor\   zip_infos          r   rm   ReadZipFS.getinfoU   s   %2
3;)+t <HWJ&'-t||&<#006J)3JDUDU VHWJ&11$7#yy00:H !J.$,$6$6$'0:0A0At||% )1(2D2D(E(O(O(Q/+ H~   s   D 
D)(D)c                X    U R                  5         U R                  R                  U5      $ r   )checkrN   existsrP   s     r   r{   ReadZipFS.existss        

%%d++r"   c                X    U R                  5         U R                  R                  U5      $ r   )rz   rN   rO   rP   s     r   rO   ReadZipFS.isdirw   s     

$$T**r"   c                X    U R                  5         U R                  R                  U5      $ r   )rz   rN   isfilerP   s     r   r   ReadZipFS.isfile{   r}   r"   c                X    U R                  5         U R                  R                  U5      $ r   )rz   rN   listdirrP   s     r   r   ReadZipFS.listdir   s     

&&t,,r"   c                8    U R                  5         [        U5      er   rz   r	   r%   rQ   rV   s      r   makedirReadZipFS.makedir       

t$$r"   c                8    U R                  5         [        U5      er   r   r   s      r   rY   ReadZipFS.makedirs   r   r"   c                8    U R                  5         [        U5      er   r   rP   s     r   removeReadZipFS.remove   r   r"   c                8    U R                  5         [        U5      er   r   rP   s     r   	removedirReadZipFS.removedir   r   r"   c                8    U R                  5         [        U5      er   r   rP   s     r   
removetreeReadZipFS.removetree   r   r"   c                8    U R                  5         [        U5      er   r   )r%   srcdstrZ   s       r   movedirReadZipFS.movedir   s    

s##r"   c                    U R                  5         U R                  R                  U5      (       d  [        U5      eU R	                  U5      nU R
                  R                  U5      nU$ r   )rz   rN   r   r   rR   r>   read)r%   rQ   r\   	zip_bytess       r   	readbytesReadZipFS.readbytes   sS    

%%d++"4(())$/IINN8,	r"   c                  ^ U R                  5         U R                  R                  U5      (       a  [        U< S35      eTS   nUS:X  a/  U R                  R	                  U5      (       d  [        SU< 35      e[        U4S jS 5       5      (       a  [        U5      eU R                  U5      nU R                  R                  XT5      nST;   a  U(       a  [        S5      eU$ [        R                  " U40 UD6$ )	Nz is a directoryr   r7   zNo such file or directory: c              3  ,   >#    U  H	  oT;   v   M     g 7fr   r$   ).0mmodes     r   	<genexpr>!ReadZipFS.open.<locals>.<genexpr>   s     )&QDy&s   zwax+bz*encoding args invalid for binary operation)rz   rN   rO   r   r{   r   anyr	   rR   r>   open
ValueErrorioTextIOWrapper)r%   rQ   r   kwargszip_moder\   streams     `    r   r   ReadZipFS.open   s    

??  &&$9::7s?4??#9#9$#?#?"%@#IJJ)&)))"4(())$/3$; !MNNM1&11r"   )r?   r;   r>   r   r(   r   r)   r   r+   returnr+   )rQ   r+   r   r+   )r   r   r   )rQ   r+   rt   zCollection[str] | Noner   r
   )rQ   r+   r   r*   )F)rQ   r+   rV   r*   r   r   )rQ   r+   )r   r+   r   r+   rZ   r*   )rQ   r+   r   bytes)rb)rQ   r+   r   r+   r   zIO[Any])r,   r-   r.   r/   r0   r&   rG   rK   rR   propertyrN   r`   rm   r{   rO   r   r   r   rY   r   r   r   r   r   r   r3   __classcell__rA   s   @r   r   r   +   s~    " ",) 
" 
"'<,+,-%%%%%$2 2r"   r   c                  T   ^  \ rS rSrSrSS	U 4S jjjrS
S jrS
S jrU 4S jrSr	U =r
$ )r      zA writable zip file.c                d   > [         TU ]  5         [        R                  " U5      U l        X l        g r   )r8   r&   r9   r:   r;   r   r@   s      r   r&   WriteZipFS.__init__   s"    YYt_
 r"   c                $    SU R                   < S3$ )NzWriteZipFS(rD   rE   rF   s    r   rG   WriteZipFS.__repr__   s    TZZN!,,r"   c                "    SU R                    S3$ )Nz<zipfs-write 'rJ   rE   rF   s    r   rK   WriteZipFS.__str__   s    

|2..r"   c                (  > [         R                  R                  U R                  5      S   n[        R
                  " USU R                  S9  U R                  US-   :w  a$  [        R                  " US-   U R                  5        [        TU ]%  5         g )Nr   zip)formatroot_dirz.zip)
r9   rQ   splitextr;   shutilmake_archive	_temp_dirmover8   r`   )r%   	base_namerA   s     r   r`   WriteZipFS.close   sg    GG$$TZZ03	IednnM::V++KK	F*DJJ7r"   )r;   r   r   r   r   )r,   r-   r.   r/   r0   r&   rG   rK   r`   r3   r   r   s   @r   r   r      s$    ! !
-/ r"   r   )"
__future__r   r   r9   r   rk   r1   r<   r   _baser   _errorsr   r   r	   _infor
   _pathr   r   r   r   _tempfsr   r2   collections.abcr   r   r   _subfsr   r   r   r   r$   r"   r   <module>r      sk    " 	 	       E E  7 7 	*B &K2 K2\ r"   