>,Xc@s9ddlZddlZddlZddlZddlZyddlZWnek r_nXddlmZm Z dej kre edddddd ej j d dd d ed ddddd ej j d dd dedddddd dd ejgZn~edddddd ed dd ejed ddddd ed dd ejedddddd dd ejgZdefdYZdefdYZdej krdejfdYZdejfdYZdejfdYZndefdYZdS(iN(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#eZdZeZdddZRS(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|jjdr%td|d|Sdtjkr|jjdtrg}|dk rn||dg7}n|dk r0|tjdtj dddt dtj dg7}d t tkr|j tjn|j tjtjd |d|p tjd d }tjtjt|S|tdddt dtj dtjd dg7}td |d|ptjd d }tjtjt|SntSdS(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,cBseZdZdZRS(cOsdS(N((R-Rtkwargs((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyt do_nothingrscCstj|dS(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+cBseZdZRS(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 eZdZdZdZRS(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 RcBseZdZdZRS(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.pyRsRcBs;eZdddZdZdZdZdZRS(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|jdS(N(t_display(R-((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pytstartscCsd||_tj|j}|dkr`|j|jkr`|j r`|jtj|_ndS(Ng?(R:ttimeRKRJRLRN(R-tvaltdelta((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyR?s    cCs/|jr|j|_n|jt|_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.pyRNs%N(R0R1RR=ROR?R;RN(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyRs    (targparseRDR&RRPRt ImportErrortrequestbuilderRRRtstdouttisattyRtSUPPRESSR3RR7R R,R$R+R<R)tWidgetRR(((sB/usr/lib/python2.7/site-packages/requestbuilder/mixins/progress.pyts@      ;