a
    (ñ»j  ã                   @  sð   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
mZmZ d dlmZ d dlZd dlZd dlZd dlmZ G dd„ dejejƒZeeƒejjd	d
œdd„ƒƒZeG dd„ deƒƒZdd	dœdd„Zdd	dœdd„ZdS )é    )ÚannotationsN)ÚInteractiveConsole)ÚCodeTypeÚ	FrameTypeÚFunctionType)ÚCallable)Úfinalc                   @  s   e Zd ZdS )ÚSuppressDecoratorN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú0E:\soccer\ml_env\Lib\site-packages\trio/_repl.pyr	      s   r	   ÚNone©Úreturnc               
   C  sd   dd l } dd l}z|  tj|jd¡ W n8 ty^ } z td|› �ddd� W Y d }~n
d }~0 0 d S )Nr   ó   
z(
Press enter! Newline injection failed: Ú T)ÚendÚflush)ÚfcntlÚtermiosÚioctlÚsysÚstdinZTIOCSTIÚOSErrorÚprint)r   r   Úer   r   r   Úterminal_newline   s    r   c                      sv   e Zd Zddddœ‡ fdd„Zdddœd	d
„ZejdkrLddddœdd„Zn"ddddœdd„Zdddœdd„Z‡  Z	S )ÚTrioInteractiveConsoleNzdict[str, object] | Noner   )Úrepl_localsr   c                   s2   t ƒ j|d� d | _| jj jtjO  _d| _d S )N)ÚlocalsF)	ÚsuperÚ__init__ÚtokenÚcompileÚcompilerÚflagsÚastÚPyCF_ALLOW_TOP_LEVEL_AWAITÚinterrupted)Úselfr    ©Ú	__class__r   r   r#   &   s    zTrioInteractiveConsole.__init__r   )Úcoder   c                 C  s²   t || jƒ}t |¡r(tj tj|¡}ntj 	tj
|¡}t|tjƒržt|jtƒrX|j‚nFt|jƒ|j t_t_|jjt_tjdkrŠ|jt_t tjtjtj¡ tj tjj¡ d S )N)é   é   )r   r!   ÚinspectÚiscoroutinefunctionÚtrioÚfrom_threadÚrunÚoutcomeZacaptureÚrun_syncÚcaptureÚ
isinstanceÚErrorÚerrorÚ
SystemExitÚtyper   Ú	last_typeÚ
last_valueÚ__traceback__Úlast_tracebackÚversion_infoÚlast_excÚ
excepthookÚlowlevelÚcheckpoint_if_cancelled)r+   r.   ÚfuncÚresultr   r   r   Úruncode,   s    


zTrioInteractiveConsole.runcodeÚwin32r   Ústr)Úpromptr   c                 C  s4   z
t |ƒW S  ty.   tj tjj¡ ‚ Y n0 d S )N)ÚinputÚEOFErrorr3   r4   r5   rE   rF   )r+   rL   r   r   r   Ú	raw_inputM   s
    
z TrioInteractiveConsole.raw_inputc                   s„   ddl m‰ m ‰ ˆjrJ ‚ddœ‡ ‡‡fdd„}tj |¡}z&t|ƒW tj ˆˆ |¡ ˆjr`t‚S ntj ˆˆ |¡ ˆjr~t‚0 d S )Nr   )ÚSIGINTÚsignalz4Callable[[int, FrameType | None], None] | int | Noner   c                    s,   ddddœ‡‡ fdd„} t j ¡ ‰ ˆˆ| ƒS )NÚintzFrameType | Noner   )ÚsigÚframer   c                   s   dˆ _ ˆjtdd� d S )NT)Z
idempotent)r*   Zrun_sync_soonr   )rS   rT   )r+   r$   r   r   Úhandler_   s    zJTrioInteractiveConsole.raw_input.<locals>.install_handler.<locals>.handler)r3   rE   Zcurrent_trio_token)rU   ©rP   r+   rQ   )r$   r   Úinstall_handler\   s    
z9TrioInteractiveConsole.raw_input.<locals>.install_handler)rQ   rP   r*   r3   r4   r7   rM   ÚKeyboardInterrupt)r+   rL   rW   Zprev_handlerr   rV   r   rO   W   s     
ü  þ)Úoutputr   c                 C  s>   | j r.|dksJ ‚tj |dd … ¡ d| _ ntj |¡ d S )Nz
KeyboardInterrupt
é   F)r*   r   ÚstderrÚwrite)r+   rY   r   r   r   r\   q   s
    zTrioInteractiveConsole.write)N)r   )r   )
r
   r   r   r#   rI   r   ÚplatformrO   r\   Ú__classcell__r   r   r,   r   r   $   s   

r   )Úconsoler   c                 Ã  sf   dt j› dt j› dtt ddƒ› d�}z*tj | j|¡I d H  W tj	ddt
d	� ntj	ddt
d	� 0 d S )
Nz
trio REPL z on zv
Use "await" directly instead of "trio.run()".
Type "help", "copyright", "credits" or "license" for more information.
Úps1z>>> zimport trioÚignorez ^coroutine .* was never awaited$)ÚmessageÚcategory)r   Úversionr]   Úgetattrr3   Z	to_threadr7   ZinteractÚwarningsÚfilterwarningsÚRuntimeWarning)r_   Zbannerr   r   r   Úrun_replz   s    
üÿýýri   zdict[str, object])Úoriginal_localsr   c                 C  sh   t  t¡� dd l}W d   ƒ n1 s(0    Y  dti}dD ]}| | ||< q>t|ƒ}t t|¡ d S )Nr   r3   >   r
   Ú__package__Ú__file__Ú
__loader__Ú__spec__Ú__builtins__)Ú
contextlibÚsuppressÚImportErrorÚreadliner3   r   r5   ri   )rj   rs   r    Úkeyr_   r   r   r   ÚmainŒ   s    &ru   )Ú
__future__r   r(   rp   r1   r   rf   r.   r   Útypesr   r   r   Útypingr   r6   r3   Ztrio.lowlevelZ
trio._utilr   ÚContextDecoratorrq   r	   rX   rE   Zdisable_ki_protectionr   r   ri   ru   r   r   r   r   Ú<module>   s(   U