
    `i                     f    d dl Z d dlZd dlZd dlmZ d dlmZ d Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )    N)_bundle)_pytest_implc                     t          | t                    r| j        S t          | d          r!t          | j        t                    r| j        S t          |           S )N__name__)
isinstancetyper   hasattrstrrepr)objs    o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupy/testing/_parameterized.py_param_to_strr   	   sU    #t |	j	!	! js&C&C |99    c                     d}t          |           |k    r| S |t          |          z
  dz  }|t          |          z
  |z
  }| d |         |z   | | d          z   } t          |           |k    sJ | S )Nz...   )len)smaxlenellipsisn1n2s        r   _shortenr      s     H
1vv
3x==
 Q	&B	#h--	"	$B	#2#ArcddG#Aq66VHr   c                     dd}fdt          |                                          D             }t          d                    |          |          }d                    | ||          }|S )Nd   i  c           
      x    g | ]6\  }}d                      |t          t          |                              7S )z{}={})formatr   r   ).0kvSINGLE_PARAM_MAXLENs      r   
<listcomp>z$_make_class_name.<locals>.<listcomp>#   sN     + + +Aq 	q(=#3#35HIIJJ+ + +r   z, z{}_param_{}_{{{}}})sorteditemsr   joinr   )base_class_namei_paramparamPARAMS_MAXLEN
param_strscls_namer    s         @r   _make_class_namer+      s    M+ + + +5;;==))+ + +J $))J//??J#***. .HOr   c              #   Z   K   t          |          D ]\  }}t          | ||          V  d S N)	enumerate_parameterize_test_case)baseparamsir'   s       r   !_parameterize_test_case_generatorr3   ,   sH       f%% 6 65%dAu5555556 6r   c                     t           j        |          } fd}d|i}t                                                    D ]7\  }t	          t
          j                  rfd} |            ||<   2||<   8||d fS )Nc                 @                         |           }d|ddS )N<z  parameter: >)__repr__)selfnamer0   r'   s     r   r8   z)_parameterize_test_case.<locals>.__repr__6   s)    }}T""(,eee44r   r8   c                      fd} | S )Nc                      |i |S r-    )r9   argskwargsfs      r   new_vz<_parameterize_test_case.<locals>.create_new_v.<locals>.new_vA   s    1d-f---r   r=   )rA   r@   r   s    @r   create_new_vz-_parameterize_test_case.<locals>.create_new_v>   s'    . . . . .r   c                     | S r-   r=   )methods    r   <lambda>z)_parameterize_test_case.<locals>.<lambda>I   s     r   )r+   r   r"   r#   r   typesFunctionType)	r0   r2   r'   r*   r8   mbr   rB   r   s	   ` `     @r   r/   r/   3   s    q%88H5 5 5 5 5 5 h	Bu{{}}%%  1a+,, 	     !LNNBqEEBqEEb//00r   c                        fd}|S )a  Generates test classes with given sets of additional attributes

    >>> @parameterize({"a": 1}, {"b": 2, "c": 3})
    ... class TestX(unittest.TestCase):
    ...     def test_y(self):
    ...         pass

    generates two classes `TestX_param_0_...`, `TestX_param_1_...` and
    removes the original class `TestX`.

    The specification is subject to change, which applies to all the non-NumPy
    `testing` features.

    c                     t          | t          j                  rrJ t          j        fd          }nt          j        i } ||           S )Nc                 $    t          |           S r-   )r3   )r0   r1   s    r   rE   z)parameterize.<locals>.f.<locals>.<lambda>_   s    >tVLL r   )
issubclassunittestTestCaser   make_decoratorr   parameterize)clsdecor?   r1   s     r   r@   zparameterize.<locals>.f[   sk    c8,-- 	@:)LLLLN NDD  ,f???DtCyyr   r=   )r1   r?   r@   s   `` r   rP   rP   L   s)          Hr   c                      t           t                    sJ t                      fdD             }t          j        | }fd|D             S )Nc                      g | ]
}|         S r=   r=   )r   key	parameters     r   r!   zproduct.<locals>.<listcomp>j   s    ---in---r   c                 J    g | ]}t          t          |                     S r=   )dictzip)r   valskeyss     r   r!   zproduct.<locals>.<listcomp>l   s)    ===dDT4!!===r   )r   rX   r"   	itertoolsproduct)rV   valuesvalues_productr[   s   `  @r   r]   r]   f   sg    i&&&&&)D-------F&/N====n====r   c                  2    d t          j        |  D             S )Nc                 &    g | ]}d  |D             S )c                 H    i | ]}|                                 D ]\  }}||	 S r=   )r#   )r   dicr   r   s       r   
<dictcomp>z+product_dict.<locals>.<listcomp>.<dictcomp>r   s3    777#399;;7741aA7777r   r=   )r   dictss     r   r!   z product_dict.<locals>.<listcomp>q   s6     5 5 5 	877775 5 5r   )r\   r]   )
parameterss    r   product_dictrg   o   s+    5 5&
35 5 5 5r   )r\   rF   rM   cupy.testingr   r   r   r   r+   r3   r/   rP   r]   rg   r=   r   r   <module>ri      s                      % % % % % %  
 
 

 
 
6 6 61 1 12  4> > >5 5 5 5 5r   