
    NgT
                     n    d 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	Z G d
 de
          ZdS )z A dataset reader that reads single tarfile based datasets

This reader can read datasets consisting if a single tarfile containing images.
I am planning to deprecated it in favour of ParerImageInTar.

Hacked together by / Copyright 2020 Ross Wightman
    N)natural_key   )load_class_map)get_img_extensions)ReaderTc                    t          d          }g }g } | j                    D ]}|                                st          j                            |j                  \  }}t          j                            |          }	t          j                            |          d         }
|
                                |v r*|	                    |           |	                    |	           ÉKt          |          }t          t          |t                              }d t          |          D             fdt          ||          D             }|rt          |d           }|fS )NT)as_setr   )keyc                     i | ]\  }}||	S  r   ).0idxcs      ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/data/readers/reader_image_tar.py
<dictcomp>z#extract_tarinfo.<locals>.<dictcomp>"   s    FFF633FFF    c                 2    g | ]\  }}|v 	||         fS r   r   )r   flclass_to_idxs      r   
<listcomp>z#extract_tarinfo.<locals>.<listcomp>#   s2    dddDAqRSWcRcRcA|A/RcRcRcr   c                 6    t          | d         j                  S Nr   )r   path)ks    r   <lambda>z!extract_tarinfo.<locals>.<lambda>%   s    TUVWTXT]H^H^ r   )r   
getmembersisfileosr   splitbasenamesplitextlowerappendsetlistsortedr   	enumeratezip)tarfiler   sort
extensionsfileslabelstidirnamer!   labelextunique_labelssorted_labelstarinfo_and_targetss    `            r   extract_tarinfor6      sa   #4000JEF g "" ! !yy{{ 	GMM"'22  ))gx((+99;;*$$LLMM%   FVM{CCCDDFFY}-E-EFFFddddCv<N<Nddd `$%8>^>^___,,r   c                   8     e Zd ZdZd fd	Zd Zd Zd	dZ xZS )
ReaderImageTarz Single tarfile dataset where classes are mapped to folders within tar
    NOTE: This class is being deprecated in favour of the more capable ReaderImageInTar that can
    operate on folders of tars or tars in tars.
     c                 x   t                                                       d }|rt          ||          }t          j                            |          sJ || _        t          j        |          5 }t          ||          \  | _
        | _        d d d            n# 1 swxY w Y   | j
        | _        d | _        d S N)super__init__r   r   r   r   rootr*   openr6   samplesr   imgs)selfr>   	class_mapr   tf	__class__s        r   r=   zReaderImageTar.__init__.   s     	;))T::Lw~~d#####	\$ 	P2.=b,.O.O+DL$+	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	PL	s   2BB #B c                     | j         t          j        | j                  | _         | j        |         \  }}| j                             |          }||fS r;   )r*   r?   r>   r@   extractfile)rB   indextarinfotargetfileobjs        r   __getitem__zReaderImageTar.__getitem__<   sL    <"<	22DL,u-,**733r   c                 *    t          | j                  S r;   )lenr@   )rB   s    r   __len__zReaderImageTar.__len__C   s    4<   r   Fc                 x    | j         |         d         j        }|rt          j                            |          }|S r   )r@   namer   r   r!   )rB   rH   r!   absolutefilenames        r   	_filenamezReaderImageTar._filenameF   s8    <&q). 	2w''11Hr   )r9   )FF)	__name__
__module____qualname____doc__r=   rL   rO   rT   __classcell__)rE   s   @r   r8   r8   )   sy                ! ! !       r   r8   )NT)rX   r   r*   timm.utils.miscr   rC   r   img_extensionsr   readerr   r6   r8   r   r   r   <module>r]      s     
			  ' ' ' ' ' ' % % % % % % . . . . . .      - - - -.! ! ! ! !V ! ! ! ! !r   