+
    &j>'                        R t ^ RIt^ RIt^ RIt^ RIHtHt ^ RIHtH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ^RIHt ^RIHt R	tR
tRt]R.,          t]! RR7       ! R R4      4       t]! RR7       ! R R4      4       tR/R R lltR0R R lltR R ltR/R R lltR R ltR R lt R R lt!R  R! lt"R" R# lt#R$ R% lt$R& R' lt%R( R) lt&R* R+ lt'R, R- lt(R# )1zNInternal helpers for Hugging Face marketplace skill installation and upgrades.N)	dataclassreplace)PathPurePosixPath)AnyLiteral)
BucketFile)CLIError)disable_progress_bars)
get_hf_apizhuggingface/skillsmarketplace.jsonz.hf-skill-manifest.jsonT)frozenc                   0   a  ] tR t^t o RtV 3R ltRtV tR# )MarketplaceSkillNc                L   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ R,          ;R&   # )   name	repo_pathNdescriptionstr)format__classdict__s   "s/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/huggingface_hub/cli/_skills.py__annotate__MarketplaceSkill.__annotate__   s,     
I  N  t"	      )__name__
__module____qualname____firstlineno__r   __annotate_func____static_attributes____classdictcell__r   s   @r   r   r      s      #K	  r   r   c                   0   a  ] tR t^#t o RtV 3R ltRtV tR# )SkillUpdateInfoNc                X   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[ R,          ;R&   # )r   r   	skill_dirstatusNdetail)r   r   SkillUpdateStatus)r   r   s   "r   r   SkillUpdateInfo.__annotate__#   s9     
I  O  	 
 $J r   r   )r   r   r    r!   r+   r"   r#   r$   r%   s   @r   r'   r'   #   s     
 F  r   r'   c                H    V ^8  d   QhR\         R\        R\        R\        /# )r   
skill_namedestination_rootforcereturn)r   r   bool)r   s   "r   r   r   +   s.     U U# U Ud Ut Ur   c           	         \        4       p\        4       ;_uu_ 4        \        V4      p\        W@4      pVf   \	        RV  R\
         R24      h\        W5WR7      uuRRR4       #   + '       g   i     R# ; i)z3Resolve a marketplace skill by name and install it.NSkill 'z' not found in zD. Try `hf skills add` to install `hf-cli` or use a known skill name.r1   )r   r
   _load_marketplace_skills_select_marketplace_skillr	   DEFAULT_SKILLS_BUCKET_ID_install_marketplace_skill)r/   r0   r1   apimarketplace_skillsskills   &&&   r   	add_skillr>   +   sr    
,C		 	 5c:)*<I=*_5M4N OU U  *#6FT 
!	 	 	 s   =A%%A6	c                v    V ^8  d   QhR\         \        ,          R\        R,          R\         \        ,          /# )r   rootsselectorNr2   )listr   r   r'   )r   s   "r   r   r   9   s3     f fd fsTz fT/EZ fr   c           
     "   \        V 4      pVej   VP                  4       P                  4       pV Uu. uF%  qDP                  P                  4       V8X  g   K#  VNK'  	  ppV'       g   \	        RV RV R24      h\        4       p\        4       ;_uu_ 4        \        V4       Uu/ uF  qfP                  P                  4       VbK  	  ppV Uu. uF  p\        WXV4      NK  	  upuuRRR4       # u upi u upi u upi   + '       g   i     R# ; i)z;Re-sync managed marketplace skill installs from the bucket.NzNo installed skill matches 'z"'. Install it with `hf skills add z`.)	_iter_unique_skill_dirsstriplowerr   r	   r   r
   r7   _apply_single_update)	r@   rA   
skill_dirsselector_lowerdr;   r=   r<   r)   s	   &&       r   update_skillsrK   9   s    (/J!)//1!+PAvv||~/Oaa
P9(Cefneooqrss
,C		 	 E]^aEbcEbEjj..0%7EbcZdeZdY$S5GHZde 
!	  Q de 
!	 	 s5    C.C.C=##C3C=C8!C=3
C==D	c                :    V ^8  d   QhR\         \        ,          /# r   r2   )rB   r   )r   s   "r   r   r   H   s      T*:%; r   c                    \        V 4      pVP                  R 4      p\        V\        4      '       g   \	        R4      h. pV F  p\        V\
        4      '       g   K  VP                  R4      pVP                  R4      p\        V\        4      '       d   \        V\        4      '       g   Kk  VP                  R4      pTP                  \        T\        V4      \        V\        4      '       d   TMRR7      4       K  	  V# )pluginszAInvalid marketplace payload: expected a top-level 'plugins' list.r   sourcer   N)r   r   r   )
