<!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>
a
    XC?h                     @   s2  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ dZg dZd	Zd
Z dZ!eeeefZ"ee e!fZ#dd Z$dd Z%G dd de&Z'G dd de'Z(G dd de'Z)e( Z*e) Z+G dd dZ,G dd de,Z-e- Z.dd Z/e0edrbe1 e/Z/G dd dZ2G dd  d Z3G d!d" d"e2Z4G d#d$ d$e2Z5G d%d& d&e2Z6G d'd( d(e	Z7G d)d* d*e&Z8ej9:e8 G d+d, d,e8Z;G d-d. d.e8Z<G d/d0 d0e8Z=G d1d2 d2e=e;Z>G d3d4 d4e=e<Z?dS )5    N)Sequence)EINVALENOENTENOTDIREBADFELOOP)
attrgetter)S_ISDIRS_ISLNKS_ISREGS_ISSOCKS_ISBLKS_ISCHRS_ISFIFO)quote_from_bytesT)PurePathPurePosixPathPureWindowsPathPath	PosixPathWindowsPath   {   i  c                 C   s    t | dd tv pt | dd tv S )Nerrnowinerror)getattr_IGNORED_ERROS_IGNORED_WINERRORS)Z	exception r   ,/opt/alt/python39/lib64/python3.9/pathlib.py_ignore_error(   s    r    c                 C   s   d| v pd| v pd| v S )N*?[r   )patr   r   r   _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__7   s    z_Flavour.__init__c                 C   s  g }| j }| j}d }}t|}|D ]}|s.q$|r>|||}| |\}}}	||	v rt|	|D ] }
|
rd|
dkrd|t|
 qdn|	r|	dkr|t|	 |s|r$|s|D ]0}|sq|r|||}| |d }|r qq qq$|s|r|||  |	  |||fS )N .r   )
