
     i                    (   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j        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!dS )    )annotationsN)datetime   )FS)FileExpectedResourceNotFoundResourceReadOnly)Info)dirnameforcedirnormpathrelpath)TempFS)
Collection)IOAny)SubFSc                  <    e Zd ZdZ	 ddd
Zej        r	 dddZdS dS )ZipFSzRead and write zip files.Futf-8filestr | os.PathLikewriteboolencodingstrc                F    |rt          ||          S t          ||          S N)
WriteZipFS	ReadZipFS)clsr   r   r   s       j/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/fontTools/misc/filesystem/_zipfs.py__new__zZipFS.__new__   s,      	-dH---T8,,,    c                    d S r    )selfr   r   r   s       r"   __init__zZipFS.__init__%   s	     Dr$   N)Fr   )r   r   r   r   r   r   )__name__
__module____qualname____doc__r#   typingTYPE_CHECKINGr(   r&   r$   r"   r   r      sq        ## LS- - - - -   QX	 	 	 	 	 	 	 r$   r   c                       e Zd ZdZd,d- fdZd.d	Zd.d
Zd/dZed0d            Z	 fdZ
d1d2dZd3dZd3dZd3dZd/dZd4d5dZd4d5dZd6dZd6d Zd6d!Zd4d7d%Zd8d'Zd9d:d+Z xZS );r    zA readable zip file.r   r   r   r   r   c                    t                                                       t          j        |          | _        || _        t          j        |d          | _        d | _	        d S )Nr)
superr(   osfspath_filer   zipfileZipFile_zip_directory_fsr'   r   r   	__class__s      r"   r(   zReadZipFS.__init__.   sP    Yt__
 OD#..	!r$   returnc                    d| j         dS )Nz
ReadZipFS()r5   r'   s    r"   __repr__zReadZipFS.__repr__5   s    +DJ++++r$   c                    d| j          dS )Nz<zipfs ''>r?   r@   s    r"   __str__zReadZipFS.__str__8   s    ($*((((r$   pathc                    t          t          |                    }| j                            |          rt	          |          }|S )z"Convert a path to a zip file name.)r   r   
_directoryisdirr   r'   rE   s     r"   _path_to_zip_namezReadZipFS._path_to_zip_name;   s=    x~~&&?  && 	"D>>Dr$   r   c                P   | j         t                      x| _         }| j                                        D ]j}|}|                    d          r|                    |d           1|                    t          |          d           |                    |           k| j         S )N/T)recreate)r9   r   r8   namelistendswithmakedirsr   create)r'   _fszip_nameresource_names       r"   rG   zReadZipFS._directoryB   s    %'-xx/D I..00 . . ( ))#.. .LLL>>>>LL!7!7$LGGGJJ}----!!r$   c                    t          t          |                                            | j                                         | j        | j                                         d S d S r   )r2   r    closer8   r9   )r'   r;   s    r"   rV   zReadZipFS.closeO   s]    i$$&&&	)$$&&&&& *)r$   N
namespacesCollection[str] | Noner
   c                
   |pd}i }|dk    rddd|d<   d|v rdt           j        i|d<   n| j                            |          }|j        |j        d|d<   d|v r|                     |          }	 | j                            |          }d|v rV|j        t          |j        rt           j        nt           j
                  t          |j                                         d	|d<   n# t          $ r Y nw xY wt          |          S )
Nr&   rL    T)nameis_dirbasicdetailstype)sizer_   modified)statS_IFDIRrG   getinfor[   r\   rJ   r8   	file_sizeintS_IFREGr   	date_time	timestampKeyErrorr
   )r'   rE   rW   raw_info
