ó
    F\hb  ã                   ó*  • S SK rS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKJr  SrSR!                  \\R"                  " 5       5      r\S-   r\R&                  (       a  S SKr\R*                  " S\5      rSr\R.                  S:X  ai  \	R0                  " 5       R2                  S:¼  aI  \S	-   r \R5                  \	R6                  " 5       5        \" S
\< S\	R6                  " 5       < S35        SrODOC\R&                  (       d2  \	R2                  S;  a"   SR=                  \	R6                  " 5       5         Sr S H/  r! \RD                  " \RF                  " \!5      5      \!:w  a  \$e \!r   O   \RJ                  " 5       r&Sr'S H$  r \R=                  \	R6                  " 5       5        M&     \ (       a  \\ -   r)OSr)\)=(       d    \r*S r+Sq,S r-S r.Sq/S r0S r1Sq2S r3S r4Sq5S r6S r7Sq8S r9S r:S r;S  r<\	R2                  R{                  S!5      (       a  S@S" jr>S# r?S$ r@S% rAS& rBO\Rx                  r?\R†                  r@S' rAS( rBS) rCS* rD\RŠ                  SAS+ j5       rF\RŠ                  S@S, j5       rG\RŠ                  SBS- j5       rHS. rI\RŠ                  S/ 5       rJS0 rK " S1 S25      rLS3 rM\N" \S45      (       a  \RŠ                  S5 5       rOO\RŠ                  S6 5       rO " S7 S8\R                   R¢                  5      rR \R¦                  (       a  S SKTrT\TRª                  " S9S:S;9rVSrWSrXS<rYS=rZO\[e \RŠ                  S> 5       r\g! \ a     GNf = f! \ a(    \SR=                  \	R6                  " 5       S5      -   r GNHf = f! \$ a     GMR  f = f! \ a\     \R=                  \	R6                  " 5       \	RP                  " 5       5        O! \ a      GMQ  f = f\RF                  " \5      \-   r'   GMG  f = f! \]\[4 a    S? r\ gf = f)Cé    N)Úsupportz@testz	{}_{}_tmpu   -Ã Ã²É˜Å�ÄŸÚNFDÚnté   u   -å…±Å�â™¡Í£í²€zWARNING: The filename z, CAN be encoded by the filesystem encoding (z.). Unicode filename tests may not be effective>   ÚwasiÚ
emscriptenó   ÿs   -ÿÚsurrogateescapeÚ )ô   Ã¦u   Ä°u   Å�u   Ï†u   Ðšu   ×�u   ØŒu   Øªu   à¸�ô   Â u   â‚¬)s   çwðr	   s   ®Õí²€s   í´€s   �˜c                  óÊ   • [        [        S5      n  U R                  5       U R                  5         [	        [        5        $ ! U R                  5         [	        [        5        f = f)zT
Create an invalid file descriptor by opening and closing a file and return
its fd.
Úwb)ÚopenÚTESTFNÚfilenoÚcloseÚunlink©Úfiles    Ú-/usr/lib/python3.13/test/support/os_helper.pyÚmake_bad_fdr   Ÿ   sB   € ô
 ”˜Ó€DðØ�{‰{‹}à�
‰
ŒÜŒv�øð 	�
‰
ŒÜŒv�ús   ’A Á!A"c                  ó  • [         b  [         $ [        R                  R                  [        5      n U S-   n [        R
                  " X5        Sn[        R                  " U5        Uq U$ ! [        [        [        4 a    Sn Uq U$ f = f)NÚcan_symlinkTF)
Ú_can_symlinkÚosÚpathÚabspathr   ÚsymlinkÚremoveÚOSErrorÚNotImplementedErrorÚAttributeError)ÚsrcÚsymlink_pathÚcans      r   r   r   ¯   s„   € äÑÜÐô �'‰'�/‰/œ&Ó
!€CØ˜Ñ&€Lð Ü
�
Š
�3Ô%Øˆô 	�	Š	�,ÔØ€LØ€Jøô Ô(¬.Ð9ó Ø‰ð €LØ€Jðús   ·A) Á)BÂBc                 ód   • [        5       nSnU(       a  U $ [        R                  " U5      " U 5      $ )z8Skip decorator for tests that require functional symlinkz*Requires functional symlink implementation)r   ÚunittestÚskip©ÚtestÚokÚmsgs      r   Úskip_unless_symlinkr.   Ã   s)   € ä	‹€BØ
6€CÞˆ4Ð3œ8Ÿ=š=¨Ô-¨dÓ3Ð3ó    c                  ót   • [         c,  [        [        S5      =(       a    [        R                  (       + q [         $ )NÚlink)Ú_can_hardlinkÚhasattrr   r   Ú
is_android© r/   r   Úcan_hardlinkr6   Ì   s*   € äÑô  ¤ FÓ+×F´G×4FÑ4FÔ0FˆÜÐr/   c                 ód   • [        5       nSnU(       a  U $ [        R                  " U5      " U 5      $ )Nzrequires hardlink support)r6   r(   r)   r*   s      r   Úskip_unless_hardlinkr8   Õ   s)   € Ü	‹€BØ
%€CÞˆ4Ð3œ8Ÿ=š=¨Ô-¨dÓ3Ð3r/   c                  ó  • SS K n [        b  [        $ [        [        S5      (       d  SnUqU$ SS KnU R                  5       nU R                  US9u  pE [        [        S5       n [        R                  " USS5        [        R                  " USS	5        [        R                  " UR                  5       SS5        UR                  5       n[        R                  " S
U5      nUS L =(       d    [        UR                  S5      5      S:¬  nS S S 5        [#        [        5        [#        U5        [%        U5        WqU$ ! [          a    Sn N?f = f! , (       d  f       NI= f! [#        [        5        [#        U5        [%        U5        f = f)Nr   ÚsetxattrF©Údirr   s	   user.testr/   s   trusted.foos   42z2.6.(\d{1,2})é   é'   )ÚtempfileÚ
_can_xattrr3   r   ÚplatformÚmkdtempÚmkstempr   r   r:   r   ÚreleaseÚreÚmatchÚintÚgroupr!   r   Úrmdir)	r?   r&   rA   Útmp_dirÚtmp_fpÚtmp_nameÚfpÚkernel_versionÚms	            r   Ú	can_xattrrP   Þ   sC  € ÛäÑÜÐÜ”2�z×"Ñ"Øˆð. €JØ€Jó- 	Ø×"Ñ"Ó$ˆØ#×+Ñ+°Ð+Ð8Ñˆð	Ü”f˜dÔ# rð ô —K’K ¨°cÔ:Ü—K’K ¨.¸%Ô@Ü—K’K §	¡	£¨\¸3Ô?à%-×%5Ñ%5Ó%7�NÜŸšÐ!1°>ÓB�AØ˜t˜)×<¤s¨1¯7©7°1«:£¸"Ñ'<�C÷ $ô ”6ŒNÜ�8ÔÜ�'ŒNØ€JØ€Jøô ó  Ø’Cð ú÷ $Õ#ûô ”6ŒNÜ�8ÔÜ�'�NúsC   ÁE Á#EÁ%B%D;Ä
E Ä;E
ÅEÅ	E
Å
EÅ
EÅE Å'Fc                 ód   • [        5       nSnU(       a  U $ [        R                  " U5      " U 5      $ )zDSkip decorator for tests that require functional extended attributesz(no non-broken extended attribute support)rP   r(   r)   r*   s      r   Úskip_unless_xattrrR   ÿ   s)   € ä	‹€BØ
4€CÞˆ4Ð3œ8Ÿ=š=¨Ô-¨dÓ3Ð3r/   c                  ó„  • [         b  [         $ [        [        S5      (       d  Sq [         $  [        [        S5       n  [        R
                  " [        S5        [        R                  " [        5      R                  n[        R
                  " [        S5        [        R                  " [        5      R                  n[        R                  " U5      [        R                  " U5      :g  nS S S 5        [        [        5        Wq U$ ! [         a  nSn S nAN,S nAff = f! , (       d  f       N:= f! [        [        5        f = f)NÚchmodFr   im  iÿ  )Ú
_can_chmodr3   r   r   r   rT   ÚstatÚst_modeÚS_IMODEr!   r   )ÚfÚmode1Úmode2r&   Úes        r   Ú	can_chmodr]     sß   € äÑÜÐÜ”2�w×ÑØˆ
ÜÐðÜ”&˜$Ô 1ðAÜ—’œ Ô'ÜŸš¤›×/Ñ/�Ü—’œ Ô'ÜŸš¤›×/Ñ/�ô —l’l 5Ó)¬T¯\ª\¸%Ó-@Ñ@�÷  ô 	ŒvŒØ€JØ€Jøô ó Ø•ûðú÷  Õûô 	Œv�úsL   ¬D. ¼D¾A>DÂ<-DÃ)D. Ä
DÄDÄDÄDÄDÄ
D+Ä'D. Ä.D?c                 ód   • [        5       nSnU(       a  U $ [        R                  " U5      " U 5      $ )zXSkip tests that require working os.chmod()

WASI SDK 15.0 cannot change file mode bits.
zrequires working os.chmod())r]   r(   r)   r*   s      r   Úskip_unless_working_chmodr_      s+   € ô
 
‹€BØ
'€CÞˆ4Ð3œ8Ÿ=š=¨Ô-¨dÓ3Ð3r/   c                  óN  • [        5       (       d  Sq[        b  [        $  [        [        S5       n [        R
                  " [        S5         [        [        S5          S S S 5        SqS S S 5         [        R
                  " [        S5        [        [        5        [        $ ! , (       d  f       NI= f! [         a    Sq NXf = f! , (       d  f       Nb= f! [         a     NUf = f!  [        R
                  " [        S5        O! [         a     Of = f[        [        5        f = f)NFr   é   TiÀ  )r]   Ú_can_dac_overrider   r   r   rT   r!   r   )rY   s    r   Úcan_dac_overriderc   0  sè   € ô �;‰;Ø!ÐÜÑ$Ü Ð ðÜ”&˜$Ô 1Ü�HŠH”V˜UÔ#ð)Üœ& $Õ'Ø÷ (ð
 %)Ð!÷  ð	Ü�HŠH”V˜UÔ#ô 	ŒvŒäÐ÷ (Õ'ûäó *Ø$)Ò!ð*ú÷  Õûô ó 	Ùð	ûð	Ü�HŠH”V˜UÕ#øÜó 	Ùð	úäŒv�ús”    C& °CÁB3ÁB"ÁB3Á'CÁ)C& Á2C Â"
B0	Â,B3Â3CÂ?CÃCÃCÃ
CÃC& Ã
C#Ã"C#Ã&D$Ã(DÄD$Ä
DÄD$ÄDÄD$c                 ón   • [        5       (       + nSnU(       a  U $ [        R                  " U5      " U 5      $ )Nz"incompatible with CAP_DAC_OVERRIDE©rc   r(   r)   r*   s      r   Úskip_if_dac_overriderf   L  s-   € ÜÓÔ	€BØ
.€CÞˆ4Ð3œ8Ÿ=š=¨Ô-¨dÓ3Ð3r/   c                 ód   • [        5       nSnU(       a  U $ [        R                  " U5      " U 5      $ )Nzrequires CAP_DAC_OVERRIDEre   r*   s      r   Úskip_unless_dac_overriderh   R  s*   € Ü	Ó	€BØ
%€CÞˆ4Ð3œ8Ÿ=š=¨Ô-¨dÓ3Ð3r/   c                 óH   •  [        U 5        g ! [        [        4 a     g f = f©N)Ú_unlinkÚFileNotFoundErrorÚNotADirectoryError©Úfilenames    r   r   r   X  s'   € ðÜ�ÕøÜÔ1Ð2ó Ùðús   ‚ Ž! !Úwinc                 ó„  • U " U5        U(       a  UnO,[         R                  R                  U5      u  p4U=(       d    SnSnUS:  aP  [         R                  " U5      nU(       a	  U(       d	   g WU;   d  g [        R
                  " U5        US-  nUS:  a  MP  [        R                  " [        5      R                  SUSSS9  g )	NÚ.gü©ñÒMbP?g      ð?r   z+tests may fail, delete still pending for %sTé   )Ú
stack_infoÚ
stacklevel)
r   r   ÚsplitÚlistdirÚtimeÚsleepÚloggingÚ	getLoggerÚ__name__Úwarning)ÚfuncÚpathnameÚwaitallÚdirnameÚnameÚtimeoutÚLs          r   Ú_waitforr…   `  sª   € áˆXŒæØ‰GäŸG™GŸM™M¨(Ó3‰MˆGØ—n ˆGð ˆØ˜‹mô —
’
˜7Ó#ˆAÞ —AØð '+¨a£iØä�JŠJ�wÔØ�q‰LˆGð ˜�mô 	×Òœ(Ó#×+Ñ+Ø9ØØØð	 	,ò 	
r/   c                 ó8   • [        [        R                  U 5        g rj   )r…   r   r   rn   s    r   rk   rk   …  s   € Ü”—‘˜HÕ%r/   c                 ó8   • [        [        R                  U 5        g rj   )r…   r   rI   ©r�   s    r   Ú_rmdirr‰   ˆ  s   € Ü”—‘˜7Õ#r/   c                 óX   ^^• SSK Jm  UU4S jm[        TU SS9  [        U4S jU 5        g )Nr   ©Ú
_force_runc                 óæ  >• T" U [         R                  U 5       H›  n[         R                  R                  X5      n [         R                  " U5      R
                  n[        R                  " U5      (       a%  [        TUSS9  T" U[         R                  U5        Mƒ  T" U[         R                  U5        M�     g ! [         a,  n[        SU< SU< 3[        R                  S9  Sn S nANŽS nAff = f)Nzsupport.rmtree(): os.lstat(z) failed with r   r   T©r€   )r   rw   r   ÚjoinÚlstatrW   r!   ÚprintÚsysÚ
__stderr__rV   ÚS_ISDIRr…   rI   r   )r   r‚   ÚfullnameÚmodeÚexcrŒ   Ú_rmtree_inners        €€r   r˜   Ú_rmtree.<locals>._rmtree_innerŽ  s´   ø€ Ù" 4¬¯©°TÖ:�ÜŸ7™7Ÿ<™<¨Ó3�ðÜŸ8š8 HÓ-×5Ñ5�Dô —<’< ×%Ñ%Ü˜]¨H¸dÒCÙ˜x¬¯©°8Ö<á˜x¬¯©°HÖ=ò ;øô ó ÝÛ%¢sð,ä"Ÿ~™~ò/ð •Dûð	ús   ½ B:Â:
C0Ã"C+Ã+C0TrŽ   c                 ó4   >• T" U [         R                  U 5      $ rj   )r   rI   )ÚprŒ   s    €r   Ú<lambda>Ú_rmtree.<locals>.<lambda>ž  s   ø€ ™: a¬¯©°1Ô5r/   )Útest.supportrŒ   r…   )r   rŒ   r˜   s    @@r   Ú_rmtreerŸ   ‹  s$   ù€ Ý+ö	>ô 	� ¨dÒ3ÜÔ5°tÕ<r/   c                 óæ   •  SS K nUR                  " [        U 5      S-  5      nUR                  R                  R                  X[        U5      5      nU(       a  US U $  U $ ! [         a     U $ f = f)Nr   r   )ÚctypesÚcreate_unicode_bufferÚlenÚwindllÚkernel32ÚGetLongPathNameWÚImportError)r   r¡   ÚbufferÚlengths       r   Ú	_longpathrª      s|   € ð
	'Ûð
 ×1Ò1´#°d³)¸a±-Ó@ˆFØ—]‘]×+Ñ+×<Ñ<¸TÜ=@À»[óJˆFæØ˜g˜v�Ð&ð àˆøô ó 	àð ˆð	ús   ‚A" Á"
A0Á/A0c                 óœ   ^• SS K n UR                  U 5        g ! [         a     Of = fU4S jmT" U 5        [        R                  " U 5        g )Nr   c                 óž  >• SSK Jn  U" U [        R                  U 5       H˜  n[        R                  R                  X5      n [        R                  " U5      R                  n[        R                  " U5      (       a"  T" U5        U" U [        R                  U5        M€  U" U [        R                  U5        Mš     g ! [         a    Sn Nhf = f)Nr   r‹   )rž   rŒ   r   rw   r   r�   r�   rW   r!   rV   r”   rI   r   )r   rŒ   r‚   r•   r–   r˜   s        €r   r˜   r™   ¹  s—   ø€ Ý/Ù" 4¬¯©°TÖ:�ÜŸ7™7Ÿ<™<¨Ó3�ðÜŸ8š8 HÓ-×5Ñ5�Dô —<’< ×%Ñ%Ù! (Ô+Ù˜t¤R§X¡X¨xÖ8á˜t¤R§Y¡Y°Ö9ò ;øô ó Ø’Dðús   Á B=Â=CÃC)ÚshutilÚrmtreer!   r   rI   )r   r­   r˜   s     @r   rŸ   rŸ   ±  sF   ø€ Ûð	Ø�M‰M˜$ÔØøÜó 	Ùð	úõ	:ñ 	�dÔÜ
�Š��s   ‡ ™
&¥&c                 ó   • U $ rj   r5   ©r   s    r   rª   rª   É  ó   € Øˆr/   c                 ó<   •  [        U 5        g ! [         a     g f = frj   )r‰   rl   rˆ   s    r   rI   rI   Í  s    € ðÜˆw�øÜó Ùðúó   ‚ Ž
šc                 ó<   •  [        U 5        g ! [         a     g f = frj   )rŸ   rl   r°   s    r   r®   r®   Ô  s    € ðÜ��øÜó Ùðúr³   c           
   #   óJ  #   • SSK nSnU c2  UR                  5       n Sn[        R                  R	                  U 5      n O [        R
                  " U 5        SnU(       a  [        R                  " 5       n U v •  U(       a&  W[        R                  " 5       :X  a  [        U 5        ggg! [         a>  nU(       d  e [        R                  " [        5      R                  SU UUSSS9   SnAN’SnAff = f! U(       a&  W[        R                  " 5       :X  a  [        U 5        f f f = f7f)a†  Return a context manager that creates a temporary directory.

Arguments:

  path: the directory to create temporarily.  If omitted or None,
    defaults to creating a temporary directory using tempfile.mkdtemp.

  quiet: if False (the default), the context manager raises an exception
    on error.  Otherwise, if the path is specified and cannot be
    created, only a warning is issued.

r   NFTz;tests may fail, unable to create temporary directory %r: %sé   ©Úexc_infort   ru   )r?   rB   r   r   ÚrealpathÚmkdirr!   rz   r{   r|   r}   Úgetpidr®   )r   Úquietr?   Údir_createdr—   Úpids         r   Útemp_dirr¿   Û  sò   é € ó Ø€KØ�|Ø×ÑÓ!ˆØˆÜ�w‰w×Ñ Ó%‰ð	Ü�HŠH�TŒNØˆKö Ü�iŠi‹kˆðØŠ
ö ˜3¤"§)¢)£+Ó-Ü�4�Lð .ˆ;øô% ó 
	ÞØÜ×ÒœhÓ'×/Ñ/ØMØØØØØð 0ö ûð
	ûö$ ˜3¤"§)¢)£+Ó-Ü�4�Lð .ˆ;üsF   ‚<D#¿B& ÁD#Á4C1 Á8.D#Â&
C.Â04C)Ã$D#Ã)C.Ã.D#Ã1/D Ä D#c           
   #   óÆ  #   • [         R                  " 5       n [         R                  " [         R                  R	                  U 5      5         [         R                  " 5       v •  [         R                  " U5        g! [
         a>  nU(       d  e [        R                  " [        5      R                  SU UUSSS9   SnANrSnAff = f! [         R                  " U5        f = f7f)aO  Return a context manager that changes the current working directory.

Arguments:

  path: the directory to use as the temporary current working directory.

  quiet: if False (the default), the context manager raises an exception
    on error.  Otherwise, it issues only a warning and keeps the current
    working directory the same.

zHtests may fail, unable to change the current working directory to %r: %sTr¶   r·   N)
r   ÚgetcwdÚchdirr   r¹   r!   rz   r{   r|   r}   )r   r¼   Ú	saved_dirr—   s       r   Ú
change_cwdrÄ   	  s§   é € ô —	’	“€Ið
Ü
�Š”—‘×!Ñ! $Ó'Ô(ðÜ�iŠi‹kÒä
�Š�Õøô ó 
ÞØÜ×Òœ(Ó#×+Ñ+ðàØØØØð 	,ö 	
ûð
ûô 	�Š�Õüs@   ‚C!™3A; ÁC Á$C!Á;
CÂ4B>Â9C!Â>CÃC!ÃCÃC!c              #   ó    #   • [        XS9 n[        X!S9 nUv •  SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f7f)aÒ  
Context manager that temporarily creates and changes the CWD.

The function temporarily changes the current working directory
after creating a temporary directory in the current directory with
name *name*.  If *name* is None, the temporary directory is
created using tempfile.mkdtemp.

If *quiet* is False (default) and it is not possible to
create or change the CWD, an error is raised.  If *quiet* is True,
only a warning is raised and the original CWD is used.

)r   r¼   )r¼   N)r¿   rÄ   )r‚   r¼   Ú	temp_pathÚcwd_dirs       r   Útemp_cwdrÈ   +  s<   é € ô 
�tÒ	)¨YÜ˜	Ò/°7ØŠM÷ 0÷ 
*Ð	)ß/Õ/ú÷ 
*Õ	)üs)   ‚
AŒ
=–,›=£	A¬
:	¶=½
AÁAc                 ó¾   • [         R                  " U [         R                  [         R                  -  [         R                  -  5      n[         R
                  " U5        g)z>Create an empty file. If the file already exists, truncate it.N)r   r   ÚO_WRONLYÚO_CREATÚO_TRUNCr   )ro   Úfds     r   Úcreate_empty_filerÎ   ?  s3   € ä	�Š�œ2Ÿ;™;¬¯©Ñ3´b·j±jÑ@Ó	A€BÜ‡H‚HˆR…Lr/   c              #   ó`  #   • [         R                  R                  U 5      (       d   e[         R                  n[	        [         S5      (       a  U[         R
                  -  n[         R                  " X5      n Uv •  [         R                  " U5        g! [         R                  " U5        f = f7f)z&Open a file descriptor to a directory.ÚO_DIRECTORYN)r   r   ÚisdirÚO_RDONLYr3   rÐ   r   r   )r   ÚflagsÚdir_fds      r   Úopen_dir_fdrÕ   E  st   é € ô �7‰7�=‰=˜×ÑÐÐÜ�K‰K€EÜŒr�=×!Ñ!Ø”—‘ÑˆÜ�WŠW�TÓ!€FðØŠä
�Š�ÕøŒ�Š�Õüs   ‚A5B.Á8B Á<B.ÂB+Â+B.c                 ó0  • SSK nUR                  U S9 nUR                  nUR                  5       nXC:X  a  UR	                  5       n [
        R                  R                  X45      sSSS5        $ ! [         a     SSS5        gf = f! , (       d  f       g= f)zKDetects if the file system for the specified directory
is case-insensitive.r   Nr;   F)	r?   ÚNamedTemporaryFiler‚   ÚupperÚlowerr   r   Úsamefilerl   )Ú	directoryr?   ÚbaseÚ	base_pathÚ	case_paths        r   Úfs_is_case_insensitiverß   S  s…   € ó Ø	×	$Ñ	$¨Ð	$Ñ	3°tØ—I‘Iˆ	Ø—O‘OÓ%ˆ	ØÓ!Ø!Ÿ™Ó)ˆIð	Ü—7‘7×#Ñ# IÓ9÷ 
4Ñ	3øô !ó 	Ø÷ 
4Ð	3ð	ú÷ 
4Õ	3ús)   ”2BÁA/Á/
BÁ9BÂBÂBÂ
Bc                   ó*   • \ rS rSrSrS rS rS rSrg)ÚFakePathib  z0Simple implementation of the path protocol.
    c                 ó   • Xl         g rj   r°   )Úselfr   s     r   Ú__init__ÚFakePath.__init__e  s   € Ø�	r/   c                 ó$   • SU R                   < S3$ )Nz
<FakePath Ú>r°   ©rã   s    r   Ú__repr__ÚFakePath.__repr__h  s   € Ø˜DŸI™I™=¨Ð*Ð*r/   c                 óì   • [        U R                  [        5      (       d>  [        U R                  [        5      (       a+  [	        U R                  [        5      (       a  U R                  eU R                  $ rj   )Ú
isinstancer   ÚBaseExceptionÚtypeÚ
issubclassrè   s    r   Ú
__fspath__ÚFakePath.__fspath__k  sH   € Ü�t—y‘y¤-×0Ñ0Ü�t—y‘y¤$×'Ñ'Ü˜4Ÿ9™9¤m×4Ñ4Ø—)‘)ˆOà—9‘9Ðr/   r°   N)	r|   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rä   ré   rð   Ú__static_attributes__r5   r/   r   rá   rá   b  s   † ñòò+õr/   rá   c                  ó~  • [         R                  R                  S5      (       a  Sn O[        R                  (       a  Sn OSn U b%   [
        R                  " U 5      n[        U5      S-
  $ Sn[        [
        S5      (       a   [
        R                  " S5      nSn[         R                  S	:X  aQ   S
SKnUR                    0 nUR                  UR                  UR                   4 H  nUR                  US
5      X5'   M      S
n['        U5       H5  n [
        R(                  " U5      n[
        R*                  " U5        US-  nM7     Ub>  WR                  UR                  UR                   4 H  nUR                  XSU   5        M     U$ ! [         a     GN,f = f! [         a     GNf = f! ["        [$        4 a     N¾f = f! [         a*  n	U	R,                  [,        R.                  :w  a  e  Sn	A	Mã  Sn	A	ff = f! Ub?  WR                  UR                  UR                   4 H  nUR                  XSU   5        M     f f = f)z/Count the number of open file descriptors.
    )ÚlinuxÚandroidÚfreebsdr   z/proc/self/fdz/dev/fdNr=   ra   ÚsysconfÚSC_OPEN_MAXÚwin32r   )r’   rA   Ú
startswithr   Úis_appler   rw   r£   rl   r3   rû   r!   ÚmsvcrtÚCrtSetReportModeÚCRT_WARNÚ	CRT_ERRORÚ
CRT_ASSERTr#   r§   ÚrangeÚdupr   ÚerrnoÚEBADF)
Úfd_pathÚnamesÚMAXFDÚ	old_modesr   Úreport_typeÚcountrÍ   Úfd2r\   s
             r   Úfd_countr  t  s+  € ô ‡|�|×ÑÐL×MÑMØ!‰Ü	×	×	Ø‰àˆàÑð	Ü—J’J˜wÓ'ˆEô �u“: ‘>Ð!ð €EÜŒr�9×Ñð	Ü—J’J˜}Ó-ˆEð €IÜ
‡|�|�wÓð	DÛØ×#Ò#ð
 ˆIØ &§¡Ø &× 0Ñ 0Ø &× 1Ñ 1ó 3�ð *0×)@Ñ)@ÀØABó*D�	Ó&ñ 3ðMØˆÜ˜–,ˆBð	ô —f’f˜R“j�ô
 —’˜”Ø˜‘
’ñ ð Ñ Ø &§¡Ø &× 0Ñ 0Ø &× 1Ñ 1ó 3�ð ×'Ñ'¨¸{Ñ5KÖLñ 3ð
 €Løôa !ó 	Úð	ûô ó 	Úð	ûô ¤Ð,ó 	áð	ûô$ ó Ø—7‘7œeŸk™kÓ)Øõ *ûðûð Ñ Ø &§¡Ø &× 0Ñ 0Ø &× 1Ñ 1ó 3�ð ×'Ñ'¨¸{Ñ5KÖLò 3ð !úsm   Á#F	 ÂF Â/F+ Ä G8 ÄGÄ'G8 Æ	
FÆFÆ
F(Æ'F(Æ+F>Æ=F>Ç
G5ÇG0Ç*G8 Ç0G5Ç5G8 Ç8AH<Úumaskc              #   ó¤   #   • [         R                  " U 5      n Sv •  [         R                  " U5        g! [         R                  " U5        f = f7f)z8Context manager that temporarily sets the process umask.N)r   r  )r  Úoldmasks     r   Ú
temp_umaskr  ¸  s4   é € ô —(’(˜5“/ˆð	Ûä�HŠH�WÕøŒB�HŠH�WÕüs   ‚Aš5 žAµAÁAc              #   ó   #   • Sv •  g7f)z"no-op on platforms without umask()Nr5   )r  s    r   r  r  Á  s
   é € ô 	ùs   ‚c                   ó`   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)ÚEnvironmentVarGuardiÇ  z\Class to help protect the environment variable properly.

Can be used as a context manager.
c                 ó<   • [         R                  U l        0 U l        g rj   )r   ÚenvironÚ_environÚ_changedrè   s    r   rä   ÚEnvironmentVarGuard.__init__Í  s   € ÜŸ
™
ˆŒØˆ�r/   c                 ó    • U R                   U   $ rj   )r  ©rã   Úenvvars     r   Ú__getitem__ÚEnvironmentVarGuard.__getitem__Ñ  s   € Ø�}‰}˜VÑ$Ð$r/   c                 óŽ   • XR                   ;  a(  U R                  R                  U5      U R                   U'   X R                  U'   g rj   ©r  r  Úget©rã   r  Úvalues      r   Ú__setitem__ÚEnvironmentVarGuard.__setitem__Ô  s5   € àŸ™Ó&Ø$(§M¡M×$5Ñ$5°fÓ$=ˆD�M‰M˜&Ñ!Ø %�‰�fÒr/   c                 ó¬   • XR                   ;  a(  U R                  R                  U5      U R                   U'   XR                  ;   a  U R                  U	 g g rj   r#  r  s     r   Ú__delitem__ÚEnvironmentVarGuard.__delitem__Ú  sD   € àŸ™Ó&Ø$(§M¡M×$5Ñ$5°fÓ$=ˆD�M‰M˜&Ñ!Ø—]‘]Ó"Ø—‘˜fÑ%ð #r/   c                 ó6   • U R                   R                  5       $ rj   )r  Úkeysrè   s    r   r-  ÚEnvironmentVarGuard.keysá  s   € Ø�}‰}×!Ñ!Ó#Ð#r/   c                 ó,   • [        U R                  5      $ rj   )Úiterr  rè   s    r   Ú__iter__ÚEnvironmentVarGuard.__iter__ä  s   € Ü�D—M‘MÓ"Ð"r/   c                 ó,   • [        U R                  5      $ rj   )r£   r  rè   s    r   Ú__len__ÚEnvironmentVarGuard.__len__ç  s   € Ü�4—=‘=Ó!Ð!r/   c                 ó   • X U'   g rj   r5   r%  s      r   ÚsetÚEnvironmentVarGuard.setê  s	   € ØˆVŠr/   c                ó"   • U/UQ7 H  nX	 M     g)z(Unset one or more environment variables.Nr5   )rã   r  ÚenvvarsÚevs       r   ÚunsetÚEnvironmentVarGuard.unsetí  s   € àÐ$˜GÔ$ˆBØ’ò %r/   c                 ó   • [        U 5      $ rj   )Údictrè   s    r   ÚcopyÚEnvironmentVarGuard.copyò  s   € ä�D‹zÐr/   c                 ó   • U $ rj   r5   rè   s    r   Ú	__enter__ÚEnvironmentVarGuard.__enter__ö  r±   r/   c                 óÖ   • U R                   R                  5        H6  u  p#Uc   X R                  ;   a  U R                  U	 M&  M(  X0R                  U'   M8     U R                  [        l        g rj   )r  Úitemsr  r   r  )rã   Ú
ignore_excÚkÚvs       r   Ú__exit__ÚEnvironmentVarGuard.__exit__ù  sV   € Ø—m‘m×)Ñ)Ö+‰FˆQØ‰yØŸ™Ó%ØŸ™ aÒ(ñ &ð $%—‘˜aÓ ñ ,ð —]‘]Œ�
r/   )r  r  N)r|   rò   ró   rô   rõ   rä   r   r'  r*  r-  r1  r4  r7  r<  r@  rC  rJ  rö   r5   r/   r   r  r  Ç  sC   † ñò
ò%ò&ò&ò$ò#ò"òòò
òõ#r/   r  r¥   T)Úuse_last_errorrs   é   c              #   óÜ  #   • [        [        R                  5       HE  nU S3n[        R	                  USS5      (       a  M&  [
        R                  " 5       [        :X  d  ME    O   [        R                  " S5      e[        R                  [        X 5      (       d)  [
        R                  " [
        R                  " 5       5      e Uv •  [        R                  [        [        -  X 5      (       d)  [
        R                  " [
        R                  " 5       5      eg! [        R                  [        [        -  X 5      (       d)  [
        R                  " [
        R                  " 5       5      ef = f7f)z6Temporarily yield a substitute drive for a given path.Ú:Nr   zno available logical drive)ÚreversedÚstringÚascii_uppercaser¥   ÚQueryDosDeviceWr¡   Úget_last_errorÚERROR_FILE_NOT_FOUNDr(   ÚSkipTestÚDefineDosDeviceWÚDDD_NO_BROADCAST_SYSTEMÚWinErrorÚDDD_REMOVE_DEFINITIONÚDDD_EXACT_MATCH_ON_REMOVE)r   ÚcÚdrives      r   Úsubst_driver^    s  é € ô œ&×0Ñ0Ö1ˆAØ�c˜�GˆEÜ×,Ñ,¨U°D¸!×<Ó<Ü×)Ò)Ó+Ô/CÕCÙñ	 2ô ×#Ò#Ð$@ÓAÐAÜ×(Ñ(Ü'¨÷6ñ 6ä—/’/¤&×"7Ò"7Ó"9Ó:Ð:ð	?ØŠKä×,Ñ,Ü)Ô,EÑEØ÷!ñ !ô —o’o¤f×&;Ò&;Ó&=Ó>Ð>ð!ø”8×,Ñ,Ü)Ô,EÑEØ÷!ñ !ô —o’o¤f×&;Ò&;Ó&=Ó>Ð>ð!üs,   ‚<E,ÁE,Á!A"E,ÃD ÃAE,ÄAE)Å)E,c                 ó.   • [         R                  " S5      e)Nz#ctypes or kernel32 is not available)r(   rV  r°   s    r   r^  r^    s   € Ü×ÒÐ EÓFÐFr/   )F)NF)ÚtempcwdF)^Úcollections.abcÚcollectionsÚ
contextlibr  rz   r   rE   rV   rQ  r’   rx   r(   Úwarningsr+   r   ÚTESTFN_ASCIIÚformatr»   ÚTESTFN_UNICODErÿ   ÚunicodedataÚ	normalizeÚTESTFN_UNENCODABLEr‚   ÚgetwindowsversionrA   ÚencodeÚgetfilesystemencodingr‘   ÚUnicodeEncodeErrorÚdecodeÚUnicodeDecodeErrorÚFS_NONASCIIÚ	characterÚfsdecodeÚfsencodeÚUnicodeErrorrÁ   ÚSAVEDCWDÚTESTFN_UNDECODABLEÚgetfilesystemencodeerrorsÚTESTFN_NONASCIIr   r   r   r   r.   r2   r6   r8   r@   rP   rR   rU   r]   r_   rb   rc   rf   rh   r   rþ   r…   rk   r‰   rŸ   rª   rI   r®   Úcontextmanagerr¿   rÄ   rÈ   rÎ   rÕ   rß   rá   r  r3   r  ÚabcÚMutableMappingr  Ú
MS_WINDOWSr¡   ÚWinDLLr¥   rU  rZ  r[  rX  r#   r^  r§   r5   r/   r   Ú<module>r     s®  ðÛ Û Û Û Û 	Û 	Û Û Û 
Û Û Û å ð €ð ×!Ñ! ,°·	²	³Ó<€ð Ð =Ñ=€Ø
××ó Ø ×*Ò*¨5°.ÓA€Nð
 Ð Ø‡7�7ˆdƒ?à
×ÒÓ×'Ñ'¨1Ó,ð *Ð,MÑMÐð	&Ø×%Ñ% c×&?Ò&?Ó&AÔBò ã'¨×)BÒ)BÖ)DðFô Gð "&Ñð -ð 
×	×	˜cŸl™lÐ2HÓHð
à�‰�s×0Ò0Ó2Ô3ð 	ð €ó €IðB
ð �;Š;�r—{’{ 9Ó-Ó.°)Ó;ØÐð <ð
  ˆÙñW ð\ �9Š9‹;€ð Ð ó€Dð"	Ø�‰�C×-Ò-Ó/Ö0ñ%ö8 Ø" [Ñ0�Oà€OØ	×	(˜L€ò
ð €òò(4ð €òò4ð €
òòB4ð €
òò04ð Ð òò84ò4òð ‡<�<×Ñ˜5×!Ñ!ô#
òJ&ò$ò=ó*ð �i‰i€GØ�X‰X€Fòò0òòð ×Ñó*ó ð*ðZ ×Ñóó ððB ×Ñóó ðò&ð ×Ññ
ó ð
ò÷ñ ò$@ñF ˆ2ˆw×ÑØ×Ññó ñð ×Ññó ðô
9#˜+Ÿ/™/×8Ñ8ô 9#ðx"?Ø××ÛØ—=’= ¸DÑAˆà ÐØ !ÐØ$%Ð!Ø"#ÑàÐð 	 ð ×Ññ?ó ñ?øðM "ó 	Úð	ûð ó Nà)Ø�o‰o˜c×7Ò7Ó9Ð;LÓMñNÓðNûðf ó ÛðûðF ó ð	Ø�K‰K˜×1Ò1Ó3Ø×5Ò5Ó7õ9øà!ó 	Üð	úàŸ[š[¨Ó6¸Ñ=ÐÜðûð~ 	�^Ð$ó GôGðGús~   Â> M Ä$ M  Å(NÆ NÌ1P ÍMÍMÍ *NÎNÎNÎNÎPÎ&0OÏPÏO#ÏPÏ"O#Ï#PÐ PÐPÐP