
    Y jS&              	       ^   S 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Jr  SSKJr  SSKJr  SS	KJr  S
SKJr  SrSrSr\S   r\" SS9 " S S5      5       r\" SS9 " S S5      5       rS3S\S\S\S\4S jjrS4S\\   S\S-  S\\   4S jjrS\\   4S jr S3S\S\S\S\4S  jjr!S\"\\4   4S! jr#S"\\   S\S\S-  4S# jr$S$\S\4S% jr%S\S&\SS4S' jr&S(\SS4S) jr'S\S\\   4S* jr(S\S+\\   S&\SS4S, jr)S-\S.\SS4S/ jr*S\\   S\\   4S0 jr+S(\S1\"\\4   S\4S2 jr,g)5zNInternal 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.json)
up_to_date	unmanagedsource_unreachableT)frozenc                   *    \ rS rSr% \\S'   \\S'   Srg)MarketplaceSkill   name	repo_path N)__name__
__module____qualname____firstlineno__str__annotations____static_attributes__r       l/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/huggingface_hub/cli/_skills.pyr   r      s    
INr!   r   c                   H    \ rS rSr% \\S'   \\S'   \\S'   Sr\S-  \S'   Sr	g)SkillUpdateInfo"   r   	skill_dirstatusNdetailr   )
r   r   r   r   r   r   r   SkillUpdateStatusr(   r    r   r!   r"   r$   r$   "   s     
IOFC$Jr!   r$   
skill_namedestination_rootforcereturnc                     [        5       n[        5          [        U5      n[        X@5      nUc  [	        SU  S[
         S35      e[        X5XS9sSSS5        $ ! , (       d  f       g= f)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.r,   )r   r   _load_marketplace_skills_select_marketplace_skillr
   DEFAULT_SKILLS_BUCKET_ID_install_marketplace_skill)r*   r+   r,   apimarketplace_skillsskills         r"   	add_skillr8   *   sl    
,C		 5c:)*<I=*_5M4N OU U  *#6FT 
!	 	 s   9A
A&rootsselectorc           	      
   [        U 5      nUbh  UR                  5       R                  5       nU Vs/ s H$  oDR                  R                  5       U:X  d  M"  UPM&     nnU(       d  [	        SU SU S35      e[        5       n[        5          [        U5       Vs0 s H  ofR                  R                  5       U_M     nnU Vs/ s H  n[        XXU5      PM     snsSSS5        $ s  snf s  snf s  snf ! , (       d  f       g= f)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   r1   _apply_single_update)	r9   r:   
skill_dirsselector_lowerdr5   r7   r6   r&   s	            r"   update_skillsrC   8   s    (/J!)//1!+PAvv||~/Oa
P9(Cefneooqrss
,C		 E]^aEbcEbEjj..0%7EbcZdeZdY$S5GHZde 
!	  Q de 
!	 s5   !C%C%C4$C*=C4C/C4*
C44
Dc           	         [        U 5      nUR                  S5      n[        U[        5      (       d  [	        S5      e/ nU H  n[        U[
        5      (       d  M  UR                  S5      nUR                  S5      n[        U[        5      (       a  [        U[        5      (       d  Mh  UR                  [        U[        U5      S95        M     U$ )NpluginszAInvalid marketplace payload: expected a top-level 'plugins' list.r   source)r   r   )
_load_marketplace_payloadget
isinstancelistr
   dictr   appendr   _normalize_repo_path)r5   payloadrE   skillspluginr   rF   s          r"   r1   r1   G   s    ',Gkk)$Ggt$$Z[[%'F&$''zz&!H%$$$Jvs,C,C&D<PQW<XYZ  Mr!   r7   c                 D   UR                  5       R                  5       nUR                  SSS9  X!R                  -  nUR	                  5       nU(       a  U(       d  [        SU 35      eU(       aY  [        R                  " USUR                   S3S9 n[        U5      UR                  -  n[        XUS9  [        XGS9  S	S	S	5        U$  [        XUS9  U$ ! , (       d  f       U$ = f! [         a-    UR	                  5       (       a  [        R                  " U5        e f = f)
z:Install a marketplace skill into a local skills directory.Tparentsexist_okzSkill already exists: .z	.install-)dirprefix)r7   install_dir)existing_dir
staged_dirN)
expanduserresolvemkdirr   existsFileExistsErrortempfileTemporaryDirectoryr   _populate_install_dir_atomic_replace_directory	Exceptionshutilrmtree)r5   r7   r+   r,   rX   already_existstmp_dir_strrZ   s           r"   r4   r4   Y   s   '224<<>4$7"ZZ/K '')Ne 6{mDEE ((-=+JZJZI[[dFefjuk*[-=-==J!#
K%;V g cKH
  gf   MM+&s   ,C

C( 
C%(7Dc                 >   [         R                  " 5        n[        U5      S-  nU R                  [        [
        U4/SS9  [        R                  " UR                  SS95      nS S S 5        [        W[        5      (       d  [        S5      eU$ ! , (       d  f       N0= f)Nr   T)raise_on_missing_fileszutf-8)encodingz4Invalid marketplace payload: expected a JSON object.)r`   ra   r   download_bucket_filesr3   MARKETPLACE_PATHjsonloads	read_textrI   rK   r
   )r5   tmp_dir
local_pathparseds       r"   rG   rG   u   s    		$	$	&'']%77
!!$
+,#' 	" 	

 J00'0BC 
' fd##MNNM 
'	&s   AB
BrO   c                     UR                  5       R                  5       nU  H%  nUR                  R                  5       U:X  d  M#  Us  $    g N)r=   r>   r   )rO   r:   rA   r7   s       r"   r2   r2      s@    ^^%++-N::/L  r!   pathc                     U R                  5       nUR                  S5      (       a  USS  nUR                  S5      (       a  M  UR                  S5      nU(       d  [        S5      eU$ )Nz./r   /z-Invalid marketplace entry: empty source path.)r=   
startswithr
   )rv   
normalizeds     r"   rM   rM      sa    J



%
%^
 


%
%!!#&JFGGr!   rX   c                     UR                  SSS9  [        X5      n[        XX25        [        U5        U[        -  R                  5         g )NTrR   )r]   _list_skill_files_download_skill_files_validate_installed_skill_dirMANAGED_MARKER_FILENAMEtouch)r5   r7   rX   bucket_filess       r"   rb   rb      sC    dT2$S0L#l@!+.**113r!   r&   c                 T    U S-  nUR                  5       (       d  [        SU 35      eg )NzSKILL.mdz%Installed skill is missing SKILL.md: )is_fileRuntimeError)r&   
skill_files     r"   r~   r~      s3    Z'JB:,OPP  r!   c                     UR                   R                  S5      nU R                  [        USS9 Vs/ s H  n[	        U[
        5      (       d  M  UPM     nnU(       d  [        SU S[         S35      eU$ s  snf )zAList all files under `skill.repo_path` in the marketplace bucket.rx   T)rW   	recursivezPath 'z' not found in bucket ''.)r   rstriplist_bucket_treer3   rI   r	   FileNotFoundError)r5   r7   rW   itemfiless        r"   r|   r|      s    __##C(F (()A&\`(aaDdJ' 	a 
 
 &0GH`Gaac deeLs   A7A7r   c                    UR                   R                  S5      nU S3n/ nU H  nUR                  R                  U5      (       d  M%  UR                  [	        U5      S nUR
                  " [        U5      R                  6 n	U	R                  R                  SSS9  UR                  Xy45        M     U(       d  [        SU S[         S35      eU R                  [        U5        g)z)Download bucket files into `install_dir`.rx   NTrR   zNo files found under 'z' in bucket 'r   )r   r   rv   ry   lenjoinpathr   partsparentr]   rL   r   r3   rl   )
r5   r7   r   rX   rW   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!   rY   rZ   c                 B   UR                   U R                   S3-  n U R                  U5        UR                  U 5        [        R                  " U5        g ! [
         a=    UR                  5       (       a&  U R                  5       (       d  UR                  U 5        e f = f)Nz.backup)r   r   renamere   rf   rd   r^   )rY   rZ   
backup_dirs      r"   rc   rc      s    ""(9(9':'%BBJJ','j! |':':'<'<l+s   8A ABc                    [        5       n/ nU  H  nUR                  5       R                  5       nUR                  5       (       d  M8  [	        UR                  5       5       H  nUR                  R                  S5      (       a  M%  UR                  5       (       d  UR                  5       (       d  MQ  UR                  5       nXQ;   d  UR                  5       (       d  M}  UR                  U5        UR                  U5        M     M     U$ )NrU   )setr[   r\   is_dirsortediterdirr   ry   
is_symlinkaddrL   )r9   seen
discoveredrootchildresolveds         r"   r<   r<      s    eDJ ((*{{}}DLLN+Ezz$$S))<<>>%*:*:*<*<}}Hx'8'8HHXh' ,	  r!   r6   c           	         [        UR                  USS9nU[        -  R                  5       (       d  U$ UR	                  UR                  R                  5       5      nUc   [        USSUR                   S[         S3S9$  [        XUR                  SS	9  [        US
S9$ ! [         a  n[        US[        U5      S9s S nA$ S nAff = f)Nr   )r   r&   r'   r   r/   z' is no longer available in rU   )r'   r(   Tr0   r   )r'   )r$   r   r   r^   rH   r>   r   r3   r4   r   rd   r   )r5   r&   r6   baser7   excs         r"   r?   r?      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   B   
C*C=CC)Fru   )-__doc__rn   re   r`   dataclassesr   r   pathlibr   r   typingr   r   huggingface_hub._bucketsr	   huggingface_hub.errorsr
   utilsr   
_cli_utilsr   r3   rm   r   r)   r   r$   r   boolr8   rJ   rC   r1   r4   rK   rG   r2   rM   rb   r~   r|   r}   rc   r<   r?   r   r!   r"   <module>r      s,   T    * '  / + ) " 0 % 
 4 KL  $  
 $  U# U Ud Ut Ufd fsTz fT/EZ fT*:%; $+; t \` mq 8d38n d+;&<  P`cgPg s s 4&6 4T 4d 4QT Qd Q
"2 
tJ7G 
H&6 HtJ?O H^b Hgk H0	D 	d 	t 	4: $t* (. .4M]H]C^ .cr .r!   