
      i"$                     B   d dl mZmZmZ d dlmZ e G d d             Ze G d de             Ze G d de             Ze G d	 d
e             Z	e G d de             Z
e G d de
             Ze G d de
             Ze G d de             Ze G d de             Zy)    )asdict	dataclassfield)overridec                   N    e Zd ZdZdefdZdeddfdZededd fd       Zd	dZ	y)
_BaseProgressz>Mixin that implements state-loading utilities for dataclasses.returnc                     t        |       S N)r   selfs    u/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pytorch_lightning/loops/progress.py
state_dictz_BaseProgress.state_dict   s    d|    r   Nc                 :    | j                   j                  |       y r   )__dict__updater   r   s     r   load_state_dictz_BaseProgress.load_state_dict   s    Z(r   c                 6     |        }|j                  |       |S r   )r   )clsr   objs      r   from_state_dictz_BaseProgress.from_state_dict   s    eJ'
r   c                     t         )zReset the object's state.)NotImplementedErrorr   s    r   resetz_BaseProgress.reset#   s    !!r   r	   N)
__name__
__module____qualname____doc__dictr   r   classmethodr   r    r   r   r   r      sK    HD )$ )4 )  /  
"r   r   c                   X    e Zd ZU dZdZeed<   dZeed<   edd       Z	ddZ
d	eddfd
Zy)_ReadyCompletedTrackeraF  Track an event's progress.

    Args:
        ready: Intended to track the number of events ready to start.
        completed: Intended to be incremented after the event completes (e.g. after ``on_*_end`` runs).

    These attributes should be increased in order, that is, :attr:`ready` first and :attr:`completed` last.

    r   ready	completedr	   Nc                      d| _         d| _        y)zReset the state.r   Nr'   r(   r   s    r   r   z_ReadyCompletedTracker.reset7   s     
r   c                 &    | j                   | _        y)zReset the progress on restart.

        If there is a failure before all attributes are increased, restore the attributes to the last fully completed
        value.

        N)r(   r'   r   s    r   reset_on_restartz'_ReadyCompletedTracker.reset_on_restart=   s     ^^
r   nc                 X    | xj                   |z  c_         | xj                  |z  c_        y r   r*   r   r-   s     r   increment_byz#_ReadyCompletedTracker.increment_byF   s    

a
!r   r   )r   r   r    r!   r'   int__annotations__r(   r   r   r,   r0   r$   r   r   r&   r&   (   sF     E3NIs 
$c d r   r&   c                   r     e Zd ZU dZdZeed<   ed
 fd       Zed
 fd       Z	ededdf fd	       Z
 xZS )_StartedTrackera  Track an event's progress.

    Args:
        ready: Intended to track the number of events ready to start.
        started: Intended to be incremented after the event is started (e.g. after ``on_*_start`` runs).
        completed: Intended to be incremented after the event completes (e.g. after ``on_*_end`` runs).

    These attributes should be increased in order, that is, :attr:`ready` first and :attr:`completed` last.

    r   startedr	   Nc                 0    t         |           d| _        y Nr   )superr   r5   r   	__class__s    r   r   z_StartedTracker.resetZ   s    r   c                 D    t         |           | j                  | _        y r   )r8   r,   r(   r5   r9   s    r   r,   z _StartedTracker.reset_on_restart_   s     "~~r   r-   c                 N    t         |   |       | xj                  |z  c_        y r   )r8   r0   r5   r   r-   r:   s     r   r0   z_StartedTracker.increment_byd   s    Qr   r   )r   r   r    r!   r5   r1   r2   r   r   r,   r0   __classcell__r:   s   @r   r4   r4   K   s\    	 GS  & & c d  r   r4   c                   r     e Zd ZU dZdZeed<   ed
 fd       Zed
 fd       Z	ededdf fd	       Z
 xZS )_ProcessedTrackera  Track an event's progress.

    Args:
        ready: Intended to track the number of events ready to start.
        started: Intended to be incremented after the event is started (e.g. after ``on_*_start`` runs).
        processed: Intended to be incremented after the event is processed.
        completed: Intended to be incremented after the event completes (e.g. after ``on_*_end`` runs).

    These attributes should be increased in order, that is, :attr:`ready` first and :attr:`completed` last.

    r   	processedr	   Nc                 0    t         |           d| _        y r7   )r8   r   rB   r9   s    r   r   z_ProcessedTracker.resetz   s    r   c                 D    t         |           | j                  | _        y r   )r8   r,   r(   rB   r9   s    r   r,   z"_ProcessedTracker.reset_on_restart   s     "r   r-   c                 N    t         |   |       | xj                  |z  c_        y r   )r8   r0   rB   r=   s     r   r0   z_ProcessedTracker.increment_by   s    Q!r   r   )r   r   r    r!   rB   r1   r2   r   r   r,   r0   r>   r?   s   @r   rA   rA   j   s\    
 Is  ( ( c d  r   rA   c                       e Zd ZU dZ ee      Zeed<    ee      Z	eed<   ddZ
ddZdd	Zdd
ZddZedee   dedd fd       Zedd       ZddZddZdeddfdZededdfd       Zy)	_ProgresszTrack aggregated and current progress.

    Args:
        total: Intended to track the total progress of an event.
        current: Intended to track the current progress of an event.

    default_factorytotalcurrentr	   Nc                 r    | j                   j                  | j                  j                  urt        d      y )Nz?The `total` and `current` instances should be of the same class)rJ   r:   rK   
