o
    ŸD®fÛ
  ã                   @  s    d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ dd	lmZ ee	e
eed
œZd	ddd„Zdefdd„Zdefdd„ZdS )é    )Úannotationsé   )ÚBitGenerator)ÚRandomState)ÚPhilox)ÚPCG64Ú	PCG64DXSM)ÚSFC64)Ú	Generator)ÚMT19937)r   r   r   r   r	   r   Úbit_generatorústr | type[BitGenerator]c                 C  s:   t | tƒr
| }|ƒ S | tv rt|  }|ƒ S tt| ƒd ƒ‚)a(  
    Pickling helper function that returns a bit generator object

    Parameters
    ----------
    bit_generator : type[BitGenerator] or str
        BitGenerator class or string containing the name of the BitGenerator

    Returns
    -------
    BitGenerator
        BitGenerator instance
    z$ is not a known BitGenerator module.)Ú
isinstanceÚtypeÚBitGeneratorsÚ
ValueErrorÚstr)r   Úbit_gen_class© r   úM/home/ubuntu/webapp/venv/lib/python3.10/site-packages/numpy/random/_pickle.pyÚ__bit_generator_ctor   s   
ùü
ÿr   c                 C  ó   t | tƒr	t| ƒS t|| ƒƒS )aó  
    Pickling helper function that returns a Generator object

    Parameters
    ----------
    bit_generator_name : str or BitGenerator
        String containing the core BitGenerator's name or a
        BitGenerator instance
    bit_generator_ctor : callable, optional
        Callable function that takes bit_generator_name as its only argument
        and returns an instantized bit generator.

    Returns
    -------
    rg : Generator
        Generator using the named core BitGenerator
    )r   r   r
   ©Úbit_generator_nameÚbit_generator_ctorr   r   r   Ú__generator_ctor.   s   
r   c                 C  r   )aÙ  
    Pickling helper function that returns a legacy RandomState-like object

    Parameters
    ----------
    bit_generator_name : str
        String containing the core BitGenerator's name
    bit_generator_ctor : callable, optional
        Callable function that takes bit_generator_name as its only argument
        and returns an instantized bit generator.

    Returns
    -------
    rs : RandomState
        Legacy RandomState using the named core BitGenerator
    )r   r   r   r   r   r   r   Ú__randomstate_ctorG   s   
r   N)r   r   )Ú
__future__r   r   r   Úmtrandr   Ú_philoxr   Ú_pcg64r   r   Ú_sfc64r	   Ú
_generatorr
   Ú_mt19937r   r   r   r   r   r   r   r   r   Ú<module>   s*    ü
ÿÿ