<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2aV                 @   sV  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 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j  dd
 d5krd dlm!Z! qdZdZ!ndZddddddg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"re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 d0d de6Z9G d1d de6Z:G d2d de6Z;G d3d de;e9Z<G d4d de;e:Z=dS )6    N)Sequence)contextmanager)EINVALENOENTENOTDIR)
attrgetter)S_ISDIRS_ISLNKS_ISREGS_ISSOCKS_ISBLKS_ISCHRS_ISFIFO)quote_from_bytesTnt      )_getfinalpathnameFPurePathPurePosixPathPureWindowsPathPath	PosixPathWindowsPathc             C   s   d| kpd| kpd| kS )N*?[ )patr   r   ,/opt/alt/python36/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__0   s    z_Flavour.__init__c             C   s   g }| j }| j}d }}t|}x|D ]}|s0q&|r@|j||}| j|\}}}	||	krxPt|	j|D ] }
|
rh|
dkrh|jtj|
 qhW n|	r|	dkr|jtj|	 |s|r&|sx6|D ].}|sq|r|j||}| j|d }|rP qW 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_parts3   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$   r2   r3   r1   Zdrv2Zroot2Zparts2r   r   r   join_parsed_partsY   s    
z_Flavour.join_parsed_partsN)__name__
__module____qualname__r%   r7   r:   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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   c             c   s   | ]}t |V  qd S )N)chr).0r6   r   r   r   	<genexpr>w   s    z_WindowsFlavour.<genexpr>azr8   c             c   s   | ]}t |V  qd S )N)rA   )rB   r6   r   r   r   rC   x   s    AZz\\?\ZCONZPRNZAUXZNULc             C   s   h | ]}d | qS )zCOM%dr   )rB   ir   r   r   	<setcomp>~   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rt|}|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   r8   r   r&      :rM   )_split_extended_pathfindlendrive_letterslstrip)r$   r5   r"   firstsecondprefixZthirdindexZindex2r2   r3   r   r   r   r+      s6    
"

z_WindowsFlavour.splitrootc             C   s   |j  S )N)lower)r$   sr   r   r   r9      s    z_WindowsFlavour.casefoldc             C   s   dd |D S )Nc             S   s   g | ]}|j  qS r   )rW   )rB   pr   r   r   
<listcomp>   s    z2_WindowsFlavour.casefold_parts.<locals>.<listcomp>r   )r$   r1   r   r   r   casefold_parts   s    z_WindowsFlavour.casefold_partsFc             C   s   t |}|stj S d }td k	r|r2| jt|S g }xly| jt|}W n> tk
r   |}tjj|\}}|j| ||kr|S Y q8X tjj	|ft
| S q8W d S )N)strosgetcwdr   _ext_to_normalFileNotFoundErrorpathr,   r-   r#   r)   )r$   ra   strictrX   Z
previous_sZ
tail_partstailr   r   r   resolve   s&    

z_WindowsFlavour.resolvec             C   sX   d}|j |rP|d d }|dd  }|j drP||d d 7 }d|dd   }||fS )Nr&      zUNC\rK   r?   )
startswith)r$   rX   Z
ext_prefixrU   r   r   r   rN      s    

z$_WindowsFlavour._split_extended_pathc             C   s   | j |d S )Nr8   )rN   )r$   rX   r   r   r   r_      s    z_WindowsFlavour._ext_to_normalc             C   s6   |sdS |d j drdS |d jdd j | jkS )NFr   z\\r8   r'   rM   )rf   	partitionupperreserved_names)r$   r1   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 )Nr   r8   rL   r@   zfile:///%s/%szutf-8zfile:)driverP   as_posixrR   urlquote_from_bytesencode)r$   ra   rk   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|rt jd |kr| j|f\}}}|d
 t jd krtd	| ||d< |s|r|| | j|dd   }n
| j|}|S )NHOMEZUSERPROFILEZHOMEPATHZ	HOMEDRIVEr&   zCan't determine home directoryZUSERNAMEr8   z%Can't determine home directory for %rrM   rM   )r]   environKeyErrorRuntimeErrorr7   r#   )r$   usernameuserhomer2   r3   r1   r   r   r   
gethomedir   s,    




