Ë
    ÂÓ^jäc  ã                   ó  — 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Zddl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ZddlmZmZmZ dd	lmZmZ d
dlmZ d
dlmZm Z  d
dl!m"Z" dZ# ed«      Z$dZ%dZ& ee&¬«      Z'dZ(dZ)dZ* ejV                  e,«      Z- G d„ de.e«      Z/e
 G d„ d«      «       Z0e'jc                  dg d¢¬«      	 dkdejd                  dee. ed ¬«      f   d!ee3 e d"d#¬«      f   d$dfd%„«       Z4e'jc                  d&g d'¢¬«      	 dld(ee.dz   ed)¬«      f   d$dfd*„«       Z5e'jc                  d+d,dd,d-œd.d/g¬0«      dejd                  d(ee. ed1¬«      f   d$dfd2„«       Z6e'jc                  d3d4g¬«      dmd5„«       Z7e'jc                  d6d7g¬«      dmd8„«       Z8e'jc                  d9d:g¬«      d(ee. ed;¬«      f   d$dfd<„«       Z9d$e:e0   fd=„Z;d$e:e<e.e.f      fd>„Z=d?e:e.   d@e>e.   d$e?dz  fdA„Z@dBe.d$edz  fdC„ZAd(e.d$e0fdD„ZBdEe0d$e/fdF„ZCdddGœdHe.dIe.dBe.dJe.dKe.dz  dLe.dz  d$e0fdM„ZDd,dNœdHe.dIe.dJe.dOe3d$e.dz  f
dP„ZEdHe.dIe.dJe.dBe.d$eFf
dQ„ZGdRedBe.dSeFd$efdT„ZHdRedHe.dIe.dBe.dJe.d$efdU„ZIdHe.dIe.dJe.dVe.dz  d$e.dz  f
dW„ZJdBe.d$efdX„ZKdddYœdZe.d[eLdz  d\eLdz  fd]„ZMdHe.dIe.d$e<e.e.dz  f   fd^„ZNdBe.d$e.fd_„ZOdBe.d$efd`„ZPdaedbe.d$efdc„ZQ ej¤                  dd«      ZSdBe.dee.d$e.fdf„ZTde.d$e<e.e.e.f   fdg„ZUd(e.d$e.fdh„ZVdied?e:e.   d$e?fdj„ZWy)nz0Contains helper utilities for hf CLI extensions.é    N)ÚasdictÚ	dataclass)ÚdatetimeÚtimezone)ÚEnum)ÚPath)Ú	AnnotatedÚLiteral)ÚCLIErrorÚCLIExtensionInstallErrorÚConfirmationError)Úget_sessionÚloggingé   )Útyper_factory)ÚArgumentÚOption)ÚoutÚhuggingfacez~/.local/share/hf/extensionszmanifest.jsonzŒManage hf CLI extensions.

Security Warning: extensions are third-party executables or Python packages. Install only from sources you trust.)Úhelpzhf-extensioné
   i,  c                   ó   — e Zd ZdZdZdZy)Ú_ExtensionUpdateStatusÚupdatedÚ
up_to_dateÚskippedN)Ú__name__Ú
__module__Ú__qualname__ÚUPDATEDÚ
UP_TO_DATEÚSKIPPED© ó    úi/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/cli/extensions.pyr   r   7   s   „ Ø€GØ€JØ�Gr$   r   c                   ó¬   — e Zd ZU eed<   eed<   eed<   eed<   eed<   ed   ed<   eed<   d	Zed	z  ed
<   d	Zed	z  ed<   e	de
dd fd„«       Zde
dd	fd„Zy	)ÚExtensionManifestÚownerÚrepoÚrepo_idÚ
short_nameÚexecutable_path)ÚbinaryÚpythonÚtypeÚinstalled_atNÚdescriptionÚ
commit_shaÚpathÚreturnc                 óT  — |t         z  }|j                  «       st        d|› d�«      ‚t        j                  |j                  «       «      }|j                  «       D ��ci c]  \  }}|| j                  v sŒ||“Œ }}}t        j                  |d   «      |d<   t        di |¤ŽS c c}}w )NzManifest file not found at z". Your extension may be corrupted.r0   r#   )ÚMANIFEST_FILENAMEÚis_filer   ÚjsonÚloadsÚ	read_textÚitemsÚ__dataclass_fields__r   Úfromisoformatr'   )Úclsr3   Úmanifest_pathÚdataÚkeyÚvalues         r%   ÚloadzExtensionManifest.loadI   s¢   € àÔ0Ñ0ˆØ×$Ñ$Ô&ÜÐ8¸¸ÐGiÐjÓkÐkÜ�z‰z˜-×1Ñ1Ó3Ó4ˆà-1¯Z©Z«\×]™z˜s E¸SÀC×D\ÑD\Ò=\��U‘
Ð]ˆÑ]Ü'×5Ñ5°d¸>Ñ6JÓKˆˆ^ÑÜ Ñ( 4Ñ(Ð(ùó ^s   ÁB$Á6B$c                 óî   — |t         z  }|j                  j                  dd¬«       t        | «      }| j                  j                  «       |d<   |j                  t        j                  |dd¬«      «       y )NT©ÚparentsÚexist_okr0   é   )ÚindentÚ	sort_keys)	r6   ÚparentÚmkdirr   r0   Ú	isoformatÚ
write_textr8   Údumps)Úselfr3   r?   r@   s       r%   ÚsavezExtensionManifest.saveT   sc   € ØÔ0Ñ0ˆØ×Ñ×"Ñ"¨4¸$Ð"Ô?Ü�d‹|ˆØ#×0Ñ0×:Ñ:Ó<ˆˆ^ÑØ× Ñ ¤§¡¨D¸ÀdÔ!KÕLr$   )r   r   r   ÚstrÚ__annotations__r
   r   r1   r2   Úclassmethodr   rC   rQ   r#   r$   r%   r'   r'   =   s�   … àƒJØ
ƒIØƒLØƒOØÓØ
Ð$Ñ
%Ó%ØÓØ"€K��t‘Ó"Ø!€J��d‘
Ó!àð)˜ð )Ð!4ò )ó ð)ðM˜ð M $ô Mr$   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.r4   c                 óV  — t        |«      \  }}}| j                  «       }t        t        |j                  di «      j                  «       «      }||v rt        d|› d|› d�«      ‚t        |«      }|j                  «       r|st        d|› d�«      ‚t        ||¬«      \  }	}
|j                  «       rt        j                  |«       t        ||||	|
¬«      }|j                  j                  «       }t        j                   |› d	�|› d
|› �d|› �¬«       t        j"                  d|› �«       y)z´Install 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(   r]   r+   Úbranchr1   z extension installedú/úhf )ÚsourceÚcommandzRun it with: hf N)Ú_normalize_repo_idÚ	find_rootÚsetÚgetattrrc   Úkeysr   Ú_get_extension_dirÚexistsÚ_fetch_github_repo_infoÚshutilÚrmtreeÚ_install_extensionr/   Ú
capitalizer   ÚresultÚhint)rW   r*   rX   r(   r]   r+   Úroot_ctxÚreserved_commandsÚextension_dirr_   r1   ÚmanifestÚext_types                r%   Úextension_installrw   \   s6  € ô* $6°gÓ#>Ñ €Eˆ9�jØ�}‰}‹€HÜœG H×$4Ñ$4°jÀ"ÓE×JÑJÓLÓMÐØÐ&Ñ&ÜØ(¨¨Ð4`ÐakÐ`lÐlvÐwó
ð 	
ô ' zÓ2€MØ×ÑÔ¡eÜ˜ Z LÐ0aÐbÓcÐcä1¸ÈÔSÑ€FˆKØ×ÑÔä�‰�mÔ$Ü!Ø˜y°ZÈÐ\gô€Hð �}‰}×'Ñ'Ó)€HÜ‡J�JØˆ*Ð(Ð)Ø�˜˜)˜Ð%Ø�j�\Ð"õô
 ‡H�HÐ 
˜|Ð,Õ-r$   Úupdate)zhf extensions updatezhf extensions update hf-claudez'hf extensions update alvarobartt/hf-memÚnamez¨Extension to update (with or without `hf-` prefix, optionally as `OWNER/hf-<name>`). If omitted, all installed extensions are checked and the outdated ones are updated.c                 ój  — | �±t        | «      }t        |«      }|xt        j                  k(  r. t	        j
                  d|j                  |j                  ¬«       yxt        j                  k(  r1 t	        j
                  d|j                  › d�|j                  ¬«       yt        j                  k(  r	 yyt        «       }|s+t	        j                  d«       t	        j                  d«       yg }g }|D ]²  }t	        j                  d	|j                  › d
|j                  › d�«       	 t        |«      }|xt        j                  k(  r |j                  |j                  «       Œpxt        j                  k(  r |j                  |j                  «       Œ t        j                  k(  sŒ³Œ´ t	        j
                  d|rdj!                  |«      nd|rdj!                  |«      ¬«       yd¬«       y# t        $ r>}t	        j                  d|j                  › d
|j                  › d|› d�«       Y d}~�Œ<d}~ww xY w)z6Update installed extension(s) to their latest version.NzExtension updated)ry   rb   r[   z' is already up to date©ry   zNo extensions installed.z1Install one with: hf extensions install <repo_id>z
Checking 'ú' (z)...zCould not update 'ú): ú. Skipping.zExtensions update completez, )r   r   )Ú$_load_installed_extension_for_updateÚ_update_installed_extensionr   r    r   rp   r+   r*   r!   r"   Ú_list_installed_extensionsÚwarningrq   ÚlogÚ	ExceptionÚappendÚjoin)ry   ru   Úupdate_statusÚ	manifestsr   r   Úerrors          r%   Úextension_updaterŠ   �   så  € ð( ÐÜ7¸Ó=ˆÜ3°HÓ=ˆØØ/Ô'×/Õ/Ü—
‘
Ð.°X×5HÑ5HÐQY×QaÑQaÕbð
 	ð	 3Ô'×2Õ2Ü—
‘
˜[¨×)<Ñ)<Ð(=Ð=TÐUÐ\d×\oÑ\oÕpð 	ô (×/Ô/ØÙä*Ó,€IÙÜ�‰Ð.Ô/Ü�‰ÐDÔEØà€GØ€JØò ˆÜ�‰�*˜X×0Ñ0Ð1°°X×5EÑ5EÐ4FÀdÐKÔLð	Ü7¸ÓAˆMð
 Ø/Ô'×/Õ/Ø—‘˜x×2Ñ2Õ3Ø2Ô'×2Õ2Ø×!Ñ! (×"5Ñ"5Õ6Ü'×/Õ/Øðô ‡J�JØ$Ù&-�—	‘	˜'Ô"°4Ù,6�4—9‘9˜ZÓ(öð =Aöøô ò 	ä�K‰KÐ,¨X×-@Ñ-@Ð,AÀÀX×EUÑEUÐDVÐVYÐZ_ÐY`Ð`kÐlÔmÝûð	ús   Ä%G+Ç+	H2Ç43H-È-H2Ú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_settingsrV   z.Extension name (with or without `hf-` prefix).c                 óì   — t        |«      }t        |«      }|j                  «       st        d|› d�«      ‚t	        |t        | j                  «      ¬«      }t        j                  j                  |¬«      ‚)zExecute an installed extension.r[   ú' is not installed.©r,   Úargs)Úcode)
Ú_normalize_extension_nameÚ"_resolve_installed_executable_pathr7   r   Ú_execute_extension_binaryÚlistr“   ÚclickÚ
exceptionsÚExit)rW   ry   r+   r,   Ú	exit_codes        r%   Úextension_execr�   Ë   sl   € ô  +¨4Ó0€JÜ8¸ÓD€Oà×"Ñ"Ô$Ü˜ Z LÐ0CÐDÓEÐEä)¸/ÔPTÐUX×U]ÑU]ÓP^Ô_€IÜ
×
Ñ
×
Ñ
 YÐ
Ó
/Ð/r$   z	list | lszhf extensions listc            	      ó"  — t        «       D � cg c]`  } d| j                  › �t        | j                  «      t        | j                  «      | j
                  j                  d«      | j                  dœ‘Œb }} t        j                  |d¬«       yc c} w )z"List installed extension commands.ra   z%Y-%m-%d)rc   rb   r/   Ú	installedr1   rc   ©Úid_keyN)
