???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d                     @   sj  d dl Z d dlZd dl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mZmZmZ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Zejdkrd dlZe  dd	 d
krd dlm!Z! qdZdZ!ndZddddddgZ"eeeefZ#dZ$dd Z%dd Z&G dd de'Z(G dd de(Z)G dd de(Z*e) Z+e* Z,G dd dZ-G d d! d!e-Z.e. Z/d"d# Z0e1ed$re2 e0Z0G d%d& d&Z3G d'd( d(Z4G d)d* d*e3Z5G d+d, d,e3Z6G d-d. d.e3Z7G d/d0 d0e	Z8G d1d de'Z9ej:;e9 G d2d de9Z<G d3d de9Z=G d4d de9Z>G d5d de>e<Z?G d6d de>e=Z@dS )7    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  c                 C   s    t | dd tkpt | dd tkS )NerrnoZwinerror)getattr_IGNORED_ERROS_IGNORED_WINERRORS)Z	exception r!   /usr/lib64/python3.8/pathlib.py_ignore_error.   s    r#   c                 C   s   d| kpd| kpd| kS )N*?[r!   )patr!   r!   r"   _is_wildcard_pattern3   s    r(   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Flavourc                 C   s   | j j| _d S N)sepjoinselfr!   r!   r"   __init__=   s    z_Flavour.__init__c                 C   s  g }| j }| j}d }}t|}|D ]}|s.q$|r>|||}| |\}}}	||	krt|	|D ] }
|
rd|
dkrd|t|
 qdn|	r|	dkr|t|	 |s|r$|s|D ]0}|sq|r|||}| |d }|r qq qq$|s|r|||  |	  |||fS )N .r   )
r+   altsepreversedreplace	splitrootsplitappendsysinternreverse)r.   partsZparsedr+   r2   drvrootitpartZrelxr!   r!   r"   parse_parts@   s@    
z_Flavour.parse_partsc                 C   sz   |r*|sp|rp|||| g|dd   fS nF|rb||ksJ|  ||  |krp||||dd   fS n|||| fS |||fS N   )casefold)r.   r<   r=   r;   Zdrv2Zroot2Zparts2r!   r!   r"   join_parsed_partsf   s    z_Flavour.join_parsed_partsN)__name__
__module____qualname__r/   rA   rE   r!   r!   r!   r"   r)   9   s   &r)   c                   @   s   e Zd ZdZdZdZeZej	dkZ
edZdZddd	d
hdd eddD B dd eddD B ZefddZdd Zdd Zdd Zd&ddZefddZdd Zdd  Zd!d" Zd#d$ Zd%S )'_WindowsFlavour\/Tr   Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\ZCONZPRNZAUXZNULc                 C   s   h | ]}d | qS )zCOM%dr!   .0ir!   r!   r"   	<setcomp>   s     z_WindowsFlavour.<setcomp>rC   
   c                 C   s   h | ]}d | qS )zLPT%dr!   rL   r!   r!   r"   rO      s     c                 C   s\  |dd }|dd }||krP||krP|  |\}}|dd }|dd }nd}|dd }||kr||kr||kr||d}|dkr|||d }||d kr|dkrt|}|r||d|  |||d d  fS |d | |||d d  fS d }	}
|dkr6|| jkr6|d d }	|dd  }|}||krN|}
||}||	 |
|fS )Nr   rC   r   r0      :)_split_extended_pathfindlendrive_letterslstrip)r.   r?   r+   firstsecondprefixZthirdindexZindex2r<   r=   r!   r!   r"   r5      s6    "

