Ë
    bQbj�6  ã                  ó†  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZ G d„ de
«      Zdd„Zdd„Z	 	 	 	 	 	 dd	„Zdd
„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zej6                  j9                   e«        d¬«      dd„«       Zdd„Zy)é    )ÚannotationsN)Úpartial)ÚProtocolc                  ó   — e Zd Zddd„Zy)ÚRawInputc                 ó   — y ©N© )ÚselfÚprompts     úH/var/www/html/venv/lib/python3.12/site-packages/trio/_tests/test_repl.pyÚ__call__zRawInput.__call__   s   � ó    N©Ú ©r   ÚstrÚreturnr   )Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   r      s   „ Ý4r   r   c                ó4   ‡‡— t        | «      Šg Šddˆˆfd„}|S )z¨
    Pass in a list of strings.
    Returns a callable that returns each string, each time its called
    When there are not more strings to return, raise EOFError
    c                óf   •— ‰j                  | «       	 t        ‰«      S # t        $ r t        d ‚w xY wr	   )ÚappendÚnextÚStopIterationÚEOFError)r   Ú	cmds_iterÚpromptss    €€r   Ú_raw_helperz$build_raw_input.<locals>._raw_helper   s5   ø€ Ø�‰�vÔð	%Ü˜	“?Ð"øÜò 	%Ü Ð$ð	%ús   ”
 Ÿ0r   r   )Úiter)Úcmdsr    r   r   s     @@r   Úbuild_raw_inputr#      s    ù€ ô �T“
€IØ€G÷%ð Ðr   c                 óž   — t        dg«      }  | «       dk(  sJ ‚t        j                  t        «      5   | «        ddd«       y# 1 sw Y   yxY w)z"Quick test of our helper function.Úcmd1N)r#   ÚpytestÚraisesr   )Ú	raw_inputs    r   Útest_build_raw_inputr)   '   sD   € ä  Ó)€IÙ‹;˜&Ò Ð Ð Ü	�‰”xÓ	 ñ ÙŒ÷÷ ñ ús   ²AÁAc              ƒ  ó.  K  — t         j                  j                  «       }t        g d¢«      }|j	                  |d|«       t         j                  j                  |«      ƒ d{  –—†  | j                  «       \  }}|j                  «       g d¢k(  sJ ‚y7 Œ/­w)zŽ
    Run some basic commands through the interpreter while capturing stdout.
    Ensure that the interpreted prints the expected results.
    )zx = 1zprint(f'{x=}')ú'hello'zdef func():z  print(x + 1)r   zfunc()zasync def afunc():z
  return 4r   zawait afunc()ú
