
    -i                         S SK rS SKrS SKJr  S SKJr  S SKJr	  S r
S r\R                  R                  SSS	/S
 S 5       /SS/S9S 5       rS rS rS rS rS rS rS rS rS rg)    N)assert_array_equal)FeatureHasher)	transformc                     [        SS9n SU R                  :X  d   eSSSS.SS	S
./n[        SS9R                  U5      nS U 5       n[        SSS9R                  U5      n[        UR	                  5       UR	                  5       5        g )N   
n_featuresdictbar*   %   )foodadatzarabazstring1)r   gagac              3   T   #    U  H  n[        UR                  5       5      v   M      g 7fNiteritems.0ds     g/var/www/html/venv/lib/python3.13/site-packages/sklearn/feature_extraction/tests/test_feature_hasher.py	<genexpr>,test_feature_hasher_dicts.<locals>.<genexpr>   s     
*Eq4	??E   &(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                     SSSSR                  S5      /SR                  S5      SS//n S H  nSU-  nS U  5       n[        US	S
S9nUR                  U5      nUR                  S   [	        U 5      :X  d   eUR                  S   U:X  d   eUS   R                  5       S:X  d   eUS   R                  5       S:X  d   eUR                  S:X  a  M   e   g )Nr   r   r   asciiquux)   	      r         c              3   $   #    U  H  ov   M     g 7fr    r   xs     r   r   .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_stringsrG      s     
uell734	g	v.E
 ,%
&!hu
 $$R(wwqzSZ'''wwqzZ'''txxzQtxxzQuuzz! ,r*   r%   	my_stringanother_stringc              #   $   #    U  H  ov   M     g 7fr   r4   r5   s     r   r   r   2   s     43q3r8   )rH   rI   list	generator)idsc                     Sn[        SSS9n[        R                  " [        US9   UR	                  U 5        SSS5        g! , (       d  f       g= f)z`FeatureHasher raises error when a sample is a single string.

Non-regression test for gh-13199.
z"Samples can not be a single string
   r9   r!   )matchN)r   pytestraises
