3 �L�j���@s$ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z mZmZmZddlmZddlmZmZmZmZmZmZmZddlmZdZd d d d d dgZdZ dZ!dZ"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-e.ed ��rTej/�e-�Z-Gd!d"�d"�Z0Gd#d$�d$�Z1Gd%d&�d&e0�Z2Gd'd(�d(e0�Z3Gd)d*�d*e0�Z4Gd+d,�d,e �Z5Gd-d �d e$�Z6ej7j8e6�Gd.d �d e6�Z9Gd/d �d e6�Z:Gd0d �d e6�Z;Gd1d �d e;e9�Zssz_WindowsFlavour.�a�zr7ccs|]}t|�VqdS)N)rA)rBr5rrrrCts�A�Zz\\?\ZCONZPRNZAUXZNULcCsh|] }d|�qS)zCOM%dr)rB�irrr� zsz_WindowsFlavour.� cCsh|] }d|�qS)zLPT%dr)rBrHrrrrI{sc Csb|dd�}|dd�}||krP||krP|j|�\}}|dd�}|dd�}nd}|dd�}||kov||kov||k�r|j|d�}|dk�r|j||d�}||dk�r|dkr�t|�}|r�||d|�|||dd�fS|d|�|||dd�fSd} } |dk�r<||jk�r<|dd�} |dd�}|}||k�rT|} |j|�}|| | |fS) Nrr7�r%��:�����rN)�_split_extended_path�find�len� drive_letters�lstrip) r#r4r!�first�second�prefixZthird�indexZindex2r1r2rrrr*�s6      "    z_WindowsFlavour.splitrootcCs|j�S)N)�lower)r#�srrrr8�sz_WindowsFlavour.casefoldcCsdd�|D�S)NcSsg|] }|j��qSr)rX)rB�prrr� �sz2_WindowsFlavour.casefold_parts..r)r#r0rrr�casefold_parts�sz_WindowsFlavour.casefold_partscCsXd}|j|�rP|dd�}|dd�}|jd�rP||dd�7}d|dd�}||fS)Nr%�zUNC\rLr>)� startswith)r#rYZ ext_prefixrVrrrrO�s    z$_WindowsFlavour._split_extended_pathcCs6|sdS|djd�rdS|djd�dj�|jkS)NFrz\\r7r&rN)r^� partition�upper�reserved_names)r#r0rrr� is_reserved�s z_WindowsFlavour.is_reservedcCsd|j}t|�dkrJ|ddkrJ|j�dd�jd�}d|t|jd��fSdt|j�jd��SdS)NrKr7rMr?z file:///%s/%szutf-8zfile:)�driverQ�as_posixrS�urlquote_from_bytes�encode)r#�pathrc�restrrr�make_uri�s z_WindowsFlavour.make_uric Cs�dtjkrtjd}n`dtjkr,tjd}nJdtjkrnytjd}Wntk r\d}YnX|tjd}ntd��|r�tjd|kr�|j|f�\}}}|d tjdkr�td |��||d <|s�|r�|||j|dd��}n |j|�}|S) N�HOMEZ USERPROFILEZHOMEPATHZ HOMEDRIVEr%zCan't determine home directoryZUSERNAMEr7z%Can't determine home directory for %rrNrN)�os�environ�KeyError� RuntimeErrorr6r")r#�username�userhomer1r2r0rrr� gethomedir�s,       z_WindowsFlavour.gethomedirN)r:r;r<r!r'�has_drv�ntpath�pathmodrk�name� is_supported�set�range�ordrRZext_namespace_prefixrar*r8r\rOrbrirqrrrrr=gs" "& '   r=c@sZeZdZdZdZdZeZej dkZ efdd�Z dd�Z d d �Z d d �Zd d�Zdd�ZdS)� _PosixFlavourr?r%Fr@cCsV|rH|d|krH|j|�}t|�t|�dkr.wrapped)� functools�wraps� staticmethod)r�r�r)r�r� _wrap_strfunc3sz_NormalAccessor._wrap_strfunccstj���fdd��}t|�S)Ncs�t|�t|�f|��S)N)r�)ZpathobjAZpathobjBr�)r�rrr�:sz5_NormalAccessor._wrap_binary_strfunc..wrapped)r�r�r�)r�r�r)r�r�_wrap_binary_strfunc9sz$_NormalAccessor._wrap_binary_strfunc�lchmodcCs td��dS)Nz%lchmod() not available on this system)�NotImplementedError)r#r��moderrrr�Nsz_NormalAccessor.lchmod�symlinkFcCs td��dS)Nz)os.symlink() not available on this system)r�)r#�src�dst�target_is_directoryrrrr�^sz_NormalAccessor.symlinkcCs tj|�S)N)rk�readlink)r#rgrrrr�esz_NormalAccessor.readlinkN)F)r:r;r<r�r�rk�stat�lstat�open�listdir�scandir�chmod�hasattrr��mkdir�unlink�rmdir�renamer)r��utimer��getcwdr�rg� expanduser�realpathrrrrr�1s0                 r�cCsP|d}|dd�}|dkr"t}n$d|kr4td��nt|�rBt}nt}|||�S)Nrr7z**z:Invalid pattern: '**' can only be an entire path component)�_RecursiveWildcardSelector� ValueErrorr�_WildcardSelector�_PreciseSelector)� pattern_partsr� child_parts�clsrrr�_make_selectorvs  r�� lru_cachec@seZdZdd�Zdd�ZdS)� _SelectorcCs.||_|rt|�|_d|_nt�|_d|_dS)NTF)r�r�� successor�dironly�_TerminatingSelector)r#r�rrrr$�s  z_Selector.__init__cCs<t|�}|j}|j}|jj}||�s,tg�S|j||||�S)N)�type�is_dir�exists� _accessorr��iter� _select_from)r#� parent_pathZpath_clsr�r�r�rrr� select_from�sz_Selector.select_fromN)r:r;r<r$r�rrrrr��s r�c@seZdZdd�ZdS)r�ccs |VdS)Nr)r#r�r�r�r�rrrr��sz!_TerminatingSelector._select_fromN)r:r;r<r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)r�cCs||_tj||�dS)N)rur�r$)r#rur�rrrr$�sz_PreciseSelector.__init__c cs^yD|j|j�}|jr|n||�rBx |jj||||�D] }|Vq4WWntk rXdSXdS)N)�_make_child_relpathrur�r�r��PermissionError)r#r�r�r�r�rgrZrrrr��s z_PreciseSelector._select_fromN)r:r;r<r$r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)r�cCs"tjtj|��|_tj||�dS)N)�re�compile�fnmatch� translaterr�r$)r#rr�rrrr$�sz_WildcardSelector.__init__c cs�y||jj}t||��}xb|D]Z}|j s0|j�r|j}||�} |jj| �r|j|�} x |j j | |||�D] } | VqhWqWWnt k r�dSXdS)N) �_flavourr8�listr�r�rur�matchr�r�r�r�) r#r�r�r�r��cf�entries�entryruZ casefoldedrgrZrrrr��s    z_WildcardSelector._select_fromN)r:r;r<r$r�rrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)r�cCstj||�dS)N)r�r$)r#rr�rrrr$�sz#_RecursiveWildcardSelector.__init__c csz|VyZt||��}xH|D]@}|j�r|j� r|j|j�}x|j|||�D] }|VqLWqWWntk rtdSXdS)N)r�r�� is_symlinkr�ru�_iterate_directoriesr�)r#r�r�r�r�r�rgrZrrrr��s   z/_RecursiveWildcardSelector._iterate_directoriesc cs�yjt�}zT|jj}xF|j|||�D]4}x.|||||�D]}||kr6|V|j|�q6Wq"WWd|j�XWntk r~dSXdS)N)rwr�r�r��add�clearr�) r#r�r�r�r�ZyieldedZsuccessor_selectZstarting_pointrZrrrr��sz'_RecursiveWildcardSelector._select_fromN)r:r;r<r$r�r�rrrrr��s r�c@s0eZdZdZdd�Zdd�Zd d �Zd d �Zd S)� _PathParents�_pathcls�_drv�_root�_partscCs&t|�|_|j|_|j|_|j|_dS)N)r�r�r�r�r�)r#rgrrrr$�s z_PathParents.__init__cCs(|js |jrt|j�dSt|j�SdS)Nr7)r�r�rQr�)r#rrr�__len__�s z_PathParents.__len__cCs@|dks|t|�krt|��|jj|j|j|jd| d��S)Nrr7)rQ� IndexErrorr��_from_parsed_partsr�r�r�)r#�idxrrr� __getitem__sz_PathParents.__getitem__cCsdj|jj�S)Nz <{}.parents>)�formatr�r:)r#rrr�__repr__ sz_PathParents.__repr__N)r�r�r�r�)r:r;r<� __slots__r$r�r�r�rrrrr��s r�c@s�eZdZdYZdd �Zd d �Zed d ��ZedZdd��Zed[dd��Z edd��Z dd�Z dd�Z dd�Z dd�Zdd�Zdd �Zd!d"�Zd#d$�Zed%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zeed�d3d4�Zeed�d5d4�Zed6d7��Zed8d9��Zed:d;��Z edd?��Z"d@dA�Z#dBdC�Z$dDdE�Z%edFdG��Z&dHdI�Z'dJdK�Z(dLdM�Z)edNdO��Z*edPdQ��Z+dRdS�Z,dTdU�Z-dVdW�Z.dXS)\rr�r�r��_str�_hash�_pparts�_cached_cpartscGs$|tkrtjdkrtnt}|j|�S)Nr@)rrkrurr� _from_parts)r�r�rrr�__new__szPurePath.__new__cCs|jt|j�fS)N)� __class__�tupler�)r#rrr� __reduce__&szPurePath.__reduce__cCshg}xV|D]N}t|t�r$||j7}q tj|�}t|t�rH|jt|��q tdt|���q W|j j |�S)NzNargument should be a str object or an os.PathLike object returning str, not %r) � isinstancerr�rk�fspathr�r,� TypeErrorr�r�r6)r�r�r0rDrrr� _parse_args+s     zPurePath._parse_argsTcCs<tj|�}|j|�\}}}||_||_||_|r8|j�|S)N)�objectr�r�r�r�r��_init)r�r��initr#r1r2r0rrrr�?s zPurePath._from_partscCs,tj|�}||_||_||_|r(|j�|S)N)r�r�r�r�r�r�)r�r1r2r0r�r#rrrr�Ls zPurePath._from_parsed_partscCs4|s|r$|||jj|dd��S|jj|�SdS)Nr7)r�r")r�r1r2r0rrr�_format_parsed_partsVszPurePath._format_parsed_partscCsdS)Nr)r#rrrr�]szPurePath._initcCs@|j|�\}}}|jj|j|j|j|||�\}}}|j|||�S)N)r�r�r9r�r�r�r�)r#r�r1r2r0rrr� _make_childaszPurePath._make_childc Cs<y|jStk r6|j|j|j|j�p,d|_|jSXdS)Nr&)r��AttributeErrorr�r�r�r�)r#rrr�__str__gs  zPurePath.__str__cCst|�S)N)r�)r#rrr� __fspath__qszPurePath.__fspath__cCs|j}t|�j|jd�S)Nr?)r�r�r)r!)r#�frrrrdtszPurePath.as_posixcCstjt|��S)N)rk�fsencoder�)r#rrr� __bytes__zszPurePath.__bytes__cCsdj|jj|j��S)Nz{}({!r}))r�r�r:rd)r#rrrr�szPurePath.__repr__cCs|j�std��|jj|�S)Nz.relative path can't be expressed as a file URI)� is_absoluter�r�ri)r#rrr�as_uri�szPurePath.as_uric Cs2y|jStk r,|jj|j�|_|jSXdS)N)r�r�r�r\r�)r#rrr�_cparts�s zPurePath._cpartscCs&t|t�stS|j|jko$|j|jkS)N)r�r�NotImplementedr�r�)r#�otherrrr�__eq__�s zPurePath.__eq__c Cs2y|jStk r,tt|j��|_|jSXdS)N)r�r��hashr�r�)r#rrr�__hash__�s zPurePath.__hash__cCs(t|t� s|j|jk rtS|j|jkS)N)r�rr�r�r�)r#r�rrr�__lt__�szPurePath.__lt__cCs(t|t� s|j|jk rtS|j|jkS)N)r�rr�r�r�)r#r�rrr�__le__�szPurePath.__le__cCs(t|t� s|j|jk rtS|j|jkS)N)r�rr�r�r�)r#r�rrr�__gt__�szPurePath.__gt__cCs(t|t� s|j|jk rtS|j|jkS)N)r�rr�r�r�)r#r�rrr�__ge__�szPurePath.__ge__z.The drive prefix (letter or UNC path), if any.)�doczThe root of the path, if any.cCs|j|j}|S)N)r�r�)r#�anchorrrrr��s zPurePath.anchorcCs.|j}t|�|js|jrdndkr&dS|dS)Nr7rr%rN)r�rQr�r�)r#r0rrrru�sz PurePath.namecCsD|j}|jd�}d|ko*t|�dknr<||d�SdSdS)Nr&rr7r%)ru�rfindrQ)r#rurHrrr�suffix�s    zPurePath.suffixcCs:|j}|jd�rgS|jd�}dd�|jd�dd�D�S)Nr&cSsg|] }d|�qS)r&r)rBr�rrrr[�sz%PurePath.suffixes..r7)ru�endswithrSr+)r#rurrr�suffixes�s   zPurePath.suffixescCsD|j}|jd�}d|ko*t|�dknr<|d|�S|SdS)Nr&rr7)rur�rQ)r#rurHrrr�stem�s    z PurePath.stemcCs�|jstd|f��|jj|f�\}}}| sZ|d|jj|jjgksZ|sZ|sZt|�dkrftd|��|j|j|j |j dd�|g�S)Nz%r has an empty namer7zInvalid name %rrNrN) rur�r�r6r!r'rQr�r�r�r�)r#rur1r2r0rrr� with_name�s  zPurePath.with_namecCs�|j}|j|ks |jr,|j|kr,td|��|r<|jd� sD|dkrPtd|��|j}|shtd|f��|j}|s|||}n|dt|� �|}|j|j |j |j dd�|g�S)NzInvalid suffix %rr&z%r has an empty namer7rN) r�r!r'r�r^rur�rQr�r�r�r�)r#r�r�ruZ old_suffixrrr� with_suffix�s    zPurePath.with_suffixc Gs�|s td��|j}|j}|j}|r8||g|dd�}n|}|j|�\}}}|rf||g|dd�} n|} t| �} |jj} | dkr�|p�|n| |d| ��| | �kr�|j|||�} t dj t |�t | ����|j d| dkr�|nd|| d��S)Nzneed at least one argumentr7rz{!r} does not start with {!r}r%) r�r�r�r�r�rQr�r\r�r�r�r�r�) r#r�r0r1r2Z abs_partsZto_drvZto_rootZto_partsZ to_abs_parts�nr�Z formattedrrr� relative_tos( (zPurePath.relative_toc Cs.y|jStk r(t|j�|_|jSXdS)N)r�r�r�r�)r#rrrr0"s  zPurePath.partscGs |j|�S)N)r�)r#r�rrr�joinpath.szPurePath.joinpathcCs |j|f�S)N)r�)r#�keyrrr� __truediv__6szPurePath.__truediv__cCs|j|g|j�S)N)r�r�)r#rrrr� __rtruediv__9szPurePath.__rtruediv__cCs@|j}|j}|j}t|�dkr*|s&|r*|S|j|||dd��S)Nr7rN)r�r�r�rQr�)r#r1r2r0rrr�parent<s zPurePath.parentcCst|�S)N)r�)r#rrr�parentsFszPurePath.parentscCs|js dS|jj pt|j�S)NF)r�r�rr�boolr�)r#rrrr�KszPurePath.is_absolutecCs|jj|j�S)N)r�rbr�)r#rrrrbRszPurePath.is_reservedc Cs�|jj}||�}|jj|f�\}}}|s0td��|rF|||j�krFdS|r\|||j�kr\dS|j}|sj|r�t|�t|�kr~dS|dd�}nt|�t|�kr�dSx.tt |�t |��D]\}}t j ||�s�dSq�WdS)Nz empty patternFr7T) r�r8r6r�r�r�r�rQ�zipr(r�Z fnmatchcase) r#Z path_patternr�r1r2Z pat_partsr0r4rrrrr�Ws( zPurePath.matchN)r�r�r�r�r�r�r�)T)T)/r:r;r<r�r�r�� classmethodr�r�r�r�r�r�r�r�rdr�r�r��propertyr�r�r�r�r�r�r�rrcr2r�rur�rrrrrr0rrr r r r�rbr�rrrrrs\             c@seZdZeZfZdS)rN)r:r;r<�_posix_flavourr�r�rrrrrusc@seZdZeZfZdS)rN)r:r;r<�_windows_flavourr�r�rrrrrsc@s�eZdZd`Zdd�Zdadd�Zdd �Zd d �Zd d �Zdd�Z dbdd�Z dcdd�Z e dd��Z e dd��Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zddd%d&�Zd'd(�Zd)d*�Zd+d,�Zdfd/d0�Zd1d2�Zdgd3d4�Zd5d6�Zdhd7d8�Zdid:d;�Zdjdd?�Zd@dA�Z dBdC�Z!dDdE�Z"dFdG�Z#dHdI�Z$dJdK�Z%dkdLdM�Z&dNdO�Z'dPdQ�Z(dRdS�Z)dTdU�Z*dVdW�Z+dXdY�Z,dZd[�Z-d\d]�Z.d^d_�Z/dS)lrr��_closedcOsL|tkrtjdkrtnt}|j|dd�}|jjs@td|j f��|j �|S)Nr@F)r�z$cannot instantiate %r on your system) rrkrurrr�r�rvr�r:r�)r�r��kwargsr#rrrr��s z Path.__new__NcCs"d|_|dk r|j|_nt|_dS)NF)rr��_normal_accessor)r#�templaterrrr��s z Path._initcCs|j|g}|j|j|j|�S)N)r�r�r�r�)r#r4r0rrrr��s zPath._make_child_relpathcCs|jr|j�|S)N)r� _raise_closed)r#rrr� __enter__�szPath.__enter__cCs d|_dS)NT)r)r#�t�v�tbrrr�__exit__�sz Path.__exit__cCs td��dS)NzI/O operation on closed path)r�)r#rrrr�szPath._raise_closed�cCs|jj|||�S)N)r�r�)r#ru�flagsr�rrr�_opener�sz Path._opener��cCs|jr|j�|jj|||�S)N)rrr�r�)r#rr�rrr� _raw_open�szPath._raw_opencCs |tj��S)N)rkr�)r�rrr�cwd�szPath.cwdcCs||�jjd��S)N)r�rq)r�rrr�home�sz Path.homec CsB|j�}y |j�}Wntk r2tj|�}YnXtjj||�S)N)r�r�rkrg�samestat)r#Z other_path�stZother_strrr�samefile�s  z Path.samefileccsL|jr|j�x8|jj|�D](}|dkr*q|j|�V|jr|j�qWdS)Nr&�..>r&r&)rrr�r�r�)r#rurrr�iterdir�s z Path.iterdirccsl|stdj|���|jj|�}|jj|f�\}}}|s:|rBtd��tt|��}x|j|�D] }|VqZWdS)NzUnacceptable pattern: {!r}z%Non-relative patterns are unsupported) r�r�r�r8r6r�r�r�r�)r#�patternr1r2r��selectorrZrrr�glob�s  z Path.globccs^|jj|�}|jj|f�\}}}|s(|r0td��tdt|��}x|j|�D] }|VqLWdS)Nz%Non-relative patterns are unsupported�**)r+)r�r8r6r�r�r�r�)r#r(r1r2r�r)rZrrr�rglobs z Path.rglobcCsD|jr|j�|j�r|S|jtj�g|jdd�}|j|d�|S)NF)r�)r)rrr�r�rkr�r�r�)r#�objrrr�absolutes z Path.absoluteFcCs�|jr|j�dd�}y|jj||d�}Wn,tk rV}z||��WYdd}~XnX|j|f�}|s�y |j�Wn*tk r�}z||�WYdd}~XnX|S)NcSs0t|dd�}|jtks|tkr,td|j��dS)N�winerrorrzSymlink loop from %r)�getattr�errnor�_WINERROR_CANT_RESOLVE_FILENAMErn�filename)�er/rrr� check_eloop*s z!Path.resolve..check_eloop)�strict)rrr�r��OSErrorr�r�)r#r6r5rYr4rZrrr�resolve!s  z Path.resolvecCs |jj|�S)N)r�r�)r#rrrr�?sz Path.statcCsddl}|j|j�j�jS)Nr)r|r}r��st_uidZpw_name)r#r|rrr�ownerFsz Path.ownercCsddl}|j|j�j�jS)Nr)�grpZgetgrgidr��st_gidZgr_name)r#r;rrr�groupMsz Path.group�rr7c Cs,|jr|j�tjt|�||||||jd�S)N)�opener)rr�ior�r�r)r#r�� buffering�encoding�errors�newlinerrrr�Tsz Path.openc Cs |jdd�� }|j�SQRXdS)N�rb)r�)r��read)r#r�rrr� read_bytes_szPath.read_bytesc Cs$|jd||d�� }|j�SQRXdS)Nr>)r�rBrC)r�rF)r#rBrCr�rrr� read_textfszPath.read_textc Cs*t|�}|jdd�� }|j|�SQRXdS)N�wb)r�)� memoryviewr��write)r#�dataZviewr�rrr� write_bytesmszPath.write_bytesc Cs@t|t�std|jj��|jd||d�� }|j|�SQRXdS)Nzdata must be str, not %s�w)r�rBrC)r�r�r�r�r:r�rK)r#rLrBrCr�rrr� write_textvs   zPath.write_textTc Csr|jr|j�|r>y|jj|d�Wntk r8YnXdStjtjB}|sX|tjO}|j ||�}tj |�dS)N) rrr�r�r7rk�O_CREAT�O_WRONLY�O_EXCLr �close)r#r��exist_okr�fdrrr�touch�s   z Path.touchc Cs�|jr|j�y|jj||�Wnjtk rf| s@|j|krB�|jjddd�|j|d|d�Yn&tk r�| s�|j� r��YnXdS)NT)r rTF)rrr�r��FileNotFoundErrorr r7r�)r#r�r rTrrrr��sz Path.mkdircCs |jr|j�|jj||�dS)N)rrr�r�)r#r�rrrr��sz Path.chmodcCs |jr|j�|jj||�dS)N)rrr�r�)r#r�rrrr��sz Path.lchmodcCs|jr|j�|jj|�dS)N)rrr�r�)r#rrrr��sz Path.unlinkcCs|jr|j�|jj|�dS)N)rrr�r�)r#rrrr��sz Path.rmdircCs|jr|j�|jj|�S)N)rrr�r�)r#rrrr��sz Path.lstatcCs |jr|j�|jj||�dS)N)rrr�r�)r#�targetrrrr��sz Path.renamecCs |jr|j�|jj||�dS)N)rrr�r))r#rXrrrr)�sz Path.replacecCs"|jr|j�|jj|||�dS)N)rrr�r�)r#rXr�rrr� symlink_to�szPath.symlink_tocCsBy |j�Wn0tk r<}z|jttfkr.�dSd}~XnXdS)NFT)r�r7r1rr)r#r4rrrr��s z Path.existscCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)r r��st_moder7r1rr)r#r4rrrr��s z Path.is_dircCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)r r�rZr7r1rr)r#r4rrr�is_file s z Path.is_filecCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)r r�rZr7r1rr)r#r4rrrr�s zPath.is_symlinkcCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)r r�rZr7r1rr)r#r4rrr�is_block_device$s zPath.is_block_devicecCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)rr�rZr7r1rr)r#r4rrr�is_char_device1s zPath.is_char_devicecCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)rr�rZr7r1rr)r#r4rrr�is_fifo>s z Path.is_fifocCsDyt|j�j�Stk r>}z|jttfkr0�dSd}~XnXdS)NF)r r�rZr7r1rr)r#r4rrr� is_socketKs zPath.is_socketcCsb|jp |j r^|jr^|jddd�dkr^|jj|jddd��}|j|g|jdd��S|S)Nrr7�~)r�r�r�r�rqr�)r#Zhomedirrrrr�Xs zPath.expanduser)r�r)N)r)r)FrN)r>rNNNN)NN)NN)rT)rFF)F)0r:r;r<r�r�r�r�rrrrr rr!r"r%r'r*r,r.r8r�r:r=r�rGrHrMrOrVr�r�r�r�r�r�r�r)rYr�r�r[r�r\r]r^r_r�rrrrr�s\                       c@seZdZfZdS)rN)r:r;r<r�rrrrrdsc@s eZdZfZdd�Zdd�ZdS)rcCs td��dS)Nz*Path.owner() is unsupported on this system)r�)r#rrrr:rszWindowsPath.ownercCs td��dS)Nz*Path.group() is unsupported on this system)r�)r#rrrr=uszWindowsPath.groupN)r:r;r<r�r:r=rrrrrks)>r�r�r@rsrkr�r�r-� collectionsr� contextlibrr1rrrr�operatorrr�r r r r r rrZ urllib.parserreZsupports_symlinks�__all__Z_WINERROR_NOT_READYZ_WINERROR_INVALID_NAMEr2rr�r r=rzrrr�r�rr�r�r�r�r�r�r�r�r�r�PathLike�registerrrrrrrrrr�sd   $  ? 6>  %f   [