r�   r+   rR   r*   r/   r0   Ústrftimer1   r   Útable)ru   Úrowss     r%   Úextension_listr¥   å   s…   € ô 3Ó4ö	ð ð ˜X×0Ñ0Ð1Ð2Ü˜(×*Ñ*Ó+Ü˜Ÿ™Ó&Ø!×.Ñ.×7Ñ7¸
ÓCØ#×/Ñ/ó	
ð	€Dð 	ô ‡I�Iˆd˜9Ö%ùò	s   �A%BÚsearchzhf extensions searchc            	      ó°  — t        ddt        › �ddddœ¬«      } | j                  «       }t        «       D �ch c]  }|j                  ’Œ }}g }|j                  dg «      D ]Y  }|d	   j                  d
«      }|j                  ||d   |j                  dd«      |j                  d«      xs d||v rdnddœ«       Œ[ t        j                  |d¬«       yc c}w )zISearch extensions available on GitHub (tagged with 'hf-extension' topic).z*https://api.github.com/search/repositoriesztopic:ÚstarsÚdescéd   )ÚqÚsortÚorderÚper_page)Úparamsr;   ry   úhf-Ú	full_nameÚstargazers_countr   r1   Ú Úyes)ry   r)   r¨   r1   rŸ   r)   r    N)
Ú_github_getÚ_EXTENSIONS_GITHUB_TOPICr8   r�   r+   ÚgetÚremoveprefixr…   r   r£   )Úresponser@   ÚmrŸ   r¤   r)   r+   s          r%   Úextension_searchr»   õ   sà   € ô Ø4ØÔ6Ð7Ð8À'ÐTZÐhkÑlô€Hð �=‰=‹?€Dä'AÓ'CÖD !�—“ÐD€IÐDà€DØ—‘˜ "Ó%ò 

