
    &`i                         d dl Z d dlmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ  e            \  ZZe G d de
                      ZdS )    N)AnyDictUnion)try_import_torch)SeriesStats)DeveloperAPIc                   <    e Zd ZdZdZdej        defdZddZ	dd	e
f fd
ZdeddfdZede
fd            Zedefd            Zdde
deed f         f fdZeddeeef         fd            Zdeeef         f fdZdeeef         ddf fdZdefdZ xZS )SumStatszPA Stats object that tracks the sum of a series of singular values (not vectors).sumvaluesreturnc                 *    t          j        |          S N)npnansum)selfr   s     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/rllib/utils/metrics/stats/sum.py_np_reduce_fnzSumStats._np_reduce_fn   s    y       torch.Tensorc                    |t                               |                    }t          |          dk    r!t                               d|j                  S t                               |                                          S )z1Reduce function for torch tensors (stays on GPU).r   g        )device)torchisnanlentensorr   r   float)r   r   clean_valuess      r   _torch_reduce_fnzSumStats._torch_reduce_fn   sf     u{{62223|!!<<FM<:::yy++--...r   Fwith_throughputc                 x     t                      j        di | || _        t          j                    | _        dS )zInitializes a SumStats instance.

        Args:
            throughput: If True, track a throughput estimate based on the time between consecutive calls to reduce().
        N )super__init__track_throughputtimeperf_counter_last_throughput_measure_time)r   r    kwargs	__class__s      r   r$   zSumStats.__init__   sC     	""6""" / .2->-@-@***r   r&   Nc                 6    | j         s
J d            || _        d S )NzEinitialize_throughput_reference_time can only be called on root stats)is_rootr(   )r   r&   s     r   $initialize_throughput_reference_timez-SumStats.initialize_throughput_reference_time+   s3    L	S 	SR	S 	S-1***r   c                     | j         S r   )r%   r   s    r   has_throughputszSumStats.has_throughputs1   s    $$r   c                     | j         s
J d            |                     d          t          j                    | j        z
  z  S )z-Returns the throughput since the last reduce.z7Throughput tracking is not enabled on this Stats objectTcompile)r%   peekr&   r'   r(   r/   s    r   throughputszSumStats.throughputs5   sY     !	E 	ED	E 	E! yyy&&$"DD
 	
r   Tr3   c                     t                                          d          }| j        rt          j                    | _        |r|S |                                 }|g|_        |S )NTr2   )r#   reducer%   r&   r'   r(   cloner   )r   r3   reduce_valuereturn_statsr*   s       r   r7   zSumStats.reduce@   sd    ww~~d~33   	E151B1D1DD. 	 zz||+nr   c                     t          j        | |          }|i |d|d         iS | i |d| j        iS t          d          )z;Returns the initialization arguments for this Stats object.)stats_objectstateNr    r%   z-Either stats_object or state must be provided)r   _get_init_argsr%   
ValueError)r<   r=   
super_argss      r   r>   zSumStats._get_init_argsN   s     !/\QVWWW
!5);#<   %!<#@  
 LMMMr   c                 \    t                                                      }| j        |d<   |S )z&Returns the state of the stats object.r%   )r#   	get_stater%   r   r=   r*   s     r   rB   zSumStats.get_state_   s+    !!##$($9 !r   r=   c                 d    t                                          |           |d         | _        d S )Nr%   )r#   	set_stater%   rC   s     r   rE   zSumStats.set_statee   s/    %    %&8 9r   c                 `    d|                                   d| j         dt          |            S )Nz	SumStats(z	; window=z; len=)r4   _windowr   r/   s    r   __repr__zSumStats.__repr__i   s0    P499;;PPPPSYYPPPr   )r   r   )F)T)NN)__name__
__module____qualname____doc__stats_cls_identifierr   ndarrayr   r   r   boolr$   r-   propertyr0   r5   r   r   r7   staticmethodr   strr>   rB   rE   rH   __classcell__)r*   s   @r   r
   r
      s       ZZ !BJ !5 ! ! ! !/ / / /A A A A A A A A2 24 2 2 2 2 % % % % X% 
U 
 
 
 X
 d eCO.D       N Nc3h N N N \N 4S>      :tCH~ :$ : : : : : :Q# Q Q Q Q Q Q Q Qr   r
   )r&   typingr   r   r   numpyr   ray.rllib.utils.frameworkr   $ray.rllib.utils.metrics.stats.seriesr   ray.util.annotationsr   r   _r
   r"   r   r   <module>rZ      s     # # # # # # # # # #     6 6 6 6 6 6 < < < < < < - - - - - -q \Q \Q \Q \Q \Q{ \Q \Q \Q \Q \Qr   