Ë
    8Ò^jf  ã                   óÎ   — d dl Zd dlZd dlm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„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)é    N)Úassert_array_equal)ÚFeatureHasher)Ú	transform)ÚSCIPY_VERSION_BELOW_1_12c                  ó$  — 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     ú/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/feature_extraction/tests/test_feature_hasher.pyú	<genexpr>z,test_feature_hasher_dicts.<locals>.<genexpr>   s   è ø€ Ò
*˜qŒ4�—‘“	�?Ñ
*ùó   ‚#%Úpair©r
   Ú
input_type)r   r"   r   r   Útoarray)Úfeature_hasherÚraw_XÚX1ÚgenÚX2s        r   Útest_feature_hasher_dictsr)   
   s‚   € Ü"¨bÔ1€NØ�^×.Ñ.Ò.Ð.Ð.à B°Ñ4¸eÈYÑ6WÐX€EÜ	 "Ô	%×	/Ñ	/°Ó	6€BÙ
* EÔ
*€CÜ	 "°Ô	8×	BÑ	BÀ3Ó	G€BÜ�r—z‘z“| R§Z¡Z£\Õ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 ‚t
        r:|dgd d …f   j                  «       dk(  sJ ‚|dgd d …f   j                  «       dk(  s2J ‚|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   è ø€ Ò�AŒaÑùó   ‚ÚstringF)r
   r"   Úalternate_signr   é   é   é   é   )Úencoder   r   ÚshapeÚlenr   ÚsumÚnnz)r%   Úlg_n_featuresr
   Úitr$   ÚXs         r   Útest_feature_hasher_stringsrF      s&  € ð 
��u˜eŸl™l¨7Ó3Ð4Ø	�‰�gÓ	  vÐ.ð€Eð
 ,ò ˆØ˜Ñ%ˆ
á˜Ôˆä&Ø!¨hÀuô
ˆð ×$Ñ$ RÓ(ˆà�w‰w�q‰zœS ›ZÒ'Ð'Ð'Ø�w‰w�q‰z˜ZÒ'Ð'Ð'å#Ø�a�Sš!�V‘9—=‘=“? aÒ'Ð'Ð'Ø�a�Sš!�V‘9—=‘=“? aÒ'Ð'Ð'à�Q‘4—8‘8“: ’?Ð"�?Ø�Q‘4—8‘8“: ’?Ð"�?à�u‰u˜‹zÐˆzñ)r*   r"   ÚlistÚ	generatorc                 óÈ   — d}ddg}| dk(  r	d„ |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Ú	my_stringÚanother_stringrH   c              3   ó    K  — | ]  }|–— Œ y ­wr   r4   r5   s     r   r   z4test_feature_hasher_single_string.<locals>.<genexpr><   s   è ø€ Ò"�q”Ñ"ùr7   é
   r8   r!   )ÚmatchN)r   ÚpytestÚraisesÚ
ValueErrorr   )r"   Úmsgr%   r$   s       r   Ú!test_feature_hasher_single_stringrS   3   sc   € ð /€CØÐ*Ð+€EØ�[Ò Ù"˜EÔ"ˆä"¨b¸XÔF€NÜ	�‰”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©r:   Nr4   ©r   Úfs     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>J   ó   è ø€ Ò!˜!��1ŒvÑ!ùó   ‚Nr4   r5   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>J   ó   è ø€ Ò1 aÑ!˜q×!Ð!Ñ1ùó   ‚é€   Fc              3   ó.   K  — | ]  }d „ |D «       –— Œ y­w)c              3   ó$   K  — | ]  }|d f–— Œ
 y­wrW   r4   rX   s     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>M   rZ   r[   Nr4   r5   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>M   r\   r]   r   )Úseedc              3   ó.   K  — | ]  }d „ |D «       –— Œ y­w)c              3   ó$   K  — | ]  }|d f–— Œ
 y­wrW   r4   rX   s     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>R   rZ   r[   Nr4   r5   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>R   r\   r]   r:   )r>   Ú_hashing_transformÚstrr   rO   rP   ÚAssertionError)r%   Úraw_X_ÚindicesÚindptrÚ_Ú	indices_0Úindptr_0Ú	indices_1s           r   Útest_hashing_transform_seedrn   C   sÚ   € ð 
