h+ 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;ddlm?Z?ddl@mAZAddlBmCZCddlDmEZEddlFmGZGddlHmIZImJZJddlKmLZLmMZMe(deNZOe.dZPe geQfZRej.de+eZSGd d!eZT dd+e/e*ePe%ePfd,eUd-e)eQd.eNd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd8eQd9eVd:eVd;e%ePf"d<ZWGd=d>eeZXGd?d@e!eSe$eSZYdAd#dd$dd%d&d'd(d)d$dB dCed-eNd,eUd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd9eVd;e!efdDZZej[ dddAd#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&dOZ]ej[ dddAd#dd$dd%d&d'd(d)d$dF dCe/eUdGe\fdHe1dPdKeNdLe)eUdMe)eUdNe)eUd-e)eNd,eUd/eVd0e)e8d1eVd2e)e geQfd3eQd4eGd5eGd6eGd7eGd9eVd;e!ef&dQZ] dddAd#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&dRZ]GdSdTeZ^GdUdVe^Z_GdWdXe^Z`GdYdZe^ZaGd[d\e^ZbGd]d^e^ZcGd_d`eaZdGdadbe^ZeGdcdde^ZfGdedfe^ZgGdgdhe^ZhGdidje^ZiGdkdle^ZjGdmdne'Zke GdodpZlGdqdre?ZmendskrddloZoddlpZpddtlqmrZrddulsmtZtddvlumvZvddwlHmJZJevdxdyd#zZueJd{d|d}ZHeHwd~ddderddeHdddddeuetdg ZxddlymzZzezexZ{e8d#Z7eme`gem|ecRe7d$d5Z}e}~ddZe}~ddZe}~ddZe}jsxe}ede}edepjdeojdddkre}ee{e}jxddddS#1swxYwYdSdS)N)ABCabstractmethoddeque) dataclassfield) timedelta) RawIOBaseUnsupportedOperation)ceil)mmap) length_hint)PathLikestat)EventRLockThread) TracebackType)AnyBinaryIOCallableContextManagerDequeDictGenericIterableList NamedTupleNewTypeOptionalSequenceTextIOTupleTypeTypeVarUnion))Literal)r' )Self)filesize get_console)ConsoleGroup JustifyMethodRenderableType) Highlighter) JupyterMixin)Live) ProgressBar)Spinner) StyleType)ColumnTable)TextTextTypeTaskID ProgressType_IceZdZdZdddddeffd Zdd Zdd Zd ee e d ee dee dd fdZ xZ S) _TrackThreadz)A thread to periodically update progress.progressProgresstask_idr= update_periodc||_||_||_t|_d|_t ddS)NrT)daemon)rBrDrErdone completedsuper__init__)selfrBrDrE __class__s y/builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib/python3.11/site-packages/pip/_vendor/rich/progress.pyrKz_TrackThread.__init__GsL   *GG  %%%%%returnNcP|j}|jj}|j}d}|jj}||sK|jjjr:|j}||kr||||z |}||s|jjj:|j |j|jddS)NrT)rIrefresh) rDrBadvancerErHwaitlive is_startedrIupdate)rLrDrSrElast_completedrTrIs rNrunz_TrackThread.runPs,-'* y~$}%% +$-*<*G +I**^!;<< ? ?@@UW  NN --'     * 5 5 5 d ; ; ;     !-3H   >> #' "                           s1!BB#&B#c eZdZdZ d,dedddededd f d Zd-d Zd e e e d e e de e dd fdZ defdZdefdZedefdZdefdZdefdZedefdZedefdZdefdZdefdZdefdZd.dedefdZdeeee ffdZ!d.dedefdZ"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.ThandlerBrCtask close_handlerPNcL||_||_||_||_d|_dSNF)rrBrr_closed)rLrrBrrs rNrKz_Reader.__init__s,    ( rOc8|j|Sr[)rr_r^s rNr_z_Reader.__enter__s  rOrarbrcc.|dSr[)closergs rNrhz_Reader.__exit__s rOc|Sr[r^s rN__iter__z_Reader.__iter__s rOct|j}|j|jt ||SNrS)nextrrBrSrlen)rLlines rN__next__z_Reader.__next__s9DK   diT;;; rOc|jSr[)rr^s rNclosedz_Reader.closeds |rOc4|jSr[)rfilenor^s rNrz_Reader.fileno{!!###rOc4|jSr[)risattyr^s rNrz_Reader.isattyrrOc|jjSr[)rmoder^s rNrz _Reader.mode {rOc|jjSr[)rnamer^s rNrz _Reader.namerrOc4|jSr[)rreadabler^s rNrz_Reader.readable{##%%%rOc4|jSr[)rseekabler^s rNrz_Reader.seekablerrOcdSrrr^s rNwritablez_Reader.writablesurOsizec|j|}|j|jt ||Sr)rreadrBrSrr)rLrblocks rNrz _Reader.reads?   && diU<<< rObc||j|}|j|j||Sr)rreadintorBrSr)rLrns rNrz_Reader.readintos9 K  # # di333rOc|j|}|j|jt ||Sr)rreadlinerBrSrr)rLrrs rNrz_Reader.readlines?{##D)) diT;;; rOhintc |j|}|j|jt t t||Sr)r readlinesrBrSrsummapr)rLrliness rNrz_Reader.readlinessI %%d++ diSe__1E1EFFF rOcT|jr|jd|_dS)NT)rrrrr^s rNrz _Reader.close s,   K      rOroffsetwhencec~|j||}|j|j||S)NrI)rseekrBrWr)rLrrposs rNrz _Reader.seeks;kvv.. TY#666 rOc4|jSr[)rtellr^s rNrz _Reader.tells{!!!rOsc td)Nwriter )rLrs rNrz _Reader.writes"7+++rOrc td)N writelinesr)rLrs rNrz_Reader.writeliness"<000rO)T)rPr)rri)r),rjrkrlrmrr=boolrKr_r r$rorrhrbytesrpropertyrintrrstrrrrrrrr& bytearray memoryviewr rrrrrrrrrrrrrOrNrrsACC"            4 ./-('   (% X$$$$$$$$$$ c   X  c   X &$&&&&&$&&&&$e % :t ;< S% c4;  3C "c"""",s,s,,,,1 1$111111rOrczeZdZdZdddeddfdZdefdZd eee d ee d ee ddfd Z dS) _ReadContextzEA utility class to handle a context for both a reader and a progress.rBrCreaderrPNc"||_||_dSr[)rBr)rLrBrs rNrKz_ReadContext.__init__"s    rOcf|j|jSr[)rBr]rr_r^s rNr_z_ReadContext.__enter__&s* {$$&&&rOrarbrccp|j|j|||dSr[)rBstoprrhrgs rNrhz_ReadContext.__exit__*s8  Xw77777rO) rjrkrlrmr?rKr_r r$rorrhrrOrNrrsOO!!R!D!!!!'2''''84 ./8-(8' 8  888888rOr Reading...) rzr|r}r~rrrrrrrfilec "|rtdgng} | t|| | | tt ft | |||||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. rrrsr)r{rz)rrrDownloadColumnrrC wrap_filer)rr{rzr|r}r~rrrrrrrrrBrs rNrr4sJEPW> ? ?@@UW  NN --'         ! !     !-3H  E{  K KF & ) ))rOr) r{rzr|r}r~rrrrrrr PathLike[str]rrtr bufferingencodingerrorsnewlinec dSr[rrrrrrrr{rzr|r}r~rrrrrrrs rNopenru , DrOrbc dSr[rrs rNrrrrOc ,|rtdgng}|t| |||tt ft ||| | | | pd|d}|||||||||}t||S)aRead 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. rrrsr)rrrrrr{rz)rrrrrrCrr)rrrrrrr{rzr|r}r~rrrrrrrrrBrs rNrrsbEPW> ? ?@@UW  NN --'         ! !     !-3H]]   F & ) ))rOceZdZUdZdZeeed<d deeddfdZ defdZ dd de fd Z e dd de fd ZdS) ProgressColumnz3Base class for a widget to use in progress display.N max_refresh table_columnrPc0||_i|_d|_dSr[) _table_column_renderable_cache _update_time)rLrs rNrKzProgressColumn.__init__s )MO-1rOc,|jp tS)z.Get a table column, used to build tasks table.)rr9r^s rNget_table_columnzProgressColumn.get_table_columns!-VXX-rOrTaskc|}|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). )rrrIridKeyErrorrender)rLr current_time timestamp renderables rN__call__zProgressColumn.__call__ s}}   ' ' &(,(>tw(G% :t//,>>%%?     [[&& +7*Dtw'sA AAcdS)z"Should return a renderable object.NrrLrs rNr zProgressColumn.render"srOr[)rjrkrlrmrr rn__annotations__r9rKrr2rrr rrOrNrrs==#'K%'''22Xf%522222 .&....V.161n111^111rOrcReZdZdZ d dddedeeffdZdd d efd ZxZ S) RenderableColumnzA column to insert an arbitrary column. Args: renderable (RenderableType, optional): Any renderable. Defaults to empty string. Nrr rcZ||_t|dSNr)r rJrK)rLr rrMs rNrKzRenderableColumn.__init__.s-% l33333rOrrrPc|jSr[)r rs rNr zRenderableColumn.render4s rO)r) rjrkrlrmr2r r9rKr rprqs@rNrr's,.4SW444(4@H@P444444 6nrOrc eZdZdZ ddedeed ed ed ee f fd Z dded eed eddfdZ ddde fdZ xZS) SpinnerColumnaA 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 " ". dotsprogress.spinner? N spinner_namerspeed finished_textrct||||_t|trt j|n||_t|dS)Nrr r) r7spinner isinstancerr; from_markupr!rJrK)rLrrr r!rrMs rNrKzSpinnerColumn.__init__Bsm|5FFF --- D ] + + +  l33333rO spinner_stylerPc4t||||_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|=NNN rOrrcz|jr|jn+|j|}|Sr[)finishedr!r$r r)rLrtexts rNr zSpinnerColumn.renderas=} 6D  $$T]]__55  rO)rrrrN)rr)rjrkrlrmrr r8rnr<r9rKr)r2r rprqs@rNrr8s#%7"%)- 444 "4 4  4 v& 444444&.@ O O O * O O  O O O O6nrOrcteZdZdZ ddededed ed ee d ee d dffd Z ddd e fdZ xZS)rzA column containing text.noneleftTN text_formatrjustifymarkup highlighterrrPc||_||_||_||_||_t |ptddS)NTno_wrapr)r0r1rr2r3rJrKr9)rLr0rr1r2r3rrMs rNrKzTextColumn.__init__ms['&-   & l&JfT6J6J6JKKKKKrOrrc|j|}|jr"tj||j|j}nt||j|j}|jr|j||SNr)rr1) r0formatr2r;r&rr1r3 highlight)rLr_textr,s rNr zTextColumn.render}s ''T'22 ; G#ET\RRRDDTZFFFD   -   & &t , , , rO)r.r/TNN)rjrkrlrmrr8r1rr r3r9rKr;r rprqs@rNrrjs## "!'-1)-LLLL L  L k* Lv&L LLLLLL 6drOrcveZdZdZ ddeed ed ed ed ed eeddffd Zddde fdZ xZ S)raRenders 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_widthrrrrrrPc||_||_||_||_||_t |dSr)r?rrrrrJrK)rLr?rrrrrrMs rNrKzBarColumn.__init__sL# ,,& l33333rOrrc  t|jtd|jndtd|j|jdntd|j|j ||j|j|j |j  S)z&Gets a progress bar widget for a task.Nrr,) r{rIwidthpulseanimation_timerrrr) r6r{maxrIr?startedrrrrrrs rNr zBarColumn.renders(, (>#a$$$D!T^,,.0$$c!T^6L6Ll"==??*..(    rO)r>rtrurvrwN) rjrkrlrmr rr8r9rKr6r rprqs@rNrrs$&%$2$2!,)-44C=44" 4 " 4  4v&4 444444  6  k         rOrc"eZdZdZdddefdZdS)TimeElapsedColumnzRenders time elapsed.rrrPc|jr|jn|j}|tddSt t dt |}tt|dS)zShow time elapsed.N-:--:--progress.elapsedrr)seconds)r+ finished_timeelapsedr;r rErr)rLrrOdeltas rNr zTimeElapsedColumn.rendersk(, G$$$4< ? );<<< <#aW"6"6777CJJ&89999rONrjrkrlrmr;r rrOrNrHrHs<:6:d::::::rOrHceZdZdZ dd ed ed ed ed edee dee deddffd Z e dee defdZdddefdZxZS)raShow 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/TNFr0text_format_no_percentagerr1r2r3rrrPc r||_||_t||||||dS)N)r0rr1r2r3r)rTrrJrK) rLr0rTrr1r2r3rrrMs rNrKzTaskProgressColumn.__init__sR*C&$ ##%      rOr c|tddStjt|gdd\}}||z }t|d|ddS) zRender 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 unitsuffix data_speeds rN render_speedzTaskProgressColumn.render_speedsx ="7888 84 JJ < < <   f T\ z44v444YeLLL L"#i.."55,,w < A A"666666II @@@W@@@7@@@IIU++++rO)FFN) rjrkrlrmrrr r9rKr;r rprqs@rNrrsK&+)- 444 $4v& 444444,6,d,,,,,,,,rOrc"eZdZdZdddefdZdS)FileSizeColumnzRenders completed filesize.rrrPcptjt|j}t |dS)Show data completed.zprogress.filesizerL)r-decimalrrIr;rLr data_sizes rNr zFileSizeColumn.render9s0$S%8%899 I%89999rONrQrrOrNrqrq6s<%%:6:d::::::rOrqc"eZdZdZdddefdZdS)TotalFileSizeColumnzRenders total filesize.rrrPc|j&tjt|jnd}t |dS)rsNrzprogress.filesize.totalrL)r{r-rtrr;rus rNr zTotalFileSizeColumn.renderBs;9=9OH$S__555UW I%>????rONrQrrOrNrxrx?sD!!@6@d@@@@@@rOrxcJeZdZdZd dedeeffd 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 separatorrcZ||_t|dSr)r}rJrK)rLr}rrMs rNrKzMofNCompleteColumn.__init__Ts+" l33333rOrrrPct|j}|jt|jnd}tt |}t ||d|j|dS)zShow completed/total.N?riprogress.downloadrL)rrIr{rrr;r})rLrrIr{ total_widths rNr zMofNCompleteColumn.renderXst'' #':#9DJs#e**oo + @ @ @ @ @ @ @%    rO)r|N) rjrkrlrmrr r9rKr;r rprqs@rNr{r{Hs  44#48F;K444444 6 d        rOr{cPeZdZdZ d dedeeddffd Zdd defd Z xZ S) rzRenders 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_unitsrrPcZ||_t|dSr)rrJrK)rLrrrMs rNrKzDownloadColumn.__init__js.) l33333rOrrct|j}|jt|jn|}|jrt j|gdd\}}nt j|gdd\}}|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) rKiBMiBGiBTiBPiBEiBZiBYiBi) rkBMBGBTBPBEBZBYBrWr,rz,.frr|rrrL)rrIr{rr-rXr;)rLrrI unit_and_suffix_calculation_baserZr[ precisioncompleted_ratio completed_strr{ total_ratio total_strdownload_status download_texts rNr zDownloadColumn.renderps+''  $z5C OOO9 )   #80QQQLD&& $80IIILD& AA #d**;i;;;; : ! OOE$,K&7)7777III*AAYAAAA_4GHHH rO)FN) rjrkrlrmrr r9rKr;r rprqs@rNrrcsLP44 48@8H4 444444 !6!d!!!!!!!!rOrc"eZdZdZdddefdZdS)TransferSpeedColumnz&Renders human readable transfer speed.rrrPc|jp|j}|tddStjt |}t|ddS)zShow data transfer speed.Nrzprogress.data.speedrLz/s)r_r r;r-rtr)rLrr r\s rNr zTransferSpeedColumn.renders]#1tz =#8999 9%c%jj11 z%%%-BCCCCrONrQrrOrNrrsD00D6DdDDDDDDrOrc*eZdZUdZeed< eed<dS)ProgressSamplez$Sample of progress for a given time.r rIN)rjrkrlrmrnrrrOrNrrs3..$$rOrceZdZUdZeed< eed< eeed< eed< e ed< dZ eeed< d Z e ed < e e Zeeefed < e dd d Zeeed< e dd d Zeeed< dZeeed< e dd d Zeeed<e d eZeed< defdZede fdZedeefdZedeefdZede fdZedefdZ edeefdZ!edeefdZ"d!d Z#dS)"rzInformation regarding a progress task. This object should be considered read-only outside of the :class:`~Progress` class. rrzr{rI _get_timeNrNTvisible)default_factoryfieldsF)defaultinitrepr start_time stop_timer_c"tdS)NrW)maxlenrrrOrNz Task.sT 2 2 2rO)rrr _progress)rr_lockrPc*|S)z(float: Get the current time, in seconds.)rr^s rNrz Task.get_times~~rOc|jduS)z#bool: Check if the task as started.N)rr^s rNrFz Task.startedsd**rOc2|jdS|j|jz S)zPOptional[float]: Get the number of steps remaining, if a non-None total was set.Nr{rIr^s rN remainingzTask.remainings  : 4zDN**rOcx|jdS|j|j|jz S||jz S)z]Optional[float]: Time elapsed since task was started, or ``None`` if the task hasn't started.N)rrrr^s rNrOz Task.elapseds= ? "4 > %>DO3 3}}00rOc|jduS)zCheck if the task has finished.N)rNr^s rNr+z Task.finisheds!--rOcx|jsdS|j|jz dz}tdtd|}|S)zOfloat: Get progress of task as a percentage. If a None total was set, returns 0Y@)r{rIminrE)rLrIs rN percentagezTask.percentagesEz 3^dj0E9 s3 2233 rOc^|jdS|j5|j}|s ddddS|dj|djz }|dkr ddddSt |}t |t d|D}||z }|cdddS#1swxYwYdS)z=Optional[float]: Get the estimated speed in steps per second.Nrrc3$K|] }|jV dSr[r).0samples rN zTask.speed..s%!O!Ov&"2!O!O!O!O!O!OrO)rrrr iterrr)rLrB total_time iter_progresstotal_completedr s rNr z Task.speedsI ? "4 Z  ~H         ""/(1+2GGJQ        !NNM    !!O!O!O!O!OOOO#j0E                  s B""B"=B""B&)B&ch|jrdS|j}|sdS|j}|dSt||z }|S)zJOptional[float]: Get estimated time to completion, or ``None`` if no data.rN)r+r rr )rLr restimates rNrjzTask.time_remainingsP = 3  4N  4 E)**rOcT|jd|_d|_dS)zReset progress.N)rclearrNr_r^s rN_resetz Task._reset s, !"rOri)$rjrkrlrmr=rrr rnGetTimeCallablerNrrrdictrrrrrr_rrrrrrrrFrrOr+rr rjrrrOrNrrs JJJG' E?>*+%)M8E?)))(GTJ"U4888FDcN888?"'%5u"M"M"MJMMMN!&t%e!L!L!LIxLLLN&*NHUO***>',u22U(((Iu^$5eU;;;E5;;; %    ++++X++8E?+++X+ 1%111X1.$...X.EXxX"    X ######rOrcjeZdZdZddddddddddd deeefd eed e d e d e d e de de dee de de ddfdZ e deedffdZedefdZedeefdZedeefdZede fdZdTdZdTdZdefdZdeeedeed 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,d1d.eed2e)fd3e*d4d5e#d6eed7eed8eed&ee#d(eed)ede%fd9Z+e'j( dWddd,d1d.eed2e)fd3ee*d:e*d;fd5e#d6eed7eed8eed&ee#d(eed)ede,fd<Z+ dXddd,d1d.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/ddfdEZ0ddd"dddFd(edGe d&ee d'e#dBee d)eedDe/ddfdHZ1dYd(edAe ddfdJZ2dTdKZ3de4fdLZ5de e4fdMZ6dNe ede7fdOZ8de4fdPZ9 dZd)edGe d&ee d'e#dBe dDe/defdRZ:d(eddfdSZ;dS)[rCaRenders 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|rspeed_estimate_periodr~redirect_stdoutredirect_stderrrrexpandrr}r|rrr~rrrrrrPc |dks Jdt|_| p||_||_| |_| |_i|_td|_ t|p t||||||j |_ |p |jj|_|jj|_|jj|_dS)Nrzrefresh_per_second must be > 0)r}r|rr~rrget_renderable)rrget_default_columnsrrrr_tasksr= _task_indexr5r.rrUr}rprintlog) rLr}r|rrr~rrrrrrs rNrKzProgress.__init__7s"A%%%'G%%%WW <$":":"<"< %:"  *, #)!99,{}}%1++.    !9DL$9 \' <#rO.cptdtttfS)aGet 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)rrrr)rYs rNrzProgress.get_default_columns[s32 A B B KK   ! !   rOc|jjSr[)rUr}r^s rNr}zProgress.consolezs y  rOc|j5t|jcdddS#1swxYwYdS)zGet a list of Task instances.N)rlistrvaluesr^s rNtaskszProgress.tasks~sZ . . **,,-- . . . . . . . . . . . . . . . . . . &;??c|j5t|jcdddS#1swxYwYdS)zA list of task IDs.N)rrrkeysr^s rNtask_idszProgress.task_idssZ , , ((**++ , , , , , , , , , , , , , , , , , ,rc|j5|js ddddStd|jDcdddS#1swxYwYdS)z'Check if all tasks have been completed.NTc3$K|] }|jV dSr[)r+)rrs rNrz$Progress.finished..s$FFt}FFFFFFrO)rrallrr^s rNr+zProgress.finishedsZ G G;  G G G G G G G GFF1C1C1E1EFFFFF G G G G G G G G G G G G G G G G G Gs A/AA!AcN|js|jddSdS)zStart the progress display.T)rRN)rrUr]r^s rNr]zProgress.starts2| * IOODO ) ) ) ) ) * *rOc|j|jjs'|jjs|jdSdSdS)zStop the progress display.N)rUrr}is_interactive is_jupyterrr^s rNrz Progress.stops[ |* !4<3J ! L    ! ! ! !rOc.||Sr[r\r^s rNr_zProgress.__enter__r`rOrarbrcc.|dSr[)rrgs rNrhzProgress.__exit__s rOrrrrxryr{rIrDrzrEc#K|tt|pd}|||||}n|||||jjrFt |||5}|D]}|V|xjdz c_ ddddS#1swxYwYdS|j} |j } |D]}|V| |d| dS)aTrack 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. Nrr,) rnradd_taskrWrUr|rArIrSrR) rLryr{rIrDrzrE track_threadvaluerSrRs rNrzProgress.tracksb, =+h//008DE ?mmKu mRRGG KKu K B B B 9 ! dG];; 0|%00EKKK **a/***0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 lGlG!   ###   s3BB"Br)rDrzrc d}||}n3|1|j5|j|j}dddn #1swxYwY|td||||}n|||t |||dS)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{Fr)rrr{ ValueErrorrrWr)rLrr{rDrz total_bytess rNrzProgress.wrap_files.(,  KK   9 9"k'28  9 9 9 9 9 9 9 9 9 9 9 9 9 9 9  R  ?mmK{mCCGG KK{K 3 3 3tT7????s 044r)r{rDrzrrrrrrrcdSr[r rLrrrrrrr{rDrzs rNrz Progress.open  rOrrcdSr[rrs rNrz Progress.openrrOc6dt|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)brrrz invalid mode r,rzaline buffering (buffering=1) isn't supported in binary mode, the default buffer size will be usedr)rrrzcan't have unbuffered text I/ONrr)rTr)rr)rrrline_buffering)rfsortedrwarningswarnRuntimeWarningrst_sizerrWiorr TextIOWrapper)rLrrrrrrr{rDrz_moderrrs rNrz Progress.opensjBtU33344 ) ) )5T5566 6#a D==Y!^^ Ms   II k ! !A~~ !ABBBa  =JJ&E ?mmKum==GG KKuK - - -ty999wTBBB ;  #!-   rOc|j5|j|}|j||_ddddS#1swxYwYdS)zStart 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)rrrr)rLrDrs rN start_taskzProgress.start_taskksZ 2 2;w'D&"&--// 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s.AA Ac|j5|j|}|}|j||_||_ddddS#1swxYwYdS)zStop a task. This will freeze the elapsed time on the task. Args: task_id (TaskID): ID of task. N)rrrrr)rLrDrr s rN stop_taskzProgress.stop_taskysZ * *;w'D==??L&".)DN  * * * * * * * * * * * * * * * * * *s7A  AA)r{rIrSrzrrRrSrrRrc |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| _dddn #1swxYwY|r|dSdS)aUpdate 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)rrrIr{rrzrrrWrrrpopleftr appendrrNrOrR)rLrDr{rIrSrzrrRrrcompleted_startupdate_completedr old_sample_timerr s rNrWzProgress.updates0Z 2 2;w'D"nO Udj%8%8"  "')$!*&#. "& K  v & & &#~? ==??L*T-GGOI'G  ! 6 H H   ! 6 H H!##   >N!O!OPPP &Ndj00&.%)\"A 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2D   LLNNNNN  sD=EEE)r]r{rIrrzr]c P|}|j5|j|} | |r|nd| _||| _|| _||| _|r|| _||| _ d| _ dddn #1swxYwY| dS)aReset 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) rrrrrr{rIrrrzrNrR) rLrDr]r{rIrrzrr rs rNresetzProgress.resets,}} Z & &;w'D KKMMM.3=llDO " &DN"&  %$ &#. !%D  & & & & & & & & & & & & & & & sABB B r,cl|}|j5|j|}|j}|xj|z c_|j|z }||jz }|j}|j} |r.|dj|kr| |r|dj|kt|dkr| t|dk| t|||j /|j|j kr|j |j |_ |j|_ddddS#1swxYwYdS)zAdvance task by a number of steps. Args: task_id (TaskID): ID of task. advance (float): Number of steps to advance. Default is 1. rrWN)rrrrIrrr r rrrr{rNrOr r_) rLrDrSr rrrrrr s rNrSzProgress.advances}} Z 1 1;w'D"nO NNg %NN#~? *T-GGOI'G  ! 6 H H   ! 6 H Hi..4'' i..4''   ^L:JKK L L L &Ndj00&.%)\"&*j#) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1sDD))D-0D-cf|js'|jjr|jdSdSdS)z*Refresh (render) the progress information.N)rrUrVrRr^s rNrRzProgress.refresh sF|  4 I           rOc<t|}|S)z*Get a renderable for the progress display.)r0get_renderables)rLr s rNrzProgress.get_renderablesD00223 rOc#FK||j}|VdS)z5Get a number of renderables for the progress display.N)make_tasks_tabler)rLtables rNrzProgress.get_renderabless(%%dj11 rOrcd|jD}tj|d|jd}|D]$jr|jfd|jD%|S)zGet 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. c3K|]O}t|trtdn%|VPdS)Tr5N)r%rr9rcopy)r_columns rNrz,Progress.make_tasks_table.."sr  gs++7t$$$$--//4466       rO)rr,)paddingrc3K|]:}t|tr|n |V;dS)r9N)r%rr:)rcolumnrs rNrz,Progress.make_tasks_table../sf # *&#66.FMMtM444!' rO)rr:gridrradd_row)rLr table_columnsrrs @rNrzProgress.make_tasks_tables   <     M6$+NNN  D|   '+l    rOcl|j5|cdddS#1swxYwYdS)z+Makes the Progress class itself renderable.N)rrr^s rN__rich__zProgress.__rich__:s} Z ) )&&(( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s )--rc n|j5t|j||||||j|j}||j|j<|r||j|j}t t|jdz|_dddn #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`. )rrrrr,N) rrrrrr r=rrR) rLrzr]r{rIrrrnew_task_indexs rNrzProgress.add_task?s0Z A A -j   D-1DK( ) 2 0111!-N%c$*:&;&;a&?@@D  A A A A A A A A A A A A A A A sBBBBcV|j5|j|=ddddS#1swxYwYdS)z]Delete a task if it exists. Args: task_id (TaskID): A task ID. N)rr)rLrDs rN remove_taskzProgress.remove_taskjszZ % % G$ % % % % % % % % % % % % % % % % % %s ""ri)NrNrrrxr[rNNNrrNNN)r,)TrrT)r!rrrrtypingoverloadrr)rr"r r rrWrrSrRr2rrr:rr&rr*rrOrNrCrC's  $&*!$&'+ $ $.2"$"$"$^+,"$'""$ "$ " "$ % "$"$"$"$?+"$"$"$ "$"$"$"$H E.#*=$>   [ <!!!!X!.tDz...X. ,$v,,,,X, G$GGGXG**** !!!! 44 ./-('   "&$('")).0FFG)) ) &! )  )) , ))))\ $(@ %)' (@(@(@(@}(@ &! (@  (@ (@(@(@(@T _ "& $!%   $$('    C%/0  dm    3-    #  }  &!         _   _ "& $!%   $$('    C%/0  GCL'$-/0    3-    #  }  &!         _  $CF"& $!%K $$('KKKC%/0KGDM74='#,>?K K 3- K  K#K}K&!KK x KKKKZ 2& 2T 2 2 2 2 * *D * * * *&"&%)#'%)"&;;;; ; E? ; % ;c];$;;; ;;;;B!%"&%)%%%% %  %  %$%c]%% %%%%N11v11d1111<     .!9 htnB).))))!& )))) )  )  )) ))))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_valuepython) line_numbersfoobarbaz123z: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]DownloadingrWrz[green]Processingz[yellow]Thinkingrbrg333333?g{Gz?d)rrNrTNFNrsrtrurvrwrxFTr+r,)rsysr-rabcrr collectionsr dataclassesrrdatetimer r r mathr r operatorrosrr threadingrrrtypesrrrrrrrrrrrrr r!r"r#r$r%r& version_infor)pip._vendor.typing_extensionsr+rr-r.r}r/r0r1r2r3r3jupyterr4rUr5 progress_barr6r$r7rr8rr9r:r,r;r<rr=r>rnrr?rArrrrrrr.rrrrrrrrHrrrqrxr{rrrrrCrjrandomtimepanelr0ruler1syntaxr2r#progress_renderables itertoolsr=examplesrrBrtask1task2task3r+rWsleeprandintrrrrOrNr[s ########((((((((........ ***********v555555w222222########BBBBBBBBBBBB$$$$$$!!!!!!%%%%%% 3  w~&& 2u9%V^D&(++%%%%%6%%%T$!!%.2 "! . .(!I I H\*H\,BBCI I  E?I  I  I g  I I xE *+I I  I I I I I I !I "l#I I I I Xd1d1d1d1d1id1d1d1N88888>"%wr{8882$!%.2 "! . .(>*>*>* >* >* >*  >* g  >*>*xE *+>*>* >*>*>*>*>*H>*>*>*>*B" !   #!%.2 "! . .('   _e+ ,  ws|+ ,  sm  SM  c]   C=   g   xE *+    ! "# $% &' (F)    0" !   #!%.2 "! . .('   _e+ , $-  sm  SM  c]   C=   g   xE *+    ! "# $% &' (H)    4?B" ! S* #!%.2 "! . .('S*S*S* _e+ ,S*  wt}gcl: ;S*S*sm S* SM S* c] S* C=S*S*S*g S*S*xE *+S*S* S* !S*"#S*$%S*&'S*( >( #^F%; ;<)S*S*S*S*l'1'1'1'1'1S'1'1'1T~"/////N///d<' ' ' ' ' ' ' ' T : : : : : : : :EEEEEEEEP-,-,-,-,-,.-,-,-,`:::::^:::@@@@@.@@@        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 %\ zMMMKKK V " F E% & &E MM#sC    E 899' &$455    u)**HgT"""G     % % ' '        - !!"4D!AA!!"5T!BB!!"4D!AA# - OOE3O / / / OOE3O / / / DJt   v~a%%)) TT(^^,,, # -------------------]sCY!!Y%(Y%