
    Ng?                        d dl Z d dl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mZmZ d dlZd dlmZmZmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w	 d dlZd	Zn# e$ r d
ZY nw xY w	 d dl
mZ n# e$ r	 d dlmZ Y nw xY w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% d dl&m'Z'  ee"de          Z"d	Z(n# e$ r dZ"d
Z(Y nw xY w ej)        e*          Z+g dZ,dZ-dZ.dZ/dZ0d=dZ1d>dZ2d?dZ3d@dZ4de5fdZ6dee5ej7        f         fdZ8d e5d!e5fd"Z9d e5fd#Z:e-d
fd e5d!e5d$e;fd%Z<d e5d!e5d&ej=        j>        fd'Z?	 	 dAd(e5d)ee@         d*ee@         fd+ZA	 	 	 dBd,e5d)ee@         d*ee@         d-ee;ed.         f         fd/ZB	 	 	 	 	 	 	 	 	 dCd&ej=        j>        d1e5d2e5d3ee5         d4ee5         d5e;d6e;d)ee@         d7ee@         d*ee@         d-ee;ed.         f         fd8ZCd7e@d9e5fd:ZDd!e5d;ee5         fd<ZEdS )D    N)partial)Path)TemporaryDirectory)IterableOptionalUnion)
HASH_REGEXdownload_url_to_fileurlparse)get_dir)_get_torch_homeTF)Literal)__version__)filter_pretrained_cfg)create_repoget_hf_file_metadatahf_hub_download
hf_hub_urlrepo_type_and_id_from_hf_idupload_folder)EntryNotFoundErrortimm)library_namelibrary_version)get_cache_dirdownload_cached_file
has_hf_hubhf_splitload_model_config_from_hfload_state_dict_from_hfsave_for_hfpush_to_hf_hubzpytorch_model.binzmodel.safetensorszopen_clip_pytorch_model.binzopen_clip_model.safetensors c                     t          j        d          rt                              d           t	                      }| sdn| f} t          j        j        |dg| R  }t          j        |d           |S )zf
    Returns the location of the directory where models are cached (and creates it if necessary).
    TORCH_MODEL_ZOOz@TORCH_MODEL_ZOO is deprecated, please use env TORCH_HOME instead checkpointsT)exist_ok)osgetenv_loggerwarningr   pathjoinmakedirs)	child_dirhub_dir	model_dirs      L/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/models/_hub.pyr   r   8   sz    
 
y"## \Z[[[iiG#5)IWm@i@@@IK	D))))    c                 *   t          | t          t          f          r| \  } }n3t          |           }t          j                            |j                  }t          j                            t                      |          }t          j        	                    |          srt                              d                    | |                     d }|r-t          j        |          }|r|                    d          nd }t!          | |||           |S )NzDownloading: "{}" to {}
   )progress)
isinstancelisttupler   r)   r-   basenamer.   r   existsr+   infoformatr	   searchgroupr
   )url
