
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jž´  ã               @   s$  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 d dl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d	d
ddddgZdZ dZ!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„ Z-e.ed ƒ�rTej/ƒ e-ƒZ-G d!d"„ d"ƒZ0G d#d$„ d$ƒZ1G d%d&„ d&e0ƒZ2G d'd(„ d(e0ƒZ3G d)d*„ d*e0ƒZ4G d+d,„ d,e	ƒZ5G d-d	„ d	e$ƒZ6ej7j8e6ƒ G d.d
„ d
e6ƒZ9G d/d„ de6ƒZ:G d0d„ de6ƒZ;G d1d„ de;e9ƒZ<G d2d„ de;e:ƒZ=dS )3é    N)ÚSequence)Úcontextmanager)ÚEINVALÚENOENTÚENOTDIRÚ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�  c             C   s   d| kpd| kpd| kS )NÚ*ú?ú[© )Úpatr   r   ú/usr/lib64/python3.6/pathlib.pyÚ_is_wildcard_pattern"   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|ƒ}xÒ|D ]Ê}|s0q&|r@|j||ƒ}| j|ƒ\}}}	||	krŽxPt|	j|ƒƒD ] }
|
rh|
dkrh|jtj|
ƒƒ qhW n|	rª|	dkrª|jtj|	ƒƒ |s²|r&|sîx6|D ].}|sÆq¼|rÖ|j||ƒ}| j|ƒd }|r¼P q¼W P q&W |�s |�r|j|| ƒ |j	ƒ  |||fS )NÚ Ú.r   )
r!   ÚaltsepÚreversedÚreplaceÚ	splitrootÚsplitÚappendÚsysÚinternÚreverse)r#   ÚpartsZparsedr!   r'   ÚdrvÚrootÚitÚpartZrelÚxr   r   r   Úparse_parts/   s@    

z_Flavour.parse_partsc             C   s|   |r,| rr|rr|||| g|dd …  fS nF|rd||ksL| j |ƒ| j |ƒkrr||||dd …  fS n|||| fS |||fS )Né   )Úcasefold)r#   r1   r2   r0   Zdrv2Zroot2Zparts2r   r   r   Újoin_parsed_partsU   s    
z_Flavour.join_parsed_partsN)Ú__name__Ú
__module__Ú__qualname__r$   r6   r9   r   r   r   r   r    (   s   &r    c               @   sæ   e Zd ZdZdZdZeZej	dkZ
edd„ eedƒedƒd	 ƒD ƒƒed
d„ eedƒedƒd	 ƒD ƒƒB 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efdd„Zdd„ Zd d!„ Zd"d#„ Zd$S )%Ú_WindowsFlavourú\ú/TÚntc             c   s   | ]}t |ƒV  qd S )N)Úchr)Ú.0r5   r   r   r   ú	<genexpr>s   s    z_WindowsFlavour.<genexpr>ÚaÚzr7   c             c   s   | ]}t |ƒV  qd S )N)rA   )rB   r5   r   r   r   rC   t   s    ÚAÚZz\\?\ZCONZPRNZAUXZNULc             C   s   h | ]}d | ’qS )zCOM%dr   )rB   Úir   r   r   ú	<setcomp>z   s    z_WindowsFlavour.<setcomp>é
   c             C   s   h | ]}d | ’qS )zLPT%dr   )rB   rH   r   r   r   rI   {   s    c             C   sb  |dd… }|dd… }||krP||krP| j |ƒ\}}|dd… }|dd… }nd}|dd… }||kov||kov||k�r|j|dƒ}|dk�r|j||d ƒ}||d k�r|dkr¾t|ƒ}|rä||d|…  |||d d … fS |d |… |||d d … fS d }	}
|dk�r<|| jk�r<|d d… }	|dd … }|}||k�rT|}
|j|ƒ}||	 |
|fS )	Nr   r7   é   r%   é   ú:éÿÿÿÿrN   )Ú_split_extended_pathÚfindÚlenÚdrive_lettersÚlstrip)r#   r4   r!   ÚfirstÚsecondÚprefixZthirdÚindexZindex2r1   r2   r   r   r   r*   „   s6    
"

z_WindowsFlavour.splitrootc             C   s   |j ƒ S )N)Úlower)r#   Úsr   r   r   r8   «   s    z_WindowsFlavour.casefoldc             C   s   dd„ |D ƒS )Nc             S   s   g | ]}|j ƒ ‘qS r   )rX   )rB   Úpr   r   r   ú
<listcomp>¯   s    z2_WindowsFlavour.casefold_parts.<locals>.<listcomp>r   )r#   r0   r   r   r   Úcasefold_parts®   s    z_WindowsFlavour.casefold_partsc             C   sX   d}|j |ƒrP|d d… }|dd … }|j dƒrP||d d… 7 }d|dd …  }||fS )Nr%   é   zUNC\rL   r>   )Ú
startswith)r#   rY   Z
ext_prefixrV   r   r   r   rO   ±   s    