z_WindowsFlavour.splitrootc                 C   s   |  S r*   lowerr.   sr!   r!   r"   rD      s    z_WindowsFlavour.casefoldc                 C   s   dd |D S )Nc                 S   s   g | ]}|  qS r!   r]   )rM   pr!   r!   r"   
<listcomp>   s     z2_WindowsFlavour.casefold_parts.<locals>.<listcomp>r!   r.   r;   r!   r!   r"   casefold_parts   s    z_WindowsFlavour.casefold_partsc                 C   s   t t|t jjS r*   )recompilefnmatch	translate
IGNORECASE	fullmatchr.   patternr!   r!   r"   compile_pattern   s    z_WindowsFlavour.compile_patternFc                 C   s   t |}|st S d }td k	r|r2| t|S g }z| t|}W nB tk
r   |}tj|\}}|| ||kr| Y S Y q6X tjj	|ft
| S q6d S r*   )strosgetcwdr   _ext_to_normalFileNotFoundErrorpathr6   r7   r,   r3   )r.   rs   strictr`   Z
previous_sZ
tail_partstailr!   r!   r"   resolve   s$    
z_WindowsFlavour.resolvec                 C   sX   d}| |rP|d d }|dd  }| drP||d d 7 }d|dd   }||fS )Nr0      zUNC\rQ   rJ   )
startswith)r.   r`   Z
ext_prefixr[   r!   r!   r"   rT      s    

z$_WindowsFlavour._split_extended_pathc                 C   s   |  |d S rB   )rT   r_   r!   r!   r"   rq      s    z_WindowsFlavour._ext_to_normalc                 C   s6   |sdS |d  drdS |d dd  | jkS )NFr   z\\rR   r1   )rx   	partitionupperreserved_namesrc   r!   r!   r"   is_reserved   s
    z_WindowsFlavour.is_reservedc                 C   sd   |j }t|dkrJ|d dkrJ| dd  d}d|t|df S dt| d S d S )Nr   rC   rS   rK   zfile:///%s/%szutf-8zfile:)driverV   as_posixrX   urlquote_from_bytesencode)r.   rs   r}   restr!   r!   r"   make_uri   s     z_WindowsFlavour.make_uric                 C   s   dt jkrt jd }nJdt jkrXzt jd }W n tk
rF   d}Y nX |t jd  }ntd|rt jd |kr| |f\}}}|d t jd krtd| ||d< |s|r|| | |d	d   }n
| |}|S )
NZUSERPROFILEZHOMEPATHZ	HOMEDRIVEr0   zCan't determine home directoryZUSERNAMErR   %Can't determine home directory for %rrC   )ro   environKeyErrorRuntimeErrorrA   r,   )r.   usernameuserhomer<   r=   r;   r!   r!   r"   
gethomedir   s*    



z_WindowsFlavour.gethomedirN)F)rF   rG   rH   r+   r2   has_drvntpathpathmodro   nameis_supportedsetrW   Zext_namespace_prefixranger{   r5   rD   rd   rm   rv   rT   rq   r|   r   r   r!   r!   r!   r"   rI   x   s.   

'

rI   c                   @   sl   e Zd ZdZdZdZeZej	dkZ
efddZdd Zd	d
 Zdd ZdddZdd Zdd Zdd ZdS )_PosixFlavourrK   r0   Fr   c                 C   sV   |rH|d |krH| |}t|t| dkr<d|d |fS d||fS n
dd|fS d S )Nr   r   r0   )rX   rV   )r.   r?   r+   Zstripped_partr!   r!   r"   r5   %  s    
z_PosixFlavour.splitrootc                 C   s   |S r*   r!   r_   r!   r!   r"   rD   4  s    z_PosixFlavour.casefoldc                 C   s   |S r*   r!   rc   r!   r!   r"   rd   7  s    z_PosixFlavour.casefold_partsc                 C   s   t t|jS r*   )re   rf   rg   rh   rj   rk   r!   r!   r"   rm   :  s    z_PosixFlavour.compile_patternc                    sJ   | j |ji  fdd | r0dnt } |t|pHS )Nc                    s   | rd} |D ]}|r|dkr*q|dkrD| \} }}q| rX| | }n|  | }|kr| } | d k	r~qtd| z|}W n6 tk
r } z|jtkrr |} W 5 d }~X Y qX d |<  | |} | |< q| S )Nr0   r1   ..zSymlink loop from %r)	rx   r6   
rpartitionendswithr   readlinkOSErrorr   r   )rs   r   r   _newpathtargete_resolveZaccessorseenr+   rt   r!   r"   r   A  s4    




z'_PosixFlavour.resolve.<locals>._resolver0   )r+   	_accessoris_absolutero   rp   rn   )r.   rs   rt   baser!   r   r"   rv   =  s    )z_PosixFlavour.resolvec                 C   s   dS NFr!   rc   r!   r!   r"   r|   m  s    z_PosixFlavour.is_reservedc                 C   s   t |}dt| S )Nzfile://)bytesr   )r.   rs   Zbpathr!   r!   r"   r   p  s    z_PosixFlavour.make_uric                 C   s|   |s@zt jd W S  tk
r<   dd l}|t  j Y S X n8dd l}z||jW S  tk
rv   td| Y nX d S )NHOMEr   r   )	ro   r   r   pwdgetpwuidgetuidpw_dirgetpwnamr   )r.   r   r   r!   r!   r"   r   v  s    z_PosixFlavour.gethomedirN)F)rF   rG   rH   r+   r2   r   	posixpathr   ro   r   r   r5   rD   rd   rm   rv   r|   r   r   r!   r!   r!   r"   r     s   

