
    h$,f.                     &   d dl Z d dlZ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mZ d dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlm Z  d d	l!m"Z" d d
l#m$Z$  G d d      Z%d Z& ejN                  d      d        Z( ejN                  d      d        Z)ejN                  d        Z*ejN                  d        Z+ejX                  j[                  dde	e%g      d        Z.d Z/d Z0d Z1d Z2ejX                  j[                  ddgddgf      d        Z3ejX                  j[                  ddd d!g d"fd#d$d%g d&fd'd(d)d*d+gfg      d,        Z4d- Z5ejX                  j[                  d.d/i d0d1gfd2i d0gfd3d4d5id6d7gfg      d8        Z6d9 Z7d: Z8d; Z9d< Z:ejX                  j[                  d=ed>d?d@dAdBgfedCdDdEdAg fedFdGdEdAdBgfedHdHdEdAdIdJgfedKdLddAg fedMdNd1dAg f eedOP      dQdRd1dAg fg      dS        Z;ejX                  j[                  dTeejx                  e=feejx                  ejx                  feejx                  e=feejx                  e=feejx                  ejx                  feejx                  e=fg      dU        Z>dV Z?dW Z@dX ZAdY ZBy)Z    N)partial)	resources)Path)dumpsloads)clear_data_homeget_data_homeload_breast_cancerload_diabetesload_digits
load_files	load_irisload_linnerudload_sample_imageload_sample_images	load_wine)load_csv_dataload_gzip_compressed_csv_datacheck_as_frame)scale)Bunchc                       e Zd ZdZd Zd Zy)
_DummyPathz8Minimal class that implements the os.PathLike interface.c                     || _         y Npath)selfr   s     @lib/python3.12/site-packages/sklearn/datasets/tests/test_base.py__init__z_DummyPath.__init__&   s	    	    c                     | j                   S r   r   )r   s    r    
__fspath__z_DummyPath.__fspath__)   s    yyr"   N)__name__
__module____qualname____doc__r!   r$    r"   r    r   r   #   s    Br"   r   c                 n    t         j                  j                  |       rt        j                  |        y y r   )osr   isdirshutilrmtreer   s    r    _remove_dirr/   -   s#    	ww}}Td r"   module)scopec              #   ^   K   t        | j                  d            }| t        |       y w)Nscikit_learn_data_home_teststrmktempr/   tmpdir_factorytmp_files     r    	data_homer:   2   s)     >(()FGHH
N   +-c              #   ^   K   t        | j                  d            }| t        |       y w)Nscikit_learn_load_files_testr4   r7   s     r    load_files_rootr>   9   s)     >(()GHIH
Nr;   c              #      K   t        j                  |       }t        j                  |d      }|j                  d       |j	                          t        |       t        |       y w)NdirF)rA   delete   Hello World!
)tempfilemkdtempNamedTemporaryFilewritecloser5   r/   )r>   test_category_dir1sample_files      r    test_category_dir_1rK   @   sZ     !))o>--2DUSK'(
 
!!"#s   A(A*c              #   h   K   t        j                  |       }t        |       t        |       y w)Nr@   )rD   rE   r5   r/   )r>   test_category_dir2s     r    test_category_dir_2rN   J   s,     !))o>
 
