Ë
    ÂÓ^jf/  ã                   ó¾  — d Z 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m	Z	 ddl
mZmZ ddlmZmZ ddlmZ ddlmZ d	d
lmZ ddlmZ dZdZdZdZed   Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Zd;dedede defd„Z!d;dedede defd„Z"d<de#e   d edz  d!ede#e   fd"„Z$de#e   fd#„Z%d;d$edede defd%„Z& ejN                  d&«      Z(	 d;d'eded(eegdf   de def
d)„Z)de*eef   fd*„Z+d+e#e   d ededz  fd,„Z,d-edefd.„Z-d/eddfd0„Z.d$ede#e   fd1„Z/d$ed2e#e   d3eddfd4„Z0d5ed6eddfd7„Z1de#e   de#e   fd8„Z2d/ed9e*eef   d!edefd:„Z3y)=zNInternal helpers for Hugging Face marketplace skill installation and upgrades.é    N)ÚCallable)Ú	dataclassÚreplace)ÚPathÚPurePosixPath)ÚAnyÚLiteral)Ú
BucketFile)ÚCLIErroré   )Údisable_progress_barsé   )Ú
get_hf_apizhf-clizhuggingface/skillsúmarketplace.jsonz.hf-skill-manifest.json)Ú
up_to_dateÚ	unmanagedÚsource_unreachableT)Úfrozenc                   ó6   — e Zd ZU eed<   eed<   dZedz  ed<   y)ÚMarketplaceSkillÚnameÚ	repo_pathNÚdescription)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   © ó    úf/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/cli/_skills.pyr   r      s   … à
ƒIØƒNØ"€K��t‘Ô"r    r   c                   ó@   — e Zd ZU eed<   eed<   eed<   dZedz  ed<   y)ÚSkillUpdateInfor   Ú	skill_dirÚstatusNÚdetail)r   r   r   r   r   r   ÚSkillUpdateStatusr&   r   r    r!   r#   r#   &   s    … à
ƒIØƒOØÓØ€FˆC�$‰JÔr    r#   Ú
skill_nameÚdestination_rootÚforceÚreturnc                 óÒ   — t        «       }t        «       5  t        |«      }t        || «      }|€t	        d| › dt
        › d�«      ‚t        ||||¬«      cddd«       S # 1 sw Y   yxY w)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_skillr6   .   s   € ä