check_hashr7   filenamepartscached_filehash_prefixrs           r3   r   r   G   s    #e}%% 0XX7##EJ//',,}99K7>>+&& O077[IIJJJ 	4!(++A()3!''!***tKS+{XNNNNr4   c                    t          | t          t          f          r| \  } }n3t          |           }t          j                            |j                  }t          j                            t                      |          }t          j        	                    |          r|rt          j        |          }|r|                    d          nd }|rt          |d          5 }t          j        |                                                                          }|d t%          |                   |k    r	 d d d            dS 	 d d d            n# 1 swxY w Y   dS dS )Nr6   rbFT)r8   r9   r:   r   r)   r-   r;   r.   r   r<   r	   r?   r@   openhashlibsha256read	hexdigestlen)	rA   rB   rC   rD   rE   rG   rF   fhds	            r3   check_cached_filerR   X   s   #e}%% 0XX7##EJ//',,}99K	w~~k"" 	 	%!(++A()3!''!***tK %+t,, % 11;;==B+3{+++,;;$% % % % % % % %;% % % % % % % % % % % % % % % t5s   "AEEEc                 @    t           s| rt          d          t           S )Nz^Hugging Face hub model specified but package not installed. Run `pip install huggingface_hub`.)_has_hf_hubRuntimeError)	necessarys    r3   r   r   l   s1     n9 nln n 	nr4   hf_idc                     |                      d          }dt          |          cxk     rdk    sn J d            |d         }t          |          dk    r|d         nd }||fS )N@r      zChf_hub id should only contain one @ character to identify revision.r6   )splitrO   )rW   	rev_splithf_model_idhf_revisions       r3   r   r   t   sx    C  Is9~~"""""""""$i"""A,K#&y>>A#5#5)B--4K##r4   	json_filec                     t          | dd          5 }|                                }d d d            n# 1 swxY w Y   t          j        |          S )NrG   zutf-8)encoding)rJ   rM   jsonloads)r`   readertexts      r3   load_cfg_from_jsonrg   }   s    	iw	/	/	/ 6{{}}              :ds   488model_idrC   c                 J    t          |           \  }}t          |||          S )N)revision)r   r   )rh   rC   r^   r_   s       r3   download_from_hfrk      s)    '11K;;GGGGr4   c                    t          d          sJ t          | d          }t          |          }d|vrV|}i }|                    d          |d<   |                    dd           |d<   d|v r|                    d          |d<   ||d<   |d         }| |d<   d	|d
<   d|v r|d         |d<   d|v r|                    d          |d<   d|v r|                    d          |d<   |                    di           }|d         }|||fS )NTconfig.jsonpretrained_cfgarchitecturenum_featureslabelslabel_names	hf_hub_idzhf-hubsourcenum_classeslabel_descriptions
model_args)r   rk   rg   popget)rh   rE   	hf_configrn   rw   
model_names         r3   r   r      sT   d"8];;K";//Iy(("	$2$6$6~$F$F	.!$2$6$6~t$L$L	.!~%%,:,>,>x,H,HN=)&4	"# /0N"*N;'N8 	!!(1-(@}% 	!!(1m(D(D}%y((/8}}=Q/R/R+,|R00J>*J:z11r4   weights_onlyc           
      4   t          d          sJ t          |           \  }}t          r{t          |          D ]k}	 t	          |||          }t
                              d|  d| d| d           t          j        	                    |d          c S # t          $ r Y hw xY wt	          |||	          }t
                              d|  d
| d           	 t          j        |d|          }n&# t          $ r t          j        |d          }Y nw xY w|S )NTrepo_idrC   rj   [z"] Safe alternative available for 'z' (as 'z&'). Loading weights using safetensors.cpu)devicerC   rj   z"] Safe alternative not found for 'z)'. Loading weights using default pytorch.)map_locationr|   )r   )r   r   _has_safetensors_get_safe_alternativesr   r+   r=   safetensorstorch	load_filer   debugload	TypeError)	rh   rC   r|   r^   r_   safe_filenamecached_safe_filerE   
state_dicts	            r3   r    r       s   
 d'11K  	3H== 	 	M#2;Q^it#u#u#u R R RH R R)R R RS S S #(223CE2RRRRR%    "+;WWWKMMuhuu(uuuvvvAZ%l[[[

 A A AZ%@@@


As$   AB
B#"B#C2 2 DDmodelc                     t          d          sJ t          |           \  }}t          |||          }|                    |          S )NTr   )r   r   r   load_pretrained)rh   rC   r   r^   r_   rE   s         r3   load_custom_from_hfr      sP    d'11K!+;WWWK  ---r4   config_pathmodel_configrw   c                    |pi }i }t          | j        dd          }|                    d          |d<   |                    d| j                  |d<   |                    d| j                  |d<   |                    dt          | dd                     }t          |t                    r|r||d<   d|v rCt          	                    d           |
                    d	|                    d                     |                    d	d           }|r)t          |t          t          t          f          sJ ||d	<   |                    d
