
    ukif                    R    d Z ddlmZ ddlZddlmZ ddlZ G d d      Z e       Zy)z"Backend for colocated_python.func.    )annotationsN)Sequencec                  (    e Zd ZdZddZddZddZy)	_ResultStorezCTemporarily stores results from synchronous execution of functions.c                D    t        j                         | _        i | _        y )N)	threadingLock_lock_storage)selfs    i/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/experimental/colocated_python/func_backend.py__init__z_ResultStore.__init__   s    !DJ46DM    c                    | j                   5  || j                  v rt        d| d      || j                  |<   d d d        y # 1 sw Y   y xY w)Nuid z already exists)r
   r   
ValueError)r   uidouts      r   pushz_ResultStore.push   sL    	 		4uO455dmmC  s   -AAc                    | j                   5  || j                  vrt        d| d      | j                  j                  |      cd d d        S # 1 sw Y   y xY w)Nr   z does not exist)r
   r   r   pop)r   r   s     r   r   z_ResultStore.pop%   sP    	 $	DMM	!4uO455]]s#$ $ $s   8AAN)returnNone)r   intr   Sequence[jax.Array]r   r   )r   r   r   r   )__name__
__module____qualname____doc__r   r   r    r   r   r   r      s    K7$r   r   )	r   
__future__r   r   collections.abcr   jaxr   SINGLETON_RESULT_STOREr    r   r   <module>r%      s*    ) "  $ 
$ $( & r   