r(   altsepreversedreplace	splitrootsplitappendsysinternreverse)r+   partsZparsedr(   r/   drvrootitpartZrelxr   r   r   parse_parts:   s@    
z_Flavour.parse_partsc                 C   sz   |r*|sp|rp|||| g|dd   fS nF|rb||ksJ|  ||  |krp||||dd   fS n|||| fS |||fS N   )casefold)r+   r9   r:   r8   Zdrv2Zroot2Zparts2r   r   r   join_parsed_parts`   s    z_Flavour.join_parsed_partsN)__name__
__module____qualname__r,   r>   rB   r   r   r   r   r&   3   s   &r&   c                   @   s   e Zd ZdZdZdZeZej	dkZ
edZdZh ddd	 d
D B dd	 d
D B ZefddZ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ntZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\>   ZNULzCONOUT$ZCONZPRNzCONIN$ZAUXc                 C   s   h | ]}d | qS )zCOM%sr   .0cr   r   r   	<setcomp>       z_WindowsFlavour.<setcomp>u   123456789¹²³c                 C   s   h | ]}d | qS )zLPT%sr   rJ   r   r   r   rM      rN   c                 C   s\  |dd }|dd }||krP||krP|  |\}}|dd }|dd }nd}|dd }||kr||kr||kr||d}|dkr|||d }||d kr|dkrt|}|r||d|  |||d d  fS |d | |||d d  fS d }	}
|dkr6|| jv r6|d d }	|dd  }|}||krN|}
||}||	 |
|fS )Nr   r@      r-      :)_split_extended_pathfindlendrive_letterslstrip)r+   r<   r(   firstsecondprefixZthirdindexZindex2r9   r:   r   r   r   r2      s6    "

z_WindowsFlavour.splitrootc                 C   s   |  S r'   lowerr+   sr   r   r   rA      s    z_WindowsFlavour.casefoldc                 C   s   dd |D S )Nc                 S   s   g | ]}|  qS r   r\   )rK   pr   r   r   
<listcomp>   rN   z2_WindowsFlavour.casefold_parts.<locals>.<listcomp>r   r+   r8   r   r   r   casefold_parts   s    z_WindowsFlavour.casefold_partsc                 C   s   t t|t jjS r'   )recompilefnmatch	translate
IGNORECASE	fullmatchr+   patternr   r   r   compile_pattern   s    z_WindowsFlavour.compile_patternc                 C   sX   d}| |rP|d d }|dd  }| drP||d d 7 }d|dd   }||fS )Nr-      zUNC\rP   rG   )
startswith)r+   r_   Z
ext_prefixrZ   r   r   r   rS      s    

z$_WindowsFlavour._split_extended_pathc                 C   sJ   |sdS |d  drdS |d dd dd d}| | jv S )NFr   z\\rQ   r.   rR    )rn   	partitionrstripupperreserved_names)r+   r8   namer   r   r   is_reserved   s    "z_WindowsFlavour.is_reservedc                 C   sd   |j }t|dkrJ|d dkrJ| dd  d}d|t|df S dt| d S d S )NrO   r@   rR   rH   zfile:///%s/%szutf-8zfile:)driverU   as_posixrW   urlquote_from_bytesencode)r+   pathrv   restr   r   r   make_uri   s    z_WindowsFlavour.make_uric                 C   s   dt jv rt jd }nHdt jv rVzt jd }W n tyD   d}Y n0 |t jd  }ntd|rt jd |kr| |f\}}}|d t jd krtd| ||d< |s|r|| | |d	d   }n
| |}|S )
NZUSERPROFILEZHOMEPATHZ	HOMEDRIVEr-   zCan't determine home directoryZUSERNAMErQ   %Can't determine home directory for %rr@   )osenvironKeyErrorRuntimeErrorr>   r)   )r+   usernameuserhomer9   r:   r8   r   r   r   
gethomedir   s*    



z_WindowsFlavour.gethomedirN)rC   rD   rE   r(   r/   has_drvntpathpathmodr~   rt   is_supportedsetrV   Zext_namespace_prefixrs   r2   rA   rc   rl   rS   ru   r|   r   r   r   r   r   rF   r   s*   
'
rF   c                   @   sb   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d ZdS )_PosixFlavourrH   r-   FrI   c                 C   sV   |rH|d |krH| |}t|t| dkr<d|d |fS d||fS n
dd|fS d S )Nr   rO   r-   )rW   rU   )r+   r<   r(   Zstripped_partr   r   r   r2     s    
z_PosixFlavour.splitrootc                 C   s   |S r'   r   r^   r   r   r   rA     s    z_PosixFlavour.casefoldc                 C   s   |S r'   r   rb   r   r   r   rc     s    z_PosixFlavour.casefold_partsc                 C   s   t t|jS r'   )rd   re   rf   rg   ri   rj   r   r   r   rl   "  s    z_PosixFlavour.compile_patternc                 C   s   dS NFr   rb   r   r   r   ru   %  s    z_PosixFlavour.is_reservedc                 C   s   t |}dt| S )Nzfile://)bytesrx   )r+   rz   Zbpathr   r   r   r|   (  s    z_PosixFlavour.make_uric                 C   sx   |s>zt jd W S  ty:   dd l}|t  j Y S 0 n6dd l}z||jW S  tyr   td| Y n0 d S )NHOMEr   r}   )	r~   r   r   pwdgetpwuidgetuidpw_dirgetpwnamr   )r+   r   r   r   r   r   r   .  s    z_PosixFlavour.gethomedirN)rC   rD   rE   r(   r/   r   	posixpathr   r~   rt   r   r2   rA   rc   rl   ru   r|   r   r   r   r   r   r     s   
r   c                   @   s   e Zd ZdS )	_AccessorN)rC   rD   rE   r   r   r   r   r   B  s   r   c                   @   s   e Zd ZejZejZejZejZejZej	Z	e
edr>ejZndd ZejZejZe
edrdejZnedd ZejZejZejZe
edrejZn
dd	d
ZejZdd Zdd Zdd ZejZeejjZeejjZdS )_NormalAccessorlchmodc                 C   s   t dd S )Nz%lchmod() not available on this systemNotImplementedError)r+   Zpathobjmoder   r   r   r   X  s    z_NormalAccessor.lchmodlinkc                 C   s   t dd S )Nz&os.link() not available on this systemr   r+   targetr   r   r   link_tob  s    z_NormalAccessor.link_tosymlinkFc                 C   s   t dd S )Nz)os.symlink() not available on this systemr   )r+   srcZdsttarget_is_directoryr   r   r   r   o  s    z_NormalAccessor.symlinkc                 C   s
   t |S r'   )r~   readlinkr+   rz   r   r   r   r   u  s    z_NormalAccessor.readlinkc                 C   s>   zdd l }|| |jjW S  ty8   tdY n0 d S )Nr   z*Path.owner() is unsupported on this system)r   r   statst_uidZpw_nameImportErrorr   )r+   rz   r   r   r   r   ownerx  s
    z_NormalAccessor.ownerc                 C   s>   zdd l }|| |jjW S  ty8   tdY n0 d S )Nr   z*Path.group() is unsupported on this system)grpZgetgrgidr   st_gidZgr_namer   r   )r+   rz   r   r   r   r   group  s
    z_NormalAccessor.groupN)F)rC   rD   rE   r~   r   lstatopenlistdirscandirchmodhasattrr   mkdirunlinkr   r   staticmethodrmdirrenamer1   r   utimer   r   r   getcwdrz   
expanduserrealpathr   r   r   r   r   G  s8   




r   c                 C   sR   | d }| dd  }|dkr"t }n$d|v r4tdnt|rBt}nt}||||S )Nr   r@   **z:Invalid pattern: '**' can only be an entire path component)_RecursiveWildcardSelector
ValueErrorr%   _WildcardSelector_PreciseSelector)pattern_partsflavourr$   child_partsclsr   r   r   _make_selector  s    
r   	lru_cachec                   @   s   e Zd Zdd Zdd ZdS )	_Selectorc                 C   s0   || _ |rt||| _d| _nt | _d| _d S NTF)r   r   	successordironly_TerminatingSelector)r+   r   r   r   r   r   r,     s    z_Selector.__init__c                 C   s<   t |}|j}|j}|jj}||s,tg S | ||||S r'   )typeis_direxists	_accessorr   iter_select_from)r+   parent_pathZpath_clsr   r   r   r   r   r   select_from  s    z_Selector.select_fromN)rC   rD   rE   r,   r   r   r   r   r   r     s   	r   c                   @   s   e Zd Zdd ZdS )r   c                 c   s
   |V  d S r'   r   )r+   r   r   r   r   r   r   r   r     s    z!_TerminatingSelector._select_fromN)rC   rD   rE   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   || _ t| || d S r'   )rt   r   r,   )r+   rt   r   r   r   r   r   r,     s    z_PreciseSelector.__init__c                 c   sZ   z@| | j}| jr|n||r>| j||||D ]
}|V  q2W n tyT   Y d S 0 d S r'   )_make_child_relpathrt   r   r   r   PermissionError)r+   r   r   r   r   rz   r`   r   r   r   r     s    z_PreciseSelector._select_fromNrC   rD   rE   r,   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   | || _t| || d S r'   )rl   matchr   r,   r+   r$   r   r   r   r   r   r,     s    z_WildcardSelector.__init__c                 c   s   z||}t |}W d    n1 s(0    Y  |D ]}| jrz| sNW q6W n: ty } z"t|sj W Y d }~q6W Y d }~n
d }~0 0 |j}	| |	r6||	}
| j	|
|||D ]
}|V  qq6W n t
y   Y d S 0 d S r'   )listr   r   OSErrorr    rt   r   r   r   r   r   )r+   r   r   r   r   
scandir_itentriesentryert   rz   r`   r   r   r   r     s&    
&"

z_WildcardSelector._select_fromNr   r   r   r   r   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C   s   t | || d S r'   )r   r,   r   r   r   r   r,     s    z#_RecursiveWildcardSelector.__init__c                 c   s   |V  z||}t |}W d    n1 s.0    Y  |D ]v}d}z| }W n. ty~ } zt|sj W Y d }~n
d }~0 0 |r<| s<||j}	| |	||D ]
}
|
V  qq<W n ty   Y d S 0 d S r   )	r   r   r   r    
is_symlinkr   rt   _iterate_directoriesr   )r+   r   r   r   r   r   r   Zentry_is_dirr   rz   r`   r   r   r   r     s"    
&z/_RecursiveWildcardSelector._iterate_directoriesc           	      c   s   zjt  }zT| jj}| |||D ]0}|||||D ]}||vr2|V  || q2q W |  n
|  0 W n ty~   Y d S 0 d S r'   )r   r   r   r   addclearr   )	r+   r   r   r   r   ZyieldedZsuccessor_selectZstarting_pointr`   r   r   r   r     s    z'_RecursiveWildcardSelector._select_fromN)rC   rD   rE   r,   r   r   r   r   r   r   r     s   r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )_PathParents)_pathcls_drv_root_partsc                 C   s&   t || _|j| _|j| _|j| _d S r'   )r   r   r   r   r   r   r   r   r   r,   $  s    
z_PathParents.__init__c                 C   s(   | j s| jrt| jd S t| jS d S r?   )r   r   rU   r   r*   r   r   r   __len__+  s    z_PathParents.__len__c                 C   s@   |dk s|t | krt|| j| j| j| jd | d  S )Nr   r@   )rU   
IndexErrorr   _from_parsed_partsr   r   r   )r+   idxr   r   r   __getitem__1  s
    z_PathParents.__getitem__c                 C   s   d | jjS )Nz<{}.parents>)formatr   rC   r*   r   r   r   __repr__7  s    z_PathParents.__repr__N)rC   rD   rE   	__slots__r,   r   r   r   r   r   r   r   r     s
   r   c                   @   s  e Zd Zd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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ed/d0d1Zeed2d3d1Zed4d5 Zed6d7 Z ed8d9 Z!ed:d; Z"ed<d= Z#d>d? Z$d@dA Z%dBdC Z&dDdE Z'dFdG Z(edHdI Z)dJdK Z*dLdM Z+dNdO Z,edPdQ Z-edRdS Z.dTdU Z/dVdW Z0dXdY Z1dZS )]r   )r   r   r   _str_hash_pparts_cached_cpartsc                 G   s$   | t u rtjdkrtnt} | |S )NrI   )r   r~   rt   r   r   _from_parts)r   argsr   r   r   __new__I  s    zPurePath.__new__c                 C   s   | j t| jfS r'   )	__class__tupler   r*   r   r   r   
