
     i                        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dS )    )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/d0dZd1dZd1dZ	d1dZ
d2dZd3d4dZd3d4dZd5d6dZd7dZd7d Zd7d!Zd3d8d%Zd9d&Zd:d(Zd;d*Zd<d+Zd<d,Z xZS )=SubFSz+Maps a sub-directory of another filesystem.parentr   sub_pathstrc                x   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__s      j/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/fontTools/misc/filesystem/_subfs.pyr   zSubFS.__init__   s    $X..7799@@EE}}T\** 	H"#M#M#MNNNdl++ 	H#x$F$F$FGGG	H 	H    c                    | j         S N)r   r   s    r   delegate_fszSubFS.delegate_fs   s
    |r   relreturnc                    |                                   | j         dt          |                                                               d          S Nr   )checkr   r   r   lstrip)r   r$   s     r   _fullzSubFS._full   sG    

,@@s!3!3!<!<!>!>@@GGLLLr   rbpathmodeIO[Any]c                P     | j         j        |                     |          |fi |S r!   )r   openr*   )r   r,   r-   kwargss       r   r0   z
SubFS.open#   s-     t| D!1!14BB6BBBr   boolc                \    | j                             |                     |                    S r!   )r   r   r*   r   r,   s     r   r   zSubFS.exists&   $    |""4::d#3#3444r   c                \    | j                             |                     |                    S r!   )r   r   r*   r4   s     r   r   zSubFS.isdir)   s$    |!!$**T"2"2333r   c                \    | j                             |                     |                    S r!   )r   isfiler*   r4   s     r   r8   zSubFS.isfile,   r5   r   	list[str]c                \    | j                             |                     |                    S r!   )r   listdirr*   r4   s     r   r;   zSubFS.listdir/   s$    |##DJJt$4$4555r   Frecreatec                `    | j                             |                     |          |          S N)r<   )r   makedirr*   r   r,   r<   s      r   r?   zSubFS.makedir2   s)    |##DJJt$4$4x#HHHr   c                `    | j                             |                     |          |          S r>   )r   makedirsr*   r@   s      r   rB   zSubFS.makedirs5   s)    |$$TZZ%5%5$IIIr   N
namespacesCollection[str] | Noner   c                `    | j                             |                     |          |          S )N)rC   )r   getinfor*   )r   r,   rC   s      r   rF   zSubFS.getinfo8   s)    |##DJJt$4$4#LLLr   c                \    | j                             |                     |                    S r!   )r   remover*   r4   s     r   rH   zSubFS.remove;   r5   r   c                \    | j                             |                     |                    S r!   )r   	removedirr*   r4   s     r   rJ   zSubFS.removedir>   $    |%%djj&6&6777r   c                \    | j                             |                     |                    S r!   )r   
removetreer*   r4   s     r   rM   zSubFS.removetreeA   $    |&&tzz$'7'7888r   srcdstcreatec                    | j                             |                     |          |                     |          |           d S )N)rQ   )r   movedirr*   )r   rO   rP   rQ   s       r   rS   zSubFS.movedirD   s9    TZZ__djjoofMMMMMr   c                \    | j                             |                     |                    S r!   )r   
getsyspathr*   r4   s     r   rU   zSubFS.getsyspathG   rN   r   bytesc                \    | j                             |                     |                    S r!   )r   	readbytesr*   r4   s     r   rX   zSubFS.readbytesJ   rK   r   datac                b    | j                             |                     |          |           d S r!   )r   
writebytesr*   )r   r,   rY   s      r   r[   zSubFS.writebytesM   s,    

4 0 0$77777r   c                @    | j         j         d| j        d| j        dS )N(z, ))r   __name__r   r   r"   s    r   __repr__zSubFS.__repr__P   s*    .)OODLOOdlOOOOr   c                $    | j          d| j         S r'   )r   r   r"   s    r   __str__zSubFS.__str__S   s    ,/////r   )r   r   r   r   )r$   r   r%   r   )r+   )r,   r   r-   r   r%   r.   )r,   r   r%   r2   )r,   r   r%   r9   )F)r,   r   r<   r2   r!   )r,   r   rC   rD   r%   r   )r,   r   )rO   r   rP   r   rQ   r2   )r,   r   r%   r   )r,   r   r%   rV   )r,   r   rY   rV   )r%   r   )r_   
__module____qualname____doc__r   r#   r*   r0   r   r   r8   r;   r?   rB   rF   rH   rJ   rM   rS   rU   rX   r[   r`   rb   __classcell__r   s   @r   r   r      s       55H H H H H H  M M M MC C C C C5 5 5 54 4 4 45 5 5 56 6 6 6I I I I IJ J J J JM M M M M5 5 5 58 8 8 89 9 9 9N N N N N9 9 9 98 8 8 88 8 8 8P P P P0 0 0 0 0 0 0 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                z    t                                                       | j                                         d S r!   )r   closer   )r   r   s    r   rk   zClosingSubFS.closeZ   s.    r   )r_   rc   rd   re   rk   rf   rg   s   @r   ri   ri   W   s>        HH        r   ri   )
__future__r   typingpathlibr   _baser   _errorsr   r   TYPE_CHECKINGcollections.abcr	   r
   r   _infor   r   ri    r   r   <module>ru      s
   " " " " " "  ! ! ! ! ! !       8 8 8 8 8 8 8 8	 ******D0 D0 D0 D0 D0B D0 D0 D0N    5     r   