§
    ìXÊjÔr  ã                   ó  — 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 ddlmZmZ ddl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j.        e/¦  «        Z0 G d„ de¦  «        Z1 G d„ de2e¦  «        Z3e
 G d„ d¦  «        ¦   «         Z4e* 5                    dg d¢¬¦  «        	 dld!ej6        d"ee2 e"d#¬¦  «        f         d$ee7 e#d%d&¬¦  «        f         d'dfd(„¦   «         Z8e* 5                    d)g d*¢¬¦  «        	 dmd+ee2dz   e"d,¬¦  «        f         d'dfd-„¦   «         Z9e* 5                    d.d/d d/d0œd1d2g¬3¦  «        d!ej6        d+ee2 e"d4¬¦  «        f         d'dfd5„¦   «         Z:e* 5                    d6d7g¬¦  «        dnd8„¦   «         Z;e* 5                    d9d:g¬¦  «        dnd;„¦   «         Z<e* 5                    d<d=g¬¦  «        d+ee2 e"d>¬¦  «        f         d'dfd?„¦   «         Z=d'e>e4         fd@„Z?d'e>e@e2e2f                  fdA„ZAdBe>e2         dCeBe2         d'eCdz  fdD„ZDdEe2d'edz  fdF„ZEd+e2d'e4fdG„ZFdHe4d'e3fdI„ZGddJœdKe2dLe2dEe2dMe2dz  d'e4f
dN„ZHdKe2dLe2d'e2fdO„ZIdKe2dLe2dEe2d'eJfdP„ZKdQedEe2dReJd'efdS„ZLdQedKe2dLe2dEe2d'ef
dT„ZM ejN        dU¦  «        ZOdKe2dLe2d'e2dz  fdV„ZPdEe2d'efdW„ZQdddXœdYe2dZe2d[eRdz  d\eRdz  d'ejS        f
d]„ZTd\ejU        d'e2fd^„ZVdKe2dLe2d'e7fd_„ZWdEe2d'e2fd`„ZXdEe2d'efda„ZYdbedce2d'efdd„ZZ ejN        de¦  «        Z[dEe2dfe2d'e2fdg„Z\d"e2d'e@e2e2e2f         fdh„Z]d+e2d'e2fdi„Z^djedBe>e2         d'eCfdk„Z_dS )oz0Contains helper utilities for hf CLI extensions.é    N)ÚasdictÚ	dataclass)ÚdatetimeÚtimezone)ÚEnum)Úunescape)Ú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S )Ú_GitHubRateLimitErrora  The GitHub API refused the request because a rate limit is exhausted.

    Distinguished from other `CLIError`s because it says nothing about the extension being handled:
    it is not worth retrying on the next one, and it must not be mistaken for an install failure.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úOC:\Projects\Historical\venv\Lib\site-packages\huggingface_hub/cli/extensions.pyr   r   9   s   € € € € € ðð ð ð r    r   c                   ó   — e Zd ZdZdZdZdS )Ú_ExtensionUpdateStatusÚupdatedÚ
