o
    _h                     @  s   d dl mZ d dlZd dlmZ ddlmZ ddlmZm	Z	 ej
r5d 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dS )    )annotationsN)PurePosixPath   )FS)DirectoryExpectedResourceNotFound)
Collection)IOAny)Infoc                      s   e Zd ZdZdA fddZdd	 ZdBddZdCdDddZdEddZdEddZ	dEddZ
dFddZdGdHd d!ZdGdHd"d#ZdIdJd(d)ZdKd*d+ZdKd,d-ZdKd.d/ZdGdLd3d4ZdMd5d6ZdNd8d9ZdOd;d<ZdPd=d>ZdPd?d@Z  ZS )QSubFSz+Maps a sub-directory of another filesystem.parentr   sub_pathstrc                   s\   t    || _t| d| _|| jstd||	| js,t
|dd S )N/zNo such file or directory: z is not a directory)super__init___parentr   as_posixrstrip_prefixexistsr   isdirr   )selfr   r   	__class__ T/var/www/html/myenv/lib/python3.10/site-packages/fontTools/misc/filesystem/_subfs.pyr      s   
zSubFS.__init__c                 C  s   | j S N)r   r   r   r   r   delegate_fs   s   zSubFS.delegate_fsrelreturnc                 C  s&   |    | j dt|  dS Nr   )checkr   r   r   lstrip)r   r!   r   r   r   _full   s   zSubFS._fullrbpathmodeIO[Any]c                 K  s   | j j| ||fi |S r   )r   openr&   )r   r(   r)   kwargsr   r   r   r+   #   s   z
SubFS.openboolc                 C     | j | |S r   )r   r   r&   r   r(   r   r   r   r   &      zSubFS.existsc                 C  r.   r   )r   r   r&   r/   r   r   r   r   )   r0   zSubFS.isdirc                 C  r.   r   )r   isfiler&   r/   r   r   r   r1   ,   r0   zSubFS.isfile	list[str]c                 C  r.   r   )r   listdirr&   r/   r   r   r   r3   /   r0   zSubFS.listdirFrecreatec                 C     | j j| ||dS N)r4   )r   makedirr&   r   r(   r4   r   r   r   r7   2      zSubFS.makedirc                 C  r5   r6   )r   makedirsr&   r8   r   r   r   r:   5   r9   zSubFS.makedirsN
namespacesCollection[str] | Noner   c                 C  r5   )N)r;   )r   getinfor&   )r   r(   r;   r   r   r   r=   8   r9   zSubFS.getinfoc                 C  r.   r   )r   remover&   r/   r   r   r   r>   ;   r0   zSubFS.removec                 C  r.   r   )r   	removedirr&   r/   r   r   r   r?   >   r0   zSubFS.removedirc                 C  r.   r   )r   
removetreer&   r/   r   r   r   r@   A   r0   zSubFS.removetreesrcdstcreatec                 C  s"   | j j| || ||d d S )N)rC   )r   movedirr&   )r   rA   rB   rC   r   r   r   rD   D   s   "zSubFS.movedirc                 C  r.   r   )r   
getsyspathr&   r/   r   r   r   rE   G   r0   zSubFS.getsyspathbytesc                 C  r.   r   )r   	readbytesr&   r/   r   r   r   rG   J   r0   zSubFS.readbytesdatac                 C  s   | j | || d S r   )r   
writebytesr&   )r   r(   rH   r   r   r   rI   M   s   zSubFS.writebytesc                 C  s   | j j d| jd| jdS )N(z, ))r   __name__r   r   r   r   r   r   __repr__P   s   zSubFS.__repr__c                 C  s   | j  d| j S r#   )r   r   r   r   r   r   __str__S   r0   zSubFS.__str__)r   r   r   r   )r!   r   r"   r   )r'   )r(   r   r)   r   r"   r*   )r(   r   r"   r-   )r(   r   r"   r2   )F)r(   r   r4   r-   r   )r(   r   r;   r<   r"   r   )r(   r   )rA   r   rB   r   rC   r-   )r(   r   r"   r   )r(   r   r"   rF   )r(   r   rH   rF   )r"   r   )rL   
__module____qualname____doc__r   r    r&   r+   r   r   r1   r3   r7   r:   r=   r>   r?   r@   rD   rE   rG   rI   rM   rN   __classcell__r   r   r   r   r      s,    	











r   c                      s    e Zd ZdZ fddZ  ZS )ClosingSubFSz>Like SubFS, but auto-closes the parent filesystem when closed.c                   s   t    | j  d S r   )r   closer   r   r   r   r   rT   Z   s   
zClosingSubFS.close)rL   rO   rP   rQ   rT   rR   r   r   r   r   rS   W   s    rS   )
__future__r   typingpathlibr   _baser   _errorsr   r   TYPE_CHECKINGcollections.abcr   r	   r
   _infor   r   rS   r   r   r   r   <module>   s    G