
    Wh                        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                  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y)    )annotationsN)PurePosixPath   )FS)DirectoryExpectedResourceNotFound)
Collection)IOAny)Infoc                       e Zd ZdZd fdZd Zd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dZd dZd dZd dZdd!dZd"dZd#dZd$dZd%dZd%dZ xZS )&SubFSz+Maps a sub-directory of another filesystem.c                .   t         |           || _        t        |      j	                         j                  d      | _        |j                  | j                        st        d|      |j                  | j                        st        |d      y )N/zNo such file or directory: z is not a directory)super__init___parentr   as_posixrstrip_prefixexistsr   isdirr   )selfparentsub_path	__class__s      Z/var/www/html/jupyter_env/lib/python3.12/site-packages/fontTools/misc/filesystem/_subfs.pyr   zSubFS.__init__   s    $X.779@@E}}T\\*"%@#MNNdll+#xl2E$FGG ,    c                    | j                   S N)r   r   s    r   delegate_fszSubFS.delegate_fs   s    ||r   c                    | j                          | j                   dt        |      j                          j	                  d      S Nr   )checkr   r   r   lstrip)r   rels     r   _fullzSubFS._full   s:    

,,qs!3!<!<!> ?@GGLLr   c                \     | j                   j                  | j                  |      |fi |S r    )r   openr(   )r   pathmodekwargss       r   r*   z
SubFS.open#   s)     t||  D!14B6BBr   c                V    | j                   j                  | j                  |            S r    )r   r   r(   r   r+   s     r   r   zSubFS.exists&        ||""4::d#344r   c                V    | j                   j                  | j                  |            S r    )r   r   r(   r/   s     r   r   zSubFS.isdir)   s     ||!!$**T"233r   c                V    | j                   j                  | j                  |            S r    )r   isfiler(   r/   s     r   r3   zSubFS.isfile,   r0   r   c                V    | j                   j                  | j                  |            S r    )r   listdirr(   r/   s     r   r5   zSubFS.listdir/   s     ||##DJJt$455r   c                Z    | j                   j                  | j                  |      |      S N)recreate)r   makedirr(   r   r+   r8   s      r   r9   zSubFS.makedir2   s%    ||##DJJt$4x#HHr   c                Z    | j                   j                  | j                  |      |      S r7   )r   makedirsr(   r:   s      r   r<   zSubFS.makedirs5   s%    ||$$TZZ%5$IIr   c                Z    | j                   j                  | j                  |      |      S )N)
namespaces)r   getinfor(   )r   r+   r>   s      r   r?   zSubFS.getinfo8   s%    ||##DJJt$4#LLr   c                V    | j                   j                  | j                  |            S r    )r   remover(   r/   s     r   rA   zSubFS.remove;   r0   r   c                V    | j                   j                  | j                  |            S r    )r   	removedirr(   r/   s     r   rC   zSubFS.removedir>        ||%%djj&677r   c                V    | j                   j                  | j                  |            S r    )r   
removetreer(   r/   s     r   rF   zSubFS.removetreeA        ||&&tzz$'788r   c                |    | j                   j                  | j                  |      | j                  |      |       y )N)create)r   movedirr(   )r   srcdstrI   s       r   rJ   zSubFS.movedirD   s+    TZZ_djjofMr   c                V    | j                   j                  | j                  |            S r    )r   
getsyspathr(   r/   s     r   rN   zSubFS.getsyspathG   rG   r   c                V    | j                   j                  | j                  |            S r    )r   	readbytesr(   r/   s     r   rP   zSubFS.readbytesJ   rD   r   c                Z    | j                   j                  | j                  |      |       y r    )r   
writebytesr(   )r   r+   datas      r   rR   zSubFS.writebytesM   s    

4 0$7r   c                h    | j                   j                   d| j                  d| j                  dS )N(z, ))r   __name__r   r   r!   s    r   __repr__zSubFS.__repr__P   s0    ..))*!DLL+;2dll=MQOOr   c                8    | j                    d| j                   S r$   )r   r   r!   s    r   __str__zSubFS.__str__S   s    ,,q//r   )r   r   r   str)r'   r[   returnr[   )rb)r+   r[   r,   r[   r\   zIO[Any])r+   r[   r\   bool)r+   r[   r\   z	list[str])F)r+   r[   r8   r^   r    )r+   r[   r>   zCollection[str] | Noner\   r   )r+   r[   )rK   r[   rL   r[   rI   r^   )r+   r[   r\   r[   )r+   r[   r\   bytes)r+   r[   rS   r_   )r\   r[   )rW   
__module____qualname____doc__r   r"   r(   r*   r   r   r3   r5   r9   r<   r?   rA   rC   rF   rJ   rN   rP   rR   rX   rZ   __classcell__r   s   @r   r   r      sr    5HMC5456IJM589N988P0r   r   c                  "     e Zd ZdZ fdZ xZS )ClosingSubFSz>Like SubFS, but auto-closes the parent filesystem when closed.c                V    t         |           | j                  j                          y r    )r   closer   )r   r   s    r   rh   zClosingSubFS.closeZ   s    r   )rW   r`   ra   rb   rh   rc   rd   s   @r   rf   rf   W   s    H r   rf   )
__future__r   typingpathlibr   _baser   _errorsr   r   TYPE_CHECKINGcollections.abcr	   r
   r   _infor   r   rf    r   r   <module>rr      sA    "  !  8	*D0B D0N5 r   