o
    i                     @  sD   d dl mZ d dlZd dlZd dlZG dd dZG dd dZdS )    )annotationsNc                   @  sZ   e Zd ZdZdZdZdddZedd	 Zej	ddd	Zdd Z
dddZdddZdS )ProgressCalculator   g?   initialintc                 C  st   |pd| _ | j | _d| _tddd| _td dd| _d| _t | _	| j	| _
t | _i | _| j	g| _| jg| _d S )Nr   gffffff?)	smoothingg?)_initial
downloadedelapsedSmoothValuespeedeta_totaltime	monotonic_start_time_last_update	threadingLock_lock_thread_sizes_times_downloaded)selfr    r   I/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/utils/progress.py__init__   s   



zProgressCalculator.__init__c                 C  s   | j S N)r   r   r   r   r   total"   s   zProgressCalculator.totalvalue
int | Nonec                 C  sJ   | j  |d ur|| jk r| j}|| _W d    d S 1 sw   Y  d S r   )r   r
   r   r   r!   r   r   r   r    &   s
   "c                 C  s>   t  }| j d| j|< W d    d S 1 sw   Y  d S Nr   )r   	get_identr   r   )r   current_threadr   r   r   thread_reset.   s   "zProgressCalculator.thread_resetsizec                 C  sb   |sd S t  }| j | j|d}|| j|< | ||  W d    d S 1 s*w   Y  d S r$   )r   r%   r   r   get_update)r   r(   r&   	last_sizer   r   r   update3   s   
"zProgressCalculator.updatec                 C  s@  t  }|  j|7  _|| j | _| jd ur | j| jkr | j| _| j| j |kr*d S || _| j	
| | j
| j t| j	|| j }| j	d |= | jd |= t| j	dk rc| j  | j  d S || j	d  }|snd S | j| j| jd  |  | jr| jjr| j| jkr| j| j| j | jj  d S | j  d S )N   r   )r   r   r
   r   r   r    r   r   SAMPLING_RATEr   appendr   bisectbisect_leftSAMPLING_WINDOWlenr   resetr   setr!   GRACE_PERIOD)r   r(   current_timeoffsetdownload_timer   r   r   r*   >   s0   

 zProgressCalculator._updateN)r   r   )r!   r"   )r(   r"   )r(   r   )__name__
__module____qualname__r2   r.   r6   r   propertyr    setterr'   r,   r*   r   r   r   r   r      s    


r   c                   @  s(   e Zd ZdddZddd	Zd
d ZdS )r   r   float | Noner   floatc                 C  s   | | _  | _| _|| _d S r   )r!   smoothr	   
_smoothing)r   r   r   r   r   r   r   a   s   
zSmoothValue.__init__r!   c                 C  s<   || _ | jd u r| j | _d S d| j | | j| j  | _d S )Nr   )r!   rA   rB   r#   r   r   r   r5   e   s   
 zSmoothValue.setc                 C  s   | j  | _| _d S r   )r	   r!   rA   r   r   r   r   r4   l   s   zSmoothValue.resetN)r   r?   r   r@   )r!   r@   )r:   r;   r<   r   r5   r4   r   r   r   r   r   `   s    

r   )
__future__r   r0   r   r   r   r   r   r   r   r   <module>   s    X