__reduce__S  s    zPurePath.__reduce__c                 C   sd   g }|D ]N}t |tr"||j7 }qt|}t |trF|t| qtdt| q| j	
|S )NzNargument should be a str object or an os.PathLike object returning str, not %r)
isinstancer   r   r~   fspathstrr4   	TypeErrorr   _flavourr>   )r   r   r8   ar   r   r   _parse_argsX  s    


zPurePath._parse_argsTc                 C   s<   t | }||\}}}||_||_||_|r8|  |S r'   )objectr   r   r   r   r   _init)r   r   initr+   r9   r:   r8   r   r   r   r   l  s    
zPurePath._from_partsc                 C   s,   t | }||_||_||_|r(|  |S r'   )r   r   r   r   r   r   )r   r9   r:   r8   r   r+   r   r   r   r   y  s    
zPurePath._from_parsed_partsc                 C   s4   |s|r$|| | j |dd   S | j |S d S r?   )r   r)   )r   r9   r:   r8   r   r   r   _format_parsed_parts  s    zPurePath._format_parsed_partsc                 C   s   d S r'   r   r*   r   r   r   r     s    zPurePath._initc                 C   s@   |  |\}}}| j| j| j| j|||\}}}| |||S r'   )r   r   rB   r   r   r   r   )r+   r   r9   r:   r8   r   r   r   _make_child  s
    
