
    h                         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     S/var/www/auris/envauris/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    '> DM 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    '>!DM 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,dii(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/U39- /$ /!3 !tE#x}:L4M/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$ )Flickr8k7   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KK	" !!--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     % kk&!>>%..%C !!&)  ,**62F{r   c                 ,    [        U R                  5      $ NlenrR   r   s    r   __len__Flickr8k.__len__p       488}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, #$ 
 ( sCx ,  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$ )	Flickr30kt   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  pU 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"4T":  -44W=  !
 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     % 77<<		62kk(#>>%..%C !!&)  ,**62F{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, #$ 
 * sCx .  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   