
    ,h                       d dl mZ d dlZd dl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y)    )annotationsN)Protocolc                      e Zd ZdddZy)RawInputc                     y N )selfprompts     W/var/www/html/Resume-Scraper/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(   #   sA    )I;&  	x	    s   AAc                     dt         iS )N__builtins__)r*   r	   r   r   build_localsr+   .   s    L))r   c                B  K   t         j                  j                  t                     }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.
    repl_locals)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+   r"   setattrrun_repl
readouterr
splitlinescapsysmonkeypatchconsoler'   out_errs         r   test_basic_interactionrA   2   s      jj//LN/KG	
I, i8
**

g
&&&!!#IC>>QQQQ 's   A+B-B.0Bc                H  K   t         j                  j                  t                     }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)Nr-   zraise SystemExitr'   )
r4   r5   r6   r+   r"   r7   r%   r&   
SystemExitr8   )r=   r>   r'   s      r   "test_system_exits_quit_interpreterrD   W   s     jj//LN/KG	
I
 i8	z	" +jj!!'***+ +*+ +s0   A!B"##BBB	B"BBB"c                8  K   t         j                  j                  t                     }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)Nr-   )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r4   r5   r6   r+   r"   r7   r8   r9   r<   r=   r>   r'   r?   errs         r   test_KI_interruptsrK   c   s      jj//LN/KG	
I i8
**

g
&&&  "HC#%%3$+++	 '   A+B-B.+Bc                   K   t         j                  j                  t                     }t	        g d      }|j                  |d|       t         j                  j                  |       d {    | j                         \  }}d|v sJ y 7 w)Nr-   )r0   if sys.version_info < (3, 11):/  from exceptiongroup import BaseExceptionGroupr   z<raise BaseExceptionGroup('', [RuntimeError(), SystemExit()])!print('AFTER BaseExceptionGroup')r'   AFTER BaseExceptionGrouprH   r;   s         r   test_system_exits_in_exc_grouprR      s      jj//LN/KG	
	I i8
**

g
&&&!!#IC &,,,	 '   A+B-B.Bc                   K   t         j                  j                  t                     }t	        g d      }|j                  |d|       t         j                  j                  |       d {    | j                         \  }}d|v sJ y 7 w)Nr-   )r0   rN   rO   r   zraise BaseExceptionGroup(z?  '', [BaseExceptionGroup('', [RuntimeError(), SystemExit()])])rP   r'   rQ   rH   r;   s         r   %test_system_exits_in_nested_exc_grouprU      s      jj//LN/KG	

I i8
**

g
&&&!!#IC &,,,	 'rS   c                8  K   t         j                  j                  t                     }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)Nr-   zraise BaseExceptionprint('AFTER BaseException')r'   _threads.py_repl.pyAFTER BaseExceptionrH   rI   s         r   test_base_exception_capturedr[      s      jj//LN/KG "*	
I i8
**

g
&&&  "HC##S   C'''	 'rL   c                   K   t         j                  j                  t                     }t	        ddg      }|j                  |d|       t         j                  j                  |       d {    | j                         \  }}d|v sJ y 7 w)Nr-   z&raise ExceptionGroup('', [KeyError()])zprint('AFTER ExceptionGroup')r'   zAFTER ExceptionGrouprH   r;   s         r   test_exc_group_capturedr]      s      jj//LN/KG 5+	
I i8
**

g
&&&!!#IC!S((( 'rS   c                8  K   t         j                  j                  t                     }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)Nr-   )z-async def async_func_raises_base_exception():z  raise BaseExceptionr   z(await async_func_raises_base_exception()rW   r'   rX   rY   rZ   rH   rI   s         r   *test_base_exception_capture_from_coroutiner_      s      jj//LN/KG	

I i8
**

g
&&&  "HC##S   C'''	 'rL   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.
    z-mr4   s   exit())inputr   N)
subprocessrunsys
executable
returncode)repls    r   test_main_entrypointrh      s1     >>3>>48	JD??ar   )r!   z	list[str]r   r   )r   None)r   zdict[str, object])r<   zpytest.CaptureFixture[str]r=   pytest.MonkeyPatchr   ri   )r=   rj   r   ri   )
__future__r   rb   rd   typingr   r%   
trio._replr4   r   r"   r(   r+   rA   rD   rK   rR   rU   r[   r]   r_   rh   r	   r   r   <module>rn      s   "  
   5x 5&*"R&"R#"R 
"RJ	+,&,#, 
,8-&-#- 
-.-&-#- 
-0(&(#( 
(()&)#) 
)$(&(#( 
(0 r   