ˆØ˜&‘\×.Ñ.¨uÓ5ˆ
Ø�‰à"Ø˜[Ñ)ØŸ™Ð"4°aÓ8Ø#Ÿx™x¨Ó6Ò<¸"Ø&0°IÑ&=™UÀ2ñõ	
ð

ô ‡I�Iˆd˜6Ö"ùò Es   ¶Czremove | rmzhf extensions remove claudez8Extension name to remove (with or without `hf-` prefix).c                 óÆ   — t        | «      }t        |«      }|j                  «       st        d|› d�«      ‚t	        j
                  |«       t        j                  d|¬«       y)zRemove an installed extension.r[   r‘   zExtension removedr{   N)r•   ri   Úis_dirr   rl   rm   r   rp   )ry   r+   rt   s      r%   Úextension_remover¾     sT   € ô +¨4Ó0€JÜ& zÓ2€Mà×ÑÔ!Ü˜ Z LÐ0CÐDÓEÐEä
‡M�M�-Ô Ü‡J�JÐ"¨Ö4r$   c                  óª  — t         j                  «       } | j                  «       sg S g }t        | j	                  «       «      D ]S  }|j                  «       r|j
                  j                  d«      sŒ/	 |j                  t        j                  |«      «       ŒU |S # t        $ r/}t        j                  d|j
                  › d|› �«       Y d}~Œ‹d}~ww xY w)zPReturn manifests for all validly-installed extensions, sorted by directory name.r°   z'Failed to load manifest for extension 'ú': N)ÚEXTENSIONS_ROOTÚ
