a �DOg9��@sbddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z mZmZddlmZddlmZmZmZmZmZmZmZddlmZdZejdkr�ddlZe� �dd �d kr�dd lm!Z!q�d ZdZ!ndZgd �Z"e e eefZ#dZ$dd�Z%dd�Z&Gdd�de'�Z(Gdd�de(�Z)Gdd�de(�Z*e)�Z+e*�Z,Gdd�d�Z-Gdd�de-�Z.e.�Z/dd�Z0e1ed��r�e�2�e0�Z0Gd d!�d!�Z3Gd"d#�d#�Z4Gd$d%�d%e3�Z5Gd&d'�d'e3�Z6Gd(d)�d)e3�Z7Gd*d+�d+e �Z8Gd,d-�d-e'�Z9ej:�;e9�Gd.d/�d/e9�ZGd4d5�d5e>e<�Z?Gd6d7�d7e>e=�Z@dS)8�N)�Sequence)�EINVAL�ENOENT�ENOTDIR�EBADF�ELOOP)� attrgetter)�S_ISDIR�S_ISLNK�S_ISREG�S_ISSOCK�S_ISBLK�S_ISCHR�S_ISFIFO)�quote_from_bytesT�nt�)�r)�_getfinalpathnameF)�PurePath� PurePosixPath�PureWindowsPath�Path� PosixPath� WindowsPath)��{i�cCs t|dd�tvpt|dd�tvS)N�errno�winerror)�getattr�_IGNORED_ERROS�_IGNORED_WINERRORS)� exception�r#�/usr/lib64/python3.9/pathlib.py� _ignore_error.s�r%cCsd|vpd|vpd|vS)N�*�?�[r#)�patr#r#r$�_is_wildcard_pattern3sr*c@s$eZdZdd�Zdd�Zdd�ZdS)�_FlavourcCs|jj|_dS�N)�sep�join��selfr#r#r$�__init__=sz_Flavour.__init__c Csg}|j}|j}d}}t|�}|D]�}|s.q$|r>|�||�}|�|�\}}} || vr�t| �|��D] } | rd| dkrd|�t�| ��qdn| r�| dkr�|�t�| ��|s�|r$|s�|D]0}|s�q�|r�|�||�}|�|�d}|r�q�q�q�q$|s�|�r|�||�|� �|||fS)N��.r) r-�altsep�reversed�replace� splitroot�split�append�sys�intern�reverse) r0�parts�parsedr-r4�drv�root�it�part�rel�xr#r#r$� parse_parts@s@     z_Flavour.parse_partscCsz|r*|sp|rp||||g|dd�fSnF|rb||ksJ|�|�|�|�krp||||dd�fSn||||fS|||fS�N�)�casefold)r0r?r@r=�drv2�root2�parts2r#r#r$�join_parsed_partsfsz_Flavour.join_parsed_partsN)�__name__� __module__� __qualname__r1rErLr#r#r#r$r+9s&r+c@s�eZdZdZdZdZeZej dkZ e d�Z dZ hd�dd �d D�Bd d �d D�BZefd d �Zdd�Zdd�Zdd�Zd"dd�Ze fdd�Zdd�Zdd�Zdd�Zdd �Zd!S)#�_WindowsFlavour�\�/TrZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\>zCONOUT$�PRN�AUX�CONzCONIN$�NULcCsh|] }d|�qS)zCOM%sr#��.0�cr#r#r$� ��z_WindowsFlavour.u123456789¹²³cCsh|] }d|�qS)zLPT%sr#rWr#r#r$rZ�r[c Cs\|dd�}|dd�}||krP||krP|�|�\}}|dd�}|dd�}nd}|dd�}||kr�||kr�||kr�|�|d�}|dkr�|�||d�}||dkr�|dkr�t|�}|r�||d|�|||dd�fS|d|�|||dd�fSd} } |dk�r6||jv�r6|dd�} |dd�}|}||k�rN|} |�|�}|| | |fS)NrrGrr2�������:)�_split_extended_path�find�len� drive_letters�lstrip) r0rBr-�first�second�prefix�third�index�index2r?r@r#r#r$r7�s6      "    z_WindowsFlavour.splitrootcCs|��Sr,��lower�r0�sr#r#r$rH�sz_WindowsFlavour.casefoldcCsdd�|D�S)NcSsg|] }|���qSr#rj)rX�pr#r#r$� �r[z2_WindowsFlavour.casefold_parts..r#�r0r=r#r#r$�casefold_parts�sz_WindowsFlavour.casefold_partscCst�t�|�tj�jSr,)�re�compile�fnmatch� translate� IGNORECASE� fullmatch�r0�patternr#r#r$�compile_pattern�sz_WindowsFlavour.compile_patternFcCs�t|�}|st��Sd}tdur�|r2|�t|��Sg}z|�t|��}Wn@ty�|}tj�|�\}}|�|�||kr�|YSYq60tjj |gt |��R�Sq6dSr,) �str�os�getcwdr�_ext_to_normal�FileNotFoundError�pathr8r9r.r5)r0r��strictrm� previous_s� tail_parts�tailr#r#r$�resolve�s$  z_WindowsFlavour.resolvecCsXd}|�|�rP|dd�}|dd�}|�d�rP||dd�7}d|dd�}||fS)Nr2�zUNC\r\rQ)� startswith)r0rm� ext_prefixrfr#r#r$r_�s    z$_WindowsFlavour._split_extended_pathcCs|�|�dSrF)r_rlr#r#r$r~�sz_WindowsFlavour._ext_to_normalcCsJ|sdS|d�d�rdS|d�d�d�d�d�d�}|��|jvS)NFrz\\r]r3r^� )r�� partition�rstrip�upper�reserved_names)r0r=�namer#r#r$� is_reserved�s "z_WindowsFlavour.is_reservedcCsd|j}t|�dkrJ|ddkrJ|��dd��d�}d|t|�d��fSdt|���d��SdS)NrrGr^rRz file:///%s/%szutf-8zfile:)�drivera�as_posixrc�urlquote_from_bytes�encode)r0r�r��restr#r#r$�make_uri�s�z_WindowsFlavour.make_uricCs�dtjvrtjd}nHdtjvrVztjd}WntyDd}Yn0|tjd}ntd��|r�tjd|kr�|�|f�\}}}|dtjdkr�td|��||d<|s�|r�|||�|d d��}n |�|�}|S) N� USERPROFILE�HOMEPATH� HOMEDRIVEr2zCan't determine home directory�USERNAMEr]�%Can't determine home directory for %rrG)r|�environ�KeyError� RuntimeErrorrEr.)r0�username�userhomer?r@r=r#r#r$� gethomedir s*     � z_WindowsFlavour.gethomedirN)F)rMrNrOr-r4�has_drv�ntpath�pathmodr|r�� is_supported�setrb�ext_namespace_prefixr�r7rHrqrzr�r_r~r�r�r�r#r#r#r$rPxs.  � �� '    rPc@sleZdZdZdZdZeZej dkZ efdd�Z dd�Z d d �Z d d �Zdd d�Zdd�Zdd�Zdd�ZdS)� _PosixFlavourrRr2FrcCsV|rH|d|krH|�|�}t|�t|�dkrsz_PosixFlavour.casefoldcCs|Sr,r#rpr#r#r$rqAsz_PosixFlavour.casefold_partscCst�t�|��jSr,)rrrsrtrurwrxr#r#r$rzDsz_PosixFlavour.compile_patterncsJ|j�|j�i������fdd��|��r0dnt��}�|t|��pH�S)Nc s�|���rd}|���D]�}|r|dkr*q|dkrD|���\}}}q|���rX||}n |�|}|�vr��|}|dur~qtd|��z��|�}Wn8ty�}z |jtkr��r��|}WYd}~qd}~00d�|<�||�}|�|<q|S)Nr2r3�..zSymlink loop from %r) r�r8� rpartition�endswithr��readlink�OSErrorrr)r�r�r��_�newpath�target�e��_resolve�accessor�seenr-r�r#r$r�Ks4        z'_PosixFlavour.resolve.._resolver2)r-� _accessor� is_absoluter|r}r{)r0r�r��baser#r�r$r�Gs )z_PosixFlavour.resolvecCsdS�NFr#rpr#r#r$r�wsz_PosixFlavour.is_reservedcCst|�}dt|�S)Nzfile://)�bytesr�)r0r��bpathr#r#r$r�zsz_PosixFlavour.make_uricCsx|s>z tjdWSty:ddl}|�t���jYS0n6ddl}z|�|�jWStyrtd|��Yn0dS)N�HOMErr�) r|r�r��pwd�getpwuid�getuid�pw_dir�getpwnamr�)r0r�r�r#r#r$r��s   �z_PosixFlavour.gethomedirN)F)rMrNrOr-r4r�� posixpathr�r|r�r�r7rHrqrzr�r�r�r�r#r#r#r$r�'s   0r�c@s eZdZdS)� _AccessorN)rMrNrOr#r#r#r$r��sr�c@s�eZdZejZejZejZejZejZej Z e ed�r>ej Z ndd�Z ej Z ej Z e ed�rdejZn edd��ZejZejZejZer�er�ejZq�dd�Zn ed d��ZejZd d �Zd d �Zdd�ZdS)�_NormalAccessor�lchmodcCs td��dS)Nz%lchmod() not available on this system��NotImplementedError)r0�pathobj�moder#r#r$r��sz_NormalAccessor.lchmod�linkcCs td��dS)Nz&os.link() not available on this systemr��r0r�r#r#r$�link_to�sz_NormalAccessor.link_tocCs td��dS)Nz&symlink() not available on this systemr���a�b�target_is_directoryr#r#r$�symlink�sz_NormalAccessor.symlinkcCs t�||�Sr,)r|r�r�r#r#r$r��scCs t�|�Sr,)r|r��r0r�r#r#r$r��sz_NormalAccessor.readlinkcCs>zddl}|�|�|�j�jWSty8td��Yn0dS)Nrz*Path.owner() is unsupported on this system)r�r��stat�st_uid�pw_name� ImportErrorr�)r0r�r�r#r#r$�owner�s  z_NormalAccessor.ownercCs>zddl}|�|�|�j�jWSty8td��Yn0dS)Nrz*Path.group() is unsupported on this system)�grp�getgrgidr��st_gid�gr_namer�r�)r0r�r�r#r#r$�group�s  z_NormalAccessor.groupN)rMrNrOr|r��lstat�open�listdir�scandir�chmod�hasattrr��mkdir�unlinkr�r�� staticmethod�rmdir�renamer6r�supports_symlinksr��utimer�r�r�r#r#r#r$r��s8     r�cCsR|d}|dd�}|dkr"t}n$d|vr4td��nt|�rBt}nt}||||�S)NrrG�**z:Invalid pattern: '**' can only be an entire path component)�_RecursiveWildcardSelector� ValueErrorr*�_WildcardSelector�_PreciseSelector)� pattern_parts�flavourr)� child_parts�clsr#r#r$�_make_selector�s  r�� lru_cachec@seZdZdd�Zdd�ZdS)� _SelectorcCs0||_|rt||�|_d|_nt�|_d|_dS�NTF)r�r�� successor�dironly�_TerminatingSelector)r0r�r�r#r#r$r1�s  z_Selector.__init__cCs<t|�}|j}|j}|jj}||�s,tg�S|�||||�Sr,)�type�is_dir�existsr�r��iter� _select_from)r0� parent_path�path_clsr�r�r�r#r#r$� select_fromsz_Selector.select_fromN)rMrNrOr1rr#r#r#r$r��s r�c@seZdZdd�ZdS)r�ccs |VdSr,r#)r0r�r�r�r�r#r#r$r�sz!_TerminatingSelector._select_fromN)rMrNrOr�r#r#r#r$r�sr�c@seZdZdd�Zdd�ZdS)r�cCs||_t�|||�dSr,)r�r�r1)r0r�r�r�r#r#r$r1sz_PreciseSelector.__init__ccsZz@|�|j�}|jr|n||�r>|j�||||�D] }|Vq2WntyTYdS0dSr,)�_make_child_relpathr�r�r�r��PermissionError)r0r�r�r�r�r�rnr#r#r$r�s   z_PreciseSelector._select_fromN�rMrNrOr1r�r#r#r#r$r�sr�c@seZdZdd�Zdd�ZdS)r�cCs|�|�|_t�|||�dSr,)rz�matchr�r1�r0r)r�r�r#r#r$r1(s z_WildcardSelector.__init__c cs�z�||��}t|�}Wd�n1s(0Y|D]�}|jr�z|��sNWq6Wn:ty�}z"t|�sj�WYd}~q6WYd}~n d}~00|j} |�| �r6|�| �} |j� | |||�D] } | Vq�q6Wnt y�YdS0dSr,) �listr�r�r�r%r�rrr�r�r) r0r�r�r�r�� scandir_it�entries�entryr�r�r�rnr#r#r$r�,s& &"   z_WildcardSelector._select_fromNrr#r#r#r$r�&sr�c@s$eZdZdd�Zdd�Zdd�ZdS)r�cCst�|||�dSr,)r�r1rr#r#r$r1Gsz#_RecursiveWildcardSelector.__init__c cs�|Vz�||��}t|�}Wd�n1s.0Y|D]v}d}z |��}Wn.ty~}zt|�sj�WYd}~n d}~00|r<|��s<|�|j�} |�| ||�D] } | Vq�q)�formatrrMr/r#r#r$�__repr__�sz_PathParents.__repr__N)rMrNrO� __slots__r1rrrr#r#r#r$rqs rc@s�eZdZdZdd�Zdd�Zedd��Zed[d d ��Zed\d d ��Z ed d��Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd�Zedd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zeed/�d0d1�Zeed2�d3d1�Zed4d5��Zed6d7��Z ed8d9��Z!ed:d;��Z"edd?�Z$d@dA�Z%dBdC�Z&dDdE�Z'dFdG�Z(edHdI��Z)dJdK�Z*dLdM�Z+dNdO�Z,edPdQ��Z-edRdS��Z.dTdU�Z/dVdW�Z0dXdY�Z1dZS)]r)rrr�_str�_hash�_pparts�_cached_cpartscGs$|turtjdkrtnt}|�|�S)Nr)rr|r�rr� _from_parts)r��argsr#r#r$�__new__�szPurePath.__new__cCs|jt|j�fSr,)� __class__�tuplerr/r#r#r$� __reduce__�szPurePath.__reduce__cCsdg}|D]N}t|t�r"||j7}qt�|�}t|t�rF|�t|��qtdt|���q|j � |�S)NzNargument should be a str object or an os.PathLike object returning str, not %r) � isinstancerrr|�fspathr{r9� TypeErrorr��_flavourrE)r�r%r=r�r#r#r$� _parse_args�s    ��zPurePath._parse_argsTcCs<t�|�}|�|�\}}}||_||_||_|r8|��|Sr,)�objectr&r.rrr�_init)r�r%�initr0r?r@r=r#r#r$r$�s zPurePath._from_partscCs,t�|�}||_||_||_|r(|��|Sr,)r/r&rrrr0)r�r?r@r=r1r0r#r#r$r�s zPurePath._from_parsed_partscCs4|s|r$|||j�|dd��S|j�|�SdSrF)r-r.)r�r?r@r=r#r#r$�_format_parsed_parts�szPurePath._format_parsed_partscCsdSr,r#r/r#r#r$r0�szPurePath._initcCs@|�|�\}}}|j�|j|j|j|||�\}}}|�|||�Sr,)r.r-rLrrrr)r0r%r?r@r=r#r#r$� _make_child�s � zPurePath._make_childcCs@z|jWSty:|�|j|j|j�p,d|_|jYS0dS)Nr3)r �AttributeErrorr2rrrr/r#r#r$�__str__�s  ��zPurePath.__str__cCst|�Sr,)r{r/r#r#r$� __fspath__�szPurePath.__fspath__cCs|j}t|��|jd�S)NrR)r-r{r6r-�r0�fr#r#r$r��szPurePath.as_posixcCs t�|�Sr,)r|�fsencoder/r#r#r$� __bytes__�szPurePath.__bytes__cCsd�|jj|���S)Nz{}({!r}))rr'rMr�r/r#r#r$r�szPurePath.__repr__cCs|��std��|j�|�S)Nz.relative path can't be expressed as a file URI)r�r�r-r�r/r#r#r$�as_uriszPurePath.as_uricCs6z|jWSty0|j�|j�|_|jYS0dSr,)r#r4r-rqrr/r#r#r$�_cpartss  zPurePath._cpartscCs&t|t�stS|j|jko$|j|juSr,)r*r�NotImplementedr<r-�r0�otherr#r#r$�__eq__s zPurePath.__eq__cCs6z|jWSty0tt|j��|_|jYS0dSr,)r!r4�hashr(r<r/r#r#r$�__hash__s  zPurePath.__hash__cCs&t|t�r|j|jurtS|j|jkSr,�r*rr-r=r<r>r#r#r$�__lt__szPurePath.__lt__cCs&t|t�r|j|jurtS|j|jkSr,rCr>r#r#r$�__le__!szPurePath.__le__cCs&t|t�r|j|jurtS|j|jkSr,rCr>r#r#r$�__gt__&szPurePath.__gt__cCs&t|t�r|j|jurtS|j|jkSr,rCr>r#r#r$�__ge__+szPurePath.__ge__cCs|Sr,r#)r�r�r#r#r$�__class_getitem__0szPurePath.__class_getitem__rz.The drive prefix (letter or UNC path), if any.)�docrzThe root of the path, if any.cCs|j|j}|Sr,)rr)r0�anchorr#r#r$rJ9s zPurePath.anchorcCs.|j}t|�|js|jrdndkr&dS|dS)NrGrr2r])rrarrrpr#r#r$r�?sz PurePath.namecCsD|j}|�d�}d|kr,t|�dkr.rG)r�r�rcr8�r0r�r#r#r$�suffixesUs   zPurePath.suffixescCsD|j}|�d�}d|kr,t|�dkrr#r#r$�is_relative_to�s   zPurePath.is_relative_tocCs2z|jWSty,t|j�|_|jYS0dSr,)r"r4r(rr/r#r#r$r=�s   zPurePath.partscGs |�|�Sr,)r3)r0r%r#r#r$�joinpath�szPurePath.joinpathcCs*z|�|f�WSty$tYS0dSr,)r3r,r=�r0�keyr#r#r$� __truediv__�s zPurePath.__truediv__cCs0z|�|g|j�WSty*tYS0dSr,)r$rr,r=rcr#r#r$� __rtruediv__�s zPurePath.__rtruediv__cCs@|j}|j}|j}t|�dkr*|s&|r*|S|�|||dd��S)NrGr])rrrrar)r0r?r@r=r#r#r$�parent�s zPurePath.parentcCst|�Sr,)rr/r#r#r$�parents�szPurePath.parentscCs|js dS|jj pt|j�Sr�)rr-r��boolrr/r#r#r$r��szPurePath.is_absolutecCs|j�|j�Sr,)r-r�rr/r#r#r$r��szPurePath.is_reservedc Cs�|jj}||�}|j�|f�\}}}|s0td��|rF|||j�krFdS|r\|||j�kr\dS|j}|sj|r�t|�t|�kr~dS|dd�}nt|�t|�kr�dStt |�t |��D]\}}t � ||�s�dSq�dS)Nz empty patternFrGT) r-rHrEr�rrr<ra�zipr5rt� fnmatchcase) r0� path_patternr^r?r@� pat_partsr=rBr)r#r#r$r�s( zPurePath.matchN)T)T)2rMrNrOrr&r)� classmethodr.r$rr2r0r3r5r6r�r:rr;�propertyr<r@rBrDrErFrGrHrr�r@rJr�rOrQrRrTrUrWr`rar=rbrerfrgrhr�r�rr#r#r#r$r�sz        ��      !    rc@seZdZeZdZdS)rr#N)rMrNrO�_posix_flavourr-rr#r#r#r$rsrc@seZdZeZdZdS)rr#N)rMrNrO�_windows_flavourr-rr#r#r#r$rsrc@s�eZdZdZdd�Zdcdd�Zdd�Zd d �Zd d �Zdddd�Z dedd�Z e dd��Z e dd��Z dd�Zdd�Zdd�Zdd�Zdd �Zdfd"d#�Zd$d%�Zd&d'�Zd(d)�Zdgd,d-�Zd.d/�Zdhd0d1�Zd2d3�Zdid4d5�Zd6d7�Zdjd9d:�Zdkd;d<�Zd=d>�Zd?d@�Z dldAdB�Z!dCdD�Z"dEdF�Z#dGdH�Z$dIdJ�Z%dmdKdL�Z&dMdN�Z'dOdP�Z(dQdR�Z)dSdT�Z*dUdV�Z+dWdX�Z,dYdZ�Z-d[d\�Z.d]d^�Z/d_d`�Z0dadb�Z1dS)nr)r�cOsL|turtjdkrtnt}|j|dd�}|jjs@td|j f��|� �|S)NrF�r1z$cannot instantiate %r on your system) rr|r�rrr$r-r�r�rMr0)r�r%�kwargsr0r#r#r$r&7s�z Path.__new__NcCs|dur|j|_nt|_dSr,)r��_normal_accessor)r0�templater#r#r$r0As z Path._initcCs|j|g}|�|j|j|�Sr,)rrrr)r0rBr=r#r#r$rJs zPath._make_child_relpathcCs|Sr,r#r/r#r#r$� __enter__PszPath.__enter__cCsdSr,r#)r0�t�v�tbr#r#r$�__exit__Ss z Path.__exit__�cCs|j�|||�Sr,�r�r�)r0r��flagsr�r#r#r$�_opener^sz Path._opener��cCs|j�|||�Sr,r|)r0r}r�r#r#r$� _raw_openbszPath._raw_opencCs |t���Sr,)r|r}�r�r#r#r$�cwdkszPath.cwdcCs||�j�d��Sr,)r-r�r�r#r#r$�homersz Path.homecCsB|��}z |��}Wnty2|j�|�}Yn0tj�||�Sr,)r�r4r�r|r��samestat)r0� other_path�st�other_str#r#r$�samefileys   z Path.samefileccs,|j�|�D]}|dvrq |�|�Vq dS)N>r3r�)r�r�rrPr#r#r$�iterdir�sz Path.iterdirccsnt�d||�|s td�|���|j�|f�\}}}|s<|rDtd��tt|�|j�}|� |�D] }|Vq^dS)Nzpathlib.Path.globzUnacceptable pattern: {!r}�%Non-relative patterns are unsupported) r:�auditr�rr-rEr�r�r(r�r0ryr?r@r��selectorrnr#r#r$�glob�sz Path.globccs`t�d||�|j�|f�\}}}|s*|r2td��tdt|�|j�}|�|�D] }|VqPdS)Nzpathlib.Path.rglobr�)r�)r:r�r-rEr�r�r(rr�r#r#r$�rglob�sz Path.rglobcCs6|��r |S|jt��g|jdd�}|j|d�|S�NFrr�ru)r�r$r|r}rr0)r0�objr#r#r$�absolute�s  z Path.absoluteFcCsZ|jj||d�}|dur,|��t|���}|jj�|�}|j|fdd�}|j|d�|S)N)r�Frrr�) r-r�r�r{r�r��normpathr$r0)r0r�rm�normedr�r#r#r$r��s  z Path.resolvecCs |j�|�Sr,)r�r�r/r#r#r$r��sz Path.statcCs |j�|�Sr,)r�r�r/r#r#r$r��sz Path.ownercCs |j�|�Sr,)r�r�r/r#r#r$r��sz Path.group�rr]c Cstj|||||||jd�S)N)�opener)�ior�r~)r0r�� buffering�encoding�errors�newliner#r#r$r��s�z Path.opencCs8|jdd��}|��Wd�S1s*0YdS)N�rb�r��r��readr7r#r#r$� read_bytes�szPath.read_bytescCs<|jd||d��}|��Wd�S1s.0YdS)Nr��r�r�r�r�)r0r�r�r8r#r#r$� read_text�szPath.read_textcCsBt|�}|jdd��}|�|�Wd�S1s40YdS)N�wbr�)� memoryviewr��write)r0�data�viewr8r#r#r$� write_bytes�szPath.write_bytescCsXt|t�std|jj��|jd||d��}|�|�Wd�S1sJ0YdS)Nzdata must be str, not %s�wr�)r*r{r,r'rMr�r�)r0r�r�r�r8r#r#r$� write_text�s  �zPath.write_textcCs,|j�|�}|j|fdd�}|j|d�|Sr�)r�r�r$r0)r0r�r�r#r#r$r�s  z Path.readlinkTcCsb|r.z|j�|d�Wnty(Yn0dStjtjB}|sH|tjO}|�||�}t�|�dSr,) r�r�r�r|�O_CREAT�O_WRONLY�O_EXCLr��close)r0r��exist_okr}�fdr#r#r$�touchs    z Path.touchcCsxz|j�||�Wn`tyT|r.|j|kr0�|jjddd�|j|d|d�Yn tyr|rl|��sn�Yn0dS)NT)rhr�F)r�r�rrgr�r�)r0r�rhr�r#r#r$r�&s   z Path.mkdircCs|j�||�dSr,)r�r��r0r�r#r#r$r�7sz Path.chmodcCs|j�||�dSr,)r�r�r�r#r#r$r�=sz Path.lchmodcCs.z|j�|�Wnty(|s$�Yn0dSr,)r�r�r)r0� missing_okr#r#r$r�Ds  z Path.unlinkcCs|j�|�dSr,)r�r�r/r#r#r$r�Osz Path.rmdircCs |j�|�Sr,)r�r�r/r#r#r$r�Usz Path.lstatcCs|j�||�|�|�Sr,)r�r�r'r�r#r#r$r�\s z Path.renamecCs|j�||�|�|�Sr,)r�r6r'r�r#r#r$r6is z Path.replacecCs|j�|||�dSr,)r�r�)r0r�r�r#r#r$� symlink_tovszPath.symlink_tocCs|j�||�dSr,)r�r�r�r#r#r$r�}s z Path.link_toc CsTz |��WnBty<}zt|�s&�WYd}~dSd}~0tyNYdS0dS�NFT)r�r�r%r��r0r�r#r#r$r��s  z Path.existsc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r��st_moder�r%r�r�r#r#r$r��s z Path.is_dirc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r�r�r%r�r�r#r#r$�is_file�s z Path.is_filecCsn|��r|��sdSz|j��j}Wnty8YdS0|��j}||krPdS|��j}|j��j}||kSr�)r�r�rgr��st_devr��st_ino)r0� parent_dev�dev�ino� parent_inor#r#r$�is_mount�s    z Path.is_mountc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r�r�r%r�r�r#r#r$r �s zPath.is_symlinkc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r�r�r%r�r�r#r#r$�is_block_device�s zPath.is_block_devicec CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)rr�r�r�r%r�r�r#r#r$�is_char_device�s zPath.is_char_devicec CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)rr�r�r�r%r�r�r#r#r$�is_fifo�s z Path.is_fifoc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r�r�r%r�r�r#r#r$� is_sockets zPath.is_socketcCs`|js\|js\|jr\|jddd�dkr\|j�|jddd��}|�|g|jdd��S|S)NrrG�~)rrrr-r�r$)r0�homedirr#r#r$� expandusers ��zPath.expanduser)N)r{)r)F)r�r]NNN)NN)NN)r{T)rFF)F)F)2rMrNrOrr&r0rrvrzr~r�rnr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r6r�r�r�r�r�r�r r�r�r�r�r�r#r#r#r$r*sf  �         �        rc@seZdZdZdS)rr#N)rMrNrOrr#r#r#r$r*src@seZdZdZdd�ZdS)rr#cCs td��dS)Nz-Path.is_mount() is unsupported on this systemr�r/r#r#r$r�8szWindowsPath.is_mountN)rMrNrOrr�r#r#r#r$r1sr)Art� functoolsr�r�r|r�rrr:�_collections_abcrrrrrrr�operatorrr�r r r r r rr� urllib.parserr�r�r�rZgetwindowsversionr�__all__r r!r%r*r/r+rPr�rqrpr�r�rtr�r�r�r�r�r�r�r�rr�PathLike�registerrrrrrr#r#r#r$�sr  $   ?0iF  ,