Ë
    (täi­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mZ d	d
lmZmZ d	dlmZm Z  dZ! ed«      Z"dZ#dZ$ ee$¬«      Z%dZ&dZ'dZ(dZ) ejT                  e+«      Z,e
 G d„ d«      «       Z-e%j]                  dg d¢¬«      	 dZdej^                  dee0 ejb                  d¬«      f   dee2 ejf                  dd ¬«      f   d!dfd"„«       Z4e%j]                  d#d$dd$d%œd&d'g¬(«      dej^                  d)ee0 ejb                  d*¬«      f   d!dfd+„«       Z5e%j]                  d,d-g¬«      ejl                  fd.ed!dfd/„«       Z7e%j]                  d0d1g¬«      ejl                  fd.ed!dfd2„«       Z8e%j]                  d3d4g¬«      d)ee0 ejb                  d5¬«      f   d!dfd6„«       Z9d!e:e-   fd7„Z;d!e:e<e0e0f      fd8„Z=d9e:e0   d:e>e0   d!e?dz  fd;„Z@d<e0d!edz  fd=„ZAdd>œd?e0d@e0d<e0dAedBe0dCe0dz  d!e-fdD„ZBd?e0d@e0dBe0d<e0d!eCf
dE„ZDd?e0d@e0d<e0dAedFeCd!e-fdG„ZEd?e0d@e0d<e0dAedBe0d!e-fdH„ZFd?e0d@e0dBe0dIe0dz  d!e0dz  f
dJ„ZGd!efdK„ZHd<e0d!efdL„ZId?e0d@e0d!e<e0e0dz  f   fdM„ZJd<e0d!e0fdN„ZKd<e0d!efdO„ZLdPed!efdQ„ZMdPed<e0d!efdR„ZN ejž                  dS«      ZPd<e0dTe0d!e0fdU„ZQde0d!e<e0e0e0f   fdV„ZRd)e0d!e0fdW„ZSdXed9e:e0   d!e?fdY„ZTy)[z0Contains helper utilities for hf CLI extensions.é    N)ÚasdictÚ	dataclass)ÚdatetimeÚtimezone)ÚPath)Ú	AnnotatedÚLiteral)ÚCLIErrorÚCLIExtensionInstallErrorÚConfirmationError)Ú
StatusLineÚget_sessionÚloggingé   )ÚFormatWithAutoOptÚtyper_factory)ÚOutputFormatWithAutoÚ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       úm/Volumes/fast/ai/experiments/MLX_z-image/.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'   r2   r3   s       r4   ÚsavezExtensionManifest.saveL   sc   € ØÔ0Ñ0ˆØ×Ñ×"Ñ"¨4¸$Ð"Ô?Ü�d‹|ˆØ#×0Ñ0×:Ñ:Ó<ˆˆ^ÑØ× Ñ ¤§¡¨D¸ÀdÔ!KÕLr6   )Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r	   r   r&   Úclassmethodr   r5   rD   r*   r6   r4   r   r   6   s~   … àƒJØ
ƒIØƒLØƒOØÓØÓØ
Ð$Ñ
%Ó%ØÓØƒKØ"€K��t‘Ó"àð)˜ð )Ð!4ò )ó ð)ðM˜ð M $ô Mr6   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        |› d	|› d
|› d�«       t        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   rR   r   Úextension_dirÚbranchr&   z' extension installed successfully from Ú/Ú.zRun it with: hf N)Ú_normalize_repo_idÚ	find_rootÚsetÚgetattrÚcommandÚkeysr
   Ú_get_extension_dirÚexistsÚ_resolve_github_repo_infoÚshutilÚrmtreeÚ_install_extension_from_githubr#   Ú
