o
    2wim                     @   s(   d dl Z dddZdddZdd ZdS )	    Nc                 C   s  d}d}d}d}dt jv r!dt jv r!tt jd }tt jd }n/z%ddl}|j rE|j rE| p6|jjj} |jj	| d}|jj
| d}W n	 tyO   Y nw dt jv ridt jv ritt jd }tt jd }n zddl}|jj }|dur~|j}|j}W n	 ty   Y nw ||||fS )	z
    Return node and worker info for PyTorch and some distributed environments.
    This function is copied from WebDataset: https://github.com/webdataset/webdataset
    r      RANK
WORLD_SIZENgroupWORKERNUM_WORKERS)osenvironinttorch.distributeddistributedis_availableis_initializedr   WORLDget_rankget_world_sizeModuleNotFoundErrortorch.utils.datautilsdataget_worker_infoidnum_workers)r   rank
world_sizeworkerr   torchworker_info r   V/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/lhotse/shar/readers/utils.pypytorch_worker_info   s>   r!   c                 C   s    t |d\}}}}| |d| S )u
    This function is copied from WebDataset: https://github.com/webdataset/webdataset
    and adapted to lists.
    r   Nr!   )srcr   r   r   r   r   r   r   r    split_by_node+   s   r%   c                 C   s   t  \}}}}| |d| S )r"   Nr#   )r$   r   r   r   r   r   r   r    split_by_worker4   s   r&   )N)r	   r!   r%   r&   r   r   r   r    <module>   s    

'	