§
    ìXÊj J  ã                   óæ	  — 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.m/Z/m0Z0  e&d¬¦  «        Z1 e&d¬¦  «        Z2e1 3                    e2d¬¦  «          e&d¬¦  «        Z4e1 3                    e4d¬¦  «         ee5 e(d¬¦  «        f         Z6ede5de5dz  de5dz  dee         fd„¦   «         Z7e1 8                    dg d¢¬¦  «        	 	 	 	 	 	 	 	 	 	 	 	 	 dtdee5dz   e(d¬¦  «        f         dee5dz   e)d d!¬¦  «        f         d"e-d#ee5dz   e)d$¬¦  «        f         d%ed&e d'e.d(ed)ed*e"de/d+ee9 e)d,d-¬¦  «        f         de!ddfd.„¦   «         Z:e1 8                    d/d0d1id2d3g¬4¦  «        	 	 	 	 	 	 dude6d5ee;e5          e(d6¬¦  «        f         d7ee5dz   e)d8d9d:¬¦  «        f         d%ed(ed;ee<dz   e)d<d=¬¦  «        f         de/de!ddfd>„¦   «         Z=e1 8                    d?d0d1id@dAg¬4¦  «        	 	 	 	 	 dvde6d5ee;e5          e(dB¬¦  «        f         d7ee5dz   e)d8d9d:¬¦  «        f         d%ed(ede/de!ddfdC„¦   «         Z>e1 8                    dDdEdFg¬¦  «        	 	 dwdGee5 e(dH¬¦  «        f         dIee5 e(dJ¬¦  «        f         de/de!ddf
dK„¦   «         Z?e1 8                    dLg dM¢¬¦  «        	 	 	 	 	 dxdee5dz   e(dN¬¦  «        f         dOee9 e)dPdQ¬¦  «        f         dRee9 e)dSdTdU¬¦  «        f         de/de!ddfdV„¦   «         Z@e2 8                    dg dW¢¬¦  «        ddeddddfdee5dz   e(dX¬¦  «        f         d"e-dYeeA e)dZdd[e› d\�¬]¦  «        f         d^eeAdz   e)d_dd`¬]¦  «        f         d#ee5dz   e)da¬¦  «        f         de/de!ddfdb„¦   «         ZBe2 8                    dcddg¬¦  «        	 	 dwde/de!ddfde„¦   «         ZCe2 8                    dfdgg¬¦  «        	 	 	 dydhee5 e(di¬¦  «        f         dRee9 e)dSdTdU¬¦  «        f         de/de!ddf
dj„¦   «         ZDdke5e;e5         z  de5fdl„ZEdede5fdm„ZFe4 8                    dcdng¬¦  «        	 	 dwde6de/de!ddfdo„¦   «         ZGe4 8                    dLdpg¬¦  «        	 	 dwde6dqeeA e(dr¬¦  «        f         de/de!ddf
ds„¦   «         ZHdS )zzCContains 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Ú	LabelsOptÚNamespaceOptÚ_parse_labels_mapz;Run and manage experimental sandboxes on Hugging Face Jobs.)ÚhelpzhWarm host VM pools and spawn experimental shared sandboxes for workloads within the same trust boundary.Ú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       úLC:\Projects\Historical\venv\Lib\site-packages\huggingface_hub/cli/sandbox.pyÚ_connectr6   D   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 --label controller-run=run-42z@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ÚlabelÚ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¦  «        ‚|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          |¦  «        |¬¦
  «
        }|                     ¦   «          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.zÚ--pool has no encrypted-secrets channel. Pass the values with --env/--env-file: on a pooled sandbox they are delivered to the host at creation and are not stored in the job metadata, but they are not encrypted at rest.z2--label is only supported for dedicated sandboxes.r1   )r<   r;   rB   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)