ValueErrorr   )r%   msgr$   s      r   !test_feature_hasher_single_stringrU   .   s=     /C"bXFN	z	-  ' 
.	-	-s   A
Ac                     SSSSR                  S5      /SR                  S5      SS//n S U  5       n[        US[        S5      u  p#nS	 U  5       n[        US[        SS
S9u  pVn[        X%5        [        X65        S U  5       n[        US[        SSS9u  n  n[        R
                  " [        5         [        X'5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r,   r-   c              3   4   #    U  H  nS  U 5       v   M     g7f)c              3   (   #    U  H  oS 4v   M
     g7fr;   Nr4   r   fs     r   r   8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>I        !q!1vq   Nr4   r5   s     r   r   .test_hashing_transform_seed.<locals>.<genexpr>I        15a!q!!5      Fc              3   4   #    U  H  nS  U 5       v   M     g7f)c              3   (   #    U  H  oS 4v   M
     g7frY   r4   rZ   s     r   r   r\   L   r]   r^   Nr4   r5   s     r   r   r_   L   r`   ra   r   )seedc              3   4   #    U  H  nS  U 5       v   M     g7f)c              3   (   #    U  H  oS 4v   M
     g7frY   r4   rZ   s     r   r   r\   Q   r]   r^   Nr4   r5   s     r   r   r_   Q   r`   ra   r;   )r?   _hashing_transformstrr   rQ   rR   AssertionError)r%   raw_X_indicesindptr_	indices_0indptr_0	indices_1s           r   test_hashing_transform_seedrr   B   s     
uell734	g	v.E
 251F+FD#uEGQ151F/c5qQIw*v(151F(sEJOIq!	~	&7. 
'	&	&s   3C
Cc                  6   S SSS.SSSS.4 5       n [        S	S
S9nUR                  U 5      R                  5       u  p#[        [        R
                  " X"S:g     5      5      n[        [        R
                  " X3S:g     5      5      nSS/U:X  d   e/ SQU:X  d   eg )Nc              3   T   #    U  H  n[        UR                  5       5      v   M      g 7fr   r   r   s     r   r   ,test_feature_hasher_pairs.<locals>.<genexpr>X   s#      IA 	QWWYIr   r;   r2   r   r   r=   r<   r   r-   r   r   r    r!   r   )r;   r=   r<   )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"1W+&'E266"1W+&'Eq6U??r*   c                  <   S SSS.SSSS.4 5       n [        S	S
S9nUR                  U 5      R                  5       u  p#[        [        R
                  " X"S:g     5      5      n[        [        R
                  " X3S:g     5      5      nSS/U:X  d   e/ SQU:X  d   eS SS0SS04 5       n UR                  U 5      R                  5       u  p#[        R
                  " X"S:g     5      n[        R
                  " X3S:g     5      nS/U:X  d   eS/U:X  d   e[        X#5        g )Nc              3   T   #    U  H  n[        UR                  5       5      v   M      g 7fr   r   r   s     r   r   ?test_feature_hasher_pairs_with_string_values.<locals>.<genexpr>e   s#      OA 	QWWYOr   r;   arv   abcr<   rw   rx   r   r    r!   r   )r;   r;   r<   c              3   T   #    U  H  n[        UR                  5       5      v   M      g 7fr   r   r   s     r   r   r   p   s     G&FT!'')__&Fr   bax)r   r   r#   ry   rz   r{   r   r|   s         r   ,test_feature_hasher_pairs_with_string_valuesr   d   s   C(%2*NOE #bVDN%%e,446FB266"1W+&'E266"1W+&'Eq6U??Gu~u~&FGE%%e,446FBFF2Ag;EFF2Ag;E3%<<3%<<rr*   c                      Sn / S[        [        S5      5      /n[        U SS9nUR                  U5      n[	        UR                  5       [        R                  " [        U5      U 45      5        g )Nr   r4   r   r9   r!   )	r   ranger   r   r   r#   rz   zerosrA   )r	   r%   r$   rF   s       r   test_hash_empty_inputr   y   sY    JT%(^$E"jXNN  'Aqyy{BHHc%j*-E$FGr*   c                  t    [        5       R                  SS0/5      n U R                  R                  S:X  d   eg )Nr   r   )r   )r   r   datar@   )rF   s    r   test_hasher_zerosr      s0    !!E1:,/A66<<4r*   c                  <   [        S5      /n [        SSS9R                  U 5      nUR                  R	                  5       S:  a  UR                  R                  5       S:  d   e[        SSS9R                  U 5      nUR                  R	                  5       S:  d   eg )NThequickbrownfoxjumpedTr9   )r:   r"   r   F)rK   r   fit_transformr   minmaxrF   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                     [        S5      /n [        SSSS9R                  U 5      n[        UR                  S   5      [        U S   5      :  d   e[        SSSS9R                  U 5      nUR                  S   [        U S   5      :X  d   eg )Nr   Tr;   r9   )r:   r	   r"   r   F)rK   r   r   r{   r   rA   r   s     r   test_hash_collisionsr      s    	&	'(A	h
mA 
 rwwqz?S1Y&&&	x
mA  771:QqT"""r*   c                  ^    [        5       n U R                  5       nUR                  (       a   eg)z3Test that FeatureHasher has requires_fit=False tag.N)r   __sklearn_tags__requires_fit)hashertagss     r   $test_feature_hasher_requires_fit_tagr      s)    _F""$D     r*   c                  p    [        SS9n SSS.SSS./nU R                  U5      nUR                  S:X  d   eg	)
z6Test that FeatureHasher can transform without fitting.rO   r   r;   r2   )dogcat   )r   run)r2   rO   N)r   r   r@   )r   r   results      r   )test_feature_hasher_transform_without_fitr      sB    b)Fa !A"67Dd#F<<7"""r*   )numpyrz   rQ   numpy.testingr   sklearn.feature_extractionr   (sklearn.feature_extraction._hashing_fastr   rh   r)   rG   markparametrizerU   rr   r   r   r   r   r   r   r   r   r4   r*   r   <module>r      s      , 4 T34 	&'434 
  	(	(/*
*H # !#r*   