o
    2wi                     @   s2   d dl Z d dlZd dlZd dlZejdd ZdS )    Nc                 c   s    | j d}|du rd}n|jd }t }tj }t }t	| tj
| t
| |V  t| tj| t| dS )a\  
    Pytest fixture that ensures deterministic RNG behavior.
    After the test finishes, it restores the previous RNG state.

    Example usage::

        >>> def my_test(deterministic_rng):
        ...     x = torch.randn(10, 5)  # always has the same values

    You can also set random seed like this::

        >>> @pytest.mark.seed(1337)
        ... def my_test(deterministic_rng):
        ...     x = torch.randn(10, 5)

    .. note: Learn more about pytest fixtures setup/teardown here:
        https://docs.pytest.org/en/latest/how-to/fixtures.html#teardown-cleanup-aka-fixture-finalization
    seedNr   )nodeget_closest_markerargstorchget_rng_statenprandom	get_stategetstatemanual_seedr   setstate	set_stateset_rng_state)requestmarkerSEEDtorch_statenp_statepy_state r   R/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/lhotse/testing/random.pydeterministic_rng   s   




r   )r	   numpyr   pytestr   fixturer   r   r   r   r   <module>   s    