Ë
    ÷Q(hàY  ã                   ó–  — 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dR¬S«      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     ú^/var/www/skyplay_api_hub/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   € Ø�y‰yÐ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#   € Ü	‡w�w‡}�}�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ÓH€HØ
‚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ÓI€HØ
‚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Ô>ÐÜ×-Ñ-Ð2DÈUÔS€KØ×ÑÐ'Ô(Ø×ÑÔÜ
Ð Ó
!Ò!ÜÐ"Õ#ù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Ó-ˆ	Ü¨	Ô2€IØ˜	Ò!Ð!Ð!Ü�7‰7�>‰>˜)Ô$Ð$Ð$ð Ð!Ù" 9Ó-ˆ	Ü˜iÕ(Ü�w‰w�~‰~˜iÔ(Ð(Ð(ô ¨	Ô2€IÜ�7‰7�>‰>˜)Ô$Ð$Ñ$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Ò%Ð%Ð%Ø�9‰9ÐÐÑ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Ò%Ð%Ð%Ø�9‰9ÐÐÐØ�8‰8Ð)Ð*Ò*Ð*Ñ*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ž   € ô �w‰w�‰Ð2Ó3×9Ñ9¼"¿&¹&ÓA×EÑEÓG€HÜ
Ø V¸¸
ÈWô€Cô ˆs�}‰}Ó Ò"Ð"Ð"Üˆs×ÑÓ  AÒ%Ð%Ð%Ø�9‰9˜ÒÐÐØ�8‰8Ð(Ð)Ò)Ð)Ñ)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Ô
9€CÜˆs�}‰}Ó Ò"Ð"Ð"Üˆs×ÑÓ  AÒ%Ð%Ð%Ø�9‰9ÐÐÐØ�7‰7�6‹?Ð"Ð"Ñ"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Ø‡G�G„IØA€EØ!Ö"�qˆQ�‹UÐ"€EÐ"Øò  ˆØ	�‰�hÕð ä
�XÐ2DÔ
E€CÜ ÖH˜1¨¯©Ð5GÒ)G”�A•ÒHÓIÌSØ�‰ó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.csvé9  é   Ú	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ÀHÓ6MÑ3€K�Ð 3Ø×Ñ˜QÑÐ#5Ò5Ð5Ð5Ø×Ñ˜QÑÐ#6Ò6Ð6Ð6Ø×Ñ˜qÑ!Ð%7Ò7Ð7Ð7Ü‡J�J×!Ñ!Ð"5Ð7LÕ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Ò&Ð&Ð&ä‡J�J×!Ñ! .°Ñ"3Ð5FÀqÑ5IÔJÜ‡J�J×!Ñ! .°Ñ"3Ð5FÀqÑ5IÔJÜ‡J�J×!Ñ! .°Ñ"3Ð5FÀqÑ5IÔ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°ÑC¸FÑC€KØ×Ñ¤ 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ÀÔP€MÜ6Ø%Ø'ôÑ€K�ô
 ‡J�J×!Ñ! +¨}Ô=Ø×ÑÐ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Ò&Ð&Ð&Ø—‘ˆô �v‰v�f˜Q‘i  1¢a Ñ(¬B¯H©H²_ÌBÏHÉHÔ,UÑUÔVÐVÐVä�v‰v�f˜Q‘i  1¢a Ñ(¬B¯H©H²[ÌÏÉÔ,QÑQÔRÐRÐRØ�yŠyÐ‰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®   g»‘T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Ø×ÒÐÐä$“Ðä‡J�J×ÑÜˆl×ÑÓ  HÑ-Ð/?×/DÑ/DÈ5ð õ 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  € ñ( ‹M€Eä�eœUÔ#Ð#Ð#Ø�:‰:×Ñ˜zÒ)Ð)Ð)Ø�<‰<×Ñ Ò-Ð-Ð-Üˆu�oÔ&Ü�5×&Ñ&Ó'¨:°a©=Ò8Ð8Ð8ØÐÜ�5×%Ñ%Ó&¨(Ò2Ð2Ð2ÙØ�{Š{Ðˆ{ÙØ Ñ%Ð%Ð%Üð #öð ð �U�
ò QÜ—_‘_ U¨=Ñ%9Ó:¸UÀ1¹XÑ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:   € Ü�CŒL€EÜœ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ð 0€E‡N�N�5ÑÜœ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`   € à
D€CÜ	�‰”{¨#Ô	.ñ 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ÐÜÜØ˜# ;°T¼b¿j¹j»lô
ôÐð
 ×ÑÐ<Ð>NÔOä	�‰”kÐ)<Ô	=ð  ÀÜ�]‰]œ9Ð,<Ô=ñ 	EÜÐ-¸À!ÕD÷	Eð  ×*Ñ*¨aÒ/Ð/Ð/àò 	JˆAÜ�q—y‘y“>Ð'CÀCÀ5Ð%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  € Ü;Ø)óÑ€FˆHð �]Ò"Ð"Ð"Ø�}Ò$Ð$Ð$ä;Ø<óÑ€FˆHð �]Ò"Ð"Ð"ØÐ7Ò7Ð7Ð7ä;Ø3óÑ€FˆHð Ð*Ò*Ð*Ð*Ø�}Ò$Ð$Ð$ä;Ð<RÓSÑ€FˆHØ�]Ò"Ð"Ð"ØÐ(Ò(Ð(Ð(ä;Ð<QÓRÑ€FˆHØ�]Ò"Ð"Ð"ØÐ(Ò(Ð(Ð(ä;Ø<óÑ€FˆHð Ð*Ò*Ð*Ð*Ø�{Ò"Ð"Ð"ä;Ø>óÑ€FˆHð Ð*Ò*Ð*Ð*Ø�{Ò"Ð"Ð"ä;Ø,óÑ€FˆHð �]Ò"Ð"Ð"Ø�Ò&Ð&Ð&ä;Ø)óÑ€FˆHð �YÒÐÐØ�Ò&Ð&Ð&ä;Ø1óÑ€FˆHð �]Ò"Ð"Ð"Ø�Ò&Ð&Ð&ä;Ø5óÑ€FˆHð Ð&Ò&Ð&Ð&Ø�Ò&Ð&Ð&ä;Ð<WÓXÑ€FˆHØ�]Ò"Ð"Ð"ØÐ(Ò(Ð(Ð(ä	�‰”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^   ø€ Ü˜;Ó'ˆÜ˜S“M×&Ñ&×,Ñ,¨SÓ1ˆ	Ø˜iÑ'×/Ñ/Ô1Ü˜C  k°4¸Ó>Ð>Ü�‰�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Ñ9€OØ×ÑÐ:ÀWÐÔMà˜Ñ$€IØ‡O�OÔä(¨Ó5ÐØ×ÑÐ<Ð>NÔOà×ÑØ.´À)Ô0Lôô #Ø(óÐð  	¨MÑ 9¸LÑ HÒHÐHÐHØ×&Ñ&°Ð&Ó8¸KÒGÐGÐGä"Ø6óÐð 	˜Y¨Ñ6¸ÑDÐGWÑWÒWðØWà×&Ñ&°Ð&Ó8¸O×<UÑ<UØó=ò ð ð ô Ÿ9™9ØOóÐô 
�‰”yÓ	!ñ Ü�\‰\Ð 4Ô5ñ 	ÜØ;Øõ÷	÷ð   -Ñ/°+Ñ=€OÜ�/×)Ñ)Ó+Ó,°ÐCSÑ1SÐ0TÒ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Ü�[ <Ñ/Ó0€IØ&€KØ×Ñ˜¨wÐÔ7à—,‘,˜}Ó-€Kä(¨Ó5ÐØ×ÑÐ<Ð>NÔOô #Ø(ØôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ô #Ø(ØôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ð ×ÑÔÜ"Ø(ØôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒ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Ü�[ <Ñ/Ó0€IØ&€KØ×Ñ˜¨wÐÔ7Ü—n‘n Y×%9Ñ%9Ó%;Ó<×FÑFÓH€Oà—,‘,˜}Ó-€Kä(¨Ó5ÐØ×ÑÐ<Ð>NÔOô #Ø(°À_ôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ô #Ø(°À_ôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ð × Ñ Ð!5ÀÐ ÔHð	+Ø+:Ð*;ð <Að	Að ô
 
�‰˜LÔ	)ñ 0Ü&Ø,°[Èô
Ðð ! K°,Ñ$>Ò>Ð>Ð>Ø ×*Ñ*°GÐ*Ó<ÀÒKÐKÐKØ×*Ñ*¨aÒ/Ð/Ñ/÷0ô #Ø(°À_ôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ð ×ÑÔÜ"Ø(°À_ôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ô #Ø(ØôÐð  ¨lÑ :Ò:Ð:Ð:Ø×&Ñ&°Ð&Ó8¸KÒGÐGÐGØ×&Ñ&¨!Ò+Ð+Ð+ð -ÐØ2ÐÜŸ™Ø
-¨oÐ->ð ?Ø(Ð)¨ð	-óÐô 
�‰”wÐ&8Ô	9ñ Ü�\‰\Ð 4Ô5ñ 	ÜØ0Ø"Ø*õ÷	÷ð ÷S0ñ 0ú÷T	ð 	ú÷ð ú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ð%ò&ò+ò*ò#ð ‡�×ÑÐ-°°¸6À7Ð:KÐ/LÓMñó Nðð ‡�×ÑØNà	˜#˜rÒ#DÐEØ	�S˜!ÒBÐCØ	˜c 2¨°XÐ'>Ð?ðóñNóðNò>ð$ ‡�×ÑØ&à	# R¨#¨r¨Ð3Ø	! 2¨ uÐ-Ø	˜;¨Ð,¨t°R¨jÐ9ðóñ6óð6ò
5òMò Mòð  ‡�×ÑØKà	˜Y¨°°4¸*¸ÐFØ	�I˜v q¨$°Ð3Ø	�H˜f a¨°
¨|Ð<àØØØØØÐ/Ð0ð	
ð 
˜	 6¨4°°rÐ:Ø	�j '¨2¨t°RÐ8Ù	� aÔ	(¨*°g¸rÀ4ÈÐLðóñ&
ó'ð&
ð. ‡�×ÑØ+à	˜RŸZ™Z¨Ð-Ø	˜Ÿ
™
 B§J¡JÐ/Ø	�b—j‘j #Ð&Ø	�B—J‘J Ð$Ø	˜Ÿ
™
 B§J¡JÐ/Ø	�B—J‘J Ð$ðó
ñó
ðò3ò.ò*ò	;ò ò.D;òN/ò1Uòh%,óPSr*   