§
    ìXÊj;  ã                   óÌ  — d Z ddl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mZ ddlmZ dd	lmZ d
dlmZmZ ddlmZ ddlmZ  ej        e ¦  «        Z!dZ"dZ#dZ$dZ%ed         Z& e	d¬¦  «         G d„ d¦  «        ¦   «         Z' e	d¬¦  «         G d„ d¦  «        ¦   «         Z(dCde)dede*defd„Z+dCd e)dede*defd!„Z,dDd"e-e         d#e)dz  d$e)de-e(         fd%„Z.de-e'         fd&„Z/dCd'e'dede*defd(„Z0 ej1        d)¦  «        Z2	 dCd*e)ded+eegdf         de*def
d,„Z3de4e)ef         fd-„Z5d.e-e'         d#e)de'dz  fd/„Z6d0e)de)fd1„Z7d2eddfd3„Z8d'e'de-e         fd4„Z9d'e'd5e-e         d6eddfd7„Z:d8ed9eddfd:„Z;d"e-e         de-e         fd;„Z<d2ed<e4e)e'f         d$e)de(fd=„Z= ej1        d>¦  «        Z>dEd?„Z?dEd@„Z@d"ede-e         fdA„ZAd2ede*fdB„ZBdS )FzNInternal helpers for Hugging Face marketplace skill installation and upgrades.é    N)ÚCallable)Ú	dataclassÚreplace)ÚPathÚPurePosixPath)ÚAnyÚLiteral)Ú__version__Ú	constants)Ú
BucketFile)ÚCLIErroré   )Údisable_progress_barsÚloggingé   )Ú
get_hf_api)Úoutzhf-clizhuggingface/skillsúmarketplace.jsonz.hf-skill-manifest.json)Ú
up_to_dateÚ	unmanagedÚsource_unreachableT)Úfrozenc                   ó8   — e Zd ZU eed<   eed<   dZedz  ed<   dS )ÚMarketplaceSkillÚnameÚ	repo_pathNÚdescription)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   © ó    úLC:\Projects\Historical\venv\Lib\site-packages\huggingface_hub/cli/_skills.pyr   r   $   s8   € € € € € € à
€I€I�IØ€N€N�NØ"€K��t‘Ð"Ð"Ñ"Ð"Ð"r$   r   c                   óB   — e Zd ZU eed<   eed<   eed<   dZedz  ed<   dS )ÚSkillUpdateInfor   Ú	skill_dirÚstatusNÚdetail)r   r   r    r!   r"   r   ÚSkillUpdateStatusr*   r#   r$   r%   r'   r'   +   sD   € € € € € € à
€I€I�IØ€O€O�OØÐÐÑØ€FˆC�$‰JÐÐÑÐÐr$   r'   FÚ
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xY w Y   dS )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_skillr:   3   s  € å
‰,Œ,€CÝ	Ñ	 Ô	 ð Uð UÝ5°cÑ:Ô:ÐÝ)Ð*<¸jÑIÔIˆØˆ=ÝðU˜*ð Uð UÕ5Mð Uð Uð Uñô ð õ *¨#¨uÐ6FÈeÐTÑTÔTðUð Uð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Us   �AA9Á9A=Â A=Úcontentc                 óR   ‡ — 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                 ó¢   •— |                       dd¬¦  «         | dz                       ‰d¬¦  «         | t          z                       ¦   «          d S )NT©ÚparentsÚexist_okúSKILL.mdúutf-8©Úencoding)ÚmkdirÚ
write_textÚMANAGED_MARKER_FILENAMEÚtouch)r=   r;   s    €r%   Úpopulatez)install_generated_skill.<locals>.populateD   sX   ø€ Ø×Ò $°ÐÑ6Ô6Ð6Ø	�zÑ	!×-Ò-¨gÀÐ-ÑHÔHÐHØ	Õ.Ñ	.×5Ò5Ñ7Ô7Ð7Ð7Ð7r$   ©rJ   r.   )r   Ú_install_skillÚDEFAULT_SKILL_ID)r;   r-   r.   rJ   s   `   r%   Úinstall_generated_skillrN   A   sK   ø€ ð8�dð 8 tð 8ð 8ð 8ð 8ð 8ð 8õ
 Õ*Ð,<ÀxÐW\Ð]Ñ]Ô]Ð]r$   ÚrootsÚselectorÚhf_cli_contentc                ó¼  ‡‡‡‡— t          | ¦  «        }|�L|                     ¦   «                              ¦   «         Šˆfd„|D ¦   «         }|st          d|› d|› d�¦  «        ‚t	          d„ |D ¦   «         ¦  «        }dŠi Š|rMt          ¦   «         Št          ¦   «         5  d„ t          ‰¦  «        D ¦   «         Šddd¦  «         n# 1 swxY w Y   ˆˆˆfd„|D ¦   «         S )	zgRe-sync managed skill installs (`hf-cli` is rewritten from `hf_cli_content`, the rest from the bucket).Nc                 óN   •— g | ]!}|j                              ¦   «         ‰k    ¯|‘Œ"S r#   ©r   Úlower)Ú.0ÚdÚselector_lowers     €r%   ú
<listcomp>z!update_skills.<locals>.<listcomp>Q   s-   ø€ ÐPÐPÐP˜A¨q¬v¯|ª|©~¬~ÀÒ/OÐ/O�aÐ/OÐ/OÐ/Or$   zNo installed skill matches 'z"'. Install it with `hf skills add z`.c              3   ón   K  — | ]0}|j         t          k    o|t          z                       ¦   «         V — Œ1d S ©N)r   rM   rH   Úexists)rV   rW   s     r%   ú	<genexpr>z update_skills.<locals>.<genexpr>V   sB   è è € ÐvÐvÐfg˜AœFÕ&6Ò6Ða¸AÕ@WÑ<W×;_Ò;_Ñ;aÔ;aÐvÐvÐvÐvÐvÐvr$   c                 óB   — i | ]}|j                              ¦   «         |“ŒS r#   rT   )rV   r9   s     r%   ú
<dictcomp>z!update_skills.<locals>.<dictcomp>\   s(   € Ð!gÐ!gÐ!gÀ %¤*×"2Ò"2Ñ"4Ô"4°eÐ!gÐ!gÐ!gr$   c                 ó4   •— g | ]}t          ‰|‰‰¦  «        ‘ŒS r#   )Ú_apply_single_update)rV   r(   r7   rQ   r8   s     €€€r%   rY   z!update_skills.<locals>.<listcomp>^   s*   ø€ ÐqÐqÐqÐYbÕ   iÐ1CÀ^ÑTÔTÐqÐqÐqr$   )Ú_iter_unique_skill_dirsÚstriprU   r   Úanyr   r   r3   )rO   rP   rQ   Ú
skill_dirsÚneeds_marketplacer7   r8   rX   s     `  @@@r%   Úupdate_skillsrg   L   sj  øøøø€ å(¨Ñ/Ô/€JØÐØ!ŸšÑ)Ô)×/Ò/Ñ1Ô1ˆØPÐPÐPÐP ÐPÑPÔPˆ
Øð 	tÝÐr¸(ÐrÐrÐfnÐrÐrÐrÑsÔsÐsõ ÐvÐvÐkuÐvÑvÔvÑvÔvÐØ
€CØ68ÐØð hÝ‰lŒlˆÝ"Ñ$Ô$ð 	hð 	hØ!gÐ!gÕIaÐbeÑIfÔIfÐ!gÑ!gÔ!gÐð	hð 	hð 	hñ 	hô 	hð 	hð 	hð 	hð 	hð 	hð 	høøøð 	hð 	hð 	hð 	hð rÐqÐqÐqÐqÐqÐfpÐqÑqÔqÐqs   ÂCÃCÃ
Cc                 ó6  — t          | ¦  «        }|                     d¦  «        }t          |t          ¦  «        st	          d¦  «        ‚g }|D ]Ë}t          |t
          ¦  «        sŒ|                     d¦  «        }|                     d¦  «        }t          |t          ¦  «        rt          |t          ¦  «        sŒm|                     d¦  «        }|                     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)r7   Úpayloadri   ÚskillsÚpluginr   rj   r   s           r%   r3   r3   a   s  € Ý'¨Ñ,Ô,€GØ�kŠk˜)Ñ$Ô$€GÝ�g�tÑ$Ô$ð \ÝÐZÑ[Ô[Ð[à%'€FØð 
