
     hh)                    r   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mZmZ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Dict	GeneratorListOptionalSetTextIOTupleUnion   )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    V/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/prompt_toolkit/input/vt100.py<lambda>z%Vt100Input.__init__.<locals>.<lambda>U   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&   r;   s     r'   attachzVt100Input.attachX   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.detach_   s    
 t$$$r)   list[KeyPress]c                    | j                                         }| j                            |           | j        }g | _        |S )zRead list of KeyPress.)r5   readr6   feedr#   )r&   dataresults      r'   	read_keyszVt100Input.read_keysf   sF      %%'' 	t$$$ r)   c                T    | j                                          | j        }g | _        |S )zc
        Flush pending keys and return them.
        (Used for flushing the 'escape' key.)
        )r6   r2   r#   )r&   rJ   s     r'   
flush_keyszVt100Input.flush_keyss   s.     	!!! r)   boolc                    | j         j        S r"   )r5   closedrC   s    r'   rP   zVt100Input.closed   s     ''r)   c                N    t          | j                                                  S r"   )r   r   r*   rC   s    r'   r   zVt100Input.raw_mode   s    
))++,,,r)   c                N    t          | j                                                  S r"   )r   r   r*   rC   s    r'   r   zVt100Input.cooked_mode   s    4:,,..///r)   intc                4    | j                                         S r"   )r   r*   rC   s    r'   r*   zVt100Input.fileno   s    z  """r)   strc                    d| j          S )Nzfd-)r4   rC   s    r'   typeahead_hashzVt100Input.typeahead_hash   s    #T\###r)   N)r   r   r   r   )r;   r<   r   r=   )r   r=   )r   rE   )r   rN   )r   rS   )r   rU   )__name__
__module____qualname____doc__setr   __annotations__r:   r@   rD   rK   rM   propertyrP   r   r   r*   rW    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callbackr<   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)rP   remove_reader)rb   r8   ra   loops   r'   callback_wrapperz)_attached_input.<locals>.callback_wrapper   s2     < 	#r"""




r)   Nr   r   )r   r*   r`   get
add_readerPermissionErrorEOFErrorrf   )ra   rb   previousrh   r8   rg   s   ``  @@r'   r?   r?      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*   r`   rj   rf   rk   )ra   rg   r8   rn   s       r'   rB   rB      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*   rS   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'   r:   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   )rr   rs   r*   _patch_lflagttyLFLAG_patch_iflagIFLAGCCVMIN	tcsetattrTCSANOWru   )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"   rr   ECHOICANONIEXTENISIGclsr   s     r'   rw   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"   )rr   IXONIXOFFICRNLINLCRIGNCRr   s     r'   rz   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"   )rt   rr   r~   r*   r   ru   )r&   r   s     r'   __exit__zraw_mode.__exit__"  s^    (!$+w@QRRRRR=    )(s   *5 AAN)r*   rS   r   r   ri   r   rS   r   rS   )r   r   r   r   )
rX   rY   rZ   r[   r:   r   classmethodrw   rz   r   r_   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   rS   r   c                n    |t           j        t           j        z  t           j        z  t           j        z  z  S r"   r   r   s     r'   rw   zcooked_mode._patch_lflag6  s$    w~5FUVVr)   c                     |t           j        z  S r"   )rr   r   r   s     r'   rz   zcooked_mode._patch_iflag:  s     w}$$r)   Nr   )rX   rY   rZ   r[   r   rw   rz   r_   r)   r'   r   r   -  sb          W W W [W % % % [% % %r)   r   )ra   r   rb   r<   r   rc   )ra   r   r   rc   )'
__future__r   r-   platform
contextlibr+   rr   rx   asyncior   r   typingr   r   r	   r
   r   r   r   r   r   r   key_bindingr   baser   posix_utilsr   r6   r   __all__r   r`   r]   contextmanagerr?   rB   r   r   r_   r)   r'   <module>r      sG   " " " " " " " 




|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)   