r9   r:   r;   r<   r=   Úvolumesr-   rB   Úlabelsr.   )rF   r9   rH   )Útimer   r   r   r2   r7   r   r#   ÚresultrF   Úhost_idÚhintr   r   r   r'   r3   r9   )r9   r)   r:   r;   r<   r=   r>   r?   r@   rA   r-   rB   r.   ÚstartÚidleÚsbxr4   s                    r5   Úsandbox_createrT   N   s*  € õP ŒI‰KŒK€EØ'Ð3ˆ<ˆ<Õ9M€DàÐØÐ Ð 2°fÐ 2ÝÐnÑoÔoÐoØð 	�lð 	Ýð6ñô ð ð
 ð 	QÝÐOÑPÔPÐPÝÔ! $°)À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_settingsr8   Ú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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©r]   s    r5   Úwrite_stdoutz"sandbox_exec.<locals>.write_stdout»   ó2   € ÝŒ
×Ò˜ÑÔÐÝŒ
×ÒÑÔÐÐÐrU   c                 ó€   — t           j                             | ¦  «         t           j                             ¦   «          d S r_   )r`   Ústderrrb   rc   rd   s    r5   Úwrite_stderrz"sandbox_exec.<locals>.write_stderr¿   rf   rU   r1   F)r<   ÚcwdÚtimeoutÚ	on_stdoutÚ	on_stderrÚcapture_outputÚcheckzCommand timed out after zs.é|   )Úcoder   r   )Ústrr6   ÚrunÚlistr   Ú	timed_outr#   ÚerrorÚclickÚ
exceptionsÚExitÚ	exit_code)r,   rY   rZ   r<   r?   r[   r-   r.   re   ri   r4   rN   s               r5   Úsandbox_execr{   ¡   s|  € ð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   ­9A2Á2A6Á9A6Ú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`.
    r1   T)r<   rj   Ú
backgroundNzProcess started©r4   Úpidz+List processes with `hf sandbox process ls rI   z&Stop it with `hf sandbox process kill ú )r6   rs   rt   r   r#   rN   r€   rP   )	r,   rY   rZ   r<   r?   r-   r.   r4   r+   s	            r5   Ú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      r5   Úparsezsandbox_cp.<locals>.parse  s[   € ð �#ˆ:ˆ:˜cŸnšn¨_Ñ=Ô=ˆ:Ø"Ÿyšy¨¨aÑ0Ô0ÑˆJ˜Ý�:‰Œ Ò"Ð"Ø! 4Ð'Ð'Ø�SˆyÐrU   zHExactly one of SRC and DST must be a sandbox path (<sandbox_id>:<path>).r1   ÚCopied)r„   r…   )	rr   Útupler   r6   ÚfilesÚdownloadÚuploadr#   rN   )
r„   r…   r-   r.   r‘   Úsrc_sandboxÚsrc_pathÚdst_sandboxÚdst_pathr4   s
             r5   Ú
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©ÚstatusrL   r-   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.r1   zSandbox terminated)rF   zTerminate shared host z and all of its sandboxes?zHost terminated)r   rt   Ú	list_jobsr   r#   ÚtextÚconfirmr�   Ú
cancel_jobrF   Úownerr*   rN   r   r   r   r6   rœ   r   rr   Úinspect_jobrL   Úgetr
   r   )r,   r�   rž   r-   r.   Úapir«   ÚjobÚsidÚnsr4   Úes               r5   Ú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.rJ   N)r9   r:   Úsandboxes_per_hostr»   r;   r-   r.   zPool createdr   rD   rE   )rF   r9   r:   rG   rH   z/Spawn a sandbox with `hf sandbox create --pool rI   z=Delete the pool (and its hosts) with `hf sandbox pool delete )	rM   r   r   r   r*   Úhost_idsr#   rN   rP   )r9   r:   r¹   r»   r;   r-   r.   rQ   r)   Úpool_idr¾   s              r5   Úpool_createrÀ   S  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ÐYrU   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   )rF   r9   r:   r¹   ÚhostsrÄ   r   rF   ©Úid_keyz)Create one with `hf sandbox pool create`.z5Spawn a sandbox with `hf sandbox create --pool <id>`.N)r   r¬   r
   r   rL   r²   r   Ú