ð 
ˆÝ˜&¥$Ñ'Ô'ð 	ØØ�zŠz˜&Ñ!Ô!ˆØ—’˜HÑ%Ô%ˆÝ˜$¥Ñ$Ô$ð 	­J°v½sÑ,CÔ,Cð 	ØØ—j’j Ñ/Ô/ˆØ�ŠÝØÝ.¨vÑ6Ô6Ý+5°kÅ3Ñ+GÔ+GÐQ˜K˜KÈTðñ ô ñ	
ô 	
ð 	
ð 	
ð €Mr$   r9   c                 óV   ‡ ‡— dt           ddfˆ ˆfd„}t          ‰j        |||¬¦  «        S )z:Install a marketplace skill into a local skills directory.r=   r/   Nc                 óÐ   •— |                       dd¬¦  «         t          ‰‰¦  «        }t          ‰‰|| ¦  «         t          | ¦  «         | t          z                       ¦   «          d S )NTr?   )rF   Ú_list_skill_filesÚ_download_skill_filesÚ_validate_installed_skill_dirrH   rI   )r=   Úbucket_filesr7   r9   s     €€r%   rJ   z,_install_marketplace_skill.<locals>.populate}   sk   ø€ Ø×Ò $°ÐÑ6Ô6Ð6Ý(¨¨eÑ4Ô4ˆÝ˜c 5¨,¸ÑDÔDÐDÝ% kÑ2Ô2Ð2Ø	Õ.Ñ	.×5Ò5Ñ7Ô7Ð7Ð7Ð7r$   rK   )r   rL   r   )r7   r9   r-   r.   rJ   s   ``   r%   r6   r6   z   sR   øø€ ð8�dð 8 tð 8ð 8ð 8ð 8ð 8ð 8ð 8õ ˜%œ*Ð&6ÀÐQVÐWÑWÔWÐWr$   z[A-Za-z0-9][A-Za-z0-9._-]*r   rJ   c                 óœ  — t                                | ¦  «        st          d| › d�¦  «        ‚|                     ¦   «                              ¦   «         }|                     dd¬¦  «         || z  }|                     ¦   «         }|r|st          d|› �¦  «        ‚|rlt          j	        |d|j
        › d�¬¦  «        5 }t          |¦  «        |j
        z  } ||¦  «         t          ||¬	¦  «         d