0r   c                   @   s   e Zd ZdS )	_AccessorN)rF   rG   rH   r!   r!   r!   r"   r     s   r   c                   @   s   e Zd ZejZejZejZejZejZej	Z	e
edr>ejZndd ZejZejZe
edrdejZnedd ZejZejZejZererejZqdd Zned	d ZejZd
d ZdS )_NormalAccessorlchmodc                 C   s   t dd S )Nz%lchmod() not available on this systemNotImplementedError)r.   Zpathobjmoder!   r!   r"   r     s    z_NormalAccessor.lchmodlinkc                 C   s   t dd S )Nz&os.link() not available on this systemr   r.   r   r!   r!   r"   link_to  s    z_NormalAccessor.link_toc                 C   s   t dd S )Nz&symlink() not available on this systemr   abtarget_is_directoryr!   r!   r"   symlink  s    z_NormalAccessor.symlinkc                 C   s   t | |S r*   )ro   r   r   r!   r!   r"   r     s    c                 C   s
   t |S r*   )ro   r   r.   rs   r!   r!   r"   r     s    z_NormalAccessor.readlinkN)rF   rG   rH   ro   statlstatopenlistdirscandirchmodhasattrr   mkdirunlinkr   r   staticmethodrmdirrenamer4   r   supports_symlinksr   utimer   r!   r!   r!   r"   r     s4   




r   c                 C   sR   | d }| dd  }|dkr"t }n$d|kr4tdnt|rBt}nt}||||S )Nr   rC   **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                   @   s   e Zd Zdd Zdd ZdS )	_Selectorc                 C   s0   || _ |rt||| _d| _nt | _d| _d S )NTF)r   r   	successordironly_TerminatingSelector)r.   r   r   r!   r!   r"   r/     s    z_Selector.__init__c                 C   s<   t |}|j}|j}|jj}||s,tg S | ||||S r*   )typeis_direxistsr   r   iter_select_from)r.   parent_pathZpath_clsr   r   r   r!   r!   r"   select_from  s    z_Selector.select_fromN)rF   rG   rH   r/   r   r!   r!   r!   r"   r     s   	r   c                   @   s   e Zd Zdd ZdS )r   c                 c   s
   |V  d S r*   r!   )r.   r   r   r   r   r!   r!   r"   r     s    z!_TerminatingSelector._select_fromN)rF   rG   rH   r   r!   r!   r!   r"   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   || _ t| || d S r*   )r   r   r/   )r.   r   r   r   r!   r!   r"   r/      s    z_PreciseSelector.__init__c                 c   s\   z@| | j}| jr|n||r>| j||||D ]
}|V  q2W n tk
rV   Y d S X d S r*   )_make_child_relpathr   r   r   r   PermissionError)r.   r   r   r   r   rs   ra   r!   r!   r"   r     s    z_PreciseSelector._select_fromNrF   rG   rH   r/   r   r!   r!   r!   r"   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   | || _t| || d S r*   )rm   matchr   r/   r.   r'   r   r   r!   r!   r"   r/     s    z_WildcardSelector.__init__c                 c   s   z||}t |}W 5 Q R X |D ]}| jrrz| s:W q"W n4 tk
rp } zt|sX W Y q"W 5 d }~X Y nX |j}	| |	r"||	}
| j	|
|||D ]
}|V  qq"W n t
k
r   Y d S X d S r*   )listr   r   r   r#   r   r   r   r   r   r   )r.   r   r   r   r   
scandir_itentriesentryr   r   rs   ra   r!   r!   r"   r     s&    