expanduserr½   ÚsortedÚiterdirry   Ú
startswithr…   r'   rC   r„   ÚloggerÚdebug)Úroot_dirrˆ   rt   Úes       r%   r�   r�   %  sÃ   € ä×)Ñ)Ó+€HØ�?‰?ÔØˆ	Ø€IÜ × 0Ñ 0Ó 2Ó3ò ˆØ×#Ñ#Ô%¨]×-?Ñ-?×-JÑ-JÈ5Ô-QØð	Ø×ÑÔ.×3Ñ3°MÓBÕCð	ð Ðøô ò 	Ü�L‰LÐBÀ=×CUÑCUÐBVÐVYÐZ[ÐY\Ð]Ô^Üûð	ús   Á2$BÂ	CÂ#%CÃCc                  óÀ   — g } t        «       D ]N  }d|j                  › d�}|j                  �|j                  › d|› �n|}| j                  |j                  |f«       ŒP | S )Nz[extension ú]ú )r�   r*   r1   r…   r+   )Úentriesru   ÚtagÚ	help_texts       r%   Ú"list_installed_extensions_for_helprÐ   6  sq   € Ø€GÜ.Ó0ò 9ˆØ˜H×,Ñ,Ð-¨QÐ/ˆØ7?×7KÑ7KÐ7W�x×+Ñ+Ð,¨A¨c¨UÑ3Ð]`ˆ	Ø�‰˜×+Ñ+¨YÐ7Õ8ð9ð €Nr$   r“   Úknown_commandsc                 ó²  — | sy | d   }|j                  d«      ry |D ��ch c](  }|j                  d«      D ]  }|j                  «       ’Œ Œ* }}}||v ry 	 t        |j	                  d«      |¬«      }	 t        |«      }|�|j                  «       sy t        |t        | dd  «      ¬«      S c c}}w # t
        $ r Y y w xY w# t        $ r t        |«      }Y ŒWw xY w)Nr   ú-ú|r°   ©Úoriginal_inputr   r’   )rÅ   ÚsplitÚstripÚ_validate_extension_short_namer¸   r   r–   r„   Ú _auto_install_official_extensionr7   r—   r˜   )r“   rÑ   Úcommand_nameÚcmdÚaÚ	all_knownr+   r,   s           r%   Ú$dispatch_unknown_top_level_extensionrß   ?  sî   € ÙØà˜‘7€LØ×Ñ˜sÔ#ØØ&4×M˜s¸c¿i¹iÈ»nÒM¸�—‘•ÐM�ÐM€IÑMØ�yÑ ØðÜ3°L×4MÑ4MÈeÓ4TÐeqÔrˆ
ð
GÜ<¸ZÓHˆð Ð o×&=Ñ&=Ô&?Øä$°_Ì4ÐPTÐUVÐUWÐPXË>ÔZÐZùó% Nøô ò Ùðûô ò GÜ:¸:ÓFŠðGús)    -B*ÁB0 Á3B? Â0	B<Â;B<Â?CÃCr+   c           	      óp  — t         d| › �}}t        | «      j                  «       ry	 t        ||¬«      \  }}	 t        j                  d| › d|› d|› d�«       	 t        ||| ||¬«      }t        |j                  «      j                  «       S # t        $ r Y yw xY w# t        $ r Y yw xY w# t        $ r Y yw xY w)	zKTry to auto-install huggingface/hf-<name>. Returns executable path or None.r°   Nr\   ú'z)' is an official Hugging Face extension (r`   z). Install it?r^   )ÚDEFAULT_EXTENSION_OWNERri   rj   rk   r„   r   Úconfirmr   rn   r   r,   rÂ   )r+   r(   r]   r_   r1   ru   s         r%   rÚ   rÚ   [  sØ   € ä.°#°j°\Ð0Bˆ9€EÜ˜*Ó%×,Ñ,Ô.ØðÜ5¸EÈYÔWÑˆ�ðÜ�‰�a˜
�|Ð#LÈUÈGÐSTÐU^ÐT_Ð_mÐnÔoðÜ%Ø 9¸ÈFÐ`kô
ˆô �H×,Ñ,Ó-×8Ñ8Ó:Ð:øô ò Ùðûô
 ò Ùðûô ò Ùðús4   §B ¸B Á2B) Â	BÂBÂ	B&Â%B&Â)	B5Â4B5c                 óü   — t        | «      }t        |«      }|j                  «       sB| j                  «       j	                  d«      \  }}}|r|› d|› �nd|› �}t        d|› d|› �«      ‚t        j                  |«      S )Nr`   z/hf-r°   r[   zA' is not installed. Install it first with: hf extensions install )r•   ri   r½   rØ   Ú
rpartitionr   r'   rC   )ry   r+   rt   r(   Ú_Úinstall_targets         r%   r   r   s  sŒ   € Ü*¨4Ó0€JÜ& zÓ2€MØ×ÑÔ!Ø—j‘j“l×-Ñ-¨cÓ2‰ˆˆq�!Ù7<˜E˜7 $ z lÑ3ÀCÈ
À|ÐBTˆÜØ˜*˜Ð%fÐguÐfvÐwó
ð 	
ô ×!Ñ! -Ó0Ð0r$   ru   c                 óü  — | j                   | j                  | j                  }}}	 t        ||¬«      \  }}t        |||d¬«      }|€/t        j                  d|› d|› d|› d	�«       t        j                  S || j                  k(  rt        j                  S t        ||||||¬
«       t        j                  S # t        $ r<}t        j                  d|› d|› d|› d|› d�	«       t        j                  cY d }~S d }~ww xY w)Nr\   zCould not check updates for 'r|   r`   r}   r~   F)r(   r]   r_   Úwarnz#): GitHub is unreachable. Skipping.)r(   r]   r+   r_   r1   r2   )r(   r)   r+   rk   r„   r   r‚   r   r"   Ú_fetch_latest_commit_shar2   r!   rn   r    )ru   r(   r]   r+   r_   r1   r‰   Ú
latest_shas           r%   r€   r€     s  € Ø#+§>¡>°8·=±=À(×BUÑBU�jˆ9€Eð.Ü5¸EÈYÔWÑˆ�ô
 *°ÀÐSYÐ`eÔf€JØÐÜ�‰Ø+¨J¨<°s¸5¸'ÀÀ9À+ÐMpÐqô	
ô &×-Ñ-Ð-à�X×(Ñ(Ò(Ü%×0Ñ0Ð0äØØØØØØõô "×)Ñ)Ð)øô- ò .Ü�‰Ð3°J°<¸sÀ5À'ÈÈ9È+ÐUXÐY^ÐX_Ð_jÐkÔlÜ%×-Ñ-Õ-ûð.ús   ¦B6 Â6	C;Â?1C6Ã0C;Ã6C;)r1   r2   r(   r]   r_   r1   r2   c                 ó^  — t        |«      }|j                  «        }d}	 	 t        | |||¬«      }	|	�t	        |||	¬«      }
nt        || |||¬«      }
t        | || › d|› �|t        |
«      |	�dndt        j                  t        j                  «      t        | |||¬	«      |xs t        | ||¬
«      ¬«	      }|j                  |«       d}||s|rt        j                   |d¬«       S S S # t        $ r d}	Y ŒÄw xY w# t"        $ r ‚ t$        j&                  $ r}t)        dt*        › d| › d|› d�«      |‚d}~wt$        j,                  $ r%}t)        d| › d|› d|j.                  › d�«      |‚d}~wt        $ r}t)        d| › d|› d|› �«      |‚d}~ww xY w# |s|rt        j                   |d¬«       w w w xY w)a  Fetch and install an extension (binary or Python package), then persist its manifest.

    Installs in place: an existing install is overwritten without being removed first, so a failed
    update keeps the previous version working. A failed fresh install is cleaned up entirely.
    F)r(   r]   r_   r+   N)rt   r+   r-   )rt   r(   r]   r+   r_   r`   r-   r.   )r(   r]   r_   Úcandidate_description)r(   r]   r_   )	r(   r)   r*   r+   r,   r/   r0   r1   r2   T)Úignore_errorsz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 install extension from 'rÀ   )ri   rj   Ú_fetch_remote_binaryr„   Ú_install_binary_extensionÚ_install_python_extensionr'   rR   r   Únowr   ÚutcÚ_try_fetch_remote_descriptionrê   rQ   rl   rm   r   Ú
