#Tc@shddkZddkZddkZddkZddkZddklZddkii Z ddk ii Z ddk Z ddkiZddklZddklZeiZddklZdefdYZeeedZd efd YZd efd YZd efdYZdefdYZdefdYZdZ defdYZ!defdYZ"de"e!fdYZ#de"fdYZ$de#fdYZ%de%fdYZ&d e#fd!YZ'd"e#fd#YZ(d$e#fd%YZ)d&e)fd'YZ*d(e#fd)YZ+e,d*Z-dS(+iN(twraps(tglobal_settings(t printengine(tdequetProgressTrackerExceptioncBseZdZdZRS(sThrown if a ProgressTracker determines that it can't be instantiated. For example, the tracker which depends on a UNIX style terminal should throw this exception if it can't find a valid terminal.cCsddi|iS(NsProgressTrackerException: %st (tjointargs(tself((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__str__5s(t__name__t __module__t__doc__R (((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR1sc Cs|o$|t|:}|t|:}n|}t||}|o9|o2||jo%t|||jo |}qnt||}|id}|d|d!t|||d} | |d||S(sFormat a pair of numbers 'v1' and 'v2' representing a fraction, such as v1=3 v2=200, such that for all anticipated values of v1 (0 through v2) , the result is a fixed width pair separated by '/': format_pair("%d", 3, 200) --> " 3/200" 'format1' is the preferred number format. In the event that targetwidth is specified and the width of (format1 % v2 > targetwidth), then 'format2' is used instead: format_pair("%.1f", 20.322, 1000.23, targetwidth=5, format2="%d") --> " 20/1000" This provides a mechanism for downshifting the accuracy of an output to preserve column width. Inputs are scaled (divided by 'scale') if scale is specified.t%iit/(tfloattlentfindtstr( tformat1tv1tv2tscalet targetwidthtformat2t realformattv2lent formatpercenttv1format((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt format_pair9stSpeedEstimatorcBszeZdZdZdZdZedZd dZ d dZ d dZ dZ d Z d Zd ZRS( sThis class implements a rudimentary download speed estimator. newdata() is used to indicate download progress; curl calls us back pretty frequently so that's not a terrible way to go. Download progress records are kept on a deque, and are expired after self.interval seconds have elapsed. Speed estimates are smoothed so that things don't bounce around too fast. The class also implements some heuristics designed to prevent handing out crappy estimates early in the download.g$@g\(\?cCsX||_t|_d|_d|_d|_t|_t|_ d|_ d|_ dS(Ni( t goalbytesRt_SpeedEstimator__dequet_SpeedEstimator__intervalbytest_SpeedEstimator__curtotaltNonet"_SpeedEstimator__last_smooth_speedtTruet_SpeedEstimator__instartupt_SpeedEstimator__noestimatet_SpeedEstimator__starttimet_SpeedEstimator__donetime(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__init__ps        cCsh|djodSti|d}|djpt|djoti|d}n|d7}|S(Ns%(num).1f%(shortunit)siis%(num)d%(shortunit)ss/s(R#tmisct bytes_to_strR(tspeedtspeedstr((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt format_speed}s     c Cs>|ipt|o|n ti}|i|7_|ii||f|i|7_xct|idjoL|id\}}|||ijo |i|8_|ii qbPqbW|idd|idd}t|idjp |djot |_ dS|i djodn|it |i }|io7t|idjo!||idjo t|_n|io|djo t|_nt|id jp||id jo t |_ n t|_ |i|}|idjo ||_n)t|i|id |i||_dS( sAdd new data as it becomes available; timestamp can be overridden, although this is primarily designed for testing.iiigNi2g@gQ?i g4@g?(R(tAssertionErrorttimeR"R tappendR!RtINTERVALtpopleftR%R'RRR&tFalseR$R#tintt SMOOTHING( Rtnbytest timestamptcurtimettstvalt timelapset ratiocompletetcurspeed((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytnewdatas> #    *    cCs3|i pt|o|n ti|_dS(N(R(R0R1(RR9((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytstartscCs3|i pt|o|n ti|_dS(N(R)R0R1(RR9((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdonescCs1|ip|ip |i odSt|iS(N(R'R&R$R#R6(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytget_speed_estimates cCsA|idjodS|idjodS|it|iS(Ng(R)R#telapsedRR(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytget_final_speeds cCs#|idjodS|i|iS(N(R)R#R((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRDscCsd}|ii}|id|t|7}|d7}x]t|iD]L\}\}}|ddjo|d7}n|d||i|f7}qLW|d7}|S( Ns(t__dict__tcopytpopRt enumerateR R((RtstdtxR9R8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s   N(R R R R3R7R*t staticmethodR/R#R@RARBRCRERDR (((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR^s   U     t PrintTimercBs2eZdZdZdZdZdZRS(sThis helper class is used to implement damping of excessive printing by progress trackers. 'print_value': This is a handy 'clicker' attribute which can be read to get a monotonically increasing count of the number of times time_to_print() has returned True. Can be used to key a spinner, e.g.: print "%c" % (pt.print_value % len(__spinner_chars)) cCsd|_||_d|_dS(Ni(t print_valuet_PrintTimer__delayt_PrintTimer__last_print_time(Rtdelay((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s  cCs d|_dS(Ni(RQ(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytresetscCsti|_dS(N(R1RQ(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt reset_nowscCsDti}||i|ijotS||_|id7_tS(Ni(R1RQRPR5ROR%(Rttt((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt time_to_print's   (R R R R*RSRTRV(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRN s     tOutSpeccBs2eZdZeeddZdZdZRS(sOutSpec is used by the progress tracker frontend to convey contextual information to backend routines about the output being requested. 'first' means "this is the first output for this group of items" (so perhaps print a header). 'last' similarly means "this is the last output for this group of items." Additional strings can be passed via the 'changed' list, denoting other events of significance.cCs3||_||_|djogn||_dS(N(tfirsttlastR#tchanged(RRXRYRZ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*9s  cCsd}||iodnd7}||iodnd7}|io,x)|iD]}|dt|7}qPWn|d7}|S(Ns (RXRYRZR(RRJtchg((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR >s   cCs-t|ipt|ip t|iS(N(tboolRXRYRZ(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt __nonzero__Hs N(R R R R5R#R*R R_(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRW0s t TrackerItemcBsMeZdZdZdZdZdZdZdZdZ RS(sThis class describes an item of interest in tracking progress against some "bucket" of work (for example, searching a filesystem for some item). This provides a way to wrap together begin and end times of the operation, the operation's name, and 'curinfo'-- some additional tidbit of information (such as the current directory being scanned).cCsCd|_||_d|_d|_t|_d|_d|_dS(Nii(t starttimetnameR#tendtimetitemsR5tprintedtcurinfo(RRb((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*Vs      cCs|i|idS(N(R*Rb(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRSjscCs|djp|idjo||i|d}|iodt|i}nd|i|i|fS(NR[s (%s)s <%s: %s%s>(RfRRbRd(Rtinfo((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s ( R R R R*RSRjRARBRDR (((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR`Ms      tGoalTrackerItemcBsbeZdZdZdZdZedZdZdZ dZ dZ d Z RS( sWThis class extends TrackerItem to include the notion of progress towards some goal which is known in advance of beginning the operation (such as downloading 37 packages). In addition to the features of TrackerItem, this class provides helpful routines for conversion to printable strings of the form " 3/100".cCsti||d|_dS(N(R`R*R#t goalitems(RRb((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*scCs|i|idS(N(R*Rb(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRSscCs|djp|idjo||i|(RfRRbRw(RRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s ( R R R R*RSRjR%RBRqRwRxR{R (((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRls        cstfd}|S(NcstdidS(NsE%s is abstract in superclass; you must implement it in your subclass.(tNotImplementedErrorR (Rtkwargs(tfunc(s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytenforce_abstracts(R(R~R((R~s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt pt_abstractstProgressTrackerBackendcBseZdZedZedZedZedZedZedZ edZ edZ ed Z ee d Zed Zed Zd ZedZedZedZedZedZedZedZedZedZedZedZedZedZedZedZ edZ!RS(cCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _output_flushscCsdS(N((Rt old_purposet new_purpose((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_change_purposescCsdS(N((Rtoutspec((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_cache_cats_output!scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_load_cat_cache_output$scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_refresh_output_progress'scCsdS(N((RRtplanitem((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _plan_output*scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_plan_output_all_done-scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _mfst_fetch0scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _mfst_commit3scCsdS(N((RRtrepository_scan((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_ver_output6scCsdS(N((Rterrors((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_ver_output_error9scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_ver_output_done<scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_fix_output?scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_fix_output_errorAscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_fix_output_infoDscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_fix_output_doneGscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_archive_outputJscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _dl_outputMscCsdS(N((RRt actionitem((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _act_outputPscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_act_output_all_doneSscCsdS(N((RRtjobitem((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _job_outputVscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_republish_outputYscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _lint_output\scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_li_recurse_start_output_scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_li_recurse_end_outputbscCsdS(N((Rtlintstdouttstderr((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_li_recurse_output_outputescCsdS(N((RRB((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_li_recurse_status_outputhscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_li_recurse_progress_outputkscCsdS(N((RtpfmriR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _reversionns("R R R*RRRRRRRRRRR5RRRRRRRRRRRRRRRRRRRR(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs>  tProgressTrackerFrontendcBsieZdZdZdZdZdZdZdZeeeeeegZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(dZ)dZ*d%Z+dZ,d&Z-e.d'Z/e.d(Z0e.d)Z1e.d*Z2e.d+Z3e.d,Z4e.d-Z5e.d.Z6e.d/Z7e.d0Z8e.e9d1Z:e.d2Z;e.d3Z<e.d4Z=e.d5Z>e.d6Z?e.dmd7ZAe.dd8ZBe.d9ZCe.d:ZDe.d;ZEe.d<ZFe.d=ZGe.d>ZHe.d?ZIe.e9d@ZJe.dAZKe.dBZLe.dCZMe.dDZNe.dEZOe.dFZPe.dGZQe.dHZRe.dIZSe.dJZTe.dKZUe.dLZVe.dMZWe.dNZXe.dOZYe.dPZZe.dQZ[e.e9dRZ\e.e9dSZ]e.dTZ^e.dUZ_e.dVZ`e.dWZae.dXZbe.dmdYZce.ddZZde.d[Zee.d\Zfe.dmdmd]Zge.d^Zhe.d_Zie.e9d`Zje.daZke.dbZle.dcZme.ddZne.deZoe.dfZpe.dgZqe.dhZre.diZse.djZte.d%d%d%dkZue.dlZvRS(nsThis essentially abstract class forms the interface that other modules in the system use to record progress against various goals.iiiiiiidieifigihiiijikiliminioiiii,i-i.i/i0i1i2i3i4i5i6i7i8i9i:icCshtd|i6td|i6td|i6td|i6td|i6d|i6|_td|ii D|_ htd|i6td|i6td|i6td |i6td |i6|_ dS( NtStartuptPlanningtDownloadtActionstFinalizeR[cssx|]}t|VqWdS(N(R(t.0RL((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pys s t Downloadingt Executingt Processing( Rrt PHASE_PREPLANt PHASE_PLANtPHASE_DOWNLOADt PHASE_EXECUTEtPHASE_FINALIZEt PHASE_UTILITYt phase_namestmaxtvaluestphase_max_widthtli_phase_names(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s"cCsdS(N((Rtpurpose((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt set_purposescCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt get_purposescCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytreset_downloadscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRSscCsdS(N((Rt majorphase((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytset_major_phasescCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytflushscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytcache_catalogs_startscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytcache_catalogs_donescCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytload_catalog_cache_startscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytload_catalog_cache_donescCsdS(N((Rtpub_cntt full_refreshttarget_catalog((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt refresh_startscCsdS(N((Rtpub((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrefresh_start_pubscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrefresh_end_pubscCsdS(N((RRR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrefresh_progress scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt refresh_done scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytplan_all_startscCsdS(N((Rtplanidtgoal((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt plan_startscCsdS(N((RRtnitems((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytplan_add_progressscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt plan_donescCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt plan_all_donescCsdS(N((Rt goal_mfsts((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmanifest_fetch_start scCsdS(N((Rt completion((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmanifest_fetch_progress#scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmanifest_commit&scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmanifest_fetch_done)scCsdS(N((Rtnpkgs((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_start-scCsdS(N((RtpkgfmriR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_start_pkg0scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_add_progress3scCsdS(N((RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_yield_error6scCsdS(N((RRtwarnings((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_yield_warning9scCsdS(N((RRRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_yield_info<scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_end_pkg?scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_verify_doneBscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_fix_startFscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_fix_add_progressIscCsdS(N((RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_fix_yield_errorLscCsdS(N((RRRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepo_fix_yield_infoOscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt repo_fix_doneRscCsdS(N((RtarcnameRR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytarchive_set_goalVscCsdS(N((RRR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytarchive_add_progressYscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt archive_done\scCsdS(N((RRtnfilesR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdownload_set_goal`scCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdownload_start_pkgcscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdownload_end_pkgfscCsdS(s9Call to provide news that the download has made progress.N((RRR8tcachehit((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdownload_add_progressiscCsdS(s&Call when all downloading is finished.N((Rtdryrun((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt download_donenscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdownload_get_progresssscCsdS(N((Rtactionidtnactions((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytactions_set_goalwscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytactions_add_progresszscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt actions_done}scCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytactions_all_donescCsdS(N((RtjobidR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt job_startscCsdS(N((RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytjob_add_progressscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytjob_donescCsdS(N((RRt ngetbytest nsendbytes((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepublish_set_goalscCsdS(N((RRtgetbytest sendbytes((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepublish_start_pkgscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepublish_end_pkgscCsdS(s7Call to provide news that the upload has made progress.N((RR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytupload_add_progressscCsdS(s'Call when all republishing is finished.N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytrepublish_donescCsdS(s.Call to indicate a new phase of lint progress.N((RRmtlint_phasetype((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytlint_next_phasescCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytlint_add_progressscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt lint_donescCsdS(s6Called once an image determines its linked image name.N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytset_linked_namescCsdS(s/Call when we recurse into a child linked image.N((Rtpkg_opttotal((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytli_recurse_startscCsdS(s.Call when we return from a child linked image.N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytli_recurse_endscCsdS(s^Call to update the progress tracker with the list of images being operated on.N((Rt lin_runningRB((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytli_recurse_statusscCsdS(s4Call to display output from linked image operations.N((RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytli_recurse_outputscCsdS(s4Call to indicate that the named child made progress.N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytli_recurse_progressscCsdS(N((Rt goal_pkgst goal_revs((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytreversion_startscCsdS(N((RRtpkgst reversionedtadjusted((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytreversion_add_progressscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytreversion_donesN(wR R R RRRRRRt MAJOR_PHASEtPLAN_SOLVE_SETUPtPLAN_SOLVE_SOLVERtPLAN_FIND_MFSTt PLAN_PKGPLANtPLAN_ACTION_MERGEtPLAN_ACTION_CONFLICTtPLAN_ACTION_CONSOLIDATEtPLAN_ACTION_MEDIATIONtPLAN_ACTION_FINALIZEtPLAN_MEDIATION_CHGtPLAN_PKG_VERIFYt PLAN_PKG_FIXt ACTION_REMOVEtACTION_INSTALLt ACTION_UPDATEt JOB_STATE_DBtJOB_IMAGE_STATEtJOB_FAST_LOOKUPt JOB_PKG_CACHEtJOB_READ_SEARCHtJOB_UPDATE_SEARCHtJOB_REBUILD_SEARCHtJOB_REPO_DELSEARCHtJOB_REPO_UPDATE_CATtJOB_REPO_ANALYZE_RMtJOB_REPO_ANALYZE_REPOtJOB_REPO_RM_MFSTtJOB_REPO_RM_FILEStJOB_REPO_VERIFY_REPOtJOB_REPO_FIX_REPOtPURPOSE_NORMALtPURPOSE_LISTINGtPURPOSE_PKG_UPDATE_CHKtLINT_PHASETYPE_SETUPtLINT_PHASETYPE_EXECUTER*RRRRRSRRRRRRR5RRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR RRRRRRRRRRRRRR!R%R&(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRqs    tProgressTrackercBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZedZdZdZdZdZdZdHdZddZdZdZdZdZdZdZdZ edZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0ed-Z1ed.Z2d/Z3d0Z4d1Z5d2Z6dHd3Z7dd4Z8d5Z9d6Z:dHdHd7Z;d8Z<d9Z=ed:Z>d;Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFdCZGdDZHdEdEdEdFZIdGZJRS(IsThis class is used by the client to render and track progress towards the completion of various tasks, such as download, installation, update, etc. The superclass is largely concerned with tracking the raw numbers, and with calling various callback routines when events of interest occur. The callback routines are defined in the ProgressTrackerBackend class, below. Different subclasses provide the actual rendering to the user, with differing levels of detail and prettiness. Note that as currently envisioned, this class is concerned with tracking the progress of long-running operations: it is NOT a general purpose output mechanism nor an error collector. Most subclasses of ProgressTracker need not override the methods of this class. However, most subclasses will need need to mix in and define ALL of the methods from the ProgressTrackerBackend class.iicCs(ti|ti||idS(N(RR*RRS(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s  cCsd|_d|_d|_ttd|_ttd|_ttd|_|i|i|ig|_ ttd|_ ttd|_ dS(NisDownload packagessDownload filessDownload bytessRepublished pkgssRepublish sent bytes( R#tdl_modet dl_cachingt dl_estimatorRlRrtdl_pkgstdl_filestdl_bytest _dl_itemst repub_pkgstrepub_send_bytes(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCs%|i|_|i|_ttd|_ttd|_d|_ t |_ ttd|_ ttd|_ttd|_ttd|_ttd|_ttd|_ttd |_ttd |_ttd |_td |_h ttd |i6ttd|i6ttd|i6ttd|i6ttd|i6ttd|i6ttd|i6ttd|i6ttd|i6ttd|i 6ttd|i!6ttd|i"6|_#httd|i$6ttd|i%6ttd|i&6|_'httd|i(6ttd|i)6ttd|i*6ttd|i+6ttd |i,6ttd!|i-6ttd"|i.6ttd#|i/6ttd$|i06ttd%|i16ttd&|i26ttd'|i36ttd(|i46ttd)|i56ttd*|i66|_7|i8d|_9d|_:d|_;d|_<d|_=g|_>d|_?d+|_@dS(,NsRefresh Publisherss Refresh bytessDownload ManifestssCommitted ManifestssVerify Repository ContentsFix Repository ContentsArchived itemssArchived bytessProcessed PackagessReversioned PackagessAdjusted PackagesR[s Solver setupsRunning solversFinding local manifestssPackage planningsMerging actionss Checking for conflicting actionssConsolidating action changessEvaluating mediatorssFinalizing action plansEvaluating mediator changessVerifying PackagessFixing PackagessRemoving old actionssInstalling new actionssUpdating modified actionssUpdating package state databasesUpdating image statesCreating fast lookup databasesUpdating package cachesReading search indexsUpdating search indexsBuilding new search indexsDeleting search indexsUpdating catalogsAnalyzing removed packagessAnalyzing repository packagessRemoving package manifestssRemoving package filessVerifying repository contentsFixing repository contenti(ARt major_phaseRFRRlRrt pub_refreshR`tpub_refresh_bytesR#trefresh_target_catalogR5trefresh_full_refresht mfst_fetcht mfst_committ repo_ver_pkgstrepo_fixt archive_itemst archive_bytestreversion_pkgstreversion_revstreversion_adjst plan_genericR(R)R*R+R,R-R.R/R0R1R2R3t _planitemsR4R5R6t _actionitemsR7R8R9R:R;R<R=R>R?R@RARBRCRDREt _jobitemsRt _archive_namet lint_phaseRt lintitemst linked_nametlinked_runningt linked_pkg_opt linked_total(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRSsv            cCs ||_dS(N(RU(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR|scCs|idS(sUsed to signal to the progresstracker that it should make the output ready for use by another subsystem. In a terminal-based environment, this would make sure that no partially printed lines were present, and flush e.g. stdout.N(R(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs:|i}||_||ijo|i||ndS(N(RR(RRtop((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCs|iS(N(R(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|itdtdS(NRX(RRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|itdtdS(NRY(RRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|itdtdS(NRX(RRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|itdtdS(NRY(RRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs[|ii||i_|ii||_||_|io|iptndS(N(RVRSRmRWRYRXR0(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs      cCs\t}||i_|iip t|_n|iidt|i_|i|dS(Ntstartpublisher( RWRVRfReR%RXRZR2R(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs     cCsj||iijpt|iiptt}|iid|iid7_|i|dS(Nt endpublisheri( RVRfR0ReRWRZR2RdR(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCsa|djp||iijpt|iipt|ii|7_|itdS(N( R#RVRfR0ReRWRdRRW(RRR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs'cCs:|iidt|ii|itdtdS(NRuRY(RVRBR5RWRRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCs.|i|i|ii|iidS(N(RRRcRSRA(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCsY|i|}|i|o-t|tptdn||_n|idS(Ns"can't set goal on non-goal tracker(RdRSt isinstanceRlRnRmRA(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs    cCsL|i|}td|i }|i|7_|i||t|_dS(NRX(RdRWReRdRR%(RRRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCsB|i|}|i|io|itdt|ndS(NRY(RdRBReRRWR%(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCs|ii|idS(N(RcRBR(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCs6|ii|ii||i_||i_dS(N(RZRSR[Rm(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCs|i|i|igjpttd|ii }t|i_|o&|iid7_|i i dn|i |dS(NRXit manifests( RURRR0RWRZReR%RdRZR2R(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs# cCsh|i|i|igjpttd|ii }t|i_|iid7_|i |dS(NRXi( RURRR0RWR[ReR%RdR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs # cCsQ|iidt|iidt|iio|itdtndS(NRuRY(RZRBR5R[ReRRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCs|ii||i_dS(N(R\RSRm(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s cCsX||iijo"|iid7_||i_n|itddgd|dS(NiRZtstartpkgR(R\RfRdRRW(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCs|itdS(N(RRW(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|i|dS(N(R(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs)|itddgd|i_dS(NRZtendpkg(RRWR#R\Rf(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|iidS(N(R\RB(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR scCs|ii||i_dS(N(R]RSRm(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR#s cCs|itdS(N(RRW(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR'scCs|i|dS(N(R(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*scCs|i|dS(N(R(RRRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR-scCs|iidS(N(R]RB(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR0scCs%||_||i_||i_dS(N(RgR^RmR_(RRRR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR3s  cCsdt}|iipt|i_t|_n|ii|7_|ii|7_|i|dS(N(RWR_ReR%RXR^RdR(RRR8R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR8s    cCsE|ii|ii|iio|itdtndS(s#Call when all archiving is finishedRYN(R^RBR_ReRRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRAs   cCsI|i|_||i_||i_||i_t|ii|_dS(N(tDL_MODE_DOWNLOADRLRORmRPRQRRN(RRRR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRIs     cCs|i|i||i_tddg}|iidjoD|iip&t|i_|i i t|_ n|i |ndS(NRZRsi( RRRORfRWRQRmReR%RNRARXR(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRPs     cCsF|iid7_|iidjo|itddgndS(NiiRZRt(RORdRQRmRRW(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR]scCsE|iidjo|ii|7_n|iidjo|ii|7_n|o%|id7_|ii|8_nd|_|ii||iidjot}|djo|i i dn|djo|i i dn|i |i jo|i |n|i |ijo|i|qAndS(s8Call to provide news that the download has made progressiiRQRPN(RQRmRdRPRMRNRR@RWRZR2RLRuRtDL_MODE_REPUBLISHR(RRR8RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRbs&    cCs|o||ii|i_|ii|i_|ii|i_|iidd|ii|iidd|iiddn|ii|ii|ii|ii|iidjo|i t dt ndS(s&Call when all downloading is finished.R9iRYN( RORmRdRPRQRNRAR@RBRRWR%(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs    cCs>|i|ijpt|i|}|i||_dS(sCalled to set the goal for a particular phase of action activity (i.e. ACTION_REMOVE, ACTION_INSTALL, or ACTION_UPDATE. N(RURR0ReRSRm(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCs\|i|ijpt|i|}|id7_|itd|idj|dS(NiRX(RURR0ReRdRRW(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCsb|i|ijpt|i|}|i|idjo|itdt|ndS(s2Called when done each phase of actions processing.iRYN( RURR0ReRBRmRRWR%(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCs>td|iiD}|djo|indS(Ncssx|]}|iVqWdS(N(Rd(RRL((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pys s i(tsumReRR(Rt total_actions((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCsq|i|}|it}|o-t|tptdn||_nt|_|i ||dS(Ns"can't set goal on non-goal tracker( RfRSRWRqRlRnRmR%ReR(RRRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs      cCsL|i|}td|i }t|_|i|7_|i||dS(NRX(RfRWReR%RdR(RRRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCsB|i|}|i|io|itdt|ndS(NRY(RfRBReRRWR%(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCsU|i|_||i_||i_||i_d|i_t|ii|_dS(Nii@l( RvRLRSRmRTRQRPRRN(RRR R ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s      cCst|tiipt|dj oT|dj ptd|i_||i_||i _ d|i _||i _n||i _ tddg}|i ip&t|_t|i _|i in|i idjo|i|ndS(NiRZRs(RqtpkgtfmritPkgFmriR0R#RQRdRmRNRRTRSRfRWReR%RXRAR(RRR R R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs          cCs/|iid7_|itddgdS(NiRZRt(RSRdRRW(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs=|iidjo&|ii|7_|itndS(s6Call to provide news that the upload has made progressiN(RTRmRdRRW(RR8((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|o:|ii|i_|ii|i_|ii|i_n|ii|ii|ii|iidjo<tdt}|ii |_ |i |t|i_ndS(s&Call when all republishing is finishediRYN( RSRmRdRTRQRBRWR%ReRXR(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s    cCs||_|idj o|itdtn|idjo d|_n|id7_||ijotd|i}ntd|i}t||_ ||i _ |itdtdS(NRYiis Lint setup %ds Lint phase %dRX( RRhR#RRWR%RIRrRlRiRm(RRmRt phasename((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs   cCs&|iid7_|itdS(Ni(RiRdRRW(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR/scCs1d|_|io|itdtndS(NRY(R#RhRiRRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR3s  cCs ||_dS(s6Called once an image determines its linked image name.N(Rj(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR8scCs ||_||_|idS(s1Called when we recurse into a child linked image.N(RlRmR(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR<s  cCs|idS(s0Called when we return from a child linked image.N(R(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRCscCs t||_|i|dS(s^Call to update the progress tracker with the list of images being operated on.N(tsortedRkR(RRRB((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRGscCs|i|||dS(s4Call to display output from linked image operations.N(R(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRNscCs|i|dS(s4Call to indicate that the named child made progress.N(R(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRRscCsO|ii|ii|ii||i_||i_d|i_dS(Ni(RbRSRaR`Rm(RRR ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR!Vs      icCsyt}|iipt|i_t|_n|ii|7_|ii|7_|ii|7_|i||dS(N( RWR`ReR%RXRaRdRbR(RRR"R#R$R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR%^s    cCs[|ii|ii|iidt|iio|idtdtndS(NRutDoneRY( R`RBRaRbR5ReRRWR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR&js    N(KR R R RuRvR*RRSRRRRRRRRR5RRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR RRRRRRRRRRRRRR!R%R&(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRKs   x                                          !             tMultiProgressTrackercBseZdZdZRS(sThis class is a proxy, dispatching incoming progress tracking calls to one or more contained (in self._trackers) additional progress trackers. So, you can use this class to route progress tracking calls to multiple places at once (for example, to the screen and to a log file). We hijack most of the methods of the front-end superclass, except for the constructor. For each hijacked method, we substitute a closure of the multido() routine bound with the appropriate arguments.c stig}|D] }||q~_tidjotdnfd}x^tiiD]M\}}|djoqvnti|pqvnt |||qvWdS(NisNo trackers specifiedcsfd}|S(Ncs4x-iD]"}t|}|||q WdS(N(t _trackersRg(RR}ttrktf(Rt method_name(s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmultidos ((RR(R(Rs9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt make_multidosR*( RR*RRRRFt iteritemstinspectt isfunctiontsetattr(Rtptlistt_[1]ttRtmethnametm((Rs9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*}s $   (R R R R*(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRrs tQuietProgressTrackercBseZdZdZRS(sThis progress tracker outputs nothing, but is semantically intended to be "quiet." See also NullProgressTracker below.cCsxti|d}x[tiD]P}|djoq nt||}ti|pq nt|||q WdS(Nc_sdS(N((RR}((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt __donothingsR*(RKR*RRFRgRtismethodR(Rt _QuietProgressTracker__donothingRt boundmeth((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s    (R R R R*(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRstNullProgressTrackercBseZdZRS(s%This ProgressTracker is a subclass of QuietProgressTracker because that's convenient for now. It is semantically intended to be a no-op progress tracker, and is useful for short-running operations which need not display progress of any kind. This subclass should be used by external consumers wanting to create their own ProgressTracker class as any new output methods added to the ProgressTracker class will also be handled here, insulating them from additions to the ProgressTracker class.(R R R (((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs tFunctionProgressTrackercBseZdZeidZRS(sThis ProgressTracker is principally used for debugging. Essentially it uses method replacement in order to create a "tracing" ProgressTracker that shows calls to front end methods and calls from the frontend to the backend.c s ti|_d}fd}xgtiD]\}|djoq8nt|d}ti|pq8nt ||||q8Wxmt iD]b}|djoqnt|d}ti|pqn|}t ||||qWdS(Nc_sdS(N((RR}((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscsfd}|S(Nc sd}x"|D]}|dt|7}q Wx,t|D]}|d|||f7}q8W|d }||id|fIJdS(NR[s%s, s%s=%s, is%s(%s)(RR}t output_file(RR}RJRL(RRt chainedmeth(s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt __printargss  ((RRt#_FunctionProgressTracker__printargs(R(RRs9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmake_printargssR*( RKR*RRRFRgR#RRRR(RRt#_FunctionProgressTracker__donothingRRR((Rs9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s.         (R R R tsysRR*(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRstDotProgressTrackercBs&eZdZdZeiedZRS(slThis tracker writes a series of dots for every operation. This is intended for use by linked images.g?cstiti|dt_t|_fd}xati D]V}|djoqMnt |d}t i |pqMnt||qMWdS(Ntttymodecsfd}|S(Ncs.iioiidddndS(Nt.tendR[(t_ptimerRVt_petcprint(RR}(R(s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytdots((R(R(s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytmake_dotsR*(RKR*RtPOSIXPrintEngineR5RRNRRRFRgR#RRR(RRt term_delayRRR((Rs9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s     (R R R t TERM_DELAYRRR*(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRstCommandLineProgressTrackercBsveZdZdZeid'edZdZdZ d'dZ d'dZ dZ dZ d Zd Zd Zd Zd ZdZdZedZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d Z&d!Z'd"Z(d#Z)d$Z*d%Z+d&Z,RS((sThis progress tracker is a generically useful tracker for command line output. It needs no special terminal features and so is appropriate for sending through a pipe. This code is intended to be platform neutral.g@cCsLti||pti|dt|_n ||_t||_dS(NR(RKR*RRR5RRNR(RRt print_engineR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*7s    cCsE|i|ijodStd|i}|id|i|iS(NR[s {phase:>%d}: tphase(RURRrRtformatR(RRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt _phase_prefixAs cCsI|i|ijodS|ii|i|dd|iidS(NRR[(RRFRRRRRT(Rtmsg((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__generic_startRs cCs`|i|ijodS|djodtd}n|ii|dd|iidS(NRR~Rs (RRFR#RrRRRRS(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__generic_done[s  cCs|i|ijodS|djo8tidjodtd}q]dtd}n|h|id6}|ii|dd|i i dS(NiRsDone (%(elapsed).3fs)R~RDRs ( RRFR#Rtclient_output_verboseRrRDRRRRS(RtitemRtoutmsg((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__generic_done_itemds cCs|iidS(N(RR(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRtscCsy|ii||ijo*|ii|itdddn||ijo|iidtdndS(Ns&Checking that pkg(5) is up to date ...RR[RR~(RRSRHRRRRr(RRntnp((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRws  cCs=|io|itdn|io|indS(NsCaching catalogs ...(RXt*_CommandLineProgressTracker__generic_startRrRYt)_CommandLineProgressTracker__generic_done(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCs=|io|itdn|io|indS(NsLoading catalog cache ...(RXRRrRYR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCs|i|ijodSd|ijol|iii}|iotd|}n/|iotd|}ntd|}|i |nd|ijo|i ndS(NRos"Retrieving target catalog '%s' ...sRetrieving catalog '%s' ...sRefreshing catalog '%s' ...Rp( RRFRZRVRftprefixRXRrRYRR(RRtpR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCsG|io|itd|in|io|i|ndS(Ns%s ...(RXRRrRbRYt._CommandLineProgressTracker__generic_done_item(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCs.|i|itd|iidS(Ns"Planning completed in %.2f seconds(RRRrRcRD(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCs|ii o|i o|i odS|i|ijodS|io|iin|ii|i t dh|i i d6|i i d6dS(Ns7Fetching manifests: %(num)s %(pctcomplete)d%% completetnumt pctcomplete(RRVRXRYRRFRTRRRRrRZRwR{(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCsdS(N((RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|ii|dS(N(RR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_ver_output_warningscCsdS(N((RRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_repo_ver_output_infoscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCsdS(N((RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|ii|dS(N(RR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|ii|dS(N(RR(RRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCsh|ii o|i o|i odS|io|iin|ip|ii}n|ii}|djodnd|ii |}|ippt d|i i |i i dd}|iitdh|iid6|d6|i id 6|d 6nNti|i i }|id td h|d6|iid 6|d 6dS(NR[s(%s)s%.1fRisHDownload: %(num)s items %(mbs)sMB %(pctcomplete)d%% complete %(speed)sRtmbsRR-Rs:Download: Completed %(num)s in %(sec).2f seconds %(speed)stseci(RRVRXRYRTRNRCRER#R/RRQRdRmRRRrRPRwR{R+R,RRD(RRR-R.RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs.        cCsed|ijo3|ii}|itd|idtnd|ijo|indS(NRssRepublish: %s ... tanarchyRt(RZRSRfRRrtget_fmriR%R(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs  cCs|ii o | odS|io|iin|ioKti|ii}|i dt dh|d6|i i d6dSt d|ii|iidd }|iit dh|i id 6|d 6|iid 6dS( NRs2Archiving: Completed %(num)s in %(secs).2f secondsRtsecss%.1fRis@Archiving: %(pair)s items %(mbs)sMB %(pctcomplete)d%% completeRwRRi(RRVRXRTRYR+R,R_RmRRrR^RDRRdRRRwR{(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s       cCs|ii o|i odS|iitd|iiD}td|iiD}|ii|i t dht d||d6|i d6dS(Ncssx|]}|iVqWdS(N(Rd(RRL((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pys .s cssx|]}|iVqWdS(N(Rm(RRL((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pys 0s s%(num)s actions (%(type)s)s%dRttype( RRVRXRTRwReRRRRRrRRb(RRRRxt total_goal((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR(s  cCstd|iiD}td|iiD}|djodS|ii|itdh|d6|d6dS(Ncssx|]}|iVqWdS(N(Rm(RRL((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pys 8s cssx|]}|iVqWdS(N(RD(RRL((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pys :s is7Completed %(numactions)d actions in %(time).2f seconds.t numactionsR1(RwReRRRRRr(RRt total_time((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR6s  cCsA|io|id|in|io|i|ndS(Ns%s ... (RXRRbRYR(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRBs  cCs|iol|i|ijo$|iid|iiddqv|i|ijo|iid|iiqvn|io<|i|ijo|i q|i|ijoqndS(Ns%s ... RR[s # --- %s ---( RXRRIRRRiRbRJRYR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRHs    cCs/|itijo|itddSdS(Ns Linked image publisher check ...(RltpkgdefstPKG_OP_PUBCHECKRRr(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRVs cCsF|itijo|idS|ii|itddS(Ns"Finished processing linked images.(RlRRRRRRRr(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR\s  cCs|pdS|i}t|}xt|D]t\}}||djo|iid|q1||idjo|iid|n|iidq1WdS(Nis| R[t`(t splitlinesRRIRRtstrip(Rtoutputtlinestnlinestlinenumtline((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__li_dump_outputcs   cCsW| o | odS|ii|itd||i||i|dS(NsLinked image '%s' output:(RRRRrt+_CommandLineProgressTracker__li_dump_output(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRps  cCs|itijodSdig}|iD]}|t|q,~}tdhtd||id6t |id6|d6}|i i |i |dS(NRsALinked images: %(pair)s done; %(numworking)d working: %(running)ss%dRwt numworkingtrunning( RlRRRRkRRrRRmRRRR(RRBRtiRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRxs3  cCs|itijodSdS(N(RlRR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs|ii o | odS|io|iin|ioF|idtdh|iid6|i id6|i id6dS|i i tdh|i i d6|ii d6|i id6dS(NRsIReversioned %(revs)s of %(pkgs)s packages and adjusted %(adjs)s packages.trevsR"tadjssIReversioning: %(pkgs)s processed, %(revs)s reversioned, %(adjs)s adjusted(RRVRXRTRYRRrRaRdR`RbRRRw(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs        N(-R R R RRRR#R*RRRRRRRRRRRRRR5RRRRRRRRRRRRRRRRRRRRRRR(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR.sP                      $         tLinkedChildProgressTrackercBseZdZdZRS(spThis tracker is used for recursion with linked children. This is intended for use only by linked images.cCsti||d}xrtiD]g}|djoq#n|idoq#nt||}ti|pq#nt|||q#WdS(Nc_sdS(N((RR}((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRsR*t _li_recurse( RR*RRFt startswithRgRRR(RRt&_LinkedChildProgressTracker__donothingRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s   (R R R R*(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRstFancyUNIXProgressTrackercBsaeZdZdZdZeid&dZdZ dZ dZ dZ dZ d Zd Zd Zd Zd ZdZdZdZdZdZedZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d Z&d!Z'd"Z(d#Z)d$Z*d%Z+RS('sNThis progress tracker is designed for UNIX-like OS's-- those which have UNIX-like terminal semantics. It attempts to load the 'curses' package. If that or other terminal-liveness tests fail, it gives up: the client should pick some other more suitable tracker. (Probably CommandLineProgressTracker).g?g?cCsti|yti|dt|_Wn4tij o%}tddi|i nX|djo'|ii o |i n|i }nt||_t|_d|_|iptdnd|_g|_dS(NRs Couldn't create print engine: %sRsoutput_file is not a TTYs|/-\(RKR*RRR%RtPrintEngineExceptionRRRR#tisslowtTERM_DELAY_SLOWRRNRR5t_phases_hdr_printedt _jobs_lastjobtisattyt(_FancyUNIXProgressTracker__spinner_charst*_FancyUNIXProgressTracker__linked_spinners(RRRte((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR*s&         cCs|iidS(N(RR(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs*|i|ii|dddtdS(NRR[terase(t'_FancyUNIXProgressTracker__generic_doneRRR%(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRs cCs-|iiddddt|iidS(NR[RR(RRR%RRS(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRscCs!|iid|iidS(NR[(RRRRS(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt__generic_done_newlinescCs$|iit|i}|i|S(N(RRORR(Rtsp((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_spinnerscCsE|iipdS|iitd|idddtdS(Ns%Checking that pkg(5) is up to date %cRR[R(RRVRRRrRR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_up2dates   cCs/|ii||ijo|indS(N(RRSRHR(RRnR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s cCs=|io|itdn|io|indS(NsCaching catalogs ...(RXt(_FancyUNIXProgressTracker__generic_startRrRYR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s  cCs=|io|itdn|io|indS(NsLoading catalog cache ...(RXRRrRYR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s  cCs(|i|ijo|idS|iio | odS|iidjo d}ndti|ii}|i ot d}n'|i ot d}n t d}t dh|d 6|i i d 6|i id 6|d 6}|ii|d ddt|io|indS(Ni iR[RsRetrieving target catalogsRetrieving catalogsRefreshing catalogs-%(prefix)s %(pub_cnt)s %(publisher)s%(bytes)sRRt publishertbytesRRi(RRHRRRVRWRdR+R,RXRrRYRVRxRfRRR%RYR(RRR8RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s,         cCs|i|ijo|idS|io|idn|ii o | odSd}t|tod|i }nt dh|i d6|d6|i d6}|i i|ddddd tdS( NR[s: %ss-Creating Plan (%(name)s%(info)s): %(spinner)sRbRktspinnertsepRR(RRHRRXRRRVRqRlRwRrRbRRRR%(RRRt extra_infoR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR7 s    cCs|idS(N(R(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRI scCs;|i|ijo|idS|io|idn|ii o | odS|i|ijo>t dh|i i d6|i i d6|i d6}n|i|ijo>t dh|i i d6|i i d6|i d6}n|ii|d dd dd t|io|indS( NR[s-Creating Plan (%(name)s %(pair)s) %(spinner)cRbRwRs%%(name)s (%(fetchpair)s) %(spinchar)ct fetchpairtspincharRRR(RRHRRXRRRVRURRrRZRbRwRRRRR%RYR(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRL s(     " cCs|ii o | odSt|tiio|idt}n|}|io<|i i dt dt dt dt dfnd||i i |ii |iif}|i i |dd d t|io|indS( NRs%-38s %13s %13s %11stPKGt Processedt ReversionedtAdjusteds%-40.40s %11s %13s %11sRR[R(RRVRqRyRzR{t get_pkg_stemR%RXRRRrR`RwRaRbRdRYt/_FancyUNIXProgressTracker__generic_done_newline(RRRtstemRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRm s   cCs|i|ijo|idS|iipdS|i|ijotd|i}n|i|i jotd|i}n|i i |dddddt dS(Ns(Creating Plan (Committing Manifests): %csCommitting Manifests %cRR[RR( RRHRRRVRURRrRRRRR%(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s  "cCs|iip'|otd}qFtd}n|iii}|ii o | odSd|ijo!|iiddddt dSd||ii |i f}|ii|dddt dS( sIf 'repository_scan' is set and we have no FRMRI set, we emit a message saying that we're performing a scan if the repository. If we have no FMRI, we emit a message saying we don't know what package we're looking at. s/Scanning repository (this could take some time)sUnknown packageNRtR[RRs %-64s %s %c( R\RfRrRRRVRZRRR%RwR(RRRtpkg_stemRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s cCs|i|ii|dS(N(RRR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s cCs0d|i}|ii|dddtdS(Ns%cRR[R(RRRR%(RRRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR scCs|i|ii|dS(N(RRR(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s cCs|i|ii|dS(N(RRR(RRk((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s c Cs|ii o | odS|io3|iidtdtdtdfntd|ii|ii dddd d d }d |i |i i |f}|ii|d ddt |io|indS(Ns%-44s %13s %11stARCHIVEtFILESs STORE (MB)s%.1fRiRiRs%ds%-44.44s %11s %11sRR[Ri(RRVRXRRRrRR_RdRmRgR^RwR%RYR(RRRRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s  ' c Cs|ii o;|i o0|i o%d|ijod|ijodS|ioE|iidtdtdtdtdtdfn|iotd }n|ii i }t |d jod |d }n|io6|i i |i i}|djo d }qxnM|idjo d}n3|i i |i i}|djo d }ntd|ii|iidddddd}d||ii|ii||f}|ii|dddt|io|i|indS(NRsRts%-34s %9s %13s %12s %7stDOWNLOADtPKGSRs XFER (MB)tSPEEDt Completedi"s...is--i tcaches%.1fRg@RiRs%ds%-34.34s %9s %13s %12s %7sRR[Rg0A(RRVRXRYRZRRRrRORftget_nameRRNR/RER#RMRCRRQRdRmRwRPR%R(RRtpkg_nameR.tmbstrRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR sD             cCsr|i o!|i o|ii odS|io<|iidtdtdtdtdfn|io d}n|iii }t |djod|d }nd ||ii t d |i i|i id dddddt d |ii|iid dddddf}|ii|dtdd|io|i|indS(Ns%-40s %12s %11s %11stPROCESStITEMSsGET (MB)s SEND (MB)Ri(s...is%-40.40s %12s %11s %11ss%.1fRiRiRs%dRRR[ii(RXRYRRVRRRrRSRfRRRwRRQRdRmRTR%R(RRRRJ((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR s0       cCsB|iodS|iidtdtdft|_dS(Ns %-40s %11stPHASER(RRRRrR%(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyt_print_phases_hdr! s &cCs|idjodS|io|in|ii o|i o|i odS|iid|i|i fdddt |io|i ndS(Nis %-40s %11sRR[R( RmRXR RRVRYRRRbRwR%R(RRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR' s  # cCsdS(N((R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR6 scCs|ii o| o||ijodS||_|io|in|iodn |i}t|to|i }n$|io t dn t d}|i i d|i ||fdddt|io|indS(NR[R~tworkings %-40s %11s %sRR(RRVRRXR RYRRqRlRwRrRRRbR%R(RRRtspinR<((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR9 s  #  cCsr|ii o|i odS|iid|ii|iifdddt|io|i ndS(Ns %-40s %11sRR[R( RRVRYRRRiRbRwR%R(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRN s   cCs/|itijo|itddSdS(NsLinked image publisher check(RlRRRRr(R((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRV s cCsl|itijodStdh|i|id6td|i|id6}|ii |dt dS(Ns&%(phasename)s linked: %(numdone)s doneR|s%dtnumdoneR( RlRRRrRRURRmRRR%(RR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR\ s  cCs|pdS|i}t|}xt|D]t\}}||djo|iid|q1||idjo|iid|n|iidq1WdS(Nis| R[R(RRRIRRR(RRRRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRe s   cCso| o)| o!|iiddtdddS|iitd|dt|i||i|dS(NR[RRsLinked image '%s' output:(RRR%Rrt)_FancyUNIXProgressTracker__li_dump_output(RRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyRr s cCs|itijodS|i|ijp t|idig}|iD]}|t|qL~}t dh|i|id6t d||i d6t |id6|d6}|i i|dtttid t |i|_dS( NRsG%(phase)s linked: %(numdone)s done; %(numworking)d working: %(running)sRs%dR RRRi(RlRRRURR0RRkRRrRRmRRRR%tlistt itertoolstrepeatR(RRBRRRR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyR| s 3  cCs|itijodS|iipdS|ii|}|i|dt|i |i|d!||d}xi|i,D][\}}xL|D]D}x|D]} |i?d| qW|i?ddt i |qWqW|i@Wntj o|inXy|i|iAd}!|iB|iC|!|iB|iD|!|iB|iE|!xe|iC|iD|iEgD]K}"x5t"d|!D]$}|iF|"t i d"|qW|iG|"qW|iHWntj o|inXy|i|iIxtiiD]\}#}$|#id#pqAn|id$d%} y|iJ|$d| Wn t!j o|iJ|$nXx5t"d| D]$}|iK|$t i d|qW|iL|$qAWWntj o|inXyz|ix_|iM|iNgD]K}%|iOd&|%x2t"ddD]!}|iPt i d|q` Wq: W|iQWntj o|inXdS()NisUse ctrl-c to skip sectionsg?g?ischrysler/lebarons mazda/mx-5s acura/tsxshonda/civic-sis=a-very-very-long-package-name-which-will-have-to-be-truncatediRtwooptgubtziptyoweeiiiig?tPLAN_iidRg{Gz?Rg?i2ii g@t testarchiveg~jtX?tJOB_iiii i(RtrandomR5RRRKRHRFRRRt PublisherRR1tsleepRRRRRRRtKeyboardInterruptRRRR}RRFRdRRtrandintRRntrangeRRRRRRR%RRRtxrangetminR2RRyRzR{RRRRRR RRRRRRRRRR4R5R6RRRRRRRRIRJRRR(&RtgofastRtfasttdlscripttpurpRLRRtktvtplanidsRtrtpkgnmt perpkgfilest pkggoalfilest pkggoalbytest filesizemaxthunkmaxt approx_timetpkgnametfilelistRtfilesizethunkstdeltat pauseperfiletntpkgfilesRztpkgfilethunkRtacttjobnametjobR((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pyttest_progress_tracker s              '                       (.RRRyRR1t functoolsRtpkg.client.pkgdefstclientRtpkg.client.publisherRtpkg.fmriRytpkg.miscR+t pkg.clientRRRst collectionsRt ExceptionRR#RtobjectRRNRWR`RlRRRRKRRRRRRRRR5R?(((s9/usr/lib/python2.6/vendor-packages/pkg/client/progress.pytsN        $%Nf _f- It