B
    Áì2aDW  ã            &   @   s4  d Z dZdZdZdZdZdZdZdZdd	l	Z	dd	l
Z
dd	lZdd	lZdd
lT dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0g&Zd1d2„ Zd3d„ Zd4d„ Zd5d„ Zd6d„ Zd7d„ Zd8d„ Zejj e_ d9d„ Zd:d„ Zd;d„ Zd<d„ Zydd=lmZ W n ek
�r(   d	ZY nX d>d„ Zd?d„ Zd@d„ ZdAd „ Z dBdC„ Z!yddDlm"Z" W n ek
�r|   e!Z#Y n
X dEd!„ Z#e#Z$e%e
dFƒ�o¤e
 &¡ dG dHkZ'dPdId,„Z(dJd0„ Z)y,e
 &¡ d	dH… dKk�rÞddLlm*Z* ne‚W n" e+efk
�r   dMdN„ Z*Y nX yddOlm,Z- W n ek
�r.   Y nX d	S )Qz�Common pathname manipulations, WindowsNT/95 version.

Instead of importing this module directly, import os and refer to this
module as os.path.
Ú.z..ú\ú;ú/z.;C:\binZnulé    N)Ú*ÚnormcaseÚisabsÚjoinÚ
splitdriveÚsplitÚsplitextÚbasenameÚdirnameÚcommonprefixÚgetsizeÚgetmtimeÚgetatimeÚgetctimeÚislinkÚexistsÚlexistsÚisdirÚisfileÚismountÚ
expanduserÚ
expandvarsÚnormpathÚabspathÚcurdirÚpardirÚsepÚpathsepÚdefpathÚaltsepÚextsepÚdevnullÚrealpathÚsupports_unicode_filenamesÚrelpathÚsamefileÚsameopenfileÚsamestatÚ
commonpathc             C   s   t | tƒrdS dS d S )Ns   \/z\/)Ú
isinstanceÚbytes)Úpath© r0   ú2/var/www/html/prediksi/Python-3.7.12/Lib/ntpath.pyÚ_get_bothseps"   s    
r2   c          	   C   sx   t  | ¡} y.t| tƒr&|  dd¡ ¡ S |  dd¡ ¡ S W n: ttfk
rr   t| ttfƒsltd| j	j
 ƒd‚‚ Y nX dS )zaNormalize case of pathname.

    Makes all characters lowercase and all slashes into backslashes.ó   /ó   \r   r   z0normcase() argument must be str or bytes, not %rN)ÚosÚfspathr-   r.   ÚreplaceÚlowerÚ	TypeErrorÚAttributeErrorÚstrÚ	__class__Ú__name__)Úsr0   r0   r1   r   ,   s    

c             C   s2   t  | ¡} t| ƒd } t| ƒdko0| d t| ƒkS )zTest whether a path is absoluteé   r   )r5   r6   r
   Úlenr2   )r>   r0   r0   r1   r   C   s    
c       
   
   G   sT  t  | ¡} t| tƒr"d}d}d}nd}d}d}yð|sD| d d… |  t| ƒ\}}xŽtt j|ƒD ]~}t|ƒ\}}	|	r’|	d |kr’|s†|sŠ|}|	}q^n*|r¼||kr¼| ¡ | ¡ kr¸|}|	}q^|}|rÔ|d |krÔ|| }||	 }q^W |�r|d |k�r|�r|dd … |k�r|| | S || S  ttt	fk
�rN   t
jd	| f|žŽ  ‚ Y nX d S )
Nr4   s   \/ó   :r   z\/ú:r   éÿÿÿÿr	   )r5   r6   r-   r.   r
   Úmapr8   r9   r:   ÚBytesWarningÚgenericpathÚ_check_arg_types)
r/   Úpathsr    ÚsepsÚcolonZresult_driveZresult_pathÚpZp_driveZp_pathr0   r0   r1   r	   K   sF    

