?,bixSrSrSrSrSrSrSrSrSrSS K r SS K r SS K r SS K 7 /S Qr S r SS KJrJrJr SrSrSrSrSSKJr SrSr\ R>R\lSr Sr!SSKJ"r" Sr#\$"\%"S5Vs1sH n\&"U5iM sn1Sk-5r'\$"1SkSVs1sHnSU3iM sn-SVs1sHnS U3iM sn-5r(S!r)S"r*S#r+S$r,S q-S q.S%r/SS&KJ0r1 SS(KJ2r2 S)r3SS+KJ4r4J5r5J6r7 \84S,jr9\84S-jr:S.S/.S0jr;S2rSS5KJ?r@ SS6KJArB SS7KJCrD SS8KJErF SS9KJGrH SS:KJIrJ SS;KJKrK S<rLg !\a SrGN*f=f!\a SrGN*f=f!\a S r"GN f=fs snfs snfs snf!\a S'r1Nf=f!\a S*r3Nf=f!\a S.S/.S1jr;Nf=f!\a Nf=f!\a g f=f)>zCommon pathname manipulations, WindowsNT/95 version. Instead of importing this module directly, import os and refer to this module as os.path. ...\;/z.;C:\binnulN)*)+normcaseisabsjoin splitdrive splitrootsplitsplitextbasenamedirname commonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount isreserved expanduser expandvarsnormpathabspathcurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpathsamefile sameopenfilesamestat commonpath isjunction isdevdrive ALLOW_MISSINGc0[U[5(agg)N\/\/) isinstancebytespaths -/opt/alt/python313/lib64/python3.13/ntpath.py _get_bothsepsr="s$) LCMapStringExLOCALE_NAME_INVARIANTLCMAP_LOWERCASEcp[R"U5nU(dU$[U[5(a^[R "5nUR US5RSS5n[[[U5nURUS5$[[[URSS55$)^Normalize case of pathname. Makes all characters lowercase and all slashes into backslashes. surrogateescaperr) osfspathr8r9sysgetfilesystemencodingdecodereplace_LCMapStringEx_LOCALE_NAME_INVARIANT_LCMAP_LOWERCASEencode)sencodings r<r r 2s IIaLH a  002H#45==c4HA5/4A88H&78 8!"8"2"#))C"68 8r>c([R"U5n[U[5(aH[R"[R "U5R SS5R55$UR SS5R5$)rCrr)rErFr8r9fsencodefsdecoderJlower)rOs r<r r Ese IIaL a  ;;r{{1~55c4@FFHI Iyyd#))++r>c[R"U5n[U[5(a SnSnSnSnOSnSnSnSnUS S R X!5nUR US 5=(d UR U5$) zTest whether a path is absolute\/s:\\\rrz:\\\N)rErFr8r9rJ startswith)rOr%r( colon_sep double_seps r<r r Psw ! A!U     "1 f"A << 1 % Aj)AAr>cT[R"U5n[U[5(aSnSnSnOSnSnSn[ U5upVnUH~n[ U5upn U (aU (dU(dU nU nU nM.U (a1X:wa,U R 5UR 5:waU nU nU nMdU nU(a USU;aXr-nX{-nM U(aU(dU(aUSU;aXR-U-$XV-U-$![ [[4a [R"SU/UQ76 ef=f) NrVr6s:\/rr7z:\/r ) rErFr8r9rrT TypeErrorAttributeError BytesWarning genericpath_check_arg_types) r;pathsr%seps colon_seps result_drive result_root result_pathpp_drivep_rootp_paths r<r r cs3 99T?D$  1:4. ;A&/l #GV,#*L$ $ W4==?l&8&8&::#*L"(K"(K& {2d:)/ %.K+.  \"-Z?% 3 3)K77 ~| 4$$VT:E: sB6C81C88/D'c*[U5upnXU-4$)aSplit 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. )r)rldriveroottails r<r r s&"! E + r>)_path_splitroot_exc[R"U5n[U[5(a SnSnSnSnSnO SnSnSnS nS nUR X!5nUS S U:XayUS S U:XafUS SR 5U:XaSOS nUR X5nUS:XaXU4$UR XS -5n U S:XaXU4$US U X U S -X S -S 4$XPS S US S 4$US S U:Xa!US SU:XaUS S US SUSS 4$US S XPS S 4$XUU4$)zWSplit a pathname into drive, root and tail. The tail contains anything after the root.rVrW:\\?\UNC\r>rr:\\?\UNC\Nr[r`rZ)rErFr8r9rJupperfind) rlr%r(colon unc_prefixemptynormpstartindexindex2s r<rrsv IIaL a  CFE(JECFE'JE && !9 QqzS #2AY__.*<! 3.B;U?*C3R<U?*&z1FQJ#7A:;GGeQqrU** 1QZ5 QqzS !ua!fae++!ueqrU**? "r>c [R"U5n[U5n[U5up#n[ U5nU(a$XS- U;aUS-nU(a XS- U;aMUSUXSpeX#-UR U5-U4$)zvSplit a pathname. Return tuple (head, tail) where tail is everything after the final slash. Either part may be empty.r[N)rErFr=rlenrstrip)rlrgdriheadrss r<rrs ! A  DlGA! AA A#d" Q A#d"2A"$ 54;;t$ $d **r>c[R"U5n[U[5(a[R "USSS5$[R "USSS5$)NrVrW.rrr)rErFr8r9rd _splitextrls r<rrsJ ! A!U$$QtT::$$Qc377r>c[U5S$)z)Returns the final component of a pathnamer[rrs r<rr 8A;r>c[U5S$)z-Returns the directory component of a pathnamerrrs r<rrrr>)_getvolumepathnamecr[R"U5n[U5n[U5n[ U5up#nU(aUSU;aU(+$U(aU(dg[ (aLUR U5n[ U5R U5nUR5UR5:H$g)z]Test whether a path is a mount point (a drive root, the root of a share, or a mounted volume)rTF)rErFr=r"rrrcasefold)r;rgrqrrrestxys r<rrs 99T?D  D 4=D!$E qT!x D KK  d # * *4 0zz|qzz|++r> > "r rrx<>?r|>AUXCONNULPRNCONIN$CONOUT$u123456789¹²³COMLPTc[R"[U5S5R[[ 5n[ S[UR[ 5555$)z6Return true if the pathname is reserved by the system.r{c38# UHn[U5v M g7fN)_isreservedname).0names r< isreserved..<sK1Jt$$1Js) rErSrrJr(r%anyreversedrr:s r<rr7sF ;;yq) * 2 263 ?D K$**S/1JK KKr>cUSSS;aUS;$[RU5(agURS5SRS5R 5[ ;$) z6Return true if the filename is reserved by the system.r`N)r )rrTrrr)_reserved_chars intersection partitionrr}_reserved_names)rs r<rr>sb BCyJ;&&##D)) >># q ! ( ( - 3 3 5 HHr>cN[R"U5n[U[5(aSnSnOSnSnUR U5(dU$S[ U5pCX4:aXU;aUS- nX4:a XU;aMS[R ;a[R SnOSS[R ;aU$[R RSS 5n[U[R S5nUS:wazUSUn[U[5(a[R"U5n[R RS 5nXx:wa&U[U5:waU$[[U5U5n[U[5(a[R"U5nXPUS -$) zHExpand ~ and ~user constructs. If user or $HOME is unknown, do nothing.r6~r7~r[ USERPROFILEHOMEPATH HOMEDRIVErzUSERNAMEN) rErFr8r9r\renvirongetr rSrrrR) r;rgtildernuserhomerq target_user current_users r<rrWsb 99T?D$ ??5 ! ! c$iq %DG4' Q %DG4' "::m, 2:: %  {B/rzz*56Av1Qi k5 ) )++k2Kzz~~j1  & x11 GH-{;H$;;x( 12h r>z.'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)c:^^^^^[R"U5n[U[5(auSU;aSU;aU$[(d<SSKnUR [R5UR5Rq[nSmSmSmSm[[SS5mOeSU;aS U;aU$[(d.SSKnUR [UR5Rq [nS mS mS mSm[RmUUUUU4S jnU"X05$) zbExpand shell variables of the forms $var, ${var} and %var%. Unknown variables are left unchanged.$%rN{}environb$%{}c>URnUcUS$XnUS:Xa)UT:XaU$URT5(dUS$USSnO>UT:XaU$URT5(a URT5(dUS$USSnTc;[R"[R [R "U55$TU$![a USs$f=f)Nrr[r`) lastindexendswithr\rErRrrSKeyError)mrrbracedollarrpercentrbraces r<replexpandvars..replsKK  Q4K| >w ==))t 9Dv~ u%%}}V,,Q4KAbz {{2::bkk$.?#@AAt}$ Q4K s=C C CC)rErFr8r9_varsubbrecompile _varpatternrNASCIIsubgetattr_varsubr) r;rrrrrrrrs @@@@@r<r r s 99T?D$ t D 0Kx zz+"4"4"6AEEH"j$/ d?s$Kw jjbhh7;;G**6 t?r>)_path_normpathc:[R"U5n[U[5(a SnSnSnSnOSnSnSnSnUR X!5n[ U5upVnXV-nUR U5nS n U [U5:aiX(aXU:XaX ODXU:Xa7U S :aXS - U:waXS - U S -2 U S -n OU S :Xa U(aX O U S - n OU S - n U [U5:aMiU(dU(dURU5 XqRU5-$) z0Normalize path, eliminating double slashes, etc.rVrWr..rrrrrr[) rErFr8r9rJrrrappendr ) r;r%r(r#r$rqrrprefixcompsrs r<r!r!s yy dE " "CFFFCFFF||F(%dOT 3 #e*n8ux61HV#q5UQ3Z61c!A#gFA!VFAQ#e*ne LL ''r>)_getfullpathnamec[[U55$![[4a Of=f[R "U5n[ U5(d[U[5(aSn[RnOSn[Rn[U5up4nU(dU(a6[[X4-5U5nO.![[4a X1-U-nOf=f[U"5U5n[U5$)&Return the absolute version of a path.rVr) rr!OSError ValueErrorrErFr r8r9getcwdbgetcwdrr )r;r%rrqrrs r<r"r"s #HTN3 3$   yyT{{$&& )$ E. 0 >ED,. ;-D.FHd+~s)))CCCc[R"U5n[U5(dK[U[5(a[R "5nO[R "5n[X5n[U5$)r) rErFr r8r9rrr r!)r;cwds r<r"r"sNyyT{{$&&jjliik?D~r>)_findfirstfile_getfinalpathnamereadlinkcSn[5n[U5U;a|UR[U55 Un[U5n[ U5(d3[ U5(dUnU$[ [[U5U55n[U5U;aM|U$!UanURU;aSnAU$eSnAf[a U$f=f)N) r[r{rZr2CWi&i(i)) setr add _nt_readlinkr rr!r rwinerrorr)r; ignored_errorallowed_winerrorseenold_pathexs r<_readlink_deepr3sLutnD( HHXd^ $ #D)T{{"(++' $D):D$ABDtnD(, ! ;;"22     s)/B)BC B76B77 CCc"SnUSSnU(a [U5nU(a [X5$U$U$!UanURU;ae[UUS9nXP:waU(a [XS5OUsSnA$O !Ua Of=fURS;a3[ U5n[ U5upO&!Ua [ U5upOf=f[ U5upU(aU(d X-sSnA$U(a [Xc5OUnSnAOSnAff=fU(aGMN)N)r[r{rZrrrr5Arr{irr)r[rrrrr r )rr rrrr)r;rrrsrnew_pathr_s r<_getfinalpathname_nonstrictr]s&^BQx :(.+/tD'9T96 5! :;;&66  .d "A2+D1C>2A;8C>:A;;C>B('C>(B>;C>=B>>!C>D%C>>DF)strictc[U5n[U[5(a.SnSnSn[R"5nSn[ U5U:XagO-SnSnSn[R "5nS n[ U5U:Xag URU5nU[La [nS nOU(aS nO[nU(d[U5(d [XP5n[U5nS n U(d_URU5(aIURU5(aX@[%U5S-n OU[%U5Sn [U 5U:XaU nU$U$![a1n U(a[[U 55Se[U5nSn A NSn A fUa n U R n [#UUS9nSn A NSn A ff=f![a n Sn A U$Sn A f[an U R W :XaU nSn A U$Sn A ff=f)Ns\\?\rwrXsnuls\\.\NULz\\?\ryrYrz\\.\NULTrr )r!r8r9rErr rr\r4FileNotFoundErrorrr r rrstrrrr) r;rrrnew_unc_prefixrr* had_prefixrinitial_winerrorrspaths r<r+r+s~ dE " "F(J$N**,CG~($)F'J#N))+CG~(#__V, ] "-MF M#M%++?D L$T*D  doof55z**&c*o.>)??S[\* !$U+t3 D t G " c"g&D0D>D L!{{ .t=JLD L$    !;;"22 D  !sB E2F) F&'E== F&F!!F&) G#9 G#GG#c[U5$r)r")r;rs r<r+r+0s t}r>Tc6[R"U5nU(d [S5e[U[5(aSnSnSnOSnSnSnUcUnO[R"U5n[ U5n[ U5n[ U5upxn [ U5upn [U5[U 5:wa[S U <S U<35eU (aU RU5O/n U (aU RU5O/n S n[X5H%unn[U5[U5:wa O US - nM' U/[U 5U- -XS-nU(dU$URU5$![[[[[4a [ R""S X5 ef=f)z#Return a relative version of a pathzno path specifiedrVrrrrrNzpath is on mount z, start on mount rr[r-)rErFrr8r9r"rr rziprr rarbrcDeprecationWarningrdre)r;rr%r#r$ start_abspath_abs start_driver start_rest path_drive path_rest start_list path_listre1e2rel_lists r<r-r-s 99T?D ,--$ } % EN 4=%.y%9" #,X#6 y K HZ$8 8K)* */9Z%%c*b ,5IOOC(2 *0FB|x|+ FA1 8s:q01IbMAMxx!! z>?;awws|; ? -gaA- .! 3>? ?%eAh&6&6v&CDT -gaA- .! 3 !HII !HIIC#9Vq!Q[!V9DOPKq1:1aak1:K P    bMDAqBqEz" HSW%F|chhv...;Q? ..::P ~ &$$\:E: sH= 2HH=H7H=H AH=H& %?H=$ H-2H-9H-?H= H7 H2 H2 $H2 *H711H=&,H=H=2H77H==)I&) _path_isdir) _path_isfile) _path_islink)_path_isjunction) _path_exists) _path_lexists)_path_isdevdrivecL[[U55$![a gf=f)z@Determines whether the specified path is on a Windows Dev Drive.F)r;r"rr:s r<r3r3^s( #GDM2 2  s  ##r)M__doc__r#r$r)r%r&r(r'r*rErGrd__all__r=_winapir?rKr@rLrArMr ImportErrorr r r ntrtrrrrrrrr frozensetrangechrrrrrrrrrr rr!rr"rrrrrrrr+r,r-r1r5rr6rr7rr8r2r9rr:rr;r3)rr2s00r<rEs          *!,-- 8<B&)^.-#2h +*8 ((00 %(2YYSVY23 5/0/1s1#Y/01/0/1s1#Y/01 L I2,x@  :@&(-R)#6oNN ,3(T9@6p"'FT",r0f  ())1)+  #u ,, ,N+#*#+#V. 10L#("(#(T   T!&R     s EE'1E7F-F F /F6F$ F3($G G E$#E$' E43E47FF F! F!$ F0/F03 GGGGGG