z_WildcardSelector._select_fromNr   r!   r!   r!   r"   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C   s   t | || d S r*   )r   r/   r   r!   r!   r"   r/   /  s    z#_RecursiveWildcardSelector.__init__c                 c   s   |V  z||}t |}W 5 Q R X |D ]t}d}z| }W n, tk
rh } zt|sX W 5 d }~X Y nX |r(| s(||j}	| |	||D ]
}
|
V  qq(W n tk
r   Y d S X d S r   )	r   r   r   r#   
is_symlinkr   r   _iterate_directoriesr   )r.   r   r   r   r   r   r   Zentry_is_dirr   rs   ra   r!   r!   r"   r   2  s"    
z/_RecursiveWildcardSelector._iterate_directoriesc           	      c   s~   zbt  }zL| jj}| |||D ]0}|||||D ]}||kr2|V  || q2q W 5 |  X W n tk
rx   Y d S X d S r*   )r   clearr   r   r   addr   )	r.   r   r   r   r   ZyieldedZsuccessor_selectZstarting_pointra   r!   r!   r"   r   E  s    z'_RecursiveWildcardSelector._select_fromN)rF   rG   rH   r/   r   r   r!   r!   r!   r"   r   -  s   r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )_PathParents)_pathcls_drv_root_partsc                 C   s&   t || _|j| _|j| _|j| _d S r*   )r   r   r   r   r   r   r!   r!   r"   r/   ^  s    
z_PathParents.__init__c                 C   s(   | j s| jrt| jd S t| jS d S rB   )r   r   rV   r   r-   r!   r!   r"   __len__e  s    z_PathParents.__len__c                 C   s@   |dk s|t | krt|| j| j| j| jd | d  S )Nr   rC   )rV   
IndexErrorr   _from_parsed_partsr   r   r   )r.   idxr!   r!   r"   __getitem__k  s
    z_PathParents.__getitem__c                 C   s   d | jjS )Nz<{}.parents>)formatr   rF   r-   r!   r!   r"   __repr__q  s    z_PathParents.__repr__N)rF   rG   rH   	__slots__r/   r   r   r   r!   r!   r!   r"   r   Y  s
   r   c                   @   s  e Zd ZdZdd Zdd Zedd ZedUd	d
ZedVddZ	edd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zeed-d.d/Zeed0d1d/Zed2d3 Zed4d5 Zed6d7 Z ed8d9 Z!ed:d; Z"d<d= Z#d>d? Z$d@dA Z%edBdC Z&dDdE Z'dFdG Z(dHdI Z)edJdK Z*edLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTS )Wr   )r   r   r   _str_hash_pparts_cached_cpartsc                 G   s$   | t krtjdkrtnt} | |S )Nr   )r   ro   r   r   r   _from_parts)r   argsr!   r!   r"   __new__  s    zPurePath.__new__c                 C   s   | j t| jfS r*   )	__class__tupler   r-   r!   r!   r"   
__reduce__  s    zPurePath.__reduce__c                 C   sd   g }|D ]N}t |tr"||j7 }qt|}t |trF|t| qtdt| q| j	
|S )NzNargument should be a str object or an os.PathLike object returning str, not %r)
isinstancer   r   ro   fspathrn   r7   	TypeErrorr   _flavourrA   )r   r   r;   r   r!   r!   r"   _parse_args  s    


zPurePath._parse_argsTc                 C   s<   t | }||\}}}||_||_||_|r8|  |S r*   )objectr   r  r   r   r   _init)r   r   initr.   r<   r=   r;   r!   r!   r"   r     s    
zPurePath._from_partsc                 C   s,   t | }||_||_||_|r(|  |S r*   )r  r   r   r   r   r  )r   r<   r=   r;   r  r.   r!   r!   r"   r     s    
zPurePath._from_parsed_partsc                 C   s4   |s|r$|| | j |dd   S | j |S d S rB   )r  r,   )r   r<   r=   r;   r!   r!   r"   _format_parsed_parts  s    zPurePath._format_parsed_partsc                 C   s   d S r*   r!   r-   r!   r!   r"   r    s    zPurePath._initc                 C   s@   |  |\}}}| j| j| j| j|||\}}}| |||S r*   )r  r  rE   r   r   r   r   )r.   r   r<   r=   r;   r!   r!   r"   _make_child  s         
zPurePath._make_childc                 C   sB   z| j W S  tk
r<   | | j| j| jp.d| _ | j  Y S X d S )Nr1   )r   AttributeErrorr	  r   r   r   r-   r!   r!   r"   __str__  s    zPurePath.__str__c                 C   s   t | S r*   )rn   r-   r!   r!   r"   
__fspath__  s    zPurePath.__fspath__c                 C   s   | j }t| |jdS )NrK   )r  rn   r4   r+   r.   fr!   r!   r"   r~     s    zPurePath.as_posixc                 C   s
   t | S r*   )ro   fsencoder-   r!   r!   r"   	__bytes__  s    zPurePath.__bytes__c                 C   s   d | jj|  S )Nz{}({!r}))r   r   rF   r~   r-   r!   r!   r"   r     s    zPurePath.__repr__c                 C   s   |   std| j| S )Nz.relative path can't be expressed as a file URI)r   r   r  r   r-   r!   r!   r"   as_uri  s    zPurePath.as_uric                 C   s8   z| j W S  tk