import sysz"sys.stdout.write('hello stdout\n')r(   N)zx=1r+   Ú2Ú4zhello stdoutÚ13)ÚtrioÚ_replÚTrioInteractiveConsoler#   ÚsetattrÚrun_replÚ
readouterrÚ
splitlines©ÚcapsysÚmonkeypatchÚconsoler(   ÚoutÚ_errs         r   Útest_basic_interactionr=   /   s‚   è ø€ ô �j‰j×/Ñ/Ó1€GÜò	
ó€Ið, ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø×!Ñ!Ó#�I€CˆØ�>‰>ÓÒQÒQÐQÑQð 'ús   ‚A!BÁ#BÁ$0Bc              ƒ  ó4  K  — t         j                  j                  «       }t        dg«      }| j	                  |d|«       t        j                  t        «      5  t         j                  j                  |«      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nzraise SystemExitr(   )	r0   r1   r2   r#   r3   r&   r'   Ú
SystemExitr4   )r9   r:   r(   s      r   Ú"test_system_exits_quit_interpreterr@   T   s   è ø€ Ü�j‰j×/Ñ/Ó1€GÜàð	
ó€Ið
 ×Ñ˜ ¨iÔ8Ü	�‰”zÓ	"ñ +Ü�j‰j×!Ñ! 'Ó*×*Ð*÷+ð +Ø*ø÷+ð +üs0   ‚ABÁ#BÁ<B
Á=BÂ	BÂ
BÂBÂBc              ƒ  ó$  K  — t         j                  j                  «       }t        g d¢«      }|j	                  |d|«       t         j                  j                  |«      ƒ d {  –—†  | j                  «       \  }}d|v sJ ‚d|vsJ ‚d|v sJ ‚y 7 Œ*­w)N)z"import signal, trio, trio.lowlevelzasync def f():zh  trio.lowlevel.spawn_system_task(    trio.to_thread.run_sync,    signal.raise_signal, signal.SIGINT,  )z  await trio.sleep_forever()z  print('should not see this')r   z	await f()z print('AFTER KeyboardInterrupt')r(   ÚKeyboardInterruptÚshouldzAFTER KeyboardInterrupt©r0   r1   r2   r#   r3   r4   r5   ©r8   r9   r:   r(   r;   Úerrs         r   Útest_KI_interruptsrG   `   s–   è ø€ ô �j‰j×/Ñ/Ó1€GÜò	
ó€Ið ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø× Ñ Ó"�H€CˆØ #Ñ%Ð%Ð%Ø˜3ÑÐÐØ$¨Ñ+Ð+Ñ+ð	 'úó   ‚A!BÁ#BÁ$+Bc              ƒ  ó  K  — t         j                  j                  «       }t        g d¢«      }|j	                  |d|«       t         j                  j                  |«      ƒ d {  –—†  | j                  «       \  }}d|v sJ ‚y 7 Œ­w)N)r,   úif sys.version_info < (3, 11):ú/  from exceptiongroup import BaseExceptionGroupr   z<raise BaseExceptionGroup('', [RuntimeError(), SystemExit()])ú!print('AFTER BaseExceptionGroup')r(   úAFTER BaseExceptionGrouprD   r7   s         r   Útest_system_exits_in_exc_grouprN   |   s|   è ø€ ô �j‰j×/Ñ/Ó1€GÜò	
ó	€Ið ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø×!Ñ!Ó#�I€Cˆð &¨Ñ,Ð,Ñ,ð	 'úó   ‚A!BÁ#BÁ$Bc              ƒ  ó  K  — t         j                  j                  «       }t        g d¢«      }|j	                  |d|«       t         j                  j                  |«      ƒ d {  –—†  | j                  «       \  }}d|v sJ ‚y 7 Œ­w)N)r,   rJ   rK   r   zraise BaseExceptionGroup(z?  '', [BaseExceptionGroup('', [RuntimeError(), SystemExit()])])rL   r(   rM   rD   r7   s         r   Ú%test_system_exits_in_nested_exc_grouprQ   “   s|   è ø€ ô �j‰j×/Ñ/Ó1€GÜò	
ó
€Ið ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø×!Ñ!Ó#�I€Cˆð &¨Ñ,Ð,Ñ,ð	 'úrO   c              ƒ  ó$  K  — t         j                  j                  «       }t        ddg«      }|j	                  |d|«       t         j                  j                  |«      ƒ d {  –—†  | j                  «       \  }}d|vsJ ‚d|vsJ ‚d|v sJ ‚y 7 Œ*­w)Nzraise BaseExceptionúprint('AFTER BaseException')r(   ú_threads.pyú_repl.pyúAFTER BaseExceptionrD   rE   s         r   Útest_base_exception_capturedrW   «   sž   è ø€ ô �j‰j×/Ñ/Ó1€GÜð "Ø*ð	
ó€Ið ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø× Ñ Ó"�H€CˆØ Ñ#Ð#Ð#Ø˜SÑ Ð Ð Ø  CÑ'Ð'Ñ'ð	 'úrH   c              ƒ  ó  K  — t         j                  j                  «       }t        ddg«      }|j	                  |d|«       t         j                  j                  |«      ƒ d {  –—†  | j                  «       \  }}d|v sJ ‚y 7 Œ­w)Nz&raise ExceptionGroup('', [KeyError()])zprint('AFTER ExceptionGroup')r(   zAFTER ExceptionGrouprD   r7   s         r   Útest_exc_group_capturedrY   ¿   s‚   è ø€ ô �j‰j×/Ñ/Ó1€GÜð 5Ø+ð	
ó€Ið ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø×!Ñ!Ó#�I€CˆØ! SÑ(Ð(Ñ(ð 'úrO   c              ƒ  ó$  K  — t         j                  j                  «       }t        g d¢«      }|j	                  |d|«       t         j                  j                  |«      ƒ d {  –—†  | j                  «       \  }}d|vsJ ‚d|vsJ ‚d|v sJ ‚y 7 Œ*­w)N)z-async def async_func_raises_base_exception():z  raise BaseExceptionr   z(await async_func_raises_base_exception()rS   r(   rT   rU   rV   rD   rE   s         r   Ú*test_base_exception_capture_from_coroutiner[   Ñ   s–   è ø€ ô �j‰j×/Ñ/Ó1€GÜò	
ó
€Ið ×Ñ˜ ¨iÔ8Ü
�*‰*×
Ñ
˜gÓ
&×&Ð&Ø× Ñ Ó"�H€CˆØ Ñ#Ð#Ð#Ø˜SÑ Ð Ð Ø  CÑ'Ð'Ñ'ð	 'úrH   c                 óv   — t        j                  t        j                  ddgd¬«      } | j                  dk(  sJ ‚y)zL
    Basic smoke test when running via the package __main__ entrypoint.
    ú-mr0   s   exit())Úinputr   N)Ú