‹,€CÜ	Ó	 ñ UÜ5°cÓ:ÐÜ)Ð*<¸jÓIˆØˆ=ÜØ˜*˜ _Ô5MÐ4Nð OUð Uóð ô *¨#¨uÐ6FÈeÔT÷U÷ Uò Uús   •>AÁA&Úcontentc                 óF   ‡ — dt         ddfˆ fd„}t        t        |||¬«      S )zXInstall the `hf-cli` skill from locally generated SKILL.md content (no bucket download).Úinstall_dirr+   Nc                 ó†   •— | j                  dd¬«       | dz  j                  ‰d¬«       | t        z  j                  «        y )NT©ÚparentsÚexist_okúSKILL.mdúutf-8©Úencoding)ÚmkdirÚ
write_textÚMANAGED_MARKER_FILENAMEÚtouch)r9   r7   s    €r!   Úpopulatez)install_generated_skill.<locals>.populate?   s@   ø€ Ø×Ñ $°ÐÔ6Ø	�zÑ	!×-Ñ-¨gÀÐ-ÔHØ	Ô.Ñ	.×5Ñ5Õ7r    ©rF   r*   )r   Ú_install_skillÚDEFAULT_SKILL_ID)r7   r)   r*   rF   s   `   r!   Úinstall_generated_skillrJ   <   s,   ø€ ð8œdð 8 tõ 8ô
 Ô*Ð,<ÀxÐW\Ô]Ð]r    ÚrootsÚselectorÚhf_cli_contentc          	      ó  — t        | «      }|�_|j                  «       j                  «       }|D �cg c]"  }|j                  j                  «       |k(  sŒ!|‘Œ$ }}|st	        d|› d|› d�«      ‚t        d„ |D «       «      }d}i }|rNt        «       }t        «       5  t        |«      D �	ci c]  }	|	j                  j                  «       |	“Œ }}	ddd«       |D �
cg c]  }
t        ||
||«      ‘Œ c}
S c c}w c c}	w # 1 sw Y   Œ/xY wc c}
w )zgRe-sync managed skill installs (`hf-cli` is rewritten from `hf_cli_content`, the rest from the bucket).NzNo installed skill matches 'z"'. Install it with `hf skills add z`.c              3   ót   K  — | ]0  }|j                   t        k7  xr |t        z  j                  «       –— Œ2 y ­w©N)r   rI   rD   Úexists)Ú.0Úds     r!   ú	<genexpr>z update_skills.<locals>.<genexpr>Q   s2   è ø€ ÒvÐfg˜AŸF™FÔ&6Ñ6Òa¸AÔ@WÑ<W×;_Ñ;_Ó;aÓaÑvùs   ‚68)
Ú_iter_unique_skill_dirsÚstripÚlowerr   r   Úanyr   r   r/   Ú_apply_single_update)rK   rL   rM   Ú
skill_dirsÚselector_lowerrS   Úneeds_marketplacer3   r4   r5   r$   s              r!   Úupdate_skillsr]   G   s  € ä(¨Ó/€JØÐØ!Ÿ™Ó)×/Ñ/Ó1ˆØ!+ÖP˜A¨q¯v©v¯|©|«~ÀÓ/O’aÐPˆ
ÐPÙÜÐ9¸(¸ÐCeÐfnÐeoÐoqÐrÓsÐsô ÑvÐkuÔvÓvÐØ
€CØ68ÐÙÜ‹lˆÜ"Ó$ñ 	hÜIaÐbeÓIfÖ!gÀ %§*¡*×"2Ñ"2Ó"4°eÑ";Ð!gÐÐ!g÷	hð gqÖqÐYbÔ   iÐ1CÀ^ÕTÒqÐqùò Qùò "h÷	hð 	hüò rs/   °"C/ÁC/ÂC9Â'"C4Ã	C9ÃDÃ4C9Ã9Dc                 óÀ  — t        | «      }|j                  d«      }t        |t        «      st	        d«      ‚g }|D ]Ÿ  }t        |t
        «      sŒ|j                  d«      }|j                  d«      }t        |t        «      rt        |t        «      sŒW|j                  d«      }|j                  t        |t        |«      t        |t        «      r|nd ¬«      «       Œ¡ |S )NÚpluginszAInvalid marketplace payload: expected a top-level 'plugins' list.r   Úsourcer   )r   r   r   )
Ú_load_marketplace_payloadÚgetÚ
isinstanceÚlistr   Údictr   Úappendr   Ú_normalize_repo_path)r3   Úpayloadr_   ÚskillsÚpluginr   r`   r   s           r!   r/   r/   \   sÅ   € Ü'¨Ó,€GØ�k‰k˜)Ó$€GÜ�gœtÔ$ÜÐZÓ[Ð[à%'€FØò 
ˆÜ˜&¤$Ô'ØØ�z‰z˜&Ó!ˆØ—‘˜HÓ%ˆÜ˜$¤Ô$¬J°v¼sÔ,CØØ—j‘j Ó/ˆØ�‰ÜØÜ.¨vÓ6Ü+5°kÄ3Ô+G™KÈTôõ	
ð
ð €Mr    r5   c                 óV   ‡ ‡— dt         ddfˆ ˆfd„}t        ‰j                  |||¬«      S )z:Install a marketplace skill into a local skills directory.r9   r+   Nc                 ó¤   •— | j                  dd¬«       t        ‰‰«      }t        ‰‰|| «       t        | «       | t        z  j                  «        y )NTr;   )rB   Ú_list_skill_filesÚ_download_skill_filesÚ_validate_installed_skill_dirrD   rE   )r9   Úbucket_filesr3   r5   s     €€r!   rF   z,_install_marketplace_skill.<locals>.populatex   sJ   ø€ Ø×Ñ $°ÐÔ6Ü(¨¨eÓ4ˆÜ˜c 5¨,¸ÔDÜ% kÔ2Ø	Ô.Ñ	.×5Ñ5Õ7r    rG   )r   rH   r   )r3   r5   r)   r*   rF   s   ``   r!   r2   r2   u   s/   ù€ ð8œdð 8 tö 8ô ˜%Ÿ*™*Ð&6ÀÐQVÔWÐWr    z[A-Za-z0-9][A-Za-z0-9._-]*r   rF   c                 óN  — t         j                  | «      st        d| › d�«      ‚|j                  «       j	                  «       }|j                  dd¬«       || z  }|j                  «       }|r|st        d|› �«      ‚|r]t        j                  |d|j                  › d�¬«      5 }t        |«      |j                  z  } ||«       t        ||¬	«       d
d
d
«       |S 	  ||«       |S # 1 sw Y   |S xY w# t        $ r' |j                  «       rt        j                  |«       ‚ w xY w)aÅ  Install a skill into ``destination_root`` by calling ``populate(install_dir)`` to fill it.

    Used by both the marketplace install (populate = download from bucket) and the
    locally-generated install (populate = write content). When the install already
    exists and ``force`` is set, the new content is staged in a sibling tempdir and
    atomically swapped in, so the existing install stays intact if ``populate``
    fails halfway through.
    zInvalid skill name 'ú'.Tr;   zSkill already exists: ú.z	.install-)ÚdirÚprefix)Úexisting_dirÚ
