3 ft`@spddlmZddlmZmZddlmZddlmZddl m Z ddl Z ddl Z ddl Z Gddde jjZdS) )unicode_literals) format_number format_time) _term_width)unicode)timeNc@sreZdZdZejjdejjdejjdejj diZ e j dddfd d Z d d ZdddZddZddZddZdS)MultiFileProgressMeterz"Multi-file download progress meterZFAILEDZSKIPPEDZMIRRORZDRPMg333333?g?g@cCsp||_||_||_||_d|_d|_tjj|_d|_ d|_ d|_ g|_ i|_ d|_d|_d|_d|_d|_dS)zCreates a new progress meter instance update_period -- how often to update the progress bar tick_period -- how fast to cycle through concurrent downloads rate_average -- time constant for average speed calculation rN)fo update_period tick_period rate_averageunknown_progres total_drpmsysstdoutisatty done_drpm done_files done_sizeactivestate last_time last_sizerate total_files total_size)selfr r r r r/usr/lib/python3.6/progress.py__init__&s" zMultiFileProgressMeter.__init__cCstjjd||jdS)NZ write_flush)dnfutilZ_terminal_messengerr )rmsgrrrmessage?szMultiFileProgressMeter.messagercCsF||_||_||_d|_d|_d|_g|_i|_d|_d|_ d|_ dS)Nr) rrrrrrrrrrr)rrrZ total_drpmsrrrstartBszMultiFileProgressMeter.startcCst}t|}t|j}t|}||jkrD|df|j|<|jj||j|\}}||f|j|<|j||7_||j|j kr||j kr||_ |j |dS)Nr) rrint download_sizerrappendrrr r_update)rpayloaddonenowtextZtotalr$oldrrrprogressSs    zMultiFileProgressMeter.progresscCsJ|jrj||j}|j|j}|dkrj|dkrj||}|jdk rdt||jd}|||jd|}||_||_|j|_|jsdS|jt||j t |j}|j dkrd|j d}t |jdkr|d|j t |j7}d||j |f}|jo|j rt|j |j|j}nd}d|jr,t|jndt|j|f} tt | } | d d } | d kr0|j r|jd |j } t|j| d |j d \}} d |d| }d| | || f} | | d 8} nj|jd}d} |dkrdn|}d|d | }d| || f} | | d 8} |jd| kr*|jdnd|_|jd| | || fdS)Nrz%dz-%dz (%s/%d): %sz--:--z %5sB/s | %5sB %9s ETA z--- d=-z%3d%% [%-*s]%s z [%-*s]%sz%-*.*s%s)rrrrminr rrr%r lenrrrrrrdivmodr r#)rr+Z delta_timeZ delta_sizerZweightr,nZtime_etar"leftZblZpctpZbarrrrr(gsX        zMultiFileProgressMeter._updatec Cst}}t|}t|j}d}|tjjkr.n|tjjkrJ|jd7_nt||j kr|j j |\}}|j j |||8}|j d7_ |j|7_n(|tjjkr|j d7_ |j|7_|r*|tjjkr|jdkrd|j||j|j|f} nd|j||f} tt| d} d| | |f} nl|jdkrHd|j |j|f}t||d} dtt|| t|t| f} tt| } d | | || f} |j| |j r|j|dS) Nrr/z[%s %d/%d] %s: z [%s] %s: z%s%-*s z (%d/%d): %sgMbP?z %5sB/s | %5sB %9s z%-*.*s%s)rrr%r&r callback STATUS_MIRROR STATUS_DRPMrrpoprremoverrSTATUS_ALREADY_EXISTSr STATUS_2_STRrr9rmaxrfloatrr#r() rr)ZstatusZerr_msgr$r+r,sizer*r"r<ZtmrrrendsH          zMultiFileProgressMeter.endN)r)__name__ __module__ __qualname____doc__r r>Z STATUS_FAILEDrCr?r@rDrstderrrr#r$r.r(rHrrrrrs  5r)Z __future__rZdnf.cli.formatrrZ dnf.cli.termrZ dnf.pycomprrrZ dnf.callbackr Zdnf.utilr>ZDownloadProgressrrrrrs