up_to_dateÚskippedN)r   r   r   ÚUPDATEDÚ
UP_TO_DATEÚSKIPPEDr   r    r!   r#   r#   A   s   € € € € € Ø€GØ€JØ€G€G€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d	S )ÚExtensionManifestÚownerÚrepoÚrepo_idÚ
short_nameÚexecutable_path)ÚbinaryÚpythonÚtypeÚinstalled_atNÚdescriptionÚ
commit_shaÚpathÚreturnc                 óD  ‡ — |t           z  }|                     ¦   «         st          d|› d�¦  «        ‚t          j        |                     ¦   «         ¦  «        }ˆ fd„|                     ¦   «         D ¦   «         }t          j        |d         ¦  «        |d<   t          di |¤ŽS )NzManifest file not found at z". Your extension may be corrupted.c                 ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   )Ú__dataclass_fields__)Ú.0ÚkeyÚvalueÚclss      €r!   ú
<dictcomp>z*ExtensionManifest.load.<locals>.<dictcomp>Z   s,   ø€ Ð]Ð]Ð]™z˜s E¸SÀCÔD\Ð=\Ð=\��UÐ=\Ð=\Ð=\r    r4   r   )
ÚMANIFEST_FILENAMEÚis_filer   ÚjsonÚloadsÚ	read_textÚitemsr   Úfromisoformatr+   )r?   r7   Úmanifest_pathÚdatas   `   r!   ÚloadzExtensionManifest.loadS   s§   ø€ àÕ0Ñ0ˆØ×$Ò$Ñ&Ô&ð 	lÝÐj¸ÐjÐjÐjÑkÔkÐkÝŒz˜-×1Ò1Ñ3Ô3Ñ4Ô4ˆà]Ð]Ð]Ð]¨T¯ZªZ©\¬\Ð]Ñ]Ô]ˆÝ'Ô5°d¸>Ô6JÑKÔKˆˆ^ÑÝ Ð(Ð( 4Ð(Ð(Ð(r    c                 óü   — |t           z  }|j                             dd¬¦  «         t          | ¦  «        }| j                             ¦   «         |d<   |                     t          j        |dd¬¦  «        ¦  «         d S )NT©ÚparentsÚexist_okr4   é   )ÚindentÚ	sort_keys)	rA   ÚparentÚmkdirr   r4   Ú	isoformatÚ
write_textrC   Údumps)Úselfr7   rH   rI   s       r!   ÚsavezExtensionManifest.save^   sx   € ØÕ0Ñ0ˆØÔ×"Ò"¨4¸$Ð"Ñ?Ô?Ð?Ý�d‰|Œ|ˆØ#Ô0×:Ò:Ñ<Ô<ˆˆ^ÑØ× Ò ¥¤¨D¸ÀdÐ!KÑ!KÔ!KÑLÔLÐLÐLÐLr    )r   r   r   ÚstrÚ__annotations__r   r   r5   r6   Úclassmethodr	   rJ   rX   r   r    r!   r+   r+   G   sã   € € € € € € à€J€J�JØ
€I€I�IØ€L€L�LØ€O€O�OØÐÐÑØ
Ð$Ô
%Ð%Ð%Ñ%ØÐÐÑØ"€K��t‘Ð"Ð"Ñ"Ø!€J��d‘
Ð!Ð!Ñ!àð)˜ð )Ð!4ð )ð )ð )ñ „[ð)ðM˜ð M $ð Mð Mð Mð 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.r8   c                 óÈ  — t          |¦  «        \  }}}|                      ¦   «         }t          t          |j        di ¦  «                             ¦   «         ¦  «        }||v rt          d|› d|› d�¦  «        ‚t          |¦  «        }|                     ¦   «         r|st          d|› d�¦  «        ‚t          ||¬¦  «        st          d|› d	|› d
�¦  «        ‚|                     ¦   «         rt          j        |¦  «         t          |||¬¦  «        }	|	j                             ¦   «         }
t          j        |
› d�|› d	|› �d|› �¬¦  «         t          j        d|› �¦  «         dS )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_namezGitHub repository 'ú/z)' not found. It must exist and be public.©r,   rd   r/   z extension installedúhf )ÚsourceÚcommandzRun it with: hf N)Ú_normalize_repo_idÚ	find_rootÚsetÚgetattrri   Úkeysr   Ú_get_extension_dirÚexistsÚ_github_repo_existsÚshutilÚrmtreeÚ_install_extensionr3   Ú
capitalizer   ÚresultÚhint)r^   r.   r_   r,   rd   r/   Úroot_ctxÚreserved_commandsÚextension_dirÚmanifestÚext_types              r!   Úextension_installr}   f   s®  € õ* $6°gÑ#>Ô#>Ñ €Eˆ9�jØ�}Š}‰Œ€HÝ�G HÔ$4°jÀ"ÑEÔE×JÒJÑLÔLÑMÔMÐØÐ&Ð&Ð&ÝØw¨ÐwÐwÐakÐwÐwÐwñ
ô 
ð 	
õ ' zÑ2Ô2€MØ×ÒÑÔð d eð dÝÐb ZÐbÐbÐbÑcÔcÐcå U°iÐ@Ñ@Ô@ð kÝÐi¨UÐiÐi°YÐiÐiÐiÑjÔjÐjØ×ÒÑÔð %åŒ�mÑ$Ô$Ð$Ý!¨¸ÈzÐZÑZÔZ€HØŒ}×'Ò'Ñ)Ô)€HÝ„JØÐ)Ð)Ð)ØÐ%Ð%˜)Ð%Ð%Ø"�jÐ"Ð"ðñ ô ð õ
 „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                 ó  — | �št          | ¦  «        }t          |¦  «        }|xt          j        k    r# t	          j        d|j        |j        ¬¦  «         nFxt          j        k    r& t	          j        d|j        › d�|j        ¬¦  «         nt          j	        k    r	 dS t          ¦   «         }|s*t	          j        d¦  «         t	          j        d¦  «         dS g }g }|D ]ê}t	          j        d	|j        › d
|j        › d�¦  «         	 t          |¦  «        }nI# t          $ r ‚ t          $ r2}t	          j        d|j        › d
|j        › d|› d�¦  «         Y d}~Œyd}~ww xY w|xt          j        k    r |                     |j        ¦  «         Œ®xt          j        k    r |                     |j        ¦  «         ŒÚt          j	        k    rŒêŒët	          j        d|rd                     |¦  «        nd|rd                     |¦  «        nd¬¦  «         dS )z6Update installed extension(s) to their latest version.NzExtension updated)r   rh   rb   z' is already up to date©r   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   rv   r/   r.   r(   r)   Ú_list_installed_extensionsÚwarningrw   Úlogr   Ú	ExceptionÚappendÚjoin)r   r{   Úupdate_statusÚ	manifestsr$   r%   Úerrors          r!   Úextension_updater�   –   sv  € ð( ÐÝ7¸Ñ=Ô=ˆÝ3°HÑ=Ô=ˆØØ/Õ'Ô/Ò/Ð/Ð/Ý”
Ð.°XÔ5HÐQYÔQaÐbÑbÔbÐbÐbØ2Õ'Ô2Ò2Ð2Ð2Ý”
ÐU¨Ô)<ÐUÐUÐUÐ\dÔ\oÐpÑpÔpÐpÐpÝ'Ô/Ò/Ð/ØØˆå*Ñ,Ô,€IØð ÝŒÐ.Ñ/Ô/Ð/ÝŒÐDÑEÔEÐEØˆà€GØ€JØð ð ˆÝŒÐK˜XÔ0ÐKÐK°XÔ5EÐKÐKÐKÑLÔLÐLð	Ý7¸ÑAÔAˆMˆMøÝ$ð 	ð 	ð 	àÝð 	ð 	ð 	åŒKÐl¨XÔ-@ÐlÐlÀXÔEUÐlÐlÐZ_ÐlÐlÐlÑmÔmÐmØˆHˆHˆHˆHøøøøð	øøøð Ø/Õ'Ô/Ò/Ð/Ð/Ø—’˜xÔ2Ñ3Ô3Ð3Ð3Ø2Õ'Ô2Ò2Ð2Ð2Ø×!Ò! (Ô"5Ñ6Ô6Ð6Ð6Ý'Ô/Ò/Ð/Øð 0å„JØ$Ø&-Ð7�—	’	˜'Ñ"Ô"Ð"°4Ø,6Ð@�4—9’9˜ZÑ(Ô(Ð(¸Dðñ ô ð ð ð s   ÄDÄEÄ)(EÅEÚ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_settingsr]   z.Extension name (with or without `hf-` prefix).c                 ó  — t          |¦  «        }t          |¦  «        }|                     ¦   «         st          d|› d�¦  «        ‚t	          |t          | j        ¦  «        ¬¦  «        }t          j         	                    |¬¦  «        ‚)zExecute an installed extension.rb   ú' is not installed.©r0   Úargs)Úcode)
Ú_normalize_extension_nameÚ"_resolve_installed_executable_pathrB   r   Ú_execute_extension_binaryÚlistr™   ÚclickÚ
exceptionsÚExit)r^   r   r/   r0   Ú	exit_codes        r!   Úextension_execr£   ×   s†   € õ  +¨4Ñ0Ô0€JÝ8¸ÑDÔD€Oà×"Ò"Ñ$Ô$ð FÝÐD ZÐDÐDÐDÑEÔEÐEå)¸/ÕPTÐUXÔU]ÑP^ÔP^Ð_Ñ_Ô_€IÝ
Ô
×
Ò
 YÐ
Ñ
/Ô
/Ð/r    z	list | lszhf extensions listc                  ób   — d„ t          ¦   «         D ¦   «         } t          j        | d¬¦  «         dS )z"List installed extension commands.c                 ó°   — g | ]S}d |j         › �t          |j        ¦  «        t          |j        ¦  «        |j                             d¦  «        |j        dœ‘ŒTS )rg   z%Y-%m-%d)ri   rh   r3   Ú	installedr5   )r/   rY   r.   r3   r4   Ústrftimer5   )r<   r{   s     r!   ú
<listcomp>z"extension_list.<locals>.<listcomp>ô   st   € ð 	ð 	ð 	ð ð 3˜XÔ0Ð2Ð2Ý˜(Ô*Ñ+Ô+Ý˜œÑ&Ô&Ø!Ô.×7Ò7¸
ÑCÔCØ#Ô/ð	
ð 	
ð	ð 	ð 	r    ri   ©Úid_keyN)r‡   r   Útable)Úrowss    r!   Úextension_listr­   ñ   sE   € ð	ð 	õ 3Ñ4Ô4ð	ñ 	ô 	€Dõ „Iˆd˜9Ð%Ñ%Ô%Ð%Ð%Ð%r    Úsearchzhf extensions searchc            	      óÔ  — t          dddt          › �ddddœ¬¦  «        } |                      ¦   «         }d	„ t          ¦   «         D ¦   «         }g }|                     d
g ¦  «        D ]m}|d                              d¦  «        }|                     ||d         |                     dd¦  «        |                     d¦  «        pd||v rdnddœ¦  «         Œnt          j        |d¬¦  «         dS )zISearch extensions available on GitHub (tagged with 'hf-extension' topic).ÚGETz*https://api.github.com/search/repositoriesztopic:ÚstarsÚdescéd   )ÚqÚsortÚorderÚper_page)Úparamsc                 ó   — h | ]	}|j         ’Œ
S r   ©r/   )r<   Úms     r!   ú	<setcomp>z#extension_search.<locals>.<setcomp>  s   € ÐDÐDÐD !�”ÐDÐDÐDr    rF   r   úhf-Ú	full_nameÚstargazers_countr   r5   Ú Úyes)r   r-   r±   r5   r¦   r-   r©   N)	Ú_github_requestÚ_EXTENSIONS_GITHUB_TOPICrC   r‡   ÚgetÚremoveprefixr‹   r   r«   )ÚresponserI   r¦   r¬   r-   r/   s         r!   Úextension_searchrÇ     s  € õ ØØ4Ø8Õ6Ð8Ð8À'ÐTZÐhkÐlÐlðñ ô €Hð
 �=Š=‰?Œ?€DàDÐDÕ'AÑ'CÔ'CÐDÑDÔD€Ià€DØ—’˜ "Ñ%Ô%ð 

ð 

ˆØ˜&”\×.Ò.¨uÑ5Ô5ˆ
Ø�Šà"Ø˜[Ô)ØŸšÐ"4°aÑ8Ô8Ø#Ÿxšx¨Ñ6Ô6Ð<¸"Ø&0°IÐ&=Ð&=˜U˜UÀ2ðð ñ	
ô 	
ð 	
ð 	
õ „Iˆd˜6Ð"Ñ"Ô"Ð"Ð"Ð"r    zremove | rmzhf extensions remove claudez8Extension name to remove (with or without `hf-` prefix).c                 óä   — t          | ¦  «        }t          |¦  «        }|                     ¦   «         st          d|› d�¦  «        ‚t	          j        |¦  «         t          j        d|¬¦  «         dS )zRemove an installed extension.rb   r—   zExtension removedr�   N)r›   ro   Úis_dirr   rr   rs   r   rv   )r   r/   rz   s      r!   Úextension_removerÊ     sy   € õ +¨4Ñ0Ô0€JÝ& zÑ2Ô2€Mà×ÒÑ!Ô!ð FÝÐD ZÐDÐDÐDÑEÔEÐEå
„M�-Ñ Ô Ð Ý„JÐ"¨Ð4Ñ4Ô4Ð4Ð4Ð4r    c                  óâ  — t                                ¦   «         } |                      ¦   «         sg S g }t          |                      ¦   «         ¦  «        D ]›}|                     ¦   «         r|j                             d¦  «        sŒ1	 |                     t           	                    |¦  «        ¦  «         Œ`# t          $ r/}t                               d|j        › d|› �¦  «         Y d}~Œ”d}~ww xY w|S )zPReturn manifests for all validly-installed extensions, sorted by directory name.r½   z'Failed to load manifest for extension 'ú': N)ÚEXTENSIONS_ROOTÚ
expanduserrÉ   ÚsortedÚiterdirr   Ú
startswithr‹   r+   rJ   rŠ   ÚloggerÚdebug)Úroot_dirrŽ   rz   Úes       r!   r‡   r‡   2  s  € å×)Ò)Ñ+Ô+€HØ�?Š?ÑÔð Øˆ	Ø€IÝ × 0Ò 0Ñ 2Ô 2Ñ3Ô3ð ð ˆØ×#Ò#Ñ%Ô%ð 	¨]Ô-?×-JÒ-JÈ5Ñ-QÔ-Qð 	Øð	Ø×ÒÕ.×3Ò3°MÑBÔBÑCÔCÐCÐCøÝð 	ð 	ð 	Ý�LŠLÐ]À=ÔCUÐ]Ð]ÐZ[Ð]Ð]Ñ^Ô^Ð^ØˆHˆHˆHˆHøøøøð	øøøð Ðs   Â-B3Â3
C,Â=%C'Ã'C,c                  ó¤   — g } t          ¦   «         D ]>}d|j        › d�}|j        �|j        › d|› �n|}|                      |j        |f¦  «         Œ?| S )Nz[extension ú]ú )r‡   r.   r5   r‹   r/   )Úentriesr{   ÚtagÚ	help_texts       r!   Ú"list_installed_extensions_for_helprÜ   C  su   € Ø€GÝ.Ñ0Ô0ð 9ð 9ˆØ/˜HÔ,Ð/Ð/Ð/ˆØ7?Ô7KÐ7W�xÔ+Ð3Ð3¨cÐ3Ð3Ð3Ð]`ˆ	Ø�Š˜Ô+¨YÐ7Ñ8Ô8Ð8Ð8Ø€Nr    r™   Úknown_commandsc                 ó¶  — | sd S | d         }|                      d¦  «        rd S d„ |D ¦   «         }||v rd S 	 t          |                     d¦  «        |¬¦  «        }n# t          $ r Y d S w xY w	 t	          |¦  «        }n# t
          $ r t          |¦  «        }Y nw xY w|�|                     ¦   «         sd S t          |t          | dd …         ¦  «        ¬¦  «        S )Nr   ú-c                 óf   — h | ].}|                      d ¦  «        D ]}|                     ¦   «         ’ŒŒ/S )ú|)ÚsplitÚstrip)r<   ÚcmdÚas      r!   r¼   z7dispatch_unknown_top_level_extension.<locals>.<setcomp>S  s7   € ÐMÐMÐM˜s¸c¿iºiÈ¹n¼nÐMÐM¸�—’‘”ÐMÐMÐMÐMr    r½   ©Úoriginal_inputr   r˜   )