z$_WindowsFlavour._split_extended_pathc             C   s6   |sdS |d j dƒrdS |d jdƒd jƒ | jkS )NFr   z\\r7   r&   rN   )r^   Ú	partitionÚupperÚreserved_names)r#   r0   r   r   r   Úis_reserved»   s
    z_WindowsFlavour.is_reservedc             C   sd   |j }t|ƒdkrJ|d dkrJ|jƒ dd … jdƒ}d|t|jdƒƒf S dt|jƒ jdƒƒ S d S )NrK   r7   rM   r?   zfile:///%s/%szutf-8zfile:)ÚdriverQ   Úas_posixrS   Úurlquote_from_bytesÚencode)r#   Úpathrc   Úrestr   r   r   Úmake_uriÇ   s    z_WindowsFlavour.make_uric             C   sò   dt jkrt jd }n`dt jkr,t jd }nJdt jkrnyt jd }W n tk
r\   d}Y nX |t jd  }ntdƒ‚|rît jd |krî| j|fƒ\}}}|d
 t jd kr¸td	| ƒ‚||d< |sÈ|rä|| | j|dd … ƒ }n
| j|ƒ}|S )NÚHOMEZUSERPROFILEZHOMEPATHZ	HOMEDRIVEr%   zCan't determine home directoryZUSERNAMEr7   z%Can't determine home directory for %rrN   rN   )ÚosÚenvironÚKeyErrorÚRuntimeErrorr6   r"   )r#   ÚusernameÚuserhomer1   r2   r0   r   r   r   Ú
gethomedirÓ   s,    




z_WindowsFlavour.gethomedirN)r:   r;   r<   r!   r'   Úhas_drvÚntpathÚpathmodrk   ÚnameÚis_supportedÚsetÚrangeÚordrR   Zext_namespace_prefixra   r*   r8   r\   rO   rb   ri   rq   r   r   r   r   r=   g   s"   
"&	'
r=   c               @   sZ   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„ Zdd„ ZdS )Ú_PosixFlavourr?   r%   Fr@   c             C   sV   |rH|d |krH|j |ƒ}t|ƒt|ƒ dkr<d|d |fS d||fS n
dd|fS d S )Nr   rK   r%   )rS   rQ   )r#   r4   r!   Zstripped_partr   r   r   r*   ú   s    
z_PosixFlavour.splitrootc             C   s   |S )Nr   )r#   rY   r   r   r   r8   	  s    z_PosixFlavour.casefoldc             C   s   |S )Nr   )r#   r0   r   r   r   r\     s    z_PosixFlavour.casefold_partsc             C   s   dS )NFr   )r#   r0   r   r   r   rb     s    z_PosixFlavour.is_reservedc             C   s   t |ƒ}dt|ƒ S )Nzfile://)Úbytesre   )r#   rg   Zbpathr   r   r   ri     s    z_PosixFlavour.make_uric             C   st   |s:y
t jd S  tk
r6   dd l}|jt jƒ ƒjS X n6dd l}y|j|ƒjS  tk
rn   td| ƒ‚Y nX d S )Nrj   r   z%Can't determine home directory for %r)	rk   rl   rm   ÚpwdÚgetpwuidÚgetuidÚpw_dirÚgetpwnamrn   )r#   ro   r|   r   r   r   rq     s    
z_PosixFlavour.gethomedirN)r:   r;   r<   r!   r'   rr   Ú	posixpathrt   rk   ru   rv   r*   r8   r\   rb   ri   rq   r   r   r   r   rz   ò   s   
rz   c               @   s   e Zd ZdS )Ú	_AccessorN)r:   r;   r<   r   r   r   r   r‚   ,  s   r‚   c               @   sô   e Zd Zdd„ Zdd„ ZeejƒZeejƒZeejƒZeej	ƒZ	eej
ƒZ
eejƒZeedƒrjeejƒZndd„ ZeejƒZeejƒZeejƒZeejƒZeejƒZeedƒr¶ejZn
dd
d„ZeejƒZdd„ ZejZeejjƒZeejjƒZdS )Ú_NormalAccessorc                s   t jˆ ƒ‡ fdd„ƒ}t|ƒS )Nc                s   ˆ t | ƒf|žŽ S )N)Ústr)ÚpathobjÚargs)Ústrfuncr   r   Úwrapped4  s    z._NormalAccessor._wrap_strfunc.<locals>.wrapped)Ú	functoolsÚwrapsÚstaticmethod)r‡   rˆ   r   )r‡   r   Ú_wrap_strfunc3  s    z_NormalAccessor._wrap_strfuncc                s   t jˆ ƒ‡ fdd„ƒ}t|ƒS )Nc                s   ˆ t | ƒt |ƒf|žŽ S )N)r„   )ZpathobjAZpathobjBr†   )r‡   r   r   rˆ   :  s    z5_NormalAccessor._wrap_binary_strfunc.<locals>.wrapped)r‰   rŠ   r‹   )r‡   rˆ   r   )r‡   r   Ú_wrap_binary_strfunc9  s    z$_NormalAccessor._wrap_binary_strfuncÚlchmodc             C   s   t dƒ‚d S )Nz%lchmod() not available on this system)ÚNotImplementedError)r#   r…   Úmoder   r   r   rŽ   N  s    z_NormalAccessor.lchmodÚsymlinkFc             C   s   t dƒ‚d S )Nz)os.symlink() not available on this system)r�   )r#   ÚsrcÚdstÚtarget_is_directoryr   r   r   r‘   ^  s    z_NormalAccessor.symlinkc             C   s
   t j|ƒS )N)rk   Úreadlink)r#   rg   r   r   r   r•   e  s    z_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Úrealpathr   r   r   r   rƒ   1  s0   














