
    hi                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  SSKJr  SSKJrJrJrJrJrJrJr  SSKJr  SS	KJr  \R2                  (       a  S S
KJr  S SKJrJr  SSKJr  \R@                  " 5       S:H  r! " S S\5      r"g)    )annotationsN)PathLike)Path   )FS)CreateFailedDirectoryExpectedDirectoryNotEmptyFileExpectedIllegalDestinationResourceErrorResourceNotFound)Info)isbase)
Collection)IOAny)SubFSWindowsc                     ^  \ rS rSrSrSSU 4S jj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S
 j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rU =r$ )&OSFS"   zVFilesystem for a directory on the local disk.

A thin layer on top of `pathlib.Path`.
c                   > [         TU ]  5         [        U5      R                  5       U l        U(       a  U R                  R                  SSS9  g U R                  R                  5       (       d  [        SU< S35      eg )NTparentsexist_okzunable to create OSFS: z% does not exist or is not a directory)super__init__r   resolve_rootmkdiris_dirr   )selfrootcreate	__class__s      Y/var/www/fran/franai/venv/lib/python3.13/site-packages/fontTools/misc/filesystem/_osfs.pyr   OSFS.__init__(   sn    $Z'')
JJTD9::$$&&"-dX5Z[  '    c                z    U R                  5         U R                  UR                  S5      -  R                  5       $ )N/)checkr    stripr   )r#   rel_paths     r'   _abs	OSFS._abs3   s,    



X^^C0099;;r)   c                     U R                  U5      R                  " U40 UD6$ ! [         a    [        SU< 35      ef = f)NNo such file or directory: )r/   openFileNotFoundErrorr   )r#   pathmodekwargss       r'   r3   	OSFS.open7   sJ    	K99T?''777  	K"%@#IJJ	Ks   !$ >c                @    U R                  U5      R                  5       $ N)r/   existsr#   r5   s     r'   r;   OSFS.exists=       yy%%''r)   c                @    U R                  U5      R                  5       $ r:   )r/   r"   r<   s     r'   isdir
OSFS.isdir@   r>   r)   c                @    U R                  U5      R                  5       $ r:   )r/   is_filer<   s     r'   isfileOSFS.isfileC   s    yy&&((r)   c                ~    U R                  U5      R                  5        Vs/ s H  o"R                  PM     sn$ s  snf r:   )r/   iterdirname)r#   r5   ps      r'   listdirOSFS.listdirF   s/     $		$ 7 7 9: 91 9:::s   :c                `    U R                  U5      R                  X#S9  U R                  U5      $ )Nr   )r/   r!   opendir)r#   r5   r   r   s       r'   _mkdirOSFS._mkdirI   s*    		$gA||D!!r)   c                $    U R                  USUS9$ )NFr   rN   r#   r5   recreates      r'   makedirOSFS.makedirM   s    {{4{BBr)   c                $    U R                  USUS9$ )NTr   rQ   rR   s      r'   makedirsOSFS.makedirsP   s    {{4{AAr)   c           	        U R                  U5      nUR                  5       (       d  [        S[        U5      < 35      eSUR                  UR                  5       S.0nU=(       d    SnSU;   a  UR                  5       nUR                  UR                  UR                  [        R                  " UR                  5      [        USS 5      S.=oSS'   [        (       a  SOS	nUR                  XV'   [        U5      $ )
Nr2   basic)rH   r"    detailsst_birthtime)accessedmodifiedsizetypecreatedrb   metadata_changed)r/   r;   r   strrH   r"   statst_atimest_mtimest_sizeS_IFMTst_modegetattr_WINDOWS_PLATFORMst_ctimer   )r#   r5   
namespacesinfostat_resultr\   	ctime_keys          r'   getinfoOSFS.getinfoS   s    yy{{}}"%@T#NOO		++-
  %2

"))+K'00'00#++K$7$78";E) G9o &7%6	<NI!,!5!5GDzr)   c                @   U R                  U5      n UR                  5         g ! [         a    [        S[	        U5      < 35      e[
         aN  nUR                  5       (       a  [        S[	        U5      < S35      e[        S[	        U5      < SU 35      eS nAff = f)Nr2   path z should be a fileunable to remove : )	r/   unlinkr4   r   rd   OSErrorr"   r   r   r#   r5   es      r'   removeOSFS.removek   s    yy	LKKM  	P"%@T#NOO 	L{{}}"U3t9-7H#IJJ#&7D	}Bqc$JKK		Ls   $ +BA	BBc                    U R                  U5      R                  5         g ! [         a    [        SU< S35      e[         aD  nUR
                  [
        R                  :X  a  [        SU< 35      e[        SU< SU 35      eS nAff = f)Nru    should be a directoryzDirectory not empty: rv   rw   )	r/   rmdirNotADirectoryErrorr	   ry   errno	ENOTEMPTYr
   r   rz   s      r'   	removedirOSFS.removedirw   s    	GIIdO!!#! 	L#eD83I$JKK 	Gww%//)'*?x(HII#&7xr!$EFF		Gs   " #B	?BB	c                N    [         R                  " U R                  U5      5        g r:   )shutilrmtreer/   r<   s     r'   
removetreeOSFS.removetree   s    diio&r)   c                   [        X5      (       a  [        SU< SU< 35      eU R                  U5      nUR                  5       (       d  [	        SU< S35      eUR                  5       (       d  [        SU< S35      eU R                  U5      nU(       d%  UR                  5       (       d  [	        SU< S35      eUR                  5       (       a  [        SU< S35      eU(       a  UR                  R                  SSS9  UR                  5       (       aI  [        UR                  5       5      (       a  [        SU< S	35      e[        (       a  UR                  5         UR                  U5        g )
Nzcannot move z to zSource z does not existr   zDestination Tr   z is not empty)r   r   r/   r;   r   r"   r	   rC   parentr!   listrG   r
   rl   r   rename)r#   src_dirdst_dirr%   src_pathdst_paths         r'   movedirOSFS.movedir   s8   '##$|G;d7+%NOO99W%  "WWK#GHH""#gg[8N$OPP99W%hoo//"\'O#LMM#l7+=S$TUUOO!!$!>??H$$&''',wk(OPP""  !r)   c                6    [        U R                  U5      5      $ r:   )rd   r/   r<   s     r'   
getsyspathOSFS.getsyspath   s    499T?##r)   c                b    U R                   R                   S[        U R                  5      < S3$ )N())r&   __name__rd   r    r#   s    r'   __repr__OSFS.__repr__   s)    ..))*!C

O+>a@@r)   c                l    SU R                   R                  R                  5        SU R                   S3$ )N<z 'z'>)r&   r   lowerr    r   s    r'   __str__OSFS.__str__   s/    4>>**00232djj\DDr)   )r    )F)r$   zstr | PathLiker%   bool)r.   rd   returnr   )rb)r5   rd   r6   rd   r   zIO[Any])r5   rd   r   r   )r5   rd   r   z	list[str])FF)r5   rd   r   r   r   r   r   r   )r5   rd   rS   r   r   r   r:   )r5   rd   rn   zCollection[str] | Noner   r   )r5   rd   )r   rd   r   rd   r%   r   )r5   rd   r   rd   )r   rd   )r   
__module____qualname____firstlineno____doc__r   r/   r3   r;   r@   rD   rJ   rN   rT   rW   rr   r|   r   r   r   r   r   r   __static_attributes____classcell__)r&   s   @r'   r   r   "   st    
	 	<K(();"CB0
L	G'"0$AE Er)   r   )#
__future__r   r   platformr   re   typingosr   pathlibr   _baser   _errorsr   r	   r
   r   r   r   r   _infor   _pathr   TYPE_CHECKINGcollections.abcr   r   r   _subfsr   systemrl   r   r[   r)   r'   <module>r      sm    "            	* OO%2 BE2 BEr)   