o
    ci                     @   s0   d dl Zd dlmZ eG dd dejjZdS )    N)	PublicAPIc                       sJ   e Zd ZdZd fdd	Zdd Zdd Zd	d
 Zdd Zdd Z	  Z
S )FlexDictzGym Dictionary with arbitrary keys updatable after instantiation

    Example:
       space = FlexDict({})
       space['key'] = spaces.Box(4,)
    See also: documentation for gym.spaces.Dict
    Nc                    sN   d}|d u s|rJ ||d u r|}|  D ]}| | qt j|d d S )Nz7Use either Dict(spaces=dict(...)) or Dict(foo=x, bar=z)spaces)valuesassertSpacesuper__init__)selfr   spaces_kwargserrspace	__class__ S/home/ubuntu/.local/lib/python3.10/site-packages/ray/rllib/utils/spaces/flexdict.pyr	      s   zFlexDict.__init__c                 C   s"   d}t t|tjjsJ |d S )Nz3Values of the dict should be instances of gym.Space)
issubclasstypegymr   Space)r
   r   r   r   r   r   r      s   zFlexDict.assertSpacec                 C   s   dd | j  D S )Nc                 S   s   i | ]	\}}||  qS r   )sample).0kr   r   r   r   
<dictcomp>!   s    z#FlexDict.sample.<locals>.<dictcomp>)r   itemsr
   r   r   r   r       s   zFlexDict.samplec                 C   s
   | j | S Nr   )r
   keyr   r   r   __getitem__#   s   
zFlexDict.__getitem__c                 C   s   |  | || j|< d S r   )r   r   )r
   r   r   r   r   r   __setitem__&   s   
zFlexDict.__setitem__c                 C   s"   dd dd | j D  d S )Nz	FlexDict(z, c                 S   s$   g | ]\}}t |d  t | qS ):)str)r   r   sr   r   r   
<listcomp>-   s   $ z%FlexDict.__repr__.<locals>.<listcomp>))joinr   r   r   r   r   r   __repr__*   s   zFlexDict.__repr__r   )__name__
__module____qualname____doc__r	   r   r   r   r   r&   __classcell__r   r   r   r   r      s    r   )	gymnasiumr   ray.rllib.utils.annotationsr   r   Dictr   r   r   r   r   <module>   s    