U
    ÌZj@  ã                   @   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   úY/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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k
r"   Y dS X |  ¡ S r   )r
   ÚgetÚLookupErrorr"   )Ústreamr   r   r   ÚfetchH   s
    zThreadedStream.fetch)Úobjr   c                 C   sR   zt  ¡ }W n tk
r(   t| ƒ Y S X | d k	rN| 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   s2   zt  ¡ }W n tk
r&   tj}Y nX 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k
r&   Y d S X 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                    sd   t ƒ ˆ_||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 k	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}zLd | j|g ¡}tƒ  |dd¡r\d| _| j 	|¡ nd| _| jd d …= W 5 t ¡ }X |› t
|ƒ› |› �S )	NÚ
z... z>>> r   z
<debugger>ZsingleTF)Úrstripr6   r<   rm   r@   r    rn   rl   Ú	runsourcer(   r   )r   rX   rq   ÚpromptÚoutputZsource_to_evalro   r   r   rt   ¢   s    
z_InteractiveConsole.runsourcer]   c                 C   s2   zt || jƒ W n tk
r,   |  ¡  Y nX 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   ry   ¸   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   rt   r   rz   ry   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 kri }|d kri }t ||ƒ| _d S r   )rb   r   )r   rd   rD   r   r   r   r   Í   s
    zConsole.__init__r]   c                 C   s0   t  | j ¡ tj}z| j  |¡W ¢S |t_X d S r   )r   r;   r7   r8   rt   )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   Z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