
     hA                          d 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 ddlmZ dadadag dZd	 Z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)assert_array_equal)check_return_X_y)Abdelatif_SmithAbhati_KeplerCamara_AlvaroChen_DupontJohn_Lee
Lin_Bauman
Onur_Lopezc            	      	   t          j        d          } t          j        d          at
          j                            t          d          at          j        d          a	t
          j        
                    t                    st          j        t                     t          j        d          }t          j                            d          }i }t           D ]}t
          j                            t          d|          }t
          j        
                    |          st          j        |           |                    dd	          }|||<   t%          |          D ]}t
          j                            ||d
|z  z             }|                    ddd          }	|                     |	                    t          j                            }
|
                    |           t/          t
          j                            t          dd          d          5 }|                    d           ddd           n# 1 swxY w Y   t/          t
          j                            t          d          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   t/          t
          j                            t          d          d          5 }|                    d           ddd           n# 1 swxY w Y   t/          t
          j                            t          d          d          5 }|                    d           ddd           dS # 1 swxY w Y   dS )z<Test fixture run once and common to all tests of this modulez	PIL.Imagescikit_learn_lfw_test_)prefixlfw_homescikit_learn_empty_test_*   lfw_funneled      z	_%04d.jpgr      )   r      )sizez	.test.swpwbs.   Text file to be ignored by the dataset loader.NzpairsDevTrain.txts   10
c                 $    g | ]\  }}|d k    |S )    ).0namecounts      [/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/datasets/tests/test_lfw.py
<listcomp>z setup_module.<locals>.<listcomp>O   s!    NNN+$5A:::::    r   z	%s	%d	%d
z%s	%d	%s	%d
zpairsDevTest.txts&   Fake place holder that won't be testedz	pairs.txt)pytestimportorskiptempfilemkdtempSCIKIT_LEARN_DATAospathjoinLFW_HOMESCIKIT_LEARN_EMPTY_DATAexistsmakedirsrandomRandomnpRandomState
FAKE_NAMESrandintrange	fromarrayastypeuint8saveopenwriteitemschoicesampleencodearange)Image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#   setup_modulerV   (   s   ,,E !(0HIIIw||-z::H&.6PQQQ7>>(## 
H=$$LY""2&&F F    gll8^TBBw~~k** 	%K$$$..A&&tw 	  	 A[$q2HIIInnQ-n@@G//'..":":;;CHHY		  
bgll8^[AA4	H	H CA	ABBBC C C C C C C C C C C C C C C 
bgll8%8994	@	@ A	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&((	   			              & 
bgll8%788$	?	? ;1	9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 
bgll8[114	8	8 ;A	9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sI   !II
IE,O::O>O>8QQ!QR;;R?R?c                      t           j                            t                    rt	          j        t                     t           j                            t                    rt	          j        t                     dS dS )z?Test fixture (clean up) run once after all tests of this moduleN)r+   r,   isdirr*   shutilrmtreer/   r   r%   r#   teardown_moduler[   g   sb    	w}}&'' )'(((	w}},-- /-...../ /r%   c                      t          j        t                    5  t          t          d           d d d            d S # 1 swxY w Y   d S NF	data_homedownload_if_missing)r&   raisesIOErrorr   r/   r   r%   r#   test_load_empty_lfw_peoplerc   o   s    	w		 W W#:PUVVVVW W W W W W W W W W W W W W W W W W   >AAc                  $   t          t          dd          } | j        j        dk    sJ | j        j        dk    sJ t          | j        g d           g d}t          | j        |           t          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           t          d d dd	          }t          | |           d S )Nr   Fr_   min_faces_per_personr`   )
   >   /   )rh   ib  )
r   r   r   r   r   r   r   r   r   r   )Abdelatif SmithAbhati Kepler
Onur LopezTr_   resizeslice_colorr`   )   r   r   r   &.. _labeled_faces_in_the_wild_dataset:)r   r   r      r   rt   r   rt   r   r   rt   r   r      r   r   r   )rk   rl   zCamara AlvarozChen DupontzJohn Leez
Lin Baumanrm   )r   r*   imagesshapedatar   targettarget_namesDESCR
startswithr   r   )
lfw_peopleexpected_classes
fetch_funcs      r#   test_load_fake_lfw_peopler   t   su   !#!QV  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          t          dd           d d d            d S # 1 swxY w Y   d S )Nd   Frf   )r&   ra   
ValueErrorr   r*   r   r%   r#   )test_load_fake_lfw_people_too_restrictiver      s    	z	"	" 
 
'!$ %	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ?AAc                      t          j        t                    5  t          t          d           d d d            d S # 1 swxY w Y   d S r]   )r&   ra   rb   r   r/   r   r%   r#   test_load_empty_lfw_pairsr      s    	w		 V V"9uUUUUV V V V V V V V V V V V V V V V V Vrd   c                     t          t          d          } | j        j        dk    sJ t	          | j        g d           ddg}t	          | j        |           t          t          d d dd          } | j        j        d	k    sJ t	          | j        g d           t	          | j        |           | j                            d
          sJ d S )NFr^   )rh   r   ri   rj   )
r   r   r   r   r   r   r   r   r   r   zDifferent personszSame personTrn   )rh   r   r   r   r   rs   )	r   r*   pairsrw   r   ry   rz   r{   r|   )lfw_pairs_trainr~   s     r#   test_load_fake_lfw_pairsr      s   %#  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          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)r_   rg   r`   ro   rp   r   r   )slicer   r*   rv   rw   stopstart)rp   lfws     r#   'test_fetch_lfw_people_internal_croppingr      s     BnneBnn-F
#!  C :a=q	(q	(#      r%   )__doc__r2   r+   rY   r(   numpyr4   r&   	functoolsr   sklearn.datasetsr   r   sklearn.utils._testingr   "sklearn.datasets.tests.test_commonr   r*   r/   r.   r6   rV   r[   rc   r   r   r   r   r   r   r%   r#   <module>r      sV     				              , , , , , , - - - - - - 5 5 5 5 5 5 ? ? ? ? ? ?     
<; <; <;~/ / /W W W
7- 7- 7-t
 
 
V V V
V V VD    r%   