� ]�g���+�� �ddlZddlZddlZddlZddlmZmZddlmZddl m Z m Z ddl m Z ddlmZmZddlmZddlmZdd lmZdd lmZmZdd lmZmZmZdd lmZdd lmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ej0dkrddlm1Z1nddl2m1Z1ej0dkrddlm3Z3nddl2m3Z3ddl4m5Z5m6Z6ddl7m8Z8m9Z9m:Z:m;Z;ddl<m=Z=ddl>m?Z?ddl@mAZAddlBmCZCddlDmEZEddlFmGZGddlHmIZImJZJddlKmLZLmMZMe(deN��ZOe.d��ZPe geQfZRej.de+e��ZSGd �d!e��ZT d�d+e/e*ePe%ePfd,eUd-e)eQd.eNd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd8eQd9eVd:eVd;e%ePf"d<�ZWGd=�d>ee��ZXGd?�d@e!eSe$eS��ZYdAd#dd$dd%d&d'd(d)d$dB� dCed-eNd,eUd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd9eVd;e!efdD�ZZej[ d�ddAd#dd$dd%d&d'd(d)d$dF� dCe/eUdGe\fdHe/e1dIe1dJfdKeNdLe)eUdMe)eUdNe)eUd-e)eNd,eUd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd9eVd;e!e+f&dO���Z]ej[ d�ddAd#dd$dd%d&d'd(d)d$dF� dCe/eUdGe\fdHe1dPdKeNdLe)eUdMe)eUdNe)eUd-e)eNd,eUd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd9eVd;e!ef&dQ���Z] d�ddAd#dd$dd%d&d'd(d)d$dF� dCe/eUdGe\fdHe/e1dPe1dIe1dJfdKeNdLe)eUdMe)eUdNe)eUd-e)eNd,eUd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd9eVd;e/e!ee!e+ff&dR�Z]GdS�dTe��Z^GdU�dVe^��Z_GdW�dXe^��Z`GdY�dZe^��ZaGd[�d\e^��ZbGd]�d^e^��ZcGd_�d`ea��ZdGda�dbe^��ZeGdc�dde^��ZfGde�dfe^��ZgGdg�dhe^��ZhGdi�dje^��ZiGdk�dle^��ZjGdm�dne'��Zke Gdo�dp����ZlGdq�dre?��Zmendsk�r�ddloZoddlpZpddtlqmrZrddulsmtZtddvlumvZvddwlHmJZJevdxdyd#�z��ZueJd{d|d}��ZHeH�wd~dd���d�erd���d�eHd�d�d�d��d�euetd���g Zxdd�lymzZzezex��Z{e8d#����Z7eme`��gem�|���ec���Re7d$d���5Z}e}�~d�d�����Ze}�~d�d�����Z�e}�~d�d����Z�e}j�sxe}��ed�����e}��e�d�����epj�d���eoj�dd���dkre}��e�e{����e}j��xddd��dS#1swxYwYdSdS)��N)�ABC�abstractmethod��deque)� dataclass�field)� timedelta)� RawIOBase�UnsupportedOperation)�ceil)�mmap)� length_hint)�PathLike�stat)�Event�RLock�Thread)� TracebackType)�Any�BinaryIO�Callable�ContextManager�Deque�Dict�Generic�Iterable�List� NamedTuple�NewType�Optional�Sequence�TextIO�Tuple�Type�TypeVar�Union)��)�Literal)r'� )�Self�)�filesize� get_console)�Console�Group� JustifyMethod�RenderableType)� Highlighter)� JupyterMixin)�Live)� ProgressBar)�Spinner)� StyleType)�Column�Table)�Text�TextType�TaskID� ProgressType�_Ic���eZdZdZdddddef�fd� Zdd �Zdd �Zd ee e d ee dee dd fd�Z �xZ S)� _TrackThreadz)A thread to periodically update progress.�progress�Progress�task_idr=� update_periodc���||_||_||_t��|_d|_t ���d���dS)NrT)�daemon)rBrDrEr�done� completed�super�__init__)�selfrBrDrE� __class__s ��]/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/rich/progress.pyrKz_TrackThread.__init__GsL��� �� ��� �*����G�G�� ���� �������%�%�%�%�%��returnNc�P�|j}|jj}|j}d}|jj}||��sK|jjjr:|j}||kr||||z ��|}||��s|jjj�:|j� |j|jd���dS)NrT)rI�refresh) rDrB�advancerErH�wait�live� is_startedrI�update)rLrDrSrE�last_completedrTrIs rN�runz_TrackThread.runPs����,���-�'���*� ����y�~���$�}�%�%� +�$�-�*<�*G� +���I���*�*�����^�!;�<�<�<�!*�� �$�}�%�%� +�$�-�*<�*G� +� � ���T�\�T�^�T��R�R�R�R�RrOc�.�|���|S�N��start�rLs rN� __enter__z_TrackThread.__enter__^��� � � � � � �� rO�exc_type�exc_val�exc_tbc�`�|j���|���dSr[)rH�set�join�rLrarbrcs rN�__exit__z_TrackThread.__exit__bs$�� � � � ���� � � � � � � � rO�rPN)rPrA)�__name__� __module__� __qualname__�__doc__�floatrKrYr_r r$� BaseExceptionrrh� __classcell__�rMs@rNrArADs��������3�3�&��&�h�&�u�&�&�&�&�&�&� S� S� S� S�������4� �.�/���-�(����'� � � �������rOrA� Working...TF� �bar.back� bar.complete� bar.finished� bar.pulse皙�����?�sequence� description�totalrI� auto_refresh�console� transient�get_time�refresh_per_second�style�complete_style�finished_style� pulse_stylerE�disable� show_speedrPc #�XK�|rtd��gng}|�t| | | | ���t|���t d���f��t ||||||pd|d��}|5|�||||| ���Ed {V��d d d ��d S#1swxYwYd S) a=Track progress by iterating over a sequence. Args: sequence (Iterable[ProgressType]): A sequence (must support "len") you wish to iterate over. description (str, optional): Description of task show next to progress bar. Defaults to "Working". total: (float, optional): Total number of steps. Default is len(sequence). completed (int, optional): Number of steps completed so far. Defaults to 0. auto_refresh (bool, optional): Automatic refresh, disable to force a refresh after each iteration. Default is True. transient: (bool, optional): Clear the progress on exit. Defaults to False. console (Console, optional): Console to write to. Default creates internal Console instance. refresh_per_second (float): Number of times per second to refresh the progress information. Defaults to 10. style (StyleType, optional): Style for the bar background. Defaults to "bar.back". complete_style (StyleType, optional): Style for the completed bar. Defaults to "bar.complete". finished_style (StyleType, optional): Style for a finished bar. Defaults to "bar.finished". pulse_style (StyleType, optional): Style for pulsing bars. Defaults to "bar.pulse". update_period (float, optional): Minimum time (in seconds) between calls to update(). Defaults to 0.1. disable (bool, optional): Disable display of progress. show_speed (bool, optional): Show speed if total isn't known. Defaults to True. Returns: Iterable[ProgressType]: An iterable of the values in the sequence. �([progress.description]{task.description}�r�r�r�r�)r�T)�elapsed_when_finishedrs�r|r}r~rr�r�)r{rIrzrEN)� TextColumn�extend� BarColumn�TaskProgressColumn�TimeRemainingColumnrC�track)ryrzr{rIr|r}r~rr�r�r�r�r�rEr�r��columnsrBs rNr�r�lsg����TEP�W��>� ?� ?�@�@�UW� � �N�N� ��-�-�'�  � � � �*� 5� 5� 5� �d� ;� ;� ;� � � � �� �!����-�3������H� � � ��>�>� ���#�'� "� � � � � � � � � � � � � � � � � � � � � ���� � � � � � s�1!B�B#�&B#c ���eZdZdZ d,dedddededd f d �Zd-d �Zd e e e d e e de e dd fd�Z defd�Zdefd�Zedefd���Zdefd�Zdefd�Zedefd���Zedefd���Zdefd�Zdefd�Zdefd�Zd.dedefd�Zdeeee ffd�Z!d.dedefd�Z"d.d ede#efd!�Z$d/d"�Z%d0d$ed%edefd&�Z&defd'�Z'd(e(defd)�Z)d*e*e(dd fd+�Z+d S)1�_Readerz9A reader that tracks progress while it's being read from.T�handlerBrC�task� close_handlerPNc�L�||_||_||_||_d|_dS�NF)r�rBr�r��_closed)rLr�rBr�r�s rNrKz_Reader.__init__�s,���� � �� ��� �(����� � � rOc�8�|j���|Sr[)r�r_r^s rNr_z_Reader.__enter__�s�� � ������� rOrarbrcc�.�|���dSr[)�closergs rNrhz_Reader.__exit__�s�� � � � � � � � rOc��|Sr[�r^s rN�__iter__z_Reader.__iter__�s��� rOc��t|j��}|j�|jt |�����|S�N�rS)�nextr�rBrSr��len)rL�lines rN�__next__z_Reader.__next__�s9���D�K� � �� � ���d�i��T����;�;�;�� rOc��|jSr[)r�r^s rN�closedz_Reader.closed�s ���|�rOc�4�|j���Sr[)r��filenor^s rNr�z_Reader.fileno�����{�!�!�#�#�#rOc�4�|j���Sr[)r��isattyr^s rNr�z_Reader.isatty�r�rOc��|jjSr[)r��moder^s rNr�z _Reader.mode�� ���{��rOc��|jjSr[)r��namer^s rNr�z _Reader.name�r�rOc�4�|j���Sr[)r��readabler^s rNr�z_Reader.readable�����{�#�#�%�%�%rOc�4�|j���Sr[)r��seekabler^s rNr�z_Reader.seekable�r�rOc��dSr�r�r^s rN�writablez_Reader.writable�s���urO������sizec��|j�|��}|j�|jt |�����|Sr�)r��readrBrSr�r�)rLr��blocks rNr�z _Reader.read�s?��� � � ��&�&�� � ���d�i��U����<�<�<�� rO�bc�|�|j�|��}|j�|j|���|Sr�)r��readintorBrSr�)rLr��ns rNr�z_Reader.readinto�s9�� �K� � �� #� #�� � ���d�i���3�3�3��rOc��|j�|��}|j�|jt |�����|Sr�)r��readlinerBrSr�r�)rLr�r�s rNr�z_Reader.readlines?���{�#�#�D�)�)�� � ���d�i��T����;�;�;�� rO�hintc ��|j�|��}|j�|jt t t|�������|Sr�)r�� readlinesrBrSr��sum�mapr�)rLr��liness rNr�z_Reader.readlinessI��� �%�%�d�+�+�� � ���d�i��S��e�_�_�1E�1E��F�F�F�� rOc�T�|jr|j���d|_dS)NT)r�r�r�r�r^s rNr�z _Reader.close s,�� � � � �K� � � � � ��� � � rOr�offset�whencec�~�|j�||��}|j�|j|���|S)N�rI)r��seekrBrWr�)rLr�r��poss rNr�z _Reader.seeks;���k���v�v�.�.�� � ���T�Y�#��6�6�6�� rOc�4�|j���Sr[)r��tellr^s rNr�z _Reader.tells���{���!�!�!rO�sc� �td���)N�write�r )rLr�s rNr�z _Reader.writes��"�7�+�+�+rOr�c� �td���)N� writelinesr�)rLr�s rNr�z_Reader.writeliness��"�<�0�0�0rO)T)rPr�)r�ri)r),rjrkrlrmrr=�boolrKr_r r$rorrhr��bytesr��propertyr��intr�r��strr�r�r�r�r�r�r&� bytearray� memoryviewr r�r�rr�r�r�r�rr�rr�r�rOrNr�r��sA������C�C�"� � �� �� �� � � � � � � � �������4� �.�/���-�(����'� � � �����(������%����� �������X��$��$�$�$�$�$��$�$�$�$�� �c� � � ��X� �� �c� � � ��X� �&�$�&�&�&�&�&�$�&�&�&�&��$���������e����� �%� �:�t� ;�<����� ��S��%����� ��c��4��;����� ���� ��3����C����� "�c�"�"�"�"�,�s�,�s�,�,�,�,�1��� �1�$�1�1�1�1�1�1rOr�c�z�eZdZdZdddeddfd�Zdefd�Zd eee d ee d ee ddfd �Z dS) � _ReadContextzEA utility class to handle a context for both a reader and a progress.rBrC�readerrPNc�"�||_||_dSr[)rBr�)rLrBr�s rNrKz_ReadContext.__init__"s�� �� � �� � � rOc�f�|j���|j���Sr[)rBr]r�r_r^s rNr_z_ReadContext.__enter__&s*�� � �������{�$�$�&�&�&rOrarbrcc�p�|j���|j�|||��dSr[)rB�stopr�rhrgs rNrhz_ReadContext.__exit__*s8�� � ������ � ���X�w��7�7�7�7�7rO) rjrkrlrmr?rKr_r r$rorrhr�rOrNr�r�s�������O�O�!��!�R�!�D�!�!�!�!�'�2�'�'�'�'�8��4� �.�/�8��-�(�8���'� 8� � 8�8�8�8�8�8rOr�� Reading...) rzr|r}r~rr�r�r�r�r�r��filec �"�|rtd��gng} | �t|| | | ���t��t ��f��t | |||||pd| d��}|�|||���}t||��S)aRead bytes from a file while tracking progress. Args: file (Union[str, PathLike[str], BinaryIO]): The path to the file to read, or a file-like object in binary mode. total (int): Total number of bytes to read. description (str, optional): Description of task show next to progress bar. Defaults to "Reading". auto_refresh (bool, optional): Automatic refresh, disable to force a refresh after each iteration. Default is True. transient: (bool, optional): Clear the progress on exit. Defaults to False. console (Console, optional): Console to write to. Default creates internal Console instance. refresh_per_second (float): Number of times per second to refresh the progress information. Defaults to 10. style (StyleType, optional): Style for the bar background. Defaults to "bar.back". complete_style (StyleType, optional): Style for the completed bar. Defaults to "bar.complete". finished_style (StyleType, optional): Style for a finished bar. Defaults to "bar.finished". pulse_style (StyleType, optional): Style for pulsing bars. Defaults to "bar.pulse". disable (bool, optional): Disable display of progress. Returns: ContextManager[BinaryIO]: A context manager yielding a progress reader. r�r�rsr�)r{rz)r�r�r��DownloadColumnr�rC� wrap_filer�)r�r{rzr|r}r~rr�r�r�r�r�r�r�rBr�s rNr�r�4s���JEP�W��>� ?� ?�@�@�UW� � �N�N� ��-�-�'�  � � � � � � � !� !� � � � �� �!����-�3������H�� � ��E�{� � K� K�F� ��&� )� )�)rOr�) r{rzr|r}r~rr�r�r�r�r�r�� PathLike[str]r��rt�r� buffering�encoding�errors�newlinec ��dSr[r��r�r�r�r�r�r�r{rzr|r}r~rr�r�r�r�r�r�s rN�openr�u� ��, �DrO�rbc ��dSr[r�r�s rNr�r��r�rOc �,�|rtd��gng}|�t| |||���t��t ��f��t ||| | | | pd|d��}|�||||||||���}t||��S)a�Read bytes from a file while tracking progress. Args: path (Union[str, PathLike[str], BinaryIO]): The path to the file to read, or a file-like object in binary mode. mode (str): The mode to use to open the file. Only supports "r", "rb" or "rt". buffering (int): The buffering strategy to use, see :func:`io.open`. encoding (str, optional): The encoding to use when reading in text mode, see :func:`io.open`. errors (str, optional): The error handling strategy for decoding errors, see :func:`io.open`. newline (str, optional): The strategy for handling newlines in text mode, see :func:`io.open` total: (int, optional): Total number of bytes to read. Must be provided if reading from a file handle. Default for a path is os.stat(file).st_size. description (str, optional): Description of task show next to progress bar. Defaults to "Reading". auto_refresh (bool, optional): Automatic refresh, disable to force a refresh after each iteration. Default is True. transient: (bool, optional): Clear the progress on exit. Defaults to False. console (Console, optional): Console to write to. Default creates internal Console instance. refresh_per_second (float): Number of times per second to refresh the progress information. Defaults to 10. style (StyleType, optional): Style for the bar background. Defaults to "bar.back". complete_style (StyleType, optional): Style for the completed bar. Defaults to "bar.complete". finished_style (StyleType, optional): Style for a finished bar. Defaults to "bar.finished". pulse_style (StyleType, optional): Style for pulsing bars. Defaults to "bar.pulse". disable (bool, optional): Disable display of progress. encoding (str, optional): The encoding to use when reading in text mode. Returns: ContextManager[BinaryIO]: A context manager yielding a progress reader. r�r�rsr�)r�r�r�r�r�r{rz)r�r�r�r�r�rCr�r�)r�r�r�r�r�r�r{rzr|r}r~rr�r�r�r�r�r�r�rBr�s rNr�r��s���bEP�W��>� ?� ?�@�@�UW� � �N�N� ��-�-�'�  � � � � � � � !� !� � � � �� �!����-�3������H��]�]� � �������� � �F� ��&� )� )�)rOc��eZdZUdZdZeeed<d deeddfd�Z defd�Z dd de fd �Z e dd de fd ���ZdS) �ProgressColumnz3Base class for a widget to use in progress display.N� max_refresh� table_columnrPc�0�||_i|_d|_dSr[)� _table_column�_renderable_cache� _update_time)rLr�s rNrKzProgressColumn.__init__s ��)���MO���-1����rOc�,�|jp t��S)z.Get a table column, used to build tasks table.)rr9r^s rN�get_table_columnzProgressColumn.get_table_columns���!�-�V�X�X�-rOr��Taskc��|���}|j�>|js7 |j|j\}}||jz|kr|Sn#t $rYnwxYw|�|��}||f|j|j<|S)aCalled by the Progress object to return a renderable for the given task. Args: task (Task): An object containing information regarding the task. Returns: RenderableType: Anything renderable (including str). )rr�rIr�id�KeyError�render)rLr�� current_time� timestamp� renderables rN�__call__zProgressColumn.__call__ s����}�}��� � � � '��� '� &�(,�(>�t�w�(G�%� �:��t�/�/�,�>�>�%�%�?��� � � ��� ���� �[�[��&�&� �+7��*D���t�w�'��s�A � A�Ac��dS)z"Should return a renderable object.Nr��rLr�s rNr zProgressColumn.render"s���rOr[)rjrkrlrmr�r rn�__annotations__r9rKrr2rrr r�rOrNr�r��s��������=�=�#'�K��%��'�'�'�2�2�X�f�%5�2��2�2�2�2� .�&�.�.�.�.��V�������.�1�6�1�n�1�1�1��^�1�1�1rOr�c�R��eZdZdZ d dd�dedeef�fd�Zdd d efd �Z�xZ S) �RenderableColumnz�A column to insert an arbitrary column. Args: renderable (RenderableType, optional): Any renderable. Defaults to empty string. �N�r�r r�c�Z��||_t���|���dS�Nr)r rJrK)rLr r�rMs �rNrKzRenderableColumn.__init__.s-���%��� �����l��3�3�3�3�3rOr�rrPc��|jSr[)r rs rNr zRenderableColumn.render4s ����rO)r) rjrkrlrmr2r r9rKr rprqs@rNrr's����������,.�4�SW�4�4�4�(�4�@H��@P�4�4�4�4�4�4� �6��n��������rOrc ���eZdZdZ ddedeed ed ed ee f �fd � Z dded eed eddfd�Z ddde fd�Z �xZS)� SpinnerColumna�A column with a 'spinner' animation. Args: spinner_name (str, optional): Name of spinner animation. Defaults to "dots". style (StyleType, optional): Style of spinner. Defaults to "progress.spinner". speed (float, optional): Speed factor of spinner. Defaults to 1.0. finished_text (TextType, optional): Text used when task is finished. Defaults to " ". �dots�progress.spinner��?� N� spinner_namer��speed� finished_textr�c����t|||���|_t|t��rt j|��n||_t���|���dS)N�r�r r) r7�spinner� isinstancer�r;� from_markupr!rJrK)rLrr�r r!r�rMs �rNrKzSpinnerColumn.__init__Bsm����|�5��F�F�F�� ��-��-�-� �D� �]� +� +� +�� �� �����l��3�3�3�3�3rO� spinner_stylerPc�4�t|||���|_dS)a-Set a new spinner. Args: spinner_name (str): Spinner name, see python -m rich.spinner. spinner_style (Optional[StyleType], optional): Spinner style. Defaults to "progress.spinner". speed (float, optional): Speed factor of spinner. Defaults to 1.0. r#N)r7r$)rLrr'r s rN� set_spinnerzSpinnerColumn.set_spinnerRs���|�=��N�N�N�� � � rOr�rc�z�|jr|jn+|j�|�����}|Sr[)�finishedr!r$r r)rLr��texts rNr zSpinnerColumn.renderas=���}� 6�D� � ���$�$�T�]�]�_�_�5�5� � � rO)rrrrN)rr)rjrkrlrmr�r r8rnr<r9rKr)r2r rprqs@rNrr8s���������#�%7��"%�)-� 4�4��4�� �"�4�� 4�  � 4� �v�&� 4�4�4�4�4�4�&.@�� O� O�� O� � �*� O�� O� � O� O� O� O��6��n��������rOrc�t��eZdZdZ ddededed ed ee d ee d df�fd � Z ddd e fd�Z �xZS)r�zA column containing text.�none�leftTN� text_formatr��justify�markup� highlighterr�rPc���||_||_||_||_||_t ���|ptd������dS)NT��no_wrapr)r0r1r�r2r3rJrKr9)rLr0r�r1r2r3r�rMs �rNrKzTextColumn.__init__ms[���'���&-�� ��� ��� �&��� �����l�&J�f�T�6J�6J�6J��K�K�K�K�KrOr�rc��|j�|���}|jr"tj||j|j���}nt||j|j���}|jr|j�|��|S�N�r�)r�r1) r0�formatr2r;r&r�r1r3� highlight)rLr��_textr,s rNr zTextColumn.render}s���� �'�'�T�'�2�2�� �;� G��#�E���T�\�R�R�R�D�D���T�Z���F�F�F�D� � � -� � � &� &�t� ,� ,� ,�� rO)r.r/TNN)rjrkrlrmr�r8r1r�r r3r9rKr;r rprqs@rNr�r�js��������#�#� "�!'��-1�)-�L�L��L��L�� L� � L� �k�*� L��v�&�L� �L�L�L�L�L�L� �6��d��������rOr�c�v��eZdZdZ ddeed ed ed ed ed eeddf�fd� Zddde fd�Z �xZ S)r�aRenders a visual progress bar. Args: bar_width (Optional[int], optional): Width of bar or None for full width. Defaults to 40. style (StyleType, optional): Style for the bar background. Defaults to "bar.back". complete_style (StyleType, optional): Style for the completed bar. Defaults to "bar.complete". finished_style (StyleType, optional): Style for a finished bar. Defaults to "bar.finished". pulse_style (StyleType, optional): Style for pulsing bars. Defaults to "bar.pulse". �(rtrurvrwN� bar_widthr�r�r�r�r�rPc���||_||_||_||_||_t ���|���dSr)r?r�r�r�r�rJrK)rLr?r�r�r�r�r�rMs �rNrKzBarColumn.__init__�sL���#����� �,���,���&��� �����l��3�3�3�3�3rOr�rc � �t|j�td|j��ndtd|j��|j�dntd|j��|j |���|j|j|j |j �� � S)z&Gets a progress bar widget for a task.Nrr,) r{rI�width�pulse�animation_timer�r�r�r�) r6r{�maxrIr?�startedrr�r�r�r�rs rNr zBarColumn.render�s����(,� �(>�#�a���$�$�$�D��!�T�^�,�,��.�0�$�$�c�!�T�^�6L�6L��l�"��=�=�?�?��*��.��.��(�  �  �  � rO)r>rtrurvrwN) rjrkrlrmr r�r8r9rKr6r rprqs@rNr�r��s����������$&�%�$2�$2�!,�)-�4�4��C�=�4��4�"� 4� "� 4� � 4��v�&�4� �4�4�4�4�4�4�  �6�  �k�  �  �  �  �  �  �  �  rOr�c�"�eZdZdZdddefd�ZdS)�TimeElapsedColumnzRenders time elapsed.r�rrPc���|jr|jn|j}|�tdd���St t dt |�������}tt|��d���S)zShow time elapsed.N�-:--:--�progress.elapsed�r�r)�seconds)r+� finished_time�elapsedr;r rEr�r�)rLr�rO�deltas rNr zTimeElapsedColumn.render�sk��(,� �G�$�$�$�4�<�� �?�� �);�<�<�<� <��#�a��W���"6�"6�7�7�7���C��J�J�&8�9�9�9�9rON�rjrkrlrmr;r r�rOrNrHrH�s<��������:�6�:�d�:�:�:�:�:�:rOrHc���eZdZdZ dd ed ed ed ed edee dee deddf�fd� Z e dee defd���Zdddefd�Z�xZS)r�aShow task progress as a percentage. Args: text_format (str, optional): Format for percentage display. Defaults to "[progress.percentage]{task.percentage:>3.0f}%". text_format_no_percentage (str, optional): Format if percentage is unknown. Defaults to "". style (StyleType, optional): Style of output. Defaults to "none". justify (JustifyMethod, optional): Text justification. Defaults to "left". markup (bool, optional): Enable markup. Defaults to True. highlighter (Optional[Highlighter], optional): Highlighter to apply to output. Defaults to None. table_column (Optional[Column], optional): Table Column to use. Defaults to None. show_speed (bool, optional): Show speed if total is unknown. Defaults to False. �-[progress.percentage]{task.percentage:>3.0f}%rr.r/TNFr0�text_format_no_percentager�r1r2r3r�r�rPc �r��||_||_t���||||||���dS)N)r0r�r1r2r3r�)rTr�rJrK) rLr0rTr�r1r2r3r�r�rMs �rNrKzTaskProgressColumn.__init__�sR���*C��&�$��� �����#����#�%� � � � � � rOr c��|�tdd���Stjt|��gd�d��\}}||z }t|d�|�d�d���S) z�Render the speed in iterations per second. Args: task (Task): A Task object. Returns: Text: Text object containing the task speed. Nrzprogress.percentagerL)ru×10³u×10⁶u×10⁹u×10¹²��z.1fz it/s)r;r-�pick_unit_and_suffixr�)�clsr �unit�suffix� data_speeds rN� render_speedzTaskProgressColumn.render_speed�sx�� �=���"7�8�8�8� 8��4� ��J�J� <� <� <� � � � ��f� �T�\� ��z�4�4�v�4�4�4�<Q�R�R�R�RrOr�rc��|j�(|jr!|�|jp|j��S|j�|jn|j}|�|���}|jr"tj ||j |j ���}nt||j |j ���}|j r|j �|��|Sr8)r{r�r]�finished_speedr rTr0r:r2r;r&r�r1r3r;)rLr�r0r<r,s rNr zTaskProgressColumn.render�s��� �:� �$�/� ��$�$�T�%8�%F�D�J�G�G� G�.2�j�.@�D� *� *�d�FV� ��"�"��"�-�-�� �;� G��#�E���T�\�R�R�R�D�D���T�Z���F�F�F�D� � � -� � � &� &�t� ,� ,� ,�� rO)rSrr.r/TNNF)rjrkrlrmr�r8r1r�r r3r9rK� classmethodrnr;r]r rprqs@rNr�r��s#������� � �K�)+�!�!'��-1�)-� � � �� �$'� ��  � �  � �  ��k�*� ��v�&� �� � � � � � � � �,�S��%��S�T�S�S�S��[�S�& �6� �d� � � � � � � � rOr�c�X��eZdZdZdZ d dededeef�fd� Zd d d e fd �Z �xZ S)r�aRenders estimated time remaining. Args: compact (bool, optional): Render MM:SS when time remaining is less than an hour. Defaults to False. elapsed_when_finished (bool, optional): Render time elapsed when the task is finished. Defaults to False. ��?FN�compactr�r�c�h��||_||_t���|���dSr)rcr�rJrK)rLrcr�r�rMs �rNrKzTimeRemainingColumn.__init__s5��� �� �%:��"� �����l��3�3�3�3�3rOr�rrPc�t�|jr|jr |j}d}n |j}d}|j�t d|���S|�t |jrdnd|���Stt|��d��\}}t|d��\}}|jr |s |d �d |d ��}n |d �d |d �d |d ��}t ||���S) zShow time remaining.rKzprogress.remainingNrrLz--:--rJ�<�02d�:�d) r�r+rN�time_remainingr{r;rc�divmodr�)rLr�� task_timer��minutesrM�hours� formatteds rNr zTimeRemainingColumn.renders�� � %� )�$�-� )��*�I�&�E�E��+�I�(�E� �:� ���%�(�(�(� (� � ��4�<�>���Y�e�L�L�L� L�"�#�i�.�.�"�5�5�������,�,���w� �<� A�� A�"�6�6�6��6�6�6�I�I� �@�@�@�W�@�@�@�7�@�@�@�I��I�U�+�+�+�+rO)FFN) rjrkrlrmr�r�r r9rKr;r rprqs@rNr�r�s�����������K��&+�)-� 4�4��4� $�4��v�&� 4�4�4�4�4�4�,�6�,�d�,�,�,�,�,�,�,�,rOr�c�"�eZdZdZdddefd�ZdS)�FileSizeColumnzRenders completed filesize.r�rrPc�p�tjt|j����}t |d���S)�Show data completed.zprogress.filesizerL)r-�decimalr�rIr;�rLr�� data_sizes rNr zFileSizeColumn.render9s0���$�S���%8�%8�9�9� ��I�%8�9�9�9�9rONrQr�rOrNrqrq6s<������%�%�:�6�:�d�:�:�:�:�:�:rOrqc�"�eZdZdZdddefd�ZdS)�TotalFileSizeColumnzRenders total filesize.r�rrPc��|j�&tjt|j����nd}t |d���S)rsNrzprogress.filesize.totalrL)r{r-rtr�r;rus rNr zTotalFileSizeColumn.renderBs;��9=��9O�H�$�S���_�_�5�5�5�UW� ��I�%>�?�?�?�?rONrQr�rOrNrxrx?sD������!�!�@�6�@�d�@�@�@�@�@�@rOrxc�J��eZdZdZd dedeef�fd� Zddd efd �Z �xZ S) �MofNCompleteColumnaHRenders completed count/total, e.g. ' 10/1000'. Best for bounded tasks with int quantities. Space pads the completed count so that progress length does not change as task progresses past powers of 10. Args: separator (str, optional): Text to separate completed and total values. Defaults to "/". �/N� separatorr�c�Z��||_t���|���dSr)r}rJrK)rLr}r�rMs �rNrKzMofNCompleteColumn.__init__Ts+���"��� �����l��3�3�3�3�3rOr�rrPc���t|j��}|j�t|j��nd}tt |����}t ||�d��|j�|��d���S)zShow completed/total.N�?ri�progress.downloadrL)r�rIr{r�r�r;r})rLr�rIr{� total_widths rNr zMofNCompleteColumn.renderXst�����'�'� �#'�:�#9��D�J����s���#�e�*�*�o�o� ���+� @� @� @� @��� @�� @� @�%� � � � rO)r|N) rjrkrlrmr�r r9rKr;r rprqs@rNr{r{Hs�������� � �4�4�#�4�8�F�;K�4�4�4�4�4�4� �6� �d� � � � � � � � rOr{c�P��eZdZdZ d dedeeddf�fd� Zdd defd �Z �xZ S) r�z�Renders file size downloaded and total, e.g. '0.5/2.3 GB'. Args: binary_units (bool, optional): Use binary units, KiB, MiB etc. Defaults to False. FN� binary_unitsr�rPc�Z��||_t���|���dSr)r�rJrK)rLr�r�rMs �rNrKzDownloadColumn.__init__js.���)��� �����l��3�3�3�3�3rOr�rc��t|j��}|j�t|j��n|}|jrt j|gd�d��\}}nt j|gd�d��\}}|dkrdnd}||z }|d|�d ��}|j�"t|j��} | |z } | d|�d ��} nd } |�d | �d |��} t | d ���} | S)z.Calculate common unit for completed and total.N) r��KiB�MiB�GiB�TiB�PiB�EiB�ZiB�YiBi) r��kB�MB�GB�TB�PB�EB�ZB�YBrWr,rz,.�fr�r|rr�rL)r�rIr{r�r-rXr;)rLr�rI� unit_and_suffix_calculation_baserZr[� precision�completed_ratio� completed_strr{� total_ratio� total_str�download_status� download_texts rNr zDownloadColumn.renderps+�����'�'� � $�z�5�C�� �O�O�O�9� )� � � �#�8�0�Q�Q�Q����L�D�&�&� $�8�0�I�I�I����L�D�&� ����A�A�� �#�d�*��*�;�i�;�;�;�;� � �:� !��� �O�O�E��$�,�K�&�7�)�7�7�7�7�I�I��I�*�A�A�Y�A�A��A�A���_�4G�H�H�H� ��rO)FN) rjrkrlrmr�r r9rKr;r rprqs@rNr�r�cs����������LP�4�4� �4�8@��8H�4� �4�4�4�4�4�4� !�6�!�d�!�!�!�!�!�!�!�!rOr�c�"�eZdZdZdddefd�ZdS)�TransferSpeedColumnz&Renders human readable transfer speed.r�rrPc��|jp|j}|�tdd���Stjt |����}t|�d�d���S)zShow data transfer speed.Nr�zprogress.data.speedrLz/s)r_r r;r-rtr�)rLr�r r\s rNr zTransferSpeedColumn.render�s]���#�1�t�z�� �=���#8�9�9�9� 9��%�c�%�j�j�1�1� ��z�%�%�%�-B�C�C�C�CrONrQr�rOrNr�r��sD������0�0�D�6�D�d�D�D�D�D�D�DrOr�c�*�eZdZUdZeed< eed<dS)�ProgressSamplez$Sample of progress for a given time.r rIN)rjrkrlrmrnrr�rOrNr�r��s3�������.�.����������$�$rOr�c��eZdZUdZeed< eed< eeed< eed< e ed< dZ eeed< d Z e ed < e e� ��Zeeefed < e dd d ���Zeeed< e dd d ���Zeeed< dZeeed< e d�d d ���Zeeed<e d e���Zeed< defd�Zede fd���Zedeefd���Zedeefd���Zede fd���Zedefd���Z edeefd���Z!edeefd���Z"d!d �Z#dS)"rz�Information regarding a progress task. This object should be considered read-only outside of the :class:`~Progress` class. rrzr{rI� _get_timeNrNT�visible)�default_factory�fieldsF)�default�init�repr� start_time� stop_timer_c�"�td���S)NrW)�maxlenrr�rOrN�<lambda>z Task.<lambda>�s���T� 2� 2� 2�rO)r�r�r�� _progress)r�r��_lockrPc�*�|���S)z(float: Get the current time, in seconds.)r�r^s rNrz Task.get_time�s���~�~���rOc��|jduS)z#bool: Check if the task as started.N)r�r^s rNrFz Task.started�s����d�*�*rOc�2�|j�dS|j|jz S)zPOptional[float]: Get the number of steps remaining, if a non-None total was set.N�r{rIr^s rN� remainingzTask.remaining�s �� �:� ��4��z�D�N�*�*rOc�x�|j�dS|j�|j|jz S|���|jz S)z]Optional[float]: Time elapsed since task was started, or ``None`` if the task hasn't started.N)r�r�rr^s rNrOz Task.elapsed�s=�� �?� "��4� �>� %��>�D�O�3� 3��}�}�����0�0rOc��|jduS)zCheck if the task has finished.N)rNr^s rNr+z Task.finished�s���!��-�-rOc�x�|jsdS|j|jz dz}tdtd|����}|S)zOfloat: Get progress of task as a percentage. If a None total was set, returns 0��Y@)r{rI�minrE)rLrIs rN� percentagezTask.percentage�sE���z� ��3��^�d�j�0�E�9� ���s�3� �2�2�3�3� ��rOc�^�|j�dS|j5|j}|s ddd��dS|dj|djz }|dkr ddd��dSt |��}t |��t d�|D����}||z }|cddd��S#1swxYwYdS)z=Optional[float]: Get the estimated speed in steps per second.Nr�rc3�$K�|] }|jV�� dSr[r�)�.0�samples rN� <genexpr>zTask.speed.<locals>.<genexpr>s%����!O�!O�v�&�"2�!O�!O�!O�!O�!O�!OrO)r�r�r�r �iterr�r�)rLrB� total_time� iter_progress�total_completedr s rNr z Task.speedsI�� �?� "��4� �Z� � ��~�H�� �� � � � � � � � �"�"��/�(�1�+�2G�G�J��Q���� � � � � � � � �!��N�N�M� �� � � �!�!O�!O��!O�!O�!O�O�O�O�#�j�0�E�� � � � � � � � � � � � ���� � � � � � s� B"�"B"�=B"�"B&�)B&c�h�|jrdS|j}|sdS|j}|�dSt||z ��}|S)zJOptional[float]: Get estimated time to completion, or ``None`` if no data.r�N)r+r r�r )rLr r��estimates rNrjzTask.time_remainingsP�� �=� ��3�� ��� ��4��N� � � ��4�� �E�)�*�*���rOc�T�|j���d|_d|_dS)zReset progress.N)r��clearrNr_r^s rN�_resetz Task._reset s,�� �������!���"����rOri)$rjrkrlrmr=rr�r rn�GetTimeCallablerNr�r�r�dictr�rrr�r�r_r�rr�rr�rr�rFr�rOr+r�r rjr�r�rOrNrr�s���������� �J�J�J�G�����'� �E�?����>�����*�����+�%)�M�8�E�?�)�)�)�(��G�T����J�"�U�4�8�8�8�F�D��c��N�8�8�8�?�"'�%��5�u�"M�"M�"M�J����M�M�M�N�!&��t�%�e�!L�!L�!L�I�x���L�L�L�N�&*�N�H�U�O�*�*�*�>�',�u�2�2��U�(�(�(�I�u�^�$�����5�e�U�;�;�;�E�5�;�;�;�� �%� � � � ��+��+�+�+��X�+��+�8�E�?�+�+�+��X�+� �1��%��1�1�1��X�1��.�$�.�.�.��X�.���E�����X����x�������X��"� ���� � � ��X� �#�#�#�#�#�#rOrc�j�eZdZdZddddddddddd� deeefd eed e d e d e d e de de dee de de ddfd�Z e deedffd���Zedefd���Zedeefd���Zedeefd���Zede fd���ZdTd�ZdTd�Zdefd�Zdeeedeed eeddfd!�Z dUd%ee e!e"e!fd&ee d'e#d(eed)ed*e de e!fd+�Z$ dVdd,d-�d.e%d&ee#d(eed)ede%f d/�Z&e'j( dWddd,d1�d.eed2e)fd3e*d4d5e#d6eed7eed8eed&ee#d(eed)ede%fd9���Z+e'j( dWddd,d1�d.eed2e)fd3ee*d:e*d;fd5e#d6eed7eed8eed&ee#d(eed)ede,fd<���Z+ dXddd,d1�d.eed2e)fd3ee*d4e*d;e*d:fd5e#d6eed7eed8eed&ee#d(eed)edee%e,ffd=�Z+d(eddfd>�Z-d(eddfd?�Z.ddddddd@�d(ed&ee d'ee dAee d)eedBee dCe dDe/ddfdE�Z0ddd"dddF�d(edGe d&ee d'e#dBee d)eedDe/ddfdH�Z1dYd(edAe ddfdJ�Z2dTdK�Z3de4fdL�Z5de e4fdM�Z6dNe ede7fdO�Z8de4fdP�Z9 dZd)edGe d&ee d'e#dBe dDe/defdR�Z:d(eddfdS�Z;dS)[rCa�Renders an auto-updating progress bar(s). Args: console (Console, optional): Optional Console instance. Defaults to an internal Console instance writing to stdout. auto_refresh (bool, optional): Enable auto refresh. If disabled, you will need to call `refresh()`. refresh_per_second (Optional[float], optional): Number of times per second to refresh the progress information or None to use default (10). Defaults to None. speed_estimate_period: (float, optional): Period (in seconds) used to calculate the speed estimate. Defaults to 30. transient: (bool, optional): Clear the progress on exit. 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. get_time: (Callable, optional): A callable that gets the current time, or None to use Console.get_time. Defaults to None. disable (bool, optional): Disable progress display. Defaults to False expand (bool, optional): Expand tasks table to fit width. Defaults to False. NTrsg>@F) r}r|r��speed_estimate_periodr~�redirect_stdout�redirect_stderrrr��expandr�r}r|r�r�r~r�r�rr�r�rPc ��|dks Jd���t��|_| p|���|_||_| |_| |_i|_td��|_ t|p t��||||||j ���|_ |p |jj|_|jj|_|jj|_dS)Nrzrefresh_per_second must be > 0)r}r|r�r~r�r��get_renderable)rr��get_default_columnsr�r�r�r��_tasksr=� _task_indexr5r.r�rUr}r�print�log) rLr}r|r�r�r~r�r�rr�r�r�s rNrKzProgress.__init__7s���"�A�%�%�%�'G�%�%�%��W�W�� ��<�$�":�":�"<�"<�� �%:��"��� ��� �*,�� �#)�!�9�9�����,�{�}�}�%�1��+�+��.� � � �� �!�9�D�L�$9�� ��\�'�� ��<�#����rO.c�p�td��t��t��t��fS)a�Get the default columns used for a new Progress instance: - a text column for the description (TextColumn) - the bar itself (BarColumn) - a text column showing completion percentage (TextColumn) - an estimated-time-remaining column (TimeRemainingColumn) If the Progress instance is created without passing a columns argument, the default columns defined here will be used. You can also create a Progress instance using custom columns before and/or after the defaults, as in this example: progress = Progress( SpinnerColumn(), *Progress.get_default_columns(), "Elapsed:", TimeElapsedColumn(), ) This code shows the creation of a Progress display, containing a spinner to the left, the default columns, and a labeled elapsed time column. r�)r�r�r�r�)rYs rNr�zProgress.get_default_columns[s3��2 �A� B� B� �K�K� � � � � !� !�  � rOc��|jjSr[)rUr}r^s rNr}zProgress.consolezs ���y� � rOc��|j5t|j�����cddd��S#1swxYwYdS)zGet a list of Task instances.N)r��listr��valuesr^s rN�taskszProgress.tasks~s����Z� .� .��� �*�*�,�,�-�-� .� .� .� .� .� .� .� .� .� .� .� .���� .� .� .� .� .� .� �&;�?�?c��|j5t|j�����cddd��S#1swxYwYdS)zA list of task IDs.N)r�r�r��keysr^s rN�task_idszProgress.task_ids�s����Z� ,� ,��� �(�(�*�*�+�+� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,���� ,� ,� ,� ,� ,� ,r�c���|j5|js ddd��dStd�|j���D����cddd��S#1swxYwYdS)z'Check if all tasks have been completed.NTc3�$K�|] }|jV�� dSr[)r+)r�r�s rNr�z$Progress.finished.<locals>.<genexpr>�s$����F�F��t�}�F�F�F�F�F�FrO)r�r��allr�r^s rNr+zProgress.finished�s����Z� G� G��;� �� G� G� G� G� G� G� G� G��F�F���1C�1C�1E�1E�F�F�F�F�F� G� G� G� G� G� G� G� G� G� G� G� G���� G� G� G� G� G� Gs� A�/A�A�!Ac�N�|js|j�d���dSdS)zStart the progress display.T)rRN)r�rUr]r^s rNr]zProgress.start�s2���|� *� �I�O�O�D�O� )� )� )� )� )� *� *rOc��|j���|jjs'|jjs|j���dSdSdS)zStop the progress display.N)rUr�r}�is_interactive� is_jupyterr�r^s rNr�z Progress.stop�s[�� � �������|�*� !�4�<�3J� !� �L� � � � � � � � !� !� !� !rOc�.�|���|Sr[r\r^s rNr_zProgress.__enter__�r`rOrarbrcc�.�|���dSr[)r�rgs rNrhzProgress.__exit__�s�� � � � � � � � rOrrrrxryr{rIrDrzrEc#�K�|�tt|����pd}|�|�|||���}n|�|||���|jjrFt |||��5}|D]}|V�|xjdz c_� ddd��dS#1swxYwYdS|j} |j } |D]}|V�| |d��| ���dS)a�Track progress by iterating over a sequence. Args: sequence (Sequence[ProgressType]): A sequence of values you want to iterate over and track progress. total: (float, optional): Total number of steps. Default is len(sequence). completed (int, optional): Number of steps completed so far. Defaults to 0. task_id: (TaskID): Task to track. Default is new task. description: (str, optional): Description of task, if new task is created. update_period (float, optional): Minimum time (in seconds) between calls to update(). Defaults to 0.1. Returns: Iterable[ProgressType]: An iterable of values taken from the provided sequence. Nr�r,) rnr�add_taskrWrUr|rArIrSrR) rLryr{rIrDrzrE� track_thread�valuerSrRs rNr�zProgress.track�sb����, �=��+�h�/�/�0�0�8�D�E� �?��m�m�K�u� �m�R�R�G�G� �K�K��u� �K� B� B� B� �9� !� ��d�G�]�;�;� 0�|�%�0�0�E��K�K�K� �*�*�a�/�*�*�*�0� 0� 0� 0� 0� 0� 0� 0� 0� 0� 0� 0� 0���� 0� 0� 0� 0� 0� 0� �l�G��l�G�!� � ��� � � �����#�#�#��� � � � � � s�3B�B�"Br�)rDrzr�c� �d}|�|}n3|�1|j5|j|j}ddd��n #1swxYwY|�td���|�|�||���}n|�||���t |||d���S)ajTrack progress file reading from a binary file. Args: file (BinaryIO): A file-like object opened in binary mode. total (int, optional): Total number of bytes to read. This must be provided unless a task with a total is also given. task_id (TaskID): Task to track. Default is new task. description (str, optional): Description of task, if new task is created. Returns: BinaryIO: A readable file-like object in binary mode. Raises: ValueError: When no total value can be extracted from the arguments or the task. Nz?unable to get the total number of bytes, please specify 'total'�r{F�r�)r�r�r{� ValueErrorr�rWr�)rLr�r{rDrz� total_bytess rNr�zProgress.wrap_file�s���.(,� � � ��K�K� � ��� 9� 9�"�k�'�2�8� � 9� 9� 9� 9� 9� 9� 9� 9� 9� 9� 9���� 9� 9� 9� 9� � ��R��� � �?��m�m�K�{�m�C�C�G�G� �K�K��{�K� 3� 3� 3��t�T�7��?�?�?�?s �0�4�4r�)r{rDrzr�r�r�r�r�r�r�c��dSr[r�� rLr�r�r�r�r�r�r{rDrzs rNr�z Progress.open�� �� �rOr�r�c��dSr[r�r�s rNr�z Progress.openr�rOc�6�d�t|d�����} | dvrtd|�����|dk} | dkr#|dkrtjdt ��d }n!| d vr|d krtd ���|dkrd }|�t |��j}|�|�| |���}n|� ||���tj |d|���} t| ||d���} |dvrtj | |||| ���S| S)a#Track progress while reading from a binary file. Args: path (Union[str, PathLike[str]]): The path to the file to read. mode (str): The mode to use to open the file. Only supports "r", "rb" or "rt". buffering (int): The buffering strategy to use, see :func:`io.open`. encoding (str, optional): The encoding to use when reading in text mode, see :func:`io.open`. errors (str, optional): The error handling strategy for decoding errors, see :func:`io.open`. newline (str, optional): The strategy for handling newlines in text mode, see :func:`io.open`. total (int, optional): Total number of bytes to read. If none given, os.stat(path).st_size is used. task_id (TaskID): Task to track. Default is new task. description (str, optional): Description of task, if new task is created. Returns: BinaryIO: A readable file-like object in binary mode. Raises: ValueError: When an invalid mode is given. rF)�reverse)�brr�r�z invalid mode r,r�zaline buffering (buffering=1) isn't supported in binary mode, the default buffer size will be usedr�)r�r�rzcan't have unbuffered text I/ONr�r�)r�Tr�)r�r�)r�r�r��line_buffering)rf�sortedr��warnings�warn�RuntimeWarningr�st_sizer�rW�ior�r�� TextIOWrapper)rLr�r�r�r�r�r�r{rDrz�_moder�r�r�s rNr�z Progress.opensj��B����t�U�3�3�3�4�4�� �)� )� )��5�T�5�5�6�6� 6�#�a��� �D�=�=�Y�!�^�^� �M�s�� � � ��I�I� �k� !� !��A�~�~� �!A�B�B�B��a���� � �=���J�J�&�E� �?��m�m�K�u�m�=�=�G�G� �K�K��u�K� -� -� -����t�y�9�9�9�����w�T�B�B�B�� �;� � ��#��!���-� ��� �� rOc��|j5|j|}|j�|���|_ddd��dS#1swxYwYdS)z�Start a task. Starts a task (used when calculating elapsed time). You may need to call this manually, if you called ``add_task`` with ``start=False``. Args: task_id (TaskID): ID of task. N)r�r�r�r)rLrDr�s rN� start_taskzProgress.start_taskks����Z� 2� 2��;�w�'�D���&�"&�-�-�/�/��� 2� 2� 2� 2� 2� 2� 2� 2� 2� 2� 2� 2���� 2� 2� 2� 2� 2� 2s�.A�A� Ac��|j5|j|}|���}|j�||_||_ddd��dS#1swxYwYdS)z�Stop a task. This will freeze the elapsed time on the task. Args: task_id (TaskID): ID of task. N)r�r�rr�r�)rLrDr�r s rN� stop_taskzProgress.stop_taskys����Z� *� *��;�w�'�D��=�=�?�?�L���&�".���)�D�N�  *� *� *� *� *� *� *� *� *� *� *� *���� *� *� *� *� *� *s�7A � A�A)r{rIrSrzr�rRrSr�rRr�c ���|j5|j|} | j} |�&|| jkr|| _| ���|�| xj|z c_|�|| _|�|| _|�|| _| j�|��| j| z } |� ��} | |j z } | j }|j }|r.|dj | kr|��|r|dj | k�| dkr#|�t| | ����| j�#| j| jkr| j� | j| _ddd��n #1swxYwY|r|���dSdS)a�Update information associated with a task. Args: task_id (TaskID): Task id (returned by add_task). total (float, optional): Updates task.total if not None. completed (float, optional): Updates task.completed if not None. advance (float, optional): Add a value to task.completed if not None. description (str, optional): Change task description if not None. visible (bool, optional): Set visible flag if not None. refresh (bool): Force a refresh of progress information. Default is False. **fields (Any): Additional data fields required for rendering. Nr)r�r�rIr{r�rzr�r�rWrr�r��popleftr �appendr�rNrOrR)rLrDr{rIrSrzr�rRr�r��completed_start�update_completedr �old_sample_timer�r s rNrWzProgress.update�s���0�Z� 2� 2��;�w�'�D�"�n�O�� �U�d�j�%8�%8�"�� �� � � � � ��"����'�)����$�!*����&�#.�� ��"�&�� � �K� � �v� &� &� &�#�~��?� ��=�=�?�?�L�*�T�-G�G�O���I��'�G�� � �!� � 6�� H� H��� � � �� � �!� � 6�� H� H��!�#�#�� � �� �>N�!O�!O�P�P�P�� �&��N�d�j�0�0��&�.�%)�\��"�A 2� 2� 2� 2� 2� 2� 2� 2� 2� 2� 2���� 2� 2� 2� 2�D � � �L�L�N�N�N�N�N� � s�D=E�E�E)r]r{rIr�rzr]c �P�|���}|j5|j|} | ���|r|nd| _|�|| _|| _|�|| _|r|| _|�|| _ d| _ ddd��n #1swxYwY|� ��dS)a�Reset a task so completed is 0 and the clock is reset. Args: task_id (TaskID): ID of task. start (bool, optional): Start the task after reset. Defaults to True. total (float, optional): New total steps in task, or None to use current total. Defaults to None. completed (int, optional): Number of steps completed. Defaults to 0. visible (bool, optional): Enable display of the task. Defaults to True. description (str, optional): Change task description if not None. Defaults to None. **fields (str): Additional data fields required for rendering. N) rr�r�r�r�r{rIr�r�rzrNrR) rLrDr]r{rIr�rzr�r r�s rN�resetzProgress.reset�s���,�}�}��� � �Z� &� &��;�w�'�D� �K�K�M�M�M�.3�=�l�l��D�O�� �"�� �&�D�N��"�&�� �� %�$�� ��&�#.�� �!%�D� � &� &� &� &� &� &� &� &� &� &� &���� &� &� &� &� � � �����s�AB�B �B r,c�l�|���}|j5|j|}|j}|xj|z c_|j|z }||jz }|j}|j} |r.|dj|kr| ��|r|dj|k�t|��dkr| ��t|��dk�|� t||����|j �/|j|j kr|j �|j |_ |j|_ddd��dS#1swxYwYdS)z�Advance task by a number of steps. Args: task_id (TaskID): ID of task. advance (float): Number of steps to advance. Default is 1. rrWN)rr�r�rIr�r�r r r�rr�r{rNrOr r_) rLrDrSr r�rrrr�r s rNrSzProgress.advance�s����}�}��� � �Z� 1� 1��;�w�'�D�"�n�O� �N�N�g� %�N�N�#�~��?� �*�T�-G�G�O���I��'�G�� � �!� � 6�� H� H��� � � �� � �!� � 6�� H� H��i�.�.�4�'�'��� � � ��i�.�.�4�'�'� � � �^�L�:J�K�K� L� L� L�� �&��N�d�j�0�0��&�.�%)�\��"�&*�j��#�) 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1���� 1� 1� 1� 1� 1� 1s�DD)�)D-�0D-c�f�|js'|jjr|j���dSdSdS)z*Refresh (render) the progress information.N)r�rUrVrRr^s rNrRzProgress.refresh sF���|� �� � 4� � �I� � � � � � � � � � � rOc�<�t|����}|S)z*Get a renderable for the progress display.)r0�get_renderables)rLr s rNr�zProgress.get_renderables���D�0�0�2�2�3� ��rOc#�FK�|�|j��}|V�dS)z5Get a number of renderables for the progress display.N)�make_tasks_tabler�)rL�tables rNrzProgress.get_renderabless(�����%�%�d�j�1�1��� � � � � rOr�c���d�|jD��}tj|d|jd��}|D]$��jr|j�fd�|jD����%|S)z�Get a table to render the Progress display. Args: tasks (Iterable[Task]): An iterable of Task instances, one per row of the table. Returns: Table: A table instance. c3�K�|]O}t|t��rtd���n%|������V��PdS)Tr5N)r%r�r9r�copy)r��_columns rNr�z,Progress.make_tasks_table.<locals>.<genexpr>"sr���� � � ��g�s�+�+�7��t�$�$�$�$��-�-�/�/�4�4�6�6�  � � � � � rO)rr,)�paddingr�c3��K�|]:}t|t��r|�����n |���V��;dS)r9N)r%r�r:)r��columnr�s �rNr�z,Progress.make_tasks_table.<locals>.<genexpr>/sf������� #� *�&�#�6�6�.�F�M�M�t�M�4�4�4�!'����� �����rO)r�r:�gridr�r��add_row)rLr�� table_columnsrr�s @rNrzProgress.make_tasks_tables���� � �  �<�  � � � �� �M�6�$�+�N�N�N��� � �D��|� ��� ����� '+�l� ��� � ��� rOc�l�|j5|���cddd��S#1swxYwYdS)z+Makes the Progress class itself renderable.N)r�r�r^s rN�__rich__zProgress.__rich__:s}�� �Z� )� )��&�&�(�(� )� )� )� )� )� )� )� )� )� )� )� )���� )� )� )� )� )� )s �)�-�-r�c �n�|j5t|j||||||j|j���}||j|j<|r|�|j��|j}t t|j��dz��|_ddd��n #1swxYwY|���|S)aAdd a new 'task' to the Progress display. Args: description (str): A description of the task. start (bool, optional): Start the task immediately (to calculate elapsed time). If set to False, you will need to call `start` manually. Defaults to True. total (float, optional): Number of total steps in the progress if known. Set to None to render a pulsing animation. Defaults to 100. completed (int, optional): Number of steps completed so far. Defaults to 0. visible (bool, optional): Enable display of the task. Defaults to True. **fields (str): Additional data fields required for rendering. Returns: TaskID: An ID you can use when calling `update`. )r�r�r�r�r,N) r�rr�rr�r r=r�rR) rLrzr]r{rIr�r�r��new_task_indexs rNr�zProgress.add_task?s��0�Z� A� A��� �������-��j� � � �D�-1�D�K��(� )�� 2����� 0�1�1�1�!�-�N�%�c�$�*:�&;�&;�a�&?�@�@�D� � A� A� A� A� A� A� A� A� A� A� A���� A� A� A� A� � � �����s�BB�B�Bc�V�|j5|j|=ddd��dS#1swxYwYdS)z]Delete a task if it exists. Args: task_id (TaskID): A task ID. N)r�r�)rLrDs rN� remove_taskzProgress.remove_taskjsz���Z� %� %�� �G�$� %� %� %� %� %� %� %� %� %� %� %� %���� %� %� %� %� %� %s � �"�"ri)NrNrrrxr[�r�NNN�r�r�NNN)r,)Tr�rT)<rjrkrlrmr&r�r�r r/r�rnr�rKr`r#r�r�r}rrr�r=r�r+r]r�r+r_r$rorrhrr>r!r�r�rr��typing�overloadr�r)r�r"r r rrWrrSrRr2r�rr:rr&r�r*r�rOrNrCrC's������� � �$&*�!�$&�'+�� $� $�.2���"$�"$�"$���^�+�,�"$��'�"�"$�� "$� "� "$� %� "$��"$��"$��"$��?�+�"$��"$��"$� �"$�"$�"$�"$�H� �E�.�#�*=�$>� � � ��[� �<�!��!�!�!��X�!��.�t�D�z�.�.�.��X�.� �,�$�v�,�,�,�,��X�,� �G�$�G�G�G��X�G�*�*�*�*� !�!�!�!� �4�������4� �.�/���-�(����'� � � ����"&��$(�'�"�)�)����.���0F�F�G�)����)�� )� �&�!� )� � )��)� �,� �)�)�)�)�\ $�(@� %)�'� (@�(@�(@��(@���}�(@� �&�!� (@� � (@� �(@�(@�(@�(@�T �_� �"&� $�!%�  � $�$(�'�  �  �  ��C��%�/�0�  ��d�m�  ��  � �3�-�  � �� �  ��#��  ���}�  ��&�!�  ��  � �  �  �  ��_�  � �_� �"&� $�!%�  � $�$(�'�  �  �  ��C��%�/�0�  ��G�C�L�'�$�-�/�0�  ��  � �3�-�  � �� �  ��#��  ���}�  ��&�!�  ��  � �  �  �  ��_�  �$CF��"&� $�!%�K� $�$(�'�K�K�K��C��%�/�0�K��G�D�M�7�4�=�'�#�,�>�?�K�� K� �3�-� K� �� � K��#��K���}�K��&�!�K��K� �x��� �K�K�K�K�Z 2�&� 2�T� 2� 2� 2� 2� *�� *�D� *� *� *� *�&"&�%)�#'�%)�"&��;�;�;��;���� ;� �E�?� ;� �%�� ;��c�]�;��$��;��;��;� �;�;�;�;�B�!%��"&�%)�%�%�%��%�� %� ��� %� � %��$��%��c�]�%��%� �%�%�%�%�N1�1�v�1��1�d�1�1�1�1�< � � � � ������ ��.�!9����� �h�t�n�������B)�.�)�)�)�)��!&��� )�)��)��)���� )� � )� � )��)� �)�)�)�)�V%�6�%�d�%�%�%�%�%�%rOrC�__main__)�Panel)�Rule)�Syntax)r:a~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�python)� line_numbers�foo�bar�baz�1�2�3z:Text 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)�typer,z Syntax...zGive it a try!)�cycle)�record)r}r~z[red]DownloadingrWr�z[green]Processingz[yellow]Thinkingrbr�g333333�?g{�G�z�?�d)rrNrTNFNrsrtrurvrwrxFTr+r,)�r�sysr-r�abcrr� collectionsr� dataclassesrr�datetimer r r �mathr r �operatorr�osrr� threadingrrr�typesrrrrrrrrrrrrr r!r"r#r$r%r&� version_infor)�typing_extensionsr+rr-r.r}r/r0r1r2r3r3�jupyterr4rUr5� progress_barr6r$r7r�r8rr9r:r,r;r<r�r=r>rnr�r?rAr�r�r�r�r�r�r.r�r�r�rrr�r�rHr�r�rqrxr{r�r�r�rrCrj�random�time�panelr0�ruler1�syntaxr2r#�progress_renderables� itertoolsr=�examplesr�rBr��task1�task2�task3r+rW�sleep�randintr�r�r�rOrN�<module>r[s��� � � � � � � � � � � � �����#�#�#�#�#�#�#�#�������(�(�(�(�(�(�(�(�������.�.�.�.�.�.�.�.������������� � � � � � ���������*�*�*�*�*�*�*�*�*�*�����������������������������������������������*��v����������)�)�)�)�)�)���w����������&�&�&�&�&�&�#�#�#�#�#�#�#�#�B�B�B�B�B�B�B�B�B�B�B�B�$�$�$�$�$�$�!�!�!�!�!�!�������%�%�%�%�%�%������������� � � � � � � � � � � � � � � � � ���3� � ���w�~�&�&� ��2�u�9�%���V�^�D�&�(�+�+��%�%�%�%�%�6�%�%�%�T$�!���!%��.2� "�!� .� .�(����!I �I ��H�\�*�H�\�,B�B�C�I ��I � �E�?�I �� I � � I � �g� � I ��I ��x��E� �*�+�I ��I � �I ��I ��I ��I ��I ��I � �!I �"�l��#I �I �I �I �Xd1�d1�d1�d1�d1�i��d1�d1�d1�N8�8�8�8�8�>�"�%�w�r�{�8�8�8�2$��!%��.2� "�!� .� .�(��>*�>*�>*� �>*� �>*�� >*� � >*� �g� � >*��>*��x��E� �*�+�>*��>*� �>*��>*��>*��>*��>*��H��>*�>*�>*�>*�B���"� �!�  � �#��!%��.2� "�!� .� .�(��' � � � ��_�e�+� ,� � ��� �w�s�|�+� ,� �� ��s�m�  � �S�M�  � �c�]�  � �C�=� �� �� ��g� � �� ��x��E� �*�+� �� � � � �! �"�# �$�% �&�' �(�F��) � � ��� �0���"� �!�  � �#��!%��.2� "�!� .� .�(��' � � � ��_�e�+� ,� � �$�-� �� ��s�m�  � �S�M�  � �c�]�  � �C�=� �� �� ��g� � �� ��x��E� �*�+� �� � � � �! �"�# �$�% �&�' �(�H��) � � ��� �4?B��"� �!� S*� �#��!%��.2� "�!� .� .�(��'S*�S*�S*� ��_�e�+� ,�S*� ��� �w�t�}�g�c�l�:� ;�S*��S*��s�m� S*� �S�M� S*� �c�]� S*� �C�=�S*��S*��S*��g� �S*��S*��x��E� �*�+�S*��S*� �S*� �!S*�"�#S*�$�%S*�&�'S*�( �>�(� #�^�F�%;� ;�<�)S*�S*�S*�S*�l'1�'1�'1�'1�'1�S�'1�'1�'1�T�����~����"/�/�/�/�/�N�/�/�/�d���������<' �' �' �' �' ��' �' �' �T :� :� :� :� :�� :� :� :�E�E�E�E�E��E�E�E�P-,�-,�-,�-,�-,�.�-,�-,�-,�`:�:�:�:�:�^�:�:�:�@�@�@�@�@�.�@�@�@� � � � � �� � � �6.�.�.�.�.�^�.�.�.�b D� D� D� D� D�.� D� D� D�%�%�%�%�%�Z�%�%�%� �z#�z#�z#�z#�z#�z#�z#� ��z#�zK %�K %�K %�K %�K %�|�K %�K %�K %�\ �z����M�M�M��K�K�K������������������������� �V� "� �����F� �E�%��� &� &�E� �M�M�#�s�C� � � � E� ��8�9�9�'� �&��$4�5�5��� �� ��� �� �������u�)�*�*�H��g�T�"�"�"�G� ��� ��� � � %� %� '� '� � ���� � ���  � � �-� ��!�!�"4�D�!�A�A���!�!�"5�T�!�B�B���!�!�"4�D�!�A�A���#� -� �O�O�E�3�O� /� /� /� �O�O�E�3�O� /� /� /� �D�J�t� � � ��v�~�a��%�%��)�)�� � �T�T�(�^�^�,�,�,� �#� -�-�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�-�-�]�s�CY!�!Y%�(Y%
Memory