
    RЦiu+                        S r SSKrSSK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
Jr  SSKJr  SSKJr  SSKJrJr  SSKrSSKJr  SS	KJrJr  S
SKJr  Sr\" S5      rSrSr\" \S9r\	 " S S5      5       r \RC                  SSS/S9 SCS\RD                  S\\#\RH                  " SS94   S\\%\RL                  " SSS94   SS4S jj5       r'\RC                  S S!SS!S".S#S$/S%9S\RD                  S&\\#\RH                  " S'S94   SS4S( j5       r(\RC                  S)S*/S9SDS+ j5       r)\RC                  S,S-/S9S&\\#\RH                  " S.S94   SS4S/ j5       r*S0\+\#   S1\,\#   S\\-   4S2 jr.S3\S4\S5\ SS4S6 jr/S\4S7 jr0S8\#S\4S9 jr1S8\#S\#4S: jr2S8\#S\4S; jr3\Rh                  " S<5      r5S8\#S=\#S\#4S> jr6S\#S\7\#\#\#4   4S? jr8S&\#S\#4S@ jr9SA\S0\+\#   S\-4SB jr:g)Ez0Contains helper utilities for hf CLI extensions.    N)asdict	dataclass)datetimetimezone)Path)TemporaryDirectory)	AnnotatedOptional)CLIError)get_sessiontabulate   )typer_factoryhuggingfacez~/.local/share/hf/extensionszmanifest.jsonzyManage hf CLI extensions.

