
    0Pht                         d Z ddlZddlmZ ddlZddlZddlmZm	Z	 ddl
mZ ddlmZ g dZ ej        d	          d
             Z ej        d	          d             Zd Zd Zd Zd Zd Zd ZdS )av  This test for the LFW require medium-size data downloading and processing

If the data has not been already downloaded by running the examples,
the tests won't run (skipped).

If the test are run, the first execution will be long (typically a bit
more than a couple of minutes) but as the dataset loader is leveraging
joblib, successive runs will be fast (less than 200ms).
    N)partial)fetch_lfw_pairsfetch_lfw_people)check_return_X_y)assert_array_equal)Abdelatif_SmithAbhati_KeplerCamara_AlvaroChen_DupontJohn_Lee
Lin_Bauman
Onur_Lopezmodule)scopec              #   <   K   |                      d          }|V  d S )Nscikit_learn_empty_test)mktemp)tmp_path_factorydata_dirs     _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/datasets/tests/test_lfw.pymock_empty_data_homer       s'      &&'@AAH
NNNNN    c           	   #   J  K   t          j        d          }|                     d          }|dz  }|                    dd           t	          j        d          }t          j                            d          }i }t          D ]}|dz  |z  }|                    dd           |	                    dd	          }	|	||<   t          |	          D ]l}
||d
|
z  z   z  }|	                    ddd          }|                    |                    t          j                            }|                    |           m|dz  dz                      d           t!          |dz  d          5 }|                    d           d |                                D             }t          d	          D ]p}
|                    |          }|                    t          ||                   d          \  }}|                    d|||fz                                             qt          d	          D ]}
|                    t          d          \  }}|                    t          j        ||                             }|                    t          j        ||                             }|                    d||||fz                                             	 ddd           n# 1 swxY w Y   |dz                      d           |dz                      d           |V  dS )z<Test fixture run once and common to all tests of this modulez	PIL.Imagescikit_learn_lfw_testlfw_homeT)parentsexist_ok*   lfw_funneled      z	_%04d.jpgr      )   r#      )sizez	.test.swps.   Text file to be ignored by the dataset loader.zpairsDevTrain.txtwbs   10
c                 $    g | ]\  }}|d k    |S )    ).0namecounts      r   
<listcomp>z"mock_data_home.<locals>.<listcomp>I   s!    NNN+$5A:::::r   r(   z	%s	%d	%d
z%s	%d	%s	%d
NzpairsDevTest.txts&   Fake place holder that won't be testedz	pairs.txt)pytestimportorskipr   mkdirrandomRandomnpRandomState
FAKE_NAMESrandintrange	fromarrayastypeuint8savewrite_bytesopenwriteitemschoicesampleencodearange)r   Imager   r   random_statenp_rngcountsr+   folder_namen_facesi	file_pathunifaceimgfmore_than_twofirstsecond
first_namesecond_namefirst_indexsecond_indexs                         r   mock_data_homerV   '   su      ,,E&&'>??H*$HNN4$N///=$$LY""2&&F F 
  
 /$6$666..A&&tw 	  	 A#tkAo'=>InnQ-n@@G//'..":":;;CHHY		  ,999  
 
h,,d	3	3 q	NNNNNq 	G 	GA&&}55D(//fTl0C0CQGGME6GG^tUF&;;CCEEFFFFq 		 		A&2&9&9*a&H&H#J --	&2D(E(EFFK!==6+3F)G)GHHLGG&!;\JK&((	   			              & ""//1   (()RSSS
NNNNNs   +E,K$$K(+K(c                     t          j        t                    5  t          | d           d d d            d S # 1 swxY w Y   d S NF	data_homedownload_if_missing)r.   raisesOSErrorr   r   s    r   test_load_empty_lfw_peopler_   b   s    	w		 T T#7USSSST T T T T T T T T T T T T T T T T T   9= =c                    t          | dd          }|j        j        dk    sJ |j        j        dk    sJ t	          |j        g d           g d}t	          |j        |           t          | d d dd	          }|j        j        d
k    sJ |j                            d          sJ t	          |j        g d           t	          |j        g d           t          t           | d d dd	          }t          ||           d S )Nr$   FrZ   min_faces_per_personr[   )
   >   /   )rd   ib  )
r(   r   r    r   r(   r   r(   r    r    r(   )Abdelatif SmithAbhati Kepler
Onur LopezTrZ   resizeslice_colorr[   )   r#   r#   r$   &.. _labeled_faces_in_the_wild_dataset:)r   r   r       r!   rp   r$   rp   r   r$   rp   r    r(      r!   r    r(   )rg   rh   zCamara AlvarozChen DupontzJohn Leez
Lin Baumanri   )r   imagesshapedatar   targettarget_namesDESCR
startswithr   r   )rV   
lfw_peopleexpected_classes
fetch_funcs       r   test_load_fake_lfw_peopler|   g   st   ! qe  J "l2222? J.... z(*H*H*HIII JIIz.0@AAA " !  J "&77777&&'OPPPPP NNN   	
 	
 	
    !  J Z,,,,,r   c                     t          j        t                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )Nd   Frb   )r.   r\   
ValueErrorr   )rV   s    r   )test_load_fake_lfw_people_too_restrictiver      s    	z	"	" 
 
$!$ %	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   :>>c                     t          j        t                    5  t          | d           d d d            d S # 1 swxY w Y   d S rX   )r.   r\   r]   r   r^   s    r   test_load_empty_lfw_pairsr      s    	w		 S S"6ERRRRS S S S S S S S S S S S S S S S S Sr`   c                    t          | d          }|j        j        dk    sJ t          |j        g d           ddg}t          |j        |           t          | d d dd          }|j        j        d	k    sJ t          |j        g d           t          |j        |           |j                            d
          sJ d S )NFrY   )rd   r(   re   rf   )
r    r    r    r    r    r   r   r   r   r   zDifferent personszSame personTrj   )rd   r(   r#   r#   r$   ro   )r   pairsrs   r   ru   rv   rw   rx   )rV   lfw_pairs_trainrz   s      r   test_load_fake_lfw_pairsr      s   % e  O  &/9999 -/M/M/MNNN ,];35EFFF & !  O  &*>>>>> -/M/M/MNNN35EFFF ++,TUUUUUUUr   c                    t          dd          t          dd          f}t          | ddd|          }|j        d	         j        |d	         j        |d	         j        z
  |d
         j        |d
         j        z
  fk    sJ dS )zCheck that we properly crop the images.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/24942
    F      N      r$   FN)rZ   rc   r[   rk   rl   r   r    )slicer   rr   rs   stopstart)rV   rl   lfws      r   'test_fetch_lfw_people_internal_croppingr      s     BnneBnn-F
 !  C :a=q	(q	(#      r   )__doc__r1   	functoolsr   numpyr3   r.   sklearn.datasetsr   r   "sklearn.datasets.tests.test_commonr   sklearn.utils._testingr   r5   fixturer   rV   r_   r|   r   r   r   r   r)   r   r   <module>r      sT                > > > > > > > > ? ? ? ? ? ? 5 5 5 5 5 5  
 h    h7 7  7tT T T
7- 7- 7-t
 
 
S S S
V V VD    r   