o
    }oi                     @   sD   d dl Z d dlmZmZ d dlmZ d dlmZ G dd deZdS )    N)
DataLoaderIterableDataset)MegatronDataSampler)loggingc                       s0   e Zd ZdZddededef fddZ  ZS )	SpeechLMDataSamplerzk
    Overwrite the default MegatronDataSampler to not add batch sampler when iteralbe dataset is used.
    r   
dataloaderconsumed_samplesreturnc                    s   t |dd}t|tjjjjrtd| d |S z	t	|j}d}W n t
y.   d}Y nw |s=td|j d |S t|jtrOtd|j d	 |S t ||S )
zT
        Overwrites the MegatronDataSampler.transform_dataloader() function
        samplerNz$Using Lhotse sampler for dataloader z!. Skipping Megatron data sampler.TFzDataset z> does not have __len__ method. Skipping Megatron data sampler.z7 is an IterableDataset. Skipping Megatron data sampler.)getattr
isinstancelhotsedatasetsamplingbase
CutSamplerr   infolen	TypeErrorr   supertransform_dataloader)selfr   r   r
   _has_len	__class__ _/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/speechlm/data/data_sampler.pyr      s"   
z(SpeechLMDataSampler.transform_dataloader)r   )__name__
__module____qualname____doc__r   intr   __classcell__r   r   r   r   r      s    $r   )	r   torch.utils.datar   r   nemo.lightning.pytorch.pluginsr   
nemo.utilsr   r   r   r   r   r   <module>   s
   