subprocessÚrunÚsysÚ
executableÚ
returncode)Úrepls    r   Útest_main_entrypointre   é   s1   € ô �>‰>œ3Ÿ>™>¨4°Ð8À	ÔJ€DØ�?‰?˜aÒÐÑr   c                 óœ   — t         j                  dk7  ryt        j                  d«      } | j	                  «       sy| j                  «       dk(  S )NÚlinuxFz /proc/sys/dev/tty/legacy_tiocstiTÚ1)ra   ÚplatformÚpathlibÚPathÚexistsÚ	read_text)Úsysctls    r   Úshould_try_newline_injectionro   ñ   sB   € Ü
‡|�|�wÒØä�\‰\Ð<Ó=€FØ�=‰=Œ?Øð ×ÑÓ! SÑ(Ð(r   z"the ioctl we use is disabled in CI)Úreasonc                 ó  — t         j                  dk7  sJ ‚dd l} | j                  «       \  }}|dk(  r6t	        j
                  t         j                  gt         j                  dddg¢­Ž  d}|j                  d«      s+|t	        j                  |d«      z  }|j                  d«      sŒ+t        |j                  «       «       d}t	        j                  |d	«       |j                  d
«      s+|t	        j                  |d«      z  }|j                  d
«      sŒ+|j                  d«      dk(  sJ ‚t        |j                  «       «       d}t	        j                  |t        j                  «       |j                  d
«      s+|t	        j                  |d«      z  }|j                  d
«      sŒ+d|v sJ ‚t        |j                  «       «       d}t	        j                  |d«       t	        j                  |t        j                  «       |j                  d
«      s+|t	        j                  |d«      z  }|j                  d
«      sŒ+d|v sJ ‚t        |j                  «       «       t	        j                   |«       t	        j"                  |d«      d    y )NÚwin32r   ú-ur]   r0   r   s   import trio
>>> i   ó   print("hello!")
ó   >>> ó   hello!é   ó   KeyboardInterrupts   print("hello!")é   )ra   ri   ÚptyÚforkÚosÚexeclprb   ÚendswithÚreadÚprintÚdecodeÚwriteÚcountÚkillÚsignalÚSIGINTÚcloseÚwaitpid)rz   ÚpidÚpty_fdÚbuffers       r   Útest_ki_newline_injectionrŒ   ý   sÿ  € ô �<‰<˜7Ò"Ð"Ð"ãð —(‘(“*�K€CˆØ
ˆa‚xÜ
�	‰	”#—.‘.ÐH¤C§N¡N°D¸$ÀÐ#GÓHð €FØ�o‰oÐ4Ô5Ø”"—'‘'˜& $Ó'Ñ'ˆð �o‰oÐ4Õ5ô 
ˆ&�-‰-‹/ÔØ€FÜ‡H�HˆVÐ)Ô*Ø�o‰o˜gÔ&Ø”"—'‘'˜& $Ó'Ñ'ˆð �o‰o˜gÕ&ð �<‰<˜	Ó" aÒ'Ð'Ð'ô 
ˆ&�-‰-‹/ÔØ€FÜ‡G�GˆC”—‘ÔØ�o‰o˜gÔ&Ø”"—'‘'˜& $Ó'Ñ'ˆð �o‰o˜gÕ&ð   6Ñ)Ð)Ð)ô 
ˆ&�-‰-‹/ÔØ€FÜ‡H�HˆVÐ'Ô(Ü‡G�GˆC”—‘ÔØ�o‰o˜gÔ&Ø”"—'‘'˜& $Ó'Ñ'ˆð �o‰o˜gÕ&ð   6Ñ)Ð)Ð)Ü	ˆ&�-‰-‹/ÔÜ‡H�HˆVÔÜ‡J�Jˆs�AÓ�qÓr   c               ƒ  óJ  K  — t        j                  «       4 ƒd {  –—† } | j                  t        t         j                  t
        j                  dddgt        j                  t        j                  t        j                  t
        j                  dk(  rt        j                  nd¬«      «      ƒ d {  –—† }|j                  4 ƒd {  –—†  d}|j                  2 3 d {  –—† }||z  }|j                  dd	«      j                  d