z_WindowsFlavour.gethomedirN)F)r;   r<   r=   r"   r(   has_drvntpathpathmodr]   nameis_supportedsetrangeordrQ   Zext_namespace_prefixri   r+   r9   r[   rd   rN   r_   rj   rp   rw   r   r   r   r   r>   k   s&   
"&	'

r>   c               @   sd   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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   r   r&   )rR   rP   )r$   r5   r"   Zstripped_partr   r   r   r+     s    
z_PosixFlavour.splitrootc             C   s   |S )Nr   )r$   rX   r   r   r   r9   )  s    z_PosixFlavour.casefoldc             C   s   |S )Nr   )r$   r1   r   r   r   r[   ,  s    z_PosixFlavour.casefold_partsc                sJ   | j |ji  fdd |j r0dntj } |t|pHS )Nc                s   |j rd} x|jD ]}| s|dkr.q|dkrH| j\} }}q|  | }|krz| } | d k	rnqtd| yj|}W n6 tk
r } z|jtkrr |} W Y d d }~X qX d |<  | |} | |< qW | S )Nr&   r'   z..zSymlink loop from %r)rf   r,   
rpartitionrt   readlinkOSErrorerrnor   )ra   ro   r{   _newpathtargete)_resolveaccessorseenr"   rb   r   r   r   3  s0    

z'_PosixFlavour.resolve.<locals>._resolver&   )r"   	_accessoris_absoluter]   r^   r\   )r$   ra   rb   baser   )r   r   r   r"   rb   r   rd   /  s    &z_PosixFlavour.resolvec             C   s   dS )NFr   )r$   r1   r   r   r   rj   \  s    z_PosixFlavour.is_reservedc             C   s   t |}dt| S )Nzfile://)bytesrm   )r$   ra   Zbpathr   r   r   rp   _  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 )Nrq   r   z%Can't determine home directory for %r)	r]   rr   rs   pwdgetpwuidgetuidpw_dirgetpwnamrt   )r$   ru   r   r   r   r   rw   e  s    
z_PosixFlavour.gethomedirN)F)r;   r<   r=   r"   r(   rx   	posixpathrz   r]   r{   r|   r+   r9   r[   rd   rj   rp   rw   r   r   r   r   r     s   

-r   c               @   s   e Zd ZdS )	_AccessorN)r;   r<   r=   r   r   r   r   r   y  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rereejZqdd	 Zned
d	 ZeejZdd ZdS )_NormalAccessorc                s   t j  fdd}t|S )Nc                s    t | f| S )N)r\   )pathobjargs)strfuncr   r   wrapped  s    z._NormalAccessor._wrap_strfunc.<locals>.wrapped)	functoolswrapsstaticmethod)r   r   r   )r   r   _wrap_strfunc  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_strfunc  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     s    z_NormalAccessor.lchmodc             C   s   t dd S )Nz&symlink() not available on this system)r   )rD   btarget_is_directoryr   r   r   symlink  s    z_NormalAccessor.symlinkc             C   s   t jt| t|S )N)r]   r   r\   )rD   r   r   r   r   r   r     s    c             C   s
   t j|S )N)r]   r   )r$   ra   r   r   r   r     s    z_NormalAccessor.readlinkN)r;   r<   r=   r   r   r]   statlstatopenlistdirscandirchmodhasattrr   mkdirunlinkrmdirrenamer*   r   supports_symlinksr   r   utimer   r   r   r   r   r   ~  s.   













