
    Pi                         d dl Zd dlZd dlmZ d dlmZ d dlmZ	 d Z
d Zej                            ddd	g          d
             Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    N)assert_array_equal)FeatureHasher)	transformc                  d   t          d          } d| j        k    sJ dddddd	d
g}t          d                              |          }d |D             }t          dd                              |          }t          |                                |                                           d S )N   
n_featuresdictbar*   %   )foodadatzarabazstring1)r   gagac              3   X   K   | ]%}t          |                                          V  &d S Niteritems.0ds     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/feature_extraction/tests/test_feature_hasher.py	<genexpr>z,test_feature_hasher_dicts.<locals>.<genexpr>   s0      
*
*q4		??
*
*
*
*
*
*    pairr	   
input_type)r   r!   r   r   toarray)feature_hasherraw_XX1genX2s        r   test_feature_hasher_dictsr(   	   s    "b111N^.....B44eY6W6WXE	"	%	%	%	/	/	6	6B
*
*E
*
*
*C	"	8	8	8	B	B3	G	GBrzz||RZZ\\22222r   c                     dddd                     d          gd                     d          ddgg} dD ]}d|z  }d | D             }t          |d	d
          }|                    |          }|j        d         t	          |           k    sJ |j        d         |k    sJ |d                                         dk    sJ |d                                         dk    sJ |j        dk    sJ d S )Nr   r   r   asciiquux)   	      r         c              3      K   | ]}|V  d S r    r   xs     r   r   z.test_feature_hasher_strings.<locals>.<genexpr>   s"      Aar   stringF)r	   r!   alternate_signr               )encoder   r   shapelensumnnz)r$   lg_n_featuresr	   itr#   Xs         r   test_feature_hasher_stringsrC      s    
uell7334	g		v.E
 ,  %
&!hu
 
 
 $$R((wqzSZZ''''wqzZ''''txxzzQtxxzzQuzzzzz! r   r!   list	generatorc                     d}ddg}| dk    rd |D             }t          dd          }t          j        t          |	          5  |                    |           d
d
d
           d
S # 1 swxY w Y   d
S )zhFeatureHasher raises error when a sample is a single string.

    Non-regression test for gh-13199.
    z"Samples can not be a single string	my_stringanother_stringrE   c              3      K   | ]}|V  d S r   r2   r3   s     r   r   z4test_feature_hasher_single_string.<locals>.<genexpr>7   s"      ""q""""""r   
   r5   r    )matchN)r   pytestraises
ValueErrorr   )r!   msgr$   r#   s       r   !test_feature_hasher_single_stringrP   .   s     /C*+E[  ""E""""bXFFFN	z	-	-	- ( (  '''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   A((A,/A,c                     dddd                     d          gd                     d          ddgg} d | D             }t          |dt          d          \  }}}d	 | D             }t          |dt          dd
          \  }}}t          ||           t          ||           d | D             }t          |dt          dd          \  }}}t	          j        t                    5  t          ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r*   r+   c              3   .   K   | ]}d  |D             V  dS )c              3      K   | ]}|d fV  	dS r7   Nr2   r   fs     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>E   &      !!!1v!!!!!!r   Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>E   1      11a!!q!!!111111r      Fc              3   .   K   | ]}d  |D             V  dS )c              3      K   | ]}|d fV  	dS rT   r2   rU   s     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>H   rW   r   Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>H   rX   r   r   )seedc              3   .   K   | ]}d  |D             V  dS )c              3      K   | ]}|d fV  	dS rT   r2   rU   s     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>M   rW   r   Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>M   rX   r   r7   )r;   _hashing_transformstrr   rL   rM   AssertionError)r$   raw_X_indicesindptr_	indices_0indptr_0	indices_1s           r   test_hashing_transform_seedri   >   so    
