
    kh                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ ddl	m
Z
 ddlmZmZmZ ddlmZ ddlmZmZmZmZ dd	lmZ ej0                  rd d
lmZ d dlmZmZ ddlmZ  G d de
      Z G d de
      Z  G d de      Z!y)    )annotationsN)datetime   )FS)FileExpectedResourceNotFoundResourceReadOnly)Info)dirnameforcedirnormpathrelpath)TempFS)
Collection)IOAny)SubFSc                  V    e Zd ZdZ	 d	 	 	 	 	 ddZej                  r	 d	 	 	 	 	 ddZyy)ZipFSzRead and write zip files.c                6    |rt        ||      S t        ||      S N)
WriteZipFS	ReadZipFS)clsfilewriteencodings       r/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/fontTools/misc/filesystem/_zipfs.py__new__zZipFS.__new__   s!     dH--T8,,    c                     y r    )selfr   r   r   s       r   __init__zZipFS.__init__%   s     r    N)Futf-8)r   str | os.PathLiker   boolr   str)__name__
__module____qualname____doc__r   typingTYPE_CHECKINGr$   r"   r    r   r   r      s]    # LS-$--1-EH-  QX	)	26	JM	 r    r   c                       e Zd ZdZdd fdZddZddZddZedd       Z	 fdZ
dddZdd	Zdd
ZddZddZdddZdddZddZddZddZdd dZd!dZd"d#dZ xZS )$r   zA readable zip file.c                    t         |           t        j                  |      | _        || _        t        j                  |d      | _        d | _	        y )Nr)
superr$   osfspath_filer   zipfileZipFile_zip_directory_fsr#   r   r   	__class__s      r   r$   zReadZipFS.__init__.   s>    YYt_
 OOD#.	!r    c                "    d| j                   dS )Nz
ReadZipFS()r5   r#   s    r   __repr__zReadZipFS.__repr__5   s    DJJ>++r    c                "    d| j                    dS )Nz<zipfs ''>r>   r?   s    r   __str__zReadZipFS.__str__8   s    $**R((r    c                z    t        t        |            }| j                  j                  |      rt	        |      }|S )z"Convert a path to a zip file name.)r   r   
_directoryisdirr   r#   paths     r   _path_to_zip_namezReadZipFS._path_to_zip_name;   s0    x~&??  &D>Dr    c                :   | j                   t               x| _         }| j                  j                         D ]V  }|}|j	                  d      r|j                  |d       *|j                  t        |      d       |j                  |       X | j                   S )N/T)recreate)r9   r   r8   namelistendswithmakedirsr   create)r#   _fszip_nameresource_names       r   rE   zReadZipFS._directoryB   s    %'-x/D II..0 . ( ))#.LLL>LL!7$LGJJ}-. !!!r    c                    t         t        |           | j                  j                          | j                  | j                  j                          y y r   )r2   r   closer8   r9   )r#   r;   s    r   rU   zReadZipFS.closeO   sA    i$&		)$$& *r    c                r   |xs d}i }|dk(  r,ddd|d<   d|v rdt         j                  i|d<   t        |      S | j                  j                  |      }|j                  |j
                  d|d<   d|v r| j                  |      }	 | j                  j                  |      }d|v ro|j                  t        |j
                  rt         j                  nt         j                        t        |j                   j                         d	|d<   t        |      S t        |      S # t        $ r Y t        |      S w xY w)
Nr"   rK    T)nameis_dirbasicdetailstype)sizer\   modified)statS_IFDIRrE   getinforX   rY   rI   r8   	file_sizeintS_IFREGr   	date_time	timestampKeyErrorr
   )r#   rH   
namespacesraw_info
basic_inforR   zip_infos          r   ra   zReadZipFS.getinfoU   s8   %2
3;)+t <HWJ&'-t||&<#* H~' 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~tH~    H~s   D   	D65D6c                X    | j                          | j                  j                  |      S r   )checkrE   existsrG   s     r   rn   zReadZipFS.existss        

%%d++r    c                X    | j                          | j                  j                  |      S r   )rm   rE   rF   rG   s     r   rF   zReadZipFS.isdirw   s     

