
    h                        S SK Jr  S SKrS SKJr  SSKJr  SSKJrJ	r	  \R                  (       a  S SKJr  S SKJrJr  SS	KJr   " S
 S\5      r " S S\5      rg)    )annotationsN)PurePosixPath   )FS)DirectoryExpectedResourceNotFound)
Collection)IOAny)Infoc                     ^  \ rS rSrSrSU 4S jjrS rSS jrSSS jjrSS jr	SS jr
SS	 jrSS
 jrSSS jjrSSS jjrS S!S jjrS"S jrS"S jrS"S jrSS#S jjrS$S jrS%S jrS&S jrS'S jrS'S jrSrU =r$ )(SubFS   z+Maps a sub-directory of another filesystem.c                D  > [         TU ]  5         Xl        [        U5      R	                  5       R                  S5      U l        UR                  U R                  5      (       d  [        SU< 35      eUR                  U R                  5      (       d  [        U< S35      eg )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/fran/franai/venv/lib/python3.13/site-packages/fontTools/misc/filesystem/_subfs.pyr   SubFS.__init__   s    $X.779@@E}}T\\**"%@#MNNdll++#xl2E$FGG ,    c                    U R                   $ N)r   r   s    r   delegate_fsSubFS.delegate_fs   s    ||r    c                    U R                  5         U R                   S[        U5      R                  5        3R	                  S5      $ Nr   )checkr   r   r   lstrip)r   rels     r   _fullSubFS._full   s:    

,,qs!3!<!<!> ?@GGLLr    c                \    U R                   R                  " U R                  U5      U40 UD6$ r"   )r   openr+   )r   pathmodekwargss       r   r.   
SubFS.open#   s'    ||  D!14B6BBr    c                V    U R                   R                  U R                  U5      5      $ r"   )r   r   r+   r   r/   s     r   r   SubFS.exists&        ||""4::d#344r    c                V    U R                   R                  U R                  U5      5      $ r"   )r   r   r+   r4   s     r   r   SubFS.isdir)   s     ||!!$**T"233r    c                V    U R                   R                  U R                  U5      5      $ r"   )r   isfiler+   r4   s     r   r:   SubFS.isfile,   r6   r    c                V    U R                   R                  U R                  U5      5      $ r"   )r   listdirr+   r4   s     r   r=   SubFS.listdir/   s     ||##DJJt$455r    c                T    U R                   R                  U R                  U5      US9$ N)recreate)r   makedirr+   r   r/   rA   s      r   rB   SubFS.makedir2   s%    ||##DJJt$4x#HHr    c                T    U R                   R                  U R                  U5      US9$ r@   )r   makedirsr+   rC   s      r   rF   SubFS.makedirs5   s%    ||$$TZZ%5$IIr    c                T    U R                   R                  U R                  U5      US9$ )N)
namespaces)r   getinfor+   )r   r/   rI   s      r   rJ   SubFS.getinfo8   s%    ||##DJJt$4#LLr    c                V    U R                   R                  U R                  U5      5      $ r"   )r   remover+   r4   s     r   rM   SubFS.remove;   r6   r    c                V    U R                   R                  U R                  U5      5      $ r"   )r   	removedirr+   r4   s     r   rP   SubFS.removedir>        ||%%djj&677r    c                V    U R                   R                  U R                  U5      5      $ r"   )r   
removetreer+   r4   s     r   rT   SubFS.removetreeA        ||&&tzz$'788r    c                v    U R                   R                  U R                  U5      U R                  U5      US9  g )N)create)r   movedirr+   )r   srcdstrX   s       r   rY   SubFS.movedirD   s+    TZZ_djjofMr    c                V    U R                   R                  U R                  U5      5      $ r"   )r   
getsyspathr+   r4   s     r   r^   SubFS.getsyspathG   rV   r    c                V    U R                   R                  U R                  U5      5      $ r"   )r   	readbytesr+   r4   s     r   ra   SubFS.readbytesJ   rR   r    c                Z    U R                   R                  U R                  U5      U5        g r"   )r   
writebytesr+   )r   r/   datas      r   rd   SubFS.writebytesM   s    

4 0$7r    c                l    U R                   R                   SU R                  < SU R                  < S3$ )N(z, ))r   __name__r   r   r#   s    r   __repr__SubFS.__repr__P   s0    ..))*!DLL+;2dll=MQOOr    c                8    U R                    SU R                   3$ r'   r   r   r#   s    r   __str__SubFS.__str__S   s    ,,q//r    rn   )r   r   r   str)r*   rq   returnrq   )rb)r/   rq   r0   rq   rr   zIO[Any])r/   rq   rr   bool)r/   rq   rr   z	list[str])F)r/   rq   rA   rt   r"   )r/   rq   rI   zCollection[str] | Nonerr   r   )r/   rq   )rZ   rq   r[   rq   rX   rt   )r/   rq   rr   rq   )r/   rq   rr   bytes)r/   rq   re   ru   )rr   rq   )rj   
__module____qualname____firstlineno____doc__r   r$   r+   r.   r   r   r:   r=   rB   rF   rJ   rM   rP   rT   rY   r^   ra   rd   rk   ro   __static_attributes____classcell__r   s   @r   r   r      sw    5HMC5456IJM589N988P0 0r    r   c                  ,   ^  \ rS rSrSrU 4S jrSrU =r$ )ClosingSubFSW   z>Like SubFS, but auto-closes the parent filesystem when closed.c                V   > [         TU ]  5         U R                  R                  5         g r"   )r   closer   )r   r   s    r   r   ClosingSubFS.closeZ   s    r     )rj   rv   rw   rx   ry   r   rz   r{   r|   s   @r   r~   r~   W   s    H r    r~   )
__future__r   typingpathlibr   _baser   _errorsr   r   TYPE_CHECKINGcollections.abcr	   r
   r   _infor   r   r~   r   r    r   <module>r      sA    "  !  8	*D0B D0N5 r    