rÑ   Ú_validate_extension_short_namerÅ   r   rœ   rŠ   Ú _auto_install_official_extensionrB   r�   rž   )r™   rÝ   Úcommand_nameÚ	all_knownr/   r0   s         r!   Ú$dispatch_unknown_top_level_extensionrì   L  s)  € Øð Øˆtà˜”7€LØ×Ò˜sÑ#Ô#ð ØˆtØMÐM nÐMÑMÔM€IØ�yÐ Ð ØˆtðÝ3°L×4MÒ4MÈeÑ4TÔ4TÐeqÐrÑrÔrˆ
ˆ
øÝð ð ð ØˆtˆtðøøøðGÝ<¸ZÑHÔHˆˆøÝð Gð Gð GÝ:¸:ÑFÔFˆˆˆðGøøøð Ð o×&=Ò&=Ñ&?Ô&?ÐØˆtå$°_Í4ÐPTÐUVÐUWÐUWÔPXÉ>Ì>ÐZÑZÔZÐZs#   ·$A Á
A*Á)A*Á.A> Á>BÂBr/   c           	      ó~  — t           d| › �}}t          | ¦  «                             ¦   «         rdS 	 t          ||¬¦  «        sdS n# t          $ r Y dS w xY w	 t          j        d| › d|› d|› d�¦  «         n# t          $ r Y dS w xY wt          ||| ¬¦  «        }t          |j
        ¦  «                             ¦   «         S )	zKTry to auto-install huggingface/hf-<name>. Returns executable path or None.r½   Nrc   ú'z)' is an official Hugging Face extension (re   z). Install it?rf   )ÚDEFAULT_EXTENSION_OWNERro   rp   rq   rŠ   r   Úconfirmr   rt   r	   r0   rÎ   )r/   r,   rd   r{   s       r!   ré   ré   h  s  € å.Ð0B°jÐ0BÐ0Bˆ9€EÝ˜*Ñ%Ô%×,Ò,Ñ.Ô.ð ØˆtðÝ"¨¸)ÐDÑDÔDð 	Ø�4ð	øåð ð ð ØˆtˆtðøøøðÝŒÐn˜
ÐnÐnÈUÐnÐnÐU^ÐnÐnÐnÑoÔoÐoÐoøÝð ð ð Øˆtˆtðøøøå!¨¸ÈzÐZÑZÔZ€HÝ�Ô(Ñ)Ô)×4Ò4Ñ6Ô6Ð6s#   ±A Á
AÁAÁA6 Á6
BÂBc                 ó6  — t          | ¦  «        }t          |¦  «        }|                     ¦   «         sN|                      ¦   «                              d¦  «        \  }}}|r|› d|› �nd|› �}t          d|› d|› �¦  «        ‚t                               |¦  «        S )Nre   z/hf-r½   rb   zA' is not installed. Install it first with: hf extensions install )r›   ro   rÉ   rã   Ú
rpartitionr   r+   rJ   )r   r/   rz   r,   Ú_Úinstall_targets         r!   r…   r…   ~  s³   € Ý*¨4Ñ0Ô0€JÝ& zÑ2Ô2€MØ×ÒÑ!Ô!ð 
Ø—j’j‘l”l×-Ò-¨cÑ2Ô2‰ˆˆq�!Ø7<ÐT˜EÐ3Ð3 zÐ3Ð3Ð3ÐBTÈ
ÐBTÐBTˆÝØw˜*ÐwÐwÐguÐwÐwñ
ô 
ð 	
õ ×!Ò! -Ñ0Ô0Ð0r    r{   c                 óZ  — | j         | j        | j        }}}	 t          ||¬¦  «        }nN# t          $ r ‚ t
          $ r7}t          j        d|› d|› d|› d|› d�	¦  «         t          j	        cY d }~S d }~ww xY w|| j
        k    rt          j        S t          ||||¬¦  «         t          j        S )Nrc   zCould not check updates for 'r‚   re   rƒ   r„   )r,   rd   r/   r6   )r,   r-   r/   Ú_fetch_latest_commit_shar   rŠ   r   rˆ   r#   r)   r6   r(   rt   r'   )r{   r,   rd   r/   Ú
latest_shar�   s         r!   r†   r†   Š  sê   € Ø#+¤>°8´=À(ÔBU�jˆ9€Eð.Ý-°EÀYÐOÑOÔOˆ
ˆ
øÝ ð ð ð àÝð .ð .ð .ÝŒÐk°JÐkÐkÀ5ÐkÐkÈ9ÐkÐkÐY^ÐkÐkÐkÑlÔlÐlÝ%Ô-Ð-Ð-Ð-Ð-Ð-Ð-øøøøð.øøøð �XÔ(Ò(Ð(Ý%Ô0Ð0å˜U¨iÀJÐ[eÐfÑfÔfÐfÝ!Ô)Ð)s   —) ©A4½,A/Á)A4Á/A4)r6   r,   rd   r6   c                 óV  — t          |¦  «        }|                     ¦   «          }d}	 	 t          | ||¬¦  «        }n# t          $ r d}Y nw xY w|�9t          j        dk    rt          d| › d|› d�¦  «        ‚t          |||¬¦  «        }nt          || ||¬	¦  «        }|€G	 t          | |¬
¦  «        }n4# t          $ r'}	t          j        d| › d|› d|	› �¦  «         Y d}	~	nd}	~	ww xY wt          | || › d|› �|t          |¦  «        |�dndt          j        t           j        ¦  «        t%          | |¬
¦  «        |¬¦	  «	        }
|
                     |¦  «         d}|
