o
    i                     @  s   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rcd d
lmZ d dlmZmZ ddlmZ G dd de
ZG dd de
Z G dd deZ!dS )    )annotationsN)datetime   )FS)FileExpectedResourceNotFoundResourceReadOnly)Info)dirnameforcedirnormpathrelpath)TempFS)
Collection)IOAny)SubFSc                   @  s6   e Zd ZdZ	ddd
dZejr	d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                 C  s   |rt ||S t||S N)
WriteZipFS	ReadZipFS)clsr   r   r    r   o/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/fontTools/misc/filesystem/_zipfs.py__new__   s   

zZipFS.__new__c                 C  s   d S r   r   )selfr   r   r   r   r   r    __init__%   s   zZipFS.__init__N)Fr   )r   r   r   r   r   r   )__name__
__module____qualname____doc__r!   typingTYPE_CHECKINGr#   r   r   r   r    r      s    r   c                      s   e Zd ZdZd?d@ fddZdAd
dZdAddZdBddZedCddZ	 fddZ
dDdEddZdFddZdFdd ZdFd!d"ZdBd#d$ZdGdHd(d)ZdGdHd*d+ZdId,d-ZdId.d/ZdId0d1ZdGdJd5d6ZdKd8d9ZdLdMd=d>Z  ZS )Nr   zA readable zip file.r   r   r   r   r   c                   s4   t    t|| _|| _t|d| _d | _	d S )Nr)
superr#   osfspath_filer   zipfileZipFile_zip_directory_fsr"   r   r   	__class__r   r    r#   .   s
   

zReadZipFS.__init__returnc                 C     d| j dS )Nz
ReadZipFS()r.   r"   r   r   r    __repr__5      zReadZipFS.__repr__c                 C     d| j  dS )Nz<zipfs ''>r9   r:   r   r   r    __str__8   r<   zReadZipFS.__str__pathc                 C  s$   t t|}| j|rt|}|S )z"Convert a path to a zip file name.)r   r   
_directoryisdirr   r"   r@   r   r   r    _path_to_zip_name;   s   zReadZipFS._path_to_zip_namer   c                 C  sf   | j d u r0t  | _ }| j D ]}|}|dr!|j|dd q|jt|dd || q| j S )N/T)recreate)r2   r   r1   namelistendswithmakedirsr
   create)r"   Z_fszip_nameresource_namer   r   r    rA   B   s   

zReadZipFS._directoryc                   s4   t t|   | j  | jd ur| j  d S d S r   )r+   r   closer1   r2   r:   r4   r   r    rM   O   s
   

zReadZipFS.closeN
namespacesCollection[str] | Noner	   c                 C  s   |pd}i }|dkr ddd|d< d|v rdt ji|d< t|S | j|}|j|jd|d< d|v rh| |}z| j|}W n tyL   Y t|S w d|v rh|j	t
|jrZt jnt jt|j  d	|d< t|S )
Nr   rE    T)nameis_dirbasicdetailstype)sizerU   modified)statS_IFDIRrA   getinforQ   rR   rD   r1   KeyError	file_sizeintS_IFREGr   	date_time	timestampr	   )r"   r@   rN   Zraw_infoZ
basic_inforK   Zzip_infor   r   r    rZ   U   s2   

zReadZipFS.getinfor   c                 C     |    | j|S r   )checkrA   existsrC   r   r   r    rc   s      zReadZipFS.existsc                 C  ra   r   )rb   rA   rB   rC   r   r   r    rB   w   rd   zReadZipFS.isdirc                 C  ra   r   )rb   rA   isfilerC   r   r   r    re   {   rd   zReadZipFS.isfilec                 C  ra   r   )rb   rA   listdirrC   r   r   r    rf      rd   zReadZipFS.listdirFrF   r   c                 C     |    t|r   rb   r   r"   r@   rF   r   r   r    makedir      zReadZipFS.makedirc                 C  rg   r   rh   ri   r   r   r    rI      rk   zReadZipFS.makedirsc                 C  rg   r   rh   rC   r   r   r    remove   rk   zReadZipFS.removec                 C  rg   r   rh   rC   r   r   r    	removedir   rk   zReadZipFS.removedirc                 C  rg   r   rh   rC   r   r   r    
removetree   rk   zReadZipFS.removetreesrcdstrJ   c                 C  rg   r   rh   )r"   ro   rp   rJ   r   r   r    movedir   rk   zReadZipFS.movedirbytesc                 C  s6   |    | j|st|| |}| j|}|S r   )rb   rA   re   r   rD   r1   read)r"   r@   rK   Z	zip_bytesr   r   r    	readbytes   s   
zReadZipFS.readbytesrbmodeIO[Any]c                   s   |    | j|rt|d d }|dkr&| j|s&td|t fdddD r5t|| |}| j	
||}d v rM|rKtd	|S tj|fi |S )
Nz is a directoryr   r*   zNo such file or directory: c                 3  s    | ]}| v V  qd S r   r   ).0mrv   r   r    	<genexpr>   s    z!ReadZipFS.open.<locals>.<genexpr>zwax+bz*encoding args invalid for binary operation)rb   rA   rB   r   rc   r   anyr   rD   r1   open
ValueErrorioTextIOWrapper)r"   r@   rv   kwargszip_moderK   streamr   rz   r    r~      s   
zReadZipFS.openr   r   r   r   r   r6   r   )r@   r   r6   r   )r6   r   r   )r@   r   rN   rO   r6   r	   )r@   r   r6   r   )F)r@   r   rF   r   r6   r   )r@   r   )ro   r   rp   r   rJ   r   )r@   r   r6   rr   )ru   )r@   r   rv   r   r6   rw   )r$   r%   r&   r'   r#   r;   r?   rD   propertyrA   rM   rZ   rc   rB   re   rf   rj   rI   rl   rm   rn   rq   rt   r~   __classcell__r   r   r4   r    r   +   s,    










r   c                      sD   e Zd ZdZdd fddZdd
dZdddZ fddZ  ZS )r   zA writable zip file.r   r   r   r   r   c                   s    t    t|| _|| _d S r   )r+   r#   r,   r-   r.   r   r3   r4   r   r    r#      s   

zWriteZipFS.__init__r6   c                 C  r7   )NzWriteZipFS(r8   r9   r:   r   r   r    r;      r<   zWriteZipFS.__repr__c                 C  r=   )Nz<zipfs-write 'r>   r9   r:   r   r   r    r?      r<   zWriteZipFS.__str__c                   sR   t j| jd }tj|d| jd | j|d kr"t|d | j t 	  d S )Nr   zip)formatroot_dirz.zip)
r,   r@   splitextr.   shutilmake_archive	_temp_dirmover+   rM   )r"   	base_namer4   r   r    rM      s
   zWriteZipFS.closer   r   r   )	r$   r%   r&   r'   r#   r;   r?   rM   r   r   r   r4   r    r      s    

r   )"
__future__r   r   r,   r   rX   r(   r/   r   _baser   _errorsr   r   r   _infor	   _pathr
   r   r   r   Z_tempfsr   r)   collections.abcr   r   r   Z_subfsr   r   r   r   r   r   r   r    <module>   s*     