ó
    Eñi  ã                   óª   • S SK r S SKrS SKJr  S SK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KJr   " S	 S
\5      r " S S\5      r " S S\5      rg)é    N)Údefaultdict)Ú
HTMLParser)ÚPath)ÚAnyÚCallableÚOptionalÚUnioné   )Údefault_loader)ÚVisionDatasetc                   ó’   ^ • \ rS rSrSrS\\\4   SS4U 4S jjrS\S\	\
\\\   4      SS4S	 jrS\SS4S
 jrS\SS4S jrSrU =r$ )ÚFlickr8kParseré   zBParser for extracting captions from the Flickr8k dataset web page.ÚrootÚreturnNc                 óf   >• [         TU ]  5         Xl        0 U l        SU l        S U l        S U l        g )NF)ÚsuperÚ__init__r   ÚannotationsÚin_tableÚcurrent_tagÚcurrent_img)Úselfr   Ú	__class__s     €ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/flickr.pyr   ÚFlickr8kParser.__init__   s6   ø€ Ü‰ÑÔàŒ	ð 24ˆÔð ˆŒØ*.ˆÔØ*.ˆÕó    ÚtagÚattrsc                 ó,   • Xl         US:X  a  SU l        g g )NÚtableT©r   r   )r   r   r   s      r   Úhandle_starttagÚFlickr8kParser.handle_starttag   s   € ØÔà�'‹>Ø ˆD�Mð r   c                 ó.   • S U l         US:X  a  SU l        g g )Nr!   Fr"   )r   r   s     r   Úhandle_endtagÚFlickr8kParser.handle_endtag"   s   € ØˆÔà�'‹>Ø!ˆD�Mð r   Údatac                 óú  • U R                   (       aê  US:X  a  S U l        g U R                  S:X  ap  UR                  S5      S   n[        R
                  R                  U R                  US-   5      n[        R                  " U5      S   nX l        / U R                  U'   g U R                  S:X  aK  U R                  (       a9  U R                  nU R                  U   R                  UR                  5       5        g g g g )NzImage Not FoundÚaÚ/éþÿÿÿz_*.jpgr   Úli)r   r   r   ÚsplitÚosÚpathÚjoinr   Úglobr   ÚappendÚstrip)r   r(   Úimg_ids      r   Úhandle_dataÚFlickr8kParser.handle_data(   sÍ   € Ø�=�=ØÐ(Ó(Ø#'�Õ Ø×!Ñ! SÓ(ØŸ™ C›¨Ñ,�ÜŸ™Ÿ™ d§i¡i°¸(Ñ1BÓC�ÜŸš 6Ó*¨1Ñ-�Ø#)Ô Ø+-�× Ñ  Ò(Ø×!Ñ! TÓ)¨d×.>×.>Ø×)Ñ)�Ø× Ñ  Ñ(×/Ñ/°·
±
³Õ=ð /?Ð)ð r   )r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r	   Ústrr   r   ÚlistÚtupler   r#   r&   r6   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r      s{   ø† ÙLð/˜U 3¨ 9Ñ-ð /°$÷ /ð! 3ð !¨t°E¸#¸xÈ¹}Ð:LÑ4MÑ/Nð !ÐSWô !ð" ð "¨ô "ð> ð >¨÷ >ò >r   r   c                   óž   ^ • \ rS rSrSrSS\4S\\\4   S\S\	\
   S\	\
   S\
\/\4   S	S4U 4S
 jjjrS\S	\\\4   4S jrS	\4S jrSrU =r$ )ÚFlickr8ké7   a  `Flickr8k Entities <http://hockenmaier.cs.illinois.edu/8k-pictures.html>`_ Dataset.

Args:
    root (str or ``pathlib.Path``): Root directory where images are downloaded to.
    ann_file (string): Path to annotation file.
    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.
    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.
