<!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>

]                 @   sP  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 rUd  d l Z e j    d d
  d d  f k rFd  d l m! Z! n d Z d Z! n d Z d d d d d d g Z" d d   Z# Gd d   d e$  Z% Gd d   d e%  Z& Gd d   d e%  Z' e&   Z( e'   Z) Gd d   d  Z* Gd d   d e*  Z+ e+   Z, e d  d!    Z- d" d#   Z. e/ e d$  rDe j0   e.  Z. Gd% d&   d&  Z1 Gd' d(   d(  Z2 Gd) d*   d* e1  Z3 Gd+ d,   d, e1  Z4 Gd- d.   d. e1  Z5 Gd/ d0   d0 e	  Z6 Gd1 d   d e$  Z7 Gd2 d   d e7  Z8 Gd3 d   d e7  Z9 Gd4 d   d e7  Z: Gd5 d   d e: e8  Z; Gd6 d   d e: e9  Z< d S)7    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/python35/lib64/python3.5/pathlib.py_is_wildcard_pattern&   s    r    c               @   s4   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]} | sD q5 | r\ | j | |  } |  j |  \ } } }	 | |	 k r xp t |	 j |   D]. }
 |
 r |
 d k r | j t j |
   q Wn( |	 r |	 d k r | j t j |	   | s | r5 | sQxI | D]A } | sq| r3| j | |  } |  j |  d } | rPqWPq5 W| sb| rs| 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   | r8 | r | r | | | | g | d d   f Sn_ | r | | k sh |  j  |  |  j  |  k r | | | | d d   f Sn | | | | 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               @   sW  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  BZ d Z d d d d h d d   e d	 d  D Bd d   e d	 d  D BZ e 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( 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   s  | d d  } | d d  } | | k rp | | k rp |  j  |  \ } } | d d  } | d d  } n d } | d d  } | | k rZ| | k rZ| | k rZ| j | d  } | d k rZ| j | | d  } | | d k rZ| d k rt |  } | r5| | d |  | | | d d   f S| d  |  | | | d d   f Sd }	 }
 | d k r| |  j k r| d  d  }	 | d d   } | } | | k r| }
 | 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 Sr   )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_partsc             C   s?   t  |  } | s t j   St d  k	 r; |  j t |   Sd  S)N)strosgetcwdr   _ext_to_normal)r$   pathrX   r   r   r   resolve   s    
z_WindowsFlavour.resolvec             C   sv   d } | j  |  rl | d  d  } | d d   } | j  d  rl | | 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   sE   | s
 d S| d j  d  r! d S| d j d  d j   |  j k S)NFr   z\\r8   r'   rM   )rc   	partitionupperreserved_names)r$   r1   r   r   r   is_reserved   s
    z_WindowsFlavour.is_reservedc             C   s   | j  } t |  d k rg | d d k rg | j   d d   j d  } d | t | j d   f Sd t | j   j d   Sd  S)Nr   r8   rL   r@   zfile:///%s/%szutf-8zfile:)driverP   as_posixrR   urlquote_from_bytesencode)r$   r`   rh   restr   r   r   make_uri   s    	"z_WindowsFlavour.make_uric             C   sA  d t  j k r t  j d } nz d t  j k r> t  j d } n[ d t  j k r y t  j d } Wn t k
 rx d } Yn 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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)r;   r<   r=   r"   r(   has_drvntpathpathmodr]   nameis_supportedsetrangeordrQ   Zext_namespace_prefixrf   r+   r9   r[   ra   rN   r_   rg   rm   rt   r   r   r   r   r>   k   s&   /3)	'	
r>   c               @   s   e  Z d  Z d Z d Z d Z e Z e j	 d k Z
 e d d  Z 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   ss   | rb | d | k rb | j  |  } t |  t |  d k rR d | d | f Sd | | f Sn d d | f Sd  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   rE d n	 t j   }   | t |   pi  S)Nc                s)  | j    r d }  x| j   D] } | s% | d k rA q% | d k rh |  j   \ }  } } q% |   | } |  k r  | }  |  d  k	 r q% t d |   y  j |  } Wn= t k
 r } z | j t k r   | }  WYd  d  } ~ Xq% Xd   | <  |  |  }  |   | <q% W|  S)Nr&   r'   z..zSymlink loop from %r)rc   r,   