subprocessÚTimeoutExpiredr   Ú_EXTENSIONS_PIP_INSTALL_TIMEOUTÚCalledProcessErrorÚ
returncode)r(   r]   r+   r_   r1   r2   rt   Úfresh_installrŸ   r-   r,   ru   rÉ   s                r%   rn   rn   �  s  € ô ' zÓ2€MØ%×,Ñ,Ó.Ð.€MØ€Ið/=ð	Ü)°ÀÐSYÐfpÔqˆFð ÐÜ7Ø+¸
È6ô‰Oô 8Ø+°5ÀIÐZdÐmsôˆOô %ØØØ�g˜Q˜y˜kÐ*Ø!Ü Ó0Ø#Ð/‘°XÜ!Ÿ™¤h§l¡lÓ3Ü5Ø y¸ÐWbôð "ÒnÔ%=ÀEÐU^ÐgmÔ%nô
ˆð 	�‰�mÔ$Øˆ	Øñ  ™]Ü�M‰M˜-°tÖ<ð +ˆyøôW ò 	ØŠFð	ûô8 ò ØÜ×$Ñ$ò Ü&Ø*Ô+JÐ*KÈ7ÐSXÐRYÐYZÐ[dÐZeð f0ð 0ó
ð ð	ûô ×(Ñ(ò Ü&Ø2°5°'¸¸9¸+À]ÐST×S_ÑS_ÐR`ð a0ð 0ó
ð ð	ûô ò nÜ&Ð)KÈEÈ7ÐRSÐT]ÐS^Ð^aÐbcÐadÐ'eÓfÐlmÐmûðnûñ ™]Ü�M‰M˜-°tÖ<ð +ˆyúsY   ¡C' °BC8 Ã'C5Ã2C8 Ã4C5Ã5C8 Ã8F
ÄD.Ä.F
Å E$Å$F
Å0FÆF
Æ
F ÆF,)ré   ré   c                 óâ   — 	 t        d| › d|› d|› �ddi¬«      }|j                  j                  «       xs dS # t        $ r-}|r!t	        j
                  d|› d	| › d|› d