ValueErrorr   s    r   __post_init__z_Progress.__post_init__   s/    ::t||'='==^__ >r   c                     | j                   xj                  dz  c_        | j                  xj                  dz  c_        y N   )rJ   r'   rK   r   s    r   increment_readyz_Progress.increment_ready   s,    

Aar   c                    t        | j                  t              s-t        d| j                  j                  j
                   d      | j                  xj                  dz  c_        | j                  xj                  dz  c_        y )N`z$` doesn't have a `started` attributerQ   )
isinstancerJ   r4   	TypeErrorr:   r   r5   rK   r   s    r   increment_startedz_Progress.increment_started   s`    $**o6a

 4 4 = =>>bcdd

a!r   c                    t        | j                  t              s-t        d| j                  j                  j
                   d      | j                  xj                  dz  c_        | j                  xj                  dz  c_        y )NrT   z&` doesn't have a `processed` attributerQ   )rU   rJ   rA   rV   r:   r   rB   rK   r   s    r   increment_processedz_Progress.increment_processed   sa    $**&78a

 4 4 = =>>deff

!!#r   c                     | j                   xj                  dz  c_        | j                  xj                  dz  c_        y rP   )rJ   r(   rK   r   s    r   increment_completedz_Progress.increment_completed   s,    

!!#r   tracker_clskwargsc                 .     |  |di | |di |      S )zZUtility function to easily create an instance from keyword arguments to both ``Tracker``s.)rJ   rK   r$   r$   )r   r\   r]   s      r   from_defaultsz_Progress.from_defaults   s!     .v.8Mf8MNNr   c                 l    | j                   j                          | j                  j                          y r   )rJ   r   rK   r   s    r   r   z_Progress.reset   s"    

r   c                 8    | j                   j                          y r   )rK   r   r   s    r   reset_on_runz_Progress.reset_on_run   s    r   c                 8    | j                   j                          y r   )rK   r,   r   s    r   r,   z_Progress.reset_on_restart   s    %%'r   r-   c                 p    | j                   j                  |       | j                  j                  |       y r   )rJ   r0   rK   r/   s     r   r0   z_Progress.increment_by   s&    

"!!!$r   r   c                 |    | j                   j                  |d          | j                  j                  |d          y )NrJ   rK   )rJ   r   rK   r   s     r   r   z_Progress.load_state_dict   s0    

"":g#67$$Z	%:;r   r   )r   r   r    r!   r   rA   rJ   r&   r2   rK   rN   rR   rW   rY   r[   r#   typer1   r_   r   r   rb   r,   r0   r"   r   r$   r   r   rG   rG      s     %*:K$LE!L&+<M&NG#N` "$$ O-C(D OPS OXc O O  (%c %d % <$ <4 < <r   rG   c                        e Zd ZU dZdZeed<   ed fd       Zed fd       Z	dde
deddf fd	Zed
eddf fd       Z xZS )_BatchProgressaW  Tracks batch progress.

    These counters are local to a trainer rank. By default, they are not globally synced across all ranks.

    Args:
        total: Tracks the total batch progress.
        current: Tracks the current batch progress.
        is_last_batch: Whether the batch is the last one. This is useful for iterable datasets.

    Fis_last_batchr	   Nc                 0    t         |           d| _        y NF)r8   r   ri   r9   s    r   r   z_BatchProgress.reset   s    "r   c                 0    t         |           d| _        y rk   )r8   rb   ri   r9   s    r   rb   z_BatchProgress.reset_on_run   s    "r   r-   c                 2    t         |   |       || _        y r   )r8   r0   ri   )r   r-   ri   r:   s      r   r0   z_BatchProgress.increment_by   s    Q*r   r   c                 8    t         |   |       |d   | _        y )Nri   )r8   r   ri   )r   r   r:   s     r   r   z_BatchProgress.load_state_dict   s    
