o
    ßý°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                   @  sv   e Zd ZdZd!dd„Zd"dd„Zd!d	d
„Zd!dd„Zd#d$dd„Zd%dd„Z	d%dd„Z
d&dd„Zd&dd„Zd'dd„Zd S )(ÚHTMLStringOz-A StringO version that HTML escapes on write.ÚreturnÚNonec                 C  s
   g | _ d S ©N)Ú_buffer©Úself© r   ú‰/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/werkzeug/debug/console.pyÚ__init__   ó   
zHTMLStringO.__init__Úboolc                 C  s   dS )NFr   r   r   r   r   Úisatty   ó   zHTMLStringO.isattyc                 C  ó   d S r   r   r   r   r   r   Úclose   r   zHTMLStringO.closec                 C  r   r   r   r   r   r   r   Úflush   r   zHTMLStringO.flushr   ÚnÚintÚmodec                 C  r   r   r   )r   r   r   r   r   r   Úseek"   r   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Úxc                 C  s   | j  |¡ d S r   )r   Úappend©r   r*   r   r   r   Ú_write1   ó   zHTMLStringO._writec                 C  s   |   t|ƒ¡ d S r   )r-   r   r,   r   r   r   Úwrite4   s   zHTMLStringO.writeút.Iterable[str]c                 C  s   |   td |¡ƒ¡ d S r&   )r-   r   r'   r,   r   r   r   Ú
writelines7   s   zHTMLStringO.writelinesN©r   r   )r   r   )r   )r   r   r   r   r   r   ©r   r!   )r*   r!   r   r   )r*   r0   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r    r%   r)   r-   r/   r1   r   r   r   r   r      s    







r   c                   @  sb   e Zd ZdZeddd„ƒZeddd„ƒZeddd„ƒZddd„Zddd„Z	ddd„Z
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Ústdoutr8   ÚtÚcastÚTextIOr
   Úsetr   r   r   r   r   Úpush>   s   zThreadedStream.pushr!   c                  C  s(   z	t  ¡ } W |  ¡ S  ty   Y dS w r&   )r
   ÚgetÚLookupErrorr)   )Ústreamr   r   r   ÚfetchE   s   
ýÿzThreadedStream.fetchÚobjÚobjectc                 C  sT   zt  ¡ }W n ty   t| ƒ Y S w | d ur(| t ¡ jd< | t| ƒ¡ d S d S )NÚ_)r
   rA   rB   Ú_displayhookr   Úlocalsr-   r   )rE   rC   r   r   r   ÚdisplayhookN   s   ÿþzThreadedStream.displayhookÚnameÚvalueút.Anyc                 C  s   t d|› �ƒ‚)Nzread only attribute )ÚAttributeError)r   rK   rL   r   r   r   Ú__setattr__[   s   zThreadedStream.__setattr__ú	list[str]c                 C  ó
   t tjƒS r   )Údirr:   Ú
__stdout__r   r   r   r   Ú__dir__^   r   zThreadedStream.__dir__c                 C  s0   zt  ¡ }W n ty   tj}Y nw t||ƒS r   )r
   rA   rB   r:   rS   Úgetattr)r   rK   rC   r   r   r   Ú__getattribute__a   s   
ÿ
zThreadedStream.__getattribute__c                 C  rQ   r   )Úreprr:   rS   r   r   r   r   Ú__repr__i   r   zThreadedStream.__repr__Nr2   r3   )rE   rF   r   r   )rK   r!   rL   rM   r   r   )r   rP   )rK   r!   r   rM   )r4   r5   r6   r7   Ústaticmethodr@   rD   rJ   rO   rT   rV   rX   r   r   r   r   r8   ;   s    


r8   c                   @  s*   e Zd Zddd„Zdd	d
„Zddd„ZdS )Ú_ConsoleLoaderr   r   c                 C  s
   i | _ d S r   )Ú_storager   r   r   r   r   s   r   z_ConsoleLoader.__init__Úcoder   Úsourcer!   c                 C  s6   || j t|ƒ< |jD ]}t|tƒr|| j t|ƒ< q
d S r   )r[   ÚidÚ	co_constsr9   r   )r   r\   r]   Úvarr   r   r   Úregisterv   s   

€þz_ConsoleLoader.registerú
str | Nonec                 C  s&   z| j t|ƒ W S  ty   Y d S w r   )r[   r^   ÚKeyError©r   r\   r   r   r   Úget_source_by_code}   s
   ÿz!_ConsoleLoader.get_source_by_codeNr2   )r\   r   r]   r!   r   r   )r\   r   r   rb   )r4   r5   r6   r   ra   re   r   r   r   r   rZ   r   s    

