
    /h\7                        U d dl Z d dlmZmZmZ d dlmZ d dl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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mZ ddl m!Z! ddl"m#Z#  G d de          Z$ G d dee          Z%e&dk    rd dl'Z'd dl(Z(d dl)m*Z* d dlm+Z+mZm,Z, ddl-m.Z. ddlmZ ddl/m%Z% ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7  e            Z e5ddd          Z4 e7d d!d"          Z6e68                    d#d$d%           d& e1d'          d(e6d)d*d+d,d-e4 e3d.          g	Z9 e*e9          Z:g d/Z; e%e0          5 Z<i Z=e+e,e>e>f         e?f         e@d1<    eAd2          D ]ZBe;eB eCe;          z           ZDe;D ]rZEeEeDk    r
 e(jF        d3            e'jG        d d4          dk     reH                     eIe:                     d5 e'j'                    d6z  dz   z  e=eDeEf<    eCe=           eCe;          dz
  k    r6e=J                     eKe=L                                          d                      e7d78          Z6e6M                    d9           e6M                    d:           e6M                    d;           e=N                                D ]4\  \  ZOZPZQe68                    eOeP e#eQd<eQd=k     rd>nd?@                     5e<R                     e.jS        e6                     t	 ddd           dS # 1 swxY w Y   dS dS )A    N)EventRLockThread)TracebackType)IOAnyCallableListOptionalTextIOTypecast   )get_console)ConsoleConsoleRenderableRenderableType