r2   | j| j| _ | j  Y S X d S r*   )r   r  r  rd   r   r-   r!   r!   r"   _cparts  s
    zPurePath._cpartsc                 C   s&   t |tstS | j|jko$| j|jkS r*   )r  r   NotImplementedr  r  r.   otherr!   r!   r"   __eq__  s    
zPurePath.__eq__c                 C   s8   z| j W S  tk
r2   tt| j| _ | j  Y S X d S r*   )r   r  hashr   r  r-   r!   r!   r"   __hash__  s
    zPurePath.__hash__c                 C   s&   t |tr| j|jk	rtS | j|jk S r*   r  r   r  r  r  r  r!   r!   r"   __lt__  s    zPurePath.__lt__c                 C   s&   t |tr| j|jk	rtS | j|jkS r*   r  r  r!   r!   r"   __le__	  s    zPurePath.__le__c                 C   s&   t |tr| j|jk	rtS | j|jkS r*   r  r  r!   r!   r"   __gt__  s    zPurePath.__gt__c                 C   s&   t |tr| j|jk	rtS | j|jkS r*   r  r  r!   r!   r"   __ge__  s    zPurePath.__ge__r   z.The drive prefix (letter or UNC path), if any.)docr   zThe root of the path, if any.c                 C   s   | j | j }|S r*   )r   r   )r.   anchorr!   r!   r"   r     s    zPurePath.anchorc                 C   s.   | j }t|| js| jrdndkr&dS |d S )NrC   r   r0   rR   )r   rV   r   r   rc   r!   r!   r"   r   $  s    zPurePath.namec                 C   sD   | j }|d}d|  k r,t|d k r<n n||d  S dS d S )Nr1   r   rC   r0   r   rfindrV   r.   r   rN   r!   r!   r"   suffix,  s
    
 zPurePath.suffixc                 C   s:   | j }|drg S |d}dd |ddd  D S )Nr1   c                 S   s   g | ]}d | qS )r1   r!   )rM   r$  r!   r!   r"   rb   E  s     z%PurePath.suffixes.<locals>.<listcomp>rC   )r   r   rX   r6   r.   r   r!   r!   r"   suffixes:  s
    

zPurePath.suffixesc                 C   sD   | j }|d}d|  k r,t|d k r<n n|d | S |S d S )Nr1   r   rC   r!  r#  r!   r!   r"   stemG  s
    
 zPurePath.stemc                 C   s   | j std| f | j|f\}}}|rX|d | jj| jjfksX|sX|sXt|dkrdtd| | | j| j	| j
d d |g S )N%r has an empty namerR   rC   zInvalid name %r)r   r   r  rA   r+   r2   rV   r   r   r   r   )r.   r   r<   r=   r;   r!   r!   r"   	with_nameQ  s    
zPurePath.with_namec                 C   s   | j }|j|ks |jr.|j|kr.td|f |r<|drD|dkrPtd| | j}|shtd| f | j}|s||| }n|d t|  | }| | j	| j
| jd d |g S )NzInvalid suffix %rr1   r(  rR   )r  r+   r2   r   rx   r   r$  rV   r   r   r   r   )r.   r$  r  r   Z
old_suffixr!   r!   r"   with_suffix\  s    
zPurePath.with_suffixc                 G   s   |st d| j}| j}| j}|r8||g|dd   }n|}| |\}}}|rf||g|dd   }	n|}	t|	}
| jj}|
dkr|s|rn||d |
 ||	kr| |||}t	d
t| t|| d|
dkr|nd||
d  S )Nzneed at least one argumentrC   r   z{!r} does not start with {!r}r0   )r  r   r   r   r  rV   r  rd   r	  r   r   rn   r   )r.   r  r;   r<   r=   Z	abs_partsZto_drvZto_rootZto_partsZto_abs_partsncfZ	formattedr!   r!   r"   relative_toq  s.    	* 
zPurePath.relative_toc                 C   s4   z| j W S  tk
r.   t| j| _ | j  Y S X d S r*   )r   r  r   r   r-   r!   r!   r"   r;     s
    zPurePath.partsc                 G   s
   |  |S r*   )r
  )r.   r   r!   r!   r"   joinpath  s    zPurePath.joinpathc                 C   s,   z|  |fW S  tk