d
d
¦  «         n# 1 swxY w Y   |S 	  ||¦  «         n7# t          $ r* |                     ¦   «         rt          j        |¦  «         ‚ w xY w|S )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ÚresolverF   r\   ÚFileExistsErrorÚtempfileÚTemporaryDirectoryr   r   Ú_atomic_replace_directoryÚ	ExceptionÚshutilÚrmtree)r   r-   rJ   r.   r=   Úalready_existsÚtmp_dir_strr�   s           r%   rL   rL   Š   sá  € õ  ×&Ò& tÑ,Ô,ð 8ÝÐ6¨dÐ6Ð6Ð6Ñ7Ô7Ð7Ø'×2Ò2Ñ4Ô4×<Ò<Ñ>Ô>ÐØ×Ò 4°$ÐÑ7Ô7Ð7Ø" TÑ)€KØ ×'Ò'Ñ)Ô)€Nàð F˜eð FÝÐD°{ÐDÐDÑEÔEÐEàð ÝÔ(Ð-=ÐFeÈ+ÔJZÐFeÐFeÐFeÐfÑfÔfð 	WÐjuÝ˜kÑ*Ô*¨[Ô-=Ñ=ˆJØˆH�ZÑ Ô Ð Ý%°;È:ÐVÑVÔVÐVð	Wð 	Wð 	Wñ 	Wô 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wøøøð 	Wð 	Wð 	Wð 	Wð ÐðØˆ�ÑÔÐÐøÝð ð ð Ø×ÒÑÔð 	'ÝŒM˜+Ñ&Ô&Ð&Øðøøøð Ðs   Â;4C;Ã;C?ÄC?Ä	D Ä4E	c                 ób  — t          j        ¦   «         5 }t          |¦  «        dz  }|                      t          t
          |fgd¬¦  «         t          j        |                     d¬¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |t          ¦  «        st          d¦  «        ‚|S )Nr   T)Úraise_on_missing_filesrC   rD   z4Invalid marketplace payload: expected a JSON object.)r‡   rˆ   r   Údownload_bucket_filesr5   ÚMARKETPLACE_PATHÚjsonÚloadsÚ	read_textrm   ro   r   )r7   Útmp_dirÚ
