grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î   fýOã&@sNdZddlZddlZddlZddlZddlTdddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)g&Zd*Zd+Zd*Zd,Z d-Z d.Z d/Z d0ej krúd1Z nd2Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Zd=d>„Zd?d@„ZdAd„ZdBd„ZdCd„ZdDd„ZdEd„ZdFd„ZdGd „Zejje_dHd „ZdId „ZdJd„Z dKd„Z!yddLl"m#Z#Wne$k rdZ#YnXdMd„Z%dNd„Z&dOd„Z'dPd„Z(yddQl"m)Z)Wne$k rzdRd„Z*Yn XdSd„Z*e*Z+e,edTƒo¯ej-ƒdUdVkZ.edWd&„Z/y9ej-ƒddV…d]króddYl"m0Z0ne$‚Wn$e1e$fk r dZd[„Z0YnXydd\l"m2Z3Wne$k rIYnXdS)^z�Common pathname manipulations, WindowsNT/95 version. Instead of importing this module directly, import os and refer to this module as os.path. éN)Ú*ÚnormcaseÚisabsÚjoinÚ splitdriveÚsplitÚsplitextÚbasenameÚdirnameÚ commonprefixÚgetsizeÚgetmtimeÚgetatimeÚgetctimeÚislinkÚexistsÚlexistsÚisdirÚisfileÚismountÚ expanduserÚ expandvarsÚnormpathÚabspathÚsplituncÚcurdirÚpardirÚsepÚpathsepÚdefpathÚaltsepÚextsepÚdevnullÚrealpathÚsupports_unicode_filenamesÚrelpathÚsamefileÚ sameopenfileÚsamestatÚ.z..ú\ú;ú/z.;C:\binZcez\WindowsZnulcCst|tƒrdSdSdS)NóÚ)Ú isinstanceÚbytes)Úpath©r2ú+/opt/alt/python34/lib64/python3.4/ntpath.pyÚ _get_empty#sr4cCst|tƒrdSdSdS)Ns\r*)r/r0)r1r2r2r3Ú_get_sep)sr5cCst|tƒrdSdSdS)Nó/r,)r/r0)r1r2r2r3Ú _get_altsep/sr7cCst|tƒrdSdSdS)Ns\/z\/)r/r0)r1r2r2r3Ú _get_bothseps5sr8cCst|tƒrdSdSdS)Nó.r))r/r0)r1r2r2r3Ú_get_dot;sr:cCst|tƒrdSdSdS)Nó:ú:)r/r0)r1r2r2r3Ú _get_colonAsr=cCst|tƒrdSdSdS)Nó\\.\ó\\?\ú\\.\ú\\?\)r>r?)r@rA)r/r0)r1r2r2r3Ú _get_specialGsrBcCsUt|ttfƒs3tdj|jjƒƒ‚n|jt|ƒt |ƒƒj ƒS)zaNormalize case of pathname. Makes all characters lowercase and all slashes into backslashes.z2normcase() argument must be str or bytes, not '{}') r/r0ÚstrÚ TypeErrorÚformatÚ __class__Ú__name__Úreplacer7r5Úlower)Úsr2r2r3rQs cCs<t|ƒd}t|ƒdko;|dd…t|ƒkS)zTest whether a path is absoluteérN)rÚlenr8)rJr2r2r3rasc GsIt|ƒ}t|ƒ}t|ƒ}t|ƒ\}}xÊ|D]Â}t|ƒ\}} | r�| d|kr�|sx| r�|}n| }q=nE|rÒ||krÒ|jƒ|jƒkrÉ|}| }q=n|}n|rõ|d|krõ||}n|| }q=W|rA|d|krA|rA|dd…|krA|||S||S)NrrKéÿÿÿÿrM)r5r8r=rrI) r1ÚpathsrÚsepsZcolonZ result_driveZ result_pathÚpZp_driveZp_pathr2r2r3rhs0         cCsJt|ƒ}t|ƒdkr@t|ƒ}|jt|ƒ|ƒ}|dd…|dkr|dd…|kr|j|dƒ}|dkrš||fS|j||dƒ}||dkrÊ||fS|dkråt|ƒ}n|d|…||d…fS|dd…t|ƒkr@|dd…|dd…fSn||fS)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. rKrééNrMrM)r4rLr5rHr7Úfindr=)rPÚemptyrZnormpÚindexZindex2r2r2r3r‹s"  0    !cCsaddl}|jdtdƒt|ƒ\}}t|ƒdkrW|dd…|fS||fS)a¢Deprecated since Python 3.1. Please use splitdrive() instead; it now handles UNC paths. Split a pathname into UNC mount point and relative path specifiers. Return a 2-tuple (unc, rest); either part may be empty. If unc is not empty, it has the form '//host/mount' (or similar using backslashes). unc+rest is always the input path. Paths containing drive letters never have an UNC part. rNzs0 %   "cCsyt|tƒr�tdƒ|kr7tdƒ|kr7|Sddl}t|j|jddƒ}d}d}d }d }ttd dƒ}n]d|kr©d|kr©|Sddl}|j|jd}d }d}d }d}tj}|dd…}d} t |ƒ} xf| | krt|| | d…} | |krº|| dd…}t |ƒ} y/|j | ƒ} || |d| d…7}Wqgt k r¶|| |7}| d} YqgXn­| |kr×|| d| d…|krû|| 7}| d7} qg|| dd…}t |ƒ} y|j |ƒ} Wn*t k rZ|||7}| d} YqgX|d| …} y<|dkrœtj tjtj | ƒƒ} n || } Wn tk rÉ|| |} YnX|| 7}n�| |kr]|| d| d…|kr|| 7}| d7} qg|| d| d…|krs|| dd…}t |ƒ} y4t|tƒrz|j dƒ} n|j dƒ} WnJt k rÖt|tƒrº|d|7}n|d|7}| d} YqZX|d| …} y<|dkrtj tjtj | ƒƒ} n || } Wn@tk ret|tƒrSd| d} nd| d} YnX|| 7}qg|dd…} | d7} || | d…} x>| rá| |krá| | 7} | d7} || | d…} q¤Wy<|dkrtj tjtj | ƒƒ} n || } Wntk r<|| } YnX|| 7}| rg| d8} qgn || 7}| d7} qW|S)zfExpand shell variables of the forms $var, ${var} and %var%. Unknown variables are left unchanged.ú$ú%rNz_-Úasciis'ó%ó{ó$Úenvironbú'ú{rKrQó}ú}s${z${)r/r0ÚordÚstringZ ascii_lettersZdigitsÚgetattrr`rprLrUÚ ValueErrorÚfsencodeÚfsdecoderq)r1r„ZvarcharsZquoteZpercentZbraceZdollarrpÚresrUZpathlenÚcÚvarÚvaluer2r2r3rosÂ$              "        "      "   cCs²t|ƒ}t|ƒd}t|ƒ}|j|ƒr;|S|jt|ƒ|ƒ}t|ƒ\}}|j|ƒr�||7}|j|ƒ}n|j|ƒ}d}xÕ|t |ƒkr||| sÛ||t|ƒkrå||=q¨|||kro|dkr7||d|kr7||d|d…=|d8}qy|dkrb|j t|ƒƒrb||=qy|d7}q¨|d7}q¨W| r¡| r¡|j t|ƒƒn||j |ƒS)z0Normalize path, eliminating double slashes, etc.rQrrK) r5r:rBrorHr7rÚlstriprrLÚendswithÚappendr)r1rÚdotdotZspecial_prefixesÚprefixÚcompsr[r2r2r3ræs4   !   !  )Ú_getfullpathnamecCsRt|ƒsHt|tƒr*tjƒ}n tjƒ}t||ƒ}nt|ƒS)z&Return the absolute version of a path.)rr/r0r`ÚgetcwdbÚgetcwdrr)r1Úcwdr2r2r3rs   c Csb|r.yt|ƒ}WqXtk r*YqXXn*t|tƒrLtjƒ}n tjƒ}t|ƒS)z&Return the absolute version of a path.)r“rbr/r0r`r”r•r)r1r2r2r3rs  ÚgetwindowsversionrRrQcCsžt|ƒ}|tkr't|ƒ}n|s<tdƒ‚ntt|ƒƒ}tt|ƒƒ}t|ƒ\}}t|ƒ\}}t|ƒt|ƒkr½dj||ƒ} t| ƒ‚ndd„|j |ƒDƒ} dd„|j |ƒDƒ} d} xCt | | ƒD]2\} }t| ƒt|ƒkr3Pn| d7} q Wt |t ƒrYd}nd }|gt | ƒ| | | d …}|s”t|ƒSt|ŒS) z#Return a relative version of a pathzno path specifiedz,path is on mount '{0}', start on mount '{1}'cSsg|]}|r|‘qSr2r2)Ú.0Úxr2r2r3ú Es zrelpath..cSsg|]}|r|‘qSr2r2)r˜r™r2r2r3ršFs rrKs..z..N)r5rr:r†rrrrrErÚzipr/r0rLr)r1ÚstartrZ start_absZpath_absZ start_driveZ start_restZ path_driveZ path_restÚerrorÚ start_listÚ path_listr[Ze1Ze2rÚrel_listr2r2r3r%2s6    % é)Ú_getfinalpathnamecCstt|ƒƒS)N)rr)Úfr2r2r3r¢esr¢)Ú_isdir)r¡r)4Ú__doc__r`rsrdr^Ú__all__rrr!rrr rÚbuiltin_module_namesr"r4r5r7r8r:r=rBrrrrrrrr_r r rrÚntrhÚ ImportErrorrrrrr“rr#Úhasattrr—r$r%r¢rcr¤rr2r2r2r3Úsˆ               # -          1 w )  '