o ö]Lb³+ã@spddlmZddlZddlZddlZddlmZddlmZdd„Z dd „Z d d „Z d d „Z Gdd„de ƒZdS)é)Úabsolute_importNé©Ú_)ÚencodingcGsd dd„|Dƒ¡S)Nó css|]}|r|VqdS©N©)Ú.0Úsr r ú4/usr/lib/python3/dist-packages/mercurial/progress.pyÚ s€zspacejoin..)Újoin)Úargsr r r Ú spacejoinórcCs*|jp| d¡ o| |j¡p| dd¡S)Nóprogresss assume-tty)ÚquietÚplainÚ_isattyÚferrÚ configbool)Úuir r r Ú shouldprintsÿrcCs|dkr tdƒ|S|d}|dkr ||d8}tdƒ||fS|d7}|d}||d8}|dkr:tdƒ||fS|d7}|d}||d8}|dkrTtd ƒ||fS|d7}|d }||d 8}|d krntd ƒ||fS|d7}|d }||d 8}tdƒ||fS)z‚format a number of remaining seconds in human readable way This will properly display seconds, minutes, hours, days if neededé<s%02dss%dm%02dsrés%dh%02dméés%dd%02dhéé7s%dw%02ddé4s%dy%02dwr)ÚsecondsÚminutesÚhoursÚdaysÚweeksÚyearsr r r Ú fmtremainings2      r'c Gs@ z||ŽWSty}z |jtjkrWYd}~q‚d}~wwr)ÚIOErrorÚerrnoÚEINTR)ÚfuncrÚerrr r r Ú _eintrretryNs   €ýr-c@s~eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zddd„Zdd„ZdS) ÚprogbarcCs||_t ¡|_| ¡dSr)rÚ threadingÚLockÚ _refreshlockÚ resetstate)Úselfrr r r Ú__init__Ys  zprogbar.__init__cCs¦g|_i|_i|_i|_d|_t ¡t|j dd¡ƒ|_ d|_ d|_ d|_ t|j dd¡ƒ|_ td|j t|j dd¡ƒƒ|_|j dd¡|_|j tdd ¡|_dS) NFrsdelayrsrefreshés changedelaysformatsestimateinterval)ÚtopicsÚ topicstatesÚ starttimesÚ startvalsÚprintedÚtimeÚfloatrÚconfigÚ lastprintÚcurtopicÚ lasttopicÚ indetcountÚrefreshÚmaxÚ changedelayÚ configlistÚorderÚ configwithÚestimateinterval©r3r r r r2^s& ÿÿ ÿzprogbar.resetstatecCs t|jƒsdS| ¡}d|_d}d} d} |jD]¢} d} | dkr"|} nŠ| dkr9|r4dtt|ƒƒ||f} nxd|} ns|  d¡r|rd } d | vrPt|   d ¡d ƒ}nd | vr`d } t|   d ¡d ƒ}nd}| d krot j ||dd} nt   ||¡} | |t   | ¡d7} n+| dkrŠd} d} n"| dkr“|r“|} n| dkr |  ||||¡} n | dkr¬| ||||¡} | s´t|| ƒ}qt| | ƒ} q| r7d}|rÊ|t   |¡d 7}| rÕ|t   | ¡d 7}||d}|rþ||krþ|||}d|d }|dkrõ|d7}|d||7}n*|d8}|jd 7_|jd|}||8}dt|t|ƒƒddtt|ƒƒ}d d|df¡}t||| ƒ}nt|| ƒ}| dt   ||¡¡||_| ¡dS)NTóFstopicsnumbers%*d/%ds%dsitemsendó-ró+s beginningé)Úleftsidersbarsunitsestimatesspeedrr5ó=ó>és<=>ó[ó]ó )rrÚwidthr:rFÚlenÚstrÚ startswithÚintÚsplitrÚtrimÚcolwidthÚestimateÚspeedrrAÚabsrÚ _writeerrr@Ú _flusherr)r3ÚnowÚtopicÚposÚitemÚunitÚtotalÚ termwidthÚheadÚ needprogressÚtailÚ indicatorÚaddÚsliceÚwidÚusedÚ progwidthÚamtÚbarÚprogÚoutr r r Úshowssˆ           ÿþÿ  z progbar.showcCsL|jr |jr t|jƒs dS| dd| ¡¡| ¡|jr$d|_dSdS)Ns %s rr)r:r>rrr`rUrarIr r r ÚclearÀs þz progbar.clearcCs<t|jƒsdS|j dd¡r| ¡n| d¡| ¡dS)Nrsclear-completeó )rrrrwr`rarIr r r ÚcompleteÉs    zprogbar.completecCst|jjjƒdSr)r-rrÚflushrIr r r raÒszprogbar._flusherrcCst|jjj|ƒdSr)r-rrÚwrite)r3Úmsgr r r r`Õrzprogbar._writeerrcCs&|j ¡}tt|jjdd|dƒ|ƒS)Nrswidth)Údefault)rrhÚminrYr=)r3Útwr r r rUØs z progbar.widthc Cs\|durdS|j|}||}||}|dkr,||j|}||||d} t| ƒSdS)NrJrr)r9r8r') r3rcrdrgrbÚ initialposÚtargetÚdeltaÚelapsedr!r r r r]Üs zprogbar.estimatecCs@|j|}||}||j|}|dkrtdƒ|||fSdS)Nrs %d %s/secrJ)r9r8r)r3rcrdrfrbr€r‚rƒr r r r^ès z progbar.speedcCs.|jdus|j|jks||j|jkrdSdS)z?Check if conditions are met to print - e.g. changedelay elapsedNTF)r@r?r>rD)r3rbr r r Ú _oktoprintðs  zprogbar._oktoprintcCsr|j}|dkr dS||j|}||kr7||j|}|||}|dkr'dS|||j|<|||j|<dSdS)a±Adjust starttimes and startvals for topic so ETA works better If progress is non-linear (ex. get much slower in the last minute), it's more friendly to only use a recent time span for ETA and speed calculation. [======================================> ] ^^^^^^^ estimateinterval, only use this for estimation rNgš™™™™™¹?)rHr8r9)r3rcrbrdÚintervalrƒr‚Únewdeltar r r Ú_calibrateestimateýs  ÷zprogbar._calibrateestimaterJNcCs |dur | |¡dSt ¡}|ji||jvr(||j|<||j|<|j |¡||||f|j|<||_|  |||¡||j |j krc|jrk|  |¡rs||_ |j ||g|j|¢RŽWdƒdSWdƒdSWdƒdSWdƒdS1s~wYdSr)Ú closetopicr;r1r6r8r9Úappendr7r?r‡r>rBr„rv)r3rcrdrerfrgrbr r r Úprogresss.      õøø "÷zprogbar.progresscCsÜ|ja|j |d¡|j |d¡|j |d¡|jr.|jd|kr.|jr.| ¡| ¡||jvrT|jd|j  |¡…|_|jrI|jd|_ nd|_ WdƒdSWdƒdSWdƒdS1sgwYdS)Nréÿÿÿÿ) r1r8Úpopr9r7r6r:ryr2Úindexr@)r3rcr r r rˆ)s" î ö"ðzprogbar.closetopic)rJrJN)Ú__name__Ú __module__Ú __qualname__r4r2rvrwryrar`rUr]r^r„r‡rŠrˆr r r r r.XsM     r.)Ú __future__rr)r/r;Úi18nrÚrrrr'r-Úobjectr.r r r r Ús   2