
    {Kg2                     T   d dl Z 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mZ d dl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#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j\                  d      d        Z/ ej\                  d      d        Z0ej\                  d        Z1ej\                  d        Z2ejf                  ji                  dde
e,g      d        Z5d Z6d Z7d Z8d Z9ejf                  ji                  ddgddgf      d        Z:ejf                  ji                  d d!d"d#g d$fd%d&d'g d(fd)d*d+d,d-gfg      d.        Z;d/ Z<ejf                  ji                  d0d1i d2d3gfd4i d2gfd5d6d7id8d9gfg      d:        Z=d; Z>d< Z?d= Z@d> ZAejf                  ji                  d?ed@dAdBdCdDgfe dEdFdGdCg fedHdIdGdCdDgfedJdJdGdCdKdLgfedMdNddCg fedOdPd3dCg f eedQR      dSdTd3dCg fg      dU        ZBejf                  ji                  dVeej                  eDfeej                  ej                  feej                  eDfeej                  eDfeej                  ej                  fe ej                  eDfg      dW        ZEdX ZFdY ZGdZ ZHd[ ZId\ ZJy)]    N)partial)	resources)Path)dumpsloads)Mock)	HTTPError)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)RemoteFileMetadata_fetch_remote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     d/home/alanp/www/video.onchill/myenv/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_dirr3   2   s#    	ww}}Td r&   module)scopec              #   ^   K   t        | j                  d            }| t        |       y w)Nscikit_learn_data_home_teststrmktempr3   tmpdir_factorytmp_files     r$   	data_homer>   7   s)     >(()FGHH
N   +-c              #   ^   K   t        | j                  d            }| t        |       y w)Nscikit_learn_load_files_testr8   r;   s     r$   load_files_rootrB   >   s)     >(()GHIH
Nr?   c              #      K   t        j                  |       }t        j                  |d      }|j                  d       |j	                          t        |       t        |       y w)NdirF)rE   delete   Hello World!
)tempfilemkdtempNamedTemporaryFilewritecloser9   r3   )rB   test_category_dir1sample_files      r$   test_category_dir_1rO   E   sZ     !))o>--2DUSK'(
 
!!"#s   A(A*c              #   h   K   t        j                  |       }t        |       t        |       y w)NrD   )rH   rI   r9   r3   )rB   test_category_dir2s     r$   test_category_dir_2rR   O   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
   )rS   r>   s     r$   test_data_homerV   V   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)rB   ress     r$   test_default_empty_load_filesr]   j   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      rG   )r   rX   rY   rZ   r[   datarO   rR   rB   r\   s       r$   test_default_load_filesrc   q   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   rX   rY   rZ   r[   ra   )rO   rR   rB   categoryr\   s        r$   .test_load_files_w_categories_desc_and_encodingrn   y   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`   ra   )r   rX   rY   rZ   r[   getrb   s       r$   test_load_files_wo_load_contentrr      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)rs   N)mkdirwrite_bytesr   setsuffixr9   rY   )tmp_pathrs   dfilesfpathspr\   s           r$   "test_load_files_allowed_extensionsr      s     	5AGGIAE!"EqQUEE"	h 
X2D
ECH1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   rX   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   rX   imagesrY   r   allarrayuint8r[   ImportErrorwarningswarn)r\   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   ra   r   targetsizerX   feature_namesr[   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   ra   r   r   hasattrrX   r   rZ   r[   r   r   r|   is_file)loader_func
data_shapetarget_shapen_target	has_descrrY   bunchr}   s           r$   test_loaderr     s   ( MEeU###::z)))<<---uo&5&&':a=8885%%&(222{{{%%% # #A 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   2  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   G  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   N  s    j!E 0ENN55<(N+++% J... #N***% I---r&   c                  6    t               } dt        |       v sJ y )Nra   )r   rE   )ra   s    r$   test_bunch_dirr   c  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  i  sP    
DC	{#	.0 
/ OC	{#	.: 
/	. 
/	.
 
/	.s   A
A&A#&A/c           
         d}t        d|d      }t        t        |dddt        j                                     }| j                  d|       t        j                  t        d	
      5 }t        j                  t        d
      5  t        |dd       ddd       |j                  dk(  sJ |D ]  }t        |j                        d| k(  rJ  t        |      dk(  sJ 	 ddd       y# 1 sw Y   XxY w# 1 sw Y   yxY w)z'Check retry mechanism in _fetch_remote.z8https://scikit-learn.org/this_file_does_not_exist.tar.gzinvalid_fileNi  z	Not Found)urlcoder  hdrsfp)side_effectz"sklearn.datasets._base.urlretrievezRetry downloadingr   zHTTP Error 404r   r   )	n_retriesdelayr   zRetry downloading from url: )r   r   r	   ioBytesIOsetattrr  warnsUserWarningr  r   
call_countr9   messagerX   )monkeypatchr	  invalid_remote_fileurlretrieve_mockrecordrs         r$   1test_fetch_remote_raise_warnings_with_invalid_urlr  u  s     EC,^S$G#;Tbjjl

 <>NO	k)<	=]]9,<=-!D >  **a///Aqyy>'CC5%IIII 6{a 
>	=== 
>	=s*   )C7C+9C7C7+C4	0C77D )Kr  r/   r1   rH   r   	functoolsr   	importlibr   pathlibr   pickler   r   unittest.mockr   urllib.errorr	   numpyr   r  r  r
   r   r   r   r   r   r   r   r   r   r   sklearn.datasets._baser   r   r   r   "sklearn.datasets.tests.test_commonr   sklearn.preprocessingr   sklearn.utilsr   r   r3   fixturer>   rB   rO   rR   markparametrizerV   r]   rc   rn   rr   r   r   r   r   r   r   r   r   r   float64intr   r   r   r   r  r  r-   r&   r$   <module>r-     sg   	 	         "       > '  
 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&   