§
    }ŠtjËG  ã                   óØ	  — d Z ddlZddlZddlmZ ddlmZmZmZ ddl	Z	ddl
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ dd	lmZmZmZm Z m!Z!m"Z"m#Z#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.  e&d¬¦  «        Z/ e&d¬¦  «        Z0e/ 1                    e0d¬¦  «          e&d¬¦  «        Z2e/ 1                    e2d¬¦  «         ee3 e(d¬¦  «        f         Z4ede3de3dz  de3dz  dee         fd„¦   «         Z5e/ 6                    dg d¢¬¦  «        	 	 	 	 	 	 	 	 	 	 	 	 dsdee3dz   e(d¬¦  «        f         dee3dz   e)d d!¬¦  «        f         d"e-d#ee3dz   e)d$¬¦  «        f         d%ed&e d'ed(ed)e"de.d*ee7 e)d+d,¬¦  «        f         de!ddfd-„¦   «         Z8e/ 6                    d.d/d0id1d2g¬3¦  «        	 	 	 	 	 	 dtde4d4ee9e3          e(d5¬¦  «        f         d6ee3dz   e)d7d8d9¬¦  «        f         d%ed'ed:ee:dz   e)d;d<¬¦  «        f         de.de!ddfd=„¦   «         Z;e/ 6                    d>d/d0id?d@g¬3¦  «        	 	 	 	 	 dude4d4ee9e3          e(dA¬¦  «        f         d6ee3dz   e)d7d8d9¬¦  «        f         d%ed'ede.de!ddfdB„¦   «         Z<e/ 6                    dCdDdEg¬¦  «        	 	 dvdFee3 e(dG¬¦  «        f         dHee3 e(dI¬¦  «        f         de.de!ddf
dJ„¦   «         Z=e/ 6                    dKg dL¢¬¦  «        	 	 	 	 	 dwdee3dz   e(dM¬¦  «        f         dNee7 e)dOdP¬¦  «        f         dQee7 e)dRdSdT¬¦  «        f         de.de!ddfdU„¦   «         Z>e0 6                    dg dV¢¬¦  «        ddeddddfdee3dz   e(dW¬¦  «        f         d"e-dXee? e)dYddZe› d[�¬\¦  «        f         d]ee?dz   e)d^dd_¬\¦  «        f         d#ee3dz   e)d`¬¦  «        f         de.de!ddfda„¦   «         Z@e0 6                    dbdcg¬¦  «        	 	 dvde.de!ddfdd„¦   «         ZAe0 6                    dedfg¬¦  «        	 	 	 dxdgee3 e(dh¬¦  «        f         dQee7 e)dRdSdT¬¦  «        f         de.de!ddf
di„¦   «         ZBdje3e9e3         z  de3fdk„ZCdede3fdl„ZDe2 6                    dbdmg¬¦  «        	 	 dvde4de.de!ddfdn„¦   «         ZEe2 6                    dKdog¬¦  «        	 	 dvde4dpee? e(dq¬¦  «        f         de.de!ddf
dr„¦   «         ZFdS )yzCContains commands to run and manage sandboxes on Hugging Face Jobs.é    N)Úcontextmanager)Ú	AnnotatedÚAnyÚIterator)ÚDEFAULT_IDLE_TIMEOUTÚDEFAULT_IMAGEÚDEFAULT_SANDBOXES_PER_HOSTÚ
MODE_LABELÚ	MODE_POOLÚ
POOL_LABELÚSANDBOX_LABELÚSHARED_ID_SEPÚSandboxÚSandboxPoolÚSandboxProcessÚ_split_sandbox_id)Údelete_pool_cache)ÚCLIErrorÚSandboxErroré   )
Ú
EnvFileOptÚEnvOptÚSecretsFileOptÚ
SecretsOptÚTokenOptÚ
VolumesOptÚ
get_hf_apiÚparse_env_mapÚparse_volumesÚtyper_factory)ÚArgumentÚOption)Úout)Ú	FlavorOptÚNamespaceOptz.Run and manage sandboxes on Hugging Face Jobs.)ÚhelpzBWarm pools of host VMs and spawn cheap shared sandboxes from them.Úpool)Únamez8List and stop background processes running in a sandbox.Úprocessz1The sandbox id as printed by `hf sandbox create`.Ú
sandbox_idÚ	namespaceÚtokenÚreturnc             #   óœ   K  — t          j        | ||¬¦  «        }	 |V — |                     ¦   «          dS # |                     ¦   «          w xY w)zIReattach to a sandbox and close the HTTP client when the command is done.©r+   r,   N)r   ÚconnectÚclose)r*   r+   r,   Úsandboxs       úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/huggingface_hub/cli/sandbox.pyÚ_connectr4   B   sO   è è € õ Œo˜j°IÀUÐKÑKÔK€GðØˆˆˆà�Š‰Œˆˆˆøˆ�Š‰Œˆˆøøøs	   ›5 µAÚcreate)zhf sandbox createzhf sandbox create ubuntu:24.04z%hf sandbox create --flavor a10g-smallz@hf sandbox create --pool pool-ab12cd34ef56 --env LOG_LEVEL=debug)ÚexamplesFÚimagezDocker image (needs /bin/sh).z--poolzJSpawn a cheap shared sandbox in this pool (from `hf sandbox pool create`).ÚflavorÚidle_timeoutzTAuto-terminate the sandbox after this much inactivity (e.g. '10m'). Defaults to 10m.ÚenvÚsecretsÚenv_fileÚsecrets_fileÚvolumeÚforward_hf_tokenz--forward-hf-tokenz0Inject your HF token as HF_TOKEN in the sandbox.c                 ó¨  — t          j         ¦   «         }|�|nt          }|�Ú| €|€|rt          d¦  «        ‚|s|rt          d¦  «        ‚t          j        ||	|¬¦  «                             t          ||¦  «        ||
¬¦  «        }t          j        d|j	        |j
        |t          j         ¦   «         |z
  d›d�¬	¦  «         t          j        d
