o
    vi!                     @   st   d dl mZmZ d dlmZ d dlmZ eded fddZedd	eded fd
dZ	eded fddZ
dS )    )	ExitStackcontextmanager)	Generator)timerreturn)NNNc                  #   L    t dg} t   fdd| D V  W d   dS 1 sw   Y  dS )zo
    Wrap the data loader initialization with multiple context managers used for telemetry and one logger.
    Zinit_data_loaderc                       g | ]}  |qS  enter_context.0cmstackr	   Z/data/cameron/vidgen/cosmos-policy/cosmos_policy/_src/imaginaire/utils/context_managers.py
<listcomp>       z$data_loader_init.<locals>.<listcomp>Nr   r   contextsr	   r   r   data_loader_init      "r   Fset_barrierc                 #   sL    t dg}t   fdd|D V  W d   dS 1 sw   Y  dS )zo
    Wrap the instantiation of the model with multiple context managers used for telemetry and one logger.
    Z
init_modelc                    r   r	   r
   r   r   r	   r   r   +   r   zmodel_init.<locals>.<listcomp>Nr   )r   r   r	   r   r   
model_init"   r   r   c                  #   r   )zL
    Wrap the distributed initialization, used for telemetry and timers
    init_distributedc                    r   r	   r
   r   r   r	   r   r   7   r   z$distributed_init.<locals>.<listcomp>Nr   r   r	   r   r   distributed_init.   r   r   N)F)
contextlibr   r   typingr   (cosmos_policy._src.imaginaire.utils.miscr   r   boolr   r   r	   r	   r	   r   <module>   s   