HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/site-packages/pip/_vendor/rich/__pycache__/live.cpython-37.pyc
B

L��g�7�@sfUddlZddlmZmZmZddlmZddlmZm	Z	m
Z
mZmZm
Z
mZmZddlmZddlmZmZmZmZddlmZdd	lmZdd
lmZddlmZmZddl m!Z!dd
l"m#Z#Gdd�de�Z$Gdd�dee�Z%e&dk�rbddl'Z'ddl(Z(ddl)m*Z*ddlm+Z+mZm,Z,ddl-m.Z.ddlmZddl/m%Z%ddl0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7e�Ze5dddd�Z4e7d d!d"�Z6e6�8d#d$d%�d&e1d'�d(e6d)d*d+d,�d-e4e3d.�g	Z9e*e9�Z:d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAgZ;e%edB���ZZ<iZ=e+e,e>e>fe?fe@dC<�x4eAdD�D�]&ZBe;eBeCe;�ZD�xe;D�]ZEeEeDk�r^�qJe(�FdE�e'�GddF�dk�r�e�HeIe:��dGe'�'�dHde=eDeEf<eCe=�eCe;�dk�r�e=�JeKe=�L��d�e7dIdJ�Z6e6�MdK�e6�MdL�e6�MdM�xBe=�N�D]6\\ZOZPZQe6�8eOePe#eQdN�eQdOk�r,dPndQdR���qWe<�Re.�Se6���qJW�q,WWdQRXdS)S�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)�TextcsFeZdZdZdedd��fdd�Zdd�dd	�Zdd�d
d�Z�ZS)�_RefreshThreadz3A thread that calls refresh() at regular intervals.�LiveN)�live�refresh_per_second�returncs&||_||_t�|_t�jdd�dS)NT)�daemon)rrr�done�super�__init__)�selfrr)�	__class__��9/tmp/pip-unpacked-wheel-hv55ucu3/pip/_vendor/rich/live.pyr#sz_RefreshThread.__init__)rcCs|j��dS)N)r!�set)r$r&r&r'�stopsz_RefreshThread.stopc	CsDx>|j�d|j�s>|jj�|j��s2|j��WdQRXqWdS)Nr)r!�waitrr�_lock�is_set�refresh)r$r&r&r'�runs

z_RefreshThread.run)	�__name__�
__module__�__qualname__�__doc__�floatr#r)r.�
__classcell__r&r&)r%r'rsrc@s<eZdZdZd)dddddddddd�	eeeeeeeeeee	ee
gefdd�d	d
�Zeed�dd
��Z
ed�dd�Zd*edd�dd�Zdd�dd�Zdd�dd�Zeeeeeeedd�dd�Zdd�dd�Zdd�dd�Zeed�dd��Zdd �eedd!�d"d#�Zdd�d$d%�Zeeeed&�d'd(�ZdS)+ra�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�Zellipsis)	�console�screen�auto_refreshr�	transient�redirect_stdout�redirect_stderr�vertical_overflow�get_renderable)�
renderabler6r7r8rr9r:r;r<r=rc	Cs�|dkstd��||_|dk	r"|nt�|_||_d|_||_||_d|_d|_	t
�|_d|_||_
d|_|rpdn||_d|_||_|	|_|
|_t|��|	d�|_dS)Nrzrefresh_per_second must be > 0FT)r<)�AssertionError�_renderablerr6�_screen�_alt_screen�_redirect_stdout�_redirect_stderr�_restore_stdout�_restore_stderrrr+�
ipy_widgetr8�_startedr9�_refresh_threadrr<�_get_renderablerr=�_live_render)r$r>r6r7r8rr9r:r;r<r=r&r&r'r#3s(z
Live.__init__)rcCs|jS)z'Check if live display has been started.)rH)r$r&r&r'�
is_started[szLive.is_startedcCs |jdk	r|��n|j}|pdS)N�)rJr@)r$r>r&r&r'r=`szLive.get_renderable)r-rc	Cs�|j��|jrdS|j�|�d|_|jr8|j�d�|_|j�d�|��|j�	|�|r�y|�
�Wntk
r�|���YnX|j
r�t||j�|_|j��WdQRXdS)z|Start live rendering display.

        Args:
            refresh (bool, optional): Also refresh. Defaults to False.
        NTF)r+rHr6Zset_liverA�set_alt_screenrB�show_cursor�_enable_redirect_ioZpush_render_hookr-�	Exceptionr)r8rrrI�start)r$r-r&r&r'rRhs&z
