
    `in                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZdada	da
d
dZd Zd ae j        d             Zd Zd Zd Zd	 ZdS )    NTc                 X   t          j                    at          j                                         at          j         j        j        a	t          j         
                                 t          j         j        j        t          usJ | sQt          j                     t          j                                          t          j                                          d S t          j        d           t          j                             d           t          j                             d           d S )Nc   d   e   )randomgetstate_old_python_random_statenumpy	get_state_old_numpy_random_statecupy
_generator_random_states_old_cupy_random_statesreset_statesseed)deterministics    h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupy/testing/_random.pydo_setupr      s      &00#l4466"k4CK K"1#$ $ $ $  B#    c                      t          j        t                     t          j                             t
                     t          t          j         j        _	        d ad ad ad S N)
r   setstater	   r
   	set_stater   r   r   r   r    r   r   do_teardownr   )   sQ     O,---	L2333,CDK)#""r   c                  0    t           dk    s
J d            d S )Nr   z?_setup_random() and _teardown_random() must be called in pairs.)_nest_countr   r   r   _check_teardownr   ;   s$    ! 9r   c                      t           dk    rJt          t          t          j                            dd                              } t          |             t           dz  a dS )zHSets up the deterministic random states of ``numpy`` and ``cupy``.

    r   !CUPY_TEST_RANDOM_NONDETERMINISTIC0   N)r   boolintosenvirongetr   )nondeterministics    r   _setup_randomr*   A   sb    
 aBJNN/%6 %6 !7 !7 8 8%%&&&1KKKr   c                  z    t           dk    s
J d            t           dz  a t           dk    rt                       dS dS )zMTears down the deterministic random states set up by ``_setup_random``.

    r   z!_setup_random has not been calledr#   N)r   r   r   r   r   _teardown_randomr,   M   sB    
 ???????1Ka r   c                  j    t           dk    s
J d            t          j                            d          S )Nr   zrandom is not set upi)r   r
   r   randintr   r   r   generate_seedr/   X   s,    ???2???<
+++r   c                      d } | S )zDecorator that fixes random numbers in a test.

    This decorator can be applied to either a test case class or a test method.
    It should not be applied within ``condition.retry`` or
    ``condition.repeat``.
    c                     t           t          j                  r; j                            d          r!t          j                    fd            }|S t           t                    rNt           t          j
                  r4 }d }d } ||j                  |_         ||j                  |_        |S t          d                                         )Ntest_c                     t                       	  | g|R i | t                       d S # t                       w xY wr   )r*   r,   )selfargskwimpls      r   	test_funcz0fix_random.<locals>.decorator.<locals>.test_funcn   sV    'D+++++++$&&&&&$&&&&s   - =c                       fd}|S )Nc                 :    t                        |            d S r   )r*   r4   fs    r   funcz?fix_random.<locals>.decorator.<locals>.wrap_setUp.<locals>.func{   s    !OOOAdGGGGGr   r   r<   r=   s   ` r   
wrap_setUpz1fix_random.<locals>.decorator.<locals>.wrap_setUpz   s#         r   c                       fd}|S )Nc                 b    	  |            t                       d S # t                       w xY wr   )r,   r;   s    r   r=   zBfix_random.<locals>.decorator.<locals>.wrap_tearDown.<locals>.func   s:    +$(*****(****s    .r   r>   s   ` r   wrap_tearDownz4fix_random.<locals>.decorator.<locals>.wrap_tearDown   s#    + + + + +
 r   zCan't apply fix_random to {})
isinstancetypesFunctionType__name__
startswith	functoolswrapstype
issubclassunittestTestCasesetUptearDown
ValueErrorformat)r7   r8   klassr?   rB   s   `    r   	decoratorzfix_random.<locals>.decoratorj   s    tU/00 !	K((11!	K _T""' ' ' ' #"' d## 	K
49J(K(K 	KE     %*U[11EK*]5>::ENL<CCDIIJJJr   r   )rS   s    r   
fix_randomrT   ]   s    "K "K "KH r   )T)atexitrH   r
   r&   r   rD   rL   r   r	   r   r   r   r   r   registerr   r*   r,   r/   rT   r   r   r   <module>rW      s          				            0	# 	# 	#  : : :
	 	 	  , , ,
1 1 1 1 1r   