|s|rt)          j        |d¬¦  «         S S S # t          $ r ‚ t,          j        $ r$}t1          dt2          › d| › d|› d�¦  «        |‚d}~wt,          j        $ r$}t1          d| › d|› d|j        › d�¦  «        |‚d}~wt          $ r}t1          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.
    Frf   NÚntrî   re   zu' is a shell-script extension, which is not supported on Windows. Only Python extensions can be installed on Windows.)rz   r/   r1   )rz   r,   rd   r/   rc   z Could not record a version for 'z', installing anyway: r1   r2   )	r,   r-   r.   r/   r0   r3   r4   r5   r6   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Ì   )ro   rp   Ú_fetch_remote_binaryrŠ   Úosr   r   Ú_install_binary_extensionÚ_install_python_extensionrö   r   rˆ   r+   rY   r   Únowr   ÚutcÚ_try_fetch_remote_descriptionrX   rr   rs   Ú
subprocessÚTimeoutExpiredr   Ú_EXTENSIONS_PIP_INSTALL_TIMEOUTÚCalledProcessErrorÚ
returncode)r,   rd   r/   r6   rz   Úfresh_installr¦   r1   r0   r�   r{   rÕ   s               r!   rt   rt   �  s•  € õ ' zÑ2Ô2€MØ%×,Ò,Ñ.Ô.Ð.€MØ€Ið;=ð	Ý)°ÀÐWaÐbÑbÔbˆFˆFøÝð 	ð 	ð 	ØˆFˆFˆFð	øøøð ÐÝŒw˜$ŠˆÝðJ˜ð Jð J 	ð Jð Jð Jñô ð õ 8Ø+¸
È6ðñ ô ˆOˆOõ 8Ø+°5ÀIÐZdðñ ô ˆOð ÐðqÝ5¸EÈYÐWÑWÔW�
�
øÝð qð qð qÝ”Ðo¸uÐoÐoÀyÐoÐoÐhmÐoÐoÑpÔpÐpÐpÐpÐpÐpÐpøøøøðqøøøõ %ØØØÐ*Ð*˜yÐ*Ð*Ø!Ý Ñ0Ô0Ø#Ð/��°XÝ!œ¥h¤lÑ3Ô3Ý5¸EÈYÐWÑWÔWØ!ð

ñ 

ô 

ˆð 	�Š�mÑ$Ô$Ð$Øˆ	Øð  ð 	=˜]ð 	=ÝŒM˜-°tÐ<Ñ<Ô<Ð<Ð<ð	=ð 	=øõ ð ð ð ØÝÔ$ð ð ð Ý&ð0Õ+Jð 0ð 0ÐSXð 0ð 0Ð[dð 0ð 0ð 0ñ
ô 
ð ð	øøøøõ Ô(ð ð ð Ý&ð0°5ð 0ð 0¸9ð 0ð 0ÐSTÔS_ð 0ð 0ð 0ñ
ô 
ð ð	øøøøõ ð nð nð nÝ&Ð'eÈEÐ'eÐ'eÐT]Ð'eÐ'eÐbcÐ'eÐ'eÑfÔfÐlmÐmøøøøðnøøøøð ð 	=˜]ð 	=ÝŒM˜-°tÐ<Ñ<Ô<Ð<Ð<ð	=ð 	=øøøs‚   ©< »E3 ¼AÁE3 Á
AÁAE3 ÂB1 Â0E3 Â1
C"Â;CÃE3 ÃC"Ã"A4E3 Å3HÆF+Æ+HÆ=GÇHÇ)HÈHÈH
 È
H(c                 ój   — t          dd| › d|› d�ddi¬¦  «        }|j                             ¦   «         S )a  Fetch the latest commit SHA on the default branch, used to detect available updates.

    The only REST API call left in the install and update paths. Raises on failure: callers decide
    whether a missing SHA is fatal, and report the reason themselves.
    r°   zhttps://api.github.com/repos/re   z/commits/HEADÚAcceptzapplication/vnd.github.sha)Úheaders)rÂ   Útextrã   )r,   rd   rÆ   s      r!   rö   rö   ê  sP   € õ ØØH¨ÐHÐH°	ÐHÐHÐHØÐ7Ð8ðñ ô €Hð
 Œ=×ÒÑ Ô Ð r    c                 óF   — d| › d|› d|› �}t          d|¦  «        }|j        S )Nú"https://raw.githubusercontent.com/re   z	/HEAD/hf-r°   )rÂ   Úcontent)r,   rd   r/   Úraw_urlrÆ   s        r!   rû   rû   ø  s7   € Ø[°5Ð[Ð[¸9Ð[Ð[ÈzÐ[Ð[€GÝ˜u gÑ.Ô.€HØÔÐr    rz   r1   c                 óÌ   — |                       dd¬¦  «         | t          |¦  «        z  }|                     |¦  «         t          j        dk    rt          j        |d¦  «         |S )NTrL   rù   ií  )rS   Ú_get_executable_nameÚwrite_bytesrü   r   Úchmod)rz   r/   r1   r0   s       r!   rý   rý   þ  se   € Ø×Ò ¨tÐÑ4Ô4Ð4Ø#Õ&:¸:Ñ&FÔ&FÑF€OØ×Ò Ñ'Ô'Ð'å	„w�$‚€Ý
