ó
    Eñi‹,  ã                   ó¢   • S SK r S SKJr  S SKJrJrJrJr  SSKJ	r	  SSK
JrJrJrJr  SSKJr   " S S	\5      r " S
 S\5      r " S S\5      rg)é    N)ÚPath)ÚAnyÚCallableÚOptionalÚUnioné   )Údefault_loader)Úcheck_integrityÚdownload_and_extract_archiveÚdownload_urlÚverify_str_arg)ÚVisionDatasetc                   ó
  ^ • \ rS rSrSrSrSSSS.rSS	S
SSSSS.rSSSS.rSr	SSS\
4S\\\4   S\S\S\S\\   S\\   S\S\\/\4   SS4U 4S  jjjrS\4S! jrS)S" jrS#\S$\\\4   S\4S% jrS\4S& jrS\4S' jrS(rU =r$ )*Ú_LFWé
   zlfw-pyz http://vis-www.cs.umass.edu/lfw/)Úlfwzlfw.tgzÚ a17d05bd522c52d84eca14327a23d494)Úlfw_funneledzlfw-funneled.tgzÚ 1b42dfed7d15c9b2dd63d5e5840c86ad)zlfw-deepfunneledzlfw-deepfunneled.tgzÚ 68331da3eb755a505a502b5aacb3c201)ÚoriginalÚfunneledÚdeepfunneledÚ 9f1ba174e4e1c508ff7cdf10ac338a7dÚ 5132f7440eb68cf58910c8a45a2ac10bÚ 4f27cbf15b2da4a85c1907eb4181ad21Ú 450f0863dd89e85e73936a6d71a3474bÚ e4bf5be0a43b5dcd9dc5ccfcb8fb19c5Ú 54eaac34beb6d042ed3a7d883e247a21Ú a6d0a479bd074669f656265a6e693f6d)z	pairs.txtzpairsDevTest.txtzpairsDevTrain.txtz