capitalizeÚprint)rM   r   rN   r   rR   r   Úroot_ctxÚreserved_commandsrS   Úextension_existsrT   r&   ÚmanifestÚext_types                 r4   Úextension_installrj   T   s!  € ô* $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Ü	ˆXˆJÐ=¸e¸WÀAÀiÀ[ÐPQÐ
RÔSÜ	Ð˜Z˜LÐ
)Õ*r6   Ú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_settingsrL   Ú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.rQ   ú' is not installed.©r    Úargs)Úcode)	Ú_normalize_extension_nameÚ"_resolve_installed_executable_pathr,   r
   Ú_execute_extension_binaryÚlistrt   ÚtyperÚExit)rM   rp   r   r    Ú	exit_codes        r4   Úextension_execr}   ˆ   sa   € ô  +¨4Ó0€JÜ8¸ÓD€Oà×"Ñ"Ô$Ü˜ Z LÐ0CÐDÓEÐEä)¸/ÔPTÐUX×U]ÑU]ÓP^Ô_€IÜ
�*‰*˜)Ô
$Ð$r6   z	list | lszhf extensions listÚformatc           	      ó"  — 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.zhf z%Y-%m-%d)r[   r%   r#   Ú	installedr&   r[   )Úid_keyN)
Ú_list_installed_extensionsr   rH   r   r#   r$   Ústrftimer&   r   Útable)r~   rh   Úrowss      r4   Úextension_listr†   ¢   sŠ   € ô 3Ô4ó	ñ 5ˆHð ˜X×0Ñ0Ð1Ð2Ü˜(×*Ñ*Ó+Ü˜Ÿ™Ó&Ø!×.Ñ.×7Ñ7¸
ÓCØ#×/Ñ/ó	
ð 5ð 	ð 	ô ‡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ddi¬«       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Úitemsrp   úhf-é   NÚ	full_nameÚstargazers_countr   r&   Ú Úyes)rp   r   r‰   r&   r€   r   Úright)r�   Ú
alignments)r   ÚgetÚ_EXTENSIONS_GITHUB_TOPICÚ_EXTENSIONS_DOWNLOAD_TIMEOUTÚraise_for_statusr-   r‚   r   Ú
startswithÚappendr   r„   )	r~   Úresponser3   Úmr€   r…   r   rR   r   s	            r4   Úextension_searchr¤   ²   s  € ô ‹}× Ñ Ø4ØÔ6Ð7Ð8À'ÐTZÐhkÑlØÜ,ð	 !ó €Hð ×ÑÔØ�=‰=‹?€Dä'AÔ'CÓDÑ'C !�—“Ð'C€IÐDà€DØ—‘˜ "Ö%ˆØ˜‘Lˆ	Ø&/×&:Ñ&:¸5Ô&A�Y˜q˜r‘]Àyˆ
Ø�‰à"Ø˜[Ñ)ØŸ™Ð"4°aÓ8Ø#Ÿx™x¨Ó6Ò<¸"Ø&0°IÑ&=™UÀ2ñõ	
ð &ô ‡I�Iˆd˜6¨w¸Ð.@ÖAùò! 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        d|› d�«       y)zRemove an installed extension.rQ   rr   zRemoved extension 'ú'.N)rv   r]   Úis_dirr
   r`   ra   rd   )rp   r   rS   s      r4   Úextension_remover¨   Ñ   sW   € ô +¨4Ó0€JÜ& zÓ2€Mà×ÑÔ!Ü˜ Z LÐ0CÐDÓEÐEä
‡M�M�-Ô Ü	Ð 
˜|¨2Ð
.Õ/r6   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Úiterdirrp   r    r¡   r   r5   Ú	ExceptionÚloggerÚdebug)Úroot_dirÚ	manifestsrS   Úes       r4   r‚   r‚   æ   s¾   € ä×)Ñ)Ó+€HØ�?‰?ÔØˆ	Ø€IÜ × 0Ñ 0Ó 2Ö3ˆØ×#Ñ#Ô%¨]×-?Ñ-?×-JÑ-JÈ5Ô-QØð	Ø×ÑÔ.×3Ñ3°MÓBÕCð	 4ð Ðøô ò 	Ü�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   )Úentriesrh   ÚtagÚ	help_texts       r4   Ú"list_installed_extensions_for_helpr»   ÷   sl   € Ø€GÜ.Ö0ˆØ˜H×,Ñ,Ð-¨QÐ/ˆØ7?×7KÑ7KÐ7W�x×+Ñ+Ð,¨A¨c¨UÑ3Ð]`ˆ	Ø�‰˜×+Ñ+¨YÐ7Õ8ð 1ð €Nr6   rt   Ú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   rs   )	r    ÚsplitÚstriprw   r¯   Ú _auto_install_official_extensionr,   rx   ry   )rt   r¼   Úcommand_nameÚcmdÚaÚ	all_knownr   r    s           r4   Ú$dispatch_unknown_top_level_extensionrÇ      sá   € ÙØà˜‘7€LØ×Ñ˜sÔ#ØÙ&4ÔM¡n˜s¸c¿i¹iÈ¾n¸�—‘•¸n� n€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/rU   T©r‘   r’   i”  Údefault_branchÚ'z)' is an official Hugging Face extension (z). Install it?©r   rR   r   rS   rT   ©Úignore_errors)ÚDEFAULT_EXTENSION_OWNERr]   r¯   r^   r   rœ   rž   Ústatus_coderŸ   r-   r   Úconfirmr   rb   r   r    r¬   r`   ra   )r   r   rR   rS   r¢   rT   rh   s          r4   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   rR   rS   rT   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   rR   rT   r   N)r   rR   r   rS   r!   rÍ   )r   rR   rT   Úcandidate_description)Ú_fetch_remote_binaryr¯   Ú_install_binary_extensionÚ_install_python_extensionÚ_try_fetch_remote_descriptionr&   rD   )r   rR   r   rS   rT   r&   r!   rh   s           r4   rb   rb   >  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/rU   ú/refs/heads/TrÊ   )Ú_get_executable_namer   rœ   rž   rŸ   Úcontent)r   rR   rT   r   r   Úraw_urlr¢   s          r4   rÕ   rÕ   [  sa   € Ü*¨:Ó6€OØ2°5°'¸¸9¸+À\ÐRXÐQYÐYZÐ[jÐZkÐl€GÜ‹}× Ñ  ¸4ÔIeÐ Óf€HØ×ÑÔØ×ÑÐr6   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 )
NTFr8   Úntií  rU   r!   úhttps://github.com/©	r   r   r   r   r   r    r#   r$   r%   )rÜ   r?   Úwrite_bytesÚosrp   Úchmodr   rH   r   Únowr   Úutc)r   rR   r   rS   r!   r   r    s          r4   rÖ   rÖ   c  s¨   € ô +¨:Ó6€OØ×Ñ ¨uÐÔ5Ø# oÑ5€OØ×Ñ Ô'ô 
‡w�w�$‚Ü
�‰� %Ô(ô ØØØ�'˜˜9˜+Ð&ØØ'Ü˜OÓ,ØÜ—\‘\¤(§,¡,Ó/Ø$ U G¨1¨Y¨KÐ8ô
ð 
r6   c                 ó  — d| › d|› d|› d�}|dz  }d}t        «       }	 |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-        j.                  t0        j2                  «      d| › d|› �¬«	      }d}||st        j                  |d¬	«       S S # t&        $ r ‚ t        j4                  $ r}t7        dt        › d| › d|› d�«      |‚d }~wt        j8                  $ r%}t7        d | › d|› d!|j:                  › d"�«      |‚d }~wt<        $ r}t7        d#| › d|› d$|› �«      |‚d }~ww xY w# |st        j                  |d¬	«       w w xY w)%Nrá   rU   z/archive/refs/heads/z.zipÚvenvFz Creating virtual environment in TrÎ   r8   Úuv)ÚcheckzVirtual environment created in zInstalling package from ÚpiprK   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"   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   Úupdater^   r`   ra   r?   ÚwhichÚ_get_venv_python_pathÚ
subprocessÚrunrH   ÚdoneÚ_EXTENSIONS_PIP_INSTALL_TIMEOUTré   Ú
EnvBuilderÚcreaterÜ   Ú#_get_venv_extension_executable_pathr,   r
   r   Úresolver   ræ   r   rç   ÚTimeoutExpiredr   ÚCalledProcessErrorÚ
