� ]�g�7� ��UddlZddlmZmZmZddlmZddlmZm Z m Z m Z m Z m Z mZmZddlmZddlmZmZmZmZddlmZdd lmZdd lmZdd lmZmZdd l m!Z!dd l"m#Z#Gd�de��Z$Gd�dee��Z%e&dk�r�ddl'Z'ddl(Z(ddl)m*Z*ddlm+Z+m Z m,Z,ddl-m.Z.ddlmZddl/m%Z%ddl0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7e��Ze5ddd���Z4e7d d!d"��Z6e6�8d#d$d%��d&e1d'��d(e6d)d*d+d,�d-e4e3d.��g Z9e*e9��Z:gd/�Z;e%e�0��5Z<iZ=e+e,e>e>fe?fe@d1<eAd2��D�]�ZBe;eBeCe;��zZDe;D�]rZEeEeDkr� e(jFd3��e'jGdd4��dkre�HeIe:����d5e'j'��d6zdzz e=eDeEf<eCe=��eCe;��dz kr6e=�JeKe=�L����d��e7d7�8��Z6e6�Md9��e6�Md:��e6�Md;��e=�N��D]4\\ZOZPZQe6�8eOePe#eQd<�eQd=krd>nd?�@�����5e<�Re.jSe6������t��� ddd��dS#1swxYwYdSdS)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�@��eZdZdZdddeddf�fd� Zd d�Zd d �Z�xZS) �_RefreshThreadz3A thread that calls refresh() at regular intervals.�live�Live�refresh_per_second�returnNc���||_||_t��|_t ���d���dS)NT)�daemon)rr r�done�super�__init__)�selfrr � __class__s ��Y/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/rich/live.pyr&z_RefreshThread.__init__s>����� �"4����G�G�� � �������%�%�%�%�%�c�8�|j���dS�N)r$�set�r's r)�stopz_RefreshThread.stops�� � � � �����r*c�>�|j�d|jz ��sz|jj5|j���s|j���ddd��n #1swxYwY|j�d|jz ���xdSdS)Nr)r$�waitr r�_lock�is_set�refreshr.s r)�runz_RefreshThread.runs����)�.�.��T�%<�!<�=�=� (���� (� (��y�'�'�)�)�(��I�%�%�'�'�'� (� (� (� (� (� (� (� (� (� (� (���� (� (� (� (��)�.�.��T�%<�!<�=�=� (� (� (� (� (s�3A.�.A2�5A2�r!N) �__name__� __module__� __qualname__�__doc__�floatr&r/r5� __classcell__)r(s@r)rrs��������=�=�&�V�&��&�4�&�&�&�&�&�&� ����(�(�(�(�(�(�(�(r*rc��eZdZdZ d&dddddddddd� deed eed ed ed ed ededede dee gefddfd�Z e defd���Z defd�Zd'deddfd�Zd(d�Zd)d�Zdeeedeedeeddfd�Zd(d�Zd(d�Ze defd ���Zdd!�dededdfd"�Zd(d#�Zd$eedeefd%�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. Defaults to 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@rArBr rCrDrErFrGr!c ��|dks Jd���||_|�|n t��|_||_d|_||_||_d|_d|_t��|_ d|_ ||_ d|_ |rdn||_d|_||_| |_| |_t'|���| ���|_dS)Nrzrefresh_per_second must be > 0FT)rF)� _renderablerr@�_screen� _alt_screen�_redirect_stdout�_redirect_stderr�_restore_stdout�_restore_stderrrr2� ipy_widgetrB�_startedrC�_refresh_threadr rF�_get_renderablerrG� _live_render) r'rHr@rArBr rCrDrErFrGs r)r&z Live.__init__3s���"�A�%�%�%�'G�%�%�%�%���")�"5�w�w�;�=�=�� ��� � ��� /��� /���26���26����W�W�� �)-���(���#�� �!'�6���Y���9=���"4���!2���-���&� � � � !� !�5F� � � ����r*c��|jS)z'Check if live display has been started.)rRr.s r)� is_startedzLive.is_started[s ���}�r*c�N�|j�|���n|j}|pdS)N�)rTrJ�r'rHs r)rGzLive.get_renderable`s9���#�/� � � � "� "� "��!� � ��R�r*r4c�x�|j5|jr ddd��dS|j�|��d|_|jr|j�d��|_|j�d��|���|j� |��|r9 |� ��n##t$r|� ���wxYw|j r3t||j��|_|j���ddd��dS#1swxYwYdS)z|Start live rendering display. Args: refresh (bool, optional): Also refresh. Defaults to False. NTF)r2rRr@�set_liverK�set_alt_screenrL� show_cursor�_enable_redirect_io�push_render_hookr4� Exceptionr/rBrr rS�start)r'r4s r)rbz Live.starths��� �Z� -� -��}� �� -� -� -� -� -� -� -� -� �L� !� !�$� '� '� '� �D�M��|� E�#'�<�#>�#>�t�#D�#D�� � �L� $� $�U� +� +� +� � $� $� &� &� &� �L� )� )�$� /� /� /�� ���L�L�N�N�N�N�� ���� �I�I�K�K�K�� ����� � -�'5�d�D�<S�'T�'T��$��$�*�*�,�,�,�- -� -� -� -� -� -� -� -� -� -� -� -���� -� -� -� -� -� -s/� D/�BD/�0C�D/� C%�%=D/�/D3�6D3c��|j5|js ddd��dS|j���d|_|jr'|j� |j���d|_d|_|j5 |js |jj s|� ��|� ��|j� ��|js%|jj r|j���|j�d��|jr|j�d��|jr8|js1|j�|j�����|j� |jr|j����n#|� ��|j� ��|js%|jj r|j���|j�d��|jr|j�d��|jr8|js1|j�|j�����|j�!|jr|j���wwwxYwddd��n #1swxYwYddd��dS#1swxYwYdS)zStop live rendering display.NF�visibleT)r2rRr@� clear_liverBrSr/rFrL� 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� #� #� %� %� %�!�D�M�� � ,�T�%9�%E��$�)�)�+�+�+�'+��$�%.�D� "��� 0� 0�0��+�'�D�L�4K�'�� � �����-�-�/�/�/��L�0�0�2�2�2��+�,�� �0H�,�� �)�)�+�+�+��L�,�,�T�2�2�2��'�;�� �3�3�E�:�:�:��~�Q�d�.>�Q�� �,�,�T�->�-M�-M�-O�-O�P�P�P���2�t�~�2���-�-�/�/�/����-�-�/�/�/��L�0�0�2�2�2��+�,�� �0H�,�� �)�)�+�+�+��L�,�,�T�2�2�2��'�;�� �3�3�E�:�:�:��~�Q�d�.>�Q�� �,�,�T�->�-M�-M�-O�-O�P�P�P���2�t�~�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�AK�:J,�<'F�#C<J,�C>J�J,� K�,J0 �0K�3J0 �4K�K� Kc�@�|�|jdu���|S)N�r4)rbrJr.s r)� __enter__zLive.__enter__�s#�� � � �4�+�4�7� �8�8�8�� r*�exc_type�exc_val�exc_tbc�.�|���dSr,)r/)r'rqrrrss r)�__exit__z Live.__exit__�s�� � � � � � � � r*c���|jjs |jjr�|jrgt t jt��sHt j|_tdt|jt j����t _|j rkt t j t��sNt j |_ tdt|jt j ����t _ dSdSdSdS)z&Enable redirecting of stdout / stderr.r N) r@rirfrM� isinstance�sys�stdoutrrOrrN�stderrrPr.s r)r_zLive._enable_redirect_io�s��� �<� #� Q�t�|�'>� Q��$� Q�Z�� �I�-N�-N� Q�'*�z��$�!�(�I�d�l�C�J�,O�,O�P�P�� ��$� Q�Z�� �I�-N�-N� Q�'*�z��$�!�(�I�d�l�C�J�,O�,O�P�P�� � � �  Q� Q� Q� Q� Q� Qr*c��|jr&td|j��t_d|_|jr(td|j��t_d|_dSdS)z'Disable redirecting of stdout / stderr.r N)rOrrxryrPrzr.s r)rgzLive._disable_redirect_io�s`�� � � (��h��(<�=�=�C�J�#'�D� � � � (��h��(<�=�=�C�J�#'�D� � � � (� (r*c�Z�|���}|jrt|��n|S)zwGet the renderable that is being displayed Returns: RenderableType: Displayed renderable. )rGrLrrZs r)rHzLive.renderable�s0���(�(�*�*� �%)�%5�E�v�j�!�!�!�:�Er*roc���t|t��r|j�|��}|j5||_|r|���ddd��dS#1swxYwYdS)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)rw�strr@� render_strr2rJr4)r'rHr4s r)�updatez Live.update�s��� �j�#� &� &� =���0�0��<�<�J� �Z� � �)�D� �� �� � ���� � � � � � � � � � � � ���� � � � � � s�A"�"A&�)A&c�t�|j5|j�|j��|jjr� ddlm}ddlm }|j �|��|_ ||j ��|j 5|j � d���|j� |jj��ddd��n #1swxYwYn�#t$rddl}|�d��Yn�wxYw|jjrR|jjsF|j5|j� t%����ddd��n #1swxYwYnS|jsL|jsE|j5|j� t%����ddd��n #1swxYwYddd��dS#1swxYwYdS)z&Update the display of the Live Render.r)�display)�OutputNT)r1z(install "ipywidgets" for Jupyter support)r2rU�set_renderablerHr@rf�IPython.displayr�� ipywidgetsr�rQ� clear_output�print� ImportError�warnings�warnri�is_dumb_terminalrrRrC)r'r�r�r�s r)r4z 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�#�O�O�O��M�M�"L�M�M�M�M�M�N������)� 2�$�,�2O� 2��\�2�2��L�&�&�w�y�y�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2���M� 2�*.�.� 2��\�2�2��L�&�&�w�y�y�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2�1 2� 2� 2� 2� 2� 2� 2� 2� 2� 2� 2� 2���� 2� 2� 2� 2� 2� 2s��,F-� C�-F-�.AB:�. F-�:B> �>F-�B> �F-�#C,�)F-�+C,�,"F-�'E�5 F-�E �F-�E � F-�"'F� F-�F �F-�F �F-�-F1�4F1� renderablesc�0�|j|j_|jjr_|j5|jrt j��n|j���}|g|�|j�}ddd��n #1swxYwYn|j s|j s g|�|j�}|S)z;Process renderables to restore cursor and display progress.N) rFrUr@�is_interactiver2rLr�home�position_cursorrRrC)r'r��resets r)�process_renderableszLive.process_renderables�s��/3�.D���+� �<� &� <��� G� G��'�=�G�L�N�N�N��*�:�:�<�<�� %�F�{�F�D�4E�F� �  G� G� G� G� G� G� G� G� G� G� G���� G� G� G� G��� � <�&*�n� <�<�K�;��):�;�K��s�AA1�1A5�8A5r,)Fr6)r!r)r7r8r9r:r rr�boolr;rr r&�propertyrWrGrbr/rpr � BaseExceptionrrur_rgrHr�r4r rr��r*r)rr#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�EJ� � � �� �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�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...�examplezPretty printed)�type�textz Syntax...zGive 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_dict�dg�������?� ��i@zExchange Rates)�titlezSource CurrencyzDestination Currencyz Exchange Ratez.4fg�?�red�green)�style)Trx� threadingrrr�typesr�typingrrr r r r r rrYrr@rrrrrkr� file_proxyr�jupyterr� live_renderrrrArr�rrrr7�random�time� itertoolsr�r�r��alignr�r�panelr��ruler��syntaxr��tabler��add_row�progress_renderables�examples� exchanges� live_tabler�r~r;�__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�(�(�(�&i�i�i�i�i�<��i�i�i�X �z����M�M�M��K�K�K�������(�(�(�(�(�(�(�(�(�(������� � � � � � �"�"�"�"�"�"��������������������������g�i�i�G� �V� "� �����F� �E�%��� &� &�E� �M�M�#�s�C� � � � E� ��8�9�9�'� �&��$4�5�5��� �� ��� ���u�)�*�*�H����I�* ��g� � � �!7�*�;=��D��s�C�x��%�!7�8�=�=�=��U�3�Z�Z� 7� 7�E�'����I���(>�?�O�%� 7� 7����.�.���� �3����!�6�>�!�R�(�(�1�,�,��K�K���X���/�/�/�BE�"�V�]�_�_�s�*�a�/�C�"�O�X�#>�?��3�)�*�*�S�S��^�^�a�-?�?�?�&�*�*�4�4�0B�0G�0G�0I�0I�+J�+J�1�+M�N�N�N���$4�5�5�5��� � �!2�3�3�3�� � �!7�8�8�8�� � ��1�1�1�5G�5M�5M�5O�5O���1�N�V�T�M��M�M�����,�2�2�+8�3�+>�+>�%�%�G���������!�!�,�%�,�u�"5�"5�6�6�6�6�7 7� 7�!7�!7�!7�!7�!7�!7�!7�!7�!7�!7�!7�!7����!7�!7�!7�!7�!7�!7�O�s�?F2K?�?L�L
Memory