rƒ   c             C   sP   | d }| dd … }|dkr"t }n$d|kr4tdƒ‚nt|ƒrBt}nt}|||ƒS )Nr   r7   z**z:Invalid pattern: '**' can only be an entire path component)Ú_RecursiveWildcardSelectorÚ
ValueErrorr   Ú_WildcardSelectorÚ_PreciseSelector)Úpattern_partsr   Úchild_partsÚclsr   r   r   Ú_make_selectorv  s    
r¬   Ú	lru_cachec               @   s   e Zd Zdd„ Zdd„ ZdS )Ú	_Selectorc             C   s.   || _ |rt|ƒ| _d| _ntƒ | _d| _d S )NTF)rª   r¬   Ú	successorÚdironlyÚ_TerminatingSelector)r#   rª   r   r   r   r$   ‹  s    
z_Selector.__init__c             C   s<   t |ƒ}|j}|j}|jj}||ƒs,tg ƒS | j||||ƒS )N)ÚtypeÚis_dirÚexistsÚ	_accessorrš   ÚiterÚ_select_from)r#   Úparent_pathZpath_clsr³   r´   rš   r   r   r   Úselect_from”  s    z_Selector.select_fromN)r:   r;   r<   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 )Nr   )r#   r¸   r³   r´   rš   r   r   r   r·   ¢  s    z!_TerminatingSelector._select_fromN)r:   r;   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j| |ƒ d S )N)ru   r®   r$   )r#   ru   rª   r   r   r   r$   ¨  s    z_PreciseSelector.__init__c             c   s^   yD|j | jƒ}| jr|n||ƒrBx | jj||||ƒD ]
}|V  q4W W n tk
rX   d S X d S )N)Ú_make_child_relpathru   r°   r¯   r·   ÚPermissionError)r#   r¸   r³   r´   rš   rg   rZ   r   r   r   r·   ¬  s    z_PreciseSelector._select_fromN)r:   r;   r<   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 jtj|ƒƒ| _tj| |ƒ d S )N)ÚreÚcompileÚfnmatchÚ	translater   r®   r$   )r#   r   rª   r   r   r   r$   ¸  s    z_WildcardSelector.__init__c             c   s–   y||j j}t||ƒƒ}xb|D ]Z}| j s0|jƒ r|j}||ƒ}	| jj|	ƒr|j|ƒ}
x | j	j
|
|||ƒD ]
}|V  qhW qW W n tk
r�   d S X d S )N)Ú_flavourr8   Úlistr°   r³   ru   r   Úmatchrº   r¯   r·   r»   )r#   r¸   r³   r´   rš   ÚcfÚentriesÚentryru   Z
casefoldedrg   rZ   r   r   r   r·   ¼  s    

z_WildcardSelector._select_fromN)r:   r;   r<   r$   r·   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 j| |ƒ d S )N)r®   r$   )r#   r   rª   r   r   r   r$   Ï  s    z#_RecursiveWildcardSelector.__init__c             c   sz   |V  yZt ||ƒƒ}xH|D ]@}|jƒ r|jƒ  r|j|jƒ}x| j|||ƒD ]
}|V  qLW qW W n tk
rt   d S X d S )N)rÁ   r³   Ú
is_symlinkrº   ru   Ú_iterate_directoriesr»   )r#   r¸   r³   rš   rÄ   rÅ   rg   rZ   r   r   r   rÇ   Ò  s    
z/_RecursiveWildcardSelector._iterate_directoriesc       	      c   s„   yjt ƒ }zT| jj}xF| j|||ƒD ]4}x.|||||ƒD ]}||kr6|V  |j|ƒ q6W q"W W d |jƒ  X W n tk
r~   d S X d S )N)rw   r¯   r·   rÇ   ÚaddÚclearr»   )	r#   r¸   r³   r´   rš   ZyieldedZsuccessor_selectZstarting_pointrZ   r   r   r   r·   Þ  s    z'_RecursiveWildcardSelector._select_fromN)r:   r;   r<   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 )N)r²   rË   rÌ   rÍ   rÎ   )r#   rg   r   r   r   r$   ÷  s    
z_PathParents.__init__c             C   s(   | j s| jrt| jƒd S t| jƒS d S )Nr7   )rÌ   rÍ   rQ   rÎ   )r#   r   r   r   Ú__len__þ  s    z_PathParents.__len__c             C   s@   |dk s|t | ƒkrt|ƒ‚| jj| j| j| jd | d … ƒS )Nr   r7   )rQ   Ú
IndexErrorrË   Ú_from_parsed_partsrÌ   rÍ   rÎ   )r#   Úidxr   r   r   Ú__getitem__  s    z_PathParents.__getitem__c             C   s   dj | jjƒS )Nz<{}.parents>)ÚformatrË   r:   )r#   r   r   r   Ú__repr__
  s    z_PathParents.__repr__N)rË   rÌ   rÍ   rÎ   )r:   r;   r<   Ú	__slots__r$   rÏ   rÓ   rÕ   r   r   r   r   rÊ   ò  s
   rÊ   c               @   s˜  e Zd ZdYZdd	„ Zd
