
    RЦi8                     t   % S r SSKrSSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJrJrJrJrJrJrJr  SSKJrJr  / S	Qr\" \5      r\\\\   4   \S
'   0 r\\\4   \S'   0 r \\\S\4   4   \S'   \" 5       r!\\   \S'   0 r"\\\4   \S'   0 r#\\\4   \S'   \" \$5      r%\\\\   4   \S'   \" \&5      r'\\\\\\   4   4   \S'   0 r(\\\\   4   \S'   S<S\S\S\\\4   4S jjr)S\S\4S jr*S\\\\\\4   \4   4   4S jr+S\S\4   S\S\4   4S jr,S=S\S\S\4S  jjr-S!\S"\\\\   4   4S# jr.S$\S\\\/\4      4S% jr0S&\4S' jr1      S>S&\\\\   4   S(\\\\   4   S)\2S*\\\\   4   S+\2S,\\2   S\\   4S- jjr3  S?S&\\\\   4   S*\S\\   4S. jjr4S<S(\S\\\4   4S/ jjr5S\S\24S0 jr6S@S\S1\\   S\S\4   4S2 jjr7S\\   4S3 jr8S\S4\\\S4   \\   \\   4   S\24S5 jr9S\S\24S6 jr:SAS\S7\2S\\   4S8 jjr;S\S9\S\\   4S: jr<S\S\\\4   4S; jr=g)BzAModel Registry
Hacked together by / Copyright 2020 Ross Wightman
    N)defaultdictdeque)deepcopy)replace)
