
    -i                         S r SSKJr  SSKJr  SSKrSSKrSSKJ	r
  SSKJrJrJr  SSKJr  SSKJr  S rS	 rS
 rS rS rS rS rg)zTest the 20news downloader, if the data is available,
or if specifically requested via environment variable
(e.g. for CI jobs).    )partial)patchN)check_as_framecheck_pandas_dependency_messagecheck_return_X_y	normalize)assert_allclose_dense_sparsec                    U " SSS9nUR                   R                  S5      (       d   eU " SUR                  SSS2   SS9nUR                  UR                  SS  :X  d   e[        R                  " UR
                  5      R                  5       S	S
/:X  d   e[        UR                  5      [        UR
                  5      :X  d   e[        UR                  5      [        UR                  5      :X  d   eUR                  S	   nUR                  UR
                  S	      nUR                  R                  U5      nUR                  [        R                  " UR
                  U:H  5      S	   S	      nX6:X  d   eU " SSSS9u  px[        U5      [        UR                  5      :X  d   eUR                  UR
                  R                  :X  d   eg )NallF)subsetshuffle.. _20newsgroups_dataset:)r   
categoriesr   r      T)r   r   
return_X_y)DESCR
startswithtarget_namesnpuniquetargettolistlen	filenamesdataindexwhereshape)	fetch_20newsgroups_fxtr   	data2catsentry1categorylabelentry2Xys	            U/var/www/html/venv/lib/python3.13/site-packages/sklearn/datasets/tests/test_20news.pytest_20newsr,      s   !>D::  !<==== '!2!22b8!<eI
 !!T%6%6rs%;;;;99Y%%&--/Aq6999 y""#s9+;+;'<<<<y""#s9>>':::: ^^AF%%i&6&6q&9:H##H-EYYrxxu 45a8;<F "$ODAq6S^###77dkk'''''    c                     U " SS9n[        US   5      [        UR                  5      :X  d   e[        US   5      [        UR                  5      :X  d   e[        US   5      [        UR                  5      :X  d   eg)zmChecks the length consistencies within the bunch

This is a non-regression test for a bug present in 0.16.1.
r   r   r   r   r   N)r   r   r   r   )r#   r   s     r+   test_20news_length_consistencyr0   5   sn     "/DtF|DII...tH~#dkk"2222tK !S%8888r-   c                    U " SS9n[         R                  " UR                  5      (       a  UR                  R                  S:X  d   eUR                  R                  S:X  d   eUR
                  R                  S   S:X  d   eUR                  R                  [        R                  :X  d   eUR                  R                  S5      (       d   eU " SS9n[         R                  " UR                  5      (       a  UR                  R                  S:X  d   eUR                  R                  S	:X  d   eUR
                  R                  S   S
:X  d   eUR                  R                  [        R                  :X  d   eUR                  R                  S5      (       d   e[        U SS9n[        X5        U " SS9n[         R                  " UR                  5      (       a  UR                  R                  S:X  d   eUR                  R                  S:X  d   eUR
                  R                  S   S:X  d   eUR                  R                  [        R                  :X  d   eUR                  R                  S5      (       d   eg )Ntrainr/   csr)2,  ; r   r4   r   test)l  r5   r7   r   )I  r5   r8   )spissparser   formatr"   r   dtyper   float64r   r   r   r   )!fetch_20newsgroups_vectorized_fxtbunch
fetch_funcs      r+   test_20news_vectorizedrA   A   s   -W=E;;uzz""uzz'8'8E'AAA::...<<a E)))::rzz)));;!!"=>>>> .V<E;;uzz""uzz'8'8E'AAA::~---<<a D(((::rzz)));;!!"=>>>> :6JJU' .U;E;;uzz""uzz'8'8E'AAA::5555<<a L000::rzz)));;!!"=>>>>r-   c                     U " SS9nU " SS9nUS   S S nUS   S S n[        U[        U5      5        [        R                  " [        R                  R                  UR                  5       SS9S5      (       d   eg )NFr   Tr   d   r   )axis)r
   r	   r   allcloselinalgnormtodense)r>   r)   X_X_norms       r+   test_20news_normalizationrK   _   sr    )E:A	*T	:BZF	&	$3A 16;;ryy~~fnn&6Q~?CCCCr-   c           	         [         R                  " S5      nU " SS9n[        X 5        UR                  nUR                  S:X  d   e[        UR                  R                   Vs/ s H  n[        XAR                  5      PM     sn5      (       d   eS H  nXSR                  5       ;   a  M   e   SUR                  5       ;   d   eUR                  R                  S:X  d   eg s  snf )NpandasTas_frame)r4   i< )beginner	beginners	beginning
beginningsbeginsbegleybegonecategory_class)pytestimportorskipr   framer"   r   r   dtypes
isinstanceSparseDtypekeysr   name)r>   pdr?   rZ   colexpected_features         r+   test_20news_as_framerc   i   s    			X	&B-t<E5<KKE;;/)))5::;L;LM;LC
3/;LMNNNN  ::</// uzz|+++<< 0000 Ns   #C!c                     [        U 5        g )N)r   )r>   hide_available_pandass     r+   test_as_frame_no_pandasrf      s    #$EFr-   c                 *   [        S5       n[        S5       nSUl        SUl        Sn[        R                  " [        US9   U " SS9  S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nzos.path.existszjoblib.loadT)r)   r*   zThe cached dataset located in)matchrN   )r   return_valuerX   raises
ValueError)r>   mock_is_exist	mock_loaderr_msgs       r+   test_outdated_picklero      so    		 M=!Y)-M&%/I"5Gz914@ : " 
!	  :9 "! 
!	 s:   B*A3A"	A3B"
A0,A33
B	=B
B)__doc__	functoolsr   unittest.mockr   numpyr   rX   scipy.sparsesparser9   "sklearn.datasets.tests.test_commonr   r   r   sklearn.preprocessingr	   sklearn.utils._testingr
   r,   r0   rA   rK   rc   rf   ro    r-   r+   <module>rz      sT         
 , ?(@	9?<D12G	Ar-   