_load_marketplace_payloadget
isinstancerB   r	   dictr   appendr   _normalize_repo_path)r;   payloadrO   skillspluginr   rP   r   s   &       r   r7   r7   H   s    ',Gkk)$Ggt$$Z[[%'F&$''zz&!H%$$$Jvs,C,Cjj/.v6+5k3+G+GKT	
  Mr   c                H    V ^8  d   QhR\         R\        R\        R\        /# )r   r=   r0   r1   r2   )r   r   r3   )r   s   "r   r   r   a   s+      +; t \` mq r   c                   VP                  4       P                  4       pVP                  RRR7       W!P                  ,          pVP	                  4       pV'       d   V'       g   \        RV 24      hV'       do   \        P                  ! VRVP                   R2R7      ;_uu_ 4       p\        V4      VP                  ,          p\        WVR7       \        WGR7       R	R	R	4       V#  \        WVR7       V#   + '       g   i     T# ; i  \         d/    TP	                  4       '       d   \        P                  ! T4       h i ; i)
z:Install a marketplace skill into a local skills directory.Tparentsexist_okzSkill already exists: .z	.install-)dirprefix)r=   install_dir)existing_dir
staged_dirN)
expanduserresolvemkdirr   existsFileExistsErrortempfileTemporaryDirectoryr   _populate_install_dir_atomic_replace_directory	Exceptionshutilrmtree)r;   r=   r0   r1   rb   already_existstmp_dir_strrd   s   &&&&    r   r:   r:   a   s   '224<<>4$7"ZZ/K '')Ne 6{mDEE ((-=+JZJZI[[dFeffjuk*[-=-==J!#
K%;V g cKH
  gf   MM+&s   (6C8)D 8D		 E-Ec                F    V ^8  d   QhR\         \        \        3,          /# rM   )rT   r   r   )r   s   "r   r   r   }   s      d38n r   c                 h   \         P                  ! 4       ;_uu_ 4       p\        V4      R ,          pV P                  \        \
        V3.RR7       \        P                  ! VP                  RR7      4      pRRR4       \        X\        4      '       g   \        R4      hV#   + '       g   i     L3; i)r   T)raise_on_missing_fileszutf-8)encodingNz4Invalid marketplace payload: expected a JSON object.)rj   rk   r   download_bucket_filesr9   MARKETPLACE_PATHjsonloads	read_textrS   rT   r	   )r;   tmp_dir
local_pathparseds   &   r   rQ   rQ   }   s    		$	$	&	&'']%77
!!$
+,#' 	" 	

 J00'0BC 
' fd##MNNM 
'	&s   AB!!B1	c                `    V ^8  d   QhR\         \        ,          R\        R\        R,          /# )r   rX   rA   r2   N)rB   r   r   )r   s   "r   r   r      s.      d+;&<  P`cgPg r   c                     VP                  4       P                  4       pV  F&  pVP                  P                  4       V8X  g   K$  Vu # 	  R # N)rE   rF   r   )rX   rA   rI   r=   s   &&  r   r8   r8      s@    ^^%++-N::/L  r   c                0    V ^8  d   QhR\         R\         /# )r   pathr2   r   )r   s   "r   r   r      s      s s r   c                     V P                  4       pVP                  R 4      '       d   VR,          pK"  VP                  R4      pV'       g   \        R4      hV# )z./:r   NN/z-Invalid marketplace entry: empty source path.)rE   
startswithr	   )r   
normalizeds   & r   rV   rV      sL    J



%
%^
!!#&JFGGr   c                4    V ^8  d   QhR\         R\        RR/# )r   r=   rb   r2   N)r   r   )r   s   "r   r   r      s"     4 4&6 4T 4d 4r   c                     VP                  R R R7       \        W4      p\        WW24       \        V4       V\        ,          P                  4        R# )Tr\   N)rg   _list_skill_files_download_skill_files_validate_installed_skill_dirMANAGED_MARKER_FILENAMEtouch)r;   r=   rb   bucket_filess   &&& r   rl   rl      sC    dT2$S0L#l@!+.**113r   c                (    V ^8  d   QhR\         RR/# )r   r)   r2   Nr   )r   s   "r   r   r      s     Q QT Qd Qr   c                 `    V R ,          pVP                  4       '       g   \        RV 24      hR# )zSKILL.mdz%Installed skill is missing SKILL.md: N)is_fileRuntimeError)r)   
skill_files   & r   r   r      s3    Z'JB:,OPP  r   c                F    V ^8  d   QhR\         R\        \        ,          /# )r   r=   r2   )r   rB   r   )r   s   "r   r   r      s      
 