basic_inforS   zip_infos          r"   rd   zReadZipFS.getinfoU   s;   %2
3;;)+t < <HWJ&&'-t|&<#0066J)3JDU V VHWJ&&11$77#y00::H !J..$,$6$'0:0A St|% % )1(2D(E(O(O(Q(Q/ /+	     D H~~s   1C& &
C32C3r   c                ^    |                                   | j                            |          S r   )checkrG   existsrI   s     r"   rp   zReadZipFS.existss   %    

%%d+++r$   c                ^    |                                   | j                            |          S r   )ro   rG   rH   rI   s     r"   rH   zReadZipFS.isdirw   s%    

$$T***r$   c                ^    |                                   | j                            |          S r   )ro   rG   isfilerI   s     r"   rt   zReadZipFS.isfile{   rq   r$   c                ^    |                                   | j                            |          S r   )ro   rG   listdirrI   s     r"   rv   zReadZipFS.listdir   s%    

&&t,,,r$   FrM   r   c                H    |                                   t          |          r   ro   r	   r'   rE   rM   s      r"   makedirzReadZipFS.makedir       

t$$$r$   c                H    |                                   t          |          r   rx   ry   s      r"   rP   zReadZipFS.makedirs   r{   r$   c                H    |                                   t          |          r   rx   rI   s     r"   removezReadZipFS.remove   r{   r$   c                H    |                                   t          |          r   rx   rI   s     r"   	removedirzReadZipFS.removedir   r{   r$   c                H    |                                   t          |          r   rx   rI   s     r"   
removetreezReadZipFS.removetree   r{   r$   srcdstrQ   c                H    |                                   t          |          r   rx   )r'   r   r   rQ   s       r"   movedirzReadZipFS.movedir   s    

s###r$   bytesc                    |                                   | j                            |          st          |          |                     |          }| j                            |          }|S r   )ro   rG   rt   r   rJ   r8   read)r'   rE   rS   	zip_bytess       r"   	readbyteszReadZipFS.readbytes   sa    

%%d++ 	)"4((())$//INN8,,	r$   rbmodeIO[Any]c                   |                                   | j                            |          rt          |d          d         }|dk    r,| j                            |          st          d|          t          fddD                       rt          |          |                     |          }| 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 V  	d S r   r&   ).0mr   s     r"   	<genexpr>z!ReadZipFS.open.<locals>.<genexpr>   s'      ))QqDy))))))r$   zwax+bz*encoding args invalid for binary operation)ro   rG   rH   r   rp   r   anyr	   rJ   r8   open
ValueErrorioTextIOWrapper)r'   rE   r   kwargszip_moderS   streams     `    r"   r   zReadZipFS.open   s   

?  && 	;$999:::7s??4?#9#9$#?#??"#I#I#IJJJ))))&))))) 	)"4((())$//(33$;; O !MNNNM11&111r$   r   r   r   r   r   r<   r   )rE   r   r<   r   )r<   r   r   )rE   r   rW   rX   r<   r
   )rE   r   r<   r   )F)rE   r   rM   r   r<   r   )rE   r   )r   r   r   r   rQ   r   )rE   r   r<   r   )r   )rE   r   r   r   r<   r   )r)   r*   r+   r,   r(   rA   rD   rJ   propertyrG   rV   rd   rp   rH   rt   rv   rz   rP   r~   r   r   r   r   r   __classcell__r;   s   @r"   r    r    +   s       " " " " " " ", , , ,) ) ) )    
" 
" 
" X
"' ' ' ' '    <, , , ,+ + + +, , , ,- - - -% % % % %% % % % %% % % %% % % %% % % %$ $ $ $ $   2 2 2 2 2 2 2 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.r   r   r   r   r   c                    t                                                       t          j        |          | _        || _        d S r   )r2   r(   r3   r4   r5   r   r:   s      r"   r(   zWriteZipFS.__init__   s3    Yt__
 r$   r<   c                    d| j         dS )NzWriteZipFS(r>   r?   r@   s    r"   rA   zWriteZipFS.__repr__   s    ,TZ,,,,r$   c                    d| j          dS )Nz<zipfs-write 'rC   r?   r@   s    r"   rD   zWriteZipFS.__str__   s    .
....r$   c                *   t           j                            | j                  d         }t	          j        |d| j                   | j        |dz   k    rt	          j        |dz   | j                   t                      	                                 d S )Nr   zip)formatroot_dirz.zip)
r3   rE   splitextr5   shutilmake_archive	_temp_dirmover2   rV   )r'   	base_namer;   s     r"   rV   zWriteZipFS.close   sy    G$$TZ003	IednMMMM:V+++K	F*DJ777r$   r   r   r   )	r)   r*   r+   r,   r(   rA   rD   rV   r   r   s   @r"   r   r      s        ! ! ! ! ! ! !
- - - -/ / / /        r$   r   )"
__future__r   r   r3   r   rb   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      s   " " " " " " 				 				                 E E E E E E E E E E       7 7 7 7 7 7 7 7 7 7 7 7      	 ******    B   &K2 K2 K2 K2 K2 K2 K2 K2\         r$   