c             C   s  t  | ¡} t| ƒdk�rt| tƒr0d}d}d}nd}d}d}|  ||¡}|dd… |d krä|dd	… |krä| |d¡}|d
kr�| dd… | fS | ||d ¡}||d kr¼| dd… | fS |d
krÌt| ƒ}| d|… | |d… fS |dd… |k�r| dd… | dd… fS | dd… | fS )aÚ  Split a pathname into drive/UNC sharepoint and relative path specifiers.
    Returns a 2-tuple (drive_or_unc, path); either part may be empty.

    If you assign
        result = splitdrive(p)
    It is always true that:
        result[0] + result[1] == p

    If the path contained a drive letter, drive_or_unc will contain everything
    up to and including the colon.  e.g. splitdrive("c:/dir") returns ("c:", "/dir")

    If the path contained a UNC path, the drive_or_unc will contain the host name
    and share up to but not including the fourth directory separator character.
    e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir")

    Paths cannot contain both a drive letter and a UNC path.

    é   r4   r3   rA   r   r   rB   r   é   rC   Nr?   )r5   r6   r@   r-   r.   r7   Úfind)rK   r    r#   rJ   ZnormpÚindexZindex2r0   r0   r1   r
   z   s.    

$c             C   s|   t  | ¡} t| ƒ}t| ƒ\}} t| ƒ}x |rF| |d  |krF|d8 }q(W | d|… | |d…  }}| |¡pn|}|| |fS )z~Split a pathname.

    Return tuple (head, tail) where tail is everything after the final slash.
    Either part may be empty.r?   N)r5   r6   r2   r
   r@   Úrstrip)rK   rI   ÚdÚiÚheadÚtailr0   r0   r1   r   ²   s    
c             C   s8   t  | ¡} t| tƒr$t | ddd¡S t | ddd¡S d S )Nr4   r3   ó   .r   r   r   )r5   r6   r-   r.   rF   Ú	_splitext)rK   r0   r0   r1   r   É   s    

c             C   s   t | ƒd S )z)Returns the final component of a pathnamer?   )r   )rK   r0   r0   r1   r   Ô   s    c             C   s   t | ƒd S )z-Returns the directory component of a pathnamer   )r   )rK   r0   r0   r1   r   Û   s    c          	   C   s4   yt  | ¡}W n ttfk
r&   dS X t |j¡S )zhTest whether a path is a symbolic link.
    This will always return false for Windows prior to 6.0.
    F)r5   ÚlstatÚOSErrorr:   ÚstatÚS_ISLNKÚst_mode)r/   Ústr0   r0   r1   r   â   s
    c             C   s(   yt  | ¡}W n tk
r"   dS X dS )zCTest whether a path exists.  Returns True for broken symbolic linksFT)r5   rW   rX   )r/   r\   r0   r0   r1   r   î   s
    )Ú_getvolumepathnamec             C   st   t  | ¡} t| ƒ}t| ƒ} t| ƒ\}}|rD|d |krD| pB||kS ||krPdS trl|  |¡t| ƒ |¡kS dS dS )zaTest whether a path is a mount point (a drive root, the root of a
    share, or a mounted volume)r   TFN)r5   r6   r2   r   r
   r]   rP   )r/   rI   ÚrootÚrestr0   r0   r1   r     s    
c             C   s  t  | ¡} t| tƒrd}nd}|  |¡s,| S dt| ƒ }}x$||k r^| | t| ƒkr^|d7 }q<W dt jkrvt jd }n\dt jkrŒt jd }nFdt jkrš| S yt jd }W n tk
rÀ   d}Y nX t	|t jd ƒ}t| tƒræt  
|¡}|dk�rt	t|ƒ| d|… ƒ}|| |d	…  S )
zLExpand ~ and ~user constructs.

    If user or $HOME is unknown, do nothing.ó   ~ú~r?   ÚHOMEZUSERPROFILEZHOMEPATHZ	HOMEDRIVEÚ N)r5   r6   r-   r.   Ú
startswithr@   r2   ÚenvironÚKeyErrorr	   Úfsencoder   )r/   ÚtilderR   ÚnÚuserhomeÚdriver0   r0   r1   r     s2    









