
    Mh)                    Z   U d dl mZ d dlZej        dk    sJ d dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ g dZ G d de          Zi Zded<   ej        dd            Zej        dd            Z G d d          Z G d de          Z dS )    )annotationsNwin32)AbstractEventLoopget_running_loop)CallableContextManager	GeneratorTextIO   )KeyPress   )Input)PosixStdinReader)Vt100Parser)
Vt100Inputraw_modecooked_modec                      e Zd ZU dZ e            Zded<   ddZddZddZ	ddZ
ddZedd            ZddZddZddZd dZdS )!r   zz
    Vt100 input for Posix systems.
    (This uses a posix file descriptor that can be registered in the event loop.)
    zset[int]_fds_not_a_terminalstdinr
   returnNonec                    	 |                                  nO# t          j        $ r=}dt          j        v rt          j        d          |t          j        d          |d }~ww xY w|                                }|                                 }|so|t          j        vrad}t          j        	                    ||z             t          j        
                                 t          j                            |           | _        |                                  _        g  _        t           j        |j                   _        t%           fd           _        d S )Nzidlelib.runz<Stdin is not a terminal. Running from Idle is not supported.zStdin is not a terminal.z*Warning: Input is not a terminal (fd=%r).
)encodingc                8    j                             |           S N)_bufferappend)	key_pressselfs    Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/prompt_toolkit/input/vt100.py<lambda>z%Vt100Input.__init__.<locals>.<lambda>J   s    dl11)<<     )filenoioUnsupportedOperationsysmodulesisattyr   r   stderrwriteflushaddr   _filenor   r   r   stdin_readerr   vt100_parser)r    r   er)   fdmsgs   `     r!   __init__zVt100Input.__init__$   sU   		QLLNNNN& 	Q 	Q 	Q++-R  -.HIIqP	Q \\^^ 	3"J$BBB?CJS2X&&&J*..r222 
 ||~~'),T\ENSSS'<<<<
 
s    A$8AA$input_ready_callbackCallable[[], None]ContextManager[None]c                "    t          | |          S )zj
        Return a context manager that makes this input active in the current
        event loop.
        )_attached_input)r    r5   s     r!   attachzVt100Input.attachM   s    
 t%9:::r#   c                     t          |           S )z{
        Return a context manager that makes sure that this input is not active
        in the current event loop.
        )_detached_inputr    s    r!   detachzVt100Input.detachT   s    
 t$$$r#   list[KeyPress]c                    | j                                         }| j                            |           | j        }g | _        |S )zRead list of KeyPress.)r/   readr0   feedr   )r    dataresults      r!   	read_keyszVt100Input.read_keys[   sF      %%'' 	t$$$ r#   c                T    | j                                          | j        }g | _        |S )zc
        Flush pending keys and return them.
        (Used for flushing the 'escape' key.)
        )r0   r,   r   )r    rD   s     r!   
flush_keyszVt100Input.flush_keysh   s.     	!!! r#   boolc                    | j         j        S r   )r/   closedr=   s    r!   rJ   zVt100Input.closedv   s     ''r#   c                N    t          | j                                                  S r   )r   r   r$   r=   s    r!   r   zVt100Input.raw_modez   s    
))++,,,r#   c                N    t          | j                                                  S r   )r   r   r$   r=   s    r!   r   zVt100Input.cooked_mode}   s    4:,,..///r#   intc                4    | j                                         S r   )r   r$   r=   s    r!   r$   zVt100Input.fileno   s    z  """r#   strc                    d| j          S )Nzfd-)r.   r=   s    r!   typeahead_hashzVt100Input.typeahead_hash   s    #T\###r#   N)r   r
   r   r   )r5   r6   r   r7   )r   r7   )r   r?   )r   rH   )r   rM   )r   rO   )__name__
__module____qualname____doc__setr   __annotations__r4   r:   r>   rE   rG   propertyrJ   r   r   r$   rQ    r#   r!   r   r      s          %(CEE))))'
 '
 '
 '
R; ; ; ;% % % %       ( ( ( X(- - - -0 0 0 0# # # #$ $ $ $ $ $r#   r   z>dict[tuple[AbstractEventLoop, int], Callable[[], None] | None]_current_callbacksinputcallbackr6   r   Generator[None, None, None]c              #  8   K   t                                                       t                              f          }d fd}	                     |           n# t
          $ r t          w xY wt          f<   	 dV                                 |r$                    |           |t          f<   dS t          f= dS #                                |r#                    |           |t          f<   n
t          f= w xY w)z
    Context manager that makes this input active in the current event loop.

    :param input: :class:`~prompt_toolkit.input.Input` object.
    :param callback: Called when the input is ready to read.
    r   r   c                 T    j         r                                              dS )a:  Wrapper around the callback that already removes the reader when
        the input is closed. Otherwise, we keep continuously calling this
        callback, until we leave the context manager (which can happen a bit
        later). This fixes issues when piping /dev/null into a prompt_toolkit
        application.N)rJ   remove_reader)r\   r2   r[   loops   r!   callback_wrapperz)_attached_input.<locals>.callback_wrapper   s2     < 	#r"""




r#   Nr   r   )r   r$   rZ   get
add_readerPermissionErrorEOFErrorr`   )r[   r\   previousrb   r2   ra   s   ``  @@r!   r9   r9      sz      D	B!%%tRj11H        
,----     $,tRx 	-2 	-OOB)))+3tRx((("48,,, 	2 	-OOB)))+3tRx(("48,,,,,s   A& &A8C ADc              #  t  K   t                      }|                                 }t                              ||f          }|r!|                    |           d t          ||f<   	 d V  |r$|                    ||           |t          ||f<   d S d S # |r"|                    ||           |t          ||f<   w xY wr   )r   r$   rZ   rd   r`   re   )r[   ra   r2   rh   s       r!   r<   r<      s      D	B!%%tRj11H ,2'+48$4 	4OOB)))+3tRx(((	4 	48 	4OOB)))+3tRx(3333s   %B &B7c                  Z    e Zd ZdZddZddZedd	            Zedd
            ZddZ	dS )r   z
    ::

        with raw_mode(stdin):
            ''' the pseudo-terminal stdin is now used in raw mode '''

    We ignore errors when executing `tcgetattr` fails.
    r$   rM   r   r   c                    || _         |  	 t          j        |          | _        d S # t          j        $ r d | _        Y d S w xY wr   )r$   termios	tcgetattrattrs_beforeerror)r    r$   s     r!   r4   zraw_mode.__init__   s[    ?	% ' 1& 9 9D} 	% 	% 	% $D	%s   & A A c                   	 t          j        | j                  }|                     |t          j                           |t          j        <   |                     |t          j                           |t          j        <   d|t          j                 t           j	        <   t          j
        | j        t           j        |           d S # t           j        $ r Y d S w xY w)Nr   )rl   rm   r$   _patch_lflagttyLFLAG_patch_iflagIFLAGCCVMIN	tcsetattrTCSANOWro   )r    newattrs     r!   	__enter__zraw_mode.__enter__   s    	E'44G "&!2!27393E!F!FGCI!%!2!27393E!F!FGCI -.GCFOGL)dk7?GDDDDD } 	 	 	DD	s   C CCattrsc                p    |t           j        t           j        z  t           j        z  t           j        z   z  S r   rl   ECHOICANONIEXTENISIGclsr|   s     r!   rq   zraw_mode._patch_lflag  s'    6G',VWWWr#   c                    |t           j        t           j        z  t           j        z  t           j        z  t           j        z   z  S r   )rl   IXONIXOFFICRNLINLCRIGNCRr   s     r!   rt   zraw_mode._patch_iflag  sI     Lm M	
 m m	
 
 	
r#   aobjectc                    | j         C	 t          j        | j        t          j        | j                    d S # t          j        $ r Y d S w xY wd S r   )rn   rl   rx   r$   ry   ro   )r    r   s     r!   __exit__zraw_mode.__exit__  s^    (!$+w@QRRRRR=    )(s   *5 AAN)r$   rM   r   r   rc   r|   rM   r   rM   )r   r   r   r   )
rR   rS   rT   rU   r4   r{   classmethodrq   rt   r   rY   r#   r!   r   r      s         .% % % %E E E E& X X X [X 
 
 
 [
     r#   r   c                  B    e Zd ZdZedd            Zedd            ZdS )	r   z
    The opposite of ``raw_mode``, used when we need cooked mode inside a
    `raw_mode` block.  Used in `Application.run_in_terminal`.::

        with cooked_mode(stdin):
            ''' the pseudo-terminal stdin is now used in cooked mode. '''
    r|   rM   r   c                n    |t           j        t           j        z  t           j        z  t           j        z  z  S r   r~   r   s     r!   rq   zcooked_mode._patch_lflag+  s$    w~5FUVVr#   c                     |t           j        z  S r   )rl   r   r   s     r!   rt   zcooked_mode._patch_iflag/  s     w}$$r#   Nr   )rR   rS   rT   rU   r   rq   rt   rY   r#   r!   r   r   "  sb          W W W [W % % % [% % %r#   r   )r[   r   r\   r6   r   r]   )r[   r   r   r]   )!
__future__r   r'   platform
contextlibr%   rl   rr   asyncior   r   typingr   r   r	   r
   key_bindingr   baser   posix_utilsr   r0   r   __all__r   rZ   rW   contextmanagerr9   r<   r   r   rY   r#   r!   <module>r      s   " " " " " " " 




|w     				  



 7 7 7 7 7 7 7 7 > > > > > > > > > > > > " " " " " "       ) ) ) ) ) ) % % % % % %  j$ j$ j$ j$ j$ j$ j$ j$^      
 .- .- .- .-b 4 4 4 4"L L L L L L L Ld% % % % %( % % % % %r#   