local_pathÚparseds       r%   rk   rk   ´   sý   € Ý	Ô	$Ñ	&Ô	&ð D¨'Ý˜'‘]”]Ð%7Ñ7ˆ
Ø×!Ò!Ý$Ý 
Ð+Ð,Ø#'ð 	"ñ 	
ô 	
ð 	
õ
 ”˜J×0Ò0¸'Ð0ÑBÔBÑCÔCˆðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dõ �f�dÑ#Ô#ð OÝÐMÑNÔNÐNØ€Ms   ”A B Â BÂBrs   c                 óž   — |                      ¦   «                              ¦   «         }| D ]#}|j                             ¦   «         |k    r|c S Œ$d S r[   )rc   rU   r   )rs   rP   rX   r9   s       r%   r4   r4   Ã   sX   € Ø—^’^Ñ%Ô%×+Ò+Ñ-Ô-€NØð ð ˆØŒ:×ÒÑÔ Ò/Ð/ØˆLˆLˆLð 0àˆ4r$   Úpathc                 óâ   — |                       ¦   «         }|                     d¦  «        r|dd …         }|                     d¦  «        °|                      d¦  «        }|st          d¦  «        ‚|S )Nz./r   ú/z-Invalid marketplace entry: empty source path.)rc   Ú
startswithr   )rš   Ú
normalizeds     r%   rq   rq   Ë   s{   € Ø—’‘”€JØ
×
Ò
 Ñ
%Ô
%ð $Ø   ”^ˆ
ð ×
Ò
 Ñ
%Ô
%ð $à×!Ò! #Ñ&Ô&€JØð HÝÐFÑGÔGÐGØÐr$   r(   c                 ó\   — | dz  }|                      ¦   «         st          d|› �¦  «        ‚d S )NrB   z%Installed skill is missing SKILL.md: )Úis_fileÚRuntimeError)r(   Ú
skill_files     r%   ry   ry   Õ   sD   € Ø˜ZÑ'€JØ×ÒÑÔð QÝÐOÀ:ÐOÐOÑPÔPÐPðQð Qr$   c                 óÂ   — |j                              d¦  «        }d„ |                      t          |d¬¦  «        D ¦   «         }|st	          d|› dt          › d�¦  «        ‚|S )zAList all files under `skill.repo_path` in the marketplace bucket.rœ   c                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r#   )rm   r   )rV   Úitems     r%   rY   z%_list_skill_files.<locals>.<listcomp>Þ   s8   € ð ð ð àÝ�d�JÑ'Ô'ðØðð ð r$   T)r   Ú	recursivezPath 'z' not found in bucket 'r|   )r   ÚrstripÚlist_bucket_treer5   ÚFileNotFoundError)r7   r9   r   Úfiless       r%   rw   rw   Û   s   € àŒ_×#Ò# CÑ(Ô(€Fðð à×(Ò(Õ)AÈ&Ð\`Ð(ÑaÔaðñ ô €Eð
 ð fÝÐ d¨Ð dÐ dÕH`Ð dÐ dÐ dÑeÔeÐeØ€Lr$   rª   r=   c                 óÎ  — |j                              d¦  «        }|› d�}g }|D ]ˆ}|j                             |¦  «        sŒ|j        t	          |¦  «        d…         } |j        t          |¦  «        j        Ž }	|	j         	                    dd¬¦  «         | 
                    ||	f¦  «         Œ‰|st          d|› dt          › d�¦  «        ‚|                      t          |¦  «         dS )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ÚparentrF   rp   r©   r5   r‘   )
r7   r9   rª   r=   r   Úprefix_with_slashÚdownload_specsÚbucket_fileÚrelativeÚ
local_files
             r%   rx   rx   è   s  € àŒ_×#Ò# CÑ(Ô(€FØ!˜˜˜Ðð AC€NØð 9ð 9ˆØÔ×*Ò*Ð+<Ñ=Ô=ð 	ØØÔ#¥CÐ(9Ñ$:Ô$:Ð$<Ð$<Ô=ˆØ)�[Ô)­=¸Ñ+BÔ+BÔ+HÐIˆ
ØÔ×Ò¨°tÐÑ<Ô<Ð<Ø×Ò˜{¨JÐ7Ñ8Ô8Ð8Ð8àð lÝÐ j¸Ð jÐ jÕNfÐ jÐ jÐ jÑkÔkÐkà×ÒÕ6¸ÑGÔGÐGÐGÐGr$   r€   r�   c                 ó@  — |j         | j        › d�z  }	 |                      |¦  «         |                     | ¦  «         t          j        |¦  «         d S # t
          $ r? |                     ¦   «         r)|                      ¦   «         s|                     | ¦  «         ‚ w xY w)Nz.backup)r¯   r   Úrenamer‹   rŒ   rŠ   r\   )r€   r�   Ú
backup_dirs      r%   r‰   r‰      s·   € ØÔ"¨Ô(9Ð%BÐ%BÐ%BÑB€JðØ×Ò˜JÑ'Ô'Ð'Ø×Ò˜,Ñ'Ô'Ð'ÝŒ�jÑ!Ô!Ð!Ð!Ð!øÝð ð ð Ø×ÒÑÔð 	, |×':Ò':Ñ'<Ô'<ð 	,Ø×Ò˜lÑ+Ô+Ð+Øðøøøs   ”>A ÁA	Bc                 ó$  — t          ¦   «         }g }| D ]ü}|                     ¦   «                              ¦   «         }|                     ¦   «         sŒ=t	          |                     ¦   «         ¦  «        D ]�}|j                             d¦  «        rŒ|                     ¦   «         s|                     ¦   «         sŒF|                     ¦   «         }||v s|                     ¦   «         sŒs| 	                    |¦  «         | 
                    |¦  «         ŒžŒý|S )Nr}   )Úsetr„   r…   Úis_dirÚsortedÚiterdirr   r�   Ú
is_symlinkÚaddrp   )rO   ÚseenÚ
discoveredÚrootÚchildÚresolveds         r%   rb   rb     s  € Ý‘e”e€DØ€JØð (ð (ˆØ�ŠÑ Ô ×(Ò(Ñ*Ô*ˆØ�{Š{‰}Œ}ð 	ØÝ˜DŸLšL™NœNÑ+Ô+ð 		(ð 		(ˆEØŒz×$Ò$ SÑ)Ô)ð ØØ—<’<‘>”>ð ¨%×*:Ò*:Ñ*<Ô*<ð ØØ—}’}‘”ˆHØ˜4ÐÐ x§¢Ñ'8Ô'8ÐØØ�HŠH�XÑÔÐØ×Ò˜hÑ'Ô'Ð'Ð'ð		(ð Ðr$   r8   c           	      ó°  — t          |j        |d¬¦  «        }|t          z                       ¦   «         s|S |j        t          k    r`	 t          ||j        d¬¦  «         n6# t          $ r)}t          |dt          |¦  «        ¬¦  «        cY d }~S d }~ww xY wt          |d¬¦  «        S | 
                    |j                             ¦   «         ¦  «        }|€#t          |dd	|j        › d
