o
    wiS                     @   s.   d dl Z d dlmZ G dd de jjjZdS )    N)loggingc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	FallbackDataseta  
    FallbackDataset is a wrapper on an existing map-style ``torch.utils.data.Dataset``.
    It's used to return the previous item (or batch, depending on Dataset) whenever
    the underlying ``Dataset`` returns ``None``.
    This is useful when ``Dataset`` returns a full batch (as e.g. Lhotse datasets typically do),
    and wasn't able to read any of the items in that batch.

    Example::

        >>> dataset = AudioToTextLhotseDataset(...)
        ... dataset = FallbackDataset(dataset)
    c                 C   s   || _ d | _d S N)dataset	_fallback)selfr    r   b/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/nemo/collections/common/data/fallback.py__init__!   s   
zFallbackDataset.__init__c                 C   s@   | j | }|d u r| jd u rtd| j  d | j}|| _|S )Nz#FallbackDataset received None from z} on the first call to __getitem__, and must return None instead of an actual batch.This indicates an issue with data reading.)r   r   r   warning)r   itemansr   r   r	   __getitem__%   s   

zFallbackDataset.__getitem__c                 C   s
   t | jS r   )lenr   )r   r   r   r	   __len__2   s   
zFallbackDataset.__len__N)__name__
__module____qualname____doc__r
   r   r   r   r   r   r	   r      s
    r   )torch
nemo.utilsr   utilsdataDatasetr   r   r   r   r	   <module>   s   