Œ� %Ñ(Ô(Ð(àÐr    c           	      óÚ  — d|› d|› d�}| dz  }t          |t          j        dk    rdnd¦  «        }t          j        d¦  «        }t          j        ¦   «         }|                     ¦   «         s¥|                     d	|› �¦  «         |  	                    d
d
¬¦  «         |r't          j        |dt          |¦  «        gd
¬¦  «         n5t          j        d
¬¦  «                             t          |¦  «        ¦  «         |                     d|› �¦  «         |                     d|› �¦  «         |r|ddddt          |¦  «        |g}	nt          |¦  «        dddddd|g}	t          j        |	d
t"          ¬¦  «         |                     d|› �¦  «         t%          |¦  «        }
t          ||
¦  «        }|                     ¦   «         st'          d|› d|› d|
› d�¦  «        ‚|                     ¦   «         S )Núhttps://github.com/re   z/archive/HEAD.zipÚvenvrù   z
python.exer2   Úuvz Creating virtual environment in TrL   )Úcheck)Úwith_pipzVirtual environment created in zInstalling package from Úpipr\   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ü   r   rr   Úwhichr   ÚstatusrB   r~   rS   r  ÚrunrY   r  Ú
EnvBuilderÚcreateÚdoner  r  r   Úresolve)rz   r,   rd   r/   Ú
source_urlÚvenv_dirÚvenv_pythonÚuv_pathr  Úinstall_cmdÚexecutable_nameÚvenv_executables               r!   rþ   rþ   	  s;  € ØK uÐKÐK¨yÐKÐKÐK€JØ˜vÑ%€HÝ$ X½r¼wÈ$º¸¨|¨|ÐT\Ñ]Ô]€KÝŒl˜4Ñ Ô €GåŒZ‰\Œ\€FØ×ÒÑ Ô ð BØ�ŠÐC¸ÐCÐCÑDÔDÐDØ×Ò D°4ÐÑ8Ô8Ð8Øð 	AÝŒN˜G V­S°©]¬]Ð;À4ÐHÑHÔHÐHÐHåŒO TÐ*Ñ*Ô*×1Ò1µ#°h±-´-Ñ@Ô@Ð@Ø�ŠÐ@°hÐ@Ð@ÑAÔAÐAà
‡M‚MÐ9¨ZÐ9Ð9Ñ:Ô:Ð:Øð 
à  y°-ÀÍSÐQ\ÑM]ÔM]Ð_iÐjˆˆõ �ÑÔØØØØ)ØØØð	
ˆõ „N�; dÕ4SÐTÑTÔTÐTØ
‡K‚KÐ6¨*Ð6Ð6Ñ7Ô7Ð7å*¨:Ñ6Ô6€OÝ(¨°?ÑCÔC€OØ×"Ò"Ñ$Ô$ð 
Ýð$ uð $ð $¨yð $ð $Øð$ð $ð $ñ
ô 
ð 	
ð ×"Ò"Ñ$Ô$Ð$r    z*<meta name="description" content="([^"]*)"c                 ó`  — d| › d|› d�}	 t          d|› dt          › �¦  «        }|                     ¦   «                              d¦  «        }t	          |t
          ¦  «        r|S n# t          $ r Y nw xY w	 t          d|› d�¦  «        }|j                             ¦   «         D ]m}| 	                    ¦   «         }| 
                    d¦  «        rB|                     d¦  «        \  }}}| 	                    ¦   «          	                    d¦  «        c S Œnn# t          $ r Y nw xY w	 t          dd	| › d|› �¦  «        }t                               |j        ¦  «        x}�Et          |                     d¦  «        ¦  «        }	|	                     d| › d|› �¦  «        x}|	k    r|S n# t          $ r Y nw xY wd