people.txtzpeopleDevTest.txtzpeopleDevTrain.txtúlfw-names.txtÚ ÚDevTrainÚDevTest©Ú10foldÚtrainÚtestr!   NFÚrootÚsplitÚ	image_setÚviewÚ	transformÚtarget_transformÚdownloadÚloaderÚreturnc	                 óê  >• [         T
U ]  [        R                  R	                  XR
                  5      XVS9  [        UR                  5       SU R                  R                  5       5      U l
        U R                  U R                     u  o�l        U l        [        UR                  5       SSS/5      U l        [        UR                  5       S/ SQ5      U l        U R                   U R                  U R                      S3U l        / U l        U(       a  [%        S	5      eU R)                  5       (       d  [+        S
5      e[        R                  R	                  U R,                  U	5      U l        X€l        g )N)r-   r.   r+   r,   ÚpeopleÚpairsr*   r%   z.txtz|LFW dataset is no longer available for download.Please download the dataset manually and place it in the specified directoryzHDataset not found or corrupted. You can use download=True to download it)ÚsuperÚ__init__ÚosÚpathÚjoinÚbase_folderr   ÚlowerÚ	file_dictÚkeysr+   ÚfilenameÚmd5r,   r*   Ú
annot_fileÚlabels_fileÚdataÚ
ValueErrorr/   Ú_check_integrityÚRuntimeErrorr)   Ú
images_dirÚ_loader)Úselfr)   r*   r+   r,   r-   r.   r/   r0   rF   Ú	__class__s             €ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/lfw.pyr6   Ú_LFW.__init__    s  ø€ ô 	‰ÑœŸ™Ÿ™ d×,<Ñ,<Ó=ÈÐÑvä'¨	¯©Ó(9¸;ÈÏÉ×H[ÑH[ÓH]Ó^ˆŒØ.2¯n©n¸T¿^¹^Ñ.LÑ+ˆ
”M 4¤8ä" 4§:¡:£<°¸(ÀGÐ9LÓMˆŒ	Ü# E§K¡K£M°7Ò<WÓXˆŒ
Ø"Ÿi™i˜[¨¯©¸¿¹Ñ)DÐ(EÀTÐJˆÔØ!ˆŒ	æÜð_óð ð ×$Ñ$×&Ñ&ÜÐiÓjÐjäŸ'™'Ÿ,™, t§y¡y°*Ó=ˆŒØ�ó    c                 ó&  • [        [        R                  R                  U R                  U R
                  5      U R                  5      n[        [        R                  R                  U R                  U R                  5      U R                  U R                     5      nU(       a  U(       d  gU R                  S:X  aU  [        [        R                  R                  U R                  U R                  5      U R                  U R                     5      $ g)NFr3   T)r
   r7   r8   r9   r)   r>   r?   rA   Ú	checksumsr,   Únames)rH   Úst1Úst2s      rJ   rD   Ú_LFW._check_integrityB   s©   € ÜœbŸg™gŸl™l¨4¯9©9°d·m±mÓDÀdÇhÁhÓOˆÜœbŸg™gŸl™l¨4¯9©9°d×6FÑ6FÓGÈÏÉÐX\×XhÑXhÑIiÓjˆÞž#ØØ�9‰9˜Ó Ü"¤2§7¡7§<¡<°·	±	¸4¿:¹:Ó#FÈÏÉÐW[×WaÑWaÑHbÓcÐcØrL   c                 ó�  • U R                  5       (       a  g U R                   U R                   3n[        XR                  U R                  U R
                  S9  [        U R                   U R                   3U R                  5        U R                  S:X  a/  [        U R                   U R                   3U R                  5        g g )N)r>   r?   r3   )
rD   Údownload_url_prefixr>   r   r)   r?   r   rA   r,   rO   )rH   Úurls     rJ   r/   Ú_LFW.downloadK   s    € Ø× Ñ ×"Ñ"ØØ×)Ñ)Ð*¨4¯=©=¨/Ð:ˆÜ$ S¯)©)¸d¿m¹mÐQU×QYÑQYÒZÜ˜×0Ñ0Ð1°$×2BÑ2BÐ1CÐDÀdÇiÁiÔPØ�9‰9˜Ó Ü˜D×4Ñ4Ð5°d·j±j°\ÐBÀDÇIÁIÕNð !rL   ÚidentityÚnoc           	      óv   • [         R                  R                  U R                  X S[	        U5      S S35      $ )NÚ_Ú04dz.jpg)r7   r8   r9   rF   Úint)rH   rW   rX   s      rJ   Ú	_get_pathÚ_LFW._get_pathT   s/   € Ü�w‰w�|‰|˜DŸO™O¨X¸À1ÄSÈÃWÈSÀMÐQUÐ7VÓWÐWrL   c                 ó:   • SU R                    SU R                   3$ )NzAlignment: z
Split: )r+   r*   ©rH   s    rJ   Ú
extra_reprÚ_LFW.extra_reprW   s   € Ø˜TŸ^™^Ð,¨I°d·j±j°\ÐBÐBrL   c                 ó,   • [        U R                  5      $ )N)ÚlenrB   r`   s    rJ   Ú__len__Ú_LFW.__len__Z   s   € Ü�4—9‘9‹~ÐrL   )	rG   rB   r>   r+   rF   rA   r?   r*   r,   )r1   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r:   rT   r<   rN   r@   rO   r	   r   Ústrr   r   r   Úboolr   r6   rD   r/   r\   r]   ra   re   Ú__static_attributes__Ú__classcell__©rI   s   @rJ   r   r   
   s8  ø† à€KØ<Ðð KØ\Øhñ€Ið 8Ø>Ø?Ø8Ø?Ø@Ø;ñ€Ið ¨¸YÑG€JØ€Eð )-Ø/3ØØ'5ñ à�C˜�IÑð ð ð ð ð	 ð
 ð ð ˜HÑ%ð ð # 8Ñ,ð ð ð ð ˜#˜ ˜Ñ$ð ð 
÷ ð  ðD $ô ôOðX #ð X¨5°°c°©?ð X¸sô XðC˜Cô Cð˜÷ ò rL   r   c                   óä   ^ • \ rS rSrSrSSSSS\4S\S\S	\S
\\   S\\   S\	S\\/\
4   SS4U 4S jjjrS\\\   \\   4   4S jrS\\\4   4S jrS\S\\
\
4   4S jrS\4U 4S jjrSrU =r$ )Ú	LFWPeopleé^   aï  `LFW <http://vis-www.cs.umass.edu/lfw/>`_ Dataset.

.. warning:

    The LFW dataset is no longer available for automatic download. Please
    download it manually and place it in the specified directory.