c             C   s<  t  | ¡} t| tƒrhd| kr(d| kr(| S ddl}t|j|j d dƒ}d}d}d}d	}d}tt d
dƒ}nFd| kr|d| kr|| S ddl}|j|j d }d}d}d}d}d}t j}| dd… }	d}
t	| ƒ}�xn|
|k �r6| |
|
d … }||k�r\| |
d d… } t	| ƒ}y&|  
|¡}
|	|| d|
d …  7 }	W n* tk
�rV   |	||  7 }	|d }
Y nX �nÐ||k�rN| |
d |
d … |k�r’|	|7 }	|
d7 }
n¸| |
d d… } t	| ƒ}y|  
|¡}
W n* tk
�râ   |	||  7 }	|d }
Y nhX | d|
… }y.|dk�rt  t jt  |¡ ¡}n|| }W n" tk
�r@   || | }Y nX |	|7 }	�nÞ||k�r$| |
d |
d … |k�r†|	|7 }	|
d7 }
�q,| |
d |
d … |k�rb| |
d d… } t	| ƒ}y|  
|¡}
W n. tk
�rô   |	|| |  7 }	|d }
Y nlX | d|
… }y.|dk�r&t  t jt  |¡ ¡}n|| }W n& tk
�rV   || | | }Y nX |	|7 }	nÀ| dd… }|
d7 }
| |
|
d … }x6|�r¼||k�r¼||7 }|
d7 }
| |
|
d … }�qˆW y.|dk�rât  t jt  |¡ ¡}n|| }W n tk
�r
   || }Y nX |	|7 }	|�r,|
d8 }
n|	|7 }	|
d7 }
qÊW |	S )zfExpand shell variables of the forms $var, ${var} and %var%.

    Unknown variables are left unchanged.ó   $ó   %r   Nz_-Úasciió   'ó   {ó   }Úenvironbú$ú%ú'ú{ú}r?   rL   )r5   r6   r-   r.   ÚstringÚascii_lettersÚdigitsÚgetattrre   r@   rO   Ú
ValueErrorrg   Úfsdecoderf   )r/   rx   ZvarcharsÚquoteÚpercentZbraceZrbraceZdollarre   ÚresrO   ZpathlenÚcÚvarÚvaluer0   r0   r1   r   Q  s¼    











c       	      C   sT  t  | ¡} t| tƒr*d}d}d}d}d}nd}d}d}d	}d
}|  |¡rL| S |  ||¡} t| ƒ\}} |  |¡r€||7 }|  |¡} |  |¡}d}x |t	|ƒk �r.|| r²|| |krº||= q�|| |k�r$|dkrü||d  |krü||d |d …= |d8 }n&|dk�r| 
|¡�r||= n|d7 }q�|d7 }q�W |�sF|�sF| |¡ || |¡ S )z0Normalize path, eliminating double slashes, etc.r4   r3   rU   s   ..)s   \\.\s   \\?\r   r   r   z..)z\\.\z\\?\r   r?   )r5   r6   r-   r.   rd   r7   r
   Úlstripr   r@   ÚendswithÚappendr	   )	r/   r    r#   r   r   Zspecial_prefixesÚprefixÚcompsrR   r0   r0   r1   r   Â  sF    








c             C   s@   t  | ¡} t| ƒs8t| tƒr&t  ¡ }nt  ¡ }t|| ƒ} t| ƒS )z¤Return the absolute version of a path as a fallback function in case
    `nt._getfullpathname` is not available or raises OSError. See bpo-31047 for
    more.

    )	r5   r6   r   r-   r.   ÚgetcwdbÚgetcwdr	   r   )r/   Úcwdr0   r0   r1   Ú_abspath_fallbackó  s    



rŒ   )Ú_getfullpathnamec          	   C   s.   yt t| ƒƒS  ttfk
r(   t| ƒS X dS )z&Return the absolute version of a path.N)r   r�   rX   r|   rŒ   )r/   r0   r0   r1   r     s    ÚgetwindowsversionrM   rL   c             C   sd  t  | ¡} t| tƒr"d}d}d}nd}d}d}|dkr:|}| sFtdƒ‚t  |¡}yÞtt|ƒƒ}tt| ƒƒ}t|ƒ\}}t|ƒ\}	}
t|ƒt|	ƒkr¢td	|	|f ƒ‚d
d„ | 	|¡D ƒ}dd„ |
 	|¡D ƒ}d}x0t