Security Warning: extensions are third-party executables. Install only from sources you trust.)helpc                   p    \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S	'   \\S
'   Srg)ExtensionManifest/   ownerreporepo_id
short_nameexecutable_nameexecutable_pathtypeinstalled_atsource N)__name__
__module____qualname____firstlineno__str__annotations____static_attributes__r       ]/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/huggingface_hub/cli/extensions.pyr   r   /   s2    J
ILO
IKr&   r   installzhf extensions install hf-claudez-hf extensions install hanouticelina/hf-claude)examplesFctxr   z:GitHub extension repository in `[OWNER/]hf-<name>` format.forcez--forcezOverwrite if already installed.returnc                 R   [        U5      u  p4nU R                  5       n[        [        UR                  S0 5      R                  5       5      nXW;   a  [        SU SU S35      e[        U5      nUR                  5       (       a,  U(       d  [        SU S35      e[        R                  " U5        [        U5      n	SU SU S	U	 3n
 [        5       R                  U
S
S9nUR                  5         [!        5        n[#        U5      U	-  nUR%                  UR&                  5        [(        R*                  S:w  a  [(        R,                  " US5        [/        UUU SU 3UU	[1        [3        U5      5      S[4        R6                  " [8        R:                  5      R=                  5       SU SU 3S9	n[?        UUUS9  SSS5        [A        SU SU S35        [A        SU 35        [A        SU 35        g! [         a  n[        SU	 SU SU SU 35      UeSnAff = f! , (       d  f       Ng= f)zInstall an extension from a public GitHub repository.

Security warning: this installs a third-party executable. Install only from sources you trust.
commandszCannot install extension 'z,' because it conflicts with an existing `hf z
` command.Extension 'z1' is already installed. Use --force to overwrite.z"https://raw.githubusercontent.com//z/refs/heads/main/T)follow_redirectszFailed to download 'z' from 'z': Nnt  binaryzhttps://github.com/)	r   r   r   r   r   r   r   r   r   )extension_dirsource_executablemanifestzInstalled extension ''.zRun it with: hf zOr with: hf extensions exec )!_normalize_repo_id	find_rootsetgetattrcommandkeysr   _get_extension_direxistsshutilrmtree_get_executable_namer   getraise_for_status	Exceptionr   r   write_bytescontentosnamechmodr   r#   _get_extension_executable_pathr   nowr   utc	isoformat_persist_installed_extensionprint)r*   r   r+   r   	repo_namer   root_ctxreserved_commandsr5   r   raw_urlresponseetmp_dirtmp_executabler7   s                   r'   extension_installrZ   <   s5   & $6g#> Ej}}HGH$4$4j"EJJLM&(4`ak`llvw
 	
 'z2M[4efggm$*:6O25'9+EVWfVghGi=$$Wt$D!!# 
	g8""8#3#3477d?HH^U+$gQyk*!+ >z JK!hll3==?(q<

 	%',	
# 
. 
!%)B
78	ZL
)*	(
569  i-o->hugQykY\]^\_`aghhi 
	s%   (G. 9B>H.
H8HH
H&execT)allow_extra_argsallow_interspersed_argsignore_unknown_optionsz#hf extensions exec claude -- --helpz/hf extensions exec claude --model zai-org/GLM-5)context_settingsr)   rJ   z.Extension name (with or without `hf-` prefix).c                     [        U5      n[        U5      nUR                  5       (       d  [        SU S35      e[	        U[        U R                  5      S9n[        R                  " US9e)zExecute an installed extension.r/   ' is not installed.r   args)code)	_normalize_extension_namerL   is_filer   _execute_extension_binarylistrc   typerExit)r*   rJ   r   r   	exit_codes        r'   extension_execrl      sd      +40J4Z@O""$$ZL0CDEE)/PTUXU]U]P^_I
**)
$$r&   rh   zhf extensions listc                     [        5       n U R                  5       (       d  [        S5        g/ n[        U R	                  5       5       H  nUR                  5       (       a   UR
                  R                  S5      (       d  M:  UR
                  SS nU[        -  nSnSnUR                  5       (       aY  [        R                  " UR                  SS95      n[        UR                  SS5      5      n[        UR                  S	S5      5      nUR                  S
U 3XV/5        M     U(       d  [        S5        g[        [        U/ SQS95        g)z"List installed extension commands.zNo extensions installed.Nhf-    utf-8encodingr   r   zhf )COMMAND
REPOSITORYINSTALLED_AT)headers)_get_extensions_rootis_dirrQ   sortediterdirrJ   
startswithMANIFEST_FILENAMErf   jsonloads	read_textr#   rD   appendr   )root_dirrowsr5   r   manifest_path
repositoryr   datas           r'   extension_listr      s    $%H??()D 0 0 23##%%]-?-?-J-J5-Q-Q"''+
%(99
  ""::m55w5GHDTXXi45Jtxx;<Ls:,'BC 4  ()	(4!J
KLr&   removezhf extensions remove claudez8Extension name to remove (with or without `hf-` prefix).c                     [        U 5      n[        U5      nUR                  5       (       d  [        SU S35      e[        R
                  " U5        [        SU S35        g)zRemove an installed extension.r/   ra   zRemoved extension 'r8   N)re   r?   ry   r   rA   rB   rQ   )rJ   r   r5   s      r'   extension_remover      sZ     +40J&z2M!!ZL0CDEE
MM- 	
|2
./r&   rc   known_commandsc                    U (       d  g U S   nUR                  S5      (       a  g X!;   a  g UR                  S5      (       a  USS  OUnU(       d  g [        U5      nUR                  5       (       d  g [        U[	        U SS  5      S9$ )Nr   -rn   ro   r   rb   )r|   rL   rf   rg   rh   )rc   r   command_namer   r   s        r'   %_dispatch_unknown_top_level_extensionr      s    7Ls##%%1%<%<U%C%Cab!J4Z@O""$$$_4PTUVUWPX>ZZr&   r5   r6   r7   c                 ~   XR                   -  nU [        -  n U R                  SSS9  [        R                  " X5        [
        R                  S:w  a  [
        R                  " US5        UR                  [        R                  " [        U5      SSS9S-   S	S
9  g ! [         a    [        R                  " U SS9  e f = f)NTFparentsexist_okr2   r3      )indent	sort_keys
rq   rr   )ignore_errors)r   r}   mkdirrA   copy2rI   rJ   rK   
write_textr~   dumpsr   rF   rB   )r5   r6   r7   r   r   s        r'   rP   rP      s    #&>&>>O!$55MD59&877d?HH_e,  F8,<QRV!WZ^!^ip q m48s   BB !B<c                  N    [         R                  5       n U R                  SSS9  U $ )NTr   )EXTENSIONS_ROOT
expanduserr   )r   s    r'   rx   rx      s%    ))+HNN4$N/Or&   r   c                     [        X S9n[        5       R                  5       nUSU 3-  R                  5       nX#R                  ;  a  [	        SU  S35      eU$ )Noriginal_inputrn   Invalid extension name 'r8   )_validate_extension_short_namerx   resolver   r   )r   	safe_nameroottargets       r'   r?   r?      s[    .zUI!))+Ds9+&&//1F>>!1*R@AAMr&   c                 B    SU  3n[         R                  S:X  a  US-  nU$ )Nrn   r2   z.exe)rI   rJ   )r   rJ   s     r'   rC   rC     s'    D	ww$Kr&   c                 0    [        U 5      [        U 5      -  $ N)r?   rC   )r   s    r'   rL   rL   
  s    j),@,LLLr&   z^[A-Za-z0-9][A-Za-z0-9._-]*$r   c                &  ^ U R                  5       mT(       d  [        S5      e[        U4S jS 5       5      (       a  [        SU S35      eST;   d  ST;   a  [        SU S35      e[        R	                  T5      (       d  [        SU S35      eT$ )	NExtension name cannot be empty.c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r   ).0seprJ   s     r'   	<genexpr>1_validate_extension_short_name.<locals>.<genexpr>  s     
.+3$;+s   )r0   \r   r8   z..:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)stripr   any_ALLOWED_EXTENSION_NAME	fullmatch)r   r   rJ   s     @r'   r   r     s    D899

.+
...1.1ADEEt|sd{1.1ADEE",,T22&~&66op
 	
 Kr&   c                 t   SU ;   a  [        S5      eU R                  S5      n[        U5      S:X  a  [        nUS   nO3[        U5      S:X  a  [	        U5      (       a  Uu  p#O[        SU  S35      eUR                  S	5      (       d  [        S
U S35      eUSS  nU(       d  [        S5      e[        X@S9  X#U4$ )Nz://zEOnly GitHub repositories in `[OWNER/]hf-<name>` format are supported.r0   r   r   r   z%Expected `[OWNER/]REPO` format, got 'r8   rn   z6Extension repository name must start with 'hf-', got 'ro   z(Invalid extension repository name 'hf-'.r   )r   splitlenDEFAULT_EXTENSION_OWNERallr|   r   )r   partsr   rR   r   s        r'   r9   r9      s    ^__MM#E
5zQ'!H		UqSZZ y>wirJKK&&OPY{Z\]^^12JABB":FZ''r&   c                     U R                  5       nU(       d  [        S5      eUR                  S5      (       a  USS  OUn[        X S9$ )Nr   rn   ro   r   )r   r   r|   r   )rJ   	candidate
normalizeds      r'   re   re   8  sD    

I899"+"6"6u"="=129J)*JJr&   r   c                 &    [         R                  " [        U 5      /U-   5      $ ! [         aa  n[        R
                  S:X  d  UR                  [        R                  :w  a  e [         R                  " S[        U 5      /U-   5      s S nA$ S nAff = f)Nr2   sh)
subprocesscallr#   OSErrorrI   rJ   errnoENOEXEC)r   rc   rW   s      r'   rg   rg   @  sq    DO 45<== D77d?agg6c/&:;dBCCDs   "% 
BABBB)F)r,   N);__doc__r   r~   rI   rerA   r   dataclassesr   r   r   r   pathlibr   tempfiler   typingr	   r
   ri   huggingface_hub.errorsr   huggingface_hub.utilsr   r   
_cli_utilsr   r   r   r}   EXTENSIONS_HELPextensions_clir   r=   Contextr#   ArgumentboolOptionrZ   rl   r   r   rh   r;   intr   rP   rx   r?   rC   rL   compiler   r   tupler9   re   rg   r   r&   r'   <module>r      s#   7   	 	   ) '  ' &  + 7 % ( 56# + 
 O4 	 	 	 )7   _d;7	;7XY	[;7 T5<<	8YZZ[;7 
;7;7| 
*.5lpq-9  %	%
LM	O% 
%%$ *>)?@M AM> ,I+JK0
VW	Y0
 
0 L0([S	 [3s8 [X`adXe [*  Yj os d 3 4 S S Ms Mt M **%DE s s s ( (c3m(< (0KC KC KDt D49 D Dr&   