��u˜eŸl™l¨7Ó3Ð4Ø	�‰�gÓ	  vÐ.ð€Eñ
 2¨5Ô1€FÜ+¨F°D¼#¸uÓEÑ€GˆV�Qá1¨5Ô1€FÜ/°¸¼cÀ5ÈqÔQÑ€Iˆx˜Ü�w 	Ô*Ü�v˜xÔ(á1¨5Ô1€FÜ(¨°´s¸EÈÔJ�O€Iˆq�!Ü	�‰”~Ó	&ñ /Ü˜7 IÔ.÷/÷ /ñ /ú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>Y   ó"   è ø€ ò àô 	ˆQ�W‰W‹Y�ñùr   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}   X   s¡   € ñà AÑ&°¸1ÀRÑ(HÐIô€Eô #¨b¸VÔD€NØ×%Ñ% eÓ,×4Ñ4Ó6�F€BˆÜ”2—6‘6˜"˜R 1™W™+Ó&Ó'€EÜ”2—6‘6˜"˜R 1™W™+Ó&Ó'€EØˆqˆ6�UŠ?Ðˆ?Ú˜ÒÐÑ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>f   rq   r   r:   Úarr   Úabcr;   rs   rt   r   r    r!   r   )r:   r:   r;   c              3   óN   K  — | ]  }t        |j                  «       «      –— Œ y ­wr   r   r   s     r   r   z?test_feature_hasher_pairs_with_string_values.<locals>.<genexpr>q   s   è ø€ ÒG ŒT�!—'‘'“)�_ÑGùr   Úbax)r   r   r#   ru   rv   rw   r   rx   s         r   Ú,test_feature_hasher_pairs_with_string_valuesr„   e   s'  € ñà CÑ(°%ÀÈ2Ñ*NÐOô€Eô #¨b¸VÔD€NØ×%Ñ% eÓ,×4Ñ4Ó6�F€BˆÜ”2—6‘6˜"˜R 1™W™+Ó&Ó'€EÜ”2—6‘6˜"˜R 1™W™+Ó&Ó'€EØˆqˆ6�UŠ?Ðˆ?Ú˜ÒÐÐáG¨¨u ~¸¸u°~Ð&FÔG€EØ×%Ñ% eÓ,×4Ñ4Ó6�F€BˆÜ�F‰F�2�b˜A‘g‘;Ó€EÜ�F‰F�2�b˜A‘g‘;Ó€EØˆ3�%Š<Ðˆ<Øˆ3�%Š<Ðˆ<Ü�r˜2Õr*   c                  óâ   — d} g dt        t        d«      «      g}t        | d¬«      }|j                  |«      }t	        |j                  «       t        j                  t        |«      | f«      «       y )Nr   r4   r   r8   r!   )	r   Úranger   r   r   r#   rv   Úzerosr@   )r
   r%   r$   rE   s       r   Útest_hash_empty_inputrˆ   z   sY   € Ø€JØ�”Tœ% ›(“^Ð$€Eä"¨jÀXÔN€NØ× Ñ  Ó'€Aä�q—y‘y“{¤B§H¡H¬c°%«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?   )rE   s    r   Útest_hasher_zerosr‹   „   s0   € ä‹×!Ñ! E¨1 : ,Ó/€AØ�6‰6�<‰<˜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ÚThequickbrownfoxjumpedTr8   )r9   r"   r   F)rG   r   Úfit_transformrŠ   ÚminÚmax©rE   ÚXts     r   Útest_hasher_alternate_signr“   Š   s€   € Ü	Ð&Ó	'Ð(€Aä	 d°xÔ	@×	NÑ	NÈqÓ	Q€BØ�7‰7�;‰;‹=˜1Ò §¡§¡£°Ò!2Ð2Ð2ä	 e¸Ô	A×	OÑ	OÐPQÓ	R€BØ�7‰7�;‰;‹=˜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�   Tr:   r8   )r9   r
   r"   r   F)rG   r   rŽ   rw   rŠ   r@   r‘   s     r   Útest_hash_collisionsr•   ”   s�   € Ü	Ð&Ó	'Ð(€Aä	Ø¨°hô
ç�m�AÓð ô
 ˆr�w‰w�q‰z‹?œS  1¡›YÒ&Ð&Ð&ä	Ø¨°xô
ç�m�AÓð ð �7‰7�1‰:œ˜Q˜q™T›Ò"Ð"Ñ"r*   c                  óT   — t        «       } | j                  «       }|j                  rJ ‚y)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                  ót   — t        d¬«      } dddœdddœg}| j                  |«      }|j                  dk(  sJ ‚y	)
z6Test that FeatureHasher can transform without fitting.rM   r	   r:   r2   )ÚdogÚcaté   )r�   Úrun)r2   rM   N)r   r   r?   )r™   rŠ   Úresults      r   Ú)test_feature_hasher_transform_without_fitr¢   «   sB   € ä bÔ)€FØ˜aÑ ¨!°AÑ"6Ð7€DØ×Ñ˜dÓ#€FØ�<‰<˜7Ò"Ð"Ñ"r*   )Únumpyrv   rO   Únumpy.testingr   Úsklearn.feature_extractionr   Ú(sklearn.feature_extraction._hashing_fastr   rd   Úsklearn.utils.fixesr   r)   rF   ÚmarkÚparametrizerS   rn   r}   r„   rˆ   r‹   r“   r•   r›   r¢   r4   r*   r   ú<module>rª      sy   ðÛ Û Ý ,å 4Ý TÝ 8ò3òð< ‡�×Ñ˜¨°Ð'<Ó=ñ(ó >ð(ò/ò*
òò*Hò òò#ò !ó#r*   