Ë
    -Œ:j/V  ã                   ó~  — 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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 dZ ed«      ZdZ dZ! ee!¬«      Z"dZ#dZ$dZ%dZ& ejN                  e(«      Z)e
 G d„ d«      «       Z*e"jW                  dg d¢¬«      	 dYdejX                  dee- ej\                  d¬«      f   dee/ ej`                  dd ¬«      f   d!dfd"„«       Z1e"jW                  d#d$dd$d%œd&d'g¬(«      dejX                  d)ee- ej\                  d*¬«      f   d!dfd+„«       Z2e"jW                  d,d-g¬«      dZd.„«       Z3e"jW                  d/d0g¬«      dZd1„«       Z4e"jW                  d2d3g¬«      d)ee- ej\                  d4¬«      f   d!dfd5„«       Z5d!e6e*   fd6„Z7d!e6e8e-e-f      fd7„Z9d8e6e-   d9e:e-   d!e;dz  fd:„Z<d;e-d!edz  fd<„Z=dd=œd>e-d?e-d;e-d@edAe-dBe-dz  d!e*fdC„Z>d>e-d?e-dAe-d;e-d!e?f
dD„Z@d>e-d?e-d;e-d@edEe?d!e*fdF„ZAd>e-d?e-d;e-d@edAe-d!e*fdG„ZBd>e-d?e-dAe-dHe-dz  d!e-dz  f
dI„ZCd!efdJ„ZDd;e-d!efdK„ZEd>e-d?e-d!e8e-e-dz  f   fdL„ZFd;e-d!e-fdM„ZGd;e-d!efdN„ZHdOed!efdP„ZIdOed;e-d!efdQ„ZJ ej–                  dR«      ZLd;e-dSe-d!e-fdT„ZMde-d!e8e-e-e-f   fdU„ZNd)e-d!e-fdV„ZOdWed8e6e-   d!e;fdX„ZPy)[z0Contains helper utilities for hf CLI extensions.é    N)ÚasdictÚ	dataclass)ÚdatetimeÚtimezone)ÚPath)Ú	AnnotatedÚLiteral)ÚCLIErrorÚCLIExtensionInstallErrorÚConfirmationError)Úget_sessionÚloggingé   )Útyper_factory)Ú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.)ÚhelpÚmainzhf-extensioné
   i,  c                   ó¬   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   ed   ed<   eed	<   e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_nameÚexecutable_path)ÚbinaryÚpythonÚtypeÚinstalled_atÚsourceNÚdescriptionÚpathÚreturnc                 óä   — |t         z  }|j                  «       st        d|› d�«      ‚t        j                  |j                  «       «      }t        j                  |d   «      |d<   t        di |¤ŽS )NzManifest file not found at z". Your extension may be corrupted.r!   © )	ÚMANIFEST_FILENAMEÚis_filer
   ÚjsonÚloadsÚ	read_textr   Úfromisoformatr   )Úclsr$   Úmanifest_pathÚdatas       ú`/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/huggingface_hub/cli/extensions.pyÚloadzExtensionManifest.loadC   sn   € àÔ0Ñ0ˆØ×$Ñ$Ô&ÜÐ8¸¸ÐGiÐjÓkÐkÜ�z‰z˜-×1Ñ1Ó3Ó4ˆÜ'×5Ñ5°d¸>Ñ6JÓKˆˆ^ÑÜ Ñ( 4Ñ(Ð(ó    c                 óî   — |t         z  }|j                  j                  dd¬«       t        | «      }| j                  j                  «       |d<   |j                  t        j                  |dd¬«      «       y )NT©ÚparentsÚexist_okr!   é   )ÚindentÚ	sort_keys)	r(   ÚparentÚmkdirr   r!   Ú	isoformatÚ
write_textr*   Údumps)Úselfr$   r/   r0   s       r1   ÚsavezExtensionManifest.saveL   sc   € ØÔ0Ñ0ˆØ×Ñ×"Ñ"¨4¸$Ð"Ô?Ü�d‹|ˆØ#×0Ñ0×:Ñ:Ó<ˆˆ^ÑØ× Ñ ¤§¡¨D¸ÀdÔ!KÕLr3   )Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r	   r   r#   Úclassmethodr   r2   rA   r'   r3   r1   r   r   6   s~   … àƒJØ
ƒIØƒLØƒOØÓØÓØ
Ð$Ñ
%Ó%ØÓØƒKØ"€K��t‘Ó"àð)˜ð )Ð!4ò )ó ð)ðM˜ð M $ô Mr3   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.r%   c                 ó@  — t        |«      \  }}}| j                  «       }t        t        |j                  di «      j                  «       «      }||v rt        d|› d|› d�«      ‚t        |«      }|j                  «       }	|	r|st        d|› d�«      ‚t        ||¬«      \  }
}|	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   rO   r   Úextension_dirÚbranchr#   z extension installedú/úhf )r"   ÚcommandzRun it with: hf N)Ú_normalize_repo_idÚ	find_rootÚsetÚgetattrrT   Úkeysr
   Ú_get_extension_dirÚexistsÚ_resolve_github_repo_infoÚshutilÚrmtreeÚ_install_extension_from_githubr    Ú
capitalizer   ÚresultÚhint)rJ   r   rK   r   rO   r   Úroot_ctxÚreserved_commandsrP   Úextension_existsrQ   r#   ÚmanifestÚext_types                 r1   Úextension_installrh   T   s9  € ô* $6°gÓ#>Ñ €Eˆ9�jØ�}‰}‹€HÜœG H×$4Ñ$4°jÀ"ÓE×JÑJÓLÓMÐØÐ&Ñ&ÜØ(¨¨Ð4`ÐakÐ`lÐlvÐwó
ð 	
ô ' zÓ2€MØ$×+Ñ+Ó-ÐÙ¡Ü˜ Z LÐ0aÐbÓcÐcä3¸%È9ÔUÑ€FˆKáÜ�‰�mÔ$ä-ØØØØ#ØØô€Hð �}‰}×'Ñ'Ó)€HÜ‡J�JØˆ*Ð(Ð)Ø�˜˜)˜Ð%Ø�j�\Ð"õô
 ‡H�HÐ 
˜|Ð,Õ-r3   Ú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_settingsrI   Únamez.Extension name (with or without `hf-` prefix).c                 óØ   — t        |«      }t        |«      }|j                  «       st        d|› d�«      ‚t	        |t        | j                  «      ¬«      }t        j                  |¬«      ‚)zExecute an installed extension.rN   ú' is not installed.©r   Úargs)Úcode)	Ú_normalize_extension_nameÚ"_resolve_installed_executable_pathr)   r
   Ú_execute_extension_binaryÚlistrr   ÚtyperÚExit)rJ   rn   r   r   Ú	exit_codes        r1   Úextension_execr{   Œ   sa   € ô  +¨4Ó0€JÜ8¸ÓD€Oà×"Ñ"Ô$Ü˜ Z LÐ0CÐDÓEÐEä)¸/ÔPTÐUX×U]ÑU]ÓP^Ô_€IÜ
�*‰*˜)Ô
$Ð$r3   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.rS   z%Y-%m-%d)rT   r"   r    Ú	installedr#   rT   ©Úid_keyN)
Ú_list_installed_extensionsr   rE   r   r    r!   Ústrftimer#   r   Útable)rf   Úrowss     r1   Ú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        «       j                  ddt        › �ddddœdt        ¬«      } | j	                  «        | j                  «       }t        «       D �ch c]  }|j                  ’Œ }}g }|j                  d	g «      D ]b  }|d
   }|j                  d«      r|dd n|}|j                  ||d   |j                  dd«      |j                  d«      xs d||v rdnd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_pageT)ÚparamsÚfollow_redirectsÚtimeoutÚitemsrn   úhf-é   NÚ	full_nameÚstargazers_countr   r#   Ú Úyes)rn   r   r‡   r#   r}   r   r~   )r   ÚgetÚ_EXTENSIONS_GITHUB_TOPICÚ_EXTENSIONS_DOWNLOAD_TIMEOUTÚraise_for_statusr*   r€   r   Ú
startswithÚappendr   r‚   )Úresponser0   Úmr}   rƒ   r   rO   r   s           r1   Úextension_searchr    ¶   s  € ô ‹}× Ñ Ø4ØÔ6Ð7Ð8À'ÐTZÐhkÑlØÜ,ð	 !ó €Hð ×ÑÔØ�=‰=‹?€Dä'AÓ'CÖD !�—“ÐD€IÐDà€DØ—‘˜ "Ó%ò 
ˆØ˜‘Lˆ	Ø&/×&:Ñ&:¸5Ô&A�Y˜q˜r‘]Àyˆ
Ø�‰à"Ø˜[Ñ)ØŸ™Ð"4°aÓ8Ø#Ÿx™x¨Ó6Ò<¸"Ø&0°IÑ&=™UÀ2ñõ	
ð
ô ‡I�Iˆd˜6Ö"ùò! Es   ÁD 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.rN   rp   zExtension removed)rn   N)rt   rZ   Úis_dirr
   r]   r^   r   ra   )rn   r   rP   s      r1   Úextension_remover£   Õ   sT   € ô +¨4Ó0€JÜ& zÓ2€Mà×ÑÔ!Ü˜ Z LÐ0CÐDÓEÐEä
‡M�M�-Ô Ü‡J�JÐ"¨Ö4r3   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Úiterdirrn   rœ   r�   r   r2   Ú	ExceptionÚloggerÚdebug)Úroot_dirÚ	manifestsrP   Úes       r1   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   r#   r�   r   )Úentriesrf   ÚtagÚ	help_texts       r1   Ú"list_installed_extensions_for_helpr¶   û   sq   € Ø€GÜ.Ó0ò 9ˆØ˜H×,Ñ,Ð-¨QÐ/ˆØ7?×7KÑ7KÐ7W�x×+Ñ+Ð,¨A¨c¨UÑ3Ð]`ˆ	Ø�‰˜×+Ñ+¨YÐ7Õ8ð9ð €Nr3   rr   Úknown_commandsc                 ó”  — | sy | d   }|j                  d«      ry |D ��ch c](  }|j                  d«      D ]  }|j                  «       ’Œ Œ* }}}||v ry |j                  d«      r|dd  n|}|sy d }	 t        |«      }|�|j                  «       sy t        |t        | dd  «      ¬«      S c c}}w # t        $ r t        |«      }Y ŒHw xY w)Nr   ú-ú|r’   r“   r   rq   )	rœ   ÚsplitÚstripru   rª   Ú _auto_install_official_extensionr)   rv   rw   )rr   r·   Úcommand_nameÚcmdÚaÚ	all_knownr   r   s           r1   Ú$dispatch_unknown_top_level_extensionrÂ     sä   € ÙØà˜‘7€LØ×Ñ˜sÔ#ØØ&4×M˜s¸c¿i¹iÈ»nÒM¸�—‘•ÐM�ÐM€IÑMØ�yÑ Øà%1×%<Ñ%<¸UÔ%C�˜a˜bÑ!È€JÙØà#'€OðGÜ<¸ZÓHˆð Ð o×&=Ñ&=Ô&?Øä$°_Ì4ÐPTÐUVÐUWÐPXË>ÔZÐZùó# Nøô ò GÜ:¸:ÓFŠðGús    -B*Á3B0 Â0CÃCr   c           	      óT  — t         d| › �}}	 t        | «      }|j                  «       ry	 t	        «       j                  d|› d|› �dt        ¬«      }|j                  dk(  ry|j                  «        |j                  «       d   }	 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# t        $ r t#        j$                  |d¬«       Y yw xY w)zKTry to auto-install huggingface/hf-<name>. Returns executable path or None.r’   Núhttps://api.github.com/repos/rR   T©r�   r�   i”  Údefault_branchú'z)' is an official Hugging Face extension (z). Install it?©r   rO   r   rP   rQ   ©Úignore_errors)ÚDEFAULT_EXTENSION_OWNERrZ   rª   r[   r   r˜   rš   Ústatus_coder›   r*   r   Úconfirmr   r_   r   r   r§   r]   r^   )r   r   rO   rP   rž   rQ   rf   s          r1   r½   r½     sR  € ä.°#°j°\Ð0Bˆ9€EðÜ*¨:Ó6ˆð ×ÑÔØðÜ“=×$Ñ$Ø+¨E¨7°!°I°;Ð?Ø!Ü0ð %ó 
ˆð
 ×Ñ 3Ò&ØØ×!Ñ!Ô#Ø—‘“Ð!1Ñ2ˆðÜ�‰�a˜
�|Ð#LÈUÈGÐSTÐU^ÐT_Ð_mÐnÔoðÜ1Ø 9¸ÐS`Ðioô
ˆô �H×,Ñ,Ó-×8Ñ8Ó:Ð:øô1 ò Ùðûô ò Ùðûô ò Ùðûô ò Ü�‰�m°4Õ8ÙðúsL   �C ª5C& Á #C& ÂC5 Â$2D Ã	C#Ã"C#Ã&	C2Ã1C2Ã5	DÄ DÄ D'Ä&D')r#   r   rO   rP   rQ   r#   c                 óØ   — 	 t        | |||¬«      }|�t        | ||||¬«      }nt        | ||||¬«      }t	        | |||¬«      |_        |j                  |«       |S # t        $ r d}Y ŒWw xY w)zLFetch, install (binary or Python), and save manifest for a GitHub extension.)r   rO   rQ   r   N)r   rO   r   rP   r   rÈ   )r   rO   rQ   Úcandidate_description)Ú_fetch_remote_binaryrª   Ú_install_binary_extensionÚ_install_python_extensionÚ_try_fetch_remote_descriptionr#   rA   )r   rO   r   rP   rQ   r#   r   rf   s           r1   r_   r_   B  s‘   € ðÜ%¨E¸YÈvÐblÔmˆð ÐÜ,Ø 9¸ÐS`Ðioô
‰ô -Ø 9¸ÐS`Ðioô
ˆô 9Ø˜y°È{ô€HÔð ‡M�M�-Ô Ø€Oøô ò ØŠðús   ‚A ÁA)Á(A)c                 ó¬   — t        |«      }d| › d|› d|› d|› �}t        «       j                  |dt        ¬«      }|j	                  «        |j
                  S )Nú"https://raw.githubusercontent.com/rR   ú/refs/heads/TrÅ   )Ú_get_executable_namer   r˜   rš   r›   Úcontent)r   rO   rQ   r   r   Úraw_urlrž   s          r1   rÐ   rÐ   _  sa   € Ü*¨:Ó6€OØ2°5°'¸¸9¸+À\ÐRXÐQYÐYZÐ[jÐZkÐl€GÜ‹}× Ñ  ¸4ÔIeÐ Óf€HØ×ÑÔØ×ÑÐr3   r   c                 óN  — t        |«      }|j                  dd¬«       ||z  }|j                  |«       t        j                  dk7  rt        j
                  |d«       t        | || › d|› �||t        |«      dt        j                  t        j                  «      d| › d|› �¬	«	      S )
NTFr5   Úntií  rR   r   úhttps://github.com/©	r   r   r   r   r   r   r    r!   r"   )r×   r<   Úwrite_bytesÚosrn   Úchmodr   rE   r   Únowr   Úutc)r   rO   r   rP   r   r   r   s          r1   rÑ   rÑ   g  s¨   € ô +¨:Ó6€OØ×Ñ ¨uÐÔ5Ø# oÑ5€OØ×Ñ Ô'ô 
‡w�w�$‚Ü
�‰� %Ô(ô ØØØ�'˜˜9˜+Ð&ØØ'Ü˜OÓ,ØÜ—\‘\¤(§,¡,Ó/Ø$ U G¨1¨Y¨KÐ8ô
ð 
r3   c                 ó  — d| › d|› d|› d�}|dz  }d}t        j                  «       }	 |j                  d|› �«       |j                  «       rt	        j
                  |d¬	«       |j                  dd¬
«       t	        j                  d«      }	t        |«      }
|	rwt        j                  |	dt        |«      gd¬«       |j                  d|› �«       |j                  d|› �«       t        j                  |	dddt        |
«      |gdt        ¬«       n‚t        j                  d¬«      j!                  t        |«      «       |j                  d|› �«       |j                  d|› �«       t        j                  t        |
«      ddddd|gdt        ¬«       |j                  d|› �«       t#        |«      }t%        ||«      }|j'                  «       st)        d| › d|› d|› d�«      ‚t+        | || › d|› �||t        |j-                  «       «      dt/        j0                  t2        j4                  «      d| › d|› �¬«	      }d}||st	        j
                  |d¬	«       S S # t(        $ r ‚ t        j6                  $ r}t9        dt        › d| › d|› d�«      |‚d }~wt        j:                  $ r%}t9        d | › d|› d!|j<                  › d"�«      |‚d }~wt>        $ r}t9        d#| › d|› d$|› �«      |‚d }~ww xY w# |st	        j
                  |d¬	«       w w xY w)%NrÜ   rR   z/archive/refs/heads/z.zipÚvenvFz Creating virtual environment in TrÉ   r5   Úuv)ÚcheckzVirtual environment created in zInstalling package from ÚpiprH   z--python)ræ   r�   )Úwith_pipz-mz--disable-pip-version-checkz
--no-inputzPackage installed from zInstalled package from 'z/' does not expose the required console script 'ú'.r   rÝ   z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 set up pip extension from 'r¥   ) r   ÚstatusÚupdater[   r]   r^   r<   ÚwhichÚ_get_venv_python_pathÚ
subprocessÚrunrE   ÚdoneÚ_EXTENSIONS_PIP_INSTALL_TIMEOUTrä   Ú
EnvBuilderÚcreater×   Ú#_get_venv_extension_executable_pathr)   r
   r   Úresolver   rá   r   râ   ÚTimeoutExpiredr   ÚCalledProcessErrorÚ
returncoderª   )r   rO   r   rP   rQ   Ú
source_urlÚvenv_dirr}   rê   Úuv_pathÚvenv_pythonr   Úvenv_executablerf   r¯   s                  r1   rÒ   rÒ   ‚  sM  € ð ' u g¨Q¨y¨kÐ9MÈfÈXÐUYÐZ€JØ˜vÑ%€HØ€Iä�Z‰Z‹\€FðK=Ø�‰Ð8¸¸
ÐCÔDØ×ÑÔ!Ü�M‰M˜-°tÕ<Ø×Ñ D°5ÐÔ9ä—,‘,˜tÓ$ˆÜ+¨HÓ5ˆÙÜ�N‰N˜G V¬S°«]Ð;À4ÕHØ�K‰KÐ9¸(¸ÐDÔEà�M‰MÐ4°Z°LÐAÔBÜ�N‰NØ˜% ¨J¼¸KÓ8HÈ*ÐUØÜ7öô �O‰O TÔ*×1Ñ1´#°h³-Ô@Ø�K‰KÐ9¸(¸ÐDÔEà�M‰MÐ4°Z°LÐAÔBÜ�N‰Nä˜Ó$ØØØØ1Ø Øðð Ü7õð 	�‰Ð-¨j¨\Ð:Ô;ä.¨zÓ:ˆÜ=¸hÈ
ÓSˆØ×&Ñ&Ô(ÜØ*¨5¨'°°9°+ð >Ø#Ð$ Bð(óð ô
 %ØØØ�g˜Q˜y˜kÐ*Ø!Ø+Ü × 7Ñ 7Ó 9Ó:ØÜ!Ÿ™¤h§l¡lÓ3Ø(¨¨¨q°°Ð<ô

ˆð ˆ	Øñ  Ü�M‰M˜-°tÖ<ð øô ò ØÜ×$Ñ$ò Ü&Ø*Ô+JÐ*KÈ7ÐSXÐRYÐYZÐ[dÐZeð f0ð 0ó
ð ð	ûô ×(Ñ(ò Ü&Ø2°5°'¸¸9¸+À]ÐST×S_ÑS_ÐR`ð a0ð 0ó
ð ð	ûô ò qÜ&Ð)NÈuÈgÐUVÐW`ÐVaÐadÐefÐdgÐ'hÓiÐopÐpûðqûñ Ü�M‰M˜-°tÖ<ð ús<   ©HI ÉK)É3JÊK)Ê# KËK)ËK$Ë$K)Ë)K, Ë,LrÏ   c           
      ó~  — 	 t        «       j                  d| › d|› d|› dt        › �d¬«      }|j                  «        |j	                  «       }|j                  d«      }t        |t        «      r|S 	 	 t        «       j                  d| › d|› d|› d�d¬«      }|j                  «        |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Õ   rR   rÖ   T)r�   r#   z/pyproject.tomlú=z"')r   r˜   r(   r›   r*   Ú
isinstancerE   rª   ÚtextÚ
splitlinesr¼   rœ   Ú	partition)
r   rO   rQ   rÏ   rž   r0   r#   ÚlineÚ_Úvalues
             r1   rÓ   rÓ   Ø  s[  € ðÜ“=×$Ñ$Ø0°°°q¸¸À<ÐPVÈxÐWXÔYjÐXkÐlØ!ð %ó 
ˆð 	×!Ñ!Ô#Ø�}‰}‹ˆØ—h‘h˜}Ó-ˆÜ�k¤3Ô'ØÐð (ðÜ“=×$Ñ$Ø0°°°q¸¸À<ÐPVÈxÐWfÐgØ!ð %ó 
ˆð 	×!Ñ!Ô#ð —M‘M×,Ñ,Ó.ò 	2ˆDØ—:‘:“<ˆDØ�‰˜}Õ-Ø"Ÿn™n¨SÓ1‘��1�eØ—{‘{“}×*Ñ*¨5Ó1Ò1ñ		2ð !Ð øô+ ò Ùðûô" ò Øð !Ð ð	ús1   ‚A-D  Á2A3D/ Ã&5D/ ÄD/ Ä 	D,Ä+D,Ä/	D<Ä;D<c                  óT   — t         j                  «       } | j                  dd¬«       | S )NTr5   )r¦   r§   r<   )r­   s    r1   Ú_get_extensions_rootr    s%   € Ü×)Ñ)Ó+€HØ‡N�N˜4¨$€NÔ/Ø€Or3   c                 ó¶   — t        | | ¬«      }t        «       j                  «       }|d|› �z  j                  «       }||j                  vrt	        d| › d�«      ‚|S )N©Úoriginal_inputr’   úInvalid extension name 'ré   )Ú_validate_extension_short_namer  rõ   r6   r
   )r   Ú	safe_nameÚrootÚtargets       r1   rZ   rZ   
  s_   € Ü.¨zÈ*ÔU€IÜÓ!×)Ñ)Ó+€DØ�s˜9˜+Ð&Ñ&×/Ñ/Ó1€FØ�6—>‘>Ñ!ÜÐ1°*°¸RÐ@ÓAÐAØ€Mr3   c                 óê   — 	 t        «       j                  d| › d|› �dt        ¬«      }|j                  «        |j	                  «       }|d   |j                  d«      fS # t
        $ r t        d fcY S w xY w)NrÄ   rR   TrÅ   rÆ   r#   )r   r˜   rš   r›   r*   rª   Ú_EXTENSIONS_DEFAULT_BRANCH)r   rO   rž   r0   s       r1   r\   r\     s�   € ð
0Ü“=×$Ñ$Ø+¨E¨7°!°I°;Ð?Ø!Ü0ð %ó 
ˆð
 	×!Ñ!Ô#Ø�}‰}‹ˆØÐ$Ñ% t§x¡x°Ó'>Ð>Ð>øÜò 0Ü)¨4Ð/Ò/ð0ús   ‚AA ÁA2Á1A2c                 ó@   — d| › �}t         j                  dk(  r|dz  }|S )Nr’   rÛ   z.exe©rß   rn   )r   rn   s     r1   r×   r×   !  s'   € Ø��Ð€DÜ	‡w�w�$‚Ø�‰ˆØ€Kr3   c                 óˆ   — t        | «      }t        j                  |«      }t        |j                  «      j                  «       S ©N)rZ   r   r2   r   r   r§   )r   rP   rf   s      r1   ru   ru   (  s6   € Ü& zÓ2€MÜ ×%Ñ% mÓ4€HÜ�×(Ñ(Ó)×4Ñ4Ó6Ð6r3   rú   c                 óH   — t         j                  dk(  r| dz  dz  S | dz  dz  S )NrÛ   ÚScriptsz
python.exeÚbinr   r  )rú   s    r1   rí   rí   .  s-   € Ü	‡w�w�$‚Ø˜)Ñ# lÑ2Ð2Ø�eÑ˜hÑ&Ð&r3   c                 ó^   — t        |«      }t        j                  dk(  r| dz  |z  S | dz  |z  S )NrÛ   r  r  )r×   rß   rn   )rú   r   r   s      r1   rô   rô   4  s7   € Ü*¨:Ó6€OÜ	‡w�w�$‚Ø˜)Ñ# oÑ5Ð5Ø�eÑ˜oÑ-Ð-r3   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 )	NúExtension name cannot be empty.c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr  r'   )Ú.0Úseprn   s     €r1   ú	<genexpr>z1_validate_extension_short_name.<locals>.<genexpr>B  s   øè ø€ Ò
.˜3ˆ3�$Œ;Ñ
.ùs   ƒ)rR   ú\r  ré   z..ú:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)r¼   r
   ÚanyÚ_ALLOWED_EXTENSION_NAMEÚ	fullmatch)r   r  rn   s     @r1   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ó
ð 	
ð €Kr3   c                 óZ  — 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�«      ‚|dd  }|st        d«      ‚t        || ¬«       |||fS )Nz://zEOnly GitHub repositories in `[OWNER/]hf-<name>` format are supported.rR   r   r   r8   z%Expected `[OWNER/]REPO` format, got 'ré   r’   z6Extension repository name must start with 'hf-', got 'r“   z(Invalid extension repository name 'hf-'.r
  )r
   r»   ÚlenrË   Úallrœ   r  )r   Úpartsr   rO   r   s        r1   rU   rU   M  sÃ   € Ø�ÑÜÐ^Ó_Ð_à�M‰M˜#Ó€EÜ
ˆ5ƒz�Q‚Ü'ˆØ˜!‘H‰	Ü	ˆU‹�qŠœS œZØ Ñˆ‰yäÐ>¸w¸iÀrÐJÓKÐKà×Ñ Ô&ÜÐOÐPYÈ{ÐZ\Ð]Ó^Ð^à˜1˜2�€JÙÜÐAÓBÐBÜ" :¸gÕFà�)˜ZÐ'Ð'r3   c                 ó†   — | j                  «       }|st        d«      ‚|j                  d«      r|dd  n|}t        || ¬«      S )Nr  r’   r“   r
  )r¼   r
   rœ   r  )rn   Ú	candidateÚ
normalizeds      r1   rt   rt   e  sC   € Ø—
‘
“€IÙÜÐ8Ó9Ð9Ø"+×"6Ñ"6°uÔ"=�˜1˜2‘À9€JÜ)¨*ÀTÔJÐJr3   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î   ÚcallrE   ÚOSErrorrß   rn   ÚerrnoÚENOEXEC)r   rr   r¯   s      r1   rv   rv   m  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)F)r%   N)QÚ__doc__r1  r*   rß   Úrer]   rî   rä   Údataclassesr   r   r   r   Úpathlibr   Útypingr   r	   rx   Úhuggingface_hub.errorsr
   r   r   Úhuggingface_hub.utilsr   r   Ú
_cli_utilsr   Ú_outputr   rË   r¦   r(   ÚEXTENSIONS_HELPÚextensions_clir  r™   rš   rñ   Ú
get_loggerrB   r«   r   rT   ÚContextrE   ÚArgumentÚboolÚOptionrh   r{   r„   r    r£   rw   r€   Útupler¶   rW   ÚintrÂ   r½   r_   ÚbytesrÐ   rÑ   rÒ   rÓ   r  rZ   r\   r×   ru   rí   rô   Úcompiler$  r  rU   rt   rv   r'   r3   r1   ú<module>rG     s  ðñ 7ã Û Û 	Û 	Û Û Û ß )ß 'Ý ß %ã ç XÑ Xß 6å %Ý ð (Ð ÙÐ5Ó6€Ø#Ð ð+ð ñ
  OÔ4€Ø#Ð Ø)Ð Ø!Ð Ø"%Ð à	ˆ×	Ñ	˜HÓ	%€ð ÷Mð Mó ðMð: ×ÑØòð ó ð _dñ-.Ø	�‰ð-.àØØˆ�‰ÐXÔYð	[ñð-.ð �T˜<˜5Ÿ<™<¨	Ð8YÔZÐZÑ[ð-.ð 
ò-.óð-.ð` ×ÑØ
Ø*.È5ÐlpÑqà-Ø9ðð ó ð%Ø	�‰ð%à
ØØˆ�‰ÐLÔMð	Oñð%ð 
ò%óð%ð$ ×Ñ˜Ð/CÐ.DÐÓEò&ó Fð&ð ×Ñ˜Ð,BÐ+CÐÓDò#ó Eð#ð< ×Ñ˜Ð1NÐ0OÐÓPð5Ø
ØØˆ�‰ÐVÔWð	Yñð5ð
 
ò5ó Qð5ð( DÐ):Ñ$;ó ð"¨D°°s¸C°x±Ñ,Aó ð[¨t°C©yð [È#ÈcÉ(ð [ÐWZÐ]aÑWaó [ð6 °ð  ¸À¹ó  ðT #òàðð ðð ð	ð
 ðð ðð �t‘ðð óð: ð °ð ¸Sð Ècð ÐV[ó ðØðØ!ðØ/2ðØCGðØQVðàóð6S=ØðS=Ø!ðS=Ø/2ðS=ØCGðS=ØQTðS=àóS=ðl)!Øð)!Øð)!Ø(+ð)!ØDGÈ$ÁJð)!àˆ4�Zó)!ðX˜dó ð 3ð ¨4ó ð0 Sð 0°Sð 0¸UÀ3ÈÈdÉ
À?Ñ=Só 0ð Sð ¨Só ð7°3ð 7¸4ó 7ð' Dð '¨Tó 'ð.°$ð .ÀCð .ÈDó .ð %˜"Ÿ*™*Ð%DÓEÐ ð¨sð Àsð Èsó ð( ð (¨¨c°3¸¨mÑ(<ó (ð0K Cð K¨Có KðD¨tð D¸4À¹9ð DÈô Dr3   