
    VGh                    P    d dl mZ d dlZd dlZd dlZ G d d      Z G d d      Zy)    )annotationsNc                  l    e Zd ZdZdZdZddZed        Zej                  dd       Zd Z
ddZdd	Zy
)ProgressCalculator   g?   c                |   |xs d| _         | j                   | _        d| _        t        dd      | _        t        d d      | _        d| _        t        j                         | _	        | j                  | _
        t        j                         | _        i | _        | j                  g| _        | j                  g| _        y )Nr   gffffff?)	smoothingg?)_initial
downloadedelapsedSmoothValuespeedeta_totaltime	monotonic_start_time_last_update	threadingLock_lock_thread_sizes_times_downloaded)selfinitials     ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/utils/progress.py__init__zProgressCalculator.__init__   s    1-- c2
ts3>>+ ,,^^%
-/''( OO,    c                    | j                   S N)r   r   s    r   totalzProgressCalculator.total"   s    {{r   c                    | j                   5  ||| j                  k  r| j                  }|| _        d d d        y # 1 sw Y   y xY wr!   )r   r   r   r   values     r   r#   zProgressCalculator.total&   s?    ZZ 	  UT__%<DK		  	  	 s	   %;Ac                    t        j                         }| j                  5  d| j                  |<   d d d        y # 1 sw Y   y xY wNr   )r   	get_identr   r   )r   current_threads     r   thread_resetzProgressCalculator.thread_reset.   s<    ",,.ZZ 	312D~.	3 	3 	3s	   :Ac                    |sy t        j                         }| j                  5  | j                  j	                  |d      }|| j                  |<   | j                  ||z
         d d d        y # 1 sw Y   y xY wr(   )r   r)   r   r   get_update)r   sizer*   	last_sizes       r   updatezProgressCalculator.update3   sk    ",,.ZZ 	+**..~qAI15D~.LL	)*	+ 	+ 	+s   A A--A6c                   t        j                         }| xj                  |z  c_        || j                  z
  | _        | j
                  *| j                  | j
                  kD  r| j                  | _        | j                  | j                  z   |kD  ry || _        | j                  j                  |       | j                  j                  | j                         t        j                  | j                  || j                  z
        }| j                  d |= | j                  d |= t        | j                        dk  r5| j                   j#                          | j$                  j#                          y || j                  d   z
  }|sy | j                   j'                  | j                  | j                  d   z
  |z         | j
                  ry| j                   j(                  rc| j                  | j*                  kD  rJ| j$                  j'                  | j
                  | j                  z
  | j                   j(                  z         y | j$                  j#                          y )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_times        r   r.   zProgressCalculator._update>   s   ~~'4#d&6&66::!doo

&B//DKt111L@(<(0##DKK@T@T1TUKK WfW%t{{aJJHHNN$t{{1~5

$*:*:1*==NO::$****t||d>O>O/OHHLL$**t6$**:J:JJKHHNNr   N)r   int)r&   
int | None)r/   rA   )r/   r@   )__name__
__module____qualname__r8   r4   r<   r   propertyr#   setterr+   r1   r.    r   r   r   r      sQ    OML-$   \\   3
	+r   r   c                  "    e Zd ZddZddZd Zy)r   c                <    |x| _         x| _        | _        || _        y r!   )r&   smoothr
   
_smoothing)r   r   r	   s      r   r   zSmoothValue.__init__a   s    3::
:T[4=#r   c                    || _         | j                  | j                   | _        y d| j                  z
  |z  | j                  | j                  z  z   | _        y )Nr   )r&   rJ   rK   r%   s     r   r;   zSmoothValue.sete   sE    
;;**DKt.%7$//DKK:WWDKr   c                4    | j                   x| _        | _        y r!   )r
   r&   rJ   r"   s    r   r:   zSmoothValue.resetl   s    #'==0
T[r   N)r   zfloat | Noner	   float)r&   rN   )rB   rC   rD   r   r;   r:   rG   r   r   r   r   `   s    $X1r   r   )
__future__r   r6   r   r   r   r   rG   r   r   <module>rP      s(    "   U Up1 1r   