|j	        › d�¦  «         t          j        d|j	        › d�¦  «         dS t          j        | pt          |pd|t          ||¦  «        t          ||¦  «        t          |¦  «        |	|
|¬¦	  «	        }|                     ¦   «          t          j        d|j	        |j        t          j         ¦   «         |z
  d›d�¬¦  «         t          j        d
|j	        › d�¦  «         t          j        d|j	        › d�¦  «         dS )a’  Create a sandbox: a dedicated VM by default, or a cheap shared one with `--pool`.

    Env and idle-timeout apply to the sandbox in both modes. With `--pool`, the image and
    flavor come from the pool, so passing them here is an error; `--secrets` is also
    rejected since pooled sandboxes have no encrypted-secrets channel (use `--env`). Define
    a pool first with `hf sandbox pool create`.
    NzQ--pool fixes the image/flavor (and volumes aren't supported); drop those options.zF--pool can't encrypt secrets; pass them with --env/--env-file instead.r/   )r:   r9   r?   zSandbox readyú.1fÚs)ÚidÚhostr'   Úelapsedz$Run a command with `hf sandbox exec z -- echo hello`.z#Terminate it with `hf sandbox kill ú`.ú	cpu-basic)	r7   r8   r9   r:   r;   Úvolumesr+   r?   r,   )rC   r7   rE   )Útimer   r   r   r0   r5   r   r#   ÚresultrC   Úhost_idÚhintr   r   r   r1   r7   )r7   r'   r8   r9   r:   r;   r<   r=   r>   r+   r?   r,   ÚstartÚidleÚsbxr2   s                   r3   Úsandbox_createrP   L   sÿ  € õL ŒI‰KŒK€EØ'Ð3ˆ<ˆ<Õ9M€DàÐØÐ Ð 2°fÐ 2ÝÐnÑoÔoÐoØð 	e�lð 	eÝÐcÑdÔdÐdÝÔ! $°)À5ÐIÑIÔI×PÒPÝ˜c 8Ñ,Ô,ØØ-ð Qñ 
ô 
ˆõ
 	Œ