r   c             C   sP   | d }| dd  }|dkr"t }n$d|kr4tdnt|rBt}nt}|||S )Nr   r8   z**z:Invalid pattern: '**' can only be an entire path component)_RecursiveWildcardSelector
ValueErrorr    _WildcardSelector_PreciseSelector)pattern_partsr   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   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existsr   r   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)r{   r   r%   )r$   r{   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_relpathr{   r   r   r   PermissionError)r$   r   r   r   r   ra   rY   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)_flavourr9   listr   r   r{   r   matchr   r   r   r   )r$   r   r   r   r   cfentriesentryr{   Z
casefoldedra   rY   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   r{   _iterate_directoriesr   )r$   r   r   r   r   r   ra   rY   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)r}   r   r   r   addclearr   )	r$   r   r   r   r   ZyieldedZsuccessor_selectZstarting_pointrY   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$   ra   r   r   r   r%   C  s    
z_PathParents.__init__c             C   s(   | j s| jrt| jd S t| jS d S )Nr8   )r   r   rP   r   )r$   r   r   r   __len__J  s    z_PathParents.__len__c             C   s@   |dk s|t | krt|| jj| j| j| jd | d  S )Nr   r8   )rP   
IndexErrorr   _from_parsed_partsr   r   r   )r$   idxr   r   r   __getitem__P  s    z_PathParents.__getitem__c             C   s   dj | jjS )Nz<{}.parents>)formatr   r;   )r$   r   r   r   __repr__V  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   r]   r{   r   r   _from_parts)r   r   r   r   r   __new__h  s    zPurePath.__new__c             C   s   | j t| jfS )N)	__class__tupler   )r$   r   r   r   
__reduce__r  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   r]   fspathr\   r-   	TypeErrorr   r   r7   )r   r   r1   rD   r   r   r   _parse_argsw  s    



zPurePath._parse_argsTc             C   s<   t j| }|j|\}}}||_||_||_|r8|j  |S )N)objectr   r   r   r   r   _init)r   r   initr$   r2   r3   r1   r   r   r   r     s    
zPurePath._from_partsc             C   s,   t j| }||_||_||_|r(|j  |S )N)r   r   r   r   r   r   )r   r2   r3   r1   r   r$   r   r   r   r     s    
zPurePath._from_parsed_partsc             C   s4   |s|r$|| | j j|dd   S | j j|S d S )Nr8   )r   r#   )r   r2   r3   r1   r   r   r   _format_parsed_parts  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   r:   r   r   r   r   )r$   r   r2   r3   r1   r   r   r   _make_child  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__  s    zPurePath.__str__c             C   s   t | S )N)r\   )r$   r   r   r   
__fspath__  s    zPurePath.__fspath__c             C   s   | j }t| j|jdS )Nr@   )r   r\   r*   r"   )r$   fr   r   r   rl     s    zPurePath.as_posixc             C   s   t jt| S )N)r]   fsencoder\   )r$   r   r   r   	__bytes__  s    zPurePath.__bytes__c             C   s   dj | jj| j S )Nz{}({!r}))r   r   r;   rl   )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)r   r   r   rp   )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 )Nr8   r   r&   rM   )r   rP   r   r   )r$   r1   r   r   r   r{   	  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   r8   r&   )r{   rfindrP   )r$   r{   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   rZ   "  s    z%PurePath.suffixes.<locals>.<listcomp>r8   )r{   endswithrR   r,   )r$   r{   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   r8   )r{   r
  rP   )r$   r{   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 namer8   zInvalid name %rrM   rM   )r{   r   r   r7   r"   r(   rP   r   r   r   r   )r$   r{   r2   r3   r1   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 namer8   rM   )r   r"   r(   r   rf   r{   r  rP   r   r   r   r   )r$   r  r   r{   Z
old_suffixr   r   r   with_suffix9  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 argumentr8   r   z{!r} does not start with {!r}r&   )r   r   r   r   r   rP   r   r[   r   r   r   r\   r   )r$   r   r1   r2   r3   Z	abs_partsZto_drvZto_rootZto_partsZto_abs_partsnr   	formattedr   r   r   relative_toN  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   r1   n  s
    zPurePath.partsc             G   s
   | j |S )N)r   )r$   r   r   r   r   joinpathz  s    zPurePath.joinpathc             C   s   | j |fS )N)r   )r$   keyr   r   r   __truediv__  s    zPurePath.__truediv__c             C   s   | j |g| j S )N)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 | j|||d d S )Nr8   rM   )r   r   r   rP   r   )r$   r2   r3   r1   r   r   r   parent  s    zPurePath.parentc             C   s   t | S )N)r   )r$   r   r   r   parents  s    zPurePath.parentsc             C   s   | j s