«      sŒ0 t        |j!                  «       «       d}|j"                  j%                  d«      ƒ d {  –—†  |j                  2 3 d {  –—† }||z  }|j                  d«      sŒ  d|v sJ ‚t        |j!                  «       «       t
        j                  dk(  rkd}|j"                  j%                  d«      ƒ d {  –—†  |j                  2 3 d {  –—† }||z  }|j                  d«      sŒ  t        |j!                  «       «       d}|j"                  j%                  d«      ƒ d {  –—†  |j                  2 3 d {  –—† }||z  }|j                  d«      sŒ  t        |j!                  «       «       t
        j                  dk(  rt&        j(                  nt&        j*                  }t-        j.                  |j0                  |«       t
        j                  dk(  r$|j"                  j%                  d	«      ƒ d {  –—†  n#|j"                  j%                  d	«      ƒ d {  –—†  d}|j                  2 3 d {  –—† }||z  }|j                  d«      sŒ  d|v sJ ‚t        |j!                  «       «       |j"                  j%                  d«      ƒ d {  –—†  d}d}|j                  2 3 d {  –—† }||z  }|j                  dd	«      j                  d«      r$|s"t-        j.                  |j0                  |«       d}|j                  d«      sŒe d|v sJ ‚d|v sJ ‚t        |j!                  «       «       |j"                  j%                  d«      ƒ d {  –—†  d}d}|j                  2 3 d {  –—† }||z  }|j                  dd	«      j                  d«      r$|s"t-        j.                  |j0                  |«       d}|j                  d«      sŒe d|v sJ ‚d|v sJ ‚t        |j!                  «       «       d d d «      ƒd {  –—†  | j2                  j5                  «        d d d «      ƒd {  –—†  y 7 �Œ7 �Œ�7 �Œo7 �Œ[6 �Œ47 �Œû7 �Œé6 �ŒÒ7 �Œ€7 �Œn6 �ŒW7 �Œ7 �Œ6 �Œõ7 �ŒX7 �Œ77 �Œ#6 �Œ7 �ŒÏ7 �Œ¹6 �Œ]7 �Œ7 �Œ6 Œ§7 Œv# 1 ƒd {  –—†7  sw Y   Œ†xY w7 Œc# 1 ƒd {  –—†7  sw Y   y xY w­w)Nrs   r]   r0   rr   r   )ÚstdoutÚstderrÚstdinÚcreationflagsr   s   
ó   
s   import trio
>>> rt   ru   rv   sI   import ctypes; ctypes.windll.kernel32.SetConsoleCtrlHandler(None, False)
sW   import coverage; trio.lowlevel.enable_ki_protection(coverage.pytracer.PyTracer._trace)
rx   s+   print("READY"); await trio.sleep_forever()
Fs   READY
Ts   trios/   import time; print("READY"); time.sleep(99999)
s	   Traceback)r0   Úopen_nurseryÚstartr   Úrun_processra   rb   r_   ÚPIPEÚSTDOUTri   ÚCREATE_NEW_PROCESS_GROUPrŽ   Úreplacer~   r€   r�   r�   Úsend_allr…   ÚCTRL_C_EVENTr†   r|   r„   r‰   Úcancel_scopeÚcancel)ÚnurseryÚprocr‹   ÚpartÚsignal_sentÚkilleds         r   Útest_ki_in_replr£   5  s  è ø€ Ü× Ñ Ó"÷ v&ð v& gØ—]‘]ÜÜ× Ñ Ü—‘  t¨VÐ4Ü!—‘Ü!×(Ñ(Ü —o‘oÜEHÇ\Á\ÐU\ÒE\œj×AÒAÐbcôó	
÷ 	
ˆð —;‘;÷ g	#ñ g	#àˆFØ"Ÿk™k÷ ð �dØ˜$‘�à—>‘> '¨5Ó1×:Ñ:Ð;OÕPØô �&—-‘-“/Ô"ØˆFØ—*‘*×%Ñ%Ð&:Ó;×;Ð;Ø"Ÿk™k÷ ð �dØ˜$‘�Ø—?‘? 7Õ+Øà Ñ&Ð&Ð&Ü�&—-‘-“/Ô"ô �|‰|˜wÒ&Ø�Ø—j‘j×)Ñ)Øaó÷ ð ð #'§+¡+÷ ð ˜$Ø˜d‘N�FØ—‘ wÕ/Øä�f—m‘m“oÔ&ð ˆFØ—*‘*×%Ñ%Økó÷ ð ð #Ÿk™k÷ ð �dØ˜$‘�Ø—?‘? 7Õ+Øä�&—-‘-“/Ô"ô
 25·±ÀÒ1Hœ&×-Ò-ÌfÏmÉmˆKÜ�G‰G�D—H‘H˜kÔ*Ü�|‰|˜wÒ&ð —j‘j×)Ñ)¨%Ó0×0Ñ0ð —j‘j×)Ñ)¨%Ó0×0Ð0àˆFØ"Ÿk™k÷ ð �dØ˜$‘�Ø—?‘? 7Õ+Øà'¨6Ñ1Ð1Ð1ô �&—-‘-“/Ô"Ø—*‘*×%Ñ%Ð&UÓV×VÐVØˆFØˆFØ"Ÿk™k÷ ð �dØ˜$‘�Ø—>‘> '¨5Ó1×:Ñ:¸:ÔFÉvÜ—G‘G˜DŸH™H kÔ2Ø!�FØ—?‘? 7Õ+Øà˜fÑ$Ð$Ð$Ø'¨6Ñ1Ð1Ð1ô �&—-‘-“/Ô"Ø—*‘*×%Ñ%ØCó÷ ð ð ˆFØˆFØ"Ÿk™k÷ ð �dØ˜$‘�Ø—>‘> '¨5Ó1×:Ñ:¸:ÔFÉvÜ—G‘G˜DŸH™H kÔ2Ø!�FØ—?‘? 7Õ+Øà 6Ñ)Ð)Ð)Ø'¨6Ñ1Ð1Ð1ä�&—-‘-“/Ô"÷Og	#÷ g	#ðT 	×Ñ×#Ñ#Ô%÷mv&÷ v&ñ v&ùð	