d           }|rt          |t                    sJ ||d
<   |r||d<   ||d<   |                    |           |                    d          5 }	t!          j        ||	d           d d d            d S # 1 swxY w Y   d S )NT)remove_sourceremove_nullro   ru   rp   global_poolrq   z'labels' as a config field for is deprecated. Please use 'label_names' and 'label_descriptions'. Renaming provided 'labels' field to 'label_names'.rr   rv   rw   rn   wrZ   )indent)r   rn   rx   ru   rp   getattrr8   strr+   r,   
setdefaultdictr9   r:   updaterJ   rc   dump)
r   r   r   rw   rz   rn   global_pool_typerr   rv   rP   s
             r3   save_config_for_hfr      s]     %2LI*5+?taefffN . 2 2> B BIn+//u?PQQIm !- 0 0AS T TIn#''wumUY7Z7Z[["C(( 4-= 4#3	-  <B	C 	C 	C 	|/?/?/I/IJJJ""=$77K /+dE':;;;;; $/	- %))*>EE =,d33333*<	&' -",	,"0I\"""			#		 *!	)Qq))))* * * * * * * * * * * * * * * * * *s   %G

GGsave_directorysafe_serializationbothc                    t          d          sJ t          |          }|                    dd           |                                 }|du s|dk    r9t          s
J d            t
          j                            ||t          z             |du s|dk    rt          j	        ||t          z             |dz  }t          | |||           d S )NT)r(   parentsr   z-`pip install safetensors` to use .safetensorsFrm   )r   rw   )r   r   mkdirr   r   r   r   	save_fileHF_SAFE_WEIGHTS_NAMEsaveHF_WEIGHTS_NAMEr   )r   r   r   rw   r   tensorsr   s          r3   r!   r!     s     d.))N$555   GT!!%76%A%APP!PPPP##G^>R-RSSSU""&8F&B&B
7N_<=== =0K!	     r4   	Add modelr   commit_messagetokenrj   private	create_pr
model_cardc                    t          |||d          }t          |          \  }}}| d| }	 t          t          |d|                     d}n# t          $ r d}Y nw xY wt                      5 }t          | |||	|
           |sV|pi }|                    d          d         }t          |          dz  }t          ||          }|
                    |           t          |||||	          cd
d
d
           S # 1 swxY w Y   d
S )a5  
    Arguments:
        (...)
        safe_serialization (`bool` or `"both"`, *optional*, defaults to `False`):
            Whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`).
            Can be set to `"both"` in order to push both safe and unsafe weights.
    T)r   r   r(   /z	README.mdr~   F)r   rw   r   r[   )r   folder_pathrj   r   r   N)r   r   r   r   r   r   r!   r\   r   generate_readme
write_textr   )r   r   r   r   rj   r   r   r   r   rw   r   repo_url_
repo_owner	repo_name
has_readmetmpdirr{   readme_pathreadme_texts                       r3   r"   r"     s   * 7%4PPPH  ;8DDAz9))i))GZ+X`aaabbb

   


 
		 
%!1	
 	
 	
 	
  	0#)rJ s++B/Jv,,4K)*jAAK"";/// )
 
 
