a
    -=ic@                     @   s   U 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jrpd dlZed	Zed
 ed< edZe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 )    N)
ContextVar)CodeType)escape   )
debug_repr)dump)helperzwerkzeug.debug.console.streamHTMLStringO_streamzwerkzeug.debug.console.ipy_ipyc                   @   s   e Zd ZdZddddZedddZdddd	Zddd
dZde	e	ddddZ
edddZedddZeddddZeddddZeje ddddZdS )r	   z-A StringO version that HTML escapes on write.Nreturnc                 C   s
   g | _ d S N)_bufferself r   g/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/werkzeug/debug/console.py__init__   s    zHTMLStringO.__init__c                 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   )nmoder   c                 C   s   d S r   r   )r   r   r   r   r   r   seek#   s    zHTMLStringO.seekc                 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&   t |tr|dd}| j| d S )Nzutf-8replace)
isinstancebytesdecoder   appendr   r#   r   r   r   _write2   s    
zHTMLStringO._writec                 C   s   |  t| d S r   )r*   r   r)   r   r   r   write7   s    zHTMLStringO.writec                 C   s   |  td| d S r   )r*   r   r    r)   r   r   r   
writelines:   s    zHTMLStringO.writelines)r   )__name__
__module____qualname____doc__r   boolr   r   r   intr   strr   r"   r*   r+   tIterabler,   r   r   r   r   r	      s   c                   @   s   e Zd ZdZeddddZeedddZeeddd	d
Z	ee
jddddZe
je dddZee
jdddZedddZdS )ThreadedStreamz@Thread-local wrapper for sys.stdout for the interactive console.Nr   c                   C   s.   t tjtsttjt t_tt	  d S r   )
r%   sysstdoutr6   r4   castTextIOr
   setr	   r   r   r   r   pushA   s    zThreadedStream.pushc                  C   s*   zt  } W n ty    Y dS 0 |  S r   )r
   getLookupErrorr"   )streamr   r   r   fetchH   s
    zThreadedStream.fetch)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   )rA   r?   r   r   r   displayhookQ   s    zThreadedStream.displayhook)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__c                 C   s
   t tjS r   )dirr7   
__stdout__r   r   r   r   __dir__a   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>   r7   rK   getattr)r   rF   r?   r   r   r   __getattribute__d   s
    zThreadedStream.__getattribute__c                 C   s
   t tjS r   )reprr7   rK   r   r   r   r   __repr__l   s    zThreadedStream.__repr__)r-   r.   r/   r0   staticmethodr<   r3   r@   objectrE   r4   AnyrI   ListrL   rN   rP   r   r   r   r   r6   >   s   r6   c                   @   sB   e Zd ZddddZeeddddZeeje dd	d
Z	dS )_ConsoleLoaderNr   c                 C   s
   i | _ d S r   )_storager   r   r   r   r   v   s    z_ConsoleLoader.__init__)codesourcer   c                 C   s6   || j t|< |jD ]}t|tr|| j t|< qd S r   )rV   id	co_constsr%   r   )r   rW   rX   varr   r   r   registery   s    

z_ConsoleLoader.registerrW   r   c                 C   s*   z| j t| W S  ty$   Y d S 0 d S r   )rV   rY   KeyErrorr   rW   r   r   r   get_source_by_code   s    z!_ConsoleLoader.get_source_by_code)
r-   r.   r/   r   r   r3   r\   r4   Optionalr`   r   r   r   r   rU   u   s   rU   c                       s   e Zd ZU ejeejf ed< ejeejf ejeejf dd fddZeejed fddZ	e
dd	d
dZddddZdeje ddddZeddddZ  ZS )_InteractiveConsolerD   NglobalsrD   r   c                    sj   t  _i ||ttjd}t | j ttttj	t
 d fdd}|_d_g _d S )N)r   help
__loader__)rX   filenamesymbolr   c                    s&    | ||}|d ur"j ||  |S r   )loaderr\   )rX   rg   rh   rW   Zoriginal_compiler   r   r   compile   s    z-_InteractiveConsole.__init__.<locals>.compileF)rU   ri   r   r   superr   rk   r3   r4   ra   r   morebuffer)r   rd   rD   rk   	__class__rj   r   r      s      z_InteractiveConsole.__init__)rX   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)rstripr6   r<   rm   r    rn   rl   	runsourcer(   r@   r   )r   rX   rq   promptZsource_to_evaloutputro   r   r   ru      s    z_InteractiveConsole.runsourcer]   c                 C   s0   zt || j W n ty*   |   Y n0 d S r   )execrD   	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tbtoolsr}   r4   r9   BaseExceptionr7   exc_infor8   r*   Zrender_traceback_html)r   r}   excter   r   r   rz      s    z!_InteractiveConsole.showtraceback)rg   r   c                 C   s@   ddl m} ttt d }||dd}tj|	  d S )Nr   r|      r~   r   )r   rg   r}   r   r   r   r   r   showsyntaxerror   s    z#_InteractiveConsole.showsyntaxerror)datar   c                 C   s   t j| d S r   )r7   r8   r+   )r   r   r   r   r   r+      s    z_InteractiveConsole.write)N)r-   r.   r/   r4   Dictr3   rS   __annotations__r   ru   r   r{   rz   ra   r   r+   __classcell__r   r   ro   r   rb      s   
.rb   c                   @   sX   e Zd ZdZd	ejejeejf  ejejeejf  ddddZ	eedddZ
dS )
ConsolezAn interactive console.Nrc   c                 C   s(   |d u ri }|d u ri }t ||| _d S r   )rb   r   )r   rd   rD   r   r   r   r      s
    zConsole.__init__r]   c                 C   s4   t | j  tj}z| j |W |t_S |t_0 d S r   )r   r;   r7   r8   ru   )r   rW   Zold_sys_stdoutr   r   r   eval   s    zConsole.eval)NN)r-   r.   r/   r0   r4   ra   r   r3   rS   r   r   r   r   r   r   r      s     r   )rW   r7   typingr4   contextvarsr   typesr   Z
markupsafer   rO   r   r   r   TYPE_CHECKINGZcodeopr
   r   r   r	   r6   rE   rC   rU   ZInteractiveInterpreterrb   r   r   r   r   r   <module>   s&   
*3C