|› �«       Y d}~yd}~ww xY w)zZBest-effort fetch of the latest commit SHA for a branch, used to detect available updates.úhttps://api.github.com/repos/r`   z	/commits/ÚAcceptzapplication/vnd.github.sha)ÚheadersNz'Could not fetch latest commit SHA for 'r|   r}   )rµ   ÚtextrØ   r„   r   r‚   )r(   r]   r_   ré   r¹   r‰   s         r%   rê   rê   à  s�   € ð	ÜØ+¨E¨7°!°I°;¸iÈÀxÐPØÐ;Ð<ô
ˆð �}‰}×"Ñ"Ó$Ò,¨Ð,øÜò ÙÜ�K‰KÐAÀ)ÀÈCÐPUÈwÐVWÐXaÐWbÐbeÐfkÐelÐmÔnÜûðús   ‚58 ¸	A.Á#A)Á)A.c                 ób   — t        |«      }d| › d|› d|› d|› �}t        |«      }|j                  S )Nú"https://raw.githubusercontent.com/r`   ú/refs/heads/)Ú_get_executable_namerµ   Úcontent)r(   r]   r_   r+   Úexecutable_nameÚraw_urlr¹   s          r%   rï   rï   î  sE   € Ü*¨:Ó6€OØ2°5°'¸¸9¸+À\ÐRXÐQYÐYZÐ[jÐZkÐl€GÜ˜7Ó#€HØ×ÑÐr$   rt   r-   c                 ó¼   — | j                  dd¬«       | t        |«      z  }|j                  |«       t        j                  dk7  rt        j
                  |d«       |S )NTrE   Úntií  )rL   r  Úwrite_bytesÚosry   Úchmod)rt   r+   r-   r,   s       r%   rð   rð   õ  sR   € Ø×Ñ ¨tÐÔ4Ø#Ô&:¸:Ó&FÑF€OØ×Ñ Ô'ä	‡w�w�$‚Ü
�‰� %Ô(àÐr$   c           	      óf  — d|› d|› d|› d�}| dz  }t        |t        j                  dk(  rdnd«      }t        j                  d	«      }t        j                  «       }	|j                  «       s�|	j                  d
|› �«       | j                  dd¬«       |r$t        j                  |dt        |«      gd¬«       n.t        j                  d¬«      j                  t        |«      «       |	j!                  d|› �«       |	j                  d|› �«       |r|ddddt        |«      |g}
nt        |«      dddddd|g}
t        j                  |
dt"        ¬«       |	j!                  d|› �«       t%        |«      }t        ||«      }|j                  «       st'        d|› d|› d|› d�«      ‚|j)                  «       S )Nzhttps://github.com/r`   z/archive/refs/heads/z.zipÚvenvr  z
python.exer.   Úuvz Creating virtual environment in TrE   )Úcheck)Úwith_pipzVirtual environment created in zInstalling package from ÚpiprU   z--reinstallz--pythonz-mz--disable-pip-version-checkz
--no-inputz--force-reinstall)r  ÚtimeoutzPackage installed from zInstalled package from 'z/' does not expose the required console script 'ú'.)Ú_get_venv_bin_pathr
  ry   rl   Úwhichr   Ústatusr7   rx   rL   rõ   ÚrunrR   r  Ú