zPurePath._make_childc                 C   s@   z| j W S  ty:   | | j| j| jp,d| _ | j  Y S 0 d S )Nr.   )r   AttributeErrorr  r   r   r   r*   r   r   r   __str__  s    zPurePath.__str__c                 C   s   t | S r'   )r   r*   r   r   r   
__fspath__  s    zPurePath.__fspath__c                 C   s   | j }t| |jdS )NrH   )r   r   r1   r(   r+   fr   r   r   rw     s    zPurePath.as_posixc                 C   s
   t | S r'   )r~   fsencoder*   r   r   r   	__bytes__  s    zPurePath.__bytes__c                 C   s   d | jj|  S )Nz{}({!r}))r   r   rC   rw   r*   r   r   r   r     s    zPurePath.__repr__c                 C   s   |   std| j| S )Nz.relative path can't be expressed as a file URI)is_absoluter   r   r|   r*   r   r   r   as_uri  s    zPurePath.as_uric                 C   s6   z| j W S  ty0   | j| j| _ | j  Y S 0 d S r'   )r   r  r   rc   r   r*   r   r   r   _cparts  s
    zPurePath._cpartsc                 C   s&   t |tstS | j|jko$| j|ju S r'   )r   r   NotImplementedr  r   r+   otherr   r   r   __eq__  s    