staged_dirN)Ú_VALID_SKILL_NAMEÚ	fullmatchr   Ú
expanduserÚresolverB   rQ   ÚFileExistsErrorÚtempfileÚTemporaryDirectoryr   r   Ú_atomic_replace_directoryÚ	ExceptionÚshutilÚrmtree)r   r)   rF   r*   r9   Úalready_existsÚtmp_dir_strrw   s           r!   rH   rH   …   s4  € ô  ×&Ñ& tÔ,ÜÐ-¨d¨V°2Ð6Ó7Ð7Ø'×2Ñ2Ó4×<Ñ<Ó>ÐØ×Ñ 4°$ÐÔ7Ø" TÑ)€KØ ×'Ñ'Ó)€Ná™eÜÐ 6°{°mÐDÓEÐEáÜ×(Ñ(Ð-=ÈÈ+×JZÑJZÐI[Ð[dÐFeÔfð 	WÐjuÜ˜kÓ*¨[×-=Ñ-=Ñ=ˆJÙ�ZÔ Ü%°;È:ÕV÷	Wð ÐðÙ�Ôð
 Ð÷	Wð Ðûô ò Ø×ÑÔÜ�M‰M˜+Ô&Øðús   Â$.C'ÃC4 Ã'C1Ã40D$c                 ó2  — t        j                  «       5 }t        |«      dz  }| j                  t        t
        |fgd¬«       t        j                  |j                  d¬«      «      }d d d «       t        t        «      st        d«      ‚|S # 1 sw Y   Œ&xY w)Nr   T)Úraise_on_missing_filesr?   r@   z4Invalid marketplace payload: expected a JSON object.)r}   r~   r   Údownload_bucket_filesr1   ÚMARKETPLACE_PATHÚjsonÚloadsÚ	read_textrc   re   r   )r3   Útmp_dirÚ
local_pathÚparseds       r!   ra   ra   ¯   s—   € Ü	×	$Ñ	$Ó	&ð D¨'Ü˜'“]Ð%7Ñ7ˆ
Ø×!Ñ!Ü$Ü 
Ð+Ð,Ø#'ð 	"ô 	
ô
 —‘˜J×0Ñ0¸'Ð0ÓBÓCˆ÷Dô �fœdÔ#ÜÐMÓNÐNØ€M÷Dð Dús   •ABÂBri   c                 ó�   — |j                  «       j                  «       }| D ]#  }|j                  j                  «       |k(  sŒ!|c S  y rP   )rV   rW   r   )ri   rL   r[   r5   s       r!   r0   r0   ¾   sE   € Ø—^‘^Ó%×+Ñ+Ó-€NØò ˆØ�:‰:×ÑÓ Ó/ØŠLðð r    Úpathc                 ó²   — | j                  «       }|j                  d«      r|dd  }|j                  d«      rŒ|j                  d«      }|st        d«      ‚|S )Nz./r   ú/z-Invalid marketplace entry: empty source path.)rV   Ú
