a
    þdï
  ã                   @   s¬   d Z ddlmZ ddlmZmZ ddlmZmZ ddlm	Z
 ddlmZ ddlmZ ddlmZ eed	 d
œdd„ƒZeeedœdd„Zdd
œdd„Zeeddœdd„Z	dS )z1Utilities to help with reproducibility of models.é    )Úcontextmanager)ÚAnyÚ	Generator©Ú_collect_rng_statesÚ_set_rng_states)Úpl_worker_init_function)Ú
reset_seed)Úseed_everything)Úrank_zero_deprecation)NNN)Úreturnc                  c   s   t ƒ } dV  t| ƒ dS )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.

    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   )Zstates© r   úi/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pytorch_lightning/utilities/seed.pyÚisolate_rng   s    r   )ÚargsÚkwargsr   c                  O   s   t dƒ t| i |¤ŽS )Nzµ`pytorch_lightning.utilities.seed.seed_everything` has been deprecated in v1.8.0 and will be removed in v2.0.0. Please use `lightning_fabric.utilities.seed.seed_everything` instead.)r   Únew_seed_everything©r   r   r   r   r   r
   .   s    ÿr
   Nc                   C   s   t dƒ tƒ S )Nz«`pytorch_lightning.utilities.seed.reset_seed` has been deprecated in v1.8.0 and will be removed in v2.0.0. Please use `lightning_fabric.utilities.seed.reset_seed` instead.)r   Únew_reset_seedr   r   r   r   r	   6   s    ÿr	   c                  O   s   t dƒ t| i |¤ŽS )NzÅ`pytorch_lightning.utilities.seed.pl_worker_init_function` has been deprecated in v1.8.0 and will be removed in v2.0.0. Please use `lightning_fabric.utilities.seed.pl_worker_init_function` instead.)r   Únew_pl_worker_init_functionr   r   r   r   r   >   s    ÿr   )Ú__doc__Ú
contextlibr   Útypingr   r   Zlightning_fabric.utilities.seedr   r   r   r   r	   r   r
   r   Z%pytorch_lightning.utilities.rank_zeror   r   r   r   r   r   Ú<module>   s   