"2 
tJ7G 
r   c                    VP                   P                  R4      pV P                  \        VRR7       Uu. uF  p\	        V\
        4      '       g   K  VNK  	  ppV'       g   \        RV R\         R24      hV# u upi )zAList all files under `skill.repo_path` in the marketplace bucket.r   T)ra   	recursivezPath 'z' not found in bucket ''.)r   rstriplist_bucket_treer9   rS   r   FileNotFoundError)r;   r=   ra   itemfiless   &&   r   r   r      s    __##C(F (()A&\`(aaDdJ' 	a 
 
 &0GH`Gaac deeLs   A;A;c                V    V ^8  d   QhR\         R\        \        ,          R\        RR/# )r   r=   r   rb   r2   N)r   rB   r   r   )r   s   "r   r   r      s6     H H&6 HtJ?O H^b Hgk Hr   c                   VP                   P                  R4      pV R2p. pV F  pVP                  P                  V4      '       g   K&  VP                  \	        V4      R pVP
                  ! \        V4      P                  !  p	V	P                  P                  RRR7       VP                  Wy34       K  	  V'       g   \        RV R\         R24      hV P                  \        V4       R# )z)Download bucket files into `install_dir`.r   NTr\   zNo files found under 'z' in bucket 'r   )r   r   r   r   lenjoinpathr   partsparentrg   rU   r   r9   rw   )
r;   r=   r   rb   ra   prefix_with_slashdownload_specsbucket_filerelative
local_files
   &&&&      r   r   r      s    __##C(F!(! ACN**+<==##C(9$:$<= ))=+B+H+HI
t<{78  "8NfMggi jkk6Gr   c                4    V ^8  d   QhR\         R\         RR/# )r   rc   rd   r2   Nr   )r   s   "r   r   r      s!     	 	D 	d 	t 	r   c                 R   VP                   V P                   R 2,          p V P                  V4       VP                  V 4       \        P                  ! V4       R#   \
         d@    TP                  4       '       d(   T P                  4       '       g   TP                  T 4       h i ; i)z.backupN)r   r   renamero   rp   rn   rh   )rc   rd   
backup_dirs   && r   rm   rm      s    ""(9(9':'%BBJJ','j! |':':'<'<l+s   8A  B&=B&B&c                \    V ^8  d   QhR\         \        ,          R\         \        ,          /# )r   r@   r2   )rB   r   )r   s   "r   r   r      s"      4: $t* r   c                    \        4       p. pV  F  pVP                  4       P                  4       pVP                  4       '       g   K9  \	        VP                  4       4       F  pVP                  P                  R 4      '       d   K&  VP                  4       '       g   VP                  4       '       g   KT  VP                  4       pWQ9   g   VP                  4       '       g   K  VP                  V4       VP                  V4       K  	  K  	  V# )r_   )setre   rf   is_dirsortediterdirr   r   
is_symlinkaddrU   )r@   seen
discoveredrootchildresolveds   &     r   rD   rD      s    eDJ ((*{{}}DLLN+Ezz$$S))<<>>%*:*:*<*<}}Hx'8'8HHXh' ,	  r   c                ^    V ^8  d   QhR\         R\        \        \        3,          R\        /# )r   r)   r<   r2   )r   rT   r   r   r'   )r   s   "r   r   r      s-     . . .4M]H]C^ .cr .r   c           	         \        VP                  VR R7      pV\        ,          P                  4       '       g   V# VP	                  VP                  P                  4       4      pVf$   \        VRRVP                   R\         R2R7      #  \        WVP                  RR	7       \        TR
R7      #   \         d"   p\        TR\        T4      R7      u Rp?# Rp?ii ; i)	unmanaged)r   r)   r*   Nsource_unreachabler5   z' is no longer available in r_   )r*   r+   Tr6   
up_to_date)r*   )r'   r   r   rh   rR   rF   r   r9   r:   r   rn   r   )r;   r)   r<   baser=   excs   &&&   r   rG   rG      s    	)KXD//7799""9>>#7#7#9:E}'Y^^,,HIaHbbcd
 	
K"3y/?/?tL 4--  Kt$8SJJKs   B2 2C=CCC)r   r   r   )Fr   ))__doc__ry   ro   rj   dataclassesr   r   pathlibr   r   typingr   r   huggingface_hub._bucketsr   huggingface_hub.errorsr	   utilsr
   
_cli_utilsr   r9   rx   r   r,   r   r'   r>   rK   r7   r:   rQ   r8   rV   rl   r   r   r   rm   rD   rG   r   r   r   <module>r      s    T    * '  / + ) " 0 % 
 4 KL  $# # # $  Uf284Q
H0	(.r   