t          › d�¬¦  «        S 	 t          | ||j        d¬¦  «         n6# t          $ r)}t          |dt          |¦  «        ¬¦  «        cY d }~S d }~ww xY wt          |d¬¦  «        S )Nr   )r   r(   r)   Tr2   r   )r)   r*   r   )r)   r1   z' is no longer available in r}   )r'   r   rH   r\   rM   rN   r¯   rŠ   r   r!   rl   rU   r5   r6   )r7   r(   r8   rQ   ÚbaseÚexcr9   s          r%   ra   ra      s«  € õ  	¤¸)ÈKÐXÑXÔX€DàÕ/Ñ/×7Ò7Ñ9Ô9ð Øˆà„~Õ)Ò)Ð)ð	OÝ# N°IÔ4DÈDÐQÑQÔQÐQÐQøÝð 	Oð 	Oð 	OÝ˜4Ð(<ÅSÈÁXÄXÐNÑNÔNÐNÐNÐNÐNÐNÐNøøøøð	Oøøøå�t LÐ1Ñ1Ô1Ð1à×"Ò" 9¤>×#7Ò#7Ñ#9Ô#9Ñ:Ô:€EØ€}ÝØØ'Ød˜Yœ^ÐdÐdÕIaÐdÐdÐdð
ñ 
ô 
ð 	
ðKÝ" 3¨¨yÔ/?ÀtÐLÑLÔLÐLÐLøÝð Kð Kð KÝ�tÐ$8ÅÀSÁÄÐJÑJÔJÐJÐJÐJÐJÐJÐJøøøøðKøøøõ �4 Ð-Ñ-Ô-Ð-s<   ÁA Á
BÁ)BÂBÂBÃ8D Ä
EÄD?Ä9EÄ?Ez)Generated with `huggingface_hub v([^`]+)`c                  ó~   — 	 t          ¦   «          dS # t          $ r  t                               dd¬¦  «         Y dS w xY w)aI  Hint at installing or updating the `hf-cli` skill, at most once every 24 hours.

    Only prints a hint: installing or updating stays an explicit user action.

    Skipped entirely if `HF_HUB_DISABLE_UPDATE_CHECK` is set. Called at the entry point of
    the CLI, so any error is caught and logged to avoid breaking the CLI.
    z-Error while checking for hf-cli skill update.T)Úexc_infoN)Ú_check_skill_updaterŠ   ÚloggerÚdebugr#   r$   r%   Úcheck_skill_updaterÌ   F  sY   € ðUÝÑÔÐÐÐøÝð Uð Uð UÝ�ŠÐDÈtˆÑTÔTÐTÐTÐTÐTðUøøøs   ‚ ’&<»<c                  ó  — t           j        rd S t          t           j        ¦  «        } |                      ¦   «         r3t          j        ¦   «         |                      ¦   «         j        z
  dk     rd S | j         	                    dd¬¦  «         |  
                    ¦   «          t          t           j        t           j        ¦  «        }t          t           j        t           j        ¦  «        }|s<|s:t!          d„ dD ¦   «         ¦  «        rd S t#          j        dt&          › d�¦  «         d S t!          d„ |D ¦   «         ¦  «        rd	}nt!          d
„ |D ¦   «         ¦  «        rd}nd S t#          j        dt&          › dt&          › |› d�¦  «         d S )Ni€Q Tr?   c              3   ó(   K  — | ]}|t           v V — Œd S r[   )r
   )rV   Útags     r%   r]   z&_check_skill_update.<locals>.<genexpr>d  s'   è è € Ð;Ð; cˆs•kÐ!Ð;Ð;Ð;Ð;Ð;Ð;r$   )ÚrcÚdevzThe `za` skill is not installed. Run `hf skills add -g` to teach your AI agents how to use the `hf` CLI.c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r[   ©Ú_is_skill_outdated©rV   r(   s     r%   r]   z&_check_skill_update.<locals>.<genexpr>m  s+   è è € Ð
FÐ
F¨YÕ˜iÑ(Ô(Ð
FÐ
FÐ
FÐ
FÐ
FÐ
Fr$   z -gc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r[   rÓ   rÕ   s     r%   r]   z&_check_skill_update.<locals>.<genexpr>o  s+   è è € ÐGÐG¨yÕ 	Ñ*Ô*ÐGÐGÐGÐGÐGÐGr$   Ú zThe installed `zE` skill was generated by another `hf` version. Run `hf skills update z` to refresh it.)r   ÚHF_HUB_DISABLE_UPDATE_CHECKr   Ú CHECK_FOR_SKILL_UPDATE_DONE_PATHr\   ÚtimeÚstatÚst_mtimer¯   rF   rI   Ú_installed_hf_cli_dirsÚAGENTS_SKILLS_GLOBAL_PATHÚCLAUDE_SKILLS_GLOBAL_PATHÚAGENTS_SKILLS_LOCAL_PATHÚCLAUDE_SKILLS_LOCAL_PATHrd   r   ÚhintrM   )Ú
stamp_pathÚglobal_dirsÚ
local_dirsÚscopes       r%   rÉ   rÉ   T  sÄ  € ÝÔ,ð Øˆõ •iÔ@ÑAÔA€JØ×ÒÑÔð ¥¤	¡¤¨j¯oªoÑ.?Ô.?Ô.HÑ HÈIÒUÐUØˆØÔ×Ò D°4ÐÑ8Ô8Ð8Ø×ÒÑÔÐå(­Ô)LÍiÔNqÑrÔr€KÝ'­	Ô(JÍIÔLnÑoÔo€Jàð ˜zð åÐ;Ð;¨]Ð;Ñ;Ô;Ñ;Ô;ð 	ØˆFÝŒð@Õ$ð @ð @ð @ñ	
ô 	
ð 	
ð 	ˆõ Ð
FÐ
F¸+Ð
FÑ
FÔ
FÑFÔFð ØˆˆÝ	ÐGÐG¸JÐGÑGÔGÑ	GÔ	Gð ØˆˆàˆÝ„Hð	LÕ*ð 	Lð 	LÝ"2ð	LØ49ð	Lð 	Lð 	Lñô ð ð ð r$   c                  ób   — d„ | D ¦   «         }d„ t                                |¦  «        D ¦   «         S )Nc                 ój   — g | ]0}|                      ¦   «         t          z                       ¦   «         ‘Œ1S r#   )r„   rM   r…   )rV   rÁ   s     r%   rY   z*_installed_hf_cli_dirs.<locals>.<listcomp>z  s4   € ÐOÐOÐOÀˆT�_Š_ÑÔÕ!1Ñ1×:Ò:Ñ<Ô<ÐOÐOÐOr$   c                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r#   )rº   rÕ   s     r%   rY   z*_installed_hf_cli_dirs.<locals>.<listcomp>{  s)   € ÐQÐQÐQ˜)¸i×>NÒ>NÑ>PÔ>PÐQˆIÐQÐQÐQr$   )ro   Úfromkeys)rO   Údirss     r%   rÝ   rÝ   y  s5   € ØOÐOÈÐOÑOÔO€DØQÐQ¥t§}¢}°TÑ':Ô':ÐQÑQÔQÐQr$   c                 óÒ   — 	 | dz                        d¬¦  «        }n# t          $ r Y dS w xY wt                               |¦  «        }|du p|                     d¦  «        t
          k    S )zNWhether the installed `hf-cli` SKILL.md was generated by another `hf` version.rB   rC   rD   FNr   )r•   ÚOSErrorÚ_GENERATED_VERSION_REÚsearchÚgroupr
   )r(   r;   Úmatchs      r%   rÔ   rÔ   ~  sw   € ðØ˜zÑ)×4Ò4¸gÐ4ÑFÔFˆˆøÝð ð ð Øˆuˆuðøøøå!×(Ò(¨Ñ1Ô1€EØ�Dˆ=Ð9˜EŸKšK¨™NœN­kÒ9Ð9s   ‚ œ
*©*)Fr[   )r/   N)CÚ__doc__r“   Úrer‹   r‡   rÚ   Úcollections.abcr   Údataclassesr   r   Úpathlibr   r   Útypingr   r	   Úhuggingface_hubr
   r   Úhuggingface_hub._bucketsr   Úhuggingface_hub.errorsr   Úutilsr   r   Ú
_cli_utilsr   Ú_outputr   Ú
get_loggerr   rÊ   rM   r5   r’   rH   r+   r   r'   r!   Úboolr:   rN   rn   rg   r3   r6   Úcompiler‚   rL   ro   rk   r4   rq   ry   rw   rx   r‰   rb   ra   rî   rÌ   rÉ   rÝ   rÔ   r#   r$   r%   ú<module>r     sš  ðØ TÐ Tà €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø /Ð /Ð /Ð /Ð /Ð /Ø +Ð +Ð +Ð +Ð +Ð +à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð ð 
ˆÔ	˜HÑ	%Ô	%€àÐ Ø/Ð Ø%Ð ð
 4Ð àÐKÔLÐ ð €�$ÐÑÔð#ð #ð #ð #ð #ñ #ô #ñ Ôð#ð €�$ÐÑÔðð ð ð ð ñ ô ñ ÔððUð U˜#ð U°ð U¸dð UÈtð Uð Uð Uð Uð^ð ^ Sð ^¸Dð ^Èð ^ÐZ^ð ^ð ^ð ^ð ^ðrð r˜˜dœð r¨s°T©zð rÐUXð rÐ]aÐbqÔ]rð rð rð rð rð* TÐ*:Ô%;ð ð ð ð ð2
Xð 
XÐ+;ð 
XÈtð 
XÐ\`ð 
XÐmqð 
Xð 
Xð 
Xð 
Xð �B”JÐ<Ñ=Ô=Ð ð ð	'ð 'Ø
ð'àð'ð ˜�v˜t�|Ô$ð'ð ð	'ð
 
ð'ð 'ð 'ð 'ðT d¨3°¨8¤nð ð ð ð ð dÐ+;Ô&<ð Èð ÐP`ÐcgÑPgð ð ð ð ð˜sð  sð ð ð ð ðQ¨Tð Q°dð Qð Qð Qð Qð
Ð"2ð 
°t¸JÔ7Gð 
ð 
ð 
ð 
ðHÐ&6ð H¸tÀJÔ?Oð HÐ^bð HÐgkð Hð Hð Hð Hð0	¨Dð 	¸dð 	Àtð 	ð 	ð 	ð 	ð 4¨¤:ð °$°t´*ð ð ð ð ð(.Øð.Ø.2°3Ð8HÐ3HÔ.Ið.Ø[^ð.àð.ð .ð .ð .ðF #˜œ
Ð#OÑPÔPÐ ðUð Uð Uð Uð"ð "ð "ð "ðJR 4ð R¨D°¬Jð Rð Rð Rð Rð
: $ð :¨4ð :ð :ð :ð :ð :ð :r$   