S )z±Try to fetch project description either from:
    - manifest.json
    - pyproject.toml
    - the repository's GitHub "About" field

    Only best effort, no error handling.
    r  re   z/HEADr°   r5   z/pyproject.tomlú=z"'r  Nr   z - )rÂ   rA   rC   rÄ   Ú
isinstancerY   rŠ   r  Ú
splitlinesrã   rÑ   Ú	partitionÚ_GITHUB_ABOUT_REr®   r   ÚgroupÚremovesuffix)
r,   rd   ÚbaserÆ   r5   Úlineró   r>   Úmatchr  s
             r!   r  r  8  s  € ð I°ÐHÐH¸	ÐHÐHÐH€DðÝ" 5¨TÐ*GÐ*GÕ4EÐ*GÐ*GÑHÔHˆØ—m’m‘o”o×)Ò)¨-Ñ8Ô8ˆÝ�k¥3Ñ'Ô'ð 	ØÐð	øåð ð ð Øˆðøøøð
Ý" 5¨TÐ*BÐ*BÐ*BÑCÔCˆð ”M×,Ò,Ñ.Ô.ð 	2ð 	2ˆDØ—:’:‘<”<ˆDØ�Š˜}Ñ-Ô-ð 2Ø"Ÿnšn¨SÑ1Ô1‘��1�eØ—{’{‘}”}×*Ò*¨5Ñ1Ô1Ð1Ð1Ð1ð2ð	2øõ
 ð ð ð ØˆðøøøðÝ" 5Ð*SÀÐ*SÐ*SÈ	Ð*SÐ*SÑTÔTˆÝ%×,Ò,¨X¬]Ñ;Ô;Ð;ˆEÐHå˜uŸ{š{¨1™~œ~Ñ.Ô.ˆGØ&×3Ò3Ð4M¸%Ð4MÐ4MÀ)Ð4MÐ4MÑNÔNÐN�ÐSZÒZÐZØ"Ð"øøÝð ð ð Øˆðøøøð ˆ4s>   ‹AA$ Á$
A1Á0A1Á5BD ÄD Ä
DÄDÄ!A;F Æ
F+Æ*F+c                 ób   — t          | | ¬¦  «         t                               ¦   «         d| › �z  S )Nræ   r½   )rè   rÍ   rÎ   rº   s    r!   ro   ro   f  s7   € õ # :¸jÐIÑIÔIÐIÝ×%Ò%Ñ'Ô'Ð*<°
Ð*<Ð*<Ñ<Ð<r    )r¸   r
  ÚmethodÚurlr¸   r
  c                ó(  — t          ¦   «                              | |||dt          ¬¦  «        }|j        dv rH|j                             d¦  «        dk    s	d|j        v r!t          t          |j        ¦  «        ¦  «        ‚|                     ¦   «          |S )a\  Perform a GitHub request.

    Shared by every GitHub/Raw fetch in this module so the timeout, redirect and rate-limit policy are
    shared.

    Unauthenticated `api.github.com` calls are capped per IP address, and that quota is shared with
    everything else calling GitHub from the same network (NAT, VPN, CI egress). Remote refs are therefore
    always addressed as `HEAD`, which GitHub resolves to the repo's default branch on
    `raw.githubusercontent.com`, on the archive endpoint and on the REST API alike: no
    `GET /repos/{owner}/{repo}` lookup is needed to discover the branch name.
    T)r¸   r
  Úfollow_redirectsr  )i“  i­  zx-ratelimit-remainingÚ0úretry-after)	r   ÚrequestÚ_EXTENSIONS_DOWNLOAD_TIMEOUTÚstatus_coder
  rÄ   r   Ú_rate_limit_messageÚraise_for_status)r8  r9  r¸   r
  rÆ   s        r!   rÂ   rÂ   m  s    € õ ‰}Œ}×$Ò$ØØØØØÝ,ð %ñ ô €Hð Ô˜zÐ)Ð)ØÔ×ÒÐ4Ñ5Ô5¸Ò<Ð<ÀÐQYÔQaÐ@aÐ@aå#Õ$7¸Ô8HÑ$IÔ$IÑJÔJÐJØ×ÒÑÔÐØ€Or    c                 óJ  — d}|                       d¦  «        x}�
|d|› d�z  }n|                       d¦  «        x}�h	 t          j        t          |¦  «        t          j        ¬¦  «                             ¦   «         }|d|d	›d
�z  }n# t          t          t          f$ r Y nw xY w|S )aé  Message for a GitHub rate-limit rejection, built from the response headers.

    The cap itself is deliberately not quoted: it depends on the endpoint (60/hour on the core API,
    10/minute on search), so only the wait is reported.

    `retry-after` wins over `x-ratelimit-reset`: GitHub rides the primary window's reset timestamp on
    every REST response, secondary rate limits included, so on a back-off it would point at an hourly
    window that is not the one being enforced.
    z¡GitHub API rate limit exceeded. Unauthenticated requests are capped per IP address, and that quota is shared with anything else calling GitHub from your network.r=  Nz
 Retry in zs.zx-ratelimit-reset)Útzz It resets at z%H:%M:%S %Zú.)
rÄ   r   ÚfromtimestampÚintr   r   Ú
astimezoneÚOverflowErrorÚOSErrorÚ
ValueError)r
  ÚmessageÚretry_afterÚresetÚreset_ats        r!   rA  rA  Œ  sÒ   € ð	Oð ð —{’{ =Ñ1Ô1Ð1ˆÐ>ØÐ/ Ð/Ð/Ð/Ñ/ˆˆØ—;’;Ð2Ñ3Ô3Ð
3ˆ%Ð	@ð	@ÝÔ-­c°%©j¬j½X¼\ÐJÑJÔJ×UÒUÑWÔWˆHð Ð?¨Ð?Ð?Ð?Ð?Ñ?ˆGˆGøõ �w­
Ð3ð 	ð 	ð 	ØˆDð	øøøð €Ns   ¼?B ÂB ÂB c           	      óö   — 	 t          dd| › d|› �¦  «         n`# t          j        $ rN}t          |t          j        ¦  «        r|j        j        dk    rY d}~dS t          d| › d|› d|› �¦  «        |‚d}~ww xY wd	S )
aE  Whether a public GitHub repo exists.

    Resolved against `github.com` rather than `GET /repos/{owner}/{repo}` to keep the check off the
    metered REST API (see `_github_request`). Only a 404 answers `False`: any other failure is reported
    as such, so callers never present an unreachable GitHub as a missing repo.
    ÚHEADr  re   i”  NFz)Could not reach GitHub to check whether 'z
' exists: T)rÂ   Úhttpx2Ú	HTTPErrorr.  ÚHTTPStatusErrorrÆ   r@  r   )r,   rd   r�   s      r!   rq   rq   ¦  s¶   € ðtÝ˜Ð I°eÐ IÐ I¸iÐ IÐ IÑJÔJÐJÐJøÝÔð tð tð tÝ�e�VÔ3Ñ4Ô4ð 	¸¼Ô9SÐWZÒ9ZÐ9ZØ�5�5�5�5�5ÝÐgÀ5ÐgÐgÈ9ÐgÐgÐ`eÐgÐgÑhÔhÐnsÐsøøøøðtøøøð ˆ4s   ‚ ™A6¨*A1ÁA1Á1A6c                 ó:   — d| › �}t           j        dk    r|dz  }|S )Nr½   rù   z.exe©rü   r   )r/   r   s     r!   r  r  ¶  s(   € Ø�ÐÐ€DÝ	„w�$‚€Ø�‰ˆØ€Kr    c                 ó    — t          | ¦  «        }t                               |¦  «        }t          |j        ¦  «                             ¦   «         S ©N)ro   r+   rJ   r	   r0   rÎ   )r/   rz   r{   s      r!   rœ   rœ   ½  s?   € Ý& zÑ2Ô2€MÝ ×%Ò% mÑ4Ô4€HÝ�Ô(Ñ)Ô)×4Ò4Ñ6Ô6Ð6r    r&  r*  c                 óB   — t           j        dk    r| dz  |z  S | dz  |z  S )Nrù   ÚScriptsÚbinrV  )r&  r*  s     r!   r  r  Ã  s-   € Ý	„w�$‚€Ø˜)Ñ# oÑ5Ð5Ø�eÑ˜oÑ-Ð-r    z^[A-Za-z0-9][A-Za-z0-9._-]*$rç   c                ó>  ‡— |                       ¦   «         Š‰st          d¦  «        ‚t          ˆfd„dD ¦   «         ¦  «        rt          d|› d�¦  «        ‚d‰v sd‰v rt          d|› d�¦  «        ‚t                               ‰¦  «        st          d|› d�¦  «        ‚‰S )	NzExtension name cannot be empty.c              3   ó    •K  — | ]}|‰v V — Œ	d S rX  r   )r<   Úsepr   s     €r!   ú	<genexpr>z1_validate_extension_short_name.<locals>.<genexpr>Ð  s'   øè è € Ð
.Ð
.˜3ˆ3�$ˆ;Ð
.Ð
.Ð
.Ð
.Ð
.Ð
.r    )re   ú\zInvalid extension name 'r  z..ú:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)rã   r   ÚanyÚ_ALLOWED_EXTENSION_NAMEÚ	fullmatch)r/   rç   r   s     @r!   rè   rè   Ì  sÓ   ø€ Ø×ÒÑÔ€DØð :ÝÐ8Ñ9Ô9Ð9Ý
Ð
.Ð
.Ð
.Ð
. +Ð
.Ñ
.Ô
.Ñ.Ô.ð FÝÐD°.ÐDÐDÐDÑEÔEÐEØˆt€|€|�s˜d�{�{ÝÐD°.ÐDÐDÐDÑEÔEÐEÝ"×,Ò,¨TÑ2Ô2ð 
ÝØp ~ÐpÐpÐpñ
ô 
ð 	
ð €Kr    c                 óÖ  — d| v rt          d¦  «        ‚|                      d¦  «        }t          |¦  «        dk    rt          }|d         }n;t          |¦  «        dk    rt	          |¦  «        r|\  }}nt          d| › d�¦  «        ‚|                     d	¦  «        st          d
|› d�¦  «        ‚|                     d	¦  «        }|st          d¦  «        ‚t          || ¬¦  «         |||fS )Nz://zEOnly GitHub repositories in `[OWNER/]hf-<name>` format are supported.re   r   r   rO   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,   rd   r/   s        r!   rj   rj   Û  s  € Ø�ÐÐÝÐ^Ñ_Ô_Ð_à�MŠM˜#ÑÔ€EÝ
ˆ5�z„z�Q‚€Ý'ˆØ˜!”Hˆ	ˆ	Ý	ˆU‰Œ�qŠˆ�S ™ZœZˆØ ÑˆˆyˆyåÐJ¸wÐJÐJÐJÑKÔKÐKà×Ò Ñ&Ô&ð _ÝÐ]ÐPYÐ]Ð]Ð]Ñ^Ô^Ð^à×'Ò'¨Ñ.Ô.€JØð CÝÐAÑBÔBÐBÝ" :¸gÐFÑFÔFÐFà�)˜ZÐ'Ð'r    c                 ó¦   — |                       ¦   «                              dd¦  «        d         }t          |                     d¦  «        | ¬¦  «        S )Nre   r   éÿÿÿÿr½   ræ   )rã   Úrsplitrè   rÅ   )r   rd   s     r!   r›   r›   ó  sF   € Ø—
’
‘”×#Ò# C¨Ñ+Ô+¨BÔ/€IÝ)¨)×*@Ò*@ÀÑ*GÔ*GÐX\Ð]Ñ]Ô]Ð]r    r0   c                 ó  — 	 t          j        t          | ¦  «        g|z   ¦  «        S # t          $ rV}t          j        dk    s|j        t          j        k    r‚ t          j        dt          | ¦  «        g|z   ¦  «        cY d }~S d }~ww xY w)Nrù   Úsh)r  ÚcallrY   rJ  rü   r   ÚerrnoÚENOEXEC)r0   r™   rÕ   s      r!   r�   r�   ø  s˜   € ðDÝŒ¥ OÑ 4Ô 4Ð5¸Ñ<Ñ=Ô=Ð=øÝð Dð Dð DÝŒ7�dŠ?ˆ?˜aœg­¬Ò6Ð6ØÝŒ ¥c¨/Ñ&:Ô&:Ð;¸dÑBÑCÔCÐCÐCÐCÐCÐCÐCøøøøðDøøøs   ‚$' §
B±ABÁ<BÂB)FrX  )r8   N)`r   ro  rC   rü   Úrerr   r  r  Údataclassesr   r   r   r   Úenumr   Úhtmlr   Úpathlibr	   Útypingr
   r   rŸ   rR  Úhuggingface_hub.errorsr   r   r   Úhuggingface_hub.utilsr   r   Ú
_cli_utilsr   Ú
_frameworkr   r   Ú_outputr   rï   rÍ   rA   ÚEXTENSIONS_HELPÚextensions_clirÃ   r?  r  Ú
get_loggerr   rÒ   r   rY   r#   r+   ri   ÚContextÚboolr}   r�   r£   r­   rÇ   rÊ   rž   r‡   ÚtuplerÜ   rl   rG  rì   ré   r…   r†   rt   rö   Úbytesrû   rý   rþ   Úcompiler1  r  ro   ÚdictÚResponserÂ   ÚHeadersrA  rq   r  rœ   r  rc  rè   rj   r›   r�   r   r    r!   ú<module>r‡     s\	  ðð 7Ð 6à €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø €€€à XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð (Ð Ø�$Ð5Ñ6Ô6€Ø#Ð ð+ð ð
 � OÐ4Ñ4Ô4€Ø)Ð Ø!Ð Ø"%Ð à	ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð ˜Hñ ô ð ðð ð ð ð ˜S $ñ ô ð ð ðMð Mð Mð Mð Mñ Mô Mñ „ðMð< ×ÒØðð ð ð ñ ô ð Y^ð%.ð %.Ø	Œð%.àØØˆÐRÐSÑSÔSð	Uôð%.ð �T˜6˜6 )Ð2SÐTÑTÔTÐTÔUð%.ð 
ð%.ð %.ð %.ñô ð%.ðP ×ÒØðð ð ð ñ ô ð" 	ð6ð 6Ø
Øˆd‰
Øˆðfð	
ñ 	
ô 	
ð	ôð6ð 
ð6ð 6ð 6ñô ð6ðr ×ÒØ
Ø*.È5ÐlpÐqÐqà-Ø9ðð ñ ô ð0Ø	Œð0à
ØØˆÐFÐGÑGÔGð	Iôð0ð 
ð0ð 0ð 0ñô ð0ð$ ×Ò˜Ð/CÐ.DÐÑEÔEð&ð &ð &ñ FÔEð&ð ×Ò˜Ð,BÐ+CÐÑDÔDð#ð #ð #ñ EÔDð#ð6 ×Ò˜Ð1NÐ0OÐÑPÔPð5Ø
ØØˆÐPÐQÑQÔQð	Sôð5ð
 
ð5ð 5ð 5ñ QÔPð5ð( DÐ):Ô$;ð ð ð ð ð"¨D°°s¸C°x´Ô,Að ð ð ð ð[¨t°C¬yð [È#ÈcÌ(ð [ÐWZÐ]aÑWað [ð [ð [ð [ð87°ð 7¸À¹ð 7ð 7ð 7ð 7ð,	1¨sð 	1Ð7Hð 	1ð 	1ð 	1ð 	1ð*Ð*;ð *Ð@Vð *ð *ð *ð *ð0 "ðJ=ð J=ð J=àðJ=ð ðJ=ð ð	J=ð
 �d‘
ðJ=ð ðJ=ð J=ð J=ð J=ðZ! sð !°sð !¸sð !ð !ð !ð !ð 3ð °3ð ÀCð ÈEð ð ð ð ð°ð À#ð Èuð ÐY]ð ð ð ð ð)%°ð )%¸Sð )%ÈSð )%Ð^að )%Ðfjð )%ð )%ð )%ð )%ðX �2”:ÐKÑLÔLÐ ð+¨ð +¸ð +ÀÀtÁð +ð +ð +ð +ð\= 3ð =¨4ð =ð =ð =ð =ð 59ÐQUðð ð ØðØðØ&*¨T¡kðØCGÈ$Á;ðà„_ðð ð ð ð> ¤ð °Cð ð ð ð ð4 #ð °#ð ¸$ð ð ð ð ð  Sð ¨Sð ð ð ð ð7°3ð 7¸4ð 7ð 7ð 7ð 7ð. ð .¸ð .Àð .ð .ð .ð .ð %˜"œ*Ð%DÑEÔEÐ ð¨sð Àsð Èsð ð ð ð ð( ð (¨¨c°3¸¨mÔ(<ð (ð (ð (ð (ð0^ Cð ^¨Cð ^ð ^ð ^ð ^ð
D¨tð D¸4À¼9ð DÈð Dð Dð Dð Dð Dð Dr    