r&   t Y S X d S r*   )r
  r  r  r.   keyr!   r!   r"   __truediv__  s    zPurePath.__truediv__c                 C   s2   z|  |g| j W S  tk
r,   t Y S X d S r*   )r   r   r  r  r/  r!   r!   r"   __rtruediv__  s    zPurePath.__rtruediv__c                 C   s@   | j }| j}| j}t|dkr*|s&|r*| S | |||d d S )NrC   rR   )r   r   r   rV   r   )r.   r<   r=   r;   r!   r!   r"   parent  s    zPurePath.parentc                 C   s   t | S r*   )r   r-   r!   r!   r"   parents  s    zPurePath.parentsc                 C   s   | j s
dS | jj pt| jS r   )r   r  r   boolr   r-   r!   r!   r"   r     s    zPurePath.is_absolutec                 C   s   | j | jS r*   )r  r|   r   r-   r!   r!   r"   r|     s    zPurePath.is_reservedc           	      C   s   | j j}||}| j |f\}}}|s0td|rF||| jkrFdS |r\||| jkr\dS | j}|sj|rt|t|kr~dS |dd  }nt|t|krdS tt	|t	|D ]\}}t
||s dS qdS )Nzempty patternFrC   T)r  rD   rA   r   r   r   r  rV   zipr3   rg   Zfnmatchcase)	r.   Zpath_patternr,  r<   r=   Z	pat_partsr;   r?   r'   r!   r!   r"   r     s(    zPurePath.matchN)T)T)/rF   rG   rH   r   r   r   classmethodr  r   r   r	  r  r
  r  r  r~   r  r   r  propertyr  r  r  r  r  r  r  r   r}   r=   r   r   r$  r&  r'  r)  r*  r-  r;   r.  r1  r2  r3  r4  r   r|   r   r!   r!   r!   r"   r   u  st   	

	







	 

	
c                   @   s   e Zd ZeZdZdS )r   r!   N)rF   rG   rH   _posix_flavourr  r   r!   r!   r!   r"   r     s   c                   @   s   e Zd ZeZdZdS )r   r!   N)rF   rG   rH   _windows_flavourr  r   r!   r!   r!   r"   r     s   c                   @   s  e Zd ZdZdd ZdcddZdd Zd	d
 Zdd Zdd Z	ddddZ
deddZedd Zedd Zdd Zdd Zdd Zdd  Zd!d" Zdfd$d%Zd&d' Zd(d) Zd*d+ Zdgd.d/Zd0d1 Zdhd2d3Zd4d5 Zdid6d7Zdjd9d:Zdkd;d<Zd=d> Zd?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 Z1dS )nr   )r   _closedc                 O   sL   | t krtjdkrtnt} | j|dd}|jjs@td| j	f |
  |S )Nr   Fr  z$cannot instantiate %r on your system)r   ro   r   r   r   r   r  r   r   rF   r  )r   r   kwargsr.   r!   r!   r"   r     s    zPath.__new__Nc                 C   s"   d| _ |d k	r|j| _nt| _d S r   )r;  r   _normal_accessor)r.   templater!   r!   r"   r    s    
z
Path._initc                 C   s   | j |g }| | j| j|S r*   )r   r   r   r   )r.   r?   r;   r!   r!   r"   r   #  s    zPath._make_child_relpathc                 C   s   | j r|   | S r*   )r;  _raise_closedr-   r!   r!   r"   	__enter__)  s    zPath.__enter__c                 C   s
   d| _ d S )NT)r;  )r.   tvtbr!   r!   r"   __exit__.  s    zPath.__exit__c                 C   s   t dd S )NzI/O operation on closed path)r   r-   r!   r!   r"   r@  1  s    zPath._raise_closed  c                 C   s   | j | ||S r*   )r   r   )r.   r   flagsr   r!   r!   r"   _opener4  s    zPath._opener  c                 C   s   | j r|   | j| ||S r*   )r;  r@  r   r   )r.   rG  r   r!   r!   r"   	_raw_open8  s    zPath._raw_openc                 C   s   | t  S r*   )ro   rp   r   r!   r!   r"   cwdC  s    zPath.cwdc                 C   s   | |  j d S r*   )r  r   rK  r!   r!   r"   homeJ  s    z	Path.homec                 C   sB   |   }z|  }W n tk