RenderHook)Control)	FileProxy)JupyterMixin)
LiveRenderVerticalOverflowMethod)Screen)Textc                   @     e Zd ZdZdddeddf fdZd
dZd
d	Z xZS )_RefreshThreadz3A thread that calls refresh() at regular intervals.liveLiverefresh_per_secondreturnNc                     || _         || _        t                      | _        t	                                          d           d S )NT)daemon)r   r    r   donesuper__init__)selfr   r    	__class__s      H/var/www/html/venv/lib/python3.11/site-packages/pip/_vendor/rich/live.pyr&   z_RefreshThread.__init__   s>    	"4GG	%%%%%    c                 8    | j                                          d S N)r$   setr'   s    r)   stopz_RefreshThread.stop   s    	r*   c                 >   | j                             d| j        z            sz| j        j        5  | j                                         s| j                                         d d d            n# 1 swxY w Y   | j                             d| j        z            xd S d S )Nr   )r$   waitr    r   _lockis_setrefreshr.   s    r)   runz_RefreshThread.run   s    )..T%<!<== 	( ( (y'')) (I%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( )..T%<!<== 	( 	( 	( 	( 	(s   3A..A25A2r!   N)	__name__
__module____qualname____doc__floatr&   r/   r5   __classcell__)r(   s   @r)   r   r      s        ==&V & &4 & & & & & &   ( ( ( ( ( ( ( (r*   r   c                      e Zd ZdZ	 d&dddddddddd	dee         d	ee         d
edededededede	dee
g ef                  ddfdZedefd            ZdefdZd'deddfdZd(dZd)dZdeee                  dee         dee         ddfdZd(dZd(dZedefd             Zdd!dededdfd"Zd(d#Zd$ee         dee         fd%ZdS )*r   a  Renders an auto-updating live display of any given renderable.

    Args:
        renderable (RenderableType, optional): The renderable to live display. Defaults to displaying nothing.
        console (Console, optional): Optional Console instance. Default will an internal Console instance writing to stdout.
        screen (bool, optional): Enable alternate screen mode. Defaults to False.
        auto_refresh (bool, optional): Enable auto refresh. If disabled, you will need to call `refresh()` or `update()` with refresh flag. Defaults to True
        refresh_per_second (float, optional): Number of times per second to refresh the live display. Defaults to 4.
        transient (bool, optional): Clear the renderable on exit (has no effect when screen=True). Defaults to False.
        redirect_stdout (bool, optional): Enable redirection of stdout, so ``print`` may be used. Defaults to True.
        redirect_stderr (bool, optional): Enable redirection of stderr. Defaults to True.
        vertical_overflow (VerticalOverflowMethod, optional): How to handle renderable when it is too tall for the console. Defaults to "ellipsis".
        get_renderable (Callable[[], RenderableType], optional): Optional callable to get renderable. Defaults to None.
    NFT   ellipsis)	consolescreenauto_refreshr    	transientredirect_stdoutredirect_stderrvertical_overflowget_renderable
renderabler@   rA   rB   r    rC   rD   rE   rF   rG   r!   c       	            |dk    s
J d            || _         ||nt                      | _        || _        d| _        || _        || _        d | _        d | _        t                      | _
        d | _        || _        d| _        |rdn|| _        d | _        || _        |	| _        |
| _        t'          |                                 |	          | _        d S )Nr   zrefresh_per_second must be > 0FT)rF   )_renderabler   r@   _screen_alt_screen_redirect_stdout_redirect_stderr_restore_stdout_restore_stderrr   r2   
ipy_widgetrB   _startedrC   _refresh_threadr    rF   _get_renderabler   rG   _live_render)r'   rH   r@   rA   rB   r    rC   rD   rE   rF   rG   s              r)   r&   zLive.__init__3   s     "A%%%'G%%%%")"5ww;==  / /2626WW
)-(#!'6Y9="4!2-&!!5F
 
 
r*   c                     | j         S )z'Check if live display has been started.)rR   r.   s    r)   
is_startedzLive.is_started[   s     }r*   c                 N    | j         |                                  n| j        }|pdS )N )rT   rJ   r'   rH   s     r)   rG   zLive.get_renderable`   s9     #/   """! 	
 Rr*   r4   c                 x   | j         5  | j        r	 ddd           dS | j                            |            d| _        | j        r| j                            d          | _        | j                            d           |                                  | j        	                    |            |r9	 | 
                                 n## t          $ r |                                   w xY w| j        r3t          | | j                  | _        | j                                         ddd           dS # 1 swxY w Y   dS )z|Start live rendering display.

        Args:
            refresh (bool, optional): Also refresh. Defaults to False.
        NTF)r2   rR   r@   set_liverK   set_alt_screenrL   show_cursor_enable_redirect_iopush_render_hookr4   	Exceptionr/   rB   r   r    rS   start)r'   r4   s     r)   rb   z
