o
    [|%iH                     @  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 erJd dlmZ G dd	 d	ejejZeeejjdddZeG dd deZdddZdddZdS )    )annotationsN)InteractiveConsole)CodeType	FrameTypeFunctionType)TYPE_CHECKING)final)Callablec                   @  s   e Zd ZdS )SuppressDecoratorN)__name__
__module____qualname__ r   r   G/home/air/sos_test/back/venv/lib/python3.10/site-packages/trio/_repl.pyr
      s    r
   returnNonec               
   C  sd   dd l } dd l}z| tj|jd W d S  ty1 } ztd| ddd W Y d }~d S d }~ww )Nr      
z(
Press enter! Newline injection failed:  T)endflush)fcntltermiosioctlsysstdinTIOCSTIOSErrorprint)r   r   er   r   r   terminal_newline   s   "r   c                      s^   e Zd Zdd fddZdd
dZejdkr ddddZ  Z	S ddddZdddZ  Z	S )TrioInteractiveConsoleNrepl_localsdict[str, object] | Noner   r   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__coder   c                 C  s   t || j}t|rtjtj|}ntj	tj
|}t|tjrNt|jtr+|jt|j|jt_t_|jjt_tjdkrD|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outcome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-   r0   funcresultr   r   r   runcode/   s   


zTrioInteractiveConsole.runcodewin32r   promptstrc                 C  s,   zt |W S  ty   tjtjj  w N)inputEOFErrorr5   r6   r7   rH   rI   )r-   rN   r   r   r   	raw_inputP   s   
z TrioInteractiveConsole.raw_inputc                   sz   ddl m m  jrJ d fdd}tj|}zt|W tj | jr.tS tj | jr<tw )Nr   )SIGINTsignalr   4Callable[[int, FrameType | None], None] | int | Nonec                    s$   d	 fdd} t j  | S )
NsigintframeFrameType | Noner   r   c                   s   d _ jtdd d S )NT)
idempotent)r,   run_sync_soonr   )rW   rY   )r-   r&   r   r   handlerb   s   zJTrioInteractiveConsole.raw_input.<locals>.install_handler.<locals>.handler)rW   rX   rY   rZ   r   r   )r5   rH   current_trio_token)r]   rT   r-   rU   )r&   r   install_handler_   s   

z9TrioInteractiveConsole.raw_input.<locals>.install_handler)r   rV   )rU   rT   r,   r5   r6   r:   rQ   KeyboardInterrupt)r-   rN   r`   prev_handlerr   r_   r   rS   Z   s   
outputc                 C  s@   | j r|dks	J tj|dd   d| _ d S tj| d S )Nz
KeyboardInterrupt
   F)r,   r   stderrwrite)r-   rc   r   r   r   rf   t   s
   
zTrioInteractiveConsole.writerP   )r!   r"   r   r   )r0   r   r   r   )r   )rN   rO   r   rO   )rc   rO   r   r   )
r   r   r   r%   rL   r   platformrS   rf   __classcell__r   r   r.   r   r    '   s    


r    consolec                   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	 d S tj	ddt
d	 w )
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   versionrg   getattrr5   	to_threadr:   interactwarningsfilterwarningsRuntimeWarning)ri   bannerr   r   r   run_repl}   s    
rv   original_localsdict[str, object]c                 C  sh   t t dd l}W d    n1 sw   Y  dti}dD ]}| | ||< qt|}tt| d S )Nr   r5   >   __file__r   __spec__
__loader____package____builtins__)
contextlibsuppressImportErrorreadliner5   r    r7   rv   )rw   r   r!   keyri   r   r   r   main   s   
r   )r   r   )ri   r    r   r   )rw   rx   r   r   ) 
__future__r   r*   r~   r3   r   rr   r0   r   typesr   r   r   typingr   r8   r5   trio.lowlevel
trio._utilr   collections.abcr	   ContextDecoratorr   r
   ra   rH   disable_ki_protectionr   r    rv   r   r   r   r   r   <module>   s.    
U