startswithr   )r�   Ú
normalizeds     r!   rg   rg   Æ   s[   € Ø—‘“€JØ
×
Ñ
 Ô
%Ø  �^ˆ
ð ×
Ñ
 Õ
%à×!Ñ! #Ó&€JÙÜÐFÓGÐGØÐr    r$   c                 óJ   — | dz  }|j                  «       st        d|› �«      ‚y )Nr>   z%Installed skill is missing SKILL.md: )Úis_fileÚRuntimeError)r$   Ú
skill_files     r!   ro   ro   Ð   s0   € Ø˜ZÑ'€JØ×ÑÔÜÐBÀ:À,ÐOÓPÐPð  r    c                 óà   — |j                   j                  d«      }| j                  t        |d¬«      D �cg c]  }t	        |t
        «      r|‘Œ }}|st        d|› dt        › d�«      ‚|S c c}w )zAList all files under `skill.repo_path` in the marketplace bucket.r’   T)ru   Ú	recursivezPath 'z' not found in bucket 'rr   )r   ÚrstripÚlist_bucket_treer1   rc   r
   ÚFileNotFoundError)r3   r5   ru   ÚitemÚfiless        r!   rm   rm   Ö   s€   € à�_‰_×#Ñ# CÓ(€Fð ×(Ñ(Ô)AÈ&Ð\`Ð(ÓaöàÜ�dœJÔ'ò 	ð€Eð ñ
 Ü &¨¨Ð0GÔH`ÐGaÐacÐ dÓeÐeØ€Lùòs   ¶A+rŸ   r9   c                 ó¾  — |j                   j                  d«      }|› d�}g }|D ]ˆ  }|j                  j                  |«      sŒ|j                  t	        |«      d } |j
                  t        |«      j                  Ž }	|	j                  j                  dd¬«       |j                  ||	f«       ŒŠ |st        d|› dt        › d�«      ‚| j                  t        |«       y)z)Download bucket files into `install_dir`.r’   NTr;   zNo files found under 'z' in bucket 'rr   )r   r›   r�   r“   ÚlenÚjoinpathr   ÚpartsÚparentrB   rf   r�   r1   r‡   )
r3   r5   rŸ   r9   ru   Úprefix_with_slashÚdownload_specsÚbucket_fileÚrelativeÚ
local_files
             r!   rn   rn   ã   sè   € à�_‰_×#Ñ# CÓ(€FØ!˜( !˜Ðð AC€NØò 9ˆØ×Ñ×*Ñ*Ð+<Ô=ØØ×#Ñ#¤CÐ(9Ó$:Ð$<Ð=ˆØ)�[×)Ñ)¬=¸Ó+B×+HÑ+HÐIˆ
Ø×Ñ×Ñ¨°tÐÔ<Ø×Ñ˜{¨JÐ7Õ8ð9ñ ÜÐ"8¸¸ÀÔNfÐMgÐgiÐ jÓkÐkà×ÑÔ6¸ÕGr    rv   rw   c                 ó*  — |j                   | j                  › d�z  }	 | j                  |«       |j                  | «       t        j                  |«       y # t
        $ r3 |j                  «       r!| j                  «       s|j                  | «       ‚ w xY w)Nz.backup)r¤   r   Úrenamer�   r‚   r€   rQ   )rv   rw   Ú
backup_dirs      r!   r   r   û   s„   € Ø×"Ñ"¨×(9Ñ(9Ð':¸'Ð%BÑB€JðØ×Ñ˜JÔ'Ø×Ñ˜,Ô'Ü�‰�jÕ!øÜò Ø×ÑÔ |×':Ñ':Ô'<Ø×Ñ˜lÔ+Øðús   ž7A Á<Bc                 óÎ  — t        «       }g }| D ]Ó  }|j                  «       j                  «       }|j                  «       sŒ2t	        |j                  «       «      D ]†  }|j                  j                  d«      rŒ|j                  «       s|j                  «       sŒ@|j                  «       }||v s|j                  «       sŒe|j                  |«       |j                  |«       Œˆ ŒÕ |S )Nrs   )Úsetrz   r{   Úis_dirÚsortedÚiterdirr   r“   Ú
is_symlinkÚaddrf   )rK   ÚseenÚ
discoveredÚrootÚchildÚresolveds         r!   rU   rU     sÅ   € Ü“e€DØ€JØò (ˆØ�‰Ó ×(Ñ(Ó*ˆØ�{‰{Œ}ØÜ˜DŸL™L›NÓ+ò 		(ˆEØ�z‰z×$Ñ$ SÔ)ØØ—<‘<”>¨%×*:Ñ*:Ô*<ØØ—}‘}“ˆHØ˜4Ñ x§¡Ô'8ØØ�H‰H�XÔØ×Ñ˜hÕ'ñ		(ð	(ð Ðr    r4   c           	      ót  — t        |j                  |d¬«      }|t        z  j                  «       s|S |j                  t        k(  r&	 t        ||j                  d¬«       t        |d¬«      S |j                  |j                  j                  «       «      }|€#t        |dd	|j                  › d
t        › d�¬«      S 	 t        | ||j                  d¬«       t        |d¬«      S # t        $ r!}t        |dt        |«      ¬«      cY d }~S d }~ww xY w# t        $ r!}t        |dt        |«      ¬«      cY d }~S d }~ww xY w)Nr   )r   r$   r%   Tr.   r   )r%   r&   r   )r%   r-   z' is no longer available in rs   )r#   r   rD   rQ   rI   rJ   r¤   r€   r   r   rb   rW   r1   r2   )r3   r$   r4   rM   ÚbaseÚexcr5   s          r!   rY   rY     s)  € ô  	§¡¸)ÈKÔX€DàÔ/Ñ/×7Ñ7Ô9Øˆà‡~�~Ô)Ò)ð	OÜ# N°I×4DÑ4DÈDÕQô �t LÔ1Ð1à×"Ñ" 9§>¡>×#7Ñ#7Ó#9Ó:€EØ€}ÜØØ'Ø˜YŸ^™^Ð,Ð,HÔIaÐHbÐbcÐdô
ð 	
ðKÜ" 3¨¨y×/?Ñ/?ÀtÕLô �4 Ô-Ð-øô# ò 	OÜ˜4Ð(<ÄSÈÃXÔNÕNûð	Oûô ò KÜ�tÐ$8ÄÀSÃÔJÕJûðKús<   ÁC  Â:D Ã 	D
Ã)DÃ?D
ÄD
Ä	D7ÄD2Ä,D7Ä2D7)FrP   )4Ú__doc__r‰   Úrer�   r}   Úcollections.abcr   Údataclassesr   r   Úpathlibr   r   Útypingr   r	   Úhuggingface_hub._bucketsr
   Úhuggingface_hub.errorsr   Úutilsr   Ú
_cli_utilsr   rI   r1   rˆ   rD   r'   r   r#   r   Úboolr6   rJ   rd   r]   r/   r2   Úcompilerx   rH   re   ra   r0   rg   ro   rm   rn   r   rU   rY   r   r    r!   ú<module>rÈ      s¶  ðÙ Tã Û 	Û Û Ý $ß *ß 'ß å /Ý +å )Ý "ð Ð Ø/Ð Ø%Ð ð
 4Ð àÐKÑLÐ ñ �$Ô÷#ð #ó ð#ñ �$Ô÷ð ó ðñU˜#ð U°ð U¸dð UÈtó Uñ^ Sð ^¸Dð ^Èð ^ÐZ^ó ^ñr˜˜d™ð r¨s°T©zð rÐUXð rÐ]aÐbqÑ]ró rð* TÐ*:Ñ%;ó ñ2
XÐ+;ð 
XÈtð 
XÐ\`ð 
XÐmqó 
Xð �B—J‘JÐ<Ó=Ð ð ñ	'Ø
ð'àð'ð ˜�v˜t�|Ñ$ð'ð ð	'ð
 
ó'ðT d¨3°¨8¡nó ð dÐ+;Ñ&<ð Èð ÐP`ÐcgÑPgó ð˜sð  só ðQ¨Tð Q°dó Qð
Ð"2ð 
°t¸JÑ7Gó 
ðHÐ&6ð H¸tÀJÑ?Oð HÐ^bð HÐgkó Hð0	¨Dð 	¸dð 	Àtó 	ð 4¨¡:ð °$°t±*ó ð(.Øð.Ø.2°3Ð8HÐ3HÑ.Ið.Ø[^ð.àô.r    