
     ii                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZ ddlmZ dd	lmZ ej        rd d
lmZ d dlmZmZ ddlmZ  ej                     dk    Z! G d de          Z"dS )    )annotationsN)PathLike)Path   )FS)CreateFailedDirectoryExpectedDirectoryNotEmptyFileExpectedIllegalDestinationResourceErrorResourceNotFound)Info)isbase)
Collection)IOAny)SubFSWindowsc                       e Zd ZdZd,d- fdZd.dZd/d0dZd1dZd1dZd1dZ	d2dZ
d3d4dZd,d5dZd,d5dZd6d7d"Zd8d#Zd8d$Zd8d%Zd,d9d(Zd:d)Zd;d*Zd;d+Z xZS )<OSFSz^Filesystem for a directory on the local disk.

    A thin layer on top of `pathlib.Path`.
    Frootstr | PathLikecreateboolc                ,   t                                                       t          |                                          | _        |r| j                            dd           d S | j                                        st          d|d          d S )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   )selfr   r   	__class__s      i/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/fontTools/misc/filesystem/_osfs.pyr!   zOSFS.__init__(   s    $ZZ''))
 	JTD99999:$$&& "[d[[[       rel_pathstrreturnr   c                    |                                   | j        |                    d          z                                  S )N/)checkr#   stripr"   )r&   r*   s     r(   _absz	OSFS._abs3   s4    


X^^C00099;;;r)   rbpathmodeIO[Any]c                    	  |                      |          j        |fi |S # t          $ r t          d|          w xY w)NNo such file or directory: )r1   openFileNotFoundErrorr   )r&   r3   r4   kwargss       r(   r8   z	OSFS.open7   sc    	K'499T??'77777  	K 	K 	K"#I#I#IJJJ	Ks	    # A c                P    |                      |                                          S N)r1   existsr&   r3   s     r(   r=   zOSFS.exists=       yy%%'''r)   c                P    |                      |                                          S r<   )r1   r%   r>   s     r(   isdirz
OSFS.isdir@   r?   r)   c                P    |                      |                                          S r<   )r1   is_filer>   s     r(   isfilezOSFS.isfileC   s    yy&&(((r)   	list[str]c                d    d |                      |                                          D             S )Nc                    g | ]	}|j         
S  )name).0ps     r(   
<listcomp>z OSFS.listdir.<locals>.<listcomp>G   s    :::1:::r)   )r1   iterdirr>   s     r(   listdirzOSFS.listdirF   s,    ::		$ 7 7 9 9::::r)   r   r   r   c                    |                      |                              ||           |                     |          S )Nr   )r1   r$   opendir)r&   r3   r   r   s       r(   _mkdirzOSFS._mkdirI   s7    		$gAAA||D!!!r)   recreatec                2    |                      |d|          S )NFr   rQ   r&   r3   rR   s      r(   makedirzOSFS.makedirM   s    {{4{BBBr)   c                2    |                      |d|          S )NTr   rT   rU   s      r(   makedirszOSFS.makedirsP   s    {{4{AAAr)   N
namespacesCollection[str] | Noner   c           	        |                      |          }|                                st          dt          |                    d|j        |                                di}|pd}d|v rk|                                }|j        |j        |j	        t          j
        |j                  t          |dd           dx}|d<   t          rdnd	}|j        ||<   t          |          S )