rpartitionrq   readlinkOSErrorerrnor   )r`   rl   rx   _newpathtargete)_resolveaccessorseenr"   r   r   r   $  s0    

z'_PosixFlavour.resolve.<locals>._resolver&   )r"   	_accessoris_absoluter]   r^   r\   )r$   r`   baser   )r   r   r   r"   r   ra      s    		%z_PosixFlavour.resolvec             C   s   d S)NFr   )r$   r1   r   r   r   rg   L  s    z_PosixFlavour.is_reservedc             C   s   t  |  } d t |  S)Nzfile://)bytesrj   )r$   r`   Zbpathr   r   r   rm   O  s    z_PosixFlavour.make_uric             C   s   | sO y t  j d SWq t k
 rK d d  l } | j t  j    j SYq XnE d d  l } y | j |  j SWn" t k
 r t d |   Yn Xd  S)Nrn   r   z%Can't determine home directory for %r)	r]   ro   rp   pwdgetpwuidgetuidpw_dirgetpwnamrq   )r$   rr   r   r   r   r   rt   U  s    z_PosixFlavour.gethomedirN)r;   r<   r=   r"   r(   ru   	posixpathrw   r]   rx   ry   r+   r9   r[   ra   rg   rm   rt   r   r   r   r   r}     s   ,r}   c               @   s   e  Z d  Z d S)	_AccessorN)r;   r<   r=   r   r   r   r   r   i  s   r   c               @   sE  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 d  r e 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 re re e j  Z q&d 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  |   |  S)N)r\   )pathobjargs)strfuncr   r   wrappedq  s    z._NormalAccessor._wrap_strfunc.<locals>.wrapped)	functoolswrapsstaticmethod)r   r   r   )r   r   _wrap_strfuncp  s    !z_NormalAccessor._wrap_strfuncc                s+   t  j      f d d    } t |  S)Nc                s     t  |   t  |  |  S)N)r\   )ZpathobjAZpathobjBr   )r   r   r   r   w  s    z5_NormalAccessor._wrap_binary_strfunc.<locals>.wrapped)r   r   r   )r   r   r   )r   r   _wrap_binary_strfuncv  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$   r`   r   r   r   r     s    z_NormalAccessor.readlinkN)r;   r<   r=   r   r   r]   statlstatopenlistdirchmodhasattrr   mkdirunlinkrmdirrenamer*   r   supports_symlinksr   r   utimer   r   r   r   r   r   n  s,   r   c             #   sd   y  j   VWnM t k
 r_ i       f d d   } d | _  z	 | VWd    j   XYn Xd  S)Nc                 s=   y   |  SWn* t  k
 r8  |    }   |  <| SYn Xd  S)N)rp   )r   value)cachefuncr   r   wrapper  s
    z_cached.<locals>.wrapperT)
__cached__AttributeErrorclear)r   r   r   )r   r   r   _cached  s    			r   c             C   sr   |  d } |  d d   } | d k r/ t  } n6 d | k rJ t d   n t |  r_ t } 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   s1   | |  _  | r! t |  |  _ n t   |  _ d  S)N)r   r   	successor_TerminatingSelector)r$   r   r   r   r   r%     s    	z_Selector.__init__c             C   s@   t  |  } | j } | j } | j j } |  j | | | |  S)N)typeis_direxistsr   r   _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)rx   r   r%   )r$   rx   r   r   r   r   r%     s    	z_PreciseSelector.__init__c             c   sz   y] | |  s d  S| j  |  j  } | |  r\ x( |  j j | | | |  D] } | VqM WWn t k
 ru d  SYn Xd  S)N)_make_child_relpathrx   r   r   PermissionError)r$   r   r   r   r   r`   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 | |  s d  S| j  j } xl | |  D]^ } | |  } |  j j |  r, | j |  } x( |  j j | | | |  D] }	 |	 Vq{ Wq, WWn t k
 r d  SYn Xd  S)N)_flavourr9   r   matchr   r   r   r   )
r$   r   r   r   r   cfrx   Z
casefoldedr`   rY   r   r   r   r     s    "z_WildcardSelector._select_fromN)r;   r<   r=   r%   r   r   r   r   r   r     s   r   c               @   s4   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   s   | Vyh xa | |  D]S } | j  |  } | |  r | j   r x" |  j | | |  D] } | VqY Wq WWn t k
 r d  SYn Xd  S)N)r   
