o
    }oi                  	   @   sR   d dl mZmZ d dlmZmZ d dlZddedeeejf de	defd	d
Z
dS )    )fieldsis_dataclass)AnyUnionNTinputsdevicenon_blockingreturnc                    s   du rdS t tjrj dS t tttfr( fddD S t tr9 fdd	 D S t
rQtdi  fddtD S S )	z0Recursively moves inputs to the specified deviceN)r   c                    s   g | ]}t | qS  move_data_to_device).0ir   r   r
   V/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/common/data/utils.py
<listcomp>   s    z'move_data_to_device.<locals>.<listcomp>c                    s   i | ]\}}|t | qS r
   r   )r   kvr   r
   r   
<dictcomp>   s    z'move_data_to_device.<locals>.<dictcomp>c                    s$   i | ]}|j tt|j  qS r
   )namer   getattr)r   fieldr   r   r   r
   r   r   !   s    r
   )
isinstancetorchTensortolisttupleset	__class__dictitemsr   typer   )r   r   r   r
   r   r   r      s   

r   )T)dataclassesr   r   typingr   r   r   strr   boolr   r
   r
   r
   r   <module>   s   *