ó >é,Xc@s9ddlZddlZddlZddlZddlZyddlZWnek r_nXddlmZm Z dej kre edddddd ej j ƒd dd d ƒed ddddd ej j ƒd dd dƒedddddd dd ejƒƒgZn~edddddd ed dd ejƒed ddddd ed dd ejƒedddddd dd ejƒgZdefd„ƒYZdefd„ƒYZdej krdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZndefd„ƒYZdS(iÿÿÿÿN(tArgtMutuallyExclusiveArgListt progressbars --progresstdestt show_progresstactiont store_truetdefaulttroute_tothelps2show progress (the default when run interactively)s --no-progresst store_falsesMdo not show progress (the default when run non-interactively)s --porcelaintshow_porcelaintFileTransferProgressBarMixincBs#eZdZeZddd„ZRS(s\ A command mixin that provides download/upload progress bar support, along with options to enable or disable them. If progress bars are disabled at the command line get_progressbar will return None. If the progressbar module is unavailable get_progressbar will return None *and* no progress-related options will be added. c Cs¶|jjdƒr%td|d|ƒSdtjkr«|jjdtƒr«g}|dk rn||dg7}n|dk r0|tjƒdtj ddƒdt ƒdtj ƒdg7}d t tƒkrß|j tjƒƒn|j tjƒƒtjd |d|p tjd d ƒ}tjtjtƒ|S|tddƒdt ƒdtj ƒdtjd dƒg7}td |d|p…tjd d ƒ}tjtjtƒ|SntƒSdS(NR tlabeltmaxvalRRt tmarkert=t AdaptiveETAtwidgetstpollgš™™™™™©?tformatsTime: %s(targstgett_MachineReadableCountertsystmodulestFalsetNoneRt PercentagetBart _FileSizetFileTransferSpeedtdirtappendRtETAt ProgressBartmaxinttsignalt siginterrupttSIGWINCHt_IndeterminateBouncingBartTimert_IndeterminateProgressBart_EveryMethodObject(tselfR RRtpbar((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pytget_progressbarAs<         N(t__name__t __module__t__doc__t_PROGRESS_BAR_COMMAND_ARGStARGSRR/(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR 6sR,cBseZd„Zd„ZRS(cOsdS(N((R-Rtkwargs((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyt do_nothingrscCstj|dƒS(NR6(tobjectt__getattribute__(R-tname((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR8us(R0R1R6R8(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR,qs R+cBseZd„ZRS(cCs |j|_tjj|ƒdS(N(tcurrvalRRR$tfinish(R-((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR;{s (R0R1R;(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR+zsR)cBs eZdZd„Zd„ZRS(s» A BouncingBar that moves exactly one space each time it updates, rather than one space per unit. This is mainly used for downloads with unknown lengths. cOs#tjj|||Žd|_dS(Ni(Rt BouncingBart__init__t'_IndeterminateBouncingBar__update_count(R-RR5((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR=…scCsI|j}|j|_tjj|||ƒ}||_|jd7_|S(Ni(R:R>RR<tupdate(R-R.twidtht orig_currvaltretval((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR?‰s    (R0R1R2R=R?(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR)s RcBseZdZd„ZRS(s kMGTPEZYcCsa|jdkrd}d}n,ttj|jdƒƒ}|jd|}dj||j|ƒS(Niig@s {0:6.2f} {1}B(R:tinttmathtlogRtPREFIXES(R-R.tpowert scaledval((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR?”s  (R0R1RFR?(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR‘sRcBs;eZddd„Zd„Zd„Zd„Zd„ZRS(cCs—||_d|_d|_d|_t|_|rHdj|ƒ|_n d|_|jr~dj|jt |jƒƒ|_ndj|jƒ|_dS(Nis{0} ts {0}{{0}}/{1} s {0}{{0}} ( RR:Rt_last_displayed_valt _last_updatedRt _finishedRt!_MachineReadableCounter__templateRC(R-RR ((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR=Ÿs        cCs|jƒdS(N(t_display(R-((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pytstart¯scCsd||_tjƒ|j}|dkr`|j|jkr`|j r`|jƒtjƒ|_ndS(Ngš™™™™™¹?(R:ttimeRKRJRLRN(R-tvaltdelta((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR?²s    cCs/|jr|j|_n|jƒt|_dS(N(RR:RNtTrueRL(R-((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR;ºs  cCs5tjj|jjt|jƒƒƒ|j|_dS(N(RtstderrtwriteRMRRCR:RJ(R-((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyRNÀs%N(R0R1RR=ROR?R;RN(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyRžs    (targparseRDR&RRPRt ImportErrortrequestbuilderRRRtstdouttisattyRtSUPPRESSR3RR7R R,R$R+R<R)tWidgetRR(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyts@      ;