
    &`i                         d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ 	 	 dddddedeee                  d	eee                  d
ee         deeef         ddfdZed             ZdS )    )AnyCallableDictListOptionalRLlibCallback)
force_list)OldAPIStackN)argskwargscallback_namecallbacks_objectscallbacks_functionsr   r   returnc                    t          |          }|D ]} t          ||           |pdi |pi  t          |          }|D ]} ||pdi |pi  dS )a  Calls an RLlibCallback method or a registered callback callable.

    Args:
        callback_name: The name of the callback method or key, for example:
            "on_episode_start" or "on_train_result".
        callbacks_objects: The RLlibCallback object or list of RLlibCallback objects
            to call the `callback_name` method on (in the order they appear in the
            list).
        callbacks_functions: The callable or list of callables to call
            (in the order they appear in the list).
        args: Call args to pass to the method/callable calls.
        kwargs: Call kwargs to pass to the method/callable calls.
     N)r
   getattr)r   r   r   r   r   callback_objcallback_fns          m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/rllib/callbacks/utils.pymake_callbackr      s    , ##455) N N,m,,tzrMv|MMMM %%899* 5 5djb4fl44445 5    c                 2      G  fddt                     }|S )Nc                        e Zd ZdZ fdZddZddZddZddZdd	Z	dd
Z
ddZddZddZddZddZddZddZddZd Zd Z	 	 ddZddZdeddfdZddZ xZS )._make_multi_callbacks.<locals>._MultiCallbacksTc                 j    t                                                       d D             | _        d S )Nc                 "    g | ]} |            S r   r   ).0callback_classs     r   
<listcomp>zK_make_multi_callbacks.<locals>._MultiCallbacks.__init__.<locals>.<listcomp>/   s-     # # #%3  # # #r   )super__init___callback_list)self	__class__callback_class_lists    r   r#   z7_make_multi_callbacks.<locals>._MultiCallbacks.__init__-   s@    GG# #7J# # #Dr   r   Nc                 4    | j         D ]} |j        di | d S Nr   )r$   on_algorithm_initr%   r   callbacks      r   r*   z@_make_multi_callbacks.<locals>._MultiCallbacks.on_algorithm_init3   :     / 5 5**44V44445 5r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_workers_recreatedr+   s      r   r/   zC_make_multi_callbacks.<locals>._MultiCallbacks.on_workers_recreated7   :     / 8 8--7777778 8r   c                     d S Nr   r%   r   s     r   on_env_runners_recreatedzG_make_multi_callbacks.<locals>._MultiCallbacks.on_env_runners_recreated<       Dr   c                     d S r2   r   r3   s     r   !on_offline_eval_runners_recreatedzP_make_multi_callbacks.<locals>._MultiCallbacks.on_offline_eval_runners_recreated?   r5   r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_checkpoint_loadedr+   s      r   r9   zC_make_multi_callbacks.<locals>._MultiCallbacks.on_checkpoint_loadedB   r0   r   c                H    | j         D ]}|                    ||           d S )N)	policy_idpolicy)r$   on_create_policy)r%   r;   r<   r,   s       r   r=   z?_make_multi_callbacks.<locals>._MultiCallbacks.on_create_policyF   s>     / N N))If)MMMMN Nr   c                 4    | j         D ]} |j        di | d S r)   )r$   on_environment_createdr+   s      r   r?   zE_make_multi_callbacks.<locals>._MultiCallbacks.on_environment_createdJ   s:     / : ://99&9999: :r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_sub_environment_createdr+   s      r   rA   zI_make_multi_callbacks.<locals>._MultiCallbacks.on_sub_environment_createdN   s:     / > >33==f====> >r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_episode_createdr+   s      r   rC   zA_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_createdR   s:     / 6 6++55f55556 6r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_episode_startr+   s      r   rE   z?_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_startV   s:     / 4 4))33F33334 4r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_episode_stepr+   s      r   rG   z>_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_stepZ   :     / 3 3((22622223 3r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_episode_endr+   s      r   rJ   z=_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_end^   s:     / 2 2''11&11112 2r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_evaluate_startr+   s      r   rL   z@_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_startb   r-   r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_evaluate_endr+   s      r   rN   z>_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_endf   rH   r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_evaluate_offline_startr+   s      r   rP   zH_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_offline_startl   s:     / = =22<<V<<<<= =r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_evaluate_offline_endr+   s      r   rR   zF_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_offline_endp   s:     / ; ;00::6::::; ;r   c                D    | j         D ]}	 |	j        d|||||||d| d S )N)workerepisodeagent_idr;   policiespostprocessed_batchoriginal_batchesr   )r$   on_postprocess_trajectory)
r%   rT   rU   rV   r;   rW   rX   rY   r   r,   s
             r   rZ   zH_make_multi_callbacks.<locals>._MultiCallbacks.on_postprocess_trajectoryt   se     !/ 
 
22 	!#%'%(;%5	 	 	 	 	 	
 
r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_sample_endr+   s      r   r\   z<_make_multi_callbacks.<locals>._MultiCallbacks.on_sample_end   s:     / 1 1&&0000001 1r   resultc                <    | j         D ]} |j        d|||d| d S )N)r<   train_batchr]   r   )r$   on_learn_on_batch)r%   r<   r_   r]   r   r,   s         r   r`   z@_make_multi_callbacks.<locals>._MultiCallbacks.on_learn_on_batch   sU     !/  ** !{6 MS    r   c                 4    | j         D ]} |j        di | d S r)   )r$   on_train_resultr+   s      r   rb   z>_make_multi_callbacks.<locals>._MultiCallbacks.on_train_result   rH   r   )r   N)__name__
__module____qualname__IS_CALLBACK_CONTAINERr#   r*   r/   r4   r7   r9   r=   r?   rA   rC   rE   rG   rJ   rL   rN   rP   rR   rZ   r\   dictr`   rb   __classcell__)r&   r'   s   @r   _MultiCallbacksr   *   s        $	 	 	 	 	 		5 	5 	5 	5	8 	8 	8 	8
	 	 	 		 	 	 		8 	8 	8 	8	N 	N 	N 	N	: 	: 	: 	:	> 	> 	> 	>	6 	6 	6 	6	4 	4 	4 	4	3 	3 	3 	3	2 	2 	2 	2	5 	5 	5 	5	3 	3 	3 	3	= 	= 	=	; 	; 	;	 	 	 	 	0	1 	1 	1 	1	26		 	 	 		3 	3 	3 	3 	3 	3 	3 	3r   ri   r   )r'   ri   s   ` r   _make_multi_callbacksrj   (   sJ    p3 p3 p3 p3 p3 p3 p3- p3 p3 p3d r   )NN)typingr   r   r   r   r   ray.rllib.callbacks.callbacksr	   ray.rllib.utilsr
   ray.rllib.utils.annotationsr   strr   rj   r   r   r   <module>rp      s   6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 & & & & & & 3 3 3 3 3 3
 8<485
 !5 5 55] 345 "$x.15
 s)5 cN5 
5 5 5 5@ s s s s sr   