�? s¤v°C´KÀdÕW[ÔW`ÑWbÔWbÐejÑWjÐTqÐTqÐTqÐTqÐrÑrÔrÐrÝŒÐP¸¼ÐPÐPÐPÑQÔQÐQÝŒÐA°s´vÐAÐAÐAÑBÔBÐBØˆåŒnØÐ$•}ØÐ$˜ØÝ˜#˜xÑ(Ô(Ý˜g |Ñ4Ô4Ý˜fÑ%Ô%ØØ)Øð
ñ 
ô 
€Gð ‡M‚M�O„O€OÝ„Jˆ 7¤:°W´]ÍtÌyÉ{Ì{Ð]bÑObÐLiÐLiÐLiÐLiÐjÑjÔjÐjÝ„HÐP°G´JÐPÐPÐPÑQÔQÐQÝ„HÐA°7´:ÐAÐAÐAÑBÔBÐBÐBÐBó    ÚexecÚignore_unknown_optionsTz5hf sandbox exec <sandbox_id> -- python -c "print(42)"z1hf sandbox exec -w /app <sandbox_id> -- pytest -x)Úcontext_settingsr6   ÚcommandzThe command to run.Úworkdirz-wz	--workdirzWorking directory.Úexec_timeoutz	--timeoutz)Kill the command after this many seconds.c           
      óú  — dt           ddfd„}dt           ddfd„}	t          | ||¬¦  «        5 }
|
                     t          |¦  «        t	          ||¦  «        ||||	d¬¦  «        }ddd¦  «         n# 1 swxY w Y   |j        r?t          j        d	|› d
�¦  «         t          j	         
                    |j        pd¬¦  «        ‚|j        dk    r.t          j	         
                    |j        �|j        nd¬¦  «        ‚dS )zÄRun a command in a sandbox, streaming output. Exits with the command's exit code.

    To start a long-running command in the background instead of waiting for it, use
    `hf sandbox spawn`.
    Údatar-   Nc                 ó€   — t           j                             | ¦  «         t           j                             ¦   «          d S ©N)ÚsysÚstdoutÚwriteÚflush©rY   s    r3   Úwrite_stdoutz"sandbox_exec.<locals>.write_stdout°   ó2   € ÝŒ
×Ò˜ÑÔÐÝŒ
×ÒÑÔÐÐÐrQ   c                 ó€   — t           j                             | ¦  «         t           j                             ¦   «          d S r[   )r\   Ústderrr^   r_   r`   s    r3   Úwrite_stderrz"sandbox_exec.<locals>.write_stderr´   rb   rQ   r/   F)r:   ÚcwdÚtimeoutÚ	on_stdoutÚ	on_stderrÚcheckzCommand timed out after zs.é|   )Úcoder   r   )Ústrr4   ÚrunÚlistr   Ú	timed_outr#   ÚerrorÚclickÚ
exceptionsÚExitÚ	exit_code)r*   rU   rV   r:   r<   rW   r+   r,   ra   re   r2   rJ   s               r3   Úsandbox_execrv   –   sy  € ð4�3ð  4ð ð ð ð ð�3ð  4ð ð ð ð õ 
�*¨	¸Ð	?Ñ	?Ô	?ð 	
À7Ø—’Ý�‰MŒMÝ˜c 8Ñ,Ô,ØØ Ø"Ø"Øð ñ 
ô 
ˆð	
ð 	
ð 	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøð 	
ð 	
ð 	
ð 	
ð Ôð BÝŒ	Ð=¨\Ð=Ð=Ð=Ñ>Ô>Ð>ÝÔ×#Ò#¨Ô)9Ð)@¸SÐ#ÑAÔAÐAØÔ˜1ÒÐÝÔ×#Ò#¸VÔ=MÐ=Y¨Ô)9Ð)9Ð_`Ð#ÑaÔaÐað Ðs   ­8A1Á1A5Á8A5Úspawnz;hf sandbox spawn <sandbox_id> -- python -m http.server 8000z8hf sandbox spawn -w /app <sandbox_id> -- uvicorn app:appz%The command to run in the background.c                 ój  — t          | ||¬¦  «        5 }|                     t          |¦  «        t          ||¦  «        |d¬¦  «        }ddd¦  «         n# 1 swxY w Y   t	          j        d| |j        ¬¦  «         t	          j        d| › d�¦  «         t	          j        d	| › d
|j        › d�¦  «         dS )zÂStart a long-running command in the background and return its pid (don't wait).

    List a sandbox's processes with `hf sandbox process ls` and stop one with
    `hf sandbox process kill`.
    r/   T)r:   rf   Ú