Args:
    root (str or ``pathlib.Path``): Root directory of dataset where directory
        ``lfw-py`` exists or will be saved to if download is set to True.
    split (string, optional): The image split to use. Can be one of ``train``, ``test``,
        ``10fold`` (default).
    image_set (str, optional): Type of image funneling to use, ``original``, ``funneled`` or
        ``deepfunneled``. Defaults to ``funneled``.
    transform (callable, optional): A function/transform that takes in a PIL image or torch.Tensor, depends on the given loader,
        and returns a transformed version. E.g, ``transforms.RandomCrop``
    target_transform (callable, optional): A function/transform that takes in the
        target and transforms it.
    download (bool, optional): NOT SUPPORTED ANYMORE, leave to False.
    loader (callable, optional): A function to load an image given its path.
        By default, it uses PIL as its image loader, but users could also pass in
        ``torchvision.io.decode_image`` for decoding image data into tensors directly.
r&   r   NFr)   r*   r+   r-   r.   r/   r0   r1   c                 óŒ   >• [         TU ]  XUSXEXgS9  U R                  5       U l        U R	                  5       u  U l        U l        g )Nr3   ©r0   )r5   r6   Ú_get_classesÚclass_to_idxÚ_get_peoplerB   Útargets©	rH   r)   r*   r+   r-   r.   r/   r0   rI   s	           €rJ   r6   ÚLFWPeople.__init__w   sF   ø€ ô 	‰Ñ˜ i°¸9ÐX`ÐÑpà ×-Ñ-Ó/ˆÔØ"&×"2Ñ"2Ó"4ÑˆŒ	�4•<rL   c           	      óÚ  • / / p![        [        R                  R                  U R                  U R
                  5      5       nUR                  5       nU R                  S:X  a  [        US   5      S4OSu  pV[        U5       HÅ  n[        XF   5      nXFS-   Xh-   S-     V	s/ s H!  o™R                  5       R                  S5      PM#     n
n	XhS-   -  n[        U
5       Hg  u  nu  pÍ[        S[        U5      S-   5       HC  nU R                  XÎ5      nUR                  U5        UR                  U R                  U   5        ME     Mi     MÇ     S S S 5        X4$ s  sn	f ! , (       d  f       X4$ = f)Nr&   r   r   )r   r   Ú	)Úopenr7   r8   r9   r)   rA   Ú	readlinesr*   r\   ÚrangeÚstripÚ	enumerater]   Úappendrv   )rH   rB   rx   ÚfÚlinesÚn_foldsÚsÚfoldÚn_linesÚliner3   ÚirW   Únum_imgsÚnumÚimgs                   rJ   rw   ÚLFWPeople._get_people†   s=  € Ø˜BˆgÜ”"—'‘'—,‘,˜tŸy™y¨$×*:Ñ*:Ó;Ô<ÀØ—K‘K“MˆEØ/3¯z©z¸XÓ/Eœ#˜e A™h›-¨Ñ+È6‰JˆGä˜gž�Ü˜e™h›-�Ø?DÈÁUÈQÉ[Ð[\É_Ñ?]Ó^Ò?]°tŸ*™*›,×,Ñ,¨TÖ2Ñ?]�Ð^Ø˜q‘[Ñ �Ü/8¸Ö/@Ñ+�AÑ+˜Ü$ Q¬¨H«¸Ñ(9Ö:˜Ø"Ÿn™n¨XÓ;˜ØŸ™ CÔ(ØŸ™ t×'8Ñ'8¸Ñ'BÖCó  ;ó 0Añ	 '÷	 =ð ˆ}Ðùò _÷ =Ô<ð ˆ}Ðús    ÁAEÂ(EÃBEÅEÅ
E*c                 óˆ  • [        [        R                  R                  U R                  U R
                  5      5       nUR                  5       nU Vs/ s H#  o3R                  5       R                  5       S   PM%     nnS S S 5        [        W5       VVs0 s H  u  pVXe_M	     nnnU$ s  snf ! , (       d  f       N4= fs  snnf )Nr   )
r}   r7   r8   r9   r)   rO   r~   r€   r*   r�   )rH   rƒ   r„   r‰   rO   rŠ   Únamerv   s           rJ   ru   ÚLFWPeople._get_classes˜   s”   € Ü”"—'‘'—,‘,˜tŸy™y¨$¯*©*Ó5Ô6¸!Ø—K‘K“MˆEÙ9>Ó?º°—Z‘Z“\×'Ñ'Ó)¨!Ô,¹ˆEÐ?÷ 7ô 09¸Ô/?Ô@Ò/?¡G A˜šÑ/?ˆÑ@ØÐùò @÷ 7Õ6üó As#   ¾B-Á*B(Á=B-ÂB>Â(B-Â-
B;Úindexc                 óÚ   • U R                  U R                  U   5      nU R                  U   nU R                  b  U R                  U5      nU R                  b  U R	                  U5      nX#4$ )zu
Args:
    index (int): Index

Returns:
    tuple: Tuple (image, target) where target is the identity of the person.
)rG   rB   rx   r-   r.   )rH   r’   r�   Útargets       rJ   Ú__getitem__ÚLFWPeople.__getitem__Ÿ   se   € ð �l‰l˜4Ÿ9™9 UÑ+Ó,ˆØ—‘˜eÑ$ˆà�>‰>Ñ%Ø—.‘. Ó%ˆCà× Ñ Ñ,Ø×*Ñ*¨6Ó2ˆFàˆ{ÐrL   c                 óR   >• [         TU ]  5       S[        U R                  5       3-   $ )Nz
Classes (identities): )r5   ra   rd   rv   )rH   rI   s    €rJ   ra   ÚLFWPeople.extra_repr²   s*   ø€ Ü‰wÑ!Ó#Ð(@ÄÀT×EVÑEVÓAWÐ@XÐ&YÑYÐYrL   )rv   rB   rx   )rg   rh   ri   rj   Ú__doc__r	   rk   r   r   rl   r   r6   ÚtupleÚlistr\   rw   Údictru   r•   ra   rm   rn   ro   s   @rJ   rq   rq   ^   sê   ø† ñð6 Ø#Ø(,Ø/3ØØ'5ñ5àð5ð ð5ð ð	5ð
 ˜HÑ%ð5ð # 8Ñ,ð5ð ð5ð ˜#˜ ˜Ñ$ð5ð 
÷5ð 5ð˜U 4¨¡9¨d°3©iÐ#7Ñ8ô ð$˜d 3¨ 8™nô ð ð ¨¨s°C¨x©ô ð&Z˜C÷ Zõ ZrL   rq   c                   óÚ   ^ • \ rS rSrSrSSSSS\4S\S\S	\S
\\   S\\   S\	S\\/\
4   SS4U 4S jjjrS\S\\\\\4      \\\\4      \\   4   4S jrS\S\\
\
\4   4S jrSrU =r$ )ÚLFWPairsé¶   aÔ  `LFW <http://vis-www.cs.umass.edu/lfw/>`_ Dataset.

