o
    1 i                     @   s   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dZedd ZdS )    )AnyCallableDictListOptionalRLlibCallback)
force_list)OldAPIStackN)argskwargscallback_namecallbacks_objectscallbacks_functionsr   r   returnc                C   sZ   t |}|D ]}t|| |pdi |pi  qt |}|D ]}||p#di |p'i  q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   Zcallback_objZcallback_fnr   r   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/ray/rllib/callbacks/utils.pymake_callback   s   r   c                    s   G  fdddt }|S )Nc                       s   e Zd ZdZ fddZd/ddZd/dd	Zd/d
dZd/ddZd/ddZ	d/ddZ
d/ddZd/ddZd/ddZd/ddZd/ddZd/ddZd/ddZd/d d!Zd"d# Zd$d% Z		d/d&d'Zd/d(d)Zd*eddfd+d,Zd/d-d.Z  ZS )0z._make_multi_callbacks.<locals>._MultiCallbacksTc                    s   t    dd D | _d S )Nc                 S   s   g | ]}| qS r   r   ).0Zcallback_classr   r   r   
<listcomp>/   s    zK_make_multi_callbacks.<locals>._MultiCallbacks.__init__.<locals>.<listcomp>)super__init___callback_list)self)	__class__callback_class_listr   r   r   -   s   
z7_make_multi_callbacks.<locals>._MultiCallbacks.__init__r   Nc                 [       | j D ]
}|jdi | qd S Nr   )r   on_algorithm_initr   r   callbackr   r   r   r   3      
z@_make_multi_callbacks.<locals>._MultiCallbacks.on_algorithm_initc                 [   r   r   )r   on_workers_recreatedr    r   r   r   r#   7   r"   zC_make_multi_callbacks.<locals>._MultiCallbacks.on_workers_recreatedc                 [      d S Nr   r   r   r   r   r   on_env_runners_recreated<      zG_make_multi_callbacks.<locals>._MultiCallbacks.on_env_runners_recreatedc                 [   r$   r%   r   r&   r   r   r   !on_offline_eval_runners_recreated?   r(   zP_make_multi_callbacks.<locals>._MultiCallbacks.on_offline_eval_runners_recreatedc                 [   r   r   )r   on_checkpoint_loadedr    r   r   r   r*   B   r"   zC_make_multi_callbacks.<locals>._MultiCallbacks.on_checkpoint_loadedc                S   s   | j D ]	}|j||d qd S )N)	policy_idpolicy)r   on_create_policy)r   r+   r,   r!   r   r   r   r-   F   s   
z?_make_multi_callbacks.<locals>._MultiCallbacks.on_create_policyc                 [   r   r   )r   on_environment_createdr    r   r   r   r.   J   r"   zE_make_multi_callbacks.<locals>._MultiCallbacks.on_environment_createdc                 [   r   r   )r   on_sub_environment_createdr    r   r   r   r/   N   r"   zI_make_multi_callbacks.<locals>._MultiCallbacks.on_sub_environment_createdc                 [   r   r   )r   on_episode_createdr    r   r   r   r0   R   r"   zA_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_createdc                 [   r   r   )r   on_episode_startr    r   r   r   r1   V   r"   z?_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_startc                 [   r   r   )r   on_episode_stepr    r   r   r   r2   Z   r"   z>_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_stepc                 [   r   r   )r   on_episode_endr    r   r   r   r3   ^   r"   z=_make_multi_callbacks.<locals>._MultiCallbacks.on_episode_endc                 [   r   r   )r   on_evaluate_startr    r   r   r   r4   b   r"   z@_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_startc                 [   r   r   )r   on_evaluate_endr    r   r   r   r5   f   r"   z>_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_endc                 [   r   r   )r   on_evaluate_offline_startr    r   r   r   r6   l   r"   zH_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_offline_startc                 [   r   r   )r   on_evaluate_offline_endr    r   r   r   r7   p   r"   zF_make_multi_callbacks.<locals>._MultiCallbacks.on_evaluate_offline_endc          
      [   s0   | j D ]}	|	jd|||||||d| qd S )N)workerepisodeagent_idr+   policiespostprocessed_batchoriginal_batchesr   )r   on_postprocess_trajectory)
r   r8   r9   r:   r+   r;   r<   r=   r   r!   r   r   r   r>   t   s   
zH_make_multi_callbacks.<locals>._MultiCallbacks.on_postprocess_trajectoryc                 [   r   r   )r   on_sample_endr    r   r   r   r?      r"   z<_make_multi_callbacks.<locals>._MultiCallbacks.on_sample_endresultc                [   s(   | j D ]}|jd|||d| qd S )N)r,   train_batchr@   r   )r   on_learn_on_batch)r   r,   rA   r@   r   r!   r   r   r   rB      s   
z@_make_multi_callbacks.<locals>._MultiCallbacks.on_learn_on_batchc                 [   r   r   )r   on_train_resultr    r   r   r   rC      r"   z>_make_multi_callbacks.<locals>._MultiCallbacks.on_train_result)r   N)__name__
__module____qualname__ZIS_CALLBACK_CONTAINERr   r   r#   r'   r)   r*   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r>   r?   dictrB   rC   __classcell__r   r   )r   r   _MultiCallbacks*   s:    
















rJ   r   )r   rJ   r   rI   r   _make_multi_callbacks(   s   rrK   )NN)typingr   r   r   r   r   Zray.rllib.callbacks.callbacksr   Zray.rllib.utilsr	   Zray.rllib.utils.annotationsr
   strr   rK   r   r   r   r   <module>   s0    



 