backgroundNzProcess started©r2   Úpidz+List processes with `hf sandbox process ls rF   z&Stop it with `hf sandbox process kill ú )r4   rn   ro   r   r#   rJ   r{   rL   )	r*   rU   rV   r:   r<   r+   r,   r2   r)   s	            r3   Úsandbox_spawnr}   É   s  € õ, 
�*¨	¸Ð	?Ñ	?Ô	?ð mÀ7Ø—+’+�d 7™mœmµ¸sÀHÑ1MÔ1MÐSZÐgk�+ÑlÔlˆðmð mð mñ mô mð mð mð mð mð mð møøøð mð mð mð må„JÐ ¨*¸'¼+ÐFÑFÔFÐFÝ„HÐI¸:ÐIÐIÐIÑJÔJÐJÝ„HÐR°jÐRÐRÀ7Ä;ÐRÐRÐRÑSÔSÐSÐSÐSs   “5AÁAÁAÚcpz2hf sandbox cp data.csv <sandbox_id>:/data/data.csvz7hf sandbox cp <sandbox_id>:/app/result.json result.jsonÚsrcz,Source: a local path or <sandbox_id>:<path>.Údstz1Destination: a local path or <sandbox_id>:<path>.c                 ó  — dt           dt          t           dz  t           f         fd„} || ¦  «        \  }} ||¦  «        \  }}|du |du k    rt          d¦  «        ‚|�Ft          |||¬¦  «        5 }	|	j                             ||¦  «         ddd¦  «         n# 1 swxY w Y   nI|€J ‚t          |||¬¦  «        5 }	|	j                             ||¦  «         ddd¦  «         n# 1 swxY w Y   t          j        d| |¬¦  «         dS )	zCCopy a file between the local machine and a sandbox (docker-style).Úrefr-   Nc                 óœ   — d| v rE|                       d¦  «        s0|                      dd¦  «        \  }}t          |¦  «        dk    r||fS d | fS )Nú:)ú.ú/ú~r   )Ú
startswithÚsplitÚlen)r‚   r*   Úpaths      r3   Úparsezsandbox_cp.<locals>.parseõ   s[   € ð �#ˆ:ˆ:˜cŸnšn¨_Ñ=Ô=ˆ:Ø"Ÿyšy¨¨aÑ0Ô0ÑˆJ˜Ý�:‰Œ Ò"Ð"Ø! 4Ð'Ð'Ø�SˆyÐrQ   zHExactly one of SRC and DST must be a sandbox path (<sandbox_id>:<path>).r/   ÚCopied)r   r€   )	rm   Útupler   r4   ÚfilesÚdownloadÚuploadr#   rJ   )
r   r€   r+   r,   rŒ   Úsrc_sandboxÚsrc_pathÚdst_sandboxÚdst_pathr2   s
             r3   Ú
sandbox_cpr–   æ   s«  € ð•3ð �5¥ t¡­S Ô1ð ð ð ð ð "˜E #™JœJÑ€K�Ø!˜E #™JœJÑ€K�Ø�tÐ °Ð!4Ò5Ð5ÝÐaÑbÔbÐbØÐÝ�k¨Y¸eÐDÑDÔDð 	7ÈØŒM×"Ò" 8¨XÑ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7øð Ð&Ð&Ð&Ý�k¨Y¸eÐDÑDÔDð 	5ÈØŒM× Ò  ¨8Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5å„Jˆx˜S cÐ*Ñ*Ô*Ð*Ð*Ð*s$   Á1BÂBÂ BÂ;C#Ã#C'Ã*C'Úkill)zhf sandbox kill <sandbox_id>zKhf sandbox kill <host_id>   # kills a whole shared host (all its sandboxes)zhf sandbox kill --allz$The sandbox or host id to terminate.Úall_z--allz2Terminate every sandbox and host in the namespace.Úyesz-yz--yesz$Answer Yes to prompts automatically.c                 óH  — t          |¬¦  «        }|r½t          |                     ddgt          di|¬¦  «        ¦  «        }|st	          j        d¦  «         dS t	          j        dt          |¦  «        › d	�|¬
¦  «         |D ](}|                     |j	        |j
        j        ¬¦  «         Œ)t	          j        dt          |¦  «        ¬¦  «         dS | €t          d¦  «        ‚t          | |¦  «        \  }}	t          |v r‡	 t!          | ||¬¦  «        5 }
|
                     ¦   «          ddd¦  «         n# 1 swxY w Y   n/# t$          $ r"}t          t'          |¦  «        ¦  «        |‚d}~ww xY wt	          j        d| ¬¦  «         dS |                     ||	¬¦  «        }|j        pi                      t.          ¦  «        t0          k    rXt	          j        d|› d�|¬
¦  «         |                     |j	        |j
        j        ¬¦  «         t	          j        d|¬¦  «         dS 	 t!          | ||¬¦  «        5 }
|
                     ¦   «          ddd¦  «         n# 1 swxY w Y   n/# t$          $ r"}t          t'          |¦  «        ¦  «        |‚d}~ww xY wt	          j        d| ¬¦  «         dS )z@Terminate a sandbox, a whole shared host, or everything (--all).©r,   ÚRUNNINGÚ