'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   !A A A 1B C>>DDr{   c                    d}|dz  }|dz  }|d|                      dd           dz  }d| v rd	| d         v r|d
z  }t          | d         d	         t          t          f          r-| d         d	         D ]}|d|                                 dz  }n'|d| d         d	                                          dz  }d| d         v r|t          | d         d         t          t          f          r-| d         d         D ]}|d|                                 dz  }n'|d| d         d                                          dz  }|dz  }|d| dz  }d| v r|d| d          dz  }d| v r|dz  }| d                                         D ]\  }}t          |t          t          f          r|d| dz  }|D ]}|d| dz  }9t          |t                    r0|d| dz  }|                                D ]\  }}|d| d| dz  }~|d| d| dz  }d| v r|dz  }|| d         z  }|dz  }d| v r|dz  }|| d         z  }|dz  }d| v rG|dz  }t          | d         t          t          f          s
| d         g}n| d         }|D ]}	|d|	 dz  }|S )Nz---
z$tags:
- image-classification
- timm
zlibrary_name: timm
z	license: licensez
apache-2.0
detailsDatasetz
datasets:
z- zPretrain Datasetz# Model card for descriptionz
## Model Details
z- **z:**
z  - z: z:** usagez
## Model Usage

comparisonz
## Model Comparison
citationz
## Citation
z
```bibtex
z
```
)ry   r8   r:   r9   loweritemsr   )
r   r{   r   dkvviki	citationscs
             r3   r   r   ]  s   K<<K))KJz~~iFFJJJJKJ9
90E#E#E}$j+I6FF 	M	*95 2 21AGGII11112 L
9 5i @ F F H HLLLLKI!666*Y/0BCeT]SS Z#I./AB 6 6A#5		#5#5#55KK6 YJy$9:L$M$S$S$U$UYYYY7K5z5555K
""9J}59999J..y)//11 
	3 
	3DAq!dE]++ 	3a. 1 1B="===0KK1At$$ 3a.ggii 7 7FB#6"#6#6#6#6#66KK7 2a22Q2222*,,z'**tz!!11z,//tZ))*Z04-@@ 	/#J/0II":.I 	4 	4A33333KKr4   returnc              #      K   | t           k    r	t          V  | t          k    r	t          V  | t           t          fvr&|                     d          r| dd         dz   V  dS dS dS )aI  Returns potential safetensors alternatives for a given filename.

    Use case:
        When downloading a model from the Huggingface Hub, we first look if a .safetensors file exists and if yes, we use it.
        Main use case is filename "pytorch_model.bin" => check for "model.safetensors" or "pytorch_model.safetensors".
    z.binNz.safetensors)r   r   HF_OPEN_CLIP_WEIGHTS_NAMEHF_OPEN_CLIP_SAFE_WEIGHTS_NAMEendswith)rC   s    r3   r   r     s       ?"""""",,,,,,,)BCCCHYHYZ`HaHaCssmn,,,,,, DCCCr4   )r#   )TF)T)F)NN)NNF)	r   NNFFNNNr   )FrK   rc   loggingr)   	functoolsr   pathlibr   tempfiler   typingr   r   r   r   	torch.hubr	   r
   r   r   ImportErrorr   safetensors.torchr   r   r   typing_extensionsr   r   timm.models._pretrainedr   huggingface_hubr   r   r   r   r   r   huggingface_hub.utilsr   rT   	getLogger__name__r+   __all__r   r   r   r   r   r   rR   r   r   r   PathLikerg   rk   r   boolr    nnModuler   r   r   r!   r"   r   r   r&   r4   r3   <module>r      s      				             ' ' ' ' ' ' , , , , , , , , , ,  @ @ @ @ @ @ @ @ @ @5!!!!!!! 5 5 5444444445   * * * *))))))))*       9 9 9 9 9 9
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 988888goFT_```OKK   OKKK '
H
%
%G G G &* 9 !>       "   (   $C $ $ $ $%R[(8"9    Hs Hc H H H H
 2  2  2  2  2J ("     <.# . .UX_ . . . . (,%)	.* .*.* tn.* TN	.* .* .* .*h (,%);@  tn TN	
 "$"78   > *#"&'+%)%);A=
 =
x=
=
 =
 }	=

 3-=
 =
 =
 tn=
 TN=
 TN=
 "$"78=
 =
 =
 =
@5 5# 5 5 5 5p-S -Xc] - - - - - -sG   A AAA A&%A&*A1 1A?>A?&B6 6	CC