
    e!hY                        d dl Z d dlZ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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$m%Z% d d
l&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1  G d d      Z2d Z3 ejh                  d      d        Z5 ejh                  d      d        Z6ejh                  d        Z7ejh                  d        Z8ejr                  ju                  ddee2g      d        Z;d Z<d Z=d Z>d Z?ejr                  ju                  ddgddgf      d         Z@ejr                  ju                  d!d"d#d$g d%fd&d'd(g d)fd*d+d,d-d.gfg      d/        ZAd0 ZBejr                  ju                  d1d2i d3d4gfd5i d3gfd6d7d8id9d:gfg      d;        ZCd< ZDd= ZEd> ZFd? ZGejr                  ju                  d@edAdBdCdDdEgfe%dFdGdHdDg fe!dIdJdHdDdEgfe"dKdKdHdDdLdMgfedNdOddDg fedPdQd4dDg f eedRS      dTdUd4dDg fg      dV        ZHejr                  ju                  dWeej                  eJfeej                  ej                  feej                  eJfe!ej                  eJfe"ej                  ej                  fe%ej                  eJfg      dX        ZKdY ZLdZ ZMd[ ZNd\ ZOd] ZPd^ ZQd_ ZRd` ZSda ZTdb ZUy)c    N)partial)	resources)Path)dumpsloadsMock)	HTTPError)urlparse)clear_data_home
fetch_file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$_derive_folder_and_filename_from_url_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     h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/sklearn/datasets/tests/test_base.py__init__z_DummyPath.__init__0   s	    	    c                     | j                   S r$   r%   )r'   s    r(   
__fspath__z_DummyPath.__fspath__3   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_dirr7   7   s#    	ww}}Td r*   module)scopec              #   ^   K   t        | j                  d            }| t        |       y w)Nscikit_learn_data_home_teststrmktempr7   tmpdir_factorytmp_files     r(   	data_homerB   <   s)     >(()FGHH
N   +-c              #   ^   K   t        | j                  d            }| t        |       y w)Nscikit_learn_load_files_testr<   r?   s     r(   load_files_rootrF   C   s)     >(()GHIH
NrC   c              #      K   t        j                  |       }t        j                  |d      }|j                  d       |j	                          t        |       t        |       y w)NdirF)rI   delete   Hello World!
)tempfilemkdtempNamedTemporaryFilewritecloser=   r7   )rF   test_category_dir1sample_files      r(   test_category_dir_1rS   J   sZ     !))o>--2DUSK'(
 