||ƒD ]"\}}t|ƒt|ƒkrôP |d7 }qÚW |gt|ƒ|  ||d…  }|�s(|S t|Ž S  tttttfk
�r^   t d| |¡ ‚ Y nX dS )z#Return a relative version of a pathr4   rU   s   ..r   r   z..Nzno path specifiedz&path is on mount %r, start on mount %rc             S   s   g | ]}|r|‘qS r0   r0   )Ú.0Úxr0   r0   r1   ú
<listcomp>4  s    zrelpath.<locals>.<listcomp>c             S   s   g | ]}|r|‘qS r0   r0   )r�   r�   r0   r0   r1   r‘   5  s    r   r?   r(   )r5   r6   r-   r.   r|   r   r   r
   r   r   Úzipr@   r	   r9   r:   rE   ÚDeprecationWarningrF   rG   )r/   Ústartr    r   r   Z	start_absZpath_absZstart_driveZ
start_restZ
path_driveZ	path_restÚ
start_listÚ	path_listrR   Ze1Ze2Úrel_listr0   r0   r1   r(     sF    


c          	      s´  | st dƒ‚tttj| ƒƒ} t| d tƒr8d‰d‰ d‰nd‰d‰ d‰�y>‡ ‡fd	d
„| D ƒ}‡fdd
„|D ƒ}yt‡fdd„|D ƒƒ\}W n t k
r¨   t dƒd‚Y nX ttdd„ |D ƒƒƒdkrÌt dƒ‚t	| d  
ˆ ˆ¡ƒ\}}| ˆ¡}‡fdd
„|D ƒ}‡fdd
„|D ƒ}t|ƒ}t|ƒ}xBt|ƒD ]&\}	}
|
||	 k�r,|d|	… }P �q,W |dt|ƒ… }|�rt|ˆ n|}|ˆ |¡ S  ttfk
�r®   tjd| žŽ  ‚ Y nX dS )zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencer   r4   r3   rU   r   r   r   c                s    g | ]}t | ˆ ˆ¡ ¡ ƒ‘qS r0   )r
   r7   r8   )r�   rK   )r#   r    r0   r1   r‘   a  s    zcommonpath.<locals>.<listcomp>c                s   g | ]\}}|  ˆ ¡‘qS r0   )r   )r�   rQ   rK   )r    r0   r1   r‘   b  s    c             3   s"   | ]\}}|d d… ˆ kV  qd S )Nr?   r0   )r�   rQ   rK   )r    r0   r1   ú	<genexpr>e  s    zcommonpath.<locals>.<genexpr>z%Can't mix absolute and relative pathsNc             s   s   | ]\}}|V  qd S )Nr0   )r�   rQ   rK   r0   r0   r1   r˜   l  s    r?   zPaths don't have the same drivec                s   g | ]}|r|ˆ kr|‘qS r0   r0   )r�   r�   )r   r0   r1   r‘   q  s    c                s   g | ]}‡ fd d„|D ƒ‘qS )c                s   g | ]}|r|ˆ kr|‘qS r0   r0   )r�   r�   )r   r0   r1   r‘   s  s    z)commonpath.<locals>.<listcomp>.<listcomp>r0   )r�   r>   )r   r0   r1   r‘   s  s    r,   )r,   )r|   ÚtuplerD   r5   r6   r-   r.   Úsetr@   r
   r7   r   ÚminÚmaxÚ	enumerater	   r9   r:   rF   rG   )rH   ZdrivesplitsÚsplit_pathsr   rk   r/   ÚcommonÚs1Ús2rR   r�   r‡   r0   )r#   r   r    r1   r,   P  sF    
)é   r   )Ú_getfinalpathnamec             C   s   t t| ƒƒS )N)r   r   )Úfr0   r0   r1   r£   ‘  s    r£   )Ú_isdir)N).Ú__doc__r   r   r$   r    r!   r#   r"   r%   r5   ÚsysrY   rF   Ú__all__r2   r   r   r	   r
   r   r   rV   r   r   r   r   Úntr]   ÚImportErrorr   r   r   r   rŒ   r�   r   r&   ÚhasattrrŽ   r'   r(   r,   r£   r:   r¥   r   r0   r0   r0   r1   Ú<module>   sz   



/8

2q1

85