
    V|h                    P    S SK Jr  S SKrS SKrS SKr " S S5      r " S S5      rg)    )annotationsNc                  |    \ rS rSrSrSrSrSS jr\S 5       r	\	R                  SS j5       r	S rSS	 jrSS
 jrSrg)ProgressCalculator      g?   c                ~   U=(       d    SU l         U R                   U l        SU l        [        SSS9U l        [        S SS9U l        SU l        [        R                  " 5       U l	        U R                  U l
        [        R                  " 5       U l        0 U l        U R                  /U l        U R                  /U l        g )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     O/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/utils/progress.py__init__ProgressCalculator.__init__   s    1-- c2
ts3>>+ ,,^^%
-/''( OO,    c                    U R                   $ N)r   r   s    r   totalProgressCalculator.total"   s    {{r!   c                    U R                      Ub  XR                  :  a  U R                  nXl        S S S 5        g ! , (       d  f       g = fr#   )r   r   r   r   values     r   r%   r&   &   s0    ZZ U__%<K	 ZZs	   %;
A	c                    [         R                  " 5       nU R                     SU R                  U'   S S S 5        g ! , (       d  f       g = fNr   )r   	get_identr   r   )r   current_threads     r   thread_resetProgressCalculator.thread_reset.   s1    ",,.ZZ12D~. ZZs	   ;
A	c                   U(       d  g [         R                  " 5       nU R                     U R                  R	                  US5      nXR                  U'   U R                  X-
  5        S S S 5        g ! , (       d  f       g = fr+   )r   r,   r   r   get_update)r   sizer-   	last_sizes       r   updateProgressCalculator.update3   s\    ",,.ZZ**..~qAI15~.LL)* ZZs   >A11
A?c                   [         R                  " 5       nU =R                  U-  sl        X R                  -
  U l        U R
                  b+  U R                  U R
                  :  a  U R                  U l        U R                  U R                  -   U:  a  g X l        U R                  R                  U5        U R                  R                  U R                  5        [        R                  " U R                  X R                  -
  5      nU R                  S U2	 U R                  S U2	 [        U R                  5      S:  a5  U R                   R#                  5         U R$                  R#                  5         g X R                  S   -
  nU(       d  g U R                   R'                  U R                  U R                  S   -
  U-  5        U R
                  (       a  U R                   R(                  (       ad  U R                  U R*                  :  aJ  U R$                  R'                  U R
                  U R                  -
  U R                   R(                  -  5        g U R$                  R#                  5         g )N   r   )r   r   r   r   r   r%   r   r   SAMPLING_RATEr   appendr   bisectbisect_leftSAMPLING_WINDOWlenr   resetr   setr)   GRACE_PERIOD)r   r3   current_timeoffsetdownload_times        r   r2   ProgressCalculator._update>   s   ~~'4#&6&66::!doo

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

$*:*:1*==NO::$****t||d>O>O/OHHLL$**t6$**:J:JJKHHNNr!   )r   r   r   r   r   r   r   r   r   r   r   r   N)r   int)r)   
int | None)r3   rG   )r3   rF   )__name__
__module____qualname____firstlineno__r=   r9   rA   r   propertyr%   setterr.   r5   r2   __static_attributes__ r!   r   r   r      sQ    OML-$   \\   3
	+r!   r   c                  .    \ rS rSrSS jrSS jrS rSrg)	r   `   c                :    U=U l         =U l        U l        X l        g r#   )r)   smoothr   
_smoothing)r   r   r
   s      r   r   SmoothValue.__init__a   s    3::
:T[4=#r!   c                    Xl         U R                  c  U R                   U l        g SU R                  -
  U-  U R                  U R                  -  -   U l        g )Nr   )r)   rS   rT   r(   s     r   r@   SmoothValue.sete   sC    
;;**DKt.%7$//DKK:WWDKr!   c                4    U R                   =U l        U l        g r#   )r   r)   rS   r$   s    r   r?   SmoothValue.resetl   s    #'==0
T[r!   )r   rT   rS   r)   N)r   zfloat | Noner
   float)r)   rZ   )rH   rI   rJ   rK   r   r@   r?   rN   rO   r!   r   r   r   `   s    $X1r!   r   )
__future__r   r;   r   r   r   r   rO   r!   r   <module>r\      s(    "   U Up1 1r!   