a XC?h���@s2ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z mZmZddlmZddlmZmZmZmZmZmZmZddlmZdZgd�Zd Zd Z d Z!e e eefZ"ee e!fZ#d d �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�Z/e0ed��rbe�1�e/�Z/Gdd�d�Z2Gdd �d �Z3Gd!d"�d"e2�Z4Gd#d$�d$e2�Z5Gd%d&�d&e2�Z6Gd'd(�d(e �Z7Gd)d*�d*e&�Z8ej9�:e8�Gd+d,�d,e8�Z;Gd-d.�d.e8�ZGd3d4�d4e=e<�Z?dS)5�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)�PurePath� PurePosixPath�PureWindowsPath�Path� PosixPath� WindowsPath��{i�cCs t|dd�tvpt|dd�tvS)N�errno�winerror)�getattr�_IGNORED_ERROS�_IGNORED_WINERRORS)Z exception�r�,/opt/alt/python39/lib64/python3.9/pathlib.py� _ignore_error(s�r cCsd|vpd|vpd|vS)N�*�?�[r)�patrrr�_is_wildcard_pattern-sr%c@s$eZdZdd�Zdd�Zdd�ZdS)�_FlavourcCs|jj|_dS�N)�sep�join��selfrrr�__init__7sz_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) r+�partsZparsedr(r/�drv�root�it�partZrel�xrrr� parse_parts:s@     z_Flavour.parse_partscCsz|r*|sp|rp||||g|dd�fSnF|rb||ksJ|�|�|�|�krp||||dd�fSn||||fS|||fS�N�)�casefold)r+r9r:r8Zdrv2Zroot2Zparts2rrr�join_parsed_parts`sz_Flavour.join_parsed_partsN)�__name__� __module__� __qualname__r,r>rBrrrrr&3s&r&c@s�eZdZdZdZdZeZej dkZ e d�Z dZ hd�dd �d D�Bd d �d D�BZefd d �Zdd�Zdd�Zdd�Ze fdd�Zdd�Zdd�Zdd�ZdS)�_WindowsFlavour�\�/T�ntZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\>ZNULzCONOUT$ZCONZPRNzCONIN$ZAUXcCsh|] }d|�qS)zCOM%sr��.0�crrr� ��z_WindowsFlavour.u123456789¹²³cCsh|] }d|�qS)zLPT%srrJrrrrM�rNc 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)Nrr@�r-�������:)�_split_extended_path�find�len� drive_letters�lstrip) r+r<r(�first�second�prefixZthird�indexZindex2r9r:rrrr2�s6      "    z_WindowsFlavour.splitrootcCs|��Sr'��lower�r+�srrrrA�sz_WindowsFlavour.casefoldcCsdd�|D�S)NcSsg|] }|���qSrr\)rK�prrr� �rNz2_WindowsFlavour.casefold_parts..r�r+r8rrr�casefold_parts�sz_WindowsFlavour.casefold_partscCst�t�|�tj�jSr')�re�compile�fnmatch� translate� IGNORECASE� fullmatch�r+�patternrrr�compile_pattern�sz_WindowsFlavour.compile_patterncCsXd}|�|�rP|dd�}|dd�}|�d�rP||dd�7}d|dd�}||fS)Nr-�zUNC\rPrG)� startswith)r+r_Z ext_prefixrZrrrrS�s    z$_WindowsFlavour._split_extended_pathcCsJ|sdS|d�d�rdS|d�d�d�d�d�d�}|��|jvS)NFrz\\rQr.rR� )rn� partition�rstrip�upper�reserved_names)r+r8�namerrr� is_reserved�s "z_WindowsFlavour.is_reservedcCsd|j}t|�dkrJ|ddkrJ|��dd��d�}d|t|�d��fSdt|���d��SdS)NrOr@rRrHz file:///%s/%szutf-8zfile:)�driverU�as_posixrW�urlquote_from_bytes�encode)r+�pathrv�restrrr�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) NZ USERPROFILEZHOMEPATHZ HOMEDRIVEr-zCan't determine home directoryZUSERNAMErQ�%Can't determine home directory for %rr@)�os�environ�KeyError� RuntimeErrorr>r))r+�username�userhomer9r:r8rrr� gethomedir�s*     � z_WindowsFlavour.gethomedirN)rCrDrEr(r/�has_drv�ntpath�pathmodr~rt� is_supported�setrVZext_namespace_prefixrsr2rArcrlrSrur|r�rrrrrFrs*  � �� '   rFc@sbeZdZdZdZdZeZej dkZ efdd�Z dd�Z d d �Z d d �Zd d�Zdd�Zdd�ZdS)� _PosixFlavourrHr-FrIcCsV|rH|d|krH|�|�}t|�t|�dkrz tjdWSty:ddl}|�t���jYS0n6ddl}z|�|�jWStyrtd|��Yn0dS)N�HOMErr}) r~rr��pwd�getpwuid�getuid�pw_dir�getpwnamr�)r+r�r�rrrr�.s   �z_PosixFlavour.gethomedirN)rCrDrEr(r/r�� posixpathr�r~rtr�r2rArcrlrur|r�rrrrr�s  r�c@s eZdZdS)� _AccessorN)rCrDrErrrrr�Bsr�c@s�eZdZejZejZejZejZejZej Z e ed�r>ej Z ndd�Z ej Z ej Z e ed�rdejZn edd��ZejZejZejZe ed�r�ejZn dd d �ZejZd d �Zd d�Zdd�ZejZeejj�Zeejj�ZdS)�_NormalAccessor�lchmodcCs td��dS)Nz%lchmod() not available on this system��NotImplementedError)r+Zpathobj�moderrrr�Xsz_NormalAccessor.lchmod�linkcCs td��dS)Nz&os.link() not available on this systemr��r+�targetrrr�link_tobsz_NormalAccessor.link_to�symlinkFcCs td��dS)Nz)os.symlink() not available on this systemr�)r+�srcZdst�target_is_directoryrrrr�osz_NormalAccessor.symlinkcCs t�|�Sr')r~�readlink�r+rzrrrr�usz_NormalAccessor.readlinkcCs>zddl}|�|�|�j�jWSty8td��Yn0dS)Nrz*Path.owner() is unsupported on this system)r�r��stat�st_uidZpw_name� ImportErrorr�)r+rzr�rrr�ownerxs  z_NormalAccessor.ownercCs>zddl}|�|�|�j�jWSty8td��Yn0dS)Nrz*Path.group() is unsupported on this system)�grpZgetgrgidr��st_gidZgr_namer�r�)r+rzr�rrr�groups  z_NormalAccessor.groupN)F)rCrDrEr~r��lstat�open�listdir�scandir�chmod�hasattrr��mkdir�unlinkr�r�� staticmethod�rmdir�renamer1r��utimer�r�r��getcwdrz� expanduser�realpathrrrrr�Gs8      r�cCsR|d}|dd�}|dkr"t}n$d|vr4td��nt|�rBt}nt}||||�S)Nrr@�**z:Invalid pattern: '**' can only be an entire path component)�_RecursiveWildcardSelector� ValueErrorr%�_WildcardSelector�_PreciseSelector)� pattern_parts�flavourr$� child_parts�clsrrr�_make_selector�s  r�� lru_cachec@seZdZdd�Zdd�ZdS)� _SelectorcCs0||_|rt||�|_d|_nt�|_d|_dS�NTF)r�r�� successor�dironly�_TerminatingSelector)r+r�r�rrrr,�s  z_Selector.__init__cCs<t|�}|j}|j}|jj}||�s,tg�S|�||||�Sr')�type�is_dir�exists� _accessorr��iter� _select_from)r+� parent_pathZpath_clsr�r�r�rrr� select_from�sz_Selector.select_fromN)rCrDrEr,r�rrrrr��s r�c@seZdZdd�ZdS)r�ccs |VdSr'r)r+r�r�r�r�rrrr��sz!_TerminatingSelector._select_fromN)rCrDrEr�rrrrr��sr�c@seZdZdd�Zdd�ZdS)r�cCs||_t�|||�dSr')rtr�r,)r+rtr�r�rrrr,�sz_PreciseSelector.__init__ccsZz@|�|j�}|jr|n||�r>|j�||||�D] }|Vq2WntyTYdS0dSr')�_make_child_relpathrtr�r�r��PermissionError)r+r�r�r�r�rzr`rrrr��s   z_PreciseSelector._select_fromN�rCrDrEr,r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)r�cCs|�|�|_t�|||�dSr')rl�matchr�r,�r+r$r�r�rrrr,�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��OSErrorr rtr�r�r�r�r�) r+r�r�r�r�� scandir_it�entries�entry�ertrzr`rrrr��s& &"   z_WildcardSelector._select_fromNr�rrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)r�cCst�|||�dSr')r�r,r�rrrr,�sz#_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)�formatr�rCr*rrr�__repr__7sz_PathParents.__repr__N)rCrDrE� __slots__r,r�r�r�rrrrr�s r�c@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)r�r�r��_str�_hash�_pparts�_cached_cpartscGs$|turtjdkrtnt}|�|�S)NrI)rr~rtrr� _from_parts)r��argsrrr�__new__IszPurePath.__new__cCs|jt|j�fSr')� __class__�tupler�r*rrr� __reduce__SszPurePath.__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) � isinstancerr�r~�fspath�strr4� TypeErrorr��_flavourr>)r�r�r8�arrr� _parse_argsXs    ��zPurePath._parse_argsTcCs<t�|�}|�|�\}}}||_||_||_|r8|��|Sr')�objectr�r�r�r�r��_init)r�r��initr+r9r:r8rrrr�ls zPurePath._from_partscCs,t�|�}||_||_||_|r(|��|Sr')r�r�r�r�r�r�)r�r9r:r8rr+rrrr�ys zPurePath._from_parsed_partscCs4|s|r$|||j�|dd��S|j�|�SdSr?)r�r))r�r9r:r8rrr�_format_parsed_parts�szPurePath._format_parsed_partscCsdSr'rr*rrrr��szPurePath._initcCs@|�|�\}}}|j�|j|j|j|||�\}}}|�|||�Sr')r�r�rBr�r�r�r�)r+r�r9r:r8rrr� _make_child�s � zPurePath._make_childcCs@z|jWSty:|�|j|j|j�p,d|_|jYS0dS)Nr.)r��AttributeErrorrr�r�r�r*rrr�__str__�s  ��zPurePath.__str__cCst|�Sr')r�r*rrr� __fspath__�szPurePath.__fspath__cCs|j}t|��|jd�S)NrH)r�r�r1r(�r+�frrrrw�szPurePath.as_posixcCs t�|�Sr')r~�fsencoder*rrr� __bytes__�szPurePath.__bytes__cCsd�|jj|���S)Nz{}({!r}))r�r�rCrwr*rrrr��szPurePath.__repr__cCs|��std��|j�|�S)Nz.relative path can't be expressed as a file URI)� is_absoluter�r�r|r*rrr�as_uri�szPurePath.as_uricCs6z|jWSty0|j�|j�|_|jYS0dSr')r�rr�rcr�r*rrr�_cparts�s  zPurePath._cpartscCs&t|t�stS|j|jko$|j|juSr')r�r�NotImplementedr r��r+�otherrrr�__eq__�s zPurePath.__eq__cCs6z|jWSty0tt|j��|_|jYS0dSr')r�r�hashr�r r*rrr�__hash__�s  zPurePath.__hash__cCs&t|t�r|j|jurtS|j|jkSr'�r�rr�r r rrrr�__lt__�szPurePath.__lt__cCs&t|t�r|j|jurtS|j|jkSr'rrrrr�__le__�szPurePath.__le__cCs&t|t�r|j|jurtS|j|jkSr'rrrrr�__gt__�szPurePath.__gt__cCs&t|t�r|j|jurtS|j|jkSr'rrrrr�__ge__�szPurePath.__ge__cCs|Sr'r)r�r�rrr�__class_getitem__�szPurePath.__class_getitem__r�z.The drive prefix (letter or UNC path), if any.)�docr�zThe root of the path, if any.cCs|j|j}|Sr')r�r�)r+�anchorrrrr�s zPurePath.anchorcCs.|j}t|�|js|jrdndkr&dS|dS)Nr@rr-rQ)r�rUr�r�rbrrrrt�sz PurePath.namecCsD|j}|�d�}d|kr,t|�dkr.r@)rt�endswithrWr3�r+rtrrr�suffixess   zPurePath.suffixescCsD|j}|�d�}d|kr,t|�dkrr(r/rUr�r�r�r�)r+rtr9r:r8rrr� with_names�� �  �zPurePath.with_namecCs|�||j�Sr')r%r)r+r#rrr� with_stem%szPurePath.with_stemcCs�|j}|j|vs |jr.|j|vr.td|f��|r<|�d�rD|dkrPtd|��|j}|shtd|f��|j}|s|||}n|dt|� �|}|�|j |j |j dd�|g�S)NzInvalid suffix %rr.r$rQ) r�r(r/r�rnrtrrUr�r�r�r�)r+rrrtZ old_suffixrrr� with_suffix)s   �zPurePath.with_suffixc Gs�|s td��|j}|j}|j}|r8||g|dd�}n|}|�|�\}}}|rf||g|dd�} n|} t| �} |jj} | dkr�|s�|r�n| |d| ��| | �kr�|�|||�} t d� t |�t | ����|� d| dkr�|nd|| d��S)Nzneed at least one argumentr@rzU{!r} is not in the subpath of {!r} OR one path is relative and the other is absolute.r-) r�r�r�r�r�rUr�rcrr�r�r�r�) r+rr8r9r:Z abs_partsZto_drvZto_rootZto_partsZ to_abs_parts�n�cfZ formattedrrr� relative_to>s, * � �zPurePath.relative_tocGs*z|j|�WdSty$YdS0dSr�)r*r�rrrr�is_relative_to_s   zPurePath.is_relative_tocCs2z|jWSty,t|j�|_|jYS0dSr')r�rr�r�r*rrrr8hs   zPurePath.partscGs |�|�Sr')r)r+r�rrr�joinpathtszPurePath.joinpathcCs*z|�|f�WSty$tYS0dSr')rr�r �r+�keyrrr� __truediv__|s zPurePath.__truediv__cCs0z|�|g|j�WSty*tYS0dSr')r�r�r�r r-rrr� __rtruediv__�s zPurePath.__rtruediv__cCs@|j}|j}|j}t|�dkr*|s&|r*|S|�|||dd��S)Nr@rQ)r�r�r�rUr�)r+r9r:r8rrr�parent�s zPurePath.parentcCst|�Sr')r�r*rrr�parents�szPurePath.parentscCs|js dS|jj pt|j�Sr�)r�r�r��boolr�r*rrrr �szPurePath.is_absolutecCs|j�|j�Sr')r�rur�r*rrrru�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 patternFr@T) r�rAr>r�r�r�r rU�zipr0rfZ fnmatchcase) r+Z path_patternr)r9r:Z pat_partsr8r<r$rrrr��s( zPurePath.matchN)T)T)2rCrDrEr�r�r�� classmethodr�r�r�rr�rrrrwr r�r �propertyr rrrrrrrrrvr:rrtrr"r#r%r&r'r*r+r8r,r/r0r1r2r rur�rrrrr;sz        ��      !    rc@seZdZeZdZdS)rrN)rCrDrE�_posix_flavourr�r�rrrrr�src@seZdZeZdZdS)rrN)rCrDrE�_windows_flavourr�r�rrrrr�src@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)NrIF�rz$cannot instantiate %r on your system) rr~rtrrr�r�r�r�rCr�)r�r��kwargsr+rrrr��s�z Path.__new__NcCs|dur|j|_nt|_dSr')r��_normal_accessor)r+�templaterrrr��s z Path._initcCs|j|g}|�|j|j|�Sr')r�r�r�r�)r+r<r8rrrr��s zPath._make_child_relpathcCs|Sr'rr*rrr� __enter__�szPath.__enter__cCsdSr'r)r+�t�v�tbrrr�__exit__s z Path.__exit__�cCs|j�|||�Sr'�r�r�)r+rt�flagsr�rrr�_opener sz Path._opener��cCs|j�|||�Sr'rC)r+rDr�rrr� _raw_openszPath._raw_opencCs |t���Sr')r~r��r�rrr�cwdszPath.cwdcCs||�j�d��Sr')r�r�rHrrr�home sz Path.homecCsB|��}z |��}Wnty2|j�|�}Yn0tj�||�Sr')r�rr�r~rz�samestat)r+Z other_path�stZother_strrr�samefile's   z Path.samefileccs,|j�|�D]}|dvrq |�|�Vq dS)N>z..r.)r�r�r�r!rrr�iterdir2sz Path.iterdirccsnt�d||�|s td�|���|j�|f�\}}}|s<|rDtd��tt|�|j�}|� |�D] }|Vq^dS)Nzpathlib.Path.globzUnacceptable pattern: {!r}�%Non-relative patterns are unsupported) r5�auditr�r�r�r>r�r�r�r��r+rkr9r:r�Zselectorr`rrr�glob<sz Path.globccs`t�d||�|j�|f�\}}}|s*|r2td��tdt|�|j�}|�|�D] }|VqPdS)Nzpathlib.Path.rglobrO)r�)r5rPr�r>r�r�r�r�rQrrr�rglobJsz Path.rglobcCs6|��r |S|jt��g|jdd�}|j|d�|S�NFr9)r<)r r�r~r�r�r�)r+�objrrr�absoluteWs  z Path.absoluteFc Cs�dd�}z|jj||d�}Wn.tyJ}z||��WYd}~n d}~00|�|f�}|s�z |��Wn,ty�}z||�WYd}~n d}~00|S)NcSs0t|dd�}|jtks|tkr,td|j��dS)NrrzSymlink loop from %r)rrr�_WINERROR_CANT_RESOLVE_FILENAMEr��filename)r�rrrr� check_eloopns z!Path.resolve..check_eloop)�strict)r�r�r�r�r�)r+rZrYr_r�r`rrr�resolvegs  z Path.resolvecCs |j�|�Sr')r�r�r*rrrr��sz Path.statcCs |j�|�Sr')r�r�r*rrrr��sz Path.ownercCs |j�|�Sr')r�r�r*rrrr��sz Path.group�rrQc Cstj|||||||jd�S)N)Zopener)�ior�rE)r+r�� buffering�encoding�errors�newlinerrrr��s�z Path.opencCs8|jdd��}|��Wd�S1s*0YdS)N�rb�r��r��readrrrr� read_bytes�szPath.read_bytescCs<|jd||d��}|��Wd�S1s.0YdS)Nr\�r�r_r`rd)r+r_r`rrrr� read_text�szPath.read_textcCsBt|�}|jdd��}|�|�Wd�S1s40YdS)N�wbrc)� memoryviewr��write)r+�dataZviewrrrr� write_bytes�szPath.write_bytescCsXt|t�std|jj��|jd||d��}|�|�Wd�S1sJ0YdS)Nzdata must be str, not %s�wrg)r�r�r�r�rCr�rk)r+rlr_r`rrrr� write_text�s  �zPath.write_textcCs,|j�|�}|j|fdd�}|j|d�|SrT)r�r�r�r�)r+rzrUrrrr��s  z Path.readlinkTcCsb|r.z|j�|d�Wnty(Yn0dStjtjB}|sH|tjO}|�||�}t�|�dSr') r�r�r�r~�O_CREAT�O_WRONLY�O_EXCLrG�close)r+r��exist_okrD�fdrrr�touch�s    z Path.touchcCsxz|j�||�Wn`tyT|r.|j|kr0�|jjddd�|j|d|d�Yn tyr|rl|��sn�Yn0dS)NT)r2rtF)r�r��FileNotFoundErrorr1r�r�)r+r�r2rtrrrr��s   z Path.mkdircCs|j�||�dSr')r�r��r+r�rrrr��sz Path.chmodcCs|j�||�dSr')r�r�rxrrrr��sz Path.lchmodcCs.z|j�|�Wnty(|s$�Yn0dSr')r�r�rw)r+Z missing_okrrrr��s  z Path.unlinkcCs|j�|�dSr')r�r�r*rrrr�sz Path.rmdircCs |j�|�Sr')r�r�r*rrrr� sz Path.lstatcCs|j�||�|�|�Sr')r�r�r�r�rrrr�s z Path.renamecCs|j�||�|�|�Sr')r�r1r�r�rrrr1!s z Path.replacecCs|j�|||�dSr')r�r�)r+r�r�rrr� symlink_to.szPath.symlink_tocCs|j�||�dSr')r�r�r�rrrr�5s z Path.link_toc CsTz |��WnBty<}zt|�s&�WYd}~dSd}~0tyNYdS0dS�NFT)r�r�r r��r+r�rrrr�Cs  z Path.existsc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r��st_moder�r r�r{rrrr�Rs z Path.is_dirc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r|r�r r�r{rrr�is_filebs z Path.is_filecCsn|��r|��sdSz|j��j}Wnty8YdS0|��j}||krPdS|��j}|j��j}||kSrz)r�r�r1r��st_devr��st_ino)r+Z parent_devZdevZinoZ parent_inorrr�is_mountss    z Path.is_mountc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r|r�r r�r{rrrr��s zPath.is_symlinkc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r|r�r r�r{rrr�is_block_device�s zPath.is_block_devicec CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)rr�r|r�r r�r{rrr�is_char_device�s zPath.is_char_devicec CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)rr�r|r�r r�r{rrr�is_fifo�s z Path.is_fifoc CsXzt|��j�WSty@}zt|�s*�WYd}~dSd}~0tyRYdS0dSr�)r r�r|r�r r�r{rrr� is_socket�s zPath.is_socketcCs`|js\|js\|jr\|jddd�dkr\|j�|jddd��}|�|g|jdd��S|S)Nrr@�~)r�r�r�r�r�r�)r+Zhomedirrrrr��s ��zPath.expanduser)N)rB)rF)F)r\rQNNN)NN)NN)rBT)rFFF)F)F)2rCrDrEr�r�r�r�r=rArErGr5rIrJrMrNrRrSrVr[r�r�r�r�rfrhrmror�rvr�r�r�r�r�r�r�r1ryr�r�r�r}r�r�r�r�r�r�r�rrrrr�sf  �         �        rc@seZdZdZdS)rrN)rCrDrEr�rrrrr�src@seZdZdZdd�ZdS)rrcCs td��dS)Nz-Path.is_mount() is unsupported on this systemr�r*rrrr��szWindowsPath.is_mountN)rCrDrEr�r�rrrrr�sr)@rf� functoolsr]r�r~r�rdr5�_collections_abcrrrrrrr�operatorrr�r r r r r rrZ urllib.parserrxZsupports_symlinks�__all__Z_WINERROR_NOT_READYZ_WINERROR_INVALID_NAMErWrrr r%r�r&rFr�r8r7r�r�r;r�r�r�r�r�r�r�r�r�r�PathLike�registerrrrrrrrrr�sp  $   �?9F  ,