a
    0h                     @  s   U d dl m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
mZ ddlmZ ddlmZ dd	lmZ ed
Zded< edZded< G dd dZG dd dZejZeje_G dd dZG dd dejZG dd dZdS )    )annotationsN)
ContextVar)CodeType)escape   )
debug_repr)dump)helperzwerkzeug.debug.console.streamzContextVar[HTMLStringO]_streamzwerkzeug.debug.console.ipyzContextVar[_InteractiveConsole]_ipyc                   @  s   e Zd ZdZddddZddddZddd	d
ZddddZd ddddddZddddZ	ddddZ
dddddZdddddZdddddZdS )!HTMLStringOz-A StringO version that HTML escapes on write.Nonereturnc                 C  s
   g | _ d S N)_bufferself r   D/var/www/auris/lib/python3.9/site-packages/werkzeug/debug/console.py__init__   s    zHTMLStringO.__init__boolc                 C  s   dS )NFr   r   r   r   r   isatty   s    zHTMLStringO.isattyc                 C  s   d S r   r   r   r   r   r   close   s    zHTMLStringO.closec                 C  s   d S r   r   r   r   r   r   flush   s    zHTMLStringO.flushr   int)nmoder   c                 C  s   d S r   r   )r   r   r   r   r   r   seek"   s    zHTMLStringO.seekstrc                 C  s(   t | jdkrdS | jd }| jd= |S )Nr    )lenr   )r   retr   r   r   readline%   s
    
zHTMLStringO.readlinec                 C  s   d | j}| jd d = |S Nr    )joinr   )r   valr   r   r   reset,   s    zHTMLStringO.reset)xr   c                 C  s   | j | d S r   )r   appendr   r(   r   r   r   _write1   s    zHTMLStringO._writec                 C  s   |  t| d S r   )r+   r   r*   r   r   r   write4   s    zHTMLStringO.writezt.Iterable[str]c                 C  s   |  td| d S r$   )r+   r   r%   r*   r   r   r   
writelines7   s    zHTMLStringO.writelinesN)r   )__name__
__module____qualname____doc__r   r   r   r   r   r#   r'   r+   r,   r-   r   r   r   r   r      s   r   c                   @  s   e Zd ZdZeddddZeddddZed	dd
ddZddddddZddddZ	dddddZ
ddddZdS )ThreadedStreamz@Thread-local wrapper for sys.stdout for the interactive console.r   r   c                   C  s.   t tjtsttjt t_tt	  d S r   )

isinstancesysstdoutr2   tcastTextIOr
   setr   r   r   r   r   push>   s    zThreadedStream.pushr   c                  C  s*   zt  } W n ty    Y dS 0 |  S r$   )r
   getLookupErrorr'   )streamr   r   r   fetchE   s
    zThreadedStream.fetchobject)objr   c                 C  sP   zt  }W n ty&   t|  Y S 0 | d urL| t jd< |t|  d S )N_)r
   r;   r<   _displayhookr   localsr+   r   )r@   r=   r   r   r   displayhookN   s    zThreadedStream.displayhookt.Any)namevaluer   c                 C  s   t d| d S )Nzread only attribute )AttributeError)r   rF   rG   r   r   r   __setattr__[   s    zThreadedStream.__setattr__z	list[str]c                 C  s
   t tjS r   )dirr4   
__stdout__r   r   r   r   __dir__^   s    zThreadedStream.__dir__)rF   r   c                 C  s0   zt  }W n ty$   tj}Y n0 t||S r   )r
   r;   r<   r4   rK   getattr)r   rF   r=   r   r   r   __getattribute__a   s
    zThreadedStream.__getattribute__c                 C  s
   t tjS r   )reprr4   rK   r   r   r   r   __repr__i   s    zThreadedStream.__repr__N)r.   r/   r0   r1   staticmethodr:   r>   rD   rI   rL   rN   rP   r   r   r   r   r2   ;   s   r2   c                   @  s<   e Zd ZddddZdddddd	Zdd