rZ   c                      s`   e Zd ZU ded< d‡ fdd„Zd‡ fdd„Zddd„Zddd„Zd d!dd„Zd"dd„Z	‡  Z
S )#Ú_InteractiveConsoleúdict[str, t.Any]rI   Úglobalsr   r   c                   sZ   t ƒ ˆ_i |¥|¥ttˆjdœ¥}tƒ  |¡ ˆj‰ d‡ ‡fdd	„}|ˆ_d
ˆ_g ˆ_d S )N)r   ÚhelpÚ
__loader__r]   r!   ÚfilenameÚsymbolr   úCodeType | Nonec                   s&   ˆ | ||ƒ}|d urˆj  || ¡ |S r   )Úloaderra   )r]   rk   rl   r\   ©Úoriginal_compiler   r   r   Úcompile“   s   z-_InteractiveConsole.__init__.<locals>.compileF)r]   r!   rk   r!   rl   r!   r   rm   )	rZ   rn   r   r	   Úsuperr   rq   ÚmoreÚbuffer)r   rh   rI   rq   ©Ú	__class__ro   r   r   ‡   s    ÿþû
z_InteractiveConsole.__init__r]   r!   ÚkwargsrM   c                   s˜   |  ¡ › d�}t ¡  | jrdnd}z*d | j|g ¡}tƒ  |dd¡r.d| _| j |¡ n	d| _| jd d …= W t 	¡ }nt 	¡ }w |› t
|ƒ› |› �S )	NÚ
z... z>>> r"   z
<debugger>ÚsingleTF)Úrstripr8   r@   rs   r'   rt   rr   Ú	runsourcer+   rD   r   )r   r]   rw   ÚpromptÚsource_to_evalÚoutputru   r   r   r{   Ÿ   s   €z_InteractiveConsole.runsourcer\   r   c                 C  s0   z	t || jƒ W d S  ty   |  ¡  Y d S w r   )ÚexecrI   Ú	ExceptionÚshowtracebackrd   r   r   r   Úruncode¯   s
   ÿz_InteractiveConsole.runcodec                 C  s@   ddl m} t tt ¡ d ¡}||dd�}tj | 	¡ ¡ d S )Nr   ©ÚDebugTraceback©Úskip©
Útbtoolsr„   r<   r=   ÚBaseExceptionr:   Úexc_infor;   r-   Úrender_traceback_html)r   r„   ÚexcÚter   r   r   r�   µ   ó   z!_InteractiveConsole.showtracebackNrk   rb   c                 C  s@   ddl m} t tt ¡ d ¡}||dd�}tj | 	¡ ¡ d S )Nr   rƒ   é   r…   r‡   )r   rk   r„   rŒ   r�   r   r   r   Úshowsyntaxerror¼   rŽ   z#_InteractiveConsole.showsyntaxerrorÚdatac                 C  s   t j |¡ d S r   )r:   r;   r/   )r   r‘   r   r   r   r/   Ã   r.   z_InteractiveConsole.write)rh   rg   rI   rg   r   r   )r]   r!   rw   rM   r   r!   )r\   r   r   r   r2   r   )rk   rb   r   r   )r‘   r!   r   r   )r4   r5   r6   Ú__annotations__r   r{   r‚   r�   r�   r/   Ú__classcell__r   r   ru   r   rf   „   s   
 

rf   c                   @  s*   e Zd ZdZ		dddd	„Zddd„ZdS )ÚConsolezAn interactive console.Nrh   údict[str, t.Any] | NonerI   r   r   c                 C  s(   |d u ri }|d u ri }t ||ƒ| _d S r   )rf   r   )r   rh   rI   r   r   r   r   Ê   s
   zConsole.__init__r\   r!   c                 C  s0   t  | j ¡ tj}z
| j  |¡W |t_S |t_w r   )r   r?   r:   r;   r{   )r   r\   Úold_sys_stdoutr   r   r   ÚevalÕ   s
   zConsole.eval)NN)rh   r•   rI   r•   r   r   )r\   r!   r   r!   )r4   r5   r6   r7   r   r—   r   r   r   r   r”   Ç   s    ýr”   )Ú
__future__r   r\   r:   Útypingr<   Úcontextvarsr   Útypesr   Ú
markupsafer   rW   r   r   r	   r
   r’   r   r   r8   rJ   rH   rZ   ÚInteractiveInterpreterrf   r”   r   r   r   r   Ú<module>   s&    (3C