
      i                     R    d Z ddlmZ ddlmZ ddlmZmZ ed
deded   fd       Z	y	)z1Utilities to help with reproducibility of models.    )	Generator)contextmanager_collect_rng_states_set_rng_statesinclude_cudareturn)NNNc              #   @   K   t        |       }d t        |       yw)a  A context manager that resets the global random state on exit to what it was before entering.

    It supports isolating the states for PyTorch, Numpy, and Python built-in random number generators.

    Args:
        include_cuda: Whether to allow this function to also control the `torch.cuda` random number generator.
            Set this to ``False`` when using the function in a forked process where CUDA re-initialization is
            prohibited.

    Example:
        >>> import torch
        >>> torch.manual_seed(1)  # doctest: +ELLIPSIS
        <torch._C.Generator object at ...>
        >>> with isolate_rng():
        ...     [torch.rand(1) for _ in range(3)]
        [tensor([0.7576]), tensor([0.2793]), tensor([0.4031])]
        >>> torch.rand(1)
        tensor([0.7576])

    Nr   )r   statess     u/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/lightning/pytorch/utilities/seed.pyisolate_rngr      s     , !.F	Fs   N)T)
__doc__collections.abcr   
contextlibr   lightning.fabric.utilities.seedr   r   boolr        r   <module>r      s;    8 % % P d i8H.I  r   