
    ^jT                         d dl mZmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZ eee   e
edf   eeeef   ef   f   Z G d de      Z G d de      Z G d	 d
e      Z G d d      Zy)    )ABCabstractmethod)Integral)DictList
NamedTupleOptionalTupleUnion.c                       e Zd Zd Zed        Zed        Zdeedf   fdZ	de
fdZedde
d	e
deee   eeef   f   fd
       Zedefd       Zeddede
defd       Zeddede
defd       Zy)DatasetInfoc                      y N selfs    a/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/data/dataset_info.py__init__zDatasetInfo.__init__   s        c                      y r   r   r   s    r   num_classeszDatasetInfo.num_classes       r   c                      y r   r   r   s    r   label_nameszDatasetInfo.label_names   r   r   return.c                 F    t        t        | j                                     S z0Return classifier indices that have label names.)tupleranger   r   s    r   label_indiceszDatasetInfo.label_indices   s    U4++-.//r   c                 P    dt        |      cxk  xr | j                         k  S c S z3Return whether a classifier index has a label name.r   )intr   r   indexs     r   	has_labelzDatasetInfo.has_label   s%    CJ3!1!1!33333r   detailedas_dictc                      y r   r   r   r'   r(   s      r   label_descriptionszDatasetInfo.label_descriptions   r   r   c                      y r   r   r$   s     r   index_to_label_namezDatasetInfo.index_to_label_name"   r   r   r%   c                      y r   r   )r   r%   r'   s      r   index_to_descriptionz DatasetInfo.index_to_description&   r   r   labelc                      y r   r   r   r0   r'   s      r   label_name_to_descriptionz%DatasetInfo.label_name_to_description*   r   r   NFFF)__name__
__module____qualname__r   r   r   r   r
   r#   r    boolr&   r   r   strr   r+   r-   r/   r3   r   r   r   r   r   	   s       0uS#X 04$ 4 4 $ SXY]^aYbdhilnqiqdrYrSs   C   #  #   s d s  r   r   c                        e Zd ZdZ	 ddedeeeef      f fdZd Z	d Z
deedf   fd	Zdefd
Zddededeee   eeef   f   fdZddededefdZdefdZddededefdZ xZS )CustomDatasetInfoz: DatasetInfo that wraps passed values for custom datasets.r   r+   c                 L   t         |           t        |t        t        t
        f      r|st        d      || _        d | _        t        |t
              ri }|j                         D ]u  \  }}t        |t        t        f      s"t        dt        |      j                   d      	 t        |      }|dk  rt        d| d      ||v rt        d| d      |||<   w || _        |j!                         }n|}t#        d |D              st        d	      || _        | j$                  Ut        | j$                  t
              st        d
      |D 	cg c]  }	|	| j$                  vs|	 }
}	|
rt        d|
 d      y y # t        $ r}t        d|d      |d }~ww xY wc c}	w )NzIlabel_names must be a non-empty list, tuple, or index-to-name dictionary.z*Label index must be an int or string, got .z&Label index must be integer-like, got r   z&Label index must be non-negative, got z+Duplicate label index after normalization: c              3   <   K   | ]  }t        |t                y wr   )
isinstancer:   ).0names     r   	<genexpr>z-CustomDatasetInfo.__init__.<locals>.<genexpr>S   s     GT:dC(Gs   z All label names must be strings.zBlabel_descriptions must be a label-name-to-description dictionary.z&Missing descriptions for label names: )superr   r@   listr   dict
ValueError_label_names_label_names_by_indexitemsr   r:   	TypeErrortyper6   r#   valuesall_label_descriptions)r   r   r+   normalized_label_names	raw_index
label_namer%   elabel_name_valuesrB   missing_descriptions	__class__s              r   r   zCustomDatasetInfo.__init__2   s   
 	+eT':;;hii (%)"k4( &(")4):):)< ;%	:!)h_=#&PQUV_Q`QiQiPjjk$lmme	NE 19$'MeWTU%VWW22$'RSXRYYZ%[\\0:&u-; *@D& 6 = = ? +G5FGG>??#5 ##/d66= dee5F#oT$VZVnVnJnD#o #o# #IJ^I__`!abb $ 0! " e$'Mi]Z[%\]cdde( $ps$   'F F!'F! 	F	FFc                 ,    t        | j                        S r   )lenrH   r   s    r   r   zCustomDatasetInfo.num_classes_   s    4$$%%r   c                     | j                   S r   )rH   r   s    r   r   zCustomDatasetInfo.label_namesb   s       r   r   .c                     | j                   t        | j                         S t        t        t        | j                                    S r   )rI   r   r   rX   rH   r   s    r   r    zCustomDatasetInfo.label_indicese   s:    %%13344U3t001233r   c                     t        |      }| j                  || j                  v S d|cxk  xr t        | j                        k  S c S r"   )r#   rI   rX   rH   r$   s     r   r&   zCustomDatasetInfo.has_labelk   sI    E
