
    ni
                     Z    S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKr " S S\	5      r
g)z9Mock environment for testing reinforcement learning code.    )absolute_import)division)print_functionNc                   f    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	S r
S rS	 rS
 rSrg)MockEnvironment   z9Generate random agent input and keep track of statistics.c                     Xl         X l        X0l        X@l        [        R
                  R                  S5      U l        / U l        / U l	        g)a  Generate random agent input and keep track of statistics.

Args:
  observ_shape: Shape for the random observations.
  action_shape: Shape for the action space.
  min_duration: Minimum number of steps per episode.
  max_duration: Maximum number of steps per episode.

Attributes:
  steps: List of actual simulated lengths for all episodes.
  durations: List of decided lengths for all episodes.
r   N)
_observ_shape_action_shape_min_duration_max_durationnprandomRandomState_randomsteps	durations)selfobserv_shapeaction_shapemin_durationmax_durations        n/home/james-whalen/.local/lib/python3.13/site-packages/pybullet_envs/minitaur/agents/tools/mock_environment.py__init__MockEnvironment.__init__   s@     &%%%99((+DLDJDN    c                     [         R                  " U R                  5      n[         R                  " U R                  5      n[        R
                  R                  X5      $ N)r   zerosr
   onesgymspacesBoxr   lowhighs      r   observation_space!MockEnvironment.observation_space1   =    
((4%%
&C774%%&D::>>#$$r   c                     [         R                  " U R                  5      n[         R                  " U R                  5      n[        R
                  R                  X5      $ r   )r   r   r   r    r!   r"   r#   r$   s      r   action_spaceMockEnvironment.action_space7   r)   r   c                     U $ r    r   s    r   	unwrappedMockEnvironment.unwrapped=   s    Kr   c                 B   U R                   R                  U5      (       d   eU R                  S   U R                  S   :  d   eU R                  S==   S-  ss'   U R	                  5       nU R                  5       nU R                  S   U R                  S   :  n0 nX#XE4$ N   )r+   containsr   r   _current_observation_current_reward)r   actionobservrewarddoneinfos         r   stepMockEnvironment.stepA   s    %%f----::b>DNN2....JJrNaN&&(F!!#F::b>T^^B//DD4%%r   c                     U R                   R                  U R                  U R                  S-   5      nU R                  R                  S5        U R                  R                  U5        U R                  5       $ )Nr5   r   )r   randintr   r   r   appendr   r7   )r   durations     r   resetMockEnvironment.resetK   s\    ||##D$6$68J8JQ8NOHJJaNN(#$$&&r   c                 P    U R                   R                  SSU R                  5      $ )Nr   r5   )r   uniformr
   r/   s    r   r7   $MockEnvironment._current_observationQ   s!    <<1d&8&899r   c                 :    U R                   R                  SS5      $ r3   )r   rG   r/   s    r   r8   MockEnvironment._current_rewardT   s    <<A&&r   )r   r   r   r
   r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   propertyr'   r+   r0   r>   rD   r7   r8   __static_attributes__r.   r   r   r   r      sZ    A* % %
 % %
  &':'r   r   )rO   
__future__r   r   r   r!   
gym.spacesnumpyr   objectr   r.   r   r   <module>rV      s)    @ &  % 
  <'f <'r   