ùðg	#ùðù˜kùð <ùðù˜kùðùðù +ùðùðù˜kùð 1ùð 1ùðù˜kùð Wùðù˜kùðùð
ù˜køðyg	#ø÷ g	#÷ g	#ñ g	#úðv&ø÷ v&÷ v&ñ v&üsH  ‚V#›T.œV#ŸBVÂ0T1Â1VÃT4ÃVÃ	U7ÃT:ÃT7
ÃT:Ã 'U7Ä:U7ÅT=ÅU7ÅUÅU 
ÅUÅU7Å3AU7ÇUÇU7ÇUÇU	
ÇUÇU7Ç7:U7È1UÈ2U7ÉUÉU
ÉUÉ
U7É"BU7Ì UÌ#U7Ì$UÌ%U7Ì7U!Ì;U
Ì<U!Ì?U7Í>U7ÎU$ÎU7Î*U*Î.U'
Î/U*Î2AU7ÐAU7ÑU-ÑU7Ñ(U3Ñ,U0
Ñ-U3Ñ0AU7Ó&U7Ó3VÓ>U5Ó?VÔV#Ô(VÔ)V#Ô1VÔ4VÔ7T:Ô:U7Ô=U7Õ UÕU7ÕU7Õ	UÕU7ÕU7ÕUÕU7ÕU7ÕU7ÕU!Õ!U7Õ$U7Õ'U*Õ*U7Õ-U7Õ0U3Õ3U7Õ5VÕ7V		Õ=V Õ>V		ÖVÖV#ÖV ÖVÖV ÖV#)r"   z	list[str]r   r   )r   ÚNone)r8   zpytest.CaptureFixture[str]r9   úpytest.MonkeyPatchr   r¤   )r9   r¥   r   r¤   )r   Úbool)Ú
__future__r   r|   rj   r…   r_   ra   Ú	functoolsr   Útypingr   r&   Ú
trio._replr0   r   r#   r)   r=   r@   rG   rN   rQ   rW   rY   r[   re   ro   ÚmarkÚskipifrŒ   r£   r
   r   r   ú<module>r­      sa  ðÝ "ã 	Û Û Û Û 
Ý Ý ã ã ô5ˆxô 5óó&ð"RØ&ð"Rà#ð"Rð 
ó"RóJ	+ð,Ø&ð,à#ð,ð 
ó,ð8-Ø&ð-à#ð-ð 
ó-ð.-Ø&ð-à#ð-ð 
ó-ð0(Ø&ð(à#ð(ð 
ó(ð()Ø&ð)à#ð)ð 
ó)ð$(Ø&ð(à#ð(ð 
ó(ó0 ó	)ð ‡�×ÑÙ$Ó&Ð&Ø/ð ó ò1ó	ð1ôhw&r   