is_symlink_iterate_directoriesr   )r$   r   r   r   rx   r`   rY   r   r   r   r     s    z/_RecursiveWildcardSelector._iterate_directoriesc       	      c   s   y | |  s d  St  |   } t   } zn |  j j } x[ |  j | | |  D]D } x; | | | | |  D]$ } | | k rl | V| j |  ql WqP WWd  | j   XWd  QRXWn t k
 r d  SYn Xd  S)N)r   rz   r   r   r   addr   r   )	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               @   sF   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   s7   t  |  |  _ | j |  _ | j |  _ | j |  _ d  S)N)r   r   r   r   r   )r$   r`   r   r   r   r%   C  s    z_PathParents.__init__c             C   s4   |  j  s |  j r# t |  j  d St |  j  Sd  S)Nr8   )r   r   rP   r   )r$   r   r   r   __len__J  s    z_PathParents.__len__c             C   sX   | 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               @   sV  e  Z d  Z dW Z d d	   Z d
 d   Z e d d    Z e d d 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 e d# d$    Z d% d&   Z d' d(   Z d) d*   Z d+ d,   Z d- d.   Z d/ d0   Z e e d  d1 d2 Z e e d  d1 d3 Z e d4 d5    Z e d6 d7    Z e d8 d9    Z e d: d;    Z  e d< d=    Z! d> d?   Z" d@ dA   Z# dB dC   Z$ e dD dE    Z% dF dG   Z& dH dI   Z' dJ dK   Z( e dL dM    Z) e dN dO    Z* dP dQ   Z+ dR dS   Z, dT dU   Z- dV S)Xr   r   r   r   _str_hash_pparts_cached_cpartsc             G   s4   |  t  k r' t j d k r! t n t }  |  j |  S)Nr   )r   r]   rx   r   r   _from_parts)r   r   r   r   r   __new__f  s    zPurePath.__new__c             C   s   |  j  t |  j  f S)N)	__class__tupler   )r$   r   r   r   