r2   t |}Y nX tj||S r*   )r   r  ro   rs   samestat)r.   Z
other_pathstZother_str!   r!   r"   samefileQ  s    zPath.samefilec                 c   sH   | j r|   | j| D ](}|dkr(q| |V  | j r|   qd S )N>   r1   r   )r;  r@  r   r   r   r%  r!   r!   r"   iterdir\  s    zPath.iterdirc                 c   s`   |st d|| j|f\}}}|s.|r6tdtt|| j}|| D ]
}|V  qPd S )NzUnacceptable pattern: {!r}%Non-relative patterns are unsupported)r   r   r  rA   r   r   r   r   r.   rl   r<   r=   r   Zselectorra   r!   r!   r"   globj  s    z	Path.globc                 c   sR   | j |f\}}}|s|r$tdtdt| | j }|| D ]
}|V  qBd S )NrR  )r   )r  rA   r   r   r   r   rS  r!   r!   r"   rglobw  s    z
Path.rglobc                 C   sD   | j r|   |  r| S | jt g| j dd}|j| d |S )NFr<  r?  )r;  r@  r   r   ro   rp   r   r  )r.   objr!   r!   r"   absolute  s    zPath.absoluteFc                 C   sh   | j r|   | jj| |d}|d kr:|   t|  }| jj|}| j	|fdd}|j
| d |S )N)rt   Fr<  rV  )r;  r@  r  rv   r   rn   rX  r   normpathr   r  )r.   rt   r`   ZnormedrW  r!   r!   r"   rv     s    zPath.resolvec                 C   s   | j | S r*   )r   r   r-   r!   r!   r"   r     s    z	Path.statc                 C   s   dd l }||  jjS Nr   )r   r   r   st_uidZpw_name)r.   r   r!   r!   r"   owner  s    z
Path.ownerc                 C   s   dd l }||  jjS rZ  )grpZgetgrgidr   st_gidZgr_name)r.   r]  r!   r!   r"   group  s    z
Path.grouprrR   c              	   C   s(   | j r|   tj| |||||| jdS )N)Zopener)r;  r@  ior   rH  )r.   r   	bufferingencodingerrorsnewliner!   r!   r"   r     s
    z	Path.openc              
   C   s,   | j dd}| W  5 Q R  S Q R X d S )Nrbr   r   readr  r!   r!   r"   