Live.starth   s    Z 	- 	-} 	- 	- 	- 	- 	- 	- 	- 	- L!!$''' DM| E#'<#>#>t#D#D L$$U+++$$&&&L))$/// 	LLNNNN    
 IIKKK   -'5dD<S'T'T$$**,,,-	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s/   	D/BD/0CD/ C%%=D//D36D3c                    | j         5  | j        s	 ddd           dS | j                                         d| _        | j        r'| j         | j                                         d| _        d| _        | j        5  	 | j        s | j        j	        s| 
                                 |                                  | j                                         | j        s%| j        j        r| j                                         | j                            d           | j        r| j                            d           | j        r8| j        s1| j                            | j                                                   | j         | j        r| j                                         n# |                                  | j                                         | j        s%| j        j        r| j                                         | j                            d           | j        r| j                            d           | j        r8| j        s1| j                            | j                                                   | j        !| j        r| j                                         w w w xY wddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zStop live rendering display.NFvisibleT)r2   rR   r@   
clear_liverB   rS   r/   rF   rL   
is_jupyterr4   _disable_redirect_iopop_render_hookis_terminalliner^   r]   rC   controlrU   restore_cursorrQ   closer.   s    r)   r/   z	Live.stop   s\   Z 	0 	0= 	0 	0 	0 	0 	0 	0 	0 	0 L##%%%!DM  ,T%9%E$))+++'+$%.D" 0 00+ 'DL4K '--///L00222+ ,0H ,))+++L,,T222' ;33E:::~ Qd.> Q,,T->-M-M-O-OPPP2t~2--/// --///L00222+ ,0H ,))+++L,,T222' ;33E:::~ Qd.> Q,,T->-M-M-O-OPPP2t~2--//// 320 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sU   	KAK:J,<'F#C<J,C>JJ, K,J0	0K3J0	4KKKc                 @    |                      | j        d u           | S )Nr4   )rb   rJ   r.   s    r)   	__enter__zLive.__enter__   s#    

4+47
888r*   exc_typeexc_valexc_tbc                 .    |                                   d S r,   )r/   )r'   rq   rr   rs   s       r)   __exit__zLive.__exit__   s     			r*   c                    | j         j        s| j         j        r| j        rgt	          t
          j        t                    sHt
          j        | _        t          dt          | j         t
          j                            t
          _        | j
        rkt	          t
          j        t                    sNt
          j        | _        t          dt          | j         t
          j                            t
          _        dS dS dS dS )z&Enable redirecting of stdout / stderr.r   N)r@   ri   rf   rM   
isinstancesysstdoutr   rO   r   rN   stderrrP   r.   s    r)   r_   zLive._enable_redirect_io   s    <# 	Qt|'> 	Q$ QZ
I-N-N Q'*z$!(IdlCJ,O,OPP
$ QZ
I-N-N Q'*z$!(IdlCJ,O,OPP


	Q 	QQ Q Q Qr*   c                     | j         r&t          d| j                   t          _        d| _         | j        r(t          d| j                  t          _        d| _        dS dS )z'Disable redirecting of stdout / stderr.r   N)rO   r   rx   ry   rP   rz   r.   s    r)   rg   zLive._disable_redirect_io   s`     	(h(<==CJ#'D  	(h(<==CJ#'D   	( 	(r*   c                 Z    |                                  }| j        rt          |          n|S )zwGet the renderable that is being displayed

        Returns:
            RenderableType: Displayed renderable.
        )rG   rL   r   rZ   s     r)   rH   zLive.renderable   s0     ((**
%)%5Evj!!!:Er*   ro   c                    | j         5  || _        |r|                                  ddd           dS # 1 swxY w Y   dS )zUpdate the renderable that is being displayed

        Args:
            renderable (RenderableType): New renderable to use.
            refresh (bool, optional): Refresh the display. Defaults to False.
        N)r2   rJ   r4   )r'   rH   r4   s      r)   updatezLive.update   s     Z 	 	)D 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   377c                 t   | j         5  | j                            | j                   | j        j        r	 ddlm} ddlm	} | j
         |            | _
         || j
                   | j
        5  | j
                            d           | j                            | j        j                   ddd           n# 1 swxY w Y   n# t          $ r ddl}|                    d           Y nw xY w| j        j        rR| j        j        sF| j        5  | j                            t%                                 ddd           n# 1 swxY w Y   nS| j        sL| j        sE| j        5  | j                            t%                                 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z&Update the display of the Live Render.r   )display)OutputNT)r1   z(install "ipywidgets" for Jupyter support)r2   rU   set_renderablerH   r@   rf   IPython.displayr   
ipywidgetsr   rQ   clear_outputprintImportErrorwarningswarnri   is_dumb_terminalr   rR   rC   )r'   r   r   r   s       r)   r4   zLive.refresh   s   Z 	2 	2,,T_===|& 2I777777111111 .*0&((000 I I44$4???**4+<+GHHHI I I I I I I I I I I I I I I # N N N#OOOMM"LMMMMMN ) 2$,2O 2\ 2 2L&&wyy1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 M2*..2 \ 2 2L&&wyy1112 2 2 2 2 2 2 2 2 2 2 2 2 2 21	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   ,F-C-F-.A B:.F-:B>	>F-B>	F-#C,)F-+C,,"F-'E5F-E	F-E		F-"'F	F-F	F-F	F--F14F1renderablesc                 0   | j         | j        _         | j        j        r_| j        5  | j        rt          j                    n| j                                        }|g|| j        }ddd           n# 1 swxY w Y   n| j	        s| j
        sg || j        }|S )z;Process renderables to restore cursor and display progress.N)rF   rU   r@   is_interactiver2   rL   r   homeposition_cursorrR   rC   )r'   r   resets      r)   process_renderableszLive.process_renderables   s    /3.D+<& 	< G G '=GLNNN*::<< 
  %F{FD4EFG G G G G G G G G G G G G G G 	<&*n	< <K;):;Ks   A A11A58A5r,   )Fr6   )r!   r   )r7   r8   r9   r:   r   r   r   boolr;   r   r	   r&   propertyrW   rG   rb   r/   rp   r   BaseExceptionr   ru   r_   rg   rH   r~   r4   r
   r   r    r*   r)   r   r   #   s        " 04&
 &*!$% $ $4>AE&
 &
 &
^,&
 '"	&

 &
 &
 "&
 &
 &
 &
 2&
 !"n*<!=>&
 
&
 &
 &
 &
P D    X         - -T -d - - - -<0 0 0 0>   4./ -( '	
 
   Q Q Q Q( ( ( ( FN F F F XF EJ 
 
 
 
T 
d 
 
 
 
2 2 2 2: 12		      r*   r   __main__)cycle)Dictr
   Tuple)Align)r   )r   )Panel)Rule)Syntax)Tablea~  def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
    """Iterate and generate a tuple with a flag for last value."""
    iter_values = iter(values)
    try:
        previous_value = next(iter_values)
    except StopIteration:
        return
    for value in iter_values:
        yield False, previous_value
        previous_value = value
    yield True, previous_valuepythonT)line_numbersfoobarbaz123zYou can make the terminal shorter and taller to see the live table hideText may be printed while the progress bars are rendering.z(In fact, [i]any[/i] renderable will workzSuch as [magenta]tables[/]...zPretty printed structures...examplezPretty printed)typetextz	Syntax...zGive it a try!)SGDMYREURUSDAUDJPYCNHHKDCADINRDKKGBPRUBNZDMXNIDRTWDTHBVND)r@   exchange_rate_dictd   g?
      i@  zExchange Rates)titlezSource CurrencyzDestination CurrencyzExchange Ratez.4fg      ?redgreen)style)Trx   	threadingr   r   r   typesr   typingr   r   r	   r
   r   r   r   r   rY   r   r@   r   r   r   r   rk   r   
file_proxyr   jupyterr   live_renderr   r   rA   r   r   r   r   r   r7   randomtime	itertoolsr   r   r   alignr   r   panelr   ruler   syntaxr   tabler   add_rowprogress_renderablesexamples	exchanges
live_tabler   strr;   __annotations__rangeindexlenselect_exchangeexchangesleeprandintlognextpoplistkeys
add_columnitemssourcedestexchange_rater~   centerr   r*   r)   <module>r      s   




 * * * * * * * * * *       H H H H H H H H H H H H H H H H H H H H       K K K K K K K K K K K K       ! ! ! ! ! ! ! ! ! ! ! ! ; ; ; ; ; ; ; ;            ( ( ( ( (V ( ( (&g g g g g< g g gT zMMMKKK((((((((((      """"""giiGV
	" 	  F  E%&&E	MM#sC   	E899'&$455 u)**H  I* 
g			 !7*;=DsCx%!78===U3ZZ 	7 	7E'I(>?O% 7 7..
3!6>!R((1,,KKX///BE"V]__s*a/C"OX#>? 3)**SS^^a-???&**440B0G0G0I0I+J+J1+MNNN$4555  !2333  !7888  1117I7O7O7Q7Q  3^fd]MM,22+83+>+>%%G      !!,%,u"5"5666677	7!7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7O s   ?F2K??LL