isinstanceÚenvironmentÚdictÚ
setdefaultÚdocker_imageÚspace_idr:   rt   Úvaluesr#   ÚtablerP   )	r-   r.   r³   Úpoolsr´   r€   r<   ÚinfoÚrowss	            r5   Úpool_lsrÒ   †  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ÐIrU   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)rF   Úhosts_terminated)r   rt   r¬   r
   r   r   r   r#   r­   r®   r�   r¯   rF   r°   r*   rN   )r¿   rž   r-   r.   r³   rÄ   r´   s          r5   Ú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ÐGrU   Úcmdc                 óZ   — t          | t          ¦  «        r| nd                     | ¦  «        S )Nr�   )rÇ   rr   Újoin)rÖ   s    r5   Ú_fmt_cmdrÙ   Ä  s%   € Ý˜S¥#Ñ&Ô&Ð9ˆ3ˆ3¨C¯HªH°S©M¬MÐ9rU   c                 ó<   — | j         rdS | j        €dn
d| j        › d�S )NÚrunningÚexitedzexited (ú))rÛ   rz   )r+   s    r5   Ú_fmt_statusrÞ   È  s2   € Ø„ð ØˆyØÔ(Ð0ˆ8ˆ8Ð6UÀÔARÐ6UÐ6UÐ6UÐUrU   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`).r1   Nc                 ób   — g | ],}|j         t          |¦  «        t          |j        ¦  «        d œ‘Œ-S ))r€   r¥   rÖ   )r€   rÞ   rÙ   rÖ   )Ú.0Úps     r5   ú
<listcomp>zprocess_ls.<locals>.<listcomp>×  s3   € Ð`Ð`Ð`ÐQR�A”E¥[°¡^¤^½HÀQÄU¹O¼OÐLÐLÐ`Ð`Ð`rU   r€   rÅ   z!Start one with `hf sandbox spawn z -- <cmd>`.z'Stop one with `hf sandbox process kill z <pid>`.)r6   Ú	processesr#   rÎ   rP   )r,   r-   r.   r4   rä   rÑ   s         r5   Ú
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.r1   c              3   ó2   •K  — | ]}|j         ‰k    ¯|V — Œd S r_   )r€   )rá   râ   r€   s     €r5   ú	<genexpr>zprocess_kill.<locals>.<genexpr>è  s)   øè è € ÐGÐG˜a¸!¼%À3º,¸,˜¸,¸,¸,¸,ÐGÐGrU   NzNo process with pid z in sandbox rŠ   zProcess stoppedr   )r6   Únexträ   r   rœ   r#   rN   )r,   r€   r-   r.   r4   r+   s    `    r5   Ú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?)NNNNNNNNNNNFN)NNNNNN)NNNNN)NN)NFFNN)FNN)IÚ__doc__r`   rM   Ú
contextlibr   Útypingr   r   r   rw   Ú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%   r&   r'   Úsandbox_cliÚpool_cliÚ	add_groupÚprocess_clirr   ÚSandboxIdArgr6   rY   ÚboolrT   rt   Úfloatr{   r‚   r›   r¸   ÚintrÀ   rÒ   rÕ   rÙ   rÞ   rå   rê   © rU   r5   ú<module>rý      s  ðð JÐ Ià 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gð ˆmÐ!^Ð_Ñ_Ô_€Øˆ=Ø	sðñ ô €ð × Ò �h VÐ Ñ ,Ô ,Ð ,ØˆmÐ![Ð\Ñ\Ô\€Ø × Ò �k¨	Ð Ñ 2Ô 2Ð 2à˜˜h˜hÐ,_Ð`Ñ`Ô`Ð`Ôa€ð ð˜ð ¨C°$©Jð ¸sÀT¹zð ÈhÐW^ÔN_ð ð ð ñ „ðð ×ÒØðð ð ð ñ 	ô 	ð TXð 	Øð 	ØØØØØ#'ØØ"ð 	Øð+FCð FCØ�S˜4‘Z  Ð/NÐ!OÑ!OÔ!OÐOÔPðFCà
Øˆd‰
ØˆˆxÐjÐkÑkÔkð	môðFCð ðFCð Øˆd‰
ØˆÐjÐkÑkÔkð	môðFCð 
ðFCð ðFCð ðFCð ðFCð !ðFCð  ð!FCð" ð#FCð$  ØˆfˆfÐ)Ð0bÐcÑcÔcÐcôð%FCð* ð+FCð, 
ð-FCð FCð FCñ	ô 	ðFCðR ×ÒØ
Ø.°Ð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ðX ×ÒØØ.°Ð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ð?ð ?ð ?rU   