read_bytes  s    zPath.read_bytesc              
   C   s0   | j d||d}| W  5 Q R  S Q R X d S )Nr`  r   rc  rd  rh  )r.   rc  rd  r  r!   r!   r"   	read_text  s    zPath.read_textc              
   C   s6   t |}| jdd}||W  5 Q R  S Q R X d S )Nwbrg  )
memoryviewr   write)r.   dataZviewr  r!   r!   r"   write_bytes  s    zPath.write_bytesc              
   C   sL   t |tstd|jj | jd||d}||W  5 Q R  S Q R X d S )Nzdata must be str, not %swrk  )r  rn   r  r   rF   r   ro  )r.   rp  rc  rd  r  r!   r!   r"   
write_text  s    
zPath.write_textTc                 C   sr   | j r|   |r>z| j| d  W n tk
r8   Y nX d S tjtjB }|sX|tjO }| 	||}t
| d S r*   )r;  r@  r   r   r   ro   O_CREATO_WRONLYO_EXCLrJ  close)r.   r   exist_okrG  fdr!   r!   r"   touch  s    
z
Path.touchc                 C   s   | j r|   z| j| | W nd tk
rd   |r>| j| kr@ | jjddd | j|d|d Y n" tk
r   |r~|  s Y nX d S )NT)r4  rx  F)r;  r@  r   r   rr   r3  r   r   )r.   r   r4  rx  r!   r!   r"   r     s    z
Path.mkdirc                 C   s    | j r|   | j| | d S r*   )r;  r@  r   r   r.   r   r!   r!   r"   r     s    z
Path.chmodc                 C   s    | j r|   | j| | d S r*   )r;  r@  r   r   r{  r!   r!   r"   r     s    zPath.lchmodc                 C   s>   | j r|   z| j|  W n tk
r8   |s4 Y nX d S r*   )r;  r@  r   r   rr   )r.   Z
missing_okr!   r!   r"   r   %  s    zPath.unlinkc                 C   s   | j r|   | j|  d S r*   )r;  r@  r   r   r-   r!   r!   r"   r   2  s    z
Path.rmdirc                 C   s   | j r|   | j| S r*   )r;  r@  r   r   r-   r!   r!   r"   r   :  s    z
Path.lstatc                 C   s&   | j r|   | j| | | |S r*   )r;  r@  r   r   r   r   r!   r!   r"   r   C  s    
zPath.renamec                 C   s&   | j r|   | j| | | |S r*   )r;  r@  r   r4   r   r   r!   r!   r"   r4   R  s    
zPath.replacec                 C   s"   | j r|   | j|| | d S r*   )r;  r@  r   r   )r.   r   r   r!   r!   r"   
symlink_toa  s    zPath.symlink_toc                 C   s    | j r|   | j| | d S r*   )r;  r@  r   r   r   r!   r!   r"   r   j  s    
zPath.link_toc              
   C   sX   z|    W nF tk
r> } zt|s( W Y dS d }~X Y n tk
rR   Y dS X dS NFT)r   r   r#   r   r.   r   r!   r!   r"   r   z  s    zPath.existsc              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r	   r   st_moder   r#   r   r~  r!   r!   r"   r     s    zPath.is_dirc              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r   r   r  r   r#   r   r~  r!   r!   r"   is_file  s    zPath.is_filec                 C   sv   |   r|  sdS t| j}z| j}W n tk
rB   Y dS X |  j}||krZdS |  j}| j}||kS r}  )r   r   r   r3  r   st_devr   st_ino)r.   r3  Z
parent_devZdevZinoZ
parent_inor!   r!   r"   is_mount  s    



zPath.is_mountc              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r
   r   r  r   r#   r   r~  r!   r!   r"   r     s    zPath.is_symlinkc              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r   r   r  r   r#   r   r~  r!   r!   r"   is_block_device  s    zPath.is_block_devicec              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r   r   r  r   r#   r   r~  r!   r!   r"   is_char_device  s    zPath.is_char_devicec              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r   r   r  r   r#   r   r~  r!   r!   r"   is_fifo  s    zPath.is_fifoc              
   C   s\   zt |  jW S  tk
rB } zt|s, W Y dS d }~X Y n tk
rV   Y dS X d S r   )r   r   r  r   r#   r   r~  r!   r!   r"   	is_socket  s    zPath.is_socketc                 C   s`   | j s\| js\| jr\| jd d d dkr\| j| jd dd  }| |g| jdd   S | S )Nr   rC   ~)r   r   r   r  r   r   )r.   Zhomedirr!   r!   r"   
expanduser  s    zPath.expanduser)N)rF  )rI  )F)r`  rR   NNN)NN)NN)rF  T)rI  FF)F)F)2rF   rG   rH   r   r   r  r   rA  rE  r@  rH  rJ  r7  rL  rM  rP  rQ  rT  rU  rX  rv   r   r\  r_  r   rj  rl  rq  rs  rz  r   r   r   r   r   r   r   r4   r|  r   r   r   r  r  r   r  r  r  r  r  r!   r!   r!   r"   r     sh   	 






    

	



	
	
	c                   @   s   e Zd ZdZdS )r   r!   N)rF   rG   rH   r   r!   r!   r!   r"   r     s   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	r   r!   c                 C   s   t dd S )Nz*Path.owner() is unsupported on this systemr   r-   r!   r!   r"   r\  (  s    zWindowsPath.ownerc                 C   s   t dd S )Nz*Path.group() is unsupported on this systemr   r-   r!   r!   r"   r_  +  s    zWindowsPath.groupc                 C   s   t dd S )Nz-Path.is_mount() is unsupported on this systemr   r-   r!   r!   r"   r  .  s    zWindowsPath.is_mountN)rF   rG   rH   r   r\  r_  r  r!   r!   r!   r"   r   !  s   )Arg   	functoolsra  r   ro   r   re   r8   _collections_abcr   r   r   r   r   r   r   operatorr   r   r	   r
   r   r   r   r   r   Zurllib.parser   r   r   r   r   Zgetwindowsversionr   __all__r   r    r#   r(   r  r)   rI   r   r:  r9  r   r   r>  r   r   r   r   r   r   r   r   r   r   PathLikeregisterr   r   r   r   r   r!   r!   r!   r"   <module>   s|   $
    
? &i8,  t
    