__reduce__p  s    zPurePath.__reduce__c             C   s   g  } xh | D]` } t  | t  r2 | | j 7} q t  | t  rW | j t |   q t d t |    q W|  j j |  S)Nz/argument should be a path or str object, not %r)	
isinstancer   r   r\   r-   	TypeErrorr   r   r7   )r   r   r1   rD   r   r   r   _parse_argsu  s    zPurePath._parse_argsTc             C   sV   t  j |   } | j |  \ } } } | | _ | | _ | | _ | rR | 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   sB   | s | r. | | |  j  j | d d    S|  j  j |  Sd  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   sR   y |  j  SWn@ t k
 rM |  j |  j |  j |  j  p< d |  _  |  j  SYn Xd  S)Nr'   )r   r   r   r   r   r   )r$   r   r   r   __str__  s    zPurePath.__str__c             C   s"   |  j  } t |   j | j d  S)Nr@   )r   r\   r*   r"   )r$   fr   r   r   ri     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;   ri   )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   rm   )r$   r   r   r   as_uri  s    zPurePath.as_uric             C   sC   y |  j  SWn1 t k
 r> |  j j |  j  |  _  |  j  SYn Xd  S)N)r   r   r   r[   r   )r$   r   r   r   _cparts  s
    zPurePath._cpartsc             C   s5   t  | t  s t S|  j | j k o4 |  j | j k S)N)r   r   NotImplementedr   r   )r$   otherr   r   r   __eq__  s    zPurePath.__eq__c             C   sC   y |  j  SWn1 t k
 r> t t |  j   |  _  |  j  SYn Xd  S)N)r   r   hashr   r   )r$   r   r   r   __hash__  s
    zPurePath.__hash__c             C   s6   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   s6   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   s6   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   s6   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__docz.The drive prefix (letter or UNC path), if any.z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 r7 d S| d S)Nr8   r   r&   rM   )r   rP   r   r   )r$   r1   r   r   r   rx     s    	*zPurePath.namec             C   sT   |  j  } | j d  } d | k  o9 t |  d k  n rL | | d   Sd Sd  S)Nr'   r   r8   r&   )rx   rfindrP   )r$   rx   rH   r   r   r   suffix	  s
    	&zPurePath.suffixc             C   sO   |  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   )rx   endswithrR   r,   )r$   rx   r   r   r   suffixes  s
    	zPurePath.suffixesc             C   sT   |  j  } | j d  } d | k  o9 t |  d k  n rL | d  |  S| Sd  S)Nr'   r   r8   )rx   r  rP   )r$   rx   rH   r   r   r   stem  s
    	&zPurePath.stemc             C   s   |  j  s t d |  f   |  j j | f  \ } } } | s | d |  j j |  j j g k s | s | s t |  d k r t d |   |  j |  j |  j	 |  j
 d  d  | g  S)Nz%r has an empty namer8   zInvalid name %rrM   rM   )rx   r   r   r7   r"   r(   rP   r   r   r   r   )r$   rx   r2   r3   r1   r   r   r   	with_name&  s    	)zPurePath.with_namec             C   s   |  j  } | j | k s0 | j r@ | j | k r@ t d |   | rV | j d  sb | d k rr t d |   |  j } | s t 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   rc   rx   r  rP   r   r   r   r   )r$   r  r   rx   Z
old_suffixr   r   r   with_suffix1  s    	'"		zPurePath.with_suffixc             G   sQ  | s t  d   |  j } |  j } |  j } | rP | | g | d d   } n | } |  j |  \ } } } | r | | 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_toD  s(    				:	zPurePath.relative_toc             C   s=   y |  j  SWn+ t k
 r8 t |  j  |  _  |  j  SYn Xd  S)N)r   r   r   r   )r$   r   r   r   r1   d  s
    zPurePath.partsc             G   s   |  j  |  S)N)r   )r$   r   r   r   r   joinpathp  s    zPurePath.joinpathc             C   s   |  j  | f  S)N)r   )r$   keyr   r   r   __truediv__x  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   sZ   |  j  } |  j } |  j } t |  d k r= | s9 | 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   ru   boolr   )r$   r   r   r   r     s    	zPurePath.is_absolutec             C   s   |  j  j |  j  S)N)r   rg   r   )r$   r   r   r   rg     s    zPurePath.is_reservedc       	      C   s,  |  j  j } | |  } |  j  j | f  \ } } } | sH t d   | rg | | |  j  k rg d S| r | | |  j  k r d S|  j } | s | r t |  t |  k r d S| d d   } n t |  t |  k r d Sx? t t	 |  t	 |   D]" \ } } t
 j | |  sd SqWd S)Nzempty patternFr8   T)r   r9   r7   r   r   r   r   rP   zipr)   r   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   ).r;   r<   r=   r   r   r   classmethodr   r   r   r   r   r   r   ri   r   r   r   propertyr   r   r   r   r   r  r  r   rh   r3   r  rx   r  r  r	  r
  r  r  r1   r  r  r  r  r  r   rg   r   r   r   r   r   r   Z  sZ    
	
			
	
 
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 d d d  Z d d	   Z d
 d   Z d d   Z d d   Z	 d d d  Z
 d d 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 d$ d%   Z d& d'   Z d( d)   Z d* d+   Z d, da d d d d. d/  Z d0 d1   Z d d d2 d3  Z d4 d5   Z d d d6 d7  Z d d8 d9 d:  Z d d; d; d< d=  Z d> d?   Z d@ dA   Z  dB dC   Z! dD dE   Z" dF dG   Z# dH dI   Z$ dJ dK   Z% d; dL dM  Z& dN dO   Z' dP dQ   Z( dR dS   Z) dT dU   Z* dV dW   Z+ dX dY   Z, dZ d[   Z- d\ d]   Z. d^ d_   Z/ d S)br   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   r   Fz$cannot instantiate %r on your system)r   r]   rx   r   r   r   r   ry   r   r;   r   )r   r   kwargsr$   r   r   r   r     s    
zPath.__new__Nc             C   s1   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_closedi  c             C   s   |  j  j |  | |  S)N)r   r   )r$   rx   flagsr   r   r   r   _opener  s    zPath._openeri  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   rt   )r   r   r   r   home  s    z	Path.homec             C   sS   |  j    } y | j    } Wn! t k
 r? t j  |  } Yn Xt j j | |  S)N)r   r   r]   r`   samestat)r$   Z
other_pathstZother_str   r   r   samefile  s    zPath.samefilec             c   sd   |  j  r |  j   xJ |  j j |   D]6 } | d k r; q& |  j |  V|  j  r& |  j   q& Wd  S)Nr'   ..>   r.  r'   )r  r   r   r   r   )r$   rx   r   r   r   iterdir  s    	
	zPath.iterdirc             c   s   | s t  d j |    |  j j |  } |  j j | f  \ } } } | sW | rc t d   t t |   } x | j |   D] } | Vq Wd  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   glob!  s    z	Path.globc             c   s   |  j  j |  } |  j  j | f  \ } } } | s< | rH t d   t d t |   } x | j |   D] } | Vqn Wd  S)Nz%Non-relative patterns are unsupported**)r3  )r   r9   r7   r   r   r   r   )r$   r0  r2   r3   r   r1  rY   r   r   r   rglob/  s    z
Path.rglobc             C   s\   |  j  r |  j   |  j   r# |  S|  j t j   g |  j d d } | j d |   | S)Nr   Fr  )r  r   r   r   r]   r^   r   r   )r$   objr   r   r   absolute;  s    	
%zPath.absolutec             C   s   |  j  r |  j   |  j j |   } | d  k rM |  j   t |  j    } |  j j j |  } |  j	 | f d d } | j
 d |   | S)Nr   Fr  )r  r   r   ra   r   r\   r6  rw   normpathr   r   )r$   rX   Znormedr5  r   r   r   ra   M  s    	

