+
    j,i                        R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtHtH	t	H
t
Ht ^ RIt^ RIHtHt ^ RIHt ^ RIHtHt ^ RIHt R	R
.t ! R R	]P0                  4      t ! R R
]P4                  4      tR# )zI
Utility for running a prompt_toolkit application in an asyncssh server.
)annotationsN)get_running_loop)AnyCallable	CoroutineTextIOcast)
AppSessioncreate_app_session)Size)	PipeInputcreate_pipe_input)Vt100_OutputPromptToolkitSSHSessionPromptToolkitSSHServerc                  v    ] tR t^tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltRtR# )r   c               $    V ^8  d   QhRRRRRR/#    interactz>Callable[[PromptToolkitSSHSession], Coroutine[Any, Any, None]]
enable_cprboolreturnNone )formats   "C/usr/lib/python3/dist-packages/prompt_toolkit/contrib/ssh/server.py__annotate__$PromptToolkitSSHSession.__annotate__   s(     '- '-P'- 	'-
 
'-    c               	   a  VS n         VS n        R S n        R S n        R S n        R S n        R S n         ! V 3R lR4      p\        \        V! 4       4      S n	        R # )Nc                  ^   < ] tR t^+tR V 3R lltR R ltR R lt]R V 3R ll4       tR	t	R
# )0PromptToolkitSSHSession.__init__.<locals>.Stdoutc                    V ^8  d   QhRRRR/# )r   datastrr   r   r   )r   s   "r   r   =PromptToolkitSSHSession.__init__.<locals>.Stdout.__annotate__,   s      s t r   c                	   <  SP                   e.   SP                   P                  VP                  RR4      4       R # R #   \         d     R # i ; i)N
z
)_chanwritereplaceBrokenPipeError)sr$   selfs   &&r   r*   6PromptToolkitSSHSession.__init__.<locals>.Stdout.write,   sF    zz-

((dF)CD .& s   9A   AAc                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r&   3   s      T r   c                	    R # Tr   r-   s   &r   isatty7PromptToolkitSSHSession.__init__.<locals>.Stdout.isatty3   s    r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r&   6   s      D r   c                	    R # Nr   r4   s   &r   flush6PromptToolkitSSHSession.__init__.<locals>.Stdout.flush6   s    r   c                   V ^8  d   QhRR/# )r   r   r%   r   )r   s   "r   r   r&   :   s     D Ds Dr   c                	   < SP                   f   Q h\        SP                   P                  P                  4       ^ ,          4      # r:   )r)   r%   
_orig_changet_encoding)r-   r.   s   &r   encoding9PromptToolkitSSHSession.__init__.<locals>.Stdout.encoding9   s6    zz---4::00==?BCCr   r   N)
__name__
__module____qualname____firstlineno__r*   r5   r;   propertyrA   __static_attributes__r.   s   r   Stdoutr"   +   s-      D Dr   rJ   )
r   r   interact_taskr)   app_session_input_outputr   r   stdout)r.   r   r   rJ   s   f&$ r   __init__ PromptToolkitSSHSession.__init__   sX     !$8<!%
.2
 )-,0	D 	D& 668,r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   @   s     4 44 4r   c                    V P                   f   \        ^^OR7      # V P                   P                  4       w  rr4\        W!R7      # )zE
Callable that returns the current `Size`, required by Vt100_Output.
)rowscolumns)r)   r   get_terminal_sizer.   widthheightpixwidth	pixheights   &    r   	_get_size!PromptToolkitSSHSession._get_size@   s=     ::R,,151M1M1O.E8V33r   c                    V ^8  d   QhRRRR/# )r   chanr   r   r   r   )r   s   "r   r   r   J   s      C D r   c                	    Wn         R # r:   )r)   )r.   r_   s   &&r   connection_made'PromptToolkitSSHSession.connection_madeJ   s    
r   c                   V ^8  d   QhRR/# r1   r   )r   s   "r   r   r   M   s       r   c                	    R # r3   r   rI   s   &r   shell_requested'PromptToolkitSSHSession.shell_requestedM   s    r   c                   V ^8  d   QhRR/# r8   r   )r   s   "r   r   r   P   s     N N Nr   c                	^    \        4       P                  V P                  4       4      V n        R # r:   )r   create_task	_interactrK   rI   s   &r   session_started'PromptToolkitSSHSession.session_startedP   s    -/;;DNN<LMr   c                   V ^8  d   QhRR/# r8   r   )r   s   "r   r   r   S   s     ( ( (r   c           	     	  "   V P                   f   \        R4      h\        V P                   R4      '       d4   V P                   P                  e   V P                   P	                  R4       V P                   P                  4       p\        V P                  V P                  WP                  R7      V n
        \        4       ;_uu_ 4       V n        \        V P                  V P                  R7      ;_uu_ 4       pW n         V P                  V 4      G R j  xL
  V P                   P'                  4        V P                  P'                  4         R R R 4       R R R 4       R #  LK  \          d    \"        P$                  ! 4         Lki ; i  T P                   P'                  4        T P                  P'                  4        i ; i  + '       g   i     L{; i  + '       g   i     R # ; i5i)Nz,`_interact` called before `connection_made`.set_line_modeF)termr   )inputoutput)r)   	Exceptionhasattr_editorro   get_terminal_typer   rO   r\   r   rN   r   rM   r
   rL   r   BaseException	traceback	print_excclose)r.   rp   sessions   &  r   rj   !PromptToolkitSSHSession._interactS   sK    ::JKK4:://DJJ4F4F4R JJ$$U+zz++-#KKd
   DK#$++dllKKw#* (-----
 JJ$$&KK%%' L !  .$ *'')* JJ$$&KK%%' LK !  sx   CG'/G7G 	?E!EE!4G 	G
