§ !A?h/CãóF—dZdZdZdZdZdZdZdZdZddl Z ddl Z ddl Z ddl Z dd l Tgd ¢Z d „Zd „Zd „Zd„Zd„Zd„Ze jje_d„Zd„Zd„Zd„Zd„Zd„Zd„Zdadad„Z ddlm Z d„Z!n#e"$rd„Z!YnwxYwd„Z#ddœd„Z$d „Z%e j&d!kZ'd$d"„Z(d#„Z)dS)%aÙCommon operations on Posix pathnames. Instead of importing this module directly, import os and refer to this module as os.path. The "os.path" name is an alias for this module on Posix systems; on other systems (e.g. Windows), os.path provides the same operations in a manner specific to that platform, and is an alias to another module (e.g. ntpath). Some of this can actually be useful on non-Posix systems too, e.g. for manipulation of the pathname component of URLs. ú.ú..ú/ú:z /bin:/usr/binNz /dev/nullé)Ú*)'ÚnormcaseÚisabsÚjoinÚ splitdriveÚsplitÚsplitextÚbasenameÚdirnameÚ commonprefixÚgetsizeÚgetmtimeÚgetatimeÚgetctimeÚislinkÚexistsÚlexistsÚisdirÚisfileÚismountÚ expanduserÚ expandvarsÚnormpathÚabspathÚsamefileÚ sameopenfileÚsamestatÚcurdirÚpardirÚsepÚpathsepÚdefpathÚaltsepÚextsepÚdevnullÚrealpathÚsupports_unicode_filenamesÚrelpathÚ commonpathÚ ALLOW_MISSINGcó4—t|t¦«rdSdS)Nó/r)Ú isinstanceÚbytes©Úpaths ú6/opt/alt/python-internal/lib64/python3.11/posixpath.pyÚ_get_sepr6)s€Ý�$�ÑÔð؈tàˆsócó*—tj|¦«S)z6Normalize case of pathname. Has no effect under Posix©ÚosÚfspath)Úss r5rr4s€å Œ9�Q‰<Œ<Ðr7cór—tj|¦«}t|¦«}| |¦«S)zTest whether a path is absolute)r:r;r6Ú startswith)r<r$s r5r r <s,€å Œ �!‰ Œ €AÝ �1‰+Œ+€CØ �<Š<˜Ñ Ô Ðr7có„—tj|¦«}t|¦«}|} |s |dd…|zttj|¦«D]?}| |¦«r|}Œ|r| |¦«r||z }Œ7|||zz }Œ@n/#t ttf$rtj d|g|¢RŽ‚wxYw|S)zæJoin two or more pathname components, inserting '/' as needed. If any component is an absolute path, all previous path components will be discarded. An empty last part will result in a path that ends with a separator.Nrr ) r:r;r6Úmapr>ÚendswithÚ TypeErrorÚAttributeErrorÚ BytesWarningÚ genericpathÚ_check_arg_types)ÚaÚpr$r4Úbs r5r r Gsø€õ Œ �!‰ Œ €AÝ �1‰+Œ+€CØ €Dð Øð Ø ��!�ŒH�s‰NˆNÝ•R”Y Ñ"Ô"ð ð ˆAØ�|Š|˜CÑ Ô ð Ø��Øð ˜TŸ]š]¨3Ñ/Ô/ð Ø˜‘ ��à˜˜a™‘��ð  øõ •~¥|Ð 4ðððÝÔ$ V¨QÐ3°Ð3Ð3Ð3Ð3Ø ðøøøð €Ks §A)BÂ,B=có—tj|¦«}t|¦«}| |¦«dz}|d|…||d…}}|r+||t |¦«zkr| |¦«}||fS)z€Split a pathname. Returns tuple "(head, tail)" where "tail" is everything after the final slash. Either part may be empty.éN©r:r;r6ÚrfindÚlenÚrstrip)rHr$ÚiÚheadÚtails r5r r ds€€õ Œ �!‰ Œ €AÝ �1‰+Œ+€CØ �Š�‰ Œ �qÑ€AØ�2�A�2”˜˜!˜"˜"œˆ$€DØ ð �˜�C ™IœI™ Ò%Ð%Ø�{Š{˜3ÑÔˆØ �ˆ:Ðr7có”—tj|¦«}t|t¦«rd}d}nd}d}t j||d|¦«S)Nr0ó.rr)r:r;r1r2rEÚ _splitext)rHr$r(s r5r r usN€Ý Œ �!‰ Œ €AÝ�!•UÑÔðØˆØˆˆàˆØˆÝ Ô   C¨¨vÑ 6Ô 6Ð6r7cóB—tj|¦«}|dd…|fS)zJSplit a pathname into drive and path. On Posix, drive is always empty.Nrr9)rHs r5r r ƒs"€õ Œ �!‰ Œ €AØ ˆRˆaˆRŒ5�!ˆ8€Or7cóŒ—tj|¦«}t|¦«}| |¦«dz}||d…S)z)Returns the final component of a pathnamerKN)r:r;r6rM)rHr$rPs r5rrŒs;€å Œ �!‰ Œ €AÝ �1‰+Œ+€CØ �Š�‰ Œ �qÑ€AØ ˆQˆRˆRŒ5€Lr7cóê—tj|¦«}t|¦«}| |¦«dz}|d|…}|r+||t |¦«zkr| |¦«}|S)z-Returns the directory component of a pathnamerKNrL)rHr$rPrQs r5rr–sm€å Œ �!‰ Œ €AÝ �1‰+Œ+€CØ �Š�‰ Œ �qÑ€AØ ˆRˆaˆRŒ5€DØ ð �˜�C ™IœI™ Ò%Ð%Ø�{Š{˜3ÑÔˆØ €Kr7cóœ— tj|¦«}n#tttf$rYdSwxYwt j|j¦«S)z&Test whether a path is a symbolic linkF)r:ÚlstatÚOSErrorÚ ValueErrorrCÚstatÚS_ISLNKÚst_mode)r4Ústs r5rr¤sQ€ðÝ ŒX�d‰^Œ^ˆˆøÝ •Z¥Ð 0ððð؈uˆuðøøøå Œ<˜œ Ñ #Ô #Ð#s ‚—2±2cób— tj|¦«n#ttf$rYdSwxYwdS)zCTest whether a path exists. Returns True for broken symbolic linksFT)r:rZr[r\r3s r5rr®sB€ðÝ Œ�‰ŒˆˆøÝ •ZÐ ððð؈uˆuðøøøà ˆ4s ‚—,«,cóþ— tj|¦«}tj|j¦«rdSn#t t f$rYdSwxYwtj|¦«}t|t¦«rt|d¦«}nt|d¦«}t|¦«} tj|¦«}n#t t f$rYdSwxYw|j }|j }||krdS|j }|j }||krdSdS)z$Test whether a path is a mount pointFó..rT)r:rZr]r^r_r[r\r;r1r2r r*Úst_devÚst_ino)r4Ús1ÚparentÚs2Údev1Údev2Úino1Úino2s r5rrºs'€ðÝ ŒX�d‰^Œ^ˆõ Œ<˜œ Ñ #Ô #ð Ø�5ð øõ •ZÐ ðððàˆuˆuðøøøõ Œ9�T‰?Œ?€DÝ�$�ÑÔð"Ý�d˜EÑ"Ô"ˆˆå�d˜DÑ!Ô!ˆÝ �fÑ Ô €FðÝ ŒX�fÑ Ô ˆˆøÝ •ZÐ ððð؈uˆuðøøøð Œ9€DØ Œ9€DØ ˆt‚|€|؈tØ Œ9€DØ Œ9€DØ ˆt‚|€|؈tØ ˆ5s!‚2²AÁAÂ$B9Â9Cà Ccó¶—tj|¦«}t|t¦«rd}nd}| |¦«s|St |¦«}| |d¦«}|dkrt|¦«}|dkrxdtjvrW ddl }n#t$r|cYSwxYw |  tj ¦«¦«j }nœ#t$r|cYSwxYwtjd}nw ddl }n#t$r|cYSwxYw|d|…}t|t¦«rt|d¦«} | |¦«}n#t$r|cYSwxYw|j }|€t"jdkr|St|t¦«rtj|¦«}d }nd }| |¦«}|||d…zp|S) zOExpand ~ and ~user constructions. If user or $HOME is unknown, do nothing.ó~ú~rKrÚHOMENÚASCIIÚvxworksr0r)r:r;r1r2r>r6ÚfindrNÚenvironÚpwdÚ ImportErrorÚgetpwuidÚgetuidÚpw_dirÚKeyErrorÚstrÚgetpwnamÚsysÚplatformÚfsencoderO) r4Útilder$rPruÚuserhomeÚnameÚpwentÚroots r5rrås3€õ Œ9�T‰?Œ?€DÝ�$�ÑÔðØˆˆàˆØ �?Š?˜5Ñ !Ô !ðØˆ Ý �4‰.Œ.€CØ � Š �#�qÑÔ€A؈1‚u€uÝ �‰IŒIˆØˆA‚v€vØ �œÐ #Ð #ð Ø� � � � øÝð ð ð à� � � ð øøøð ØŸ<š<­¬ © ¬ Ñ4Ô4Ô;��øÝð ð ð ð� � � ð øøøõ ”z &Ô)ˆHˆHð Ø ˆJˆJˆJˆJøÝð ð ð àˆKˆKˆKð øøøð�A�a�CŒyˆÝ �d�EÑ "Ô "ð &Ý�t˜WÑ%Ô%ˆDð Ø—L’L Ñ&Ô&ˆEˆEøÝð ð ð ðˆKˆKˆKð øøøð”<ˆàÐ�CœL¨IÒ5Ð5؈ Ý�$�ÑÔðÝ”;˜xÑ(Ô(ˆØˆˆàˆØ�Š˜tÑ$Ô$€HØ �t˜A˜B˜B”xÑ Ð ( DÐ(sHÂB B)Â(B)Â-+Cà C(Ã'C(Ã?DÄ DÄDÅEÅ E+Å*E+cóv—tj|¦«}t|t¦«rSd|vr|Stsddl}| d|j¦«atj}d}d}ttdd¦«}nHd|vr|Stsddl}| d |j¦«a tj}d }d }tj }d} |||¦«}|snâ|  d¦«\}}|  d ¦«} |  |¦«r|  |¦«r | d d…} |€7tjtj tj| ¦«¦«} n|| } ||d…} |d|…| z}t%|¦«}|| z }n#t&$r|}YnwxYwŒñ|S)zZExpand shell variables of form $var and ${var}. Unknown variables are left unchanged.ó$rNs\$(\w+|\{[^}]*\})ó{ó}Úenvironbú$z\$(\w+|\{[^}]*\})ú{ú}TrKéÿÿÿÿ)r:r;r1r2Ú _varprogbÚreÚcompilerqÚsearchÚgetattrÚ_varprogrtÚspanÚgroupr>rArÚfsdecoderNrz) r4r�r‘ÚstartÚendrtrPÚmÚjr‚ÚvaluerRs r5rr%sæ€õ Œ9�T‰?Œ?€Då�$�ÑÔðØ �tРР؈KÝð DØ ˆIˆIˆIØŸ š Ð#8¸"¼(ÑCÔCˆIÝÔ!ˆØˆØˆÝ�"˜j¨$Ñ/Ô/ˆˆà �dˆ?ˆ?؈KÝð BØ ˆIˆIˆIØ—z’zÐ"6¸¼ÑAÔAˆHÝ”ˆØˆØˆÝ”*ˆØ €AðØ ˆF�4˜‰OŒOˆØð Ø Ø�vŠv�a‰yŒy‰ˆˆ1Ø�wŠw�q‰zŒzˆØ �?Š?˜5Ñ !Ô !ð  d§m¢m°CÑ&8Ô&8ð Ø˜˜"˜”:ˆDð ØˆÝœ ¥B¤J­r¬{¸4Ñ/@Ô/@Ô$AÑBÔB��à œ �𘘘”8ˆDؘ˜˜”8˜eÑ#ˆDÝ�D‘ ” ˆAØ �D‰LˆDˆDøõ ð ð ð ØˆAˆAˆAð øøøðð( €KsÄ9AF&Æ& F5Æ4F5)Ú_path_normpathcóà—tj|¦«}t|t¦«r5tjt tj|¦«¦«¦«pdSt |¦«pdS)ú0Normalize path, eliminating double slashes, etc.rTr)r:r;r1r2rrœr–r3s r5rr…s\€åŒy˜‰ŒˆÝ �d�EÑ "Ô "ð JÝ”;�~­b¬k¸$Ñ.?Ô.?Ñ@Ô@ÑAÔAÐIÀTÐ IݘdÑ#Ô#Ð* sÐ*r7có0—tj|¦«}t|t¦«r d}d}d}d}nd}d}d}d}||kr|S| |¦«}|r2| |d z¦«r| |d z¦«sd }| |¦«}g}|D]M}|||fvrŒ ||ks|s|r|r"|d |kr| |¦«Œ7|r| ¦«ŒN|}| |¦«}|r||z|z}|p|S) ržr0r7rTrcrÚrréér�) r:r;r1r2r>r ÚappendÚpopr ) r4r$ÚemptyÚdotÚdotdotÚinitial_slashesÚcompsÚ new_compsÚcomps r5rr^sh€åŒy˜‰ŒˆÝ �d�EÑ "Ô "ð ØˆC؈E؈C؈FˆFàˆC؈E؈C؈FØ �5Š=ˆ=؈JØŸ/š/¨#Ñ.Ô.ˆð ð Ø �OŠO˜C ™EÑ "Ô "ð Ø+/¯?ª?¸3¸q¹5Ñ+AÔ+Að àˆOØ— ’ ˜3‘”ˆØˆ Øð ð ˆDؘ˜s�|Ð#Ð#ØØ˜’� �¸y�ØðØ )¨"¤ °Ò 7Ð 7Ø× Ò  Ñ&Ô&Ð&Ð&Øð Ø— ’ ‘”�øØˆØ�xŠx˜‰ŒˆØ ð .Ø�Ñ&¨Ñ-ˆD؈{�sÐr7cóþ—tj|¦«}t|¦«sLt|t¦«rtj¦«}ntj¦«}t||¦«}t|¦«S)zReturn an absolute path.) r:r;r r1r2ÚgetcwdbÚgetcwdr r)r4Úcwds r5rr�s`€å Œ9�T‰?Œ?€DÝ �‰;Œ;ðÝ �d�EÑ "Ô "ð Ý”*‘,”,ˆCˆCå”)‘+”+ˆCÝ�C˜‰ŒˆÝ �D‰>Œ>Ðr7F)Ústrictcó‚—tj|¦«}t|dd…||i¦«\}}t|¦«S)zlReturn the canonical path of the specified filename, eliminating any symbolic links encountered in the path.Nr)r:r;Ú _joinrealpathr)Úfilenamer°r4Úoks r5r*r*œs>€õŒy˜Ñ"Ô"€HݘX b q bœ\¨8°V¸RÑ@Ô@�H€Dˆ"Ý �4‰=Œ=Ðr7có0—t|t¦«rd}d}d}nd}d}d}tj}|turt }n |rd}nt }d} t|¦«r |dd…}|}|�r(| |¦«\} } }| r| |krŒ%| |kr/|r*t|¦«\}} | |krt|||¦«}n|}ŒZt|| ¦«} tj | ¦«} tj | j¦«}n #|$rd }YnwxYw|s| }Œ«| |vr4|| }|�Œº|rtj | ¦«nt| |¦«d fSd|| <t|tj| ¦«||¦«\}}|st||¦«d fS||| <|�°(|d fS) Nr0rTrcrrr©rKFT)r1r2r:r®r.ÚFileNotFoundErrorr[r Ú partitionr r rZr]r^r_r²Úreadlink)r4Úrestr°Úseenr$r"r#r®Ú ignored_errorÚmaxlinksr‚Ú_Únewpathr`Úis_linkr´s r5r²r²¥s €Ý�$�ÑÔðØˆØˆØˆˆàˆØˆØˆÝ”ˆØ •ÐÐÝ)ˆ ˆ Ø ð Øˆ ˆ åˆ à€Hå ˆT�{„{ðØ�A�B�BŒxˆØˆà ñ*ØŸš sÑ+Ô+‰ ˆˆa�Øð �t˜v’~�~à Ø �6Š>ˆ>àð Ý" 4™[œ[‘ ��dؘ6’>�>Ý  f¨fÑ5Ô5�Døà�Ø Ý�t˜TÑ"Ô"ˆð /Ý”˜'Ñ"Ô"ˆBõ”l 2¤:Ñ.Ô.ˆGˆGøðð ð ð ØˆGˆGˆGð øøøðð ØˆDØ à �dˆ?ˆ?à˜”=ˆDØÐààð 2å”˜Ñ Ô Ð Ð õ˜G TÑ*Ô*¨EÐ1Ð1؈ˆW‰ Ý  ¥r¤{°7Ñ';Ô';¸VÀTÑJÔJ‰ˆˆbØð +ݘ˜dÑ#Ô# UÐ*Ð *؈ˆW‰ ðU ñ*ðX �ˆ:ÐsÃDÄD Ä D Údarwincó|—|std¦«‚tj|¦«}t|t¦«rd}d}d}nd}d}d}|€|}ntj|¦«} d „t |¦« |¦«D¦«}d „t |¦« |¦«D¦«}tt||g¦«¦«}|gt|¦«|z z||d…z}|s|St|ŽS#ttttf$rtjd ||¦«‚wxYw) z#Return a relative version of a pathzno path specifiedrTr0rcrrrNcó—g|]}|¯|‘ŒSr¶r¶©Ú.0Úxs r5ú zrelpath..s€Ð@Ð@Ð@˜A¸aÐ@�aÐ@Ð@Ð@r7có—g|]}|¯|‘ŒSr¶r¶rÄs r5rÇzrelpath..s€Ð>Ð>Ð>˜1¸AÐ>�QÐ>Ð>Ð>r7r,)r\r:r;r1r2rr rNrr rBrCrDÚDeprecationWarningrErF) r4r—r"r$r#Ú start_listÚ path_listrPÚrel_lists r5r,r,ísZ€ð ð.ÝÐ,Ñ-Ô-Ð-å Œ9�T‰?Œ?€DÝ�$�ÑÔðØˆØˆØˆˆàˆØˆØˆà €}؈ˆå” ˜%Ñ Ô ˆð Ø@Ð@¥¨¡¤×!5Ò!5°cÑ!:Ô!:Ð@Ñ@Ô@ˆ Ø>Ð>¥¨¡ ¤ × 3Ò 3°CÑ 8Ô 8Ð>Ñ>Ô>ˆ å • ˜j¨)Ð4Ñ5Ô5Ñ 6Ô 6ˆà�8�s :™œ¨qÑ0Ñ1°I¸a¸b¸b´MÑAˆØð ؈MÝ�XˆÐøÝ •~¥|Õ5GÐ HðððÝÔ$ Y°°eÑ<Ô<Ð<Ø ðøøøsÁ"BDÃ=DÄ5D;có¨‡ ‡ —|std¦«‚tttj|¦«¦«}t |dt ¦«rdŠ dŠ ndŠ dŠ ˆ fd„|D¦«} tˆ fd„|D¦«¦«\}n#t$rtd ¦«d ‚wxYwˆ fd „|D¦«}t|¦«}t|¦«}|}t|¦«D]\}}|||kr |d |…}nŒ|r‰ n ‰ d d…}|‰   |¦«zS#ttf$rtjd g|¢RŽ‚wxYw) zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencerr0rTrrcó:•—g|]}| ‰¦«‘ŒSr¶)r )rÅr4r$s €r5rÇzcommonpath..%s#ø€Ð9Ð9Ð9¨4�t—z’z #‘”Ð9Ð9Ð9r7c3ó4•K—|]}|dd…‰kV—ŒdS)NrKr¶)rÅrHr$s €r5ú zcommonpath..(s/øèè€Ð5Ð5¨!˜˜2˜A˜2œ #šÐ5Ð5Ð5Ð5Ð5Ð5r7z%Can't mix absolute and relative pathsNcó,•—g|]}ˆfd„|D¦«‘ŒS)có$•—g|] }|¯|‰k¯ |‘Œ Sr¶r¶)rÅÚcr"s €r5rÇz)commonpath...,s#ø€Ð:Ð:Ð:˜a¨Ð:¨a°6ªk¨k˜¨k¨k¨kr7r¶)rÅr<r"s €r5rÇzcommonpath..,s.ø€ÐPÐPÐP¸qÐ:Ð:Ð:Ð: 1Ð:Ñ:Ô:ÐPÐPÐPr7r-)r\Útupler@r:r;r1r2ÚsetÚminÚmaxÚ enumerater rBrCrErF) ÚpathsÚ split_pathsr rfrhÚcommonrPrÓÚprefixr"r$s @@r5r-r-sÀøø€ð ðBÝÐ@ÑAÔAÐAå •#•b”i Ñ'Ô'Ñ (Ô (€EÝ�%˜”(�EÑ"Ô"ðØˆØˆˆàˆØˆðØ9Ð9Ð9Ð9°5Ð9Ñ9Ô9ˆ ð PÝÐ5Ð5Ð5Ð5¨uÐ5Ñ5Ô5Ñ5Ô5‰FˆEˆEøÝð Pð Pð PÝÐDÑEÔEÈ4Ð Oð PøøøðQÐPÐPÐPÀKÐPÑPÔPˆ Ý �Ñ Ô ˆÝ �Ñ Ô ˆØˆÝ˜b‘M”Mð ð ‰DˆAˆqØ�B�q”EŠzˆzؘB˜Q˜Bœ�Ø�ððÐ*�� 3 r¨ r¤7ˆØ˜Ÿš Ñ(Ô(Ñ(Ð(øÝ •~Ð &ðððÝÔ$ \Ð:°EÐ:Ð:Ð:Ð:Ø ðøøøs%Á D,Á/B  D, B(Â(BD,Ä,%E)N)*Ú__doc__r"r#r(r$r%r&r'r)r:r}r]rEÚ__all__r6rr r r r rUr rrrrrrr“rŽrÚposixrœrrvrr*r²r~r+r,r-r¶r7r5úràsOðð ð ð €Ø €Ø €Ø €Ø €Ø €Ø €Ø €à € € € Ø € € € Ø € € € ØÐÐÐØÐÐÐð *ð *ð *€ððððððððððððð: ð ð ð"7ð7ð7ðÔ(Ô0€Ôð ððððððððð$ð$ð$ðððððððV6)ð6)ð6)ðz €Ø € ð.ð.ð.ðj0+Ø$Ð$Ð$Ð$Ð$Ð$ðT+ð+ð+ð+øðQð%ð%ð%ð$ð$ð$ð$ð$ð%øøøð` ð ð ð"'ððððððCðCðCðL"œl¨hÒ6Ðð!ð!ð!ð!ðR#ð#ð#ð#ð#sÁ+A5Á5BÁ?B