%%1D6666E2C 1 122222r   r'   r(   c                     | j                   S r   rO   r*   s      r   r+   z$CustomDatasetInfo.label_descriptionsr   s    '''r   r0   c                 <    | j                   r| j                   |   S |S r   r]   r2   s      r   r3   z+CustomDatasetInfo.label_name_to_descriptionu   s!    ##++E22r   c                     | j                   | j                   t        |         S d|cxk  rt        | j                        k  sJ  J | j                  |   S )Nr   )rI   r#   rX   rH   r$   s     r   r-   z%CustomDatasetInfo.index_to_label_namez   sX    %%1--c%j99E2C 1 1222222  ''r   r%   c                 J    | j                  |      }| j                  ||      S )Nr'   )r-   r3   )r   r%   r'   r0   s       r   r/   z&CustomDatasetInfo.index_to_description   s(    ((/--eh-GGr   r   r4   r5   )r6   r7   r8   __doc__
LabelNamesr	   r   r:   r   r   r   r
   r#   r    r9   r&   r   r   r+   r3   r-   r/   __classcell__)rV   s   @r   r<   r<   /   s    D
 <@+c#+c !)c3h 8+cZ&!4uS#X 43$ 3(4 ($ (SXY]^aYbdhilnqiqdrYrSs (s d s 
(C (H# H H# Hr   r<   c                   ,    e Zd ZU eed<   eed<   eed<   y)LabelMappingCoveragemappedmissingextraN)r6   r7   r8   r#   __annotations__r   r   r   rf   rf      s    KLJr   rf   c                   L    e Zd ZdZ	 	 ddededee   fdZdefdZde	de
fd	Zy
)DatasetInfoLabelMapperzPMap classifier indices to labels with reusable sparse-mapping fallback behavior.dataset_info
label_typefallback_formatc                 T    |dvrt        d| d      || _        || _        || _        y )N)rB   descriptiondetailr'   zInvalid label type: r>   )rG   rm   rn   ro   )r   rm   rn   ro   s       r   r   zDatasetInfoLabelMapper.__init__   s9     JJ3J<qABB($.r   r   c                 D   t        |      }| j                  j                  |      s(| j                  | j                  j	                  |      S | j
                  dk(  r| j                  j                  |      S | j                  j                  || j
                  dv       S )N)r%   rB   )rr   r'   ra   )r#   rm   r&   ro   formatrn   r-   r/   r$   s     r   __call__zDatasetInfoLabelMapper.__call__   s    E
  **51d6J6J6V''..U.;;??f$$$88??  55__(>> 6 
 	
r   r   c                     dk  rt        d d      | j                  j                         }t        fd|D              }t	        ||z
  t        |      |z
        S )zGReturn mapped, missing, and out-of-range label counts for a classifier.r   z&num_classes must be non-negative, got r>   c              3   >   K   | ]  }d |cxk  xr k  nc   yw)r   Nr   )rA   r%   r   s     r   rC   z2DatasetInfoLabelMapper.coverage.<locals>.<genexpr>   s     J%Q%-+--Js   )rg   rh   ri   )rG   rm   r    sumrf   rX   )r   r   mapped_indicesrg   s    `  r   coveragezDatasetInfoLabelMapper.coverage   si    ?Ek]RSTUU**88:J>JJ#&(n%.
 	
r   N)rq   z<unmapped:{index}>)r6   r7   r8   rb   r   r:   r	   r   ru   r#   rf   rz   r   r   r   rl   rl      sR    Z
 ,-A	
/%
/ 
/ &c]	
/	
 	


C 

,@ 

r   rl   N)abcr   r   numbersr   typingr   r   r   r	   r
   r   r:   r#   rc   r   r<   rf   rl   r   r   r   <module>r~      sv    #  A A 49eCHotE#s(OS4H/IIJ
## #LSH SHl: $
 $
r   