SCHEDULINGÚ1©ÚstatusÚlabelsr+   zNo running sandboxes.Nú
Terminate zA sandbox job(s) (including shared hosts and all their sandboxes)?©r™   ©Újob_idr+   Ú
Terminated)Újobsz*Provide a sandbox id, a host id, or --all.r/   zSandbox terminated)rC   zTerminate shared host z and all of its sandboxes?zHost terminated)r   ro   Ú	list_jobsr   r#   ÚtextÚconfirmrŠ   Ú
cancel_jobrC   Úownerr(   rJ   r   r   r   r4   r—   r   rm   Úinspect_jobr¡   Úgetr
   r   )r*   r˜   r™   r+   r,   Úapir§   ÚjobÚsidÚnsr2   Úes               r3   Úsandbox_killr´     s5  € õ  ˜5Ð
!Ñ
!Ô
!€Càð 	Ý�C—M’M¨)°\Ð)BÍMÐ[^ÐK_Ðkt�MÑuÔuÑvÔvˆØð 	ÝŒHÐ,Ñ-Ô-Ð-ØˆFÝŒÐm¥ T¡¤ÐmÐmÐmÐsvÐwÑwÔwÐwØð 	Dð 	DˆCØ�NŠN #¤&°C´I´NˆNÑCÔCÐCÐCÝŒ
�<¥c¨$¡i¤iÐ0Ñ0Ô0Ð0ØˆàÐÝÐCÑDÔDÐDå 
¨IÑ6Ô6�G€CˆÝ˜ÐÐð	*Ý˜*°	ÀÐGÑGÔGð È7Ø—’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøåð 	*ð 	*ð 	*Ý�3˜q™6œ6Ñ"Ô"¨Ð)øøøøð	*øøøåŒ
Ð'¨JÐ7Ñ7Ô7Ð7Øˆð �/Š/ °ˆ/Ñ
3Ô
3€CØŒ
Ð�b×Ò�jÑ)Ô)­YÒ6Ð6ÝŒÐL¨SÐLÐLÐLÐRUÐVÑVÔVÐVØ�Š˜cœf°´	´ˆÑ?Ô?Ð?ÝŒ
Ð$¨Ð-Ñ-Ô-Ð-Øˆð&Ý�j¨I¸UÐCÑCÔCð 	ÀwØ�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øøåð &ð &ð &Ý•s˜1‘v”vÑÔ AÐ%øøøøð&øøøå„JÐ#¨
Ð3Ñ3Ô3Ð3Ð3Ð3sx   Ã>D= ÄD1Ä%D= Ä1D5Ä5D= Ä8D5Ä9D= Ä=
E)ÅE$Å$E)ÈI È0IÉI ÉIÉI ÉIÉI É
J	É'JÊJ	)zhf sandbox pool createz5hf sandbox pool create python:3.12 --flavor cpu-basicz7hf sandbox pool create --per-host 50 --idle-timeout 30mz+Docker image for the hosts (needs /bin/sh).Úper_hostz
--per-hostz&Sandboxes packed per host VM (default z).)Úminr&   Ú	max_hostsz--max-hostsz'Optional cap on the number of host VMs.zZShut a host down once it has had no sandboxes for this long (e.g. '10m'). Defaults to 10m.c           	      óp  — t          j         ¦   «         }| pt          } t          | |pd|||�|nt          ||¬¦  «        }|j        }	|j        }
t          j        d|	| |pd|
d         t          j         ¦   «         |z
  d›d�¬¦  «         t          j        d	|	› d
�¦  «         t          j        d|	› d
�¦  «         dS )zRWarm a pool: boot one host VM now, tagged so it can be found later by its pool id.rG   N)r7   r8   Úsandboxes_per_hostr·   r9   r+   r,   zPool createdr   rA   rB   )rC   r7   r8   rD   rE   z/Spawn a sandbox with `hf sandbox create --pool rF   z=Delete the pool (and its hosts) with `hf sandbox pool delete )	rI   r   r   r   r(   Úhost_idsr#   rJ   rL   )r7   r8   rµ   r·   r9   r+   r,   rM   r'   Úpool_idrº   s              r3   Úpool_creater¼   G  sì   € õ4 ŒI‰KŒK€EØÐ"•]€EÝØØÐ$˜Ø#ØØ%1Ð%=�\�\ÕCWØØðñ ô €Dð Œi€GØŒ}€HÝ„JØØØØÐ$˜Ø�aŒ[Ý”9‘;”; Ñ&Ð-Ð-Ð-Ð-ðñ ô ð õ „HÐJ¸wÐJÐJÐJÑKÔKÐKÝ„HÐXÈWÐXÐXÐXÑYÔYÐYÐYÐYrQ   z	ls | listzhf sandbox pool lsc                 ón  — t          |¬¦  «        }i }|                     dt          t          i| ¬¦  «        D ]š}|j        pi                      t          ¦  «        }|sŒ&t          |j        t          ¦  «        r|j        ni }| 
                    |||j        p|j        |j        |                     dd¦  «        ddœ¦  «        }|dxx         d	z  cc<   Œ›t          |                     ¦   «         ¦  «        }t!          j        |d
