o
    1 iM                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ G dd de	ZG dd deZG d	d
 d
eZdd ZdS )    N)result)	AlgorithmAlgorithmConfig)overridec                   @   s   e Zd ZdZeeedefddZedefddZ	eedd	 Z
eed
d Zeedd Zeedd Zeeedd Zdd ZdddZdS )_MockTrainerz Mock Algorithm for use in tests.returnc                 C   s   t  dddddddS )NtfF   r   )
mock_errorpersistent_errorZtest_variableuser_checkpoint_freqsleep)r   Z	frameworkupdate_from_dictcls r   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/ray/rllib/algorithms/mock.pyget_default_config   s   z_MockTrainer.get_default_configconfigc                 C   s   d S Nr   )r   r   r   r   r   default_resource_request    s   z%_MockTrainer.default_resource_requestc                 C   s   | j  | _d | _d| _d S )NF)r   Zcallbacks_class	callbacksinforestoredselfr   r   r   r   setup$   s   
z_MockTrainer.setupc                 C   s   | j jr| jdkr| j js| jstd| j jrt| j j tdddi d}| j j	dkrC| jdkrC| j| j j	 dkrC|
tjdi |S )Nr	   z
mock error
   )episode_reward_meanepisode_len_meantimesteps_this_iterr   r   T)r   r
   	iterationr   r   	Exceptionr   timedictr   updatetune_resultZSHOULD_CHECKPOINT)r   r   r   r   r   step,   s"   
z_MockTrainer.stepc                 C   sL   t j|d}t|d}t| j| W d    d S 1 sw   Y  d S )Nmock_agent.pklwb)ospathjoinopenpickledumpr   )r   checkpoint_dirr+   fr   r   r   save_checkpoint>   s   "z_MockTrainer.save_checkpointc                 C   sR   t j|d}t|d}t|}W d    n1 sw   Y  || _d| _d S )Nr(   rbT)r*   r+   r,   r-   r.   loadr   r   )r   r0   r+   r1   r   r   r   r   load_checkpointD   s   
z_MockTrainer.load_checkpointc                 C   s   dS )N)NNr   )Zenv_specifierr   r   r   r   _get_env_id_and_creatorL   s   z$_MockTrainer._get_env_id_and_creatorc                 C   s
   || _ |S r   r   )r   r   r   r   r   set_infoR   s   z_MockTrainer.set_infoNc                 C   s   | j S r   r7   )r   sessr   r   r   get_infoV   s   z_MockTrainer.get_infor   )__name__
__module____qualname____doc__classmethodr   r   r   r   r   r   r'   r2   r5   staticmethodr6   r8   r:   r   r   r   r   r      s(    



r   c                   @   s2   e Zd ZdZeeedefddZdd Z	dS )_SigmoidFakeDatazrAlgorithm that returns sigmoid learning curves.

    This can be helpful for evaluating early stopping algorithms.r   c                 C   s   t  ddddddS )Nd   r   r   r	   )widthheightoffset	iter_timeiter_timestepsr   r   r   r   r   r   r   _      z#_SigmoidFakeData.get_default_configc                 C   sP   t d| j| jj }tt|| jj }|| jj9 }t	||| jj
| jji dS )Nr   r   r   r    Ztime_this_iter_sr   )maxr!   r   rE   nptanhfloatrC   rD   r$   rG   rF   )r   ivr   r   r   r'   l   s   z_SigmoidFakeData.stepN)
r;   r<   r=   r>   r?   r   r   r   r   r'   r   r   r   r   rA   Z   s    rA   c                   @   s.   e Zd ZeeedefddZdd ZdS )_ParameterTuningTrainerr   c                 C   s   t  ddddddS )Nr      r	   )
reward_amtZdummy_paramZdummy_param2rF   rG   rH   r   r   r   r   r   z   rI   z*_ParameterTuningTrainer.get_default_configc                 C   s(   t | jj| j | jj| jj| jji dS )NrJ   )r$   r   rS   r!   rG   rF   )r   r   r   r   r'      s   z_ParameterTuningTrainer.stepN)	r;   r<   r=   r?   r   r   r   r   r'   r   r   r   r   rQ   y   s
    rQ   c                    s   G  fdddt }|S )zCReturns dummy Algorithm class for if PyTorch etc. is not installed.c                       s   e Zd ZdZ fddZdS )z8_algorithm_import_failed.<locals>._AlgorithmImportFailedZAlgorithmImportFailedc                    s   t  r   )ImportErrorr   tracer   r   r      s   z>_algorithm_import_failed.<locals>._AlgorithmImportFailed.setupN)r;   r<   r=   _namer   r   rU   r   r   _AlgorithmImportFailed   s    rX   )r   )rV   rX   r   rU   r   _algorithm_import_failed   s   rY   )r*   r.   r#   numpyrL   Zray.tuner   r&   Zray.rllib.algorithms.algorithmr   r   Zray.rllib.utils.annotationsr   r   rA   rQ   rY   r   r   r   r   <module>   s    N