d„ Zedd„ ƒZedZdd„ƒZed[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d!d"„ Zd#d$„ Zed%d&„ ƒZd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zeedƒd3d4�Zeedƒd5d4�Zed6d7„ ƒZed8d9„ ƒZed:d;„ ƒZ ed<d=„ ƒZ!ed>d?„ ƒZ"d@dA„ Z#dBdC„ Z$dDdE„ Z%edFdG„ ƒZ&dHdI„ Z'dJdK„ Z(dLdM„ Z)edNdO„ ƒZ*edPdQ„ ƒZ+dRdS„ Z,dTdU„ Z-dVdW„ Z.dXS )\r   rÌ   rÍ   rÎ   Ú_strÚ_hashÚ_ppartsÚ_cached_cpartsc             G   s$   | t krtjdkrtnt} | j|ƒS )Nr@   )r   rk   ru   r   r   Ú_from_parts)r«   r†   r   r   r   Ú__new__  s    zPurePath.__new__c             C   s   | j t| jƒfS )N)Ú	__class__ÚtuplerÎ   )r#   r   r   r   Ú
__reduce__&  s    zPurePath.__reduce__c             C   sh   g }xV|D ]N}t |tƒr$||j7 }q
tj|ƒ}t |tƒrH|jt|ƒƒ q
tdt|ƒ ƒ‚q
W | j	j
|ƒS )NzNargument should be a str object or an os.PathLike object returning str, not %r)Ú
isinstancer   rÎ   rk   Úfspathr„   r,   Ú	TypeErrorr²   rÀ   r6   )r«   r†   r0   rD   r   r   r   Ú_parse_args+  s    



