§
    ¥˜ºh%   ã                   ó²   — d 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Zddl	Z	ddl
mZ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)Úcheck_return_X_y)Úassert_array_equal)Ú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      úg/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/datasets/tests/test_lfw.pyú
<listcomp>z setup_module.<locals>.<listcomp>N   s!   € ÐNÐNÐN¡+ $¨À5ÈAÂ:À:˜À:À:À:ó    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Ýð  ñ  ˆÝ”g—l’l¥8¨^¸TÑBÔBˆÝŒw�~Š~˜kÑ*Ô*ð 	%ÝŒK˜Ñ$Ô$Ð$à—.’.  AÑ&Ô&ˆØˆˆt‰Ý�w‘”ð 	 ð 	 ˆAÝœŸš [°$¸Àq¹Ñ2HÑIÔIˆIØ—n’n Q¨°-�nÑ@Ô@ˆGØ—/’/ '§.¢.µ´Ñ":Ô":Ñ;Ô;ˆCØ�HŠH�YÑÔÐÐñ		 õ 
�bŒg�lŠl�8 ^°[ÑAÔAÀ4Ñ	HÔ	Hð CÈAØ	�ŠÐAÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cõ 
�bŒg�lŠl�8Ð%8Ñ9Ô9¸4Ñ	@Ô	@ð ÀAØ	�Š�ÑÔÐØNÐN°·²±´ÐNÑNÔNˆÝ�q‘”ð 	Gð 	GˆAØ×&Ò& }Ñ5Ô5ˆDØ(×/Ò/µ°f¸T´lÑ0CÔ0CÀQÑGÔG‰MˆE�6Ø�GŠG�^ t¨U°FÐ&;Ñ;×CÒCÑEÔEÑFÔFÐFÐFå�q‘”ð 		ð 		ˆAØ&2×&9Ò&9½*ÀaÑ&HÔ&HÑ#ˆJ˜Ø Ÿ-š-­¬	°&¸Ô2DÑ(EÔ(EÑFÔFˆKØ!Ÿ=š=­¬°6¸+Ô3FÑ)GÔ)GÑHÔHˆLØ�GŠGà&Ø! ;°¸\ÐJñKç’&‘(”(ñ	ô ð ð ð			ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ& 
�bŒg�lŠl�8Ð%7Ñ8Ô8¸$Ñ	?Ô	?ð ;À1Ø	�ŠÐ9Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;õ 
�bŒg�lŠl�8 [Ñ1Ô1°4Ñ	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[   f   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ÚOSErrorr   r/   r   r%   r#   Útest_load_empty_lfw_peoplerc   n   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€   s   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 )Néd   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ÝÕ"9ÈuÐ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ð ,¨]Ð;ÐÝ�Ô3Ð5EÑFÔFÐFõ &Ý#ØØØØ!ðñ ô €Oð Ô Ô&Ð*>Ò>Ð>Ð>Ð>õ �Ô-Ð/MÐ/MÐ/MÑNÔNÐNÝ�Ô3Ð5EÑ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 )zˆCheck 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˜‰nŒn�e B¨™nœnÐ-€FÝ
Ý#ØØ!ØØðñ ô €Cð Œ:�aŒ=ÔØˆqŒ	Œ˜ œœÑ(ØˆqŒ	Œ˜ œœÑ(ð#ò ð ð ð ð ð r%   )Ú__doc__r+   r2   rY   r(   Ú	functoolsr   Únumpyr4   r&   Úsklearn.datasetsr   r   Ú"sklearn.datasets.tests.test_commonr   Úsklearn.utils._testingr   r*   r/   r.   r6   rV   r[   rc   r€   r„   r†   rŠ   r”   r   r%   r#   ú<module>r›      sH  ððð ð 
€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5àÐ ØÐ Ø€ðð ð €
ð<;ð <;ð <;ð~/ð /ð /ðWð Wð Wð
7-ð 7-ð 7-ðt
ð 
ð 
ðVð Vð Vð
Vð Vð VðDð ð ð ð r%   