zPurePath.__eq__c                 C   s6   z| j W S  ty0   tt| j| _ | j  Y S 0 d S r'   )r   r  hashr   r  r*   r   r   r   __hash__  s
    zPurePath.__hash__c                 C   s&   t |tr| j|jurtS | j|jk S r'   r   r   r   r  r  r  r   r   r   __lt__  s    zPurePath.__lt__c                 C   s&   t |tr| j|jurtS | j|jkS r'   r  r  r   r   r   __le__  s    zPurePath.__le__c                 C   s&   t |tr| j|jurtS | j|jkS r'   r  r  r   r   r   __gt__  s    zPurePath.__gt__c                 C   s&   t |tr| j|jurtS | j|jkS r'   r  r  r   r   r   __ge__  s    zPurePath.__ge__c                 C   s   | S r'   r   )r   r   r   r   r   __class_getitem__  s    zPurePath.__class_getitem__r   z.The drive prefix (letter or UNC path), if any.)docr   zThe root of the path, if any.c                 C   s   | j | j }|S r'   )r   r   )r+   anchorr   r   r   r    s    zPurePath.anchorc                 C   s.   | j }t|| js| jrdndkr&dS |d S )Nr@   r   r-   rQ   )r   rU   r   r   rb   r   r   r   rt     s    zPurePath.namec                 C   sD   | j }|d}d|  k r,t|d k r<n n||d  S dS d S )Nr.   r   r@   r-   rt   rfindrU   r+   rt   ir   r   r   suffix  s
    
 zPurePath.suffixc                 C   s:   | j }|drg S |d}dd |ddd  D S )Nr.   c                 S   s   g | ]}d | qS )r.   r   )rK   r  r   r   r   ra     rN   z%PurePath.suffixes.<locals>.<listcomp>r@   )rt   endswithrW   r3   r+   rt   r   r   r   suffixes  s
    

zPurePath.suffixesc                 C   sD   | j }|d}d|  k r,t|d k r<n n|d | S |S d S )Nr.   r   r@   r  r  r   r   r   stem  s
    
 zPurePath.stemc                 C   s   | j std| f | j|f\}}}|rX|d | jj| jjfv sX|sX|sXt|dkrdtd| | | j| j	| j
d d |g S )N%r has an empty namerQ   r@   zInvalid name %r)rt   r   r   r>   r(   r/   rU   r   r   r   r   )r+   rt   r9   r:   r8   r   r   r   	with_name  s    
zPurePath.with_namec                 C   s   |  || j S r'   )r%  r  )r+   r#  r   r   r   	with_stem%  s    zPurePath.with_stemc                 C   s   | j }|j|v s |jr.|j|v r.td|f |r<|drD|dkrPtd| | j}|shtd| f | j}|s||| }n|d t|  | }| | j	| j
| jd d |g S )NzInvalid suffix %rr.   r$  rQ   )r   r(   r/   r   rn   rt   r  rU   r   r   r   r   )r+   r  r  rt   Z
old_suffixr   r   r   with_suffix)  s    
zPurePath.with_suffixc                 G   s   |st d| j}| j}| j}|r8||g|dd   }n|}| |\}}}|rf||g|dd   }	n|}	t|	}
| jj}|
dkr|s|rn||d |
 ||	kr| |||}t	d
t| t|| d|
dkr|nd||
d  S )Nzneed at least one argumentr@   r   zU{!r} is not in the subpath of {!r} OR one path is relative and the other is absolute.r-   )r   r   r   r   r   rU   r   rc   r  r   r   r   r   )r+   r  r8   r9   r:   Z	abs_partsZto_drvZto_rootZto_partsZto_abs_partsncfZ	formattedr   r   r   relative_to>  s,    	*
zPurePath.relative_toc                 G   s*   z| j |  W dS  ty$   Y dS 0 d S r   )r*  r   r  r   r   r   is_relative_to_  s
    