$$T**r    c                X    | j                          | j                  j                  |      S r   )rm   rE   isfilerG   s     r   rr   zReadZipFS.isfile{   ro   r    c                X    | j                          | j                  j                  |      S r   )rm   rE   listdirrG   s     r   rt   zReadZipFS.listdir   s     

&&t,,r    c                8    | j                          t        |      r   rm   r	   r#   rH   rL   s      r   makedirzReadZipFS.makedir       

t$$r    c                8    | j                          t        |      r   rv   rw   s      r   rO   zReadZipFS.makedirs   ry   r    c                8    | j                          t        |      r   rv   rG   s     r   removezReadZipFS.remove   ry   r    c                8    | j                          t        |      r   rv   rG   s     r   	removedirzReadZipFS.removedir   ry   r    c                8    | j                          t        |      r   rv   rG   s     r   
removetreezReadZipFS.removetree   ry   r    c                8    | j                          t        |      r   rv   )r#   srcdstrP   s       r   movedirzReadZipFS.movedir   s    

s##r    c                    | j                          | j                  j                  |      st        |      | j	                  |      }| j
                  j                  |      }|S r   )rm   rE   rr   r   rI   r8   read)r#   rH   rR   	zip_bytess       r   	readbyteszReadZipFS.readbytes   sP    

%%d+"4(())$/IINN8,	r    c                   | j                          | j                  j                  |      rt        |d      d   }|dk(  r)| j                  j	                  |      st        d|      t        fddD              rt        |      | j                  |      }| j                  j                  ||      }dv r|rt        d      |S t        j                  |fi |S )	Nz is a directoryr   r1   zNo such file or directory: c              3  &   K   | ]  }|v  
 y wr   r"   ).0mmodes     r   	<genexpr>z!ReadZipFS.open.<locals>.<genexpr>   s     )QqDy)s   zwax+bz*encoding args invalid for binary operation)rm   rE   rF   r   rn   r   anyr	   rI   r8   open
ValueErrorioTextIOWrapper)r#   rH   r   kwargszip_moderR   streams     `    r   r   z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(   returnr(   )rH   r(   r   r(   )r   r   r   )rH   r(   rh   zCollection[str] | Noner   r
   )rH   r(   r   r'   )F)rH   r(   rL   r'   r   r   )rH   r(   )r   r(   r   r(   rP   r'   )rH   r(   r   bytes)rb)rH   r(   r   r(   r   zIO[Any])r)   r*   r+   r,   r$   r@   rC   rI   propertyrE   rU   ra   rn   rF   rr   rt   rx   rO   r|   r~   r   r   r   r   __classcell__r;   s   @r   r   r   +   sy    ",) 
" 
"'<,+,-%%%%%$2 2r    r   c                  @     e Zd ZdZdd fdZddZddZ fdZ xZS )	r   zA writable zip file.c                d    t         |           t        j                  |      | _        || _        y r   )r2   r$   r3   r4   r5   r   r:   s      r   r$   zWriteZipFS.__init__   s$    YYt_
 r    c                "    d| j                   dS )NzWriteZipFS(r=   r>   r?   s    r   r@   zWriteZipFS.__repr__   s    TZZN!,,r    c                "    d| j                    dS )Nz<zipfs-write 'rB   r>   r?   s    r   rC   zWriteZipFS.__str__   s    

|2..r    c                (   t         j                  j                  | j                        d   }t	        j
                  |d| j                         | j                  |dz   k7  r#t	        j                  |dz   | j                         t        | %          y )Nr   zip)formatroot_dirz.zip)
r3   rH   splitextr5   shutilmake_archive	_temp_dirmover2   rU   )r#   	base_namer;   s     r   rU   zWriteZipFS.close   sg    GG$$TZZ03	IednnM::V++KK	F*DJJ7r    r   r   r   )	r)   r*   r+   r,   r$   r@   rC   rU   r   r   s   @r   r   r      s    !
-/ r    r   )"
__future__r   r   r3   r   r_   r-   r6   r   _baser   _errorsr   r   r	   _infor
   _pathr   r   r   r   _tempfsr   r.   collections.abcr   r   r   _subfsr   r   r   r   r"   r    r   <module>r      sk    " 	 	       E E  7 7 	*B &K2 K2\ r    