grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026§ ÓXª†íããóJ—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„ZdZdadad„Z ddl m!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 ú0/opt/alt/python311/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+z\$(\w+|\{[^}]*\}?)có‡—tj|¦«}t|t¦«rjd|vr|Sts;ddl}| t ¦«|j ¦«j at}dŠdŠttdd¦«ŠnMd|vr|Sts)ddl}| t|j ¦«j a t}dŠd Štj Šˆˆˆfd „}|||¦«S) zZExpand shell variables of form $var and ${var}. Unknown variables are left unchanged.ó$rNó{ó}Úenvironbú$ú{ú}cóD•—|d}| ‰¦«r'| ‰¦«s|dS|dd…} ‰€7tjtjtj|¦«¦«}n‰|}|S#t $r |dcYSwxYw)NrKréÿÿÿÿ)r>rAr:rrtÚfsdecoderz)Úmr‚ÚvalueÚendrtÚstarts €€€r5Úreplzexpandvars..repl@s°ø€Ø�ŒtˆØ �?Š?˜5Ñ !Ô !ð Ø—=’= Ñ%Ô%ð Ø˜”t� ؘ˜"˜”:ˆDð ØˆÝœ ¥B¤J­r¬{¸4Ñ/@Ô/@Ô$AÑBÔB��à œ �ðˆLøõð ð ð Ø�Q”4ˆKˆKˆKð øøøsÁAB  BÂB)r:r;r1r2Ú_varsubbÚreÚcompileÚ _varpatternÚencoderqÚsubÚgetattrÚ_varsubrt)r4r–ršr”r’rtr“s @@@r5rr&søøø€õ Œ9�T‰?Œ?€Då�$�ÑÔðØ �tРР؈KÝð FØ ˆIˆIˆIØ—z’z¥+×"4Ò"4Ñ"6Ô"6¸¼ÑAÔAÔEˆH݈؈؈Ý�"˜j¨$Ñ/Ô/ˆˆà �dˆ?ˆ?؈KÝð <Ø ˆIˆIˆIØ—j’j¥¨b¬hÑ7Ô7Ô;ˆG݈؈؈ݔ*ˆðððððððð ˆ3ˆt�T‰?Œ?Ðr7)Ú_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•rÚposixr�rrvrr*r³r~r+r,r-r·r7r5úrásTðð ð ð €Ø €Ø €Ø €Ø €Ø €Ø €Ø €à € € € Ø € € € Ø € € € ØÐÐÐØÐÐÐð *ð *ð *€ððððððððððððð: ð ð ð"7ð7ð7ðÔ(Ô0€Ôð ððððððððð$ð$ð$ðððððððV6)ð6)ð6)ðz$€ Ø €Ø €ð*ð*ð*ðb0+Ø$Ð$Ð$Ð$Ð$Ð$ðT+ð+ð+ð+øðQð%ð%ð%ð$ð$ð$ð$ð$ð%øøøð` ð ð ð"'ððððððCðCðCðL"œl¨hÒ6Ðð!ð!ð!ð!ðR#ð#ð#ð#ð#sÁ-A7Á7BÂB