+'8r   r   )F)r   r   r    r!   ri   boolr2   r   r   rb   r1   r0   r"   r   r>   r?   s   @r   rh   rh      sv    	  M4# # # #+c +$ +4 + 9$ 94 9 9r   rh   c                   J    e Zd ZU dZ ee      Zeed<    ee      Zeed<   y)_SchedulerProgressa  Tracks scheduler progress.

    These counters are local to a trainer rank. By default, they are not globally synced across all ranks.

    Args:
        total: Tracks the total scheduler progress.
        current: Tracks the current scheduler progress.

    rH   rJ   rK   N)	r   r   r    r!   r   r&   rJ   r2   rK   r$   r   r   rq   rq      s+     %*:P$QE!Q&+<R&SG#Sr   rq   c                       e Zd ZU dZ ed       Zeed<    ed       Zeed<   e	dd	       Z
dd
ZddZe	deddfd       Zy)_OptimizerProgresszTrack optimizer progress.

    Args:
        step: Tracks ``optimizer.step`` calls.
        zero_grad: Tracks ``optimizer.zero_grad`` calls.

    c                  4    t         j                  t              S r   )rG   r_   r&   r$   r   r   <lambda>z_OptimizerProgress.<lambda>  s    I4K4KLb4cr   rH   stepc                  4    t         j                  t              S r   )rG   r_   r4   r$   r   r   ru   z_OptimizerProgress.<lambda>  s    9P9PQ`9ar   	zero_gradr	   Nc                 l    | j                   j                          | j                  j                          y r   )rv   r   rx   r   s    r   r   z_OptimizerProgress.reset	  s     		r   c                 l    | j                   j                          | j                  j                          y r   )rv   rb   rx   r   s    r   rb   z_OptimizerProgress.reset_on_run  s"    		 ##%r   c                 l    | j                   j                          | j                  j                          y r   )rv   r,   rx   r   s    r   r,   z#_OptimizerProgress.reset_on_restart  s"    		""$'')r   r   c                 |    | j                   j                  |d          | j                  j                  |d          y )Nrv   rx   )rv   r   rx   r   s     r   r   z"_OptimizerProgress.load_state_dict  s0    		!!*V"45&&z+'>?r   r   )r   r   r    r!   r   rv   rG   r2   rx   r   r   rb   r,   r"   r   r$   r   r   rs   rs      sk     ,cdD)d 1abIyb &* @$ @4 @ @r   rs   c                       e Zd ZU dZ ee      Zeed<   ede	fd       Z
edd       ZddZdd	Zed
eddfd       Zy)_OptimizationProgressz[Track optimization progress.

    Args:
        optimizer: Tracks optimizer progress.

    rH   	optimizerr	   c                 V    | j                   j                  j                  j                  S r   )r   rv   rJ   r(   r   s    r   optimizer_stepsz%_OptimizationProgress.optimizer_steps'  s    ~~""((222r   Nc                 8    | j                   j                          y r   )r   r   r   s    r   r   z_OptimizationProgress.reset+  s    r   c                 8    | j                   j                          y r   )r   rb   r   s    r   rb   z"_OptimizationProgress.reset_on_run/  s    ##%r   c                 8    | j                   j                          y r   )r   r,   r   s    r   r,   z&_OptimizationProgress.reset_on_restart2  s    '')r   r   c                 @    | j                   j                  |d          y )Nr   )r   r   r   s     r   r   z%_OptimizationProgress.load_state_dict5  s    &&z+'>?r   r   )r   r   r    r!   r   rs   r   r2   propertyr1   r   r   r   rb   r,   r"   r   r$   r   r   r~   r~     sw     %*:L$MI!M3 3 3  &* @$ @4 @ @r   r~   N)dataclassesr   r   r   typing_extensionsr   r   r&   r4   rA   rG   rh   rq   rs   r~   r$   r   r   <module>r      s   1 0 & " " "( ]  D ,  <   > ;< ;< ;<| 9Y 9 9D T T T @ @ @> @M @ @r   