o
    $iM                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dl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)	AlgorithmAlgorithmConfig)override)resultc                   @   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_errortest_variableuser_checkpoint_freqsleep)r   	frameworkupdate_from_dictcls r   V/home/ubuntu/veenaModal/venv/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   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_result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/   r0   r1   r2   loadr   r   )r   r4   r/   r5   r   r   r   r   load_checkpointD   s   
z_MockTrainer.load_checkpointc                 C   s   dS )N)NNr   )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   r<   )r   sessr   r   r   get_infoV   s   z_MockTrainer.get_infor   )__name__
__module____qualname____doc__classmethodr   r   r   r   r   r   r+   r6   r9   staticmethodr;   r=   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#   time_this_iter_sr   )maxr$   r   rJ   nptanhfloatrH   rI   r'   rL   rK   )r   ivr   r   r   r+   l   s   z_SigmoidFakeData.stepN)
r@   rA   rB   rC   rD   r   r   r   r   r+   r   r   r   r   rF   Z   s    rF   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_amtdummy_paramdummy_param2rK   rL   rM   r   r   r   r   r   z   rN   z*_ParameterTuningTrainer.get_default_configc                 C   s(   t | jj| j | jj| jj| jji dS )NrO   )r'   r   rY   r$   rL   rK   )r   r   r   r   r+      s   z_ParameterTuningTrainer.stepN)	r@   rA   rB   rD   r   r   r   r   r+   r   r   r   r   rW   y   s
    rW   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>._AlgorithmImportFailedAlgorithmImportFailedc                    s   t  r   )ImportErrorr   tracer   r   r      s   z>_algorithm_import_failed.<locals>._AlgorithmImportFailed.setupN)r@   rA   rB   _namer   r   r^   r   r   _AlgorithmImportFailed   s    ra   )r   )r_   ra   r   r^   r   _algorithm_import_failed   s   rb   )r.   r2   r&   numpyrR   ray.rllib.algorithms.algorithmr   r   ray.rllib.utils.annotationsr   ray.tuner   r)   r   rF   rW   rb   r   r   r   r   <module>   s    N