zPurePath.is_relative_toc                 C   s2   z| j W S  ty,   t| j| _ | j  Y S 0 d S r'   )r   r  r   r   r*   r   r   r   r8   h  s
    zPurePath.partsc                 G   s
   |  |S r'   )r  )r+   r   r   r   r   joinpatht  s    zPurePath.joinpathc                 C   s*   z|  |fW S  ty$   t Y S 0 d S r'   )r  r   r  r+   keyr   r   r   __truediv__|  s    zPurePath.__truediv__c                 C   s0   z|  |g| j W S  ty*   t Y S 0 d S r'   )r   r   r   r  r-  r   r   r   __rtruediv__  s    zPurePath.__rtruediv__c                 C   s@   | j }| j}| j}t|dkr*|s&|r*| S | |||d d S )Nr@   rQ   )r   r   r   rU   r   )r+   r9   r:   r8   r   r   r   parent  s    zPurePath.parentc                 C   s   t | S r'   )r   r*   r   r   r   parents  s    zPurePath.parentsc                 C   s   | j s
dS | jj pt| jS r   )r   r   r   boolr   r*   r   r   r   r
    s    zPurePath.is_absolutec                 C   s   | j | jS r'   )r   ru   r   r*   r   r   r   ru     s    zPurePath.is_reservedc           	      C   s   | j j}||}| j |f\}}}|s0td|rF||| jkrFdS |r\||| jkr\dS | j}|sj|rt|t|kr~dS |dd  }nt|t|krdS tt	|t	|D ]\}}t
||s dS qdS )Nzempty patternFr@   T)r   rA   r>   r   r   r   r  rU   zipr0   rf   Zfnmatchcase)	r+   Zpath_patternr)  r9   r:   Z	pat_partsr8   r<   r$   r   r   r   r     s(    zPurePath.matchN)T)T)2rC   rD   rE   r   r   r   classmethodr   r   r   r  r   r  r  r  rw   r	  r   r  propertyr  r  r  r  r  r  r  r  r   rv   r:   r  rt   r  r"  r#  r%  r&  r'  r*  r+  r8   r,  r/  r0  r1  r2  r
  ru   r   r   r   r   r   r   ;  sz   	

	







	!	

	
r   c                   @   s   e Zd ZeZdZdS )r   r   N)rC   rD   rE   _posix_flavourr   r   r   r   r   r   r     s   r   c                   @   s   e Zd ZeZdZdS )r   r   N)rC   rD   rE   _windows_flavourr   r   r   r   r   r   r     s   r   c                   @   s  e Zd ZdZdd ZdcddZdd Zd	d
 Zdd ZddddZ	deddZ
edd Zedd Zdd Zdd Zdd Zdd Zdd  Zdfd"d#Zd$d% Zd&d' Zd(d) Zdgd,d-Zd.d/ Zdhd0d1Zd2d3 Zdid4d5Zd6d7 Zdjd9d:Zdkd;d<Zd=d> Zd?d@ Z dldAdBZ!dCdD Z"dEdF Z#dGdH Z$dIdJ Z%dmdKdLZ&dMdN Z'dOdP Z(dQdR Z)dSdT Z*dUdV Z+dWdX Z,dYdZ Z-d[d\ Z.d]d^ Z/d_d` Z0dadb Z1dS )nr   )r   c                 O   sL   | t u rtjdkrtnt} | j|dd}|jjs@td| j	f |
  |S )NrI   Fr   z$cannot instantiate %r on your system)r   r~   rt   r   r   r   r   r   r   rC   r   )r   r   kwargsr+   r   r   r   r     s    zPath.__new__Nc                 C   s   |d ur|j | _ nt| _ d S r'   )r   _normal_accessor)r+   templater   r   r   r     s    
