
    &`i                         d dl mZ d dlZd dlZd dlmZ d dlm	Z	  G d dej
                  Z G d dej
                  Z G d	 d
ej
                  Z G d de          Z G d de          ZdS )    )OptionalN)	VectorEnv)overridec                   .    e Zd ZdZddZddddZd ZdS )MockEnvzMock environment for testing purposes.

    Observation=0, reward=1.0, episode-len is configurable.
    Actions are ignored.
    Nc                     || _         || _        d| _        t          j                            d          | _        t          j                            d          | _        d S Nr         )episode_lengthconfigigymspacesDiscreteobservation_spaceaction_space)selfr   r   s      |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/rllib/examples/envs/classes/mock_env.py__init__zMockEnv.__init__   sN    ,!$!4!4Q!7!7J//22    seedoptionsc                    d| _         di fS Nr   r   r   r   r   s      r   resetzMockEnv.reset   s    "ur   c                 T    | xj         dz  c_         | j         | j        k    x}}dd||i fS )Nr
   r   g      ?r   r   r   action
terminated	truncateds       r   stepzMockEnv.step   s6    !!%4+>!>>
Y#z9b00r   N__name__
__module____qualname____doc__r   r   r&    r   r   r   r   
   sa         3 3 3 3 !$     1 1 1 1 1r   r   c                   X    e Zd ZU dZddgiZdZee         ed<   d Z	ddddZ
d	 Zd
 ZdS )MockEnv2Mock environment for testing purposes.

    Observation=ts (discrete space!), reward=100.0, episode-len is
    configurable. Actions are ignored.
    zrender.modes	rgb_arrayrender_modec                     || _         d| _        t          j                            | j         dz             | _        t          j                            d          | _        d | _        d S r	   )r   r   r   r   r   r   r   rng_seedr   r   s     r   r   zMockEnv2.__init__.   sT    ,!$!4!4T5H15L!M!MJ//22r   Nr   c                4    d| _         ||| _        | j         i fS r   )r   r4   r   s      r   r   zMockEnv2.reset5   s"     DMvrzr   c                 ^    | xj         dz  c_         | j         | j        k    x}}| j         d||i fS )Nr
   g      Y@r!   r"   s       r   r&   zMockEnv2.step;   s8    !!%4+>!>>
Yvuj)R77r   c                 \    t           j                            dddt           j                  S )Nr      )i,  i     )sizedtype)nprandomrandintuint8r   s    r   renderzMockEnv2.render@   s%     y  Cm28 LLLr   )r)   r*   r+   r,   metadatar2   r   str__annotations__r   r   r&   rB   r-   r   r   r/   r/   "   s           	H "-K#,,,   !$     8 8 8
M M M M Mr   r/   c                   ,    e Zd ZdZd ZddddZd ZdS )MockEnv3r0   c                     || _         d| _        t          j                            d          | _        t          j                            d          | _        d S )Nr   d   r   )r   r   r   r   r   r   r   r5   s     r   r   zMockEnv3.__init__N   sG    ,!$!4!4S!9!9J//22r   Nr   c                &    d| _         | j         ddifS )Nr   timestepr   r   s      r   r   zMockEnv3.resetT   s    v
A&&r   c                 v    | xj         dz  c_         | j         | j        k    x}}| j         | j         ||d| j         ifS )Nr
   rK   r!   r"   s       r   r&   zMockEnv3.stepX   sA    !!%4+>!>>
Yvtvz9z466JJJr   r(   r-   r   r   rG   rG   G   sa         3 3 3 !$ ' ' ' ' 'K K K K Kr   rG   c                        e Zd ZdZ fdZ ee          dddd            Z ee          dddd            Z ee          d             Z	 ee          d	             Z
 xZS )
VectorizedMockEnvzVectorized version of the MockEnv.

    Contains `num_envs` MockEnv instances, each one having its own
    `episode_length` horizon.
    c                    t                                          t          j                            d          t          j                            d          |           fdt          |          D             | _        d S )Nr
   r   r   r   num_envsc                 .    g | ]}t                    S r-   )r   ).0_r   s     r   
<listcomp>z.VectorizedMockEnv.__init__.<locals>.<listcomp>k   s!    FFFW^,,FFFr   )superr   r   r   r   rangeenvs)r   r   rQ   	__class__s    ` r   r   zVectorizedMockEnv.__init__e   sv    !j11!44,,Q// 	 	
 	
 	

 GFFFeHooFFF			r   Nseedsr   c                    p