G'E!! FFFF6F==G 	 GGG$		G'c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r   rX   intrY   rZ   objectr[   r   r   r   )r   s   "r   r   r   o   s4     . .."%.17.DJ.	.r   c                	    V P                   '       dE   V P                   P                  '       d'   V P                   P                  P                  4        R # R # R # r:   )rL   app
_on_resizerW   s   &&&&&r   terminal_size_changed-PromptToolkitSSHSession.terminal_size_changedo   sA      0 0 4 4 4  ++- !5r   c               $    V ^8  d   QhRRRRRR/# )r   r$   r%   datatyper   r   r   r   )r   s   "r   r   r   v   s!     $ $# $ $D $r   c                	\    V P                   f   R # V P                   P                  V4       R # r:   )rM   	send_text)r.   r$   r   s   &&&r   data_received%PromptToolkitSSHSession.data_receivedv   s!    ;;d#r   )r)   rM   rN   rL   r   r   rK   rO   N)rC   rD   rE   rF   rP   r\   ra   re   rk   rj   r   r   rH   r   r   r   r   r      s1    '-R4N(8.$ $r   c                  F    ] tR t^~tRtRR/R R lltR R ltR R	 ltR
tR# )r   a  
Run a prompt_toolkit application over an asyncssh server.

This takes one argument, an `interact` function, which is called for each
connection. This should be an asynchronous function that runs the
prompt_toolkit applications. This function runs in an `AppSession`, which
means that we can have multiple UI interactions concurrently.

Example usage:

.. code:: python

    async def interact(ssh_session: PromptToolkitSSHSession) -> None:
        await yes_no_dialog("my title", "my text").run_async()

        prompt_session = PromptSession()
        text = await prompt_session.prompt_async("Type something: ")
        print_formatted_text('You said: ', text)

    server = PromptToolkitSSHServer(interact=interact)
    loop = get_running_loop()
    loop.run_until_complete(
        asyncssh.create_server(
            lambda: MySSHServer(interact),
            "",
            port,
            server_host_keys=["/etc/ssh/..."],
        )
    )
    loop.run_forever()

:param enable_cpr: When `True`, the default, try to detect whether the SSH
    client runs in a terminal that responds to "cursor position requests".
    That way, we can properly determine how much space there is available
    for the UI (especially for drop down menus) to render.
r   Tc               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   #PromptToolkitSSHServer.__annotate__   s(     % %P% 	%
 
%r   c               	    Wn         W n        R # r:   )r   r   )r.   r   r   s   &&$r   rP   PromptToolkitSSHServer.__init__   s     !$r   c                    V ^8  d   QhRRRR/# )r   usernamer%   r   r   r   )r   s   "r   r   r      s      3 4 r   c                	    R # )Fr   )r.   r   s   &&r   
begin_auth!PromptToolkitSSHServer.begin_auth   s    r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r      s     R R#: Rr   c                	D    \        V P                  V P                  R 7      # ))r   )r   r   r   rI   s   &r   session_requested(PromptToolkitSSHServer.session_requested   s    &t}}QQr   )r   r   N)	rC   rD   rE   rF   __doc__rP   r   r   rH   r   r   r   r   r   ~   s(    #J%  	%R Rr   )r   
__future__r   asynciorx   r   typingr   r   r   r   r   asyncssh"prompt_toolkit.application.currentr	   r
   prompt_toolkit.data_structuresr   prompt_toolkit.inputr   r   prompt_toolkit.output.vt100r   __all__SSHServerSessionr   	SSHServerr   r   r   r   <module>r      sa    #   $ 9 9  M / = 4$&>
?e$h77 e$P4RX// 4Rr   