a
    ij=
                     @  s   d Z ddlmZ ddlZddlZddlZddlZddlmZmZm	Z	 ddl
mZ ddlmZ e	dZeZe	dZe ZejrG d	d
 d
eZG dd dedZneeef ZddddddZejG dd dZdS )zContextvar util.    )annotationsN)AnyOptionalTypeVar)helpers)	Annotated_T_DataclassTc                   @  s   e Zd Zdd ZdS )_ContextVarMetac                 C  s   |S N )clsvaluer   r   O/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/etils/edc/context.py__getitem__(   s    z_ContextVarMeta.__getitem__N)__name__
__module____qualname__r   r   r   r   r   r
   &   s   r
   c                   @  s   e Zd ZdS )
ContextVarN)r   r   r   r   r   r   r   r   +   s   r   )	metaclassdataclasses.Field[Any]zhelpers.Hint_ContextvarDescriptor)fieldhintreturnc                 C  s
   ~t | S )zCReplace `ContextVar[]` annotated fields with contextvar descriptor.)r   )r   r   r   r   r   make_contextvar_descriptor2   s    r   c                   @  s   e Zd ZU dZded< ejddZded< ejddZded	< d
dddddZ	e
jddddZddddddZddddddZdS )r   z/Descriptor to read-write individual contextvar.r   _fieldF)initz	type[Any]_objtypestr_attribute_nameztype[_Dataclass]None)objtypenamer   c                 C  s   || _ || _dS )z+Bind the descriptor to the class (PEP 487).N)r   r    )selfr"   r#   r   r   r   __set_name__B   s    z"_ContextvarDescriptor.__set_name__zcontextvars.ContextVar[Any])r   c                 C  sR   i }| j jtjur | j j|d< n| j jtjur>| j  |d< n tj| jfi |S )zContextvar.default)r   r&   dataclassesMISSINGdefault_factorycontextvarsr   r    )r$   Zdefault_kwargsr   r   r   _varG   s    z_ContextvarDescriptor._varNzOptional[_Dataclass]zOptional[type[_Dataclass]])objr"   c                 C  s   |d u r| S | j  S r   )r+   get)r$   r,   r"   r   r   r   __get__S   s    z_ContextvarDescriptor.__get__
_Dataclassr   )r,   r   r   c                 C  s   | j | d S r   )r+   set)r$   r,   r   r   r   r   __set__\   s    z_ContextvarDescriptor.__set__)N)r   r   r   __doc____annotations__r'   r   r   r    r%   	functoolscached_propertyr+   r.   r1   r   r   r   r   r   :   s   
 	)r2   
__future__r   r*   r'   r4   typingr   r   r   Z	etils.edcr   Ztyping_extensionsr   r   r/   r	   objectZ_IS_CONTEXTVARTYPE_CHECKINGtyper
   r   r   	dataclassr   r   r   r   r   <module>   s&   