zPurePath._parse_argsTc             C   s<   t j| ƒ}|j|ƒ\}}}||_||_||_|r8|jƒ  |S )N)ÚobjectrÜ   rã   rÌ   rÍ   rÎ   Ú_init)r«   r†   Úinitr#   r1   r2   r0   r   r   r   rÛ   ?  s    
zPurePath._from_partsc             C   s,   t j| ƒ}||_||_||_|r(|jƒ  |S )N)rä   rÜ   rÌ   rÍ   rÎ   rå   )r«   r1   r2   r0   ræ   r#   r   r   r   rÑ   L  s    
zPurePath._from_parsed_partsc             C   s4   |s|r$|| | j j|dd … ƒ S | j j|ƒS d S )Nr7   )rÀ   r"   )r«   r1   r2   r0   r   r   r   Ú_format_parsed_partsV  s    zPurePath._format_parsed_partsc             C   s   d S )Nr   )r#   r   r   r   rå   ]  s    zPurePath._initc             C   s@   | j |ƒ\}}}| jj| j| j| j|||ƒ\}}}| j|||ƒS )N)rã   rÀ   r9   rÌ   rÍ   rÎ   rÑ   )r#   r†   r1   r2   r0   r   r   r   Ú_make_childa  s    zPurePath._make_childc             C   s<   y| j S  tk
r6   | j| j| j| jƒp,d| _ | j S X d S )Nr&   )r×   ÚAttributeErrorrç   rÌ   rÍ   rÎ   )r#   r   r   r   Ú__str__g  s    zPurePath.__str__c             C   s   t | ƒS )N)r„   )r#   r   r   r   Ú
__fspath__q  s    zPurePath.__fspath__c             C   s   | j }t| ƒj|jdƒS )Nr?   )rÀ   r„   r)   r!   )r#   Úfr   r   r   rd   t  s    zPurePath.as_posixc             C   s   t jt| ƒƒS )N)rk   Úfsencoder„   )r#   r   r   r   Ú	__bytes__z  s    zPurePath.__bytes__c             C   s   dj | jj| jƒ ƒS )Nz{}({!r}))rÔ   rÝ   r:   rd   )r#   r   r   r   rÕ     s    zPurePath.__repr__c             C   s   | j ƒ stdƒ‚| jj| ƒS )Nz.relative path can't be expressed as a file URI)Úis_absoluter¦   rÀ   ri   )r#   r   r   r   Úas_uri‚  s    zPurePath.as_uric             C   s2   y| j S  tk
r,   | jj| jƒ| _ | j S X d S )N)rÚ   ré   rÀ   r\   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 )N)rà   r   ÚNotImplementedrñ   rÀ   )r#   Úotherr   r   r   Ú__eq__‘  s    
zPurePath.__eq__c             C   s2   y| j S  tk
r,   tt| jƒƒ| _ | j S X d S )N)rØ   ré   ÚhashrÞ   rñ   )r#   r   r   r   Ú__hash__–  s
    zPurePath.__hash__c             C   s(   t |tƒ s| j|jk	rtS | j|jk S )N)rà   r   rÀ   rò   rñ   )r#   ró   r   r   r   Ú__lt__�  s    zPurePath.__lt__c             C   s(   t |tƒ s| j|jk	rtS | j|jkS )N)rà   r   rÀ   rò   rñ   )r#   ró   r   r   r   Ú__le__¢  s    zPurePath.__le__c             C   s(   t |tƒ s| j|jk	rtS | j|jkS )N)rà   r   rÀ   rò   rñ   )r#   ró   r   r   r   Ú__gt__§  s    zPurePath.__gt__c             C   s(   t |tƒ s| j|jk	rtS | j|jkS )N)rà   r   rÀ   rò   rñ   )r#   ró   r   r   r   Ú__ge__¬  s    zPurePath.__ge__z.The drive prefix (letter or UNC path), if any.)ÚdoczThe root of the path, if any.c             C   s   | j | j }|S )N)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 )Nr7   r   r%   rN   )rÎ   rQ   rÌ   rÍ   )r#   r0   r   r   r   ru   ½  s    zPurePath.namec             C   sD   | j }|jdƒ}d|  k o*t|ƒd k n  r<||d … S dS d S )Nr&   r   r7   r%   )ru   ÚrfindrQ   )r#   ru   rH   r   r   r   ÚsuffixÅ  s
    
 zPurePath.suffixc             C   s:   | j }|jdƒrg S |jdƒ}dd„ |jdƒdd … D ƒS )Nr&   c             S   s   g | ]}d | ‘qS )r&   r   )rB   rþ   r   r   r   r[   Ö  s    z%PurePath.suffixes.<locals>.<listcomp>r7   )ru   ÚendswithrS   r+   )r#   ru   r   r   r   ÚsuffixesÏ  s
    

zPurePath.suffixesc             C   sD   | j }|jdƒ}d|  k o*t|ƒd k n  r<|d |… S |S d S )Nr&   r   r7   )ru   rý   rQ   )r#   ru   rH   r   r   r   ÚstemØ  s
    
 zPurePath.stemc             C   sˆ   | j std| f ƒ‚| jj|fƒ\}}}| sZ|d | jj| jjgksZ|sZ|sZt|ƒdkrftd| ƒ‚| j| j| j	| j
d d… |g ƒS )Nz%r has an empty namer7   zInvalid name %rrN   rN   )ru   r¦   rÀ   r6   r!   r'   rQ   rÑ   rÌ   rÍ   rÎ   )r#   ru   r1   r2   r0   r   r   r   Ú	with_nameâ  s    zPurePath.with_namec             C   s´   | j }|j|ks |jr,|j|kr,td| ƒ‚|r<|jdƒ sD|dkrPtd| ƒ‚| j}|shtd| f ƒ‚| j}|s||| }n|d t|ƒ … | }| j| j	| j
| jd d… |g ƒS )NzInvalid suffix %rr&   z%r has an empty namer7   rN   )rÀ   r!   r'   r¦   r^   ru   rþ   rQ   rÑ   rÌ   rÍ   rÎ   )r#   rþ   rì   ru   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|}| j|ƒ\}}}|rf||g|dd …  }	n|}	t|	ƒ}
| jj}|
dkrŠ|p |n||d |
… ƒ||	ƒkrÈ| j|||ƒ}t	dj
t| ƒt|ƒƒƒ‚| jd|
dkrÚ|nd||
d … ƒS )Nzneed at least one argumentr7   r   z{!r} does not start with {!r}r%   )râ   rÎ   rÌ   rÍ   rã   rQ   rÀ   r\   rç   r¦   rÔ   r„   rÑ   )r#   ró   r0   r1   r2   Z	abs_partsZto_drvZto_rootZto_partsZto_abs_partsÚnrÃ   Z	formattedr   r   r   Úrelative_to  s(    	(zPurePath.relative_toc             C   s.   y| j S  tk
r(   t| jƒ| _ | j S X d S )N)rÙ   ré   rÞ   rÎ   )r#   r   r   r   r0   "  s
    zPurePath.partsc             G   s
   | j |ƒS )N)rè   )r#   r†   r   r   r   Újoinpath.  s    zPurePath.joinpathc             C   s   | j |fƒS )N)rè   )r#   Úkeyr   r   r   Ú__truediv__6  s    zPurePath.__truediv__c             C   s   | j |g| j ƒS )N)rÛ   rÎ   )r#   r  r   r   r   Ú__rtruediv__9  s    zPurePath.__rtruediv__c             C   s@   | j }| j}| j}t|ƒdkr*|s&|r*| S | j|||d d… ƒS )Nr7   rN   )rÌ   rÍ   rÎ   rQ   rÑ   )r#   r1   r2   r0   r   r   r   Úparent<  s    zPurePath.parentc             C   s   t | ƒS )N)rÊ   )r#   r   r   r   ÚparentsF  s    zPurePath.parentsc             C   s   | j s