.. warning:

    The LFW dataset is no longer available for automatic download. Please
    download it manually and place it in the specified directory.

Args:
    root (str or ``pathlib.Path``): Root directory of dataset where directory
        ``lfw-py`` exists or will be saved to if download is set to True.
    split (string, optional): The image split to use. Can be one of ``train``, ``test``,
        ``10fold``. Defaults to ``10fold``.
    image_set (str, optional): Type of image funneling to use, ``original``, ``funneled`` or
        ``deepfunneled``. Defaults to ``funneled``.
    transform (callable, optional): A function/transform that takes in a PIL image
        and returns a transformed version. E.g, ``transforms.RandomRotation``
    target_transform (callable, optional): A function/transform that takes in the
        target and transforms it.
    download (bool, optional): NOT SUPPORTED ANYMORE, leave to False.
    loader (callable, optional): A function to load an image given its path.
        By default, it uses PIL as its image loader, but users could also pass in
        ``torchvision.io.decode_image`` for decoding image data into tensors directly.

r&   r   NFr)   r*   r+   r-   r.   r/   r0   r1   c                 ó„   >• [         TU ]  XUSXEXgS9  U R                  U R                  5      u  U l        U l        U l        g )Nr4   rt   )r5   r6   Ú
_get_pairsrF   Ú
pair_namesrB   rx   ry   s	           €rJ   r6   ÚLFWPairs.__init__Ð   s=   ø€ ô 	‰Ñ˜ i°¸)ÐW_ÐÑoà37·?±?À4Ç?Á?Ó3SÑ0ˆŒ˜œ D¥LrL   rF   c           	      ó~  • / / / pCn[        [        R                  R                  U R                  U R
                  5      5       nUR                  5       nU R                  S:X  a,  US   R                  S5      u  px[        U5      [        U5      p‡OS[        US   5      p‡Sn	[        U5       GHg  n
XiX˜-     Vs/ s H!  o»R                  5       R                  S5      PM#     nnXiU-   U	SU-  -     Vs/ s H!  o»R                  5       R                  S5      PM#     nnU	SU-  -  n	U Hr  nU R                  US   US   5      U R                  US   US   5      SnnnUR                  US   US   45        UR                  UU45        UR                  U5        Mt     U Hr  nU R                  US   US   5      U R                  US   US   5      SnnnUR                  US   US   45        UR                  UU45        UR                  U5        Mt     GMj     S S S 5        X#U4$ s  snf s  snf ! , (       d  f       N= f)Nr&   r   r|   r   é   é   )r}   r7   r8   r9   r)   rA   r~   r*   r\   r   r€   r]   r‚   )rH   rF   r¢   rB   rx   rƒ   r„   r…   Ún_pairsr†   r‡   r‰   Úmatched_pairsÚunmatched_pairsÚpairÚimg1Úimg2Úsames                     rJ   r¡   ÚLFWPairs._get_pairsÞ   s!  € Ø$&¨¨B˜'ˆ
Ü”"—'‘'—,‘,˜tŸy™y¨$×*:Ñ*:Ó;Ô<ÀØ—K‘K“MˆEØ�z‰z˜XÓ%Ø#(¨¡8§>¡>°$Ó#7Ñ �Ü#& w£<´°W³™à#$¤c¨%°©(£m˜ØˆAä˜gŸ�ØFKÐPQÑP[ÑF\Ó ]ÒF\¸d§¡£×!3Ñ!3°DÖ!9ÑF\�Ð ]ØHMÐRYÉkÐ\]ÐabÐelÑalÑ\mÑHnÓ"oÒHnÀ§:¡:£<×#5Ñ#5°dÖ#;ÑHn�Ð"oØ�Q˜‘[Ñ �Û)�DØ'+§~¡~°d¸1±g¸tÀA¹wÓ'GÈÏÉÐX\Ð]^ÑX_ÐaeÐfgÑahÓIiÐkl ˜$�DØ×%Ñ% t¨A¡w°°Q±Ð&8Ô9Ø—K‘K  t Ô-Ø—N‘N 4Ö(ñ	 *ó
 ,�DØ'+§~¡~°d¸1±g¸tÀA¹wÓ'GÈÏÉÐX\Ð]^ÑX_ÐaeÐfgÑahÓIiÐkl ˜$�DØ×%Ñ% t¨A¡w°°Q±Ð&8Ô9Ø—K‘K  t Ô-Ø—N‘N 4Ö(ô	 ,ñ '÷ =ð0  Ð(Ð(ùò !^ùÚ"o÷ =Õ<ús,   ÁA5H.Â8(H$Ã H.Ã1(H)ÄC?H.È$
H.È.
H<r’   c                 ó$  • U R                   U   u  p#U R                  U5      U R                  U5      p2U R                  U   nU R                  b!  U R                  U5      U R                  U5      p2U R                  b  U R	                  U5      nX#U4$ )z—
Args:
    index (int): Index

Returns:
    tuple: (image1, image2, target) where target is `0` for different indentities and `1` for same identities.
)rB   rG   rx   r-   r.   )rH   r’   r«   r¬   r”   s        rJ   r•   ÚLFWPairs.__getitem__ú   s…   € ð —Y‘Y˜uÑ%‰
ˆØ—\‘\ $Ó'¨¯©°dÓ);ˆdØ—‘˜eÑ$ˆà�>‰>Ñ%ØŸ™¨Ó-¨t¯~©~¸dÓ/C�$à× Ñ Ñ,Ø×*Ñ*¨6Ó2ˆFà˜6Ð!Ð!rL   )rB   r¢   rx   )rg   rh   ri   rj   r™   r	   rk   r   r   rl   r   r6   rš   r›   r\   r¡   r•   rm   rn   ro   s   @rJ   rž   rž   ¶   sù   ø† ñð8 Ø#Ø(,Ø/3ØØ'5ñTàðTð ðTð ð	Tð
 ˜HÑ%ðTð # 8Ñ,ðTð ðTð ˜#˜ ˜Ñ$ðTð 
÷Tð Tð) Sð )¨U°4¸¸cÀ3¸h¹Ñ3HÈ$ÈuÐUXÐZ]ÐU]ÉÑJ_ÐaeÐfiÑajÐ3jÑ-kô )ð8" ð "¨¨s°C¸¨}Ñ)=÷ "ò "rL   rž   )r7   Úpathlibr   Útypingr   r   r   r   Úfolderr	   Úutilsr
   r   r   r   Úvisionr   r   rq   rž   © rL   rJ   Ú<module>r·      sK   ðÛ 	Ý ß 1Ó 1å "ß ^Ó ^Ý !ôQˆ=ô QôhUZ�ô UZôpV"ˆtõ V"rL   