Live.startcCs|j��|jsdS|j��d|_|jrB|jdk	rB|j��d|_d|_|j��z|jsh|jj	sh|�
�Wd|��|j��|js�|jj
r�|j��|j�d�|jr�|j�d�|jr�|js�|j�|j���|jdk	r�|jr�|j��XWdQRXWdQRXdS)zStop live rendering display.NFZvisibleT)r+rHr6Z
clear_liver8rIr)r<rB�
is_jupyterr-�_disable_redirect_ioZpop_render_hook�is_terminal�linerOrNr9�controlrKZrestore_cursorrG�close)r$r&r&r'r)�s0



z	Live.stopcCs|j|jdk	d�|S)N)r-)rRr@)r$r&r&r'�	__enter__�szLive.__enter__)�exc_type�exc_val�exc_tbrcCs|��dS)N)r))r$rZr[r\r&r&r'�__exit__�sz
Live.__exit__cCst|jjs|jjrp|jr@ttjt�s@tj|_t	dt|jtj��t_|j
rpttjt�sptj|_t	dt|jtj��t_dS)z&Enable redirecting of stdout / stderr.rN)
r6rUrSrC�
isinstance�sys�stdoutrrEr
rD�stderrrF)r$r&r&r'rP�szLive._enable_redirect_iocCs8|jrtd|j�t_d|_|jr4td|j�t_d|_dS)z'Disable redirecting of stdout / stderr.rN)rEr
r_r`rFra)r$r&r&r'rT�szLive._disable_redirect_iocCs|��}|jrt|�S|S)zwGet the renderable that is being displayed

        Returns:
            RenderableType: Displayed renderable.
        )r=rBr)r$r>r&r&r'r>�szLive.renderable)r-)r>r-rc	Cs>t|t�r|j�|�}|j�||_|r0|��WdQRXdS)z�Update the renderable that is being displayed

        Args:
            renderable (RenderableType): New renderable to use.
            refresh (bool, optional): Refresh the display. Defaults to False.
        N)r^�strr6Z
render_strr+r@r-)r$r>r-r&r&r'�update�s
zLive.updatec
Cs"|j��|j�|j�|jjr�yddlm}ddlm	}Wn&t
k
rbddl}|�d�YnNX|j
dkr�|�|_
||j
�|j
�$|j
jdd�|j�|jj�WdQRXnb|jjr�|jjs�|j�|j�t��WdQRXn0|j�s|j�s|j�|j�t��WdQRXWdQRXdS)z&Update the display of the Live Render.r)�display)�OutputNz(install "ipywidgets" for Jupyter supportT)r*)r+rKZset_renderabler>r6rSZIPython.displayrdZ
ipywidgetsre�ImportError�warnings�warnrGZclear_output�printrUZis_dumb_terminalrrHr9)r$rdrergr&r&r'r-�s*


zLive.refresh)�renderablesrc	Csj|j|j_|jjrN|j�.|jr(t��n|j��}|f||jf�}WdQRXn|j	sf|j
sf||jf�}|S)z;Process renderables to restore cursor and display progress.N)r<rKr6Zis_interactiver+rBr�homeZposition_cursorrHr9)r$rj�resetr&r&r'�process_renderables�s

zLive.process_renderables)N)F)r/r0r1r2r
rr�boolr3rrr#�propertyrLr=rRr)rYr�
BaseExceptionrr]rPrTr>rcr-r	rrmr&r&r&r'r#s<.

		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)Zline_numbersZfoo�barZbaz�1�2�3z�You 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 workzSuch as [magenta]tables[/]...zPretty printed structures...ZexamplezPretty printed)�type�textz	Syntax...zGive it a try!ZSGDZMYRZEURZUSDZAUDZJPYZCNHZHKDZCADZINRZDKKZGBPZRUBZNZDZMXNZIDRZTWDZTHBZVND)r6�exchange_rate_dict�dg�������?�
��i@zExchange Rates)�titlezSource CurrencyzDestination Currencyz
Exchange Ratez.4fg�?ZredZgreen)�style)Tr_�	threadingrrr�typesr�typingrrrr	r
rrr
rMrr6rrrrrWrZ
file_proxyrZjupyterrZlive_renderrrr7rr�rrrr/�random�time�	itertoolsrrrsrtZalignrurZpanelrvZrulerwZsyntaxrx�tableryZadd_rowZprogress_renderablesZexamplesZ	exchangesZ
live_tabler�rbr3�__annotations__�range�index�lenZselect_exchangeZexchange�sleep�randint�log�next�pop�list�keysZ
add_column�items�source�destZ
exchange_raterc�centerr&r&r&r'�<module>s�(m