!!"#s   02path_containerc                 H   |  | |      }t        |      }||k(  sJ t        j                  j                  |      sJ |  | |      }t	        |       t        j                  j                  |      rJ t        |      }t        j                  j                  |      sJ y )N)r:   )r	   r+   r   existsr   )rO   r:   s     r    test_data_homerR   Q   s     !"9-		2I	!!!77>>)$$$ !"9-	i(ww~~i((( 	2I77>>)$$$r"   c                     t        |       }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  J y )Nr   )r   len	filenamestarget_namesDESCR)r>   ress     r    test_default_empty_load_filesrY   e   sL    
_
%Cs}}"""s A%%%99r"   c                     t        |      }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  J |j
                  dgk(  sJ y )N      rC   )r   rT   rU   rV   rW   datarK   rN   r>   rX   s       r    test_default_load_filesr_   l   sb    
_
%Cs}}"""s A%%%9988)****r"   c                 f   t         j                  j                  |       j                  t         j                        j                         }t        |d|gd      }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  dk(  sJ |j                  dgk(  sJ y )Ntestzutf-8)description
categoriesencodingr[   zHello World!
)r+   r   abspathsplitseppopr   rT   rU   rV   rW   r]   )rK   rN   r>   categoryrX   s        r    .test_load_files_w_categories_desc_and_encodingrj   t   s     ww2399"&&AEEGH
V
WC s}}"""s A%%%9988())))r"   c                     t        |d      }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  J |j                  d      J y )NF)load_contentr[   r\   r]   )r   rT   rU   rV   rW   getr^   s       r    test_load_files_wo_load_contentrn      sd     _5
9Cs}}"""s A%%%99776?"""r"   allowed_extensionsz.txtz.jsonc                 F   | dz  }|j                          d}|D cg c]  }||z  	 }}|D ]  }|j                  d        t        | |      }t        |D cg c]  }|j                  |v st        |       c}      t        |j                        k(  sJ yc c}w c c}w )z;Check the behaviour of `allowed_extension` in `load_files`.sub)z	file1.txtz
file2.jsonz
file3.jsonzfile4.mds   hello)ro   N)mkdirwrite_bytesr   setsuffixr5   rU   )tmp_pathro   dfilesfpathsprX   s           r    "test_load_files_allowed_extensionsr|      s     	5AGGIAE!"qQU"E"  	h 
X2D
ECH15G)GAHISN   	 # Is   BB,BzHfilename, expected_n_samples, expected_n_features, expected_target_nameszwine_data.csv      )class_0class_1class_2iris.csv      )setosa
versicolor	virginicazbreast_cancer.csv9     	malignantbenignc                     t        |       \  }}}|j                  d   |k(  sJ |j                  d   |k(  sJ |j                  d   |k(  sJ t        j                  j	                  ||       y )Nr   r[   )r   shapenptestingassert_array_equal)filenameexpected_n_samplesexpected_n_featuresexpected_target_namesactual_dataactual_targetactual_target_namess          r    test_load_csv_datar      s{     7DH6M3K 3Q#5555Q#6666q!%7777JJ!!"57LMr"   c                     d} d}t        |       }t        | |      }t        |      dk(  sJ t        |      dk(  sJ t        j                  j	                  |d   |d          t        j                  j	                  |d   |d          t        j                  j	                  |d	   |d	          |d
   j                  d      sJ y )Nr   ziris.rstdata_file_namer   descr_file_namer      r   r[   r\   z.. _iris_dataset:)r   rT   r   r   r   
startswith)r   r   res_without_descrres_with_descrs       r    test_load_csv_data_with_descrr      s    N O%^D"%N ~!### !Q&&&JJ!!."35Fq5IJJJ!!."35Fq5IJJJ!!."35Fq5IJ"(()<===r"   z filename, kwargs, expected_shapezdiabetes_data_raw.csv.gz  
   diabetes_target.csv.gzzdigits.csv.gz	delimiter,  A   c                 P    t        | fi |}|j                  t        |      k(  sJ y r   )r   r   tuple)r   kwargsexpected_shaper   s       r    "test_load_gzip_compressed_csv_datar      s,     0CFCKn 5555r"   c                      d} d}t        |       }t        | |      \  }}t        j                  j                  ||       |j	                  d      sJ y )Nr   zdiabetes.rstr   r   z.. _diabetes_dataset:)r   r   r   r   r   )r   r   expected_datar   descrs        r    -test_load_gzip_compressed_csv_data_with_descrr      sV    -N$O1PM6%'K
 JJ!!+}=3444r"   c                  &   	 t               } t        | j                        dk(  sJ t        | j                        dk(  sJ | j                  }t	        j
                  |d   ddd d f   t	        j                  g dt        j                        k(        sJ t	        j
                  |d   ddd d f   t	        j                  g dt        j                        k(        sJ | j                  sJ y # t        $ r t        j                  d       Y y w xY w)Nr\   r   )         )dtyper[   )r\      r~   3Could not load sample images, PIL is not available.)r   rT   imagesrU   r   allarrayuint8rW   ImportErrorwarningswarn)rX   r   s     r    test_load_sample_imagesr      s    M "3::!###3==!Q&&& vvfQi1a(BHH_BHH,UUVVVvvfQi1a(BHH[,QQRRRyyy MKLMs   C,C/ /DDc                      	 t        d      } | j                  dk(  sJ | j                  dk(  sJ y # t        $ r t	        j
                  d       Y y w xY w)Nz	china.jpgr   )i  i  r   r   )r   r   r   r   r   r   )chinas    r    test_load_sample_imager      sT    M!+.{{g%%%{{m+++ MKLMs   -0 AAc                  t   t        d      } | j                  j                  dk(  sJ | j                  j                  sJ d       t        | j                        dk(  sJ | j                  sJ t               }t        j                  j                  t        | j                        dz  |j                  d       y	)
zTest to check that we load a scaled version by default but that we can
    get an unscaled version when setting `scaled=False`.F)scaledr   r   r   r   gT5@g-C6?)atolN)r   r]   r   targetsizerT   feature_namesrW   r   r   assert_allcloser   )diabetes_rawdiabetes_defaults     r    test_load_diabetes_rawr      s     !.L""i///##(S(#|))*b000$JJl H-/?/D/D5  r"   zEloader_func, data_shape, target_shape, n_target, has_descr, filenames)r   r   )r   r\   Tr   )r}   r~   )r}   r   )r   r   )r   )   r   data_filenametarget_filenamer   )r   )r   @   )r   	   )n_class)Q  r   )r   c           	          |        }t        |t              sJ |j                  j                  |k(  sJ |j                  j                  |k(  sJ t        |d      rt        |j                        |d   k(  sJ |t        |j                        |k(  sJ |r|j                  sJ |rRd|v sJ t        |D cg c]4  }||v xr, t        j                  |d         ||   z  j                         6 c}      sJ y y c c}w )Nr   r[   data_module)
isinstancer   r]   r   r   hasattrrT   r   rV   rW   r   r   rx   is_file)loader_func
data_shapetarget_shapen_target	has_descrrU   bunchry   s           r    test_loaderr     s   ( MEeU###::z)))<<---uo&5&&':a=8885%%&(222{{{%%% #  U
 Q__U=%9:U1XENNPQ
 	
 
 s   69C:z%loader_func, data_dtype, target_dtypec                 0     |        }t        || ||       y )N)expected_data_dtypeexpected_target_dtyper   )r   
data_dtypetarget_dtypedefault_results       r    test_toy_dataset_frame_dtyper   -  s     !]N&*	r"   c                  z    t        d      } t        t        |             }d|_        |d   |j                  k(  sJ y )Nx)r   y)r   r   r   r   r   bunch_from_pkls     r    test_loads_dumps_bunchr   B  s:    CLE5<(NN#."2"2222r"   c                      t        d      } d| j                  d<   t        t        |             }|j                  dk(  sJ |d   dk(  sJ d|_        |j                  dk(  sJ |d   dk(  sJ y )Noriginal)keyzset from __dict__r   changed)r   __dict__r   r   r   r   s     r    8test_bunch_pickle_generated_with_0_16_and_read_with_0_17r   I  s    j!E 0ENN55<(N+++% J... #N***% I---r"   c                  6    t               } dt        |       v sJ y )Nr]   )r   rA   )r]   s    r    test_bunch_dirr   ^  s    ;DSYr"   c                      d} t        j                  t        |       5  ddlm} ddd       d} t        j                  t        |       5  ddlm} ddd       y# 1 sw Y   6xY w# 1 sw Y   yxY w)zLCheck that we raise the ethical warning when trying to import `load_boston`.z8The Boston housing prices dataset has an ethical problem)matchr   )load_bostonNzBcannot import name 'non_existing_function' from 'sklearn.datasets')non_existing_function)pytestraisesr   sklearn.datasetsr   r   )msgr   r   s      r    test_load_boston_errorr  d  s`    
DC	{#	. 101 OC	{#	. ;:; ;1 1
; ;s   A
A&A#&A/)Cr+   r-   rD   r   	functoolsr   	importlibr   pathlibr   pickler   r   numpyr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   sklearn.datasets._baser   r   "sklearn.datasets.tests.test_commonr   sklearn.preprocessingr   sklearn.utilsr   r   r/   fixturer:   r>   rK   rN   markparametrizerR   rY   r_   rj   rn   r|   r   r   r   r   r   r   r   r   float64intr   r   r   r   r  r)   r"   r    <module>r     sT   	             > '  
 h   h   $ $ $ $ )D$
+CD% E%&+*# -67:K/LM N N	#r#DE	S!BC	c2X'>?NN>$ &	#R#r3	!2u-	;,tRj966
5M M  K	Y4*F	Ivq$3	Hfa
|</0	
 
	64r:	j'2tR8	a	(*gr4L&
'&
. +	RZZ-	

BJJ/	bjj#&	BJJ$	

BJJ/	BJJ$

3.*	;r"   