
     f%                        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dS )     )annotationsN)Protocolc                      e Zd ZdddZdS )	RawInput promptstrreturnc                    d S N )selfr   s     X/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_repl.py__call__zRawInput.__call__   s          Nr   r   r	   r
   r	   )__name__
__module____qualname__r   r   r   r   r   r      s        4444444r   r   cmds	list[str]r
   c                <    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
    r   r   r	   r
   c                z                         |            	 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   sI    v	%	??" 	% 	% 	%$	%s   ' :r   r   )iter)r   r!   r   r    s     @@r   build_raw_inputr#      sF     T

IG% % % % % % % % r   Nonec                     t          dg          }  |             dk    sJ t          j        t                    5   |              ddd           dS # 1 swxY w Y   dS )z"Quick test of our helper function.cmd1N)r#   pytestraisesr   )	raw_inputs    r   test_build_raw_inputr*   #   s    ))I9;;&    	x	 	   	                 s   AAAdict[str, object]c                     dt           iS )N__builtins__)r-   r   r   r   build_localsr.   .   s    L))r   capsyspytest.CaptureFixture[str]monkeypatchpytest.MonkeyPatchc                b  K   t           j                            t                                }t	          g d          }|                    |d|           t           j                            |           d{V  |                                 \  }}|                                g dk    sJ dS )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=1r6   24zhello stdout13)	trio_replTrioInteractiveConsoler.   r#   setattrrun_repl
readouterr
splitlinesr/   r1   consoler)   outerrs         r   test_basic_interactionrF   2   s       j//LNN/KKG	
 	
 	
 I, i888
*

g
&
&&&&&&&&  ""HC>>QQQQQQQQQr   c                ^  K   t           j                            t                                }t	          dg          }|                     |d|           t          j        t                    5  t           j        	                    |           d {V  d d d            d S # 1 swxY w Y   d S )Nr4   zraise SystemExitr)   )
r;   r<   r=   r.   r#   r>   r'   r(   
SystemExitr?   )r1   rC   r)   s      r   "test_system_exits_quit_interpreterrI   W   s      j//LNN/KKG	
 I
 i888	z	"	" + +j!!'*********+ + + + + + + + + + + + + + + + + +s   /&B""B&)B&c                N  K   t           j                            t                                }t	          g d          }|                    |d|           t           j                            |           d {V  |                                 \  }}d|v sJ d|vsJ d|v sJ d S )Nr4   )	z#from trio._util import signal_raisez"import signal, trio, trio.lowlevelzasync def f():z`  trio.lowlevel.spawn_system_task(    trio.to_thread.run_sync,    signal_raise,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r;   r<   r=   r.   r#   r>   r?   r@   rB   s         r   test_KI_interruptsrN   c   s       j//LNN/KKG	
 	
 	
 I  i888
*

g
&
&&&&&&&&  ""HC#%%%%3$++++++r   c                6  K   t           j                            t                                }t	          g d          }|                    |d|           t           j                            |           d {V  |                                 \  }}d|v sJ d S )Nr4   )r7   if sys.version_info < (3, 11):/  from exceptiongroup import BaseExceptionGroupr   z<raise BaseExceptionGroup('', [RuntimeError(), SystemExit()])!print('AFTER BaseExceptionGroup')r)   AFTER BaseExceptionGrouprM   rB   s         r   test_system_exits_in_exc_grouprT      s       j//LNN/KKG	
 	
 	
	 	I i888
*

g
&
&&&&&&&&  ""HC &,,,,,,r   c                6  K   t           j                            t                                }t	          g d          }|                    |d|           t           j                            |           d {V  |                                 \  }}d|v sJ d S )Nr4   )r7   rP   rQ   r   zraise BaseExceptionGroup(z?  '', [BaseExceptionGroup('', [RuntimeError(), SystemExit()])])rR   r)   rS   rM   rB   s         r   %test_system_exits_in_nested_exc_grouprV      s       j//LNN/KKG	
 	
 	

 
I i888
*

g
&
&&&&&&&&  ""HC &,,,,,,r   c                N  K   t           j                            t                                }t	          ddg          }|                    |d|           t           j                            |           d {V  |                                 \  }}d|vsJ d|vsJ d|v sJ d S )Nr4   zraise BaseExceptionprint('AFTER BaseException')r)   _threads.py_repl.pyAFTER BaseExceptionrM   rB   s         r   test_base_exception_capturedr\      s       j//LNN/KKG "*	
 I i888
*

g
&
&&&&&&&&  ""HC####S     C''''''r   c                6  K   t           j                            t                                }t	          ddg          }|                    |d|           t           j                            |           d {V  |                                 \  }}d|v sJ d S )Nr4   z&raise ExceptionGroup('', [KeyError()])zprint('AFTER ExceptionGroup')r)   zAFTER ExceptionGrouprM   rB   s         r   test_exc_group_capturedr^      s       j//LNN/KKG 5+	
 I i888
*

g
&
&&&&&&&&  ""HC!S((((((r   c                N  K   t           j                            t                                }t	          g d          }|                    |d|           t           j                            |           d {V  |                                 \  }}d|vsJ d|vsJ d|v sJ d S )Nr4   )z-async def async_func_raises_base_exception():z  raise BaseExceptionr   z(await async_func_raises_base_exception()rX   r)   rY   rZ   r[   rM   rB   s         r   *test_base_exception_capture_from_coroutiner`      s       j//LNN/KKG	
 	
 	

 
I i888
*

g
&
&&&&&&&&  ""HC####S     C''''''r   c                 f    t          j        t          j        ddgd          } | j        dk    sJ dS )zL
    Basic smoke test when running via the package __main__ entrypoint.
    z-mr;   s   exit())inputr   N)
subprocessrunsys
executable
returncode)repls    r   test_main_entrypointri      s:     >3>48	JJJD?ar   )r   r   r
   r   )r
   r$   )r
   r+   )r/   r0   r1   r2   r
   r$   )r1   r2   r
   r$   )
__future__r   rc   re   typingr   r'   
trio._replr;   r   r#   r*   r.   rF   rI   rN   rT   rV   r\   r^   r`   ri   r   r   r   <module>rm      s|   " " " " " "     



           5 5 5 5 5x 5 5 5   &   * * * *"R "R "R "RJ	+ 	+ 	+ 	+, , , ,:- - - -.- - - -0( ( ( (() ) ) )$( ( ( (0           r   