!!"#s   A(A*c              #   h   K   t        j                  |       }t        |       t        |       y w)NrH   )rL   rM   r=   r7   )rF   test_category_dir2s     r(   test_category_dir_2rV   T   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)rB   )r   r3   r&   existsr   )rW   rB   s     r(   test_data_homerZ   [   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)rF   ress     r(   test_default_empty_load_filesra   o   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      rK   )r   r\   r]   r^   r_   datarS   rV   rF   r`   s       r(   test_default_load_filesrg   v   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testutf-8)description
categoriesencodingrc   zHello World!
)r3   r&   abspathsplitseppopr   r\   r]   r^   r_   re   )rS   rV   rF   categoryr`   s        r(   .test_load_files_w_categories_desc_and_encodingrs   ~   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_contentrc   rd   re   )r   r\   r]   r^   r_   getrf   s       r(   test_load_files_wo_load_contentrw      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)rx   N)mkdirwrite_bytesr   setsuffixr=   r]   )tmp_pathrx   dfilesfpathspr`   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   rc   )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   rc   rd   z.. _iris_dataset:)r   r\   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)Nrd   r   )         )dtyperc   )rd      r   3Could not load sample images, PIL is not available.)r   r\   imagesr]   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   re   r   targetsizer\   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   rd   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   rc   data_module)
isinstancer    re   r   r   hasattrr\   r   r^   r_   r   r   r   is_file)loader_func
data_shapetarget_shapen_target	has_descrr]   bunchr   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   7  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   L  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   S  s    j!E 0ENN55<(N+++% J... #N***% I---r*   c                  6    t               } dt        |       v sJ y )Nre   )r   rI   )re   s    r(   test_bunch_dirr  h  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  n  s`    
DC	{#	. 101 OC	{#	. ;:; ;1 1
; ;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_fileN  	Not Found)urlcoder
  hdrsfpside_effect"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_countr=   messager\   )monkeypatchr  invalid_remote_fileurlretrieve_mockrecordrs         r(   1test_fetch_remote_raise_warnings_with_invalid_urlr%  z  s    EC,^S$G#;Tbjjl

 <>NO	k)<	=  ]]9,<= 	E-!D	E  **a/// 	JAqyy>'CC5%IIII	J6{a   	E 	E   s*   )C7C+9C7C7+C4	0C77D c                     t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |d	k(  sJ t        d
      \  } }| dk(  sJ |d	k(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |dk(  sJ t        d      \  } }| dk(  sJ |d	k(  sJ t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)Nzhttps://example.com/file.tar.gzexample.comzfile.tar.gzu2   https://example.com/نمونه نماینده.datau   نمونه-نماینده.dataz)https://example.com/path/to-/.file.tar.gzzexample.com/path_tozhttps://example.com/downloaded_filezhttps://example.comz2https://example.com/path/@to/data.json?param=valuez	data.jsonz4https://example.com/path/@@to._/-_.data.json.#anchorz"https://example.com//some_file.txtzsome_file.txtzhttp://example/../some_file.txtexamplez'https://example.com/!.'.,/some_file.txtz+https://example.com/a/!.'.,/b/some_file.txtzexample.com/a_bzhttps://example.com/!.'.,zInvalid URLr  z
https:/../)r   r  r  
ValueError)folderr   s     r(   (test_derive_folder_and_filename_from_urlr,    si   ;)FH ]"""}$$$;<FH ]"""7777;3FH ****}$$$;<RSFH]"""((((;<QRFH]"""((((;<FH ****{""";>FH ****{""";,FH ]"""&&&;)FH Y&&&;1FH ]"""&&&;5FH &&&&&&&;<WXFH]"""((((	z	7 ;,\:; ; ;s   ,FF
c                 &      fd}t        |      S )Nc                     t              }t        |       j                  j                  d      }||z  j	                         st        | ddd d       t        j                  ||z  |       y )N/r  r  )r   r   r&   striprY   r
   r5   copy)r  
local_pathserver_root	file_pathserver_sides       r(   _urlretrieve_mockz,_mock_urlretrieve.<locals>._urlretrieve_mock  s^    ;'SM&&,,S1	i'//1Ck4>>K)+Z8r*   r  r   )r5  r6  s   ` r(   _mock_urlretriever7    s    9 -..r*   c                    t        |      }|dz  }|j                          |dz  }d}|j                  |d       |dz  }|j                          |dz  }|j                  dd       |d	z  }|j                          t        |      }| j	                  d
|       | j	                  dt        |             t        d      }	|	|dz  dz  k(  sJ |	j                  d      |k(  sJ t        d      }	|	|dz  dz  dz  k(  sJ |	j                  d      |j                  d      k(  sJ t        j                  d      }
t        j                  t              5  t        j                  |
      5  t        dd       d d d        d d d        |dz  dz  }t        |j                               |dz  gk(  sJ y # 1 sw Y   <xY w# 1 sw Y   @xY w)Nr5  
data.jsonl{"a": 1, "b": 2}
rj   rm   	subfolderzother_file.txtzSome important text data.rB   r  z$sklearn.datasets._base.get_data_home)return_valuehttps://example.com/data.jsonlr'  z,https://example.com/subfolder/other_file.txtzERetry downloading from url: https://example.com/subfolder/invalid.txtr  z)https://example.com/subfolder/invalid.txtr   )r  )r   r{   
write_textr7  r  r	   r   	read_textreescaper  r  r
   r  sortediterdir)r   tmpdirr5  	data_fileserver_dataserver_subfolderother_data_filerB   r"  fetched_file_pathexpected_warning_msglocal_subfolders               r(   test_fetch_file_using_data_homerM    s   &\F=(Kl*I&Kw7"[0&)99O:WM$IOO(5<>NO.)0L #( 	M 9L HHHH&&&8KGGG"6 	Y6DGWWWW&&&8O<U<U=    99O 
y	! \\ 45 	;	  -/+=O/))+,CS1S0TTTT	 	 s$   G +F49G 4F=	9G  G	c                 b   |j                  d      }t        |dz        }d}|j                  |d       |j                  d      }t        |      }| j	                  d|       t        d|	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  d
k(  sJ t        d|	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  d
k(  sJ |j                          t        d|	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  dk(  sJ y )Nr5  r9  r:  rj   r;  client_sider  r>  r+  rc   rd   )	r{   r   r?  r7  r  r   r@  r  unlink)r   rE  r5  rF  rG  rO  r"  rJ  s           r(   test_fetch_file_without_sha256rR    sv   ,,}-K[</0I&Kw7,,}-K(5<>NO #( l ::::&&&8KGGG&&!+++ #( l ::::&&&8KGGG&&!+++ "( l ::::&&&8KGGG&&!+++r*   c                    |j                  d      }t        |dz        }d}|j                  |d       t        j                  |j                               j                         }|j                  d      }t        |      }| j                  d|       t        d||	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  d
k(  sJ t        d||	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  d
k(  sJ |j                  dd       d| d}	t        j                  |	      5  t        d||	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  dk(  sJ 	 d d d        t        d||	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  dk(  sJ |j                          t        d||	      }||dz  k(  sJ |j                  d      |k(  sJ |j                  dk(  sJ t        d|      }||dz  k(  sJ |j                  d      |k(  sJ |j                  dk(  sJ d}
d}t        j                   d| d|
 d      }t        j"                  t$        |      5  t        j                  |      5  t        d||
	       d d d        d d d        y # 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr5  r9  r:  rj   r;  rO  r  r>  )r+  sha256rc   zcorrupted contentszQSHA256 checksum of existing local file data.jsonl \(.*\) differs from expected \(z9\): re-downloading from https://example.com/data.jsonl \.r  rd   r   rP  deadbabecafebeefzdiffers from expectedz#The SHA256 checksum of data.jsonl (z) differs from expected (z).)r{   r   r?  hashlibrT  
read_bytes	hexdigestr7  r  r   r@  r  r  r  rQ  rA  rB  r  OSError)r   rE  r5  rF  rG  expected_sha256rO  r"  rJ  expected_msgnon_matching_sha256rK  expected_error_msgs                r(   test_fetch_file_with_sha256r^  ?  s   ,,}-K[</0I&Kw7nnY%9%9%;<FFHO,,}-K(5<>NO #(_ l ::::&&&8KGGG&&!+++ #(_ l ::::&&&8KGGG&&!+++   !5 H	++:*; <A	A 
 
L	) 0&,[
 !K,$>>>> **G*<KKK**a///0 #(_ l ::::&&&8KGGG&&!+++ "(_ l ::::&&&8KGGG&&!+++ #( l ::::&&&8KGGG&&!+++ -2
-o-> ?()	- 
w&8	9 \\ 45 	0"*	 S0 0T	 	 s1   AKK'.K=K'KK$	 K''K0)VrV  r  r3   rA  r5   rL   r   	functoolsr   	importlibr   pathlibr   pickler   r   unittest.mockr	   urllib.errorr
   urllib.parser   numpyr   r  r	  r   r   r   r   r   r   r   r   r   r   r   r   sklearn.datasets._baser   r   r   r   r   "sklearn.datasets.tests.test_commonr   sklearn.preprocessingr   sklearn.utilsr    r"   r7   fixturerB   rF   rS   rV   markparametrizerZ   ra   rg   rs   rw   r   r   r   r   r   r   r   r   r   float64intr   r   r   r  r  r%  r,  r7  rM  rR  r^  r1   r*   r(   <module>rp     s    	 	 	         " !       > '  
 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.*	; .D;N/1Uh%,PSr*   