Nr   Úann_fileÚ	transformÚtarget_transformÚloaderr   c                 óÀ  >• [         TU ]  XUS9  [        R                  R	                  U5      U l        [        U R                  5      n[        U R
                  5       nUR                  UR                  5       5        S S S 5        UR                  U l        [        [        U R                  R                  5       5      5      U l        XPl        g ! , (       d  f       NW= f)N©rG   rH   )r   r   r/   r0   Ú
expanduserrF   r   r   ÚopenÚfeedÚreadr   r>   ÚsortedÚkeysÚidsrI   )	r   r   rF   rG   rH   rI   ÚparserÚfhr   s	           €r   r   ÚFlickr8k.__init__F   sŸ   ø€ ô 	‰Ñ˜ÐEUÐÑVÜŸ™×*Ñ*¨8Ó4ˆŒô   §	¡	Ó*ˆÜ�$—-‘-Ô  BØ�K‰K˜Ÿ™›	Ô"÷ !à!×-Ñ-ˆÔäœ˜t×/Ñ/×4Ñ4Ó6Ó7Ó8ˆŒØ�÷ !Õ ús   Á CÃ
CÚindexc                 óÞ   • U R                   U   nU R                  U5      nU R                  b  U R                  U5      nU R                  U   nU R                  b  U R	                  U5      nX44$ ©zv
Args:
    index (int): Index

Returns:
    tuple: Tuple (image, target). target is a list of captions for the image.
)rR   rI   rG   r   rH   )r   rV   r5   ÚimgÚtargets        r   Ú__getitem__ÚFlickr8k.__getitem__Z   so   € ð —‘˜%‘ˆð �k‰k˜&Ó!ˆØ�>‰>Ñ%Ø—.‘. Ó%ˆCð ×!Ñ! &Ñ)ˆØ× Ñ Ñ,Ø×*Ñ*¨6Ó2ˆFàˆ{Ðr   c                 ó,   • [        U R                  5      $ ©N©ÚlenrR   ©r   s    r   Ú__len__ÚFlickr8k.__len__p   ó   € Ü�4—8‘8‹}Ðr   ©rF   r   rR   rI   )r8   r9   r:   r;   r<   r   r	   r=   r   r   r   r   r   Úintr?   r[   rb   r@   rA   rB   s   @r   rD   rD   7   s¡   ø† ñð$ )-Ø/3Ø'5ñà�C˜�IÑðð ðð ˜HÑ%ð	ð
 # 8Ñ,ðð ˜#˜ ˜Ñ$ðð 
÷ð ð( ð ¨¨s°C¨x©ô ð,˜÷ ò r   rD   c                   ó”   ^ • \ rS rSrSrSS\4S\S\S\\   S\\   S\\/\	4   S	S4U 4S
 jjjr
S\S	\\	\	4   4S jrS	\4S jrSrU =r$ )Ú	Flickr30két   a  `Flickr30k Entities <https://bryanplummer.com/Flickr30kEntities/>`_ Dataset.

Args:
    root (str or ``pathlib.Path``): Root directory where images are downloaded to.
    ann_file (string): Path to annotation file.
    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.
    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.
Nr   rF   rG   rH   rI   r   c                 óô  >• [         T
U ]  XUS9  [        R                  R	                  U5      U l        [        [        5      U l        [        U R
                  5       nU HE  nUR                  5       R                  S5      u  p‰U R                  US S    R                  U	5        MG     S S S 5        [        [        U R                  R                  5       5      5      U l        XPl        g ! , (       d  f       NF= f)NrK   Ú	r,   )r   r   r/   r0   rL   rF   r   r>   r   rM   r4   r.   r3   rP   rQ   rR   rI   )r   r   rF   rG   rH   rI   rT   Úliner5   Úcaptionr   s             €r   r   ÚFlickr30k.__init__ƒ   sÁ   ø€ ô 	‰Ñ˜ÐEUÐÑVÜŸ™×*Ñ*¨8Ó4ˆŒô '¤tÓ,ˆÔÜ�$—-‘-Ô  BÛ�Ø"&§*¡*£,×"4Ñ"4°TÓ":‘�Ø× Ñ  ¨¨ Ñ-×4Ñ4°WÖ=ñ ÷ !ô
 œ˜t×/Ñ/×4Ñ4Ó6Ó7Ó8ˆŒØ�÷ !Õ ús   ÁAC)Ã)
C7rV   c                 ó2  • U R                   U   n[        R                  R                  U R                  U5      nU R                  U5      nU R                  b  U R                  U5      nU R                  U   nU R                  b  U R                  U5      nXE4$ rX   )	rR   r/   r0   r1   r   rI   rG   r   rH   )r   rV   r5   ÚfilenamerY   rZ   s         r   r[   ÚFlickr30k.__getitem__˜   s‡   € ð —‘˜%‘ˆô —7‘7—<‘< §	¡	¨6Ó2ˆØ�k‰k˜(Ó#ˆØ�>‰>Ñ%Ø—.‘. Ó%ˆCð ×!Ñ! &Ñ)ˆØ× Ñ Ñ,Ø×*Ñ*¨6Ó2ˆFàˆ{Ðr   c                 ó,   • [        U R                  5      $ r^   r_   ra   s    r   rb   ÚFlickr30k.__len__¯   rd   r   re   )r8   r9   r:   r;   r<   r   r=   r   r   r   r   rf   r?   r[   rb   r@   rA   rB   s   @r   rh   rh   t   s˜   ø† ñð$ )-Ø/3Ø'5ñàðð ðð ˜HÑ%ð	ð
 # 8Ñ,ðð ˜#˜ ˜Ñ$ðð 
÷ð ð* ð ¨¨s°C¨x©ô ð.˜÷ ò r   rh   )r2   r/   Úcollectionsr   Úhtml.parserr   Úpathlibr   Útypingr   r   r   r	   Úfolderr   Úvisionr   r   rD   rh   © r   r   Ú<module>r{      sF   ðÛ Û 	Ý #Ý "Ý ß 1Ó 1å "Ý !ô(>�Zô (>ôV:ˆ}ô :ôz<�õ <r   