a
    ;h                     @  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                   @  sj   e Zd ZdZdZdZddddZedd	 Zej	d
ddd	Zdd Z
d
dddZddddZdS )ProgressCalculator   g?   int)initialc                 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   Z/var/www/html/swiplay.fr/scambot/venv/lib/python3.9/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.totalz
int | Nonevaluec                 C  sH   | j . |d ur || jk r | j}|| _W d    n1 s:0    Y  d S r   )r   r
   r   r   r"   r   r   r   r    &   s    c                 C  s<   t  }| j d| j|< W d    n1 s.0    Y  d S Nr   )r   	get_identr   r   )r   current_threadr   r   r   thread_reset.   s    zProgressCalculator.thread_reset)sizec                 C  s`   |sd S t  }| j6 | j|d}|| j|< | ||  W d    n1 sR0    Y  d S r$   )r   r%   r   r   get_update)r   r(   r&   Z	last_sizer   r   r   update3   s    
zProgressCalculator.updatec                 C  sD  t  }|  j|7  _|| j | _| jd ur@| j| jkr@| j| _| j| j |krTd S || _| j	
| | j
| j t| j	|| j }| j	d |= | jd |= t| j	dk r| j  | j  d S || j	d  }|sd S | j| j| jd  |  | jr6| jjr6| j| jkr6| j| j| j | jj  n
| 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offsetZdownload_timer   r   r   r*   >   s0    

 zProgressCalculator._updateN)__name__
__module____qualname__r1   r-   r5   r   propertyr    setterr'   r+   r*   r   r   r   r   r      s   
r   c                   @  s2   e Zd ZdddddZddddZd	d
 ZdS )r   zfloat | Nonefloat)r   r   c                 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 | _nd| j | | j| j  | _d S )Nr   )r"   r>   r?   r#   r   r   r   r4   e   s    

zSmoothValue.setc                 C  s   | j  | _| _d S r   )r	   r"   r>   r   r   r   r   r3   l   s    zSmoothValue.resetN)r8   r9   r:   r   r4   r3   r   r   r   r   r   `   s   r   )
__future__r   r/   r   r   r   r   r   r   r   r   <module>   s
   X