returncoder¯   )r   rR   r   rS   rT   Ú
source_urlÚvenv_dirr€   ÚstatusÚuv_pathÚvenv_pythonr   Úvenv_executablerh   r´   s                  r4   r×   r×   ~  sI  € ð ' u g¨Q¨y¨kÐ9MÈfÈXÐUYÐZ€JØ˜vÑ%€HØ€Iä‹\€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É)JÊKÊ J9Ê9KËKËKËK" Ë"K>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Ú   rU   rÛ   T)r‘   r&   z/pyproject.tomlÚ=z"')r   rœ   r+   rŸ   r-   Ú
isinstancerH   r¯   ÚtextÚ
splitlinesrÁ   r    Ú	partition)
r   rR   rT   rÔ   r¢   r3   r&   ÚlineÚ_Úvalues
             r4   rØ   rØ   Ô  sV  € ðÜ“=×$Ñ$Ø0°°°q¸¸À<ÐPVÈxÐWXÔYjÐXkÐlØ!ð %ó 
ˆð 	×!Ñ!Ô#Ø�}‰}‹ˆØ—h‘h˜}Ó-ˆÜ�k¤3Ô'ØÐð (ðÜ“=×$Ñ$Ø0°°°q¸¸À<ÐPVÈxÐWfÐgØ!ð %ó 
ˆð 	×!Ñ!Ô#ð —M‘M×,Ñ,Ö.ˆDØ—:‘:“<ˆDØ�‰˜}Õ-Ø"Ÿn™n¨SÓ1‘��1�eØ—{‘{“}×*Ñ*¨5Ó1Ò1ñ	 /ð !Ð øô+ ò Ùðûô" ò Øð !Ð ð	ús1   ‚A-D  Á2A3D/ Ã&5D/ ÄD/ Ä 	D,Ä+D,Ä/	D<Ä;D<c                  óT   — t         j                  «       } | j                  dd¬«       | S )NTr8   )r«   r¬   r?   )r²   s    r4   Ú_get_extensions_rootr     s%   € Ü×)Ñ)Ó+€HØ‡N�N˜4¨$€NÔ/Ø€Or6   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ø   r9   r
   )r   Ú	safe_nameÚrootÚtargets       r4   r]   r]     s_   € Ü.¨zÈ*ÔU€IÜÓ!×)Ñ)Ó+€DØ�s˜9˜+Ð&Ñ&×/Ñ/Ó1€FØ�6—>‘>Ñ!ÜÐ1°*°¸RÐ@ÓAÐAØ€Mr6   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É   rU   TrÊ   rË   r&   )r   rœ   rž   rŸ   r-   r¯   Ú_EXTENSIONS_DEFAULT_BRANCH)r   rR   r¢   r3   s       r4   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ä   rp   )r   rp   s     r4   rÜ   rÜ     s'   € Ø��Ð€DÜ	‡w�w�$‚Ø�‰ˆØ€Kr6   c                 óˆ   — t        | «      }t        j                  |«      }t        |j                  «      j                  «       S ©N)r]   r   r5   r   r    r¬   )r   rS   rh   s      r4   rw   rw   $  s6   € Ü& zÓ2€MÜ ×%Ñ% mÓ4€HÜ�×(Ñ(Ó)×4Ñ4Ó6Ð6r6   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    r4   rð   rð   *  s-   € Ü	‡w�w�$‚Ø˜)Ñ# lÑ2Ð2Ø�eÑ˜hÑ&Ð&r6   c                 ó^   — t        |«      }t        j                  dk(  r| dz  |z  S | dz  |z  S )Nrà   r  r  )rÜ   rä   rp   )rý   r   r   s      r4   r÷   r÷   0  s7   € Ü*¨:Ó6€OÜ	‡w�w�$‚Ø˜)Ñ# oÑ5Ð5Ø�eÑ˜oÑ-Ð-r6   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Úseprp   s     €r4   Ú	<genexpr>z1_validate_extension_short_name.<locals>.<genexpr>>  s   øè ø€ Ð