¬¦  «         |st!          j        d¦  «         dS t!          j        d¦  «         dS )z9List running sandbox pools (grouped from their host VMs).r›   rœ   rŸ   ÚSBX_CAPACITYÚ r   )rC   r7   r8   rµ   ÚhostsrÀ   r   rC   ©Úid_keyz)Create one with `hf sandbox pool create`.z5Spawn a sandbox with `hf sandbox create --pool <id>`.N)r   r¨   r
   r   r¡   r®   r   Ú
isinstanceÚenvironmentÚdictÚ
setdefaultÚdocker_imageÚspace_idr8   ro   Úvaluesr#   ÚtablerL   )	r+   r,   r¯   Úpoolsr°   r{   r:   ÚinfoÚrowss	            r3   Úpool_lsrÎ   z  sG  € õ ˜5Ð
!Ñ
!Ô
!€CØ')€EØ�}Š} IµzÅ9Ð6MÐYbˆ}ÑcÔcð ð ˆØŒzÐ˜R×$Ò$¥ZÑ0Ô0ˆØð 	ØÝ!+¨C¬O½TÑ!BÔ!BÐJˆcŒoˆoÈˆØ×ÒØàØÔ)Ð9¨S¬\Øœ*ØŸGšG N°BÑ7Ô7Øðð ñ	
ô 	
ˆð 	ˆWˆˆŒ˜Ñˆˆ‰ˆÝ�—’‘”ÑÔ€DÝ„Iˆd˜4Ð Ñ Ô Ð Øð JÝŒÐ<Ñ=Ô=Ð=Ð=Ð=åŒÐHÑIÔIÐIÐIÐIrQ   zdelete | rmz hf sandbox pool delete <pool_id>r»   zPool id to delete.c           	      ó   — t          |¬¦  «        }t          |                     ddgt          t          t
          | i|¬¦  «        ¦  «        }|s)t          | ¦  «         t          j        d| › d�¦  «         dS t          j	        dt          |¦  «        › d	| › d
�|¬¦  «         |D ](}|                     |j        |j        j        ¬¦  «         Œ)t          | ¦  «         t          j        d| t          |¦  «        ¬¦  «         dS )zDTerminate every host VM of a pool (and therefore all its sandboxes).r›   rœ   r�   rŸ   zNo running hosts for pool 'z'.Nr¢   z host(s) of pool 'z' (and all their sandboxes)?r£   r¤   zPool deleted)rC   Úhosts_terminated)r   ro   r¨   r
   r   r   r   r#   r©   rª   rŠ   r«   rC   r¬   r(   rJ   )r»   r™   r+   r,   r¯   rÀ   r°   s          r3   Úpool_deleterÑ   š  s  € õ ˜5Ð