AnyCallableDictIterableListOptionalSetSequenceUnionTuple   )PretrainedCfg
DefaultCfg)split_model_name_tagget_arch_nameregister_modelgenerate_default_cfgslist_modelslist_pretrainedis_modelmodel_entrypointlist_modulesis_model_in_modulesget_pretrained_cfg_valueis_model_pretrainedget_arch_pretrained_cfgs_module_to_models_model_to_module._model_entrypoints_model_has_pretrained_model_default_cfgs_model_pretrained_cfgs_model_with_tags_module_to_deprecated_models_deprecated_models
model_nameno_tagreturnc                 J    U R                  SS5      tpU(       a  US   OUnX4$ )N.r   r   )split)r*   r+   tag_listtags       T/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/_registry.pyr   r   !   s,    &,,S!4J!(1+vC?    c                     [        U 5      S   $ )Nr   )r   r*   s    r2   r   r   '   s    
+A..r3   cfgsc                    [        [        5      n[        5       nU R                  5        GH-  u  p4[	        U[
        5      (       a  [        S0 UD6nUR                  n[        U5      u  pgXb;   nU=(       a    U(       + =(       d    UR                  S5      =(       a    U(       + n	UR                  S5      nX   n
U	(       a-  U
R                  R                  U5        UR                  U5        OOU(       a-  U
R                  (       d  U
R                  R                  U5        OU
R                  R                  U5        U(       a  SU
l        XJR                   U'   GM0     U$ )N*T )r   r   setitems
isinstancedictr   has_weightsr   endswithstriptags
appendleftaddis_pretrainedappendr6   )r6   outdefault_setkvr>   modelr1   is_default_setprioritydefault_cfgs              r2   r   r   +   s   
j
!C%K

a""Amm)!,
-+GZc1B1Y>GYiinj'',OOE"!:!:'',##C((,K% !/ 2 Jr3   fnc           	      l   [         R                  U R                     nU R                  R                  S5      n[	        U5      (       a  US   OSnU R
                  n[        US5      (       a  UR                  R                  U5        OU/Ul        U[        ;   a)  [        R                  " SU SU R                   SU S3SS	9  U [        U'   U[        U'   [        U   R                  U5        [        US
5      (       Ga  XAR                  ;   Ga  UR                  U   n[!        U["        5      (       d8  [!        U[$        5      (       d   e['        S0 UD6n[#        [)        S/5      SU0S9n[+        UR,                  5       GH%  u  pxUS:H  n	UR.                  U   nU(       a  SR1                  XH/5      OUn
[%        XH(       a  UOS S9nUR2                  (       a"  UR2                  S:X  a  UR2                  U
-   US'   [5        U40 UD6nU	(       a/  U[6        U'   UR8                  (       a  [:        R                  U5        U(       aJ  U[6        U
'   UR8                  (       a  [:        R                  U
5        [<        U   R                  U
5        GM  [<        U   R                  U5        GM(     U[>        U'   U $ )Nr.    __all__zOverwriting z in registry with zr. This is because the name being registered conflicts with an existing name. Please check if this is not expected.   
stackleveldefault_cfgs)rA   r6   r   )architecturer1   ztimm/	hf_hub_idr9   ) sysmodules
__module__r/   len__name__hasattrrR   rE   r#   warningswarnr"   r!   rC   rV   r<   r   r=   r   r   	enumeraterA   r6   joinrX   r   r&   r>   r$   r'   r%   )rN   modmodule_name_splitmodule_namer*   rM   pretrained_cfgtag_idxr1   
is_defaultmodel_name_tagreplace_itemss               r2   r   r   K   s]   
++bmm
$C++C0+./@+A+A#B'rK JsI:&!l '':,&8q U` `	

 &(z"#.Z k"&&z2sN##
6F6F(F &&z2+z22k40000*9[9N$%+R<PQK%k&6&67LG AJ(--c2N<?SXXz&78ZN jScdSM''N,D,D,O-;-E-E-Vk*$^E}EN5C&z2!--)--j99G&~6!--)--n= ,33NC ,33J?/ 82 +6J'Ir3   deprecated_name
current_fncurrent_tagc                     ^ ^^ SUUU 4S jjnU$ )Nc                   > Tc   ST S35       eT(       a  SR                  TR                  T/5      OTR                  n[        R                  " ST SU S3SS9  UR	                  SS 5      nT" S
X=(       d    TS	.UD6$ )NzModel z& has been removed with no replacement.r.   zMapping deprecated model name z to current rS   rT   rf   )
pretrainedrf   r9   )rb   r]   r_   r`   pop)rp   kwargscurrent_namerf   rl   rm   rk   s       r2   _fn#_deprecated_model_shim.<locals>._fn   s    %h&0AAg(hh%GRsxx!4!4k BCXbXkXk66G|T`Saabcpqr$4d;hZ@]R]haghhr3   )Fr9   )rk   rl   rm   rt   s   ``` r2   _deprecated_model_shimrv      s    i i Jr3   re   deprecation_mapc                    [         R                  U    nU R                  S5      n[        U5      (       a  US   OSn UR	                  5        H  u  pE[        US5      (       a  UR                  R                  U5        S nSnU(       a  [        U5      u  p[        X(5      n[        XFU5      n	[        X$U	5        U	[        U'   U [        U'   [        U    R                  U5        U[         U'   U["        U    U'   M     g )Nr.   rP   rQ   rR   )rY   rZ   r/   r\   r;   r^   rR   rE   r   getattrrv   setattrr#   r"   r!   rC   r)   r(   )
re   rw   rc   rd   
deprecatedcurrentrl   rm   rs   deprecated_entrypoint_fns
             r2   register_model_deprecationsr~      s    
++k
"C#))#.+./@+A+A#B'rK.446
3	""KKz*
(<W(E%L 3J#9*R]#^ !9:)A:&'2$+&**:6)0:&@G$[1*=  7r3   string_c                     [         R                  " SU R                  5       5       Vs/ s H$  oR                  5       (       a  [	        U5      OUPM&     sn$ s  snf )zHSee https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/z(\d+))rer/   lowerisdigitint)r   ss     r2   _natural_keyr      s>    24((8W]]_2UV2UQiikkCFq(2UVVVs   +Afilterc                 Z    [        U 5      u  pU(       d  SR                  US/5      U /$ U /$ )z;expand a 'base_filter' to 'base_filter.*' if no tag portionr.   r8   )r   rb   )r   filter_base
filter_tags      r2   _expand_filterr      s2    26:K+s+,f55xr3   modulerp   exclude_filtersname_matches_cfginclude_tagsc                    U (       a!  [        U [        [        45      (       a  U OU /nO/ nUc  UnU(       d  [        [        R                  5       5      nOa[        U[        5      (       a
  [        U   nOB[        U[        5      (       d   e[        5       nU H  nUR                  [        U   5        M     U[        R                  5       -
  nU(       ay  [        5       n	U H  nU	R                  [        U   5        M     U	nU V
Vs/ s H  n
[        U
5        H  oPM     M     nn
nU V
Vs/ s H  n
[        U
5        H  oPM     M     nn
nU(       aM  [        5       nU H<  n
[        R                  " Xz5      n[        U5      (       d  M+  UR!                  U5      nM>     OUnU(       a`  [        U[        [        45      (       d  U/nU H<  n[        R                  " X5      n[        U5      (       d  M+  UR#                  U5      nM>     U(       a  [$        R'                  U5      nU(       a  [        [(        5      R'                  U5      n[+        U[,        S9$ s  snn
f s  snn
f )al  Return list of available model names, sorted alphabetically

Args:
    filter - Wildcard filter string that works with fnmatch
    module - Limit model selection to a specific submodule (ie 'vision_transformer')
    pretrained - Include only models with valid pretrained weights if True
    exclude_filters - Wildcard filters to exclude models after including them with filter
    name_matches_cfg - Include only models w/ model_name matching default_cfg name (excludes some aliases)
    include_tags - Include pretrained tags in model names (model.tag). If None, defaults
        set to True when pretrained=True else False (default: None)

Returns:
    models - The sorted list of models

Example:
    model_list('gluon_resnet*') -- returns all models starting with 'gluon_resnet'
    model_list('*resnext*, 'resnet') -- returns all models with 'resnext' in 'resnet' module
)key)r<   tuplelistr:   r#   keysstrr!   r   updater)   r'   r   fnmatchr   r\   union
differencer$   intersectionr&   sortedr   )r   r   rp   r   r   r   include_filters
all_modelsmmodels_with_tagsfefmodelsinclude_modelsxfexclude_modelss                   r2   r   r      s   4 $.vt}$E$E&F8!"#5#:#:#<=
fc""#4V#<Jfh////#&5J!!"3A"67 05577J%(UA##$4Q$78 %
'6S!PQAR22AR2S'6S!PQAR22AR2S5 A$^^J:N>""n5 !
 /E4=99./O!B$^^F7N>""**>: "
 &33F;+,99&A&l++5 TSs   I,Ic                     [        U SUSS9$ )NT)r   rp   r   r   )r   )r   r   s     r2   r   r     s     '	 r3   c                 D    U (       a	  [         U    O[        n[        U5      $ N)r(   r)   r   )r   all_deprecateds     r2   get_deprecated_modelsr     s    =C1&9I[NN##r3   c                 *    [        U 5      nU[        ;   $ )z!Check if a model name exists
    )r   r#   )r*   	arch_names     r2   r   r     s     j)I***r3   module_filterc                     [        U 5      nU(       a,  U[        R                  U0 5      ;  a  [        SU  SU S35      e[        U   $ )z6Fetch a model entrypoint for specified model name
    zModel (z not found in module r.   )r   r!   getRuntimeErrorr#   )r*   r   r   s      r2   r   r   $  sM     j)I*;*?*?r*RRWZL0Em_TUVWWi((r3   c                  @    [         R                  5       n [        U 5      $ )zHReturn list of module names that contain models / model entrypoints
    )r!   r   r   )rZ   s    r2   r   r   -  s      $$&G'?r3   module_namesc                    ^ [        U 5      m[        U[        [        [        45      (       d   e[        U4S jU 5       5      $ )zCheck if a model exists within a subset of modules

Args:
    model_name - name of model to check
    module_names - names of modules to search in
c              3   <   >#    U  H  nT[         U   ;   v   M     g 7fr   )r!   ).0nr   s     r2   	<genexpr>&is_model_in_modules.<locals>.<genexpr>?  s     G,Qy-a00,s   )r   r<   r   r   r:   any)r*   r   r   s     @r2   r   r   4  s:     j)IlUD#$67777G,GGGr3   c                     U [         ;   $ r   )r$   r5   s    r2   r   r   B  s    ...r3   allow_unregisteredc                     U [         ;   a  [        [         U    5      $ [        U 5      u  p#U[        ;   a  [	        SU SU S35      eU(       a  g [	        SU S35      e)NzInvalid pretrained tag (z) for r.   zModel architecture (z#) has no pretrained cfg registered.)r&   r   r   r%   r   )r*   r   r   r1   s       r2   get_pretrained_cfgr   F  sh    ++.z:;;)*5NI''5cU&1MNN
-i[8[\
]]r3   cfg_keyc                 .    [        U SS9n[        X!S5      $ )zNGet a specific model default_cfg value by key. None if key doesn't exist.
    F)r   N)r   ry   )r*   r   cfgs      r2   r   r   S  s     ZE
BC3&&r3   c                 n    [        U 5      u  p[        U   nU Vs0 s H  oD[        U   _M     nnU$ s  snf )z6Get all pretrained cfgs for a given architecture.
    )r   r'   r&   )r*   r   _model_namesr   r6   s         r2   r    r    Z  sA     (
3LI"9-K2=>+Q%a((+D>K ?s   2)rQ   )NrQ   )rQ   rQ   FrQ   FN)rQ   rQ   r   )T)>__doc__r   r   rY   r_   collectionsr   r   copyr   dataclassesr   typingr   r   r	   r
   r   r   r   r   r   r   _pretrainedr   r   rR   r:   r!   r   __annotations__r"   r#   r$   r%   r&   r   r'   r=   r(   r)   r   r   r   r   rv   r~   r   r   r   boolr   r   r   r   r   r   r   r   r   r   r    r9   r3   r2   <module>r      s    	 
  *   ] ] ] 2 *5S)9 4SX& 9#% $sCx. %46 DhsCx001 6"%% s3x '02 T#},- 235 S-/0 5)4T): $sDI~& :DOPTDU d3S(3--?(@#@A U/1 Dhsm+, 1S # uS#X /c /c /S%S#X0M*N%N O @=xS) =hsCx.@ =@C X [^ HS H4XVY]HZC[ H,W# W$uS#X"7 W
3  )+(* 13!&'+P,c49n%P,c49n%P, P, sDI~.	P,
 P, tnP, 
#YP,h )+!	c49n%		 
#Y	$# $tCH~ $
+ + +) )Xc] )hWZ\_W_N` )d3i HH',U38_d3iS-Q'RH	H/C /D /
^3 
^D 
^HUbLc 
^' 's 'x} ' c=6H1I r3   