o
    `۷i:                     @   s   d dl Z d dlZd dlmZmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ eeZ			dded	ed
ee	 deeeef  def
ddZdS )    N)AnyDictOptional)VectorizeMode)MultiAgentEnv)SyncVectorMultiAgentEnv)VectorMultiAgentEnv   idnum_envsvectorization_modevector_kwargsreturnc              	      s  |d u ri }|d u rd}t | tjjjr| nt | tr$tjj| n
tdt|  dt	
jt _jd|}d|}d|}| |d u rZtj}nzt|}W n tyw   td|dd	d
 tD  dw t |tsJ dtffdd |tjkrtdd fddt|D i|}ntdt	
}	 |_|dkr||jd< |j|jd< t|dkr||jd< ||j_|S )NsynczInvalid id type: z. Expected `str` or `EnvSpec`.r   r   r   zInvalid vectorization mode: z, valid modes: c                 S   s   g | ]}|j qS  )value).0moder   r   W/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/rllib/env/vector/registration.py
<listcomp>9   s    zmake_vec.<locals>.<listcomp>.r   c                     s   t j fi  } | S N)gymmakecopy)
single_env)env_specenv_spec_kwargsr   r   create_single_env=   s   z#make_vec.<locals>.create_single_envenv_fnsc                 3   s    | ]} V  qd S r   r   )r   _)r   r   r   	<genexpr>F   s    zmake_vec.<locals>.<genexpr>zsFor `MultiAgentEnv` only synchronous environment vectorization is implemented. Use `gym_env_vectorize_mode='sync'`.r	   r   r   )
isinstancer   envsregistrationEnvSpecstr
_find_spec
ValueErrortyper   deepcopykwargsdictgetpopupdater   SYNCr   r   ranger   len	unwrappedspec)r
   r   r   r   r+   envcopied_id_specr   )r   r   r   r   make_vec   s^   	







r7   )r	   NN)r   loggingtypingr   r   r   	gymnasiumr   gymnasium.envs.registrationr   ray.rllib.env.multi_agent_envr   0ray.rllib.env.vector.sync_vector_multi_agent_envr   +ray.rllib.env.vector.vector_multi_agent_envr   	getLogger__file__loggerr&   intr7   r   r   r   r   <module>   s.    