EnvBuilderÚcreateÚdoner÷   r  r   Úresolve)rt   r(   r]   r+   r_   Ú
source_urlÚvenv_dirÚvenv_pythonÚuv_pathr  Úinstall_cmdr  Úvenv_executables                r%   rñ   rñ      s¸  € ð ' u g¨Q¨y¨kÐ9MÈfÈXÐUYÐZ€JØ˜vÑ%€HÜ$ X¼r¿w¹wÈ$º©|ÐT\Ó]€KÜ�l‰l˜4Ó €Gä�Z‰Z‹\€FØ×ÑÔ Ø�‰Ð8¸¸
ÐCÔDØ×Ñ D°4ÐÔ8ÙÜ�N‰N˜G V¬S°«]Ð;À4ÖHä�O‰O TÔ*×1Ñ1´#°h³-Ô@Ø�‰Ð5°h°ZÐ@ÔAà
‡M�MÐ,¨Z¨LÐ9Ô:Ùà  y°-ÀÌSÐQ\ÓM]Ð_iÐj‰ô �ÓØØØØ)ØØØð	
ˆô ‡N�N�; dÔ4SÕTØ
‡K�KÐ)¨*¨Ð6Ô7ä*¨:Ó6€OÜ(¨°?ÓC€OØ×"Ñ"Ô$ÜØ& u g¨Q¨y¨kð :ØÐ  ð$ó
ð 	
ð ×"Ñ"Ó$Ð$r$   rí   c                 óô  — d| › d|› d|› �}	 t        |› dt        › �«      }|j                  «       j                  d«      }t	        |t
        «      r|S 	 	 t        |› d�«      }|j                  j                  «       D ]Y  }|j                  «       }|j                  d«      sŒ%|j                  d«      \  }}}	|	j                  «       j                  d«      c S  	 |S # t        $ r Y Œ“w xY w# t        $ r Y |S w xY w)z…Try to fetch project description either from:
    - manifest.json
    - pyproject.toml

    Only best effort, no error handling.
    r  r`   r  r1   z/pyproject.tomlú=z"')rµ   r6   r8   r·   Ú
isinstancerR   r„   rÿ   Ú
splitlinesrØ   rÅ   Ú	partition)
r(   r]   r_   rí   Úbaser¹   r1   Úlineræ   rB   s
             r%   rô   rô   .  s  € ð 0°¨w°a¸	°{À,ÈvÈhÐW€DðÜ $  qÔ):Ð(;Ð<Ó=ˆØ—m‘m“o×)Ñ)¨-Ó8ˆÜ�k¤3Ô'ØÐð (ð
Ü $  Ð7Ó8ˆð —M‘M×,Ñ,Ó.ò 	2ˆDØ—:‘:“<ˆDØ�‰˜}Õ-Ø"Ÿn™n¨SÓ1‘��1�eØ—{‘{“}×*Ñ*¨5Ó1Ò1ñ		2ð !Ð øô# ò Ùðûô ò Øð !Ð ð	ús1   �AC ÁAC* Â!5C* ÃC* Ã	C'Ã&C'Ã*	C7Ã6C7c                 óP   — t        | | ¬«       t        j                  «       d| › �z  S )NrÕ   r°   )rÙ   rÁ   rÂ   )r+   s    r%   ri   ri   S  s)   € ô # :¸jÕIÜ×%Ñ%Ó'¨C°
¨|Ð*<Ñ<Ð<r$   )r¯   rþ   Úurlr¯   rþ   c                ój   — t        «       j                  | ||dt        ¬«      }|j                  «        |S )z†Perform a GitHub GET request.

    Shared by every GitHub/Raw fetch in this module so the timeout and redirect policy are shared.
    T)r¯   rþ   Úfollow_redirectsr  )r   r·   Ú_EXTENSIONS_DOWNLOAD_TIMEOUTÚraise_for_status)r*  r¯   rþ   r¹   s       r%   rµ   rµ   Z  s=   € ô
 ‹}× Ñ ØØØØÜ,ð !ó €Hð ×ÑÔØ€Or$   c                 óp   — t        d| › d|› �«      }|j                  «       }|d   |j                  d«      fS )zZFetch `default_branch` + `description` for a GitHub repo from `GET /repos/{owner}/{repo}`.rü   r`   Údefault_branchr1   )rµ   r8   r·   )r(   r]   r¹   r@   s       r%   rk   rk   j  s?   € äÐ:¸5¸'ÀÀ9À+ÐNÓO€HØ�=‰=‹?€DØÐ Ñ! 4§8¡8¨MÓ#:Ð:Ð:r$   c                 ó@   — d| › �}t         j                  dk(  r|dz  }|S )Nr°   r  z.exe©r
  ry   )r+   ry   s     r%   r  r  q  s'   € Ø��Ð€DÜ	‡w�w�$‚Ø�‰ˆØ€Kr$   c                 óˆ   — t        | «      }t        j                  |«      }t        |j                  «      j                  «       S ©N)ri   r'   rC   r   r,   rÂ   )r+   rt   ru   s      r%   r–   r–   x  s6   € Ü& zÓ2€MÜ ×%Ñ% mÓ4€HÜ�×(Ñ(Ó)×4Ñ4Ó6Ð6r$   r  r  c                 óH   — t         j                  dk(  r| dz  |z  S | dz  |z  S )Nr  ÚScriptsÚbinr2  )r  r  s     r%   r  r  ~  s-   € Ü	‡w�w�$‚Ø˜)Ñ# oÑ5Ð5Ø�eÑ˜oÑ-Ð-r$   z^[A-Za-z0-9][A-Za-z0-9._-]*$rÖ   c                óþ   ‡— | j                  «       Š‰st        d«      ‚t        ˆfd„dD «       «      rt        d|› d�«      ‚d‰v sd‰v rt        d|› d�«      ‚t        j	                  ‰«      st        d|› d�«      ‚‰S )	NzExtension name cannot be empty.c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr4  r#   )Ú.0Úsepry   s     €r%   ú	<genexpr>z1_validate_extension_short_name.<locals>.<genexpr>‹  s   øè ø€ Ò