uell7334	g		v.E
 215111F+FD#uEEGVQ115111F/c5qQQQIxw	***vx(((115111F(sEJJJOIq!	~	&	& / /7I.../ / / / / / / / / / / / / / / / / /s   $DD	Dc                  z   d dddddddfD             } t          d	d
          }|                    |                                           \  }}t          t	          j        ||dk                                 }t          t	          j        ||dk                                 }ddg|k    sJ g d|k    sJ d S )Nc              3   X   K   | ]%}t          |                                          V  &d S r   r   r   s     r   r   z,test_feature_hasher_pairs.<locals>.<genexpr>T   D         	QWWYY     r   r7   r0   r   r   r9   r8   r   r+   r   r   r   r    r   )r7   r9   r8   )r   r   r"   sortednpabsr$   r#   x1x2x1_nzx2_nzs         r   test_feature_hasher_pairsrx   S   s     A&&1R(H(HI  E #bVDDDN%%e,,4466FB26"R1W+&&''E26"R1W+&&''Eq6U????99r   c                     d dddddddfD             } t          d	d
          }|                    |                                           \  }}t          t	          j        ||dk                                 }t          t	          j        ||dk                                 }ddg|k    sJ g d|k    sJ d ddiddifD             } |                    |                                           \  }}t	          j        ||dk                       }t	          j        ||dk                       }dg|k    sJ dg|k    sJ t          ||           d S )Nc              3   X   K   | ]%}t          |                                          V  &d S r   r   r   s     r   r   z?test_feature_hasher_pairs_with_string_values.<locals>.<genexpr>a   rl   r   r7   arm   abcr8   rn   ro   r   r   r    r   )r7   r7   r8   c              3   X   K   | ]%}t          |                                          V  &d S r   r   r   s     r   r   z?test_feature_hasher_pairs_with_string_values.<locals>.<genexpr>l   s0      GGT!''))__GGGGGGr   bax)r   r   r"   rp   rq   rr   r   rs   s         r   ,test_feature_hasher_pairs_with_string_valuesr   `   sw    C((%2*N*NO  E #bVDDDN%%e,,4466FB26"R1W+&&''E26"R1W+&&''Eq6U????99GGu~u~&FGGGE%%e,,4466FBF2bAg;EF2bAg;E3%<<<<3%<<<<r2r   c                     d} g dt          t          d                    g}t          | d          }|                    |          }t	          |                                t          j        t          |          | f                     d S )Nr   r2   r   r5   r    )	r   ranger   r   r   r"   rq   zerosr=   )r	   r$   r#   rB   s       r   test_hash_empty_inputr   u   sw    JT%((^^$E"jXNNNN  ''Aqyy{{BHc%jj*-E$F$FGGGGGr   c                  r    t                                          ddig          } | j        j        dk    sJ d S )Nr   r   )r   )r   r   datar<   )rB   s    r   test_hasher_zerosr      s:    !!E1:,//A6<4r   c                  l   t          d          g} t          dd                              |           }|j                                        dk     r|j                                        dk    sJ t          dd                              |           }|j                                        dk    sJ d S )NThequickbrownfoxjumpedTr5   )r6   r!   r   F)rD   r   fit_transformr   minmaxrB   Xts     r   test_hasher_alternate_signr      s    	&	'	'(A	dx	@	@	@	N	Nq	Q	QB7;;==1!2!2!22	e	A	A	A	O	OPQ	R	RB7;;==1r   c                  l   t          d          g} t          ddd                              |           }t          |j        d                   t          | d                   k     sJ t          ddd                              |           }|j        d         t          | d                   k    sJ d S )Nr   Tr7   r5   )r6   r	   r!   r   F)rD   r   r   rr   r   r=   r   s     r   test_hash_collisionsr      s    	&	'	'(A	h
 
 
mA 
 rwqz??S1YY&&&&	x
 
 
mA  71:QqT""""""r   c                  \    t                      } |                                 }|j        rJ dS )z3Test that FeatureHasher has requires_fit=False tag.N)r   __sklearn_tags__requires_fit)hashertagss     r   $test_feature_hasher_requires_fit_tagr      s1    __F""$$D      r   c                  ~    t          d          } ddddddg}|                     |          }|j        dk    sJ d	S )
z6Test that FeatureHasher can transform without fitting.rJ   r   r7   r0   )dogcat   )r   run)r0   rJ   N)r   r   r<   )r   r   results      r   )test_feature_hasher_transform_without_fitr      sX    b)))Fa  !A"6"67Dd##F<7""""""r   )numpyrq   rL   numpy.testingr   sklearn.feature_extractionr   (sklearn.feature_extraction._hashing_fastr   r_   r(   rC   markparametrizerP   ri   rx   r   r   r   r   r   r   r   r2   r   r   <module>r      s5        , , , , , , 4 4 4 4 4 4 T T T T T T3 3 3  4 '<==( ( >=(/ / /*
 
 
  *H H H       # # # ! ! !# # # # #r   