dS | jj pt| jƒS )NF)rÍ   rÀ   rr   ÚboolrÌ   )r#   r   r   r   rï   K  s    zPurePath.is_absolutec             C   s   | j j| jƒS )N)rÀ   rb   rÎ   )r#   r   r   r   rb   R  s    zPurePath.is_reservedc       	      C   sÔ   | j j}||ƒ}| j j|fƒ\}}}|s0tdƒ‚|rF||| jƒkrFdS |r\||| jƒkr\dS | j}|sj|rŒt|ƒt|ƒkr~dS |dd … }nt|ƒt|ƒkr dS x.tt	|ƒt	|ƒƒD ]\}}t
j||ƒs´dS q´W dS )Nzempty patternFr7   T)rÀ   r8   r6   r¦   rÌ   rÍ   rñ   rQ   Úzipr(   r¾   Zfnmatchcase)	r#   Zpath_patternrÃ   r1   r2   Z	pat_partsr0   r4   r   r   r   r   rÂ   W  s(    zPurePath.matchN)rÌ   rÍ   rÎ   r×   rØ   rÙ   rÚ   )T)T)/r:   r;   r<   rÖ   rÜ   rß   Úclassmethodrã   rÛ   rÑ   rç   rå   rè   rê   rë   rd   rî   rÕ   rð   Úpropertyrñ   rô   rö   r÷   rø   rù   rú   r   rc   r2   rü   ru   rþ   r   r  r  r  r  r0   r  r  r	  r
  r  rï   rb   rÂ   r   r   r   r   r     s\   
 
	
	
	
 