!Ñ
!Ô
!€CÝØ�ŠØ˜|Ð,Ý¥	­:°wÐ?Øð 	ñ 	
ô 	
ñô €Eð ð Ý˜'Ñ"Ô"Ð"ÝŒÐ:¨wÐ:Ð:Ð:Ñ;Ô;Ð;ØˆÝ„KÐ`�S ™ZœZÐ`Ð`¸7Ð`Ð`Ð`ÐfiÐjÑjÔjÐjØð @ð @ˆØ�Š˜cœf°´	´ˆÑ?Ô?Ð?Ð?Ý�gÑÔÐÝ„Jˆ~ '½CÀ¹J¼JÐGÑGÔGÐGÐGÐGrQ   Úcmdc                 óZ   — t          | t          ¦  «        r| nd                     | ¦  «        S )Nr|   )rÃ   rm   Újoin)rÒ   s    r3   Ú_fmt_cmdrÕ   ¸  s%   € Ý˜S¥#Ñ&Ô&Ð9ˆ3ˆ3¨C¯HªH°S©M¬MÐ9rQ   c                 ó<   — | j         rdS | j        €dn
d| j        › d�S )NÚrunningÚexitedzexited (ú))r×   ru   )r)   s    r3   Ú_fmt_statusrÚ   ¼  s2   € Ø„ð ØˆyØÔ(Ð0ˆ8ˆ8Ð6UÀÔARÐ6UÐ6UÐ6UÐUrQ   z"hf sandbox process ls <sandbox_id>c                 ó.  — t          | ||¬¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   d„ |D ¦   «         }t          j        |d¬¦  «         |st          j        d| › d�¦  «         dS t          j        d| › d	�¦  «         dS )
zUList the background processes running in a sandbox (started with `hf sandbox spawn`).r/   Nc                 ób   — g | ],}|j         t          |¦  «        t          |j        ¦  «        d œ‘Œ-S ))r{   r    rÒ   )r{   rÚ   rÕ   rÒ   )Ú.0Úps     r3   ú
<listcomp>zprocess_ls.<locals>.<listcomp>Ë  s3   € Ð`Ð`Ð`ÐQR�A”E¥[°¡^¤^½HÀQÄU¹O¼OÐLÐLÐ`Ð`Ð`rQ   r{   rÁ   z!Start one with `hf sandbox spawn z -- <cmd>`.z'Stop one with `hf sandbox process kill z <pid>`.)r4   Ú	processesr#   rÊ   rL   )r*   r+   r,   r2   rà   rÍ   s         r3   Ú
process_lsrá   Â  sò   € õ 
�*¨	¸Ð	?Ñ	?Ô	?ð (À7Ø×%Ò%Ñ'Ô'ˆ	ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (à`Ð`ÐV_Ð`Ñ`Ô`€DÝ„Iˆd˜5Ð!Ñ!Ô!Ð!Øð QÝŒÐL°ZÐLÐLÐLÑMÔMÐMÐMÐMåŒÐO¸:ÐOÐOÐOÑPÔPÐPÐPÐPs   “4´8»8z*hf sandbox process kill <sandbox_id> <pid>r{   z.The pid as printed by `hf sandbox process ls`.c                 ó>  ‡— t          | ||¬¦  «        5 }t          ˆfd„|                     ¦   «         D ¦   «         d¦  «        }|€t          d‰› d| › d�¦  «        ‚|                     ¦   «          ddd¦  «         n# 1 swxY w Y   t          j        d| ‰¬¦  «         dS )	z/Stop a background process running in a sandbox.r/   c              3   ó2   •K  — | ]}|j         ‰k    ¯|V — Œd S r[   )r{   )rÝ   rÞ   r{   s     €r3   ú	<genexpr>zprocess_kill.<locals>.<genexpr>Ü  s)   øè è € ÐGÐG˜a¸!¼%À3º,¸,˜¸,¸,¸,¸,ÐGÐGrQ   NzNo process with pid z in sandbox r…   zProcess stoppedrz   )r4   Únextrà   r   r—   r#   rJ   )r*   r{   r+   r,   r2   r)   s    `    r3   Úprocess_killræ   Ó  sð   ø€ õ 
�*¨	¸Ð	?Ñ	?Ô	?ð À7ÝÐGÐGÐGÐG 7×#4Ò#4Ñ#6Ô#6ÐGÑGÔGÈÑNÔNˆØˆ?ÝÐP°#ÐPÐPÀ:ÐPÐPÐPÑQÔQÐQØ�Š‰Œˆð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ
 „JÐ ¨*¸#Ð>Ñ>Ô>Ð>Ð>Ð>s   ”AA;Á;A?ÂA?)NNNNNNNNNNFN)NNNNNN)NNNNN)NN)NFFNN)FNN)GÚ__doc__r\   rI   Ú
contextlibr   Útypingr   r   r   rr   Úhuggingface_hub._sandboxr   r   r	   r
   r   r   r   r   r   r   r   r   Úhuggingface_hub._sandbox_cacher   Úhuggingface_hub.errorsr   r   Ú
_cli_utilsr   r   r   r   r   r   r   r   r   r    Ú
_frameworkr!   r"   Ú_outputr#   r§   r$   r%   Úsandbox_cliÚpool_cliÚ	add_groupÚprocess_clirm   ÚSandboxIdArgr4   rU   ÚboolrP   ro   Úfloatrv   r}   r–   r´   Úintr¼   rÎ   rÑ   rÕ   rÚ   rá   ræ   © rQ   r3   ú<module>rù      sÑ  ðð JÐ Ià 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )ð ˆmÐ!QÐRÑRÔR€Øˆ=ÐbÐcÑcÔc€Ø × Ò �h VÐ Ñ ,Ô ,Ð ,ØˆmÐ![Ð\Ñ\Ô\€Ø × Ò �k¨	Ð Ñ 2Ô 2Ð 2à˜˜h˜hÐ,_Ð`Ñ`Ô`Ð`Ôa€ð ð˜ð ¨C°$©Jð ¸sÀT¹zð ÈhÐW^ÔN_ð ð ð ñ „ðð ×ÒØðð ð ð ñ ô ð TXð 	Øð 	ØØØØ#'ØØ"ð 	Øð)>Cð >CØ�S˜4‘Z  Ð/NÐ!OÑ!OÔ!OÐOÔPð>Cà
Øˆd‰
ØˆˆxÐjÐkÑkÔkð	môð>Cð ð>Cð Øˆd‰
ØˆÐjÐkÑkÔkð	môð>Cð 
ð>Cð ð>Cð ð>Cð !ð>Cð ð>Cð  ð!>Cð"  ØˆfˆfÐ)Ð0bÐcÑcÔcÐcôð#>Cð( ð)>Cð* 
ð+>Cð >Cð >Cñô ð>CðB ×ÒØ
Ø.°Ð5à?Ø;ðð ñ ô ð \`ØØð 	Ø"Øð(bð (bØð(bà�t˜C”y ( (Ð0EÐ"FÑ"FÔ"FÐFÔGð(bð �s˜T‘z 6 6¨$°ÐBVÐ#WÑ#WÔ#WÐWÔXð(bð 
ð	(bð
 ð(bð Ø�‰�f�f˜[Ð/ZÐ[Ñ[Ô[Ð[ôð(bð ð(bð ð(bð 
ð(bð (bð (bñô ð(bðV ×ÒØØ.°Ð5àEØBðð ñ ô ð \`ØØØ"ØðTð TØðTà�t˜C”y ( (Ð0WÐ"XÑ"XÔ"XÐXÔYðTð �s˜T‘z 6 6¨$°ÐBVÐ#WÑ#WÔ#WÐWÔXðTð 
ð	Tð
 ðTð ðTð ðTð 
ðTð Tð Tñô ðTð* ×ÒØà<ØAðð ñ ô ð #Øð	+ð +Ø	�3˜˜Ð&TÐUÑUÔUÐUÔ	Vð+à	�3˜˜Ð&YÐZÑZÔZÐZÔ	[ð+ð ð+ð ð	+ð
 
ð+ð +ð +ñô ð+ð@ ×ÒØ
ðð ð ð ñ ô ð `dØhmØ_dØ"Øð/4ð /4Ø˜# ™* h hÐ4ZÐ&[Ñ&[Ô&[Ð[Ô\ð/4à
�D˜&˜& Ð/cÐdÑdÔdÐdÔ
eð/4ð 
�4˜˜  gÐ4ZÐ[Ñ[Ô[Ð[Ô	\ð/4ð ð	/4ð
 ð/4ð 
ð/4ð /4ð /4ñô ð/4ðd 
×ÒØðð ð ð ñ ô ð bfØð 	#ð 	ð 	Ø"Øð(Zð (ZØ�S˜4‘Z  Ð/\Ð!]Ñ!]Ô!]Ð]Ô^ð(Zàð(Zð ØØˆˆ| Ð)pÐRlÐ)pÐ)pÐ)pÐqÑqÔqð	sôð(Zð Øˆd‰
�F�F˜=¨aÐ6_Ð`Ñ`Ô`Ð`ôð(Zð Øˆd‰
ØˆÐpÐqÑqÔqð	sôð(Zð ð(Zð ð(Zð  
ð!(Zð (Zð (Zñô ð(ZðV 
×Ò�+Ð)=Ð(>ÐÑ?Ô?à"ØðJð JØðJàðJð 
ðJð Jð Jñ @Ô?ðJð> 
×ÒØØ0Ð1ð ñ ô ð `eØ"Øð	Hð HØ�s˜H˜HÐ*>Ð?Ñ?Ô?Ð?Ô@ðHà	�4˜˜  gÐ4ZÐ[Ñ[Ô[Ð[Ô	\ðHð ðHð ð	Hð
 
ðHð Hð Hñ	ô ðHð4:�#˜˜Sœ	‘/ð : cð :ð :ð :ð :ðV˜ð V¨Cð Vð Vð Vð Vð ×Ò�[Ð,PÐ+QÐÑRÔRð #ØðQð QØðQàðQð ðQð 
ð	Qð Qð Qñ SÔRðQð  ×Ò�VÐ'SÐ&TÐÑUÔUð #Øð	?ð ?Øð?à	�3˜˜Ð&VÐWÑWÔWÐWÔ	Xð?ð ð?ð ð	?ð
 
ð?ð ?ð ?ñ VÔUð?ð ?ð ?rQ   