dddZdS )_ConsoleLoaderr   r   c                 C  s
   i | _ d S r   )_storager   r   r   r   r   s   s    z_ConsoleLoader.__init__r   r   )codesourcer   c                 C  s6   || j t|< |jD ]}t|tr|| j t|< qd S r   )rS   id	co_constsr3   r   )r   rT   rU   varr   r   r   registerv   s    

z_ConsoleLoader.register
str | NonerT   r   c                 C  s*   z| j t| W S  ty$   Y d S 0 d S r   )rS   rV   KeyErrorr   rT   r   r   r   get_source_by_code}   s    z!_ConsoleLoader.get_source_by_codeN)r.   r/   r0   r   rY   r^   r   r   r   r   rR   r   s   rR   c                      s   e Zd ZU ded< dddd fddZdddd	 fd
dZdddddZddddZddddddZdddddZ	  Z
S )_InteractiveConsolezdict[str, t.Any]rC   r   globalsrC   r   c                   sd   t  _i ||ttjd}t | j ddddd fdd}|_d_g _d S )N)r   help
__loader__r   zCodeType | None)rU   filenamesymbolr   c                   s&    | ||}|d ur"j ||  |S r   )loaderrY   )rU   rd   re   rT   Zoriginal_compiler   r   r   compile   s    z-_InteractiveConsole.__init__.<locals>.compileF)	rR   rf   r   r	   superr   rh   morebuffer)r   ra   rC   rh   	__class__rg   r   r      s     z_InteractiveConsole.__init__r   rE   )rU   kwargsr   c                   s   |   d}t  | jr dnd}zTd| j|g }t |ddr\d| _| j| nd| _| jd d = W t	 }n
t	 }0 | t
| | S )	N
z... z>>> r    z
<debugger>singleTF)rstripr2   r:   rj   r%   rk   ri   	runsourcer)   r>   r   )r   rU   rn   promptZsource_to_evaloutputrl   r   r   rr      s    z_InteractiveConsole.runsourcer   r[   c                 C  s0   zt || j W n ty*   |   Y n0 d S r   )execrC   	Exceptionshowtracebackr]   r   r   r   runcode   s    z_InteractiveConsole.runcoder   c                 C  s@   ddl m} ttt d }||dd}tj|	  d S )Nr   DebugTracebackskip
Ztbtoolsrz   r6   r7   BaseExceptionr4   exc_infor5   r+   Zrender_traceback_html)r   rz   excter   r   r   rw      s    z!_InteractiveConsole.showtracebackNrZ   )rd   r   c                 C  s@   ddl m} ttt d }||dd}tj|	  d S )Nr   ry      r{   r}   )r   rd   rz   r   r   r   r   r   showsyntaxerror   s    z#_InteractiveConsole.showsyntaxerror)datar   c                 C  s   t j| d S r   )r4   r5   r,   )r   r   r   r   r   r,      s    z_InteractiveConsole.write)N)r.   r/   r0   __annotations__r   rr   rx   rw   r   r,   __classcell__r   r   rl   r   r_      s   
r_   c                   @  s4   e Zd ZdZdddddddZddd	d
dZdS )ConsolezAn interactive console.Nzdict[str, t.Any] | Noner   r`   c                 C  s(   |d u ri }|d u ri }t ||| _d S r   )r_   r   )r   ra   rC   r   r   r   r      s
    zConsole.__init__r   r[   c                 C  s4   t | j  tj}z| j |W |t_S |t_0 d S r   )r   r9   r4   r5   rr   )r   rT   Zold_sys_stdoutr   r   r   eval   s    zConsole.eval)NN)r.   r/   r0   r1   r   r   r   r   r   r   r      s
     r   )
__future__r   rT   r4   typingr6   Zcontextvarsr   typesr   Z
markupsafer   rO   r   r   r	   r
   r   r   r   r2   rD   rB   rR   ZInteractiveInterpreterr_   r   r   r   r   r   <module>   s$   (3C