Ë
    ÷Q(h¶  ã                   óÐ   — 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     úr/var/www/skyplay_api_hub/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 ‚|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ÚlenÚsumÚnnz)r#   Úlg_n_featuresr   Úitr"   ÚXs         r   Útest_feature_hasher_stringsrD      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Ò'Ð'Ð'à�‰t�x‰x‹z˜QŠÐˆØ�‰t�x‰x‹z˜QŠÐˆà�u‰u˜‹zÐˆzñ!r(   r#   Ú	my_stringÚanother_stringc              #   ó    K  — | ]  }|–— Œ y ­wr   r2   r3   s     r   r   r   2   s   è ø€ Ò4ˆqŒÑ4ùr5   )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ä"¨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©r8   Nr2   ©r   Úfs     r   r   z8test_hashing_transform_seed.<locals>.<genexpr>.<genexpr>I   ó   è ø€ Ò!˜!��1ŒvÑ!ùó   ‚Nr2   r3   s     r   r   z.test_hashing_transform_seed.<locals>.<genexpr>I   ó   è ø€ Ò1 aÑ!˜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Ú   € ð 
��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>X   ó"   è ø€ ò àô 	ˆQ�W‰W‹Y�ñù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Ñ&°¸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>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�!—'‘'“)�_ÑGùr   Ú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ô #¨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   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ä"¨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=   )rC   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ÚThequickbrownfoxjumpedTr6   )r7   r    r   F)rH   r   Úfit_transformr‰   ÚminÚmax©rC   Ú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Œ   Tr8   r6   )r7   r   r    r   F)rH   r   r�   rv   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(   )Ú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(   