c               @   s   e Zd ZeZf ZdS )r   N)r:   r;   r<   Ú_posix_flavourrÀ   rÖ   r   r   r   r   r   u  s   c               @   s   e Zd ZeZf ZdS )r   N)r:   r;   r<   Ú_windows_flavourrÀ   rÖ   r   r   r   r   r     s   c               @   s„  e Zd Zd`Zdd„ Zdadd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dbdd„Z
dcd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ddd%d&„Zd'd(„ Zd)d*„ Zd+d,„ Zdfd/d0„Zd1d2„ Zdgd3d4„Zd5d6„ Zdhd7d8„Zdid:d;„Zdjd<d=„Zd>d?„ Zd@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/dS )lr   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 ƒ‚|j
ƒ  |S )Nr@   F)ræ   z$cannot instantiate %r on your system)r   rk   ru   r   r   rÛ   rÀ   rv   r�   r:   rå   )r«   r†   Úkwargsr#   r   r   r   rÜ   š  s    zPath.__new__Nc             C   s"   d| _ |d k	r|j| _nt| _d S )NF)r  rµ   Ú_normal_accessor)r#   Útemplater   r   r   rå   ¤  s    
z
Path._initc             C   s   | j |g }| j| j| j|ƒS )N)rÎ   rÑ   rÌ   rÍ   )r#   r4   r0   r   r   r   rº   ®  s    zPath._make_child_relpathc             C   s   | j r| jƒ  | S )N)r  Ú_raise_closed)r#   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  ¼  s    zPath._raise_closedé¶  c             C   s   | j j| ||ƒS )N)rµ   r˜   )r#   ru   Úflagsr�   r   r   r   Ú_opener¿  s    zPath._openeréÿ  c             C   s   | j r| jƒ  | jj| ||ƒS )N)r  r  rµ   r˜   )r#   r  r�   r   r   r   Ú	_raw_openÃ  s    zPath._raw_openc             C   s   | t jƒ ƒS )N)rk   r¢   )r«   r   r   r   ÚcwdÎ  s    zPath.cwdc             C   s   | | ƒ j jd ƒƒS )N)rÀ   rq   )r«   r   r   r   ÚhomeÕ  s    z	Path.homec             C   sB   | j ƒ }y|j ƒ }W n tk
r2   tj |ƒ}Y nX tjj||ƒS )N)r–   ré   rk   rg   Úsamestat)r#   Z
other_pathÚstZother_str   r   r   ÚsamefileÜ  s    zPath.samefilec             c   sL   | j r| jƒ  x8| jj| ƒD ](}|dkr*q| j|ƒV  | j r| jƒ  qW d S )Nr&   ú..>   r&  r&   )r  r  rµ   r™   rº   )r#   ru   r   r   r   Úiterdirç  s    zPath.iterdirc             c   sl   |st dj|ƒƒ‚| jj|ƒ}| jj|fƒ\}}}|s:|rBtdƒ‚tt|ƒƒ}x|j| ƒD ]
}|V  qZW d S )NzUnacceptable pattern: {!r}z%Non-relative patterns are unsupported)	r¦   rÔ   rÀ   r8   r6   r�   r¬   rÞ   r¹   )r#   Úpatternr1   r2   r©   ÚselectorrZ   r   r   r   Úglobõ  s    z	Path.globc             c   s^   | j j|ƒ}| j j|fƒ\}}}|s(|r0tdƒ‚tdt|ƒ ƒ}x|j| ƒD ]
}|V  qLW d S )Nz%Non-relative patterns are unsupportedú**)r+  )rÀ   r8   r6   r�   r¬   rÞ   r¹   )r#   r(  r1   r2   r©   r)  rZ   r   r   r   Úrglob  s    z
Path.rglobc             C   sD   | j r| jƒ  | jƒ r| S | jtjƒ g| j dd�}|j| d� |S )NF)ræ   )r  )r  r  rï   rÛ   rk   r¢   rÎ   rå   )r#   Úobjr   r   r   Úabsolute  s    zPath.absoluteFc             C   s¤   | j r| jƒ  dd„ }y| jj| |d�}W n, tk
rV } z||ƒ ‚ W Y d d }~X nX | j|fƒ}|s y|jƒ  W n* tk
rž } z||ƒ W Y d d }~X nX |S )Nc             S   s0   t | ddƒ}| jtks|tkr,td| j ƒ‚d S )NÚwinerrorr   zSymlink loop from %r)ÚgetattrÚerrnor   Ú_WINERROR_CANT_RESOLVE_FILENAMErn   Úfilename)Úer/  r   r   r   Úcheck_eloop*  s    z!Path.resolve.<locals>.check_eloop)Ústrict)r  r  rµ   r¤   ÚOSErrorrÛ   r–   )r#   r6  r5  rY   r4  rZ   r   r   r   Úresolve!  s    zPath.resolvec             C   s   | j j| ƒS )N)rµ   r–   )r#   r   r   r   r–   ?  s    z	Path.statc             C   s   dd l }|j| jƒ jƒjS )Nr   )r|   r}   r–   Úst_uidZpw_name)r#   r|   r   r   r   ÚownerF  s    z
Path.ownerc             C   s   dd l }|j| jƒ jƒjS )Nr   )ÚgrpZgetgrgidr–   Úst_gidZgr_name)r#   r;  r   r   r   ÚgroupM  s    z
Path.groupÚrr7   c          	   C   s,   | j r| jƒ  tjt| ƒ|||||| jd�S )N)Úopener)r  r  Úior˜   r„   r  )r#   r�   Ú	bufferingÚencodingÚerrorsÚnewliner   r   r   r˜   T  s    z	Path.openc          	   C   s    | j dd��
}|jƒ S Q R X d S )NÚrb)r�   )r˜   Úread)r#   rì   r   r   r   Ú
read_bytes_  s    zPath.read_bytesc          	   C   s$   | j d||d��
}|jƒ S Q R X d S )Nr>  )r�   rB  rC  )r˜   rF  )r#   rB  rC  rì   r   r   r   Ú	read_textf  s    zPath.read_textc          	   C   s*   t |ƒ}| jdd��}|j|ƒS Q R X d S )NÚwb)r�   )Ú
memoryviewr˜   Úwrite)r#   ÚdataZviewrì   r   r   r   Úwrite_bytesm  s    zPath.write_bytesc          	   C   s@   t |tƒstd|jj ƒ‚| jd||d��}|j|ƒS Q R X d S )Nzdata must be str, not %sÚw)r�   rB  rC  )rà   r„   râ   rÝ   r:   r˜   rK  )r#   rL  rB  rC  rì   r   r   r   Ú
write_textv  s
    
zPath.write_textTc             C   sr   | j r| jƒ  |r>y| jj| d ƒ W n tk
r8   Y nX d S tjtjB }|sX|tjO }| j	||ƒ}tj
|ƒ d S )N)r  r  rµ   r¡   r7  rk   ÚO_CREATÚO_WRONLYÚO_EXCLr   Úclose)r#   r�   Úexist_okr  Úfdr   r   r   Útouch€  s    
z
Path.touchc             C   s�   | j r| jƒ  y| jj| |ƒ W nj tk
rf   | s@| j| krB‚ | jjddd� | j|d|d� Y n& tk
rŠ   | s„| jƒ  r†‚ Y nX d S )NT)r  rT  F)r  r  rµ   r�   ÚFileNotFoundErrorr
  r7  r³   )r#   r�   r  rT  r   r   r   r�   —  s    z
Path.mkdirc             C   s    | j r| jƒ  | jj| |ƒ d S )N)r  r  rµ   r›   )r#   r�   r   r   r   r›   ª  s    z
Path.chmodc             C   s    | j r| jƒ  | jj| |ƒ d S )N)r  r  rµ   rŽ   )r#   r�   r   r   r   rŽ   ²  s    zPath.lchmodc             C   s   | j r| jƒ  | jj| ƒ d S )N)r  r  rµ   rž   )r#   r   r   r   rž   »  s    zPath.unlinkc             C   s   | j r| jƒ  | jj| ƒ d S )N)r  r  rµ   rŸ   )r#   r   r   r   rŸ   Ä  s    z
Path.rmdirc             C   s   | j r| jƒ  | jj| ƒS )N)r  r  rµ   r—   )r#   r   r   r   r—   Ì  s    z
Path.lstatc             C   s    | j r| jƒ  | jj| |ƒ d S )N)r  r  rµ   r    )r#   Útargetr   r   r   r    Õ  s    zPath.renamec             C   s    | j r| jƒ  | jj| |ƒ d S )N)r  r  rµ   r)   )r#   rX  r   r   r   r)   Ý  s    zPath.replacec             C   s"   | j r| jƒ  | jj|| |ƒ d S )N)r  r  rµ   r‘   )r#   rX  r”   r   r   r   Ú
symlink_toæ  s    zPath.symlink_toc             C   sB   y| j ƒ  W n0 tk
r< } z|jttfkr.‚ dS d }~X nX dS )NFT)r–   r7  r1  r   r   )r#   r4  r   r   r   r´   ñ  s    zPath.existsc             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r	   r–   Úst_moder7  r1  r   r   )r#   r4  r   r   r   r³   ý  s    zPath.is_dirc             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r   r–   rZ  r7  r1  r   r   )r#   r4  r   r   r   Úis_file
  s    zPath.is_filec             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r
   r—   rZ  r7  r1  r   r   )r#   r4  r   r   r   rÆ     s    zPath.is_symlinkc             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r   r–   rZ  r7  r1  r   r   )r#   r4  r   r   r   Úis_block_device$  s    zPath.is_block_devicec             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r   r–   rZ  r7  r1  r   r   )r#   r4  r   r   r   Úis_char_device1  s    zPath.is_char_devicec             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r   r–   rZ  r7  r1  r   r   )r#   r4  r   r   r   Úis_fifo>  s    zPath.is_fifoc             C   sD   yt | jƒ jƒS  tk
r> } z|jttfkr0‚ dS d }~X nX d S )NF)r   r–   rZ  r7  r1  r   r   )r#   r4  r   r   r   Ú	is_socketK  s    zPath.is_socketc             C   sb   | j p
| j r^| jr^| jd d d… dkr^| jj| jd dd … ƒ}| j|g| jdd …  ƒS | S )Nr   r7   ú~)rÌ   rÍ   rÎ   rÀ   rq   rÛ   )r#   Zhomedirr   r   r   r£   X  s
    zPath.expanduser)rµ   r  )N)r  )r  )FrN   )r>  rN   NNN)NN)NN)r  T)r  FF)F)0r:   r;   r<   rÖ   rÜ   rå   rº   r  r  r  r  r   r  r!  r"  r%  r'  r*  r,  r.  r8  r–   r:  r=  r˜   rG  rH  rM  rO  rV  r�   r›   rŽ   rž   rŸ   r—   r    r)   rY  r´   r³   r[  rÆ   r\  r]  r^  r_  r£   r   r   r   r   r   Œ  s\   
 



 


	



				
c               @   s   e Zd Zf ZdS )r   N)r:   r;   r<   rÖ   r   r   r   r   r   d  s   c               @   s    e Zd Zf Zdd„ Zdd„ ZdS )r   c             C   s   t dƒ‚d S )Nz*Path.owner() is unsupported on this system)r�   )r#   r   r   r   r:  r  s    zWindowsPath.ownerc             C   s   t dƒ‚d S )Nz*Path.group() is unsupported on this system)r�   )r#   r   r   r   r=  u  s    zWindowsPath.groupN)r:   r;   r<   rÖ   r:  r=  r   r   r   r   r   k  s   )>r¾   r‰   r@  rs   rk   r�   r¼   r-   Úcollectionsr   Ú
contextlibr   r1  r   r   r   r   Úoperatorr   r–   r	   r
   r   r   r   r   r   Zurllib.parser   re   Zsupports_symlinksÚ__all__Z_WINERROR_NOT_READYZ_WINERROR_INVALID_NAMEr2  r   rä   r    r=   rz   r  r  r‚   rƒ   r  r¬   rœ   r­   r®   r±   r¨   r§   r¥   rÊ   r   ÚPathLikeÚregisterr   r   r   r   r   r   r   r   r   Ú<module>   sd   $
? 6>%  f
   [