d g| j         z  p
d g| j         z  fdt          | j                  D             }d |D             d |D             fS )Nc                 \    g | ](\  }}|                     |         |                    )S )r   )r   )rS   r   er   r[   s      r   rU   z2VectorizedMockEnv.vector_reset.<locals>.<listcomp>q   sB     
 
 
;?1aAGGq71:G66
 
 
r   c                     g | ]
}|d          S )r   r-   rS   ois     r   rU   z2VectorizedMockEnv.vector_reset.<locals>.<listcomp>t   s    ..."1...r   c                     g | ]
}|d          S )r
   r-   r`   s     r   rU   z2VectorizedMockEnv.vector_reset.<locals>.<listcomp>t   s    0O0O0O2A0O0O0Or   )rQ   	enumeraterX   )r   r[   r   obs_and_infoss    `` r   vector_resetzVectorizedMockEnv.vector_resetm   s    /$$-/3dVdm3
 
 
 
 
CLTYCWCW
 
 
 /....0O0O0O0O0OOOr   r   c                F    | j         |                             ||          S )Nr   )rX   r   r   indexr   r   s       r   reset_atzVectorizedMockEnv.reset_atv   s"    y%%4%AAAr   c                    g g g g g f\  }}}}}t          t          | j                            D ]}| j        |                             ||                   \  }}	}
}}|                    |           |                    |	           |                    |
           |                    |           |                    |           |||||fS r'   )rW   lenrX   r&   append)r   actions	obs_batch	rew_batchterminated_batchtruncated_batch
info_batchr   obsrewr$   r%   infos                r   vector_stepzVectorizedMockEnv.vector_stepz   s     O
K	9. s49~~&& 	$ 	$A48IaL4E4Egaj4Q4Q1Cj)TS!!!S!!!##J///""9---d####)%5
RRr   c                     | j         S r'   )rX   rA   s    r   get_sub_environmentsz&VectorizedMockEnv.get_sub_environments   s
    yr   r)   r*   r+   r,   r   r   r   re   ri   rv   rx   __classcell__rY   s   @r   rN   rN   ^   s
        G G G G G Xi$($ P P P P P Xi&*D B B B B B XiS S S" Xi      r   rN   c                        e Zd ZdZ fdZ ee          dddd            Z ee          dddd            Z ee          d             Z	 ee          d	             Z
 xZS )
MockVectorEnvzA custom vector env that uses a single(!) CartPole sub-env.

    However, this env pretends to be a vectorized one to illustrate how one
    could create custom VectorEnvs w/o the need for actual vectorizations of
    sub-envs under the hood.
    c                     t          j        d          | _        t                                          | j        j        | j        j        |           || _        d| _        d S )NzCartPole-v1rP   r   )	r   makeenvrV   r   r   r   episode_lents)r   r   mocked_num_envsrY   s      r   r   zMockVectorEnv.__init__   s]    8M**"h8.$ 	 	
 	
 	

 *r   NrZ   c                    |pd g}|pd g}| j                             |d         |d                   \  fdt          | j                  D             fdt          | j                  D             fS )Nr   r   c                     g | ]}S r-   r-   rS   rT   rs   s     r   rU   z.MockVectorEnv.vector_reset.<locals>.<listcomp>   s    ///QS///r   c                     g | ]}S r-   r-   )rS   rT   infoss     r   rU   z.MockVectorEnv.vector_reset.<locals>.<listcomp>   s    111qU111r   )r   r   rW   rQ   )r   r[   r   r   rs   s      @@r   re   zMockVectorEnv.vector_reset   s    
 $#dVX^^q71:^FF
U 0///%..///1111E$-00111
 	
r   r   c                H    d| _         | j                            ||          S )Nr   r   )r   r   r   rg   s       r   ri   zMockVectorEnv.reset_at   s!    x~~4~999r   c                   	
 | xj         dz  c_         g g g g g f\  }}}}}t          | j                  D ]}| j                            ||                   \  
	| j         | j        k    rd|                    
           |                               |                               |                               |                    	           sr| j        |dz   z
  }|                    
fdt          |          D                        |                    fdt          |          D                        |                    fdt          |          D                        |                    fdt          |          D                        |                    	fdt          |          D                         n|||||fS )Nr
   Tc                     g | ]}S r-   r-   r   s     r   rU   z-MockVectorEnv.vector_step.<locals>.<listcomp>       !@!@!@!#!@!@!@r   c                     g | ]}S r-   r-   )rS   rT   rt   s     r   rU   z-MockVectorEnv.vector_step.<locals>.<listcomp>   r   r   c                     g | ]}S r-   r-   )rS   rT   r$   s     r   rU   z-MockVectorEnv.vector_step.<locals>.<listcomp>   s    (N(N(N(N(N(Nr   c                     g | ]}S r-   r-   )rS   rT   r%   s     r   rU   z-MockVectorEnv.vector_step.<locals>.<listcomp>   s    'L'L'La	'L'L'Lr   c                     g | ]}S r-   r-   )rS   rT   ru   s     r   rU   z-MockVectorEnv.vector_step.<locals>.<listcomp>   s    "B"B"BA4"B"B"Br   )r   rW   rQ   r   r&   r   rl   extend)r   rm   rn   ro   rp   rq   rr   r   	remainingru   rs   rt   r$   r%   s            @@@@@r   rv   zMockVectorEnv.vector_step   s%   1 O
K	9. t}%% 	 	A48HMM'!*4M4M1Cj)T w$*** 	S!!!S!!!##J///""9---d### Y  MQU3	  !@!@!@!@uY/?/?!@!@!@AAA  !@!@!@!@uY/?/?!@!@!@AAA ''(N(N(N(NU9=M=M(N(N(NOOO&&'L'L'L'L5;K;K'L'L'LMMM!!"B"B"B"By1A1A"B"B"BCCC )%5
RRr   c                 D      fdt           j                  D             S )Nc                     g | ]	}j         
S r-   )r   )rS   rT   r   s     r   rU   z6MockVectorEnv.get_sub_environments.<locals>.<listcomp>   s    777Q777r   )rW   rQ   rA   s   `r   rx   z"MockVectorEnv.get_sub_environments   s)     8777%"6"67777r   ry   r{   s   @r   r}   r}      s              Xi$($ 
 
 
 
 
 Xi&*D : : : : : XiS S SB Xi8 8 8 8 8 8 8r   r}   )typingr   	gymnasiumr   numpyr=   ray.rllib.env.vector_envr   ray.rllib.utils.annotationsr   Envr   r/   rG   rN   r}   r-   r   r   <module>r      sQ                 . . . . . . 0 0 0 0 0 01 1 1 1 1cg 1 1 10"M "M "M "M "Msw "M "M "MJK K K K Ksw K K K.0 0 0 0 0	 0 0 0fL8 L8 L8 L8 L8I L8 L8 L8 L8 L8r   