z
Path._initc                 C   s   | j |g }| | j| j|S r'   )r   r   r   r   )r+   r<   r8   r   r   r   r     s    zPath._make_child_relpathc                 C   s   | S r'   r   r*   r   r   r   	__enter__  s    zPath.__enter__c                 C   s   d S r'   r   )r+   tvtbr   r   r   __exit__  s    	zPath.__exit__  c                 C   s   | j | ||S r'   r   r   )r+   rt   flagsr   r   r   r   _opener  s    zPath._opener  c                 C   s   | j | ||S r'   rC  )r+   rD  r   r   r   r   	_raw_open  s    zPath._raw_openc                 C   s   | t  S r'   )r~   r   r   r   r   r   cwd  s    zPath.cwdc                 C   s   | |  j d S r'   )r   r   rH  r   r   r   home   s    z	Path.homec                 C   sB   |   }z|  }W n ty2   | j |}Y n0 tj||S r'   )r   r  r   r~   rz   samestat)r+   Z
other_pathstZother_str   r   r   samefile'  s    zPath.samefilec                 c   s,   | j | D ]}|dv rq| |V  qd S )N>   z..r.   )r   r   r   r!  r   r   r   iterdir2  s    zPath.iterdirc                 c   sn   t d| | |s td|| j|f\}}}|s<|rDtdtt|| j}|	| D ]
}|V  q^d S )Nzpathlib.Path.globzUnacceptable pattern: {!r}%Non-relative patterns are unsupported)
r5   auditr   r   r   r>   r   r   r   r   r+   rk   r9   r:   r   Zselectorr`   r   r   r   glob<  s    z	Path.globc                 c   s`   t d| | | j|f\}}}|s*|r2tdtdt| | j}|| D ]
}|V  qPd S )Nzpathlib.Path.rglobrO  )r   )r5   rP  r   r>   r   r   r   r   rQ  r   r   r   rglobJ  s    z
Path.rglobc                 C   s6   |   r| S | jt g| j dd}|j| d |S NFr9  )r<  )r
  r   r~   r   r   r   )r+   objr   r   r   absoluteW  s
    zPath.absoluteFc              
   C   s   dd }z| j j| |d}W n. tyJ } z||  W Y d }~n
