ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
ft`                 @   sp   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m	Z	 d dl
Z
d dlZd dlZG dd dejjZdS )	    )unicode_literals)format_numberformat_time)_term_width)unicode)timeNc               @   sr   e Zd ZdZejjdejjdejjdejj	diZ
ejdddfd	d
Zdd ZdddZdd Zdd Zdd ZdS )MultiFileProgressMeterz"Multi-file download progress meterZFAILEDZSKIPPEDZMIRRORZDRPMg333333?g      ?g      @c             C   sp   || _ || _|| _|| _d| _d| _tjj | _d| _	d| _
d| _g | _i | _d| _d| _d| _d| _d| _dS )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
        r   N)foupdate_periodtick_periodrate_averageunknown_progres
total_drpmsysstdoutisatty	done_drpm
done_files	done_sizeactivestate	last_time	last_sizeratetotal_files
total_size)selfr	   r
   r   r    r   /usr/lib/python3.6/progress.py__init__&   s"    zMultiFileProgressMeter.__init__c             C   s   t jjd|| j d S )NZwrite_flush)dnfutilZ_terminal_messengerr	   )r   msgr   r   r   message?   s    zMultiFileProgressMeter.messager   c             C   sF   || _ || _|| _d| _d| _d| _g | _i | _d| _d| _	d | _
d S )Nr   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   Ztotal_drpmsr   r   r   startB   s    zMultiFileProgressMeter.startc             C   s   t  }t|}t|j}t|}|| jkrD|df| j|< | jj| | j| \}}||f| j|< |  j|| 7  _|| j | j	kr|| j
kr|| _
| j| d S )Nr   )r   r   intdownload_sizer   r   appendr   r   r
   r   _update)r   payloaddonenowtextZtotalr$   oldr   r   r   progressS   s    


zMultiFileProgressMeter.progressc             C   sJ  | j rj|| j  }| j| j }|dkrj|dkrj|| }| jd k	rdt|| j d}|| | jd|   }|| _|| _ | j| _| jsd S | jt|| j	 t
| j  }| jdkrd| jd  }t
| jdkr|d| jt
| j  7 }d|| j|f }| jo| jrt| j| j | j }nd}d| jr,t| jndt| j|f }	t t
|	 }
|
d	 d
 }|dkr0| jr| jd | j }t| j| d
 | j d
\}}d| d|  }d||||	f }	|
|d	 8 }
nj| jd }d}|dk rdn|}d| d|  }d|||	f }	|
|d	 8 }
| jd |k r*| jd nd| _| jd|
|
||	f  d S )Nr      z%dz-%dz(%s/%d): %sz--:--z %5sB/s | %5sB %9s ETAz---           d   =-z%3d%% [%-*s]%s    z     [%-*s]%sz%-*.*s%s)r   r   r   r   minr   r   r   r%   r   lenr   r   r   r   r   r   divmodr   r#   )r   r+   Z
delta_timeZ
delta_sizer   Zweightr,   nZtime_etar"   leftZblZpctpZbarr   r   r   r(   g   sX    




zMultiFileProgressMeter._updatec             C   s  t   }}t|}t|j}d}|tjjkr.n|tjjkrJ|  jd7  _nt|| j	kr| j	j
|\}}| jj| ||8 }|  jd7  _|  j|7  _n(|tjjkr|  jd7  _|  j|7  _|r*|tjjkr| jdkrd| j| | j| j|f }	nd| j| |f }	t t|	 d }
d|	|
|f }	nl| jdkrHd| j| j|f }t|| d}dtt|| t|t|f }	t t|	 }
d	|
|
||	f }	| j|	 | jr| j| d S )
Nr   r/   z[%s %d/%d] %s: z	[%s] %s: z%s%-*s
z(%d/%d): %sgMbP?z %5sB/s | %5sB %9s    
z%-*.*s%s)r   r   r%   r&   r    callbackSTATUS_MIRRORSTATUS_DRPMr   r   popr   remover   r   STATUS_ALREADY_EXISTSr   STATUS_2_STRr   r9   r   maxr   floatr   r#   r(   )r   r)   ZstatusZerr_msgr$   r+   r,   sizer*   r"   r<   Ztmr   r   r   end   sH    



zMultiFileProgressMeter.endN)r   )__name__
__module____qualname____doc__r    r>   ZSTATUS_FAILEDrC   r?   r@   rD   r   stderrr   r#   r$   r.   r(   rH   r   r   r   r   r      s   
5r   )Z
__future__r   Zdnf.cli.formatr   r   Zdnf.cli.termr   Z
dnf.pycompr   r   r   Zdnf.callbackr    Zdnf.utilr>   ZDownloadProgressr   r   r   r   r   <module>   s   