Nr7   basic)rI   r%   rH   detailsst_birthtime)accessedmodifiedsizetypecreatedrc   metadata_changed)r1   r=   r   r+   rI   r%   statst_atimest_mtimest_sizeS_IFMTst_modegetattr_WINDOWS_PLATFORMst_ctimer   )r&   r3   rY   infostat_resultr]   	ctime_keys          r(   getinfozOSFS.getinfoS   s    yy{{}} 	P"#NT#N#NOOO	++-- 
  %2

""))++K'0'0#+K$788";EE) ) Gd9o &7N		<NI!,!5GIDzzr)   c                z   |                      |          }	 |                                 d S # t          $ r  t          dt	          |                    t
          $ r[}|                                r t          dt	          |          d          t          dt	          |          d|           d }~ww xY w)Nr7   path z should be a fileunable to remove : )	r1   unlinkr9   r   r+   OSErrorr%   r   r   r&   r3   es      r(   removezOSFS.removek   s    yy	LKKMMMMM  	P 	P 	P"#NT#N#NOOO 	L 	L 	L{{}} L"#I3t99#I#I#IJJJ#$JD		$J$Jq$J$JKKK		Ls   - 2B:AB55B:c                *   	 |                      |                                           d S # t          $ r t          d|d          t          $ rA}|j        t
          j        k    rt          d|          t          d|d|           d }~ww xY w)Nrs    should be a directoryzDirectory not empty: rt   ru   )	r1   rmdirNotADirectoryErrorr	   rw   errno	ENOTEMPTYr
   r   rx   s      r(   	removedirzOSFS.removedirw   s    	GIIdOO!!#####! 	L 	L 	L#$JD$J$J$JKKK 	G 	G 	Gw%/))'(H(H(HIII#$E$E$E!$E$EFFF		Gs   '+ &B<BBc                T    t          j        |                     |                     d S r<   )shutilrmtreer1   r>   s     r(   
removetreezOSFS.removetree   s"    diioo&&&&&r)   src_dirdst_dirc                   t          ||          rt          d|d|          |                     |          }|                                st	          d|d          |                                st          d|d          |                     |          }|s'|                                st	          d|d          |                                rt          d|d          |r|j        	                    dd           |                                rOt          |                                          rt          d|d	          t          r|                                 |                    |           d S )
Nzcannot move z to zSource z does not existr|   zDestination Tr   z is not empty)r   r   r1   r=   r   r%   r	   rC   parentr$   listrM   r
   rl   r}   rename)r&   r   r   r   src_pathdst_paths         r(   movedirzOSFS.movedir   s   '7## 	P$%NG%N%N7%N%NOOO99W%%   	Q"#GW#G#G#GHHH"" 	Q#$Og$O$O$OPPP99W%% 	Nhoo// 	N"#L'#L#L#LMMM 	V#$T7$T$T$TUUU 	?O!!$!>>>?? 	!H$$&&'' !'(Ow(O(O(OPPP" !    !!!!!r)   c                F    t          |                     |                    S r<   )r+   r1   r>   s     r(   
getsyspathzOSFS.getsyspath   s    499T??###r)   c                J    | j         j         dt          | j                  dS )N())r'   __name__r+   r#   r&   s    r(   __repr__zOSFS.__repr__   s&    .)@@C
OO@@@@r)   c                V    d| j         j                                         d| j         dS )N<z 'z'>)r'   r   lowerr#   r   s    r(   __str__zOSFS.__str__   s.    D4>*0022DDdjDDDDr)   )F)r   r   r   r   )r*   r+   r,   r   )r2   )r3   r+   r4   r+   r,   r5   )r3   r+   r,   r   )r3   r+   r,   rE   )FF)r3   r+   r   r   r   r   r,   r   )r3   r+   rR   r   r,   r   r<   )r3   r+   rY   rZ   r,   r   )r3   r+   )r   r+   r   r+   r   r   )r3   r+   r,   r+   )r,   r+   )r   
__module____qualname____doc__r!   r1   r8   r=   rA   rD   rN   rQ   rV   rX   rq   rz   r   r   r   r   r   r   __classcell__)r'   s   @r(   r   r   "   s        
	 	 	 	 	 	 	< < < <K K K K K( ( ( (( ( ( () ) ) ); ; ; ;" " " " "C C C C CB B B B B    0
L 
L 
L 
L	G 	G 	G 	G' ' ' '" " " " "0$ $ $ $A A A AE E E E E E 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   rH   r)   r(   <module>r      s   " " " " " "                                                    	 ****** $HO%%2 BE BE BE BE BE2 BE BE BE BE BEr)   