ó ĘI Rc@sgdZddlZddlZddlZddlZddlmZddlTddd„ƒYZdS(s= Progress display callback classes for the yum command line. i˙˙˙˙N(t_(t*tRPMInstallCallbackcBsSeZdZdd„Zd„Zd„Zd„Zed„Zd„Z d„Z RS( sCYum command line callback class for callbacks from the RPM library.icCs'||_i|_d|_d|_g|_d|_d|_d|_d|_ t j dƒ|_ t |_itdƒt6tdƒt6tdƒt6tdƒt6tdƒt6tdƒt6|_itd ƒt6td ƒt6td ƒt6td ƒt6tdƒt6td ƒt6|_d|_dS( Nit#is"yum.filelogging.RPMInstallCallbacktUpdatingtErasingt Installingt ObsoletedtUpdatedtErasedt Installed(toutputtcallbackfilehandlest total_actionsttotal_installedtinstalled_pkg_namest total_removedtmarktmarkstNonetlastmsgtloggingt getLoggertloggertFalsetfilelogRt TS_UPDATEtTS_ERASEt TS_INSTALLtTS_TRUEINSTALLt TS_OBSOLETEDt TS_OBSOLETINGt myprocesst mypostprocessttsInfo(tselfR ((s/usr/share/yum-cli/callback.pyt__init__ s0                  cCsN|d}|dkrd}n t|ƒ}|d|d||d|dfS(Ntepocht0tnametarchtversiontrelease(Rtstr(R#thdrttmpepochR%((s/usr/share/yum-cli/callback.pyt _dopkgtup<s    cCs1d|d|d|d|d|df}|S(Ns%s:%s.%s-%s-%sR%R'R)R*R(((R#R,thandle((s/usr/share/yum-cli/callback.pyt _makeHandleCscCs|jr|GHndS(N(R (R#tmsg((s/usr/share/yum-cli/callback.pyt _localprintIs c Csîtt|jƒƒ}d||f}d|d|d}||j|j|jf}|jd|}d||f}d|d} |rÄ| |jt||dƒf} d | d |} n&| |j|f} d | d |} | S( Ns%s.%ss[%ss/%ss]is%-tsgY@s %-10.10s: %-28.28s t s %-10.10s: %-28.28s (tlenR+R RRRRtint( R#tpercenttprogresstltsizetfmt_donetdoneRtwidthtfmt_bartbartfmt((s/usr/share/yum-cli/callback.pyt_makefmtMs "cCs`|j|ƒ\}}}}}|dkrCd||||f}nd|||||f}|S(s5return nice representation of the package for the logR&s %s.%s %s-%ss%s.%s %s:%s-%s(R.(R#R,tntatetvtrtpkg((s/usr/share/yum-cli/callback.pyt _logPkgString^s  cCsn|tjkr*|dkrj||_qjn@|tjkr<n.|tjkrNn|tjkrňd|_d}|dk rÜ|\}}|j|ƒ}t j |t j ƒ} | |j |<|j d7_ |jj|dƒ| S|jtdƒƒnx|tjkröd}|dk rj|\}}|j|ƒ}t j|j |ƒd} |j|ƒ} |jjd| ƒ} x„| D]y} y$|j| j} |j| j}Wntk r°nX|jrs|j|ƒ}d||f}|jj|ƒqsqsWqjnt|tjkr&|dk rjt |ƒt dƒkrŕ|dkr>d}n|d |}|j!r t"j#j$ƒr |j%|ƒ}|td ƒ|f}||kr˘|d }n||jkrÝt"j#j&|ƒt"j#j'ƒ||_qÝq q#|\}}|dkrd}n|d |}|j|ƒ} |jjd| ƒ} xí| D]â} y|j| j} Wn/tk r…}td ƒ| j|dfGHq:X|j!r:t"j#j$ƒsŞ||kr:|j%|ƒ}|| |df}||jkrt"j#j&|ƒt"j#j'ƒ||_n||krd GHqq:q:WqjnD|tj(kr8n2|tj)krJn |tj*kr4|j+d7_+|jrŁ||jkrŁtd|ƒ}|jj|ƒn|j!rjt"j#j$ƒrj||jkrŮtdƒ} n tdƒ} d}|j%|t,ƒ}|| |f}t"j#j&|d ƒt"j#j'ƒqjn6|tj-krFn$|tj.krXn|tj/krjndS(sţHandle callbacks from the RPM library. :param what: number identifying the type of callback :param bytes: the number of bytes associated with the callback; the exact meaning depends on the type of the callback. For example, for a RPMCALLBACK_INST_PROGRESS callback, bytes will represent the current amount of work done :param total: the total amount of work associated with the callback; the exact meaning depends on the type of the callback. For example, *total* may represent the total number of transactions in a transaction set :param h: a package object or string identifying the package involved in the callback :param user: unused iiR'sNo header - huh?itpkgtups%s: %stldt Repackages s&Error: invalid output state: %s for %sR4s Erased: %stRemovingtCleanupidN(0trpmtRPMCALLBACK_TRANS_STARTR tRPMCALLBACK_TRANS_PROGRESStRPMCALLBACK_TRANS_STOPtRPMCALLBACK_INST_OPEN_FILERRR0tostopentO_RDONLYR RRtappendR2RtRPMCALLBACK_INST_CLOSE_FILEtcloseR.R"t getMembersR t output_stateR!tKeyErrorRRHRtinfotRPMCALLBACK_INST_PROGRESSttypeR tsyststdouttisattyRAtwritetflushtRPMCALLBACK_UNINST_STARTtRPMCALLBACK_UNINST_PROGRESStRPMCALLBACK_UNINST_STOPRRtRPMCALLBACK_REPACKAGE_STARTtRPMCALLBACK_REPACKAGE_STOPtRPMCALLBACK_REPACKAGE_PROGRESS(R#twhattbytesttotalthtuserR,trpmlocR/tfdRIttxmbrsttxmbrtprocesst processedtpkgrepR1R7R@RDtlogmsg((s/usr/share/yum-cli/callback.pytcallbackhsÄ                     $    ( t__name__t __module__t__doc__R$R.R0R2tTrueRARHRw(((s/usr/share/yum-cli/callback.pyRs      (( RzRNRSR_RtyumRt yum.constantsR(((s/usr/share/yum-cli/callback.pyts