zPath.resolvec             C   s   |  j  j |   S)N)r   r   )r$   r   r   r   r   a  s    z	Path.statc             C   s%   d d  l  } | j |  j   j  j S)Nr   )r   r   r   st_uidpw_name)r$   r   r   r   r   ownerh  s    z
Path.ownerc             C   s%   d d  l  } | j |  j   j  j S)Nr   )grpgetgrgidr   st_gidgr_name)r$   r;  r   r   r   groupo  s    z
Path.grouprr8   c          	   C   s>   |  j  r |  j   t j t |   | | | | | d |  j S)NZopener)r  r   ior   r\   r'  )r$   r   	bufferingencodingerrorsnewliner   r   r   r   v  s    	
!z	Path.openc          	   C   s*   |  j  d d   } | j   SWd  QRXd  S)Nr   rb)r   read)r$   r   r   r   r   
read_bytes  s    zPath.read_bytesc          	   C   s6   |  j  d d d | d |   } | j   SWd  QRXd  S)Nr   r@  rC  rD  )r   rG  )r$   rC  rD  r   r   r   r   	read_text  s    !zPath.read_textc          	   C   s9   t  |  } |  j d d   } | j |  SWd  QRXd  S)Nr   wb)
memoryviewr   write)r$   dataviewr   r   r   r   write_bytes  s    zPath.write_bytesc          	   C   s^   t  | t  s% t d | j j   |  j d d d | d |   } | j |  SWd  QRXd  S)Nzdata must be str, not %sr   wrC  rD  )r   r\   r   r   r;   r   rL  )r$   rM  rC  rD  r   r   r   r   
write_text  s
    !zPath.write_textTc             C   s   |  j  r |  j   | rI y |  j j |  d   Wn t k
 rD Yn Xd  St j t j B} | sl | 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.touchFc             C   s   |  j  r |  j   y |  j j |  |  Wn t k
 r | sP |  j |  k rS   |  j j d d d d  |  j | d d d | Yn) t k
 r | s |  j   r   Yn Xd  S)Nr  TrV  F)r  r   r   r   FileNotFoundErrorr  r   r   )r$   r   r  rV  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   sV   y |  j    WnA t k
 rQ } z! | j t t f k r;   d SWYd  d  } ~ Xn Xd S)NFT)r   r   r   r   r   )r$   r   r   r   r   r     s    zPath.existsc             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r   r   st_moder   r   r   r   )r$   r   r   r   r   r     s    zPath.is_dirc             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r
   r   r[  r   r   r   r   )r$   r   r   r   r   is_file,  s    zPath.is_filec             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r	   r   r[  r   r   r   r   )r$   r   r   r   r   r   :  s    zPath.is_symlinkc             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r   r   r[  r   r   r   r   )r$   r   r   r   r   is_block_deviceF  s    zPath.is_block_devicec             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r   r   r[  r   r   r   r   )r$   r   r   r   r   is_char_deviceS  s    zPath.is_char_devicec             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r   r   r[  r   r   r   r   )r$   r   r   r   r   is_fifo`  s    zPath.is_fifoc             C   s_   y t  |  j   j  SWnA t k
 rZ } z! | j t t f k rD   d SWYd  d  } ~ Xn Xd  S)NF)r   r   r[  r   r   r   r   )r$   r   r   r   r   	is_socketm  s    zPath.is_socketc             C   s   |  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   rt   r   )r$   Zhomedirr   r   r   
expanduserz  s
    &#!zPath.expanduser)r   r  rM   )0r;   r<   r=   r   r   r   r   r!  r%  r   r'  r(  r  r)  r*  r-  r/  r2  r4  r6  ra   r   r:  r?  r   rH  rI  rO  rQ  rX  r   r   r   r   r   r   r   r*   rZ  r   r   r\  r   r]  r^  r_  r`  rb  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   r?    s    zWindowsPath.groupN)r;   r<   r=   r   r:  r?  r   r   r   r   r     s   )=r   r   rA  rv   r]   r   r   r.   collectionsr   
contextlibr   r   r   r   r   operatorr   r   r   r	   r
   r   r   r   r   Zurllib.parser   rj   r   rx   r   Zgetwindowsversionr   __all__r    r   r!   r>   r}   r  r  r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sd   4"		?b		;	' Z 