.˜3ˆ3�$Œ;Ñ
.ùs   ƒ)r`   ú\zInvalid extension name 'r  z..ú:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)rØ   r   ÚanyÚ_ALLOWED_EXTENSION_NAMEÚ	fullmatch)r+   rÖ   ry   s     @r%   rÙ   rÙ   ‡  s—   ø€ Ø×ÑÓ€DÙÜÐ8Ó9Ð9Ü
Ó
. +Ô
.Ô.ÜÐ1°.Ð1AÀÐDÓEÐEØˆt�|�s˜d‘{ÜÐ1°.Ð1AÀÐDÓEÐEÜ"×,Ñ,¨TÔ2ÜØ& ~Ð&6Ð6oÐpó
ð 	
ð €Kr$   c                 ór  — d| v rt        d«      ‚| j                  d«      }t        |«      dk(  rt        }|d   }n.t        |«      dk(  rt	        |«      r|\  }}nt        d| › d�«      ‚|j                  d	«      st        d
|› d�«      ‚|j                  d	«      }|st        d«      ‚t        || ¬«       |||fS )Nz://zEOnly GitHub repositories in `[OWNER/]hf-<name>` format are supported.r`   r   r   rH   z%Expected `[OWNER/]REPO` format, got 'r  r°   z6Extension repository name must start with 'hf-', got 'z(Invalid extension repository name 'hf-'.rÕ   )r   r×   Úlenrâ   ÚallrÅ   r¸   rÙ   )r*   Úpartsr(   r]   r+   s        r%   rd   rd   –  sÈ   € Ø�ÑÜÐ^Ó_Ð_à�M‰M˜#Ó€EÜ
ˆ5ƒz�Q‚Ü'ˆØ˜!‘H‰	Ü	ˆU‹�qŠœS œZØ Ñˆ‰yäÐ>¸w¸iÀrÐJÓKÐKà×Ñ Ô&ÜÐOÐPYÈ{ÐZ\Ð]Ó^Ð^à×'Ñ'¨Ó.€JÙÜÐAÓBÐBÜ" :¸gÕFà�)˜ZÐ'Ð'r$   c                 ó€   — | j                  «       j                  dd«      d   }t        |j                  d«      | ¬«      S )Nr`   r   éÿÿÿÿr°   rÕ   )rØ   ÚrsplitrÙ   r¸   )ry   r]   s     r%   r•   r•   ®  s8   € Ø—
‘
“×#Ñ# C¨Ó+¨BÑ/€IÜ)¨)×*@Ñ*@ÀÓ*GÐX\Ô]Ð]r$   r,   c                 ó  — 	 t        j                  t        | «      g|z   «      S # t        $ r^}t        j
                  dk(  s|j                  t        j                  k7  r‚ t        j                  dt        | «      g|z   «      cY d }~S d }~ww xY w)Nr  Úsh)rõ   ÚcallrR   ÚOSErrorr
  ry   ÚerrnoÚENOEXEC)r,   r“   rÉ   s      r%   r—   r—   ³  sq   € ðDÜ�‰¤ OÓ 4Ð5¸Ñ<Ó=Ð=øÜò DÜ�7‰7�dŠ?˜aŸg™g¬¯©Ò6ØÜ�‰ ¤c¨/Ó&:Ð;¸dÑBÓCÕCûðDús   ‚!$ ¤	B­ABÂ BÂB)Fr4  )r4   N)XÚ__doc__rM  r8   r
  Úrerl   rõ   r  Údataclassesr   r   r   r   Úenumr   Úpathlibr   Útypingr	   r
   r™   Úhuggingface_hub.errorsr   r   r   Úhuggingface_hub.utilsr   r   Ú
_cli_utilsr   Ú
_frameworkr   r   Ú_outputr   râ   rÁ   r6   ÚEXTENSIONS_HELPÚextensions_clir¶   r-  r÷   Ú
get_loggerr   rÆ   rR   r   r'   rc   ÚContextÚboolrw   rŠ   r�   r¥   r»   r¾   r˜   r�   ÚtuplerÐ   rf   Úintrß   rÚ   r   r€   rn   rê   Úbytesrï   rð   rñ   rô   ri   Údictrµ   rk   r  r–   r  Úcompiler@  rÙ   rd   r•   r—   r#   r$   r%   ú<module>rd     sÏ  ðñ 7ã Û Û 	Û 	Û Û Û ß )ß 'Ý Ý ß %ã ç XÑ Xß 6å %ß (Ý ð (Ð ÙÐ5Ó6€Ø#Ð ð+ð ñ
  OÔ4€Ø)Ð Ø!Ð Ø"%Ð à	ˆ×	Ñ	˜HÓ	%€ô˜S $ô ð ÷Mð Mó ðMð< ×ÑØòð ó ð Y^ñ&.Ø	�‰ð&.àØÙÐRÔSð	Uñð&.ð �T™6 )Ð2SÔTÐTÑUð&.ð 
ò&.óð&.ðR ×ÑØòð ó ð" 	ñ3Ø
Øˆd‰
Ùðfô	
ð	ñð3ð 
ò3óð3ðl ×ÑØ
Ø*.È5ÐlpÑqà-Ø9ðð ó ð0Ø	�‰ð0à
ØÙÐFÔGð	Iñð0ð 
ò0óð0ð$ ×Ñ˜Ð/CÐ.DÐÓEò&ó Fð&ð ×Ñ˜Ð,BÐ+CÐÓDò#ó Eð#ð4 ×Ñ˜Ð1NÐ0OÐÓPð5Ø
ØÙÐPÔQð	Sñð5ð
 
ò5ó Qð5ð( DÐ):Ñ$;ó ð"¨D°°s¸C°x±Ñ,Aó ð[¨t°C©yð [È#ÈcÉ(ð [ÐWZÐ]aÑWaó [ð8°ð ¸À¹ó ð0	1¨sð 	1Ð7Hó 	1ð*Ð*;ð *Ð@Vó *ðH #Ø!ò@=àð@=ð ð@=ð ð	@=ð
 ð@=ð �t‘ð@=ð �d‘
ð@=ð ó@=ðF W[ò  sð °sð ÀCð Ètð Ð_bÐeiÑ_ió ð 3ð °3ð Àð ÐQTð ÐY^ó ð°ð À#ð Èuð ÐY]ó ð+%Øð+%Ø#&ð+%Ø36ð+%ØDGð+%ØQTð+%à	ó+%ð\"!Øð"!Øð"!Ø(+ð"!ØDGÈ$ÁJð"!àˆ4�Zó"!ðJ= 3ð =¨4ó =ð 48ÐPTò �Sð  T¨D¡[ð À$ÈÁ+ó ð ; cð ;°cð ;¸eÀCÈÈtÉÀOÑ>Tó ;ð Sð ¨Só ð7°3ð 7¸4ó 7ð. ð .¸ð .Àó .ð %˜"Ÿ*™*Ð%DÓEÐ ð¨sð Àsð Èsó ð( ð (¨¨c°3¸¨mÑ(<ó (ð0^ Cð ^¨Có ^ð
D¨tð D¸4À¹9ð DÈô Dr$   