
    Y jV                     x   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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Jr  SSKrSSKJrJrJr  SSKJrJr  S	S
KJr  S	SKJr  Sr\" S5      rSr Sr!\" \!S9r"Sr#Sr$Sr%Sr&\RN                  " \(5      r)\
 " S S5      5       r*\"RW                  S/ SQS9 SYS\RX                  S\\-\R\                  " SS94   S\\/\R`                  " SS S94   S!S4S" jj5       r1\"RW                  S#S$SS$S%.S&S'/S(9S\RX                  S)\\-\R\                  " S*S94   S!S4S+ j5       r2\"RW                  S,S-/S9SZS. j5       r3\"RW                  S/S0/S9SZS1 j5       r4\"RW                  S2S3/S9S)\\-\R\                  " S4S94   S!S4S5 j5       r5S!\6\*   4S6 jr7S!\6\8\-\-4      4S7 jr9S8\6\-   S9\:\-   S!\;S-  4S: jr<S;\-S!\S-  4S< jr=SS=.S>\-S?\-S;\-S@\SA\-SB\-S-  S!\*4SC jjr>S>\-S?\-SA\-S;\-S!\?4
SD jr@S>\-S?\-S;\-S@\SE\?S!\*4SF jrAS>\-S?\-S;\-S@\SA\-S!\*4SG jrBS>\-S?\-SA\-SH\-S-  S!\-S-  4
SI jrCS!\4SJ jrDS;\-S!\4SK jrES>\-S?\-S!\8\-\-S-  4   4SL jrFS;\-S!\-4SM jrGS;\-S!\4SN jrHSO\S!\4SP jrISO\S;\-S!\4SQ jrJ\R                  " SR5      rLS;\-SS\-S!\-4ST jrMS\-S!\8\-\-\-4   4SU jrNS)\-S!\-4SV jrOSW\S8\6\-   S!\;4SX jrPg)[z0Contains helper utilities for hf CLI extensions.    N)asdict	dataclass)datetimetimezone)Path)	AnnotatedLiteral)CLIErrorCLIExtensionInstallErrorConfirmationError)get_sessionlogging   )typer_factory)outhuggingfacez~/.local/share/hf/extensionszmanifest.jsonzManage hf CLI extensions.

Security Warning: extensions are third-party executables or Python packages. Install only from sources you trust.)helpmainzhf-extension
   i,  c                       \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \S   \S	'   \\S
'   \\S'   Sr\S-  \S'   \	S\
SS 4S j5       rS\
SS4S jrSrg)ExtensionManifest6   ownerreporepo_id
short_nameexecutable_nameexecutable_path)binarypythontypeinstalled_atsourceNdescriptionpathreturnc                     U[         -  nUR                  5       (       d  [        SU S35      e[        R                  " UR                  5       5      n[        R                  " US   5      US'   [        S0 UD6$ )NzManifest file not found at z". Your extension may be corrupted.r"    )	MANIFEST_FILENAMEis_filer
   jsonloads	read_textr   fromisoformatr   )clsr%   manifest_pathdatas       o/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/huggingface_hub/cli/extensions.pyloadExtensionManifest.loadC   sq    00$$&&8Gijkkzz-1134'55d>6JK^ (4((    c                     U[         -  nUR                  R                  SSS9  [        U 5      nU R                  R                  5       US'   UR                  [        R                  " USSS95        g )NTparentsexist_okr"      )indent	sort_keys)	r)   parentmkdirr   r"   	isoformat
write_textr+   dumps)selfr%   r0   r1   s       r2   saveExtensionManifest.saveL   sc    00""4$"?d|#00::<^  Dd!KLr5   r(   )__name__
__module____qualname____firstlineno__str__annotations__r	   r   r$   classmethodr   r3   rC   __static_attributes__r(   r5   r2   r   r   6   s~    J
ILO
$
%%K"Kt") )!4 ) )M M$ Mr5   r   install)zhf extensions install hf-claudez-hf extensions install hanouticelina/hf-claudez(hf extensions install alvarobartt/hf-mem)examplesFctxr   z:GitHub extension repository in `[OWNER/]hf-<name>` format.forcez--forcezOverwrite if already installed.r&   c           	         [        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       n	U	(       a  U(       d  [        SU S35      e[        X4S9u  pU	(       a  [        R                  " U5        [        UUUUU
US9nUR                  R                  5       n[        U S	U S
U S35        [        SU 35        g)zInstall an extension from a public GitHub repository.

Security warning: this installs a third-party executable or Python package.
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.)r   	repo_name)r   rT   r   extension_dirbranchr$   z' extension installed successfully from /.zRun it with: hf N)_normalize_repo_id	find_rootsetgetattrcommandkeysr
   _get_extension_direxists_resolve_github_repo_infoshutilrmtree_install_extension_from_githubr!   
capitalizeprint)rO   r   rP   r   rT   r   root_ctxreserved_commandsrU   extension_existsrV   r$   manifestext_types                 r2   extension_installrl   T   s   * $6g#> Ej}}HGH$4$4j"EJJLM&(4`ak`llvw
 	
 'z2M$++-ZL0abcc3%UFm$-#H }}'')H	XJ=eWAi[PQ
RS	ZL
)*r5   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_settingsrN   namez.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.rS   ' is not installed.r   args)code)	_normalize_extension_name"_resolve_installed_executable_pathr*   r
   _execute_extension_binarylistrv   typerExit)rO   rr   r   r   	exit_codes        r2   extension_execr      sd      +40J8DO""$$ZL0CDEE)/PTUXU]U]P^_I
**)
$$r5   z	list | lszhf extensions listc            	      $   [        5        V s/ s Ha  n SU R                   3[        U R                  5      [        U R                  5      U R
                  R                  S5      U R                  S.PMc     nn [        R                  " USS9  gs  sn f )z"List installed extension commands.zhf z%Y-%m-%d)r]   r#   r!   	installedr$   r]   )id_keyN)
_list_installed_extensionsr   rI   r   r!   r"   strftimer$   r   table)rj   rowss     r2   extension_listr      s     34	 5H X0012(**+&!..77
C#//	
 5 	 	 IId9%	s   A(Bsearchzhf extensions searchc            	      $   [        5       R                  SS[         3SSSS.S[        S9n U R	                  5         U R                  5       n[        5        Vs1 s H  o"R                  iM     nn/ nUR                  S	/ 5       Hn  nUS
   nUR                  S5      (       a  USS OUnUR                  UUS   UR                  SS5      UR                  S5      =(       d    SXs;   a  SOSS.5        Mp     [        R                  " USSS0S9  gs  snf )zISearch extensions available on GitHub (tagged with 'hf-extension' topic).z*https://api.github.com/search/repositoriesztopic:starsdescd   )qsortorderper_pageT)paramsfollow_redirectstimeoutitemsrr   hf-   N	full_namestargazers_countr   r$    yes)rr   r   r   r$   r   r   right)r   
alignments)r   get_EXTENSIONS_GITHUB_TOPIC_EXTENSIONS_DOWNLOAD_TIMEOUTraise_for_statusr+   r   r   
startswithappendr   r   )responser1   mr   r   r   rT   r   s           r2   extension_searchr      s    }  4678'TZhkl,	 ! H ==?D'A'CD'C!'CIDD"%L	&/&:&:5&A&AYqr]y
"[)"4a8#xx6<"&0&=U2	
 & IId6w.@A! Es   Dzremove | rmz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.rS   rt   zRemoved extension ''.N)rx   r_   is_dirr
   rb   rc   rf   )rr   r   rU   s      r2   extension_remover      sZ     +40J&z2M!!ZL0CDEE
MM- 	
|2
./r5   c                     [         R                  5       n U R                  5       (       d  / $ / n[        U R	                  5       5       H_  nUR                  5       (       a   UR
                  R                  S5      (       d  M:   UR                  [        R                  U5      5        Ma     U$ ! [         a0  n[        R                  SUR
                   SU 35         SnAM  SnAff = f)zPReturn manifests for all validly-installed extensions, sorted by directory name.r   z'Failed to load manifest for extension '': N)EXTENSIONS_ROOT
expanduserr   sortediterdirrr   r   r   r   r3   	Exceptionloggerdebug)root_dir	manifestsrU   es       r2   r   r      s    ))+H??	I 0 0 23##%%]-?-?-J-J5-Q-Q	.33MBC	 4   	LLB=CUCUBVVYZ[Y\]^	s   $B,,
C&6%C!!C&c                      / n [        5        HP  nSUR                   S3nUR                  b  UR                   SU 3OUnU R                  UR                  U45        MR     U $ )Nz[extension ] )r   r   r$   r   r   )entriesrj   tag	help_texts       r2   "list_installed_extensions_for_helpr      sl    G.0H,,-Q/7?7K7K7Wx++,AcU3]`	++Y78 1 Nr5   rv   known_commandsc                    U (       d  g U S   nUR                  S5      (       a  g U VVs1 s H*  o3R                  S5        H  oDR                  5       iM     M,     nnnX%;   a  g UR                  S5      (       a  USS  OUnU(       d  g S n [        U5      nUb  UR                  5       (       d  g [        U[        U SS  5      S9$ s  snnf ! [         a    [        U5      n NLf = f)Nr   -|r   r   r   ru   )	r   splitstripry   r    _auto_install_official_extensionr*   rz   r{   )rv   r   command_namecmda	all_knownr   r   s           r2   $dispatch_unknown_top_level_extensionr      s    7Ls##&4MnsiinnnIM %1%<%<U%C%Cab!J#'OG<ZH o&=&=&?&?$_4PTUVUWPX>ZZ# N  G::FGs   1CC C$#C$r   c           	      T   [         SU  3p! [        U 5      nUR                  5       (       a  g [	        5       R                  SU SU 3S[        S9nUR                  S:X  a  gUR                  5         UR                  5       S   n [        R                  " S	U  S
U SU S35         [        XXUS9n[        UR                  5      R!                  5       $ ! [         a     gf = f! [         a     gf = f! [         a     gf = f! [         a    ["        R$                  " USS9   gf = f)zKTry to auto-install huggingface/hf-<name>. Returns executable path or None.r   Nhttps://api.github.com/repos/rW   Tr   r   i  default_branch'z)' is an official Hugging Face extension (z). Install it?r   rT   r   rU   rV   ignore_errors)DEFAULT_EXTENSION_OWNERr_   r   r`   r   r   r   status_coder   r+   r   confirmr   rd   r   r   r   rb   rc   )r   r   rT   rU   r   rV   rj   s          r2   r   r     sN   .#j\0B9*:6 =$$+E7!I;?!0 % 

 3&!!#!12a
|#LUGSTU^T__mno1io
 H,,-88::1        m48sL   C 3C% "#C%  C5 '-D 
C"!C"%
C21C25
DDD'&D')r$   r   rT   rU   rV   r$   c                      [        XXBS9nUb  [        XX#US9nO[        XX#US9n[	        XXES9Ul        UR                  U5        U$ ! [         a    Sn NJf = f)zLFetch, install (binary or Python), and save manifest for a GitHub extension.)r   rT   rV   r   N)r   rT   r   rU   r   r   )r   rT   rV   candidate_description)_fetch_remote_binaryr   _install_binary_extension_install_python_extension_try_fetch_remote_descriptionr$   rC   )r   rT   r   rU   rV   r$   r   rj   s           r2   rd   rd   >  s~    %Evm ,io
 -io
 9H MM- O  s   
A AAc                     [        U5      nSU  SU SU SU 3n[        5       R                  US[        S9nUR	                  5         UR
                  $ )N"https://raw.githubusercontent.com/rW   /refs/heads/Tr   )_get_executable_namer   r   r   r   content)r   rT   rV   r   r   raw_urlr   s          r2   r   r   [  sa    *:6O25'9+\RXQYYZ[jZklG}  4Ie fHr5   r   c                 F   [        U5      nUR                  SSS9  X5-  nUR                  U5        [        R                  S:w  a  [        R
                  " US5        [        U UU  SU 3UU[        U5      S[        R                  " [        R                  5      SU  SU 3S	9	$ )
NTFr7   nti  rW   r   https://github.com/	r   r   r   r   r   r   r!   r"   r#   )r   r>   write_bytesosrr   chmodr   rI   r   nowr   utc)r   rT   r   rU   r   r   r   s          r2   r   r   c  s     +:6Ou5#5O' 
ww$
%( '9+&'O,\\(,,/$UG1YK8
 
r5   c                 ,   SU  SU SU S3nUS-  nSn[         R                  " 5       n UR                  SU 35        UR                  5       (       a  [        R
                  " USS	9  UR                  SSS
9  [        R                  " S5      n	[        U5      n
U	(       as  [        R                  " U	S[        U5      /SS9  UR                  SU 35        UR                  SU 35        [        R                  " U	SSS[        U
5      U/S[        S9  O~[        R                  " SS9R!                  [        U5      5        UR                  SU 35        UR                  SU 35        [        R                  " [        U
5      SSSSSU/S[        S9  UR                  SU 35        [#        U5      n[%        Xb5      nUR'                  5       (       d  [)        SU  SU SU S35      e[+        U UU  SU 3UU[        UR-                  5       5      S[.        R0                  " [2        R4                  5      SU  SU 3S9	nSnUU(       d  [        R
                  " USS	9  $ $ ! [(         a    e [        R6                   a  n[9        S[         SU  SU S35      UeS nAf[        R:                   a%  n[9        S U  SU S!UR<                   S"35      UeS nAf[>         a  n[9        S#U  SU S$U 35      UeS nAff = f! U(       d  [        R
                  " USS	9  f f = f)%Nr   rW   z/archive/refs/heads/z.zipvenvFz Creating virtual environment in Tr   r7   uv)checkzVirtual environment created in zInstalling package from piprM   z--python)r   r   )with_pipz-mz--disable-pip-version-checkz
--no-inputzPackage installed from zInstalled package from 'z/' does not expose the required console script 'r   r    r   zPip install timed out after zs for 'z$'. See pip output above for details.z$Failed to install pip package from 'z' (exit code z$). See pip output above for details.z%Failed to set up pip extension from 'r   ) r   statusupdater`   rb   rc   r>   which_get_venv_python_path
subprocessrunrI   done_EXTENSIONS_PIP_INSTALL_TIMEOUTr   
EnvBuildercreater   #_get_venv_extension_executable_pathr*   r
   r   resolver   r   r   r   TimeoutExpiredr   CalledProcessError
returncoder   )r   rT   r   rU   rV   
source_urlvenv_dirr   r   uv_pathvenv_pythonr   venv_executablerj   r   s                  r2   r   r   ~  sQ    'ugQyk9MfXUYZJv%HIZZ\FK=8
CD!!MM-t<D59,,t$+H5NNGVS];4HKK9(DEMM4ZLABNN%JK8H*U7 OOT*11#h-@KK9(DEMM4ZLABNN$1  7 	-j\:;.z:=hS&&((*5'9+ >#$B( 
 %gQyk*!+ 7 7 9:!hll3(q<

 	  MM-t<   $$ &*+J*K7SXRYYZ[dZe f0 0
 	 (( &25'9+]STS_S_R` a0 0
 	  q&)NugUVW`Vaadefdg'hioppq MM-t< s<   HI K19JK1* K

K1K,,K11K4 4Lr   c           
          [        5       R                  SU  SU SU S[         3SS9nUR                  5         UR	                  5       nUR                  S5      n[        U[        5      (       a  U$   [        5       R                  SU  SU SU S3SS9nUR                  5         UR                  R                  5        H^  nUR                  5       nUR                  S5      (       d  M+  UR                  S5      u    pU	R                  5       R                  S	5      s  $    U$ ! [         a     Nf = f! [         a     U$ f = f)
zuTry to fetch project description either from:
- manifest.json
- pyproject.toml

Only best effort, no error handling.
r   rW   r   T)r   r$   z/pyproject.toml=z"')r   r   r)   r   r+   
isinstancerI   r   text
splitlinesr   r   	partition)
r   rT   rV   r   r   r1   r$   line_values
             r2   r   r     sZ   =$$0q<PVxWXYjXkl! % 
 	!!#}}hh}-k3'' (=$$0q<PVxWfg! % 
 	!!# MM,,.D::<D}--"nnS11{{}**511	 / ! +  "   ! 	s1   A/D$ 4A3D4 +4D4  D4 $
D10D14
EEc                  N    [         R                  5       n U R                  SSS9  U $ )NTr7   )r   r   r>   )r   s    r2   _get_extensions_rootr     s%    ))+HNN4$N/Or5   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_inputr   Invalid extension name 'r   )_validate_extension_short_namer  r   r8   r
   )r   	safe_nameroottargets       r2   r_   r_     s[    .zUI!))+Ds9+&&//1F>>!1*R@AAMr5   c                      [        5       R                  SU  SU 3S[        S9nUR                  5         UR	                  5       nUS   UR                  S5      4$ ! [
         a    [        S 4s $ f = f)Nr   rW   Tr   r   r$   )r   r   r   r   r+   r   _EXTENSIONS_DEFAULT_BRANCH)r   rT   r   r1   s       r2   ra   ra     s    
0=$$+E7!I;?!0 % 

 	!!#}}$%txx'>>> 0)4//0s   AA A0/A0c                 B    SU  3n[         R                  S:X  a  US-  nU$ )Nr   r   z.exer   rr   )r   rr   s     r2   r   r     s'    D	ww$Kr5   c                     [        U 5      n[        R                  U5      n[        UR                  5      R                  5       $ N)r_   r   r3   r   r   r   )r   rU   rj   s      r2   ry   ry   $  s6    &z2M %%m4H(()4466r5   r   c                 J    [         R                  S:X  a  U S-  S-  $ U S-  S-  $ )Nr   Scriptsz
python.exebinr    r  )r   s    r2   r   r   *  s-    	ww$)#l22eh&&r5   c                 `    [        U5      n[        R                  S:X  a  U S-  U-  $ U S-  U-  $ )Nr   r  r  )r   r   rr   )r   r   r   s      r2   r   r   0  s7    *:6O	ww$)#o55eo--r5   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seprr   s     r2   	<genexpr>1_validate_extension_short_name.<locals>.<genexpr>>  s     
.+3$;+s   )rW   \r  r   z..:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)r   r
   any_ALLOWED_EXTENSION_NAME	fullmatch)r   r  rr   s     @r2   r  r  :  s    D899

.+
...1.1ADEEt|sd{1.1ADEE",,T22&~&66op
 	
 Kr5   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.rW   r   r   r:   z%Expected `[OWNER/]REPO` format, got 'r   r   z6Extension repository name must start with 'hf-', got 'r   z(Invalid extension repository name 'hf-'.r  )r
   r   lenr   allr   r  )r   partsr   rT   r   s        r2   rY   rY   I  s    ^__MM#E
5zQ'!H		UqSZZ y>wirJKK&&OPY{Z\]^^12JABB":FZ''r5   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!  r   r   r  )r   r
   r   r  )rr   	candidate
normalizeds      r2   rx   rx   a  sD    

I899"+"6"6u"="=129J)*JJr5   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)Nr   sh)r   callrI   OSErrorr   rr   errnoENOEXEC)r   rv   r   s      r2   rz   rz   i  sq    DO 45<== D77d?agg6c/&:;dBCCDs   "% 
BABBB)F)r&   N)Q__doc__r7  r+   r   rerb   r   r   dataclassesr   r   r   r   pathlibr   typingr   r	   r|   huggingface_hub.errorsr
   r   r   huggingface_hub.utilsr   r   
_cli_utilsr   _outputr   r   r   r)   EXTENSIONS_HELPextensions_clir  r   r   r   
get_loggerrE   r   r   r]   ContextrI   ArgumentboolOptionrl   r   r   r   r   r{   r   tupler   r[   intr   r   rd   bytesr   r   r   r   r  r_   ra   r   ry   r   r   compiler*  r  rY   rx   rz   r(   r5   r2   <module>rM     s   7   	 	    ) '  %  X X 6 %  ( 56# + 
 O4# ) ! "% 			H	% M M M:    _d)+	)+XY	[)+ T5<<	8YZZ[)+ 
)+)+X 
*.5lpq-9  %	%
LM	O% 
%%$ /C.DE& F& ,B+CDB EB< 1N0OP0
VW	Y0
 
0 Q0(D):$; "DsCx,A [tCy [#c( [WZ]aWa [6     T #  	
   t :  S c V[ !/2CGQV6S=S=!S=/2S=CGS=QTS=S=l)!)!)!(+)!DG$J)!4Z)!Xd 3 4 0S 0S 0U3d
?=S 0S S 73 74 7'D 'T '.$ .C .D . **%DE s s s ( (c3m(< (0KC KC KDt D49 D Dr5   