dS | jj pt| jS )NF)r   r   rx   boolr   )r$   r   r   r   r     s    zPurePath.is_absolutec             C   s   | j j| jS )N)r   rj   r   )r$   r   r   r   rj     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|rt|t|kr~dS |dd  }nt|t|krdS x.tt	|t	|D ]\}}t
j||sdS qW dS )Nzempty patternFr8   T)r   r9   r7   r   r   r   r   rP   zipr)   r   Zfnmatchcase)	r$   Zpath_patternr   r2   r3   Z	pat_partsr1   r5   r   r   r   r   r     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   rl   r   r   r   propertyr   r  r  r  r  r  r  r   rk   r3   r	  r{   r  r  r  r  r  r  r1   r  r  r  r  r  r   rj   r   r   r   r   r   r   Z  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     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   r]   r{   r   r   r   r   r|   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$   r5   r1   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$   r{   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)r]   r^   )r   r   r   r   cwd  s    zPath.cwdc             C   s   | |  j jd S )N)r   rw   )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   r]   ra   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'   r4  )r   r$  r   r   r   )r$   r{   r   r   r   iterdir3  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   r9   r7   r   r   r   r   )r$   patternr2   r3   r   selectorrY   r   r   r   globA  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**)r9  )r   r9   r7   r   r   r   r   )r$   r6  r2   r3   r   r7  rY   r   r   r   rglobO  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   r]   r^   r   r   )r$   objr   r   r   absolute[  s    zPath.absoluteFc             C   sh   | j r| j  | jj| |d}|d kr:| j  t| j }| jjj|}| j	|fdd}|j
| d |S )N)rb   F)r   )r#  )r   r$  r   rd   r   r\   r<  rz   normpathr   r   )r$   rb   rX   Znormedr;  r   r   r   rd   m  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   owner  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   group  s    z
Path.grouprr8   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     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 )NrC  )r   rG  rH  )r   rK  )r$   rG  rH  r   r   r   r   	read_text  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_bytes  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   rG  rH  )r   r\   r   r   r;   r   rP  )r$   rQ  rG  rH  r   r   r   r   
write_text  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   r   r]   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  rY  F)r   r$  r   r   r`   r  r   r   )r$   r   r  rY  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$   r   r   r   r   r     s    zPath.renamec             C   s    | j r| j  | jj| | d S )N)r   r$  r   r*   )r$   r   r   r   r   r*     s    zPath.replacec             C   s"   | j r| j  | jj|| | d S )N)r   r$  r   r   )r$   r   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   r   r   r   r   )r$   r   r   r   r   r   3  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_moder   r   r   r   )r$   r   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   r]  r   r   r   r   )r$   r   r   r   r   is_fileL  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   r]  r   r   r   r   )r$   r   r   r   r   r   Z  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   r]  r   r   r   r   )r$   r   r   r   r   is_block_devicef  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   r]  r   r   r   r   )r$   r   r   r   r   is_char_devices  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   r]  r   r   r   r   )r$   r   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   r]  r   r   r   r   )r$   r   r   r   r   	is_socket  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   r8   ~)r   r   r   r   rw   r   )r$   Zhomedirr   r   r   
expanduser  s
    zPath.expanduser)r   r   )N)r*  )r-  )FrM   )rC  rM   NNN)NN)NN)r*  T)r-  FF)F)0r;   r<   r=   r   r   r   r   r%  r)  r$  r,  r.  r  r/  r0  r3  r5  r8  r:  r<  rd   r   r?  rB  r   rL  rM  rR  rT  r[  r   r   r   r   r   r   r   r*   r\  r   r   r^  r   r_  r`  ra  rb  rd  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     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?    s    zWindowsPath.ownerc             C   s   t dd S )Nz*Path.group() is unsupported on this system)r   )r$   r   r   r   rB    s    zWindowsPath.groupN)r;   r<   r=   r   r?  rB  r   r   r   r   r     s   )r   r   )>r   r   rE  ry   r]   r   r   r.   collectionsr   
contextlibr   r   r   r   r   operatorr   r   r   r	   r
   r   r   r   r   Zurllib.parser   rm   r   r{   r   Zgetwindowsversionr   __all__r    r   r!   r>   r   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>   sl   $

? (c=%  f
   Q