a
    é´«jÉ  ã                   @  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   úU/var/www/html/laksyashrimp/venv/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   Ú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