d }~0 0 | |f}|sz|  W n, ty } z|| W Y d }~n
d }~0 0 |S )Nc                 S   s0   t | dd}| jtks|tkr,td| j d S )Nr   r   zSymlink loop from %r)r   r   r   _WINERROR_CANT_RESOLVE_FILENAMEr   filename)r   r   r   r   r   check_eloopn  s    z!Path.resolve.<locals>.check_eloop)strict)r   r   r   r   r   )r+   rZ  rY  r_   r   r`   r   r   r   resolveg  s    zPath.resolvec                 C   s   | j | S r'   )r   r   r*   r   r   r   r     s    z	Path.statc                 C   s   | j | S r'   )r   r   r*   r   r   r   r     s    z
Path.ownerc                 C   s   | j | S r'   )r   r   r*   r   r   r   r     s    z
Path.grouprrQ   c              	   C   s   t j| |||||| jdS )N)Zopener)ior   rE  )r+   r   	bufferingencodingerrorsnewliner   r   r   r     s    z	Path.openc                 C   s8   | j dd}| W  d    S 1 s*0    Y  d S )Nrbr   r   readr  r   r   r   
read_bytes  s    zPath.read_bytesc                 C   s<   | j d||d}| W  d    S 1 s.0    Y  d S )Nr\  r   r_  r`  rd  )r+   r_  r`  r  r   r   r   	read_text  s    zPath.read_textc                 C   sB   t |}| jdd}||W  d    S 1 s40    Y  d S )Nwbrc  )
memoryviewr   write)r+   dataZviewr  r   r   r   write_bytes  s    zPath.write_bytesc                 C   sX   t |tstd|jj | jd||d}||W  d    S 1 sJ0    Y  d S )Nzdata must be str, not %swrg  )r   r   r   r   rC   r   rk  )r+   rl  r_  r`  r  r   r   r   
write_text  s    
zPath.write_textc                 C   s,   | j | }| j|fdd}|j| d |S rT  )r   r   r   r   )r+   rz   rU  r   r   r   r     s    zPath.readlinkTc                 C   sb   |r.z| j | d  W n ty(   Y n0 d S tjtjB }|sH|tjO }| ||}t| d S r'   )	r   r   r   r~   O_CREATO_WRONLYO_EXCLrG  close)r+   r   exist_okrD  fdr   r   r   touch  s    
z
Path.touchc                 C   sx   z| j | | W n` tyT   |r.| j| kr0 | jjddd | j|d|d Y n  tyr   |rl|  sn Y n0 d S )NT)r2  rt  F)r   r   FileNotFoundErrorr1  r   r   )r+   r   r2  rt  r   r   r   r     s    z
Path.mkdirc                 C   s   | j | | d S r'   )r   r   r+   r   r   r   r   r     s    z
Path.chmodc                 C   s   | j | | d S r'   )r   r   rx  r   r   r   r     s    zPath.lchmodc                 C   s.   z| j |  W n ty(   |s$ Y n0 d S r'   )r   r   rw  )r+   Z
missing_okr   r   r   r     s
    zPath.unlinkc                 C   s   | j |  d S r'   )r   r   r*   r   r   r   r     s    z
Path.rmdirc                 C   s   | j | S r'   )r   r   r*   r   r   r   r     s    z
Path.lstatc                 C   s   | j | | | |S r'   )r   r   r   r   r   r   r   r     s    
zPath.renamec                 C   s   | j | | | |S r'   )r   r1   r   r   r   r   r   r1   !  s    
zPath.replacec                 C   s   | j || | d S r'   )r   r   )r+   r   r   r   r   r   
symlink_to.  s    zPath.symlink_toc                 C   s   | j | | d S r'   )r   r   r   r   r   r   r   5  s    
zPath.link_toc              
   C   sT   z|    W nB ty< } zt|s& W Y d }~dS d }~0  tyN   Y dS 0 dS NFT)r   r   r    r   r+   r   r   r   r   r   C  s    zPath.existsc              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r	   r   st_moder   r    r   r{  r   r   r   r   R  s    zPath.is_dirc              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r   r   r|  r   r    r   r{  r   r   r   is_fileb  s    zPath.is_filec                 C   sn   |   r|  sdS z| j j}W n ty8   Y dS 0 |  j}||krPdS |  j}| j j}||kS rz  )r   r   r1  r   st_devr   st_ino)r+   Z
parent_devZdevZinoZ
parent_inor   r   r   is_mounts  s    

zPath.is_mountc              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r
   r   r|  r   r    r   r{  r   r   r   r     s    zPath.is_symlinkc              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r   r   r|  r   r    r   r{  r   r   r   is_block_device  s    zPath.is_block_devicec              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r   r   r|  r   r    r   r{  r   r   r   is_char_device  s    zPath.is_char_devicec              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r   r   r|  r   r    r   r{  r   r   r   is_fifo  s    zPath.is_fifoc              
   C   sX   zt |  jW S  ty@ } zt|s* W Y d }~dS d }~0  tyR   Y dS 0 d S r   )r   r   r|  r   r    r   r{  r   r   r   	is_socket  s    zPath.is_socketc                 C   s`   | j s\| js\| jr\| jd d d dkr\| j| jd dd  }| |g| jdd   S | S )Nr   r@   ~)r   r   r   r   r   r   )r+   Zhomedirr   r   r   r     s    zPath.expanduser)N)rB  )rF  )F)r\  rQ   NNN)NN)NN)rB  T)rF  FF)F)F)2rC   rD   rE   r   r   r   r   r=  rA  rE  rG  r5  rI  rJ  rM  rN  rR  rS  rV  r[  r   r   r   r   rf  rh  rm  ro  r   rv  r   r   r   r   r   r   r   r1   ry  r   r   r   r}  r  r   r  r  r  r  r   r   r   r   r   r     sf   	 
	

	



  
	
	

	



r   c                   @   s   e Zd ZdZdS )r   r   N)rC   rD   rE   r   r   r   r   r   r     s   r   c                   @   s   e Zd ZdZdd ZdS )r   r   c                 C   s   t dd S )Nz-Path.is_mount() is unsupported on this systemr   r*   r   r   r   r    s    zWindowsPath.is_mountN)rC   rD   rE   r   r  r   r   r   r   r     s   r   )@rf   	functoolsr]  r   r~   r   rd   r5   _collections_abcr   r   r   r   r   r   r   operatorr   r   r	   r
   r   r   r   r   r   Zurllib.parser   rx   Zsupports_symlinks__all__Z_WINERROR_NOT_READYZ_WINERROR_INVALID_NAMErW  r   r   r    r%   r   r&   rF   r   r8  r7  r   r   r;  r   r   r   r   r   r   r   r   r   r   PathLikeregisterr   r   r   r   r   r   r   r   r   <module>   sp   $	? 9F,   
    