
    sg                         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                  j                  ddd	gd
 dD        gddg      d        Zd Zd Zd Zd Zd Zd Zd Zy)    N)assert_array_equal)FeatureHasher)	transformc                  $   t        d      } d| j                  k(  sJ dddddd	d
g}t        d      j                  |      }d |D        }t        dd      j                  |      }t        |j	                         |j	                                y )N   )
n_featuresdictbar*   %   )foodadatzarabazstring1)r   gagac              3   N   K   | ]  }t        |j                                 y wNiteritems.0ds     g/var/www/html/venv/lib/python3.12/site-packages/sklearn/feature_extraction/tests/test_feature_hasher.py	<genexpr>z,test_feature_hasher_dicts.<locals>.<genexpr>   s     
*q4	?
*   #%pairr   
input_type)r   r    r   r   toarray)feature_hasherraw_XX1genX2s        r   test_feature_hasher_dictsr'   	   s    "b1N^.....B4eY6WXE	"	%	/	/	6B
*E
*C	"	8	B	B3	GBrzz|RZZ\2    c                     ddddj                  d      gdj                  d      ddgg} dD ]  }d|z  }d | D        }t        |d	d
      }|j                  |      }|j                  d   t	        |       k(  sJ |j                  d   |k(  sJ |d   j                         dk(  sJ |d   j                         dk(  sJ |j                  dk(  rJ  y )Nr   r
   r   asciiquux)   	      r         c              3       K   | ]  }|  y wr    r   xs     r   r   z.test_feature_hasher_strings.<locals>.<genexpr>   s     Aa   stringF)r   r    alternate_signr               )encoder   r   shapelensumnnz)r#   lg_n_featuresr   itr"   Xs         r   test_feature_hasher_stringsrD      s     
uell734	g	v.E
 , %
&!hu
 $$R(wwqzSZ'''wwqzZ'''txxzQtxxzQuuzz!r(   r#   	my_stringanother_stringc              #       K   | ]  }|  y wr   r2   r3   s     r   r   r   2   s     4q4r5   )rE   rF   list	generator)idsc                     d}t        dd      }t        j                  t        |      5  |j	                  |        ddd       y# 1 sw Y   yxY w)zhFeatureHasher raises error when a sample is a single string.

    Non-regression test for gh-13199.
    z"Samples can not be a single string
   r6   r   )matchN)r   pytestraises
ValueErrorr   )r#   msgr"   s      r   !test_feature_hasher_single_stringrR   .   sF     /C"bXFN	z	- (  '( ( (s   AAc                     ddddj                  d      gdj                  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        y # 1 sw Y   y xY w)Nr   r
   r   r*   r+   c              3   .   K   | ]  }d  |D          yw)c              3   $   K   | ]  }|d f 
 ywr8   Nr2   r   fs     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>I        !!1v!   Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>I        1a!q!!1      Fc              3   .   K   | ]  }d  |D          yw)c              3   $   K   | ]  }|d f 
 ywrV   r2   rW   s     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>L   rY   rZ   Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>L   r[   r\   r   )seedc              3   .   K   | ]  }d  |D          yw)c              3   $   K   | ]  }|d f 
 ywrV   r2   rW   s     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>Q   rY   rZ   Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>Q   r[   r\   r8   )r<   _hashing_transformstrr   rN   rO   AssertionError)r#   raw_X_indicesindptr_	indices_0indptr_0	indices_1s           r   test_hashing_transform_seedrm   B   s     
uell734	g	v.E
 251F+FD#uEGVQ151F/c5qQIxw	*vx(151F(sEJOIq!	~	& /7I./ / /s   <CCc                  :   d dddddddfD        } t        d	d
      }|j                  |       j                         \  }}t        t	        j
                  ||dk7                 }t        t	        j
                  ||dk7                 }ddg|k(  sJ g d|k(  sJ y )Nc              3   N   K   | ]  }t        |j                                 y wr   r   r   s     r   r   z,test_feature_hasher_pairs.<locals>.<genexpr>X   "       	QWWYr   r8   r0   r   r
   r:   r9   r   r+   r   r   r   r   r   )r8   r:   r9   )r   r   r!   sortednpabsr#   r"   x1x2x1_nzx2_nzs         r   test_feature_hasher_pairsr|   W   s    A&1R(HIE #bVDN%%e,446FB266"R1W+&'E266"R1W+&'Eq6U??r(   c                  @   d dddddddfD        } t        d	d
      }|j                  |       j                         \  }}t        t	        j
                  ||dk7                 }t        t	        j
                  ||dk7                 }ddg|k(  sJ g d|k(  sJ d ddiddifD        } |j                  |       j                         \  }}t	        j
                  ||dk7           }t	        j
                  ||dk7           }dg|k(  sJ dg|k(  sJ t        ||       y )Nc              3   N   K   | ]  }t        |j                                 y wr   r   r   s     r   r   z?test_feature_hasher_pairs_with_string_values.<locals>.<genexpr>e   rp   r   r8   arq   abcr9   rr   rs   r   r   r   r   )r8   r8   r9   c              3   N   K   | ]  }t        |j                                 y wr   r   r   s     r   r   z?test_feature_hasher_pairs_with_string_values.<locals>.<genexpr>p   s     GT!'')_Gr   bax)r   r   r!   rt   ru   rv   r   rw   s         r   ,test_feature_hasher_pairs_with_string_valuesr   d   s'   C(%2*NOE #bVDN%%e,446FB266"R1W+&'E266"R1W+&'Eq6U??Gu~u~&FGE%%e,446FBFF2bAg;EFF2bAg;E3%<<3%<<r2r(   c                      d} g dt        t        d            g}t        | d      }|j                  |      }t	        |j                         t        j                  t        |      | f             y )Nr   r2   r   r6   r   )	r   ranger   r   r   r!   ru   zerosr>   )r   r#   r"   rC   s       r   test_hash_empty_inputr   y   sY    JT%(^$E"jXNN  'Aqyy{BHHc%j*-E$FGr(   c                  r    t               j                  ddig      } | j                  j                  dk(  sJ y )Nr   r   )r   )r   r   datar=   )rC   s    r   test_hasher_zerosr      s0    !!E1:,/A66<<4r(   c                  B   t        d      g} t        dd      j                  |       }|j                  j	                         dk  r|j                  j                         dkD  sJ t        dd      j                  |       }|j                  j	                         dkD  sJ y )NThequickbrownfoxjumpedTr6   )r7   r    r   F)rH   r   fit_transformr   minmaxrC   Xts     r   test_hasher_alternate_signr      s    	&	'(A	dx	@	N	Nq	QB77;;=1!222	e	A	O	OPQ	RB77;;=1r(   c                  "   t        d      g} t        ddd      j                  |       }t        |j                  d         t        | d         k  sJ t        ddd      j                  |       }|j                  d   t        | d         k(  sJ y )Nr   Tr8   r6   )r7   r   r    r   F)rH   r   r   rv   r   r>   r   s     r   test_hash_collisionsr      s    	&	'(A	h
mA 
 rwwqz?S1Y&&&	x
mA  771:QqT"""r(   )numpyru   rN   numpy.testingr   sklearn.feature_extractionr   (sklearn.feature_extraction._hashing_fastr   rc   r'   rD   markparametrizerR   rm   r|   r   r   r   r   r   r2   r(   r   <module>r      s      , 4 T34 	&'434 
  	(	(/*
*H #r(   