.¡+˜3ˆ3�$Œ;¡+ùs   ƒ)rU   Ú\r  r¦   z..Ú:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)rÁ   r
   ÚanyÚ_ALLOWED_EXTENSION_NAMEÚ	fullmatch)r   r  rp   s     @r4   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ó
ð 	
ð €Kr6   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.rU   r   r   r;   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   rR   r   s        r4   rW   rW   I  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Ð'Ð'r6   c                 ó†   — | j                  «       }|st        d«      ‚|j                  d«      r|dd  n|}t        || ¬«      S )Nr   r”   r•   r  )rÁ   r
   r    r  )rp   Ú	candidateÚ
normalizeds      r4   rv   rv   a  sC   € Ø—
‘
“€IÙÜÐ8Ó9Ð9Ø"+×"6Ñ"6°uÔ"=�˜1˜2‘À9€JÜ)¨*ÀTÔJÐJr6   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ñ   ÚcallrH   ÚOSErrorrä   rp   ÚerrnoÚENOEXEC)r    rt   r´   s      r4   rx   rx   i  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)UÚ__doc__r5  r-   rä   Úrer`   rñ   ré   Údataclassesr   r   r   r   Úpathlibr   Útypingr   r	   rz   Úhuggingface_hub.errorsr
   r   r   Úhuggingface_hub.utilsr   r   r   Ú
_cli_utilsr   r   Ú_outputr   r   rÐ   r«   r+   ÚEXTENSIONS_HELPÚextensions_clir  r�   rž   rô   Ú
get_loggerrE   r°   r   r[   ÚContextrH   ÚArgumentÚboolÚOptionrj   r}   Úautor†   r¤   r¨   ry   r‚   Útupler»   rY   ÚintrÇ   rÂ   rb   ÚbytesrÕ   rÖ   r×   rØ   r  r]   r_   rÜ   rw   rð   r÷   Úcompiler(  r  rW   rv   rx   r*   r6   r4   Ú<module>rL     sL  ðñ 7ã Û Û 	Û 	Û Û Û ß )ß 'Ý ß %ã ç XÑ Xß BÑ Bç 8ß .ð (Ð ÙÐ5Ó6€Ø#Ð ð+ð ñ
  OÔ4€Ø#Ð Ø)Ð Ø!Ð Ø"%Ð à	ˆ×	Ñ	˜HÓ	%€ð ÷Mð Mó ðMð: ×ÑØòð ó ð _dñ)+Ø	�‰ð)+àØØˆ�‰ÐXÔYð	[ñð)+ð �T˜<˜5Ÿ<™<¨	Ð8YÔZÐZÑ[ð)+ð 
ò)+óð)+ðX ×ÑØ
Ø*.È5ÐlpÑqà-Ø9ðð ó ð%Ø	�‰ð%à
ØØˆ�‰ÐLÔMð	Oñð%ð 
ò%óð%ð$ ×Ñ˜Ð/CÐ.DÐÓEØ/C×/HÑ/Hñ &Ð,ð &ÈTò &ó Fð&ð ×Ñ˜Ð,BÐ+CÐÓDØ1E×1JÑ1Jñ BÐ.ð BÈtò Bó EðBð< ×Ñ˜Ð1NÐ0OÐÓPð0Ø
ØØˆ�‰ÐVÔWð	Yñð0ð
 
ò0ó Qð0ð( 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r6   