Ë
    éÓ^j�8  ã                   ó@  — U d Z ddlZddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZ g d	¢Z ee«      Zeeee   f   ed
<   i Zeeef   ed<   i Z eeedef   f   ed<    e«       Z!ee   ed<   i Z"eeef   ed<   i Z#eeef   ed<    ee$«      Z%eeee   f   ed<    ee&«      Z'eeeeee   f   f   ed<   i Z(eeee   f   ed<   d<dededeeef   fd„Z)dedefd„Z*deeeeeef   ef   f   fd„Z+dedef   dedef   fd„Z,d=dededefd „Z-d!ed"eeee   f   fd#„Z.d$edeee/ef      fd%„Z0d&efd'„Z1	 	 	 	 	 	 d>d&eeee   f   d(eeee   f   d)e2d*eeee   f   d+e2d,ee2   dee   fd-„Z3	 	 d?d&eeee   f   d*edee   fd.„Z4d<d(edeeef   fd/„Z5dede2fd0„Z6d@ded1ee   dedef   fd2„Z7dee   fd3„Z8ded4eeedf   ee   ee   f   de2fd5„Z9dede2fd6„Z:dAded7e2dee   fd8„Z;ded9edee   fd:„Z<dedeeef   fd;„Z=y)BzB Model 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                 óD   — | j                  dd«      ^} }|r|d   n|}| |fS )Nú.r   r   )Úsplit)r*   r+   Útag_listÚtags       ú`/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/_registry.pyr   r   !   s0   € Ø&×,Ñ,¨S°!Ó4Ð€J�Ù!ˆ(�1Š+ v€CØ�sˆ?Ðó    c                 ó   — t        | «      d   S )Nr   )r   ©r*   s    r2   r   r   '   s   € Ü 
Ó+¨AÑ.Ð.r3   Úcfgsc                 ó`  — t        t        «      }t        «       }| j                  «       D �]   \  }}t	        |t
        «      rt        di |¤Ž}|j                  }t        |«      \  }}||v }|xr | xs |j                  d«      xr | }	|j                  d«      }||   }
|	r-|
j                  j                  |«       |j                  |«       nE|r(|
j                  s|
j                  j                  |«       n|
j                  j                  |«       |rd|
_        ||
j                   |<   �Œ |S )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à—
‘
“ó "‰ˆˆ1Ü�aœÔÜÑ" Ñ"ˆAØ—m‘mˆä)¨!Ó,‰
ˆˆsØ +Ð-ˆØÒ+¨ GÒZ°·±¸cÓ1BÒ1YÈ>ÐGYˆØ�i‰i˜‹nˆà˜%‘jˆáØ×Ñ×'Ñ'¨Ô,Ø�O‰O˜EÕ"Ù ×!:Ò!:Ø×Ñ×'Ñ'¨Õ,à×Ñ×#Ñ# CÔ(áØ(,ˆKÔ%à !ˆ×Ñ˜Óð/"ð2 €Jr3   Úfnc           	      óú  — t         j                  | j                     }| j                  j                  d«      }t	        |«      r|d   nd}| j
                  }t        |d«      r|j                  j                  |«       n|g|_        |t        v r+t        j                  d|› d| j                  › d|› d�d¬	«       | t        |<   |t        |<   t        |   j                  |«       t        |d
«      �rŠ||j                  v �r{|j                  |   }t!        |t"        «      s6t!        |t$        «      sJ ‚t'        di |¤Ž}t#        t)        dg«      d|i¬«      }t+        |j,                  «      D �]  \  }}|dk(  }	|j.                  |   }|rdj1                  ||g«      n|}
t%        ||r|nd ¬«      }|j2                  r!|j2                  dk(  r|j2                  |
z   |d<   t5        |fi |¤Ž}|	r*|t6        |<   |j8                  rt:        j                  |«       |rC|t6        |
<   |j8                  rt:        j                  |
«       t<        |   j                  |
«       Œít<        |   j                  |«       �Œ |t>        |<   | S )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[  € ä
�+‰+�b—m‘mÑ
$€CØŸ™×+Ñ+¨CÓ0ÐÜ+.Ð/@Ô+AÐ# BÒ'Àr€Kð —‘€JÜˆs�IÔØ�‰×Ñ˜:Õ&à!�lˆŒð Ô'Ñ'Ü�‰Ø˜:˜,Ð&8¸¿¹¸ÀqÈÈð U`ð `àõ	
ð
 &(Ô�zÑ"Ø#.Ô�ZÑ Ü�kÑ"×&Ñ& zÔ2Üˆs�NÕ#¨
°c×6FÑ6FÒ(Fð ×&Ñ& zÑ2ˆÜ˜+¤zÔ2ä˜k¬4Ô0Ð0Ð0ä*Ñ9¨[Ñ9ˆNÜ$¬%°°«+¸RÀÐ<PÔQˆKä% k×&6Ñ&6Ó7ó 	@‰LˆG�SØ  A™ˆJØ(×-Ñ-¨cÑ2ˆNÙ<?˜SŸX™X z°3Ð&7Ô8ÀZˆNÜ ¨jÁS¹cÈdÔSˆMØ×'Ò'¨N×,DÑ,DÈÒ,Oà-;×-EÑ-EÈÑ-V�˜kÑ*Ü$ ^ÑE°}ÑEˆNáØ5CÔ& zÑ2Ø!×-Ò-ä)×-Ñ-¨jÔ9áØ9GÔ& ~Ñ6Ø!×-Ò-ä)×-Ñ-¨nÔ=Ü  Ñ,×3Ñ3°NÕCä  Ñ,×3Ñ3°JÖ?ð/	@ð2 +6Ô˜JÑ'à€Ir3   Údeprecated_nameÚ
current_fnÚcurrent_tagc                 ó   ‡ ‡‡— dˆˆˆ fd„	}|S )Nc                 óò   •— ‰€J d‰› d�«       ‚‰rdj                  ‰j                  ‰g«      n‰j                  }t        j                  d‰› d|› d�d¬«       |j	                  dd «      } ‰d
| |xs ‰d	œ|¤ŽS )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   Ú_fnz#_deprecated_model_shim.<locals>._fnŒ   s“   ø€ ØÐ%Ðh¨&°Ð0AÐAgÐ(hÓhÐ%ÙGR�s—x‘x ×!4Ñ!4°kÐ BÔCÐXb×XkÑXkˆÜ�‰Ð6°Ð6GÀ|ÐT`ÐSaÐabÐcÐpqÕrØŸ™Ð$4°dÓ;ˆÙÐh ZÀÒ@]ÐR]ÑhÐagÑhÐhr3   )Fr9   )rk   rl   rm   rt   s   ``` r2   Ú_deprecated_model_shimru   ‹   s   ú€ ÷ið €Jr3   re   Údeprecation_mapc                 óà  — t         j                  |    }| j                  d«      }t        |«      r|d   nd} |j	                  «       D ]¥  \  }}t        |d«      r|j                  j                  |«       d }d}|rt        |«      \  }}t        ||«      }t        |||«      }	t        |||	«       |	t        |<   | t        |<   t        |    j                  |«       |t         |<   |t"        |    |<   Œ§ y )Nr.   rP   rQ   rR   )rY   rZ   r/   r\   r;   r^   rR   rE   r   Úgetattrru   Úsetattrr#   r"   r!   rC   r)   r(   )
re   rv   rc   rd   Ú
deprecatedÚcurrentrl   rm   rs   Údeprecated_entrypoint_fns
             r2   Úregister_model_deprecationsr}   •   sú   € Ü
�+‰+�kÑ
"€CØ#×)Ñ)¨#Ó.ÐÜ+.Ð/@Ô+AÐ# BÒ'Àr€Kà.×4Ñ4Ó6ò HÑˆ
�GÜ�3˜	Ô"Ø�K‰K×Ñ˜zÔ*Øˆ
ØˆÙÜ(<¸WÓ(EÑ%ˆL˜+Ü   lÓ3ˆJÜ#9¸*ÀjÐR]Ó#^Ð Ü��ZÐ!9Ô:Ø)AÔ˜:Ñ&Ø'2Ô˜Ñ$Ü˜+Ñ&×*Ñ*¨:Ô6Ø)0Ô˜:Ñ&Ø@GÔ$ [Ñ1°*Ò=ñHr3   Ústring_c                 ó¦   — t        j                  d| j                  «       «      D �cg c]  }|j                  «       rt	        |«      n|‘Œ! c}S c c}w )zHSee https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/z(\d+))Úrer/   ÚlowerÚisdigitÚint)r~   Úss     r2   Ú_natural_keyr…   «   s8   € ä24·(±(¸8ÀWÇ]Á]Ã_Ó2UÖV¨Q�a—i‘i”kŒC�ŒF qÑ(ÒVÐVùÒVs   §$AÚfilterc                 óR   — t        | «      \  }}|sdj                  |dg«      | gS | gS )z< expand a 'base_filter' to 'base_filter.*' if no tag portionr.   r8   )r   rb   )r†   Úfilter_baseÚ
filter_tags      r2   Ú_expand_filterrŠ   °   s4   € ä2°6Ó:Ñ€K�ÙØ—‘˜+ sÐ+Ó,¨fÐ5Ð5àˆxˆr3   Úmodulerp   Úexclude_filtersÚname_matches_cfgÚinclude_tagsc                 ó$  — | rt        | t        t        f«      r| n| g}ng }|€|}|st        t        j                  «       «      }nUt        |t        «      r
t        |   }n;t        |t        «      sJ ‚t        «       }|D ]  }|j                  t        |   «       Œ |t        j                  «       z
  }|rmt        «       }	|D ]  }|	j                  t        |   «       Œ |	}|D �
�cg c]  }
t        |
«      D ]  }|‘Œ Œ }}
}|D �
�cg c]  }
t        |
«      D ]  }|‘Œ Œ }}
}|rEt        «       }|D ]5  }
t        j                  ||
«      }t        |«      sŒ%|j!                  |«      }Œ7 n|}|rSt        |t        t        f«      s|g}|D ]5  }t        j                  ||«      }t        |«      sŒ%|j#                  |«      }Œ7 |rt$        j'                  |«      }|rt        t(        «      j'                  |«      }t+        |t,        ¬«      S c c}}
w c c}}
w )a¥   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™&ÈFÈ8‰àˆàÐà!ˆáÜ"Ô#5×#:Ñ#:Ó#<Ó=‰
ä�fœcÔ"Ü#4°VÑ#<‰Jä˜f¤hÔ/Ð/Ð/Ü#&£5ˆJØò 8�Ø×!Ñ!Ô"3°AÑ"6Õ7ð8àÔ0×5Ñ5Ó7Ñ7€Jáä%(£UÐØò 	9ˆAØ×#Ñ#Ô$4°QÑ$7Õ8ð	9à%ˆ
à'6×S !ÄÐPQÓARÒS¸2š2ÐS˜2ÐSˆÑSØ'6×S !ÄÐPQÓARÒS¸2š2ÐS˜2ÐSˆÑSáÜ›5ˆØ ò 	6ˆAÜ$Ÿ^™^¨J¸Ó:ˆNÜ�>Õ"ØŸ™ nÓ5‘ñ	6ð
 ˆáÜ˜/¬E´4¨=Ô9Ø.Ð/ˆOØ!ò 	;ˆBÜ$Ÿ^™^¨F°BÓ7ˆNÜ�>Õ"Ø×*Ñ*¨>Ó:‘ð	;ñ
 Ü&×3Ñ3°FÓ;ˆáÜÔ+Ó,×9Ñ9¸&ÓAˆä�&œlÔ+Ð+ùó5 TùÛSs   Ã#HÄHc                 ó    — t        | d|d¬«      S )NT)r†   rp   rŒ   rŽ   )r   )r†   rŒ   s     r2   r   r     s   € ô ØØØ'Øô	ð r3   c                 ó:   — | r	t         |    nt        }t        |«      S ©N)r(   r)   r   )r‹   Úall_deprecateds     r2   Úget_deprecated_modelsr©     s   € Ù=CÔ1°&Ò9ÔI[€NÜ�NÓ#Ð#r3   c                 ó(   — t        | «      }|t        v S )z" Check if a model name exists
    )r   r#   )r*   Ú	arch_names     r2   r   r     s   € ô ˜jÓ)€IØÔ*Ð*Ð*r3   Úmodule_filterc                 ó‚   — t        | «      }|r*|t        j                  |i «      vrt        d| › d|› d�«      ‚t        |   S )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Ü˜W Z LÐ0EÀmÀ_ÐTUÐVÓWÐWÜ˜iÑ(Ð(r3   c                  ó@   — t         j                  «       } t        | «      S )zI Return list of module names that contain models / model entrypoints
    )r!   r“   rš   )rZ   s    r2   r   r   -  s   € ô  ×$Ñ$Ó&€GÜ�'‹?Ðr3   Úmodule_namesc                 ó|   ‡— t        | «      Št        |t        t        t        f«      sJ ‚t        ˆfd„|D «       «      S )z£Check 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   ó4   •K  — | ]  }‰t         |   v –— Œ y ­wr§   )r!   )Ú.0Únr«   s     €r2   ú	<genexpr>z&is_model_in_modules.<locals>.<genexpr>?  s   øè ø€ ÒG°QˆyÔ-¨aÑ0Ô0ÑGùs   ƒ)r   r<   r‘   r’   r:   Úany)r*   r±   r«   s     @r2   r   r   4  s7   ø€ ô ˜jÓ)€IÜ�l¤U¬D´#Ð$6Ô7Ð7Ð7ÜÓG¸,ÔGÓGÐGr3   c                 ó   — | t         v S r§   )r$   r5   s    r2   r   r   B  s   € ØÔ.Ð.Ð.r3   Úallow_unregisteredc                 óª   — | t         v rt        t         |    «      S t        | «      \  }}|t        v rt	        d|› d|› d�«      ‚|ry t	        d|› d�«      ‚)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  sj   € ØÔ+Ñ+ÜÔ.¨zÑ:Ó;Ð;Ü)¨*Ó5�N€IˆsØÔ'Ñ'äÐ5°c°U¸&ÀÀÈ1ÐMÓNÐNÙàÜ
Ð-¨i¨[Ð8[Ð\Ó
]Ð]r3   Úcfg_keyc                 ó6   — t        | d¬«      }t        ||d«      S )zO Get a specific model default_cfg value by key. None if key doesn't exist.
    F)r¹   N)r»   rx   )r*   r¼   Úcfgs      r2   r   r   S  s   € ô ˜Z¸EÔ
B€CÜ�3˜ Ó&Ð&r3   c                 ól   — t        | «      \  }}t        |   }|D �ci c]  }|t        |   “Œ }}|S c c}w )z7 Get all pretrained cfgs for a given architecture.
    )r   r'   r&   )r*   r«   Ú_Úmodel_namesr�   r6   s         r2   r    r    Z  sD   € ô (¨
Ó3�L€IˆqÜ" 9Ñ-€KØ2=Ö>¨QˆAÔ% aÑ(Ñ(Ð>€DÐ>Ø€Kùò ?s   œ1)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   ru   r}   rƒ   r…   rŠ   Úboolr   r   r©   r   r   r   r   r   r»   r   r    r9   r3   r2   ú<module>rÊ      só  ðòó Û 	Û 
Û ß *Ý Ý ß ]× ]× ]ç 2ò€ñ *5°SÓ)9Ð �4˜˜S ™X˜Ñ&Ó 9Ø#%Ð �$�s˜C�x‘.Ó %Ø46Ð �D˜˜h s¨C xÑ0Ð0Ñ1Ó 6Ù"%£%Ð �s˜3‘xÓ 'Ø02Ð �T˜#˜}Ð,Ñ-Ó 2Ø35Ð ˜˜S -Ð/Ñ0Ó 5Ù)4°TÓ):Ð �$�s˜D ™I�~Ñ&Ó :ÙDOÐPTÓDUÐ ˜d 3¨¨S°(¸3±-Ð-?Ñ(@Ð#@ÑAÓ UØ/1Ð �D˜˜h s™mÐ+Ñ,Ó 1ñ Sð °#ð ¸uÀSÈ#ÀX¹ó ð/˜cð / có /ð  S¨%°°S¸#°X±ÀÐ0MÑ*NÐ%NÑ Oó ð@=�x  S Ñ)ð =¨h°s¸C°xÑ.@ó =ñ@¨Cð ¸Xð Ð[^ó ðH¨Sð HÀ4ÈÈXÐVYÉ]ÐHZÑC[ó Hð,W˜#ð W $ u¨S°#¨X¡Ñ"7ó Wð
˜3ó ð )+Ø(*Ø Ø13Ø!&Ø'+ñP,Ø�c˜4 ™9�nÑ%ðP,à�c˜4 ™9�nÑ%ðP,ð ðP,ð ˜s D¨¡I˜~Ñ.ð	P,ð
 ðP,ð ˜t‘nðP,ð 
ˆ#�YóP,ðh )+Ø!ñ	Ø�c˜4 ™9�nÑ%ð	àð	ð 
ˆ#�Yó	ñ$ #ð $¨t°C¸°H©~ó $ð
+˜ð + ó +ñ) ð )°X¸c±]ð )ÈhÐWZÐ\_ÐW_ÑN`ó )ð�d˜3‘ió ðHØðHØ',¨U°3¸°8©_¸dÀ3¹iÈÈSÉÐ-QÑ'RðHà	óHð/ Cð /¨Dó /ñ
^ 3ð 
^¸Dð 
^ÈHÐUbÑLcó 
^ð'¨ð '°sð '¸xÈ¹}ó 'ð¨ð °°c¸=Ð6HÑ1Iô r3   