Ë
    ÂÓ^jË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/jc                  e0d¬«        e&d¬«      Z2e/jc                  e2d¬«       ee3 e(d¬«      f   Z4ede3de3dz  de3dz  dee   fd„«       Z5e/jm                  dg d¢¬«      	 	 	 	 	 	 	 	 	 	 	 	 drd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/jm                  d-d.d/id0d1g¬2«      	 	 	 	 	 	 dsde4d3ee9e3    e(d4¬«      f   d5ee3dz   e)d6d7d8¬«      f   d$ed&ed9ee:dz   e)d:d;¬«      f   de.de!ddfd<„«       Z;e/jm                  d=d.d/id>d?g¬2«      	 	 	 	 	 dtde4d3ee9e3    e(d@¬«      f   d5ee3dz   e)d6d7d8¬«      f   d$ed&ede.de!ddfdA„«       Z<e/jm                  dBdCdDg¬«      	 	 dudEee3 e(dF¬«      f   dGee3 e(dH¬«      f   de.de!ddf
dI„«       Z=e/jm                  dJg dK¢¬«      	 	 	 	 	 dvdee3dz   e(dL¬«      f   dMee7 e)dNdO¬«      f   dPee7 e)dQdRdS¬«      f   de.de!ddfdT„«       Z>e0jm                  dg dU¢¬«      ddeddddfdee3dz   e(dV¬«      f   d!e-dWee? e)dXddYe› dZ�¬[«      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d`„«       Z@e0jm                  dadbg¬«      	 	 dude.de!ddfdc„«       ZAe0jm                  dddeg¬«      	 	 	 dwdfee3 e(dg¬«      f   dPee7 e)dQdRdS¬«      f   de.de!ddf
dh„«       ZBdie3e9e3   z  de3fdj„ZCdede3fdk„ZDe2jm                  dadlg¬«      	 	 dude4de.de!ddfdm„«       ZEe2jm                  dJdng¬«      	 	 dude4doee? e(dp¬«      f   de.de!ddf
dq„«       ZFy)xzCContains 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                  | ||¬«      }	 |–— |j                  «        y# |j                  «        w xY w­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       úf/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/cli/sandbox.pyÚ_connectr4   B   s6   è ø€ ô �o‰o˜j°IÀUÔK€GðØŠà�‰�øˆ�‰�üs   ‚Aœ1  A±AÁ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)ÚexamplesÚ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                  ||	|¬«      j                  t        ||«      ||
¬«      }t        j                  d|j                  |j                  |t        j                   «       |z
  d›d�¬	«       t        j                  d
|j                  › d�«       t        j                  d|j                  › d�«       yt        j
                  | xs t        |xs d|t        ||«      t        ||«      t        |«      |	|
|¬«	      }|j                  «        t        j                  d|j                  |j                   t        j                   «       |z
  d›d�¬«       t        j                  d
|j                  › d�«       t        j                  d|j                  › d�«       y)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‰I‹K€EØ'Ð3‰<Ô9M€DàÐØÐ Ð 2±fÜÐnÓoÐoÙ‘lÜÐcÓdÐdÜ×!Ñ! $°)À5ÔI×PÑPÜ˜c 8Ó,ØØ-ð Qó 
ˆô
 	�
‰
�? s§v¡v°C·K±KÀdÔW[×W`ÑW`ÓWbÐejÑWjÐknÐVoÐopÐTqÕrÜ�‰Ð7¸¿¹°xÐ?OÐPÔQÜ�‰Ð6°s·v±v°h¸bÐAÔBØä�n‰nØÒ$”}ØÒ$˜ØÜ˜#˜xÓ(Ü˜g |Ó4Ü˜fÓ%ØØ)Øô
€Gð ‡M�M„OÜ‡J�Jˆ 7§:¡:°W·]±]ÌtÏyÉyË{Ð]bÑObÐcfÐNgÐghÐLiÕjÜ‡H�HÐ3°G·J±J°<Ð?OÐPÔQÜ‡H�HÐ2°7·:±:°,¸bÐAÕ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 }
|
j                  t        |«      t	        ||«      ||||	d¬«      }ddd«       j
                  rGt        j                  d	|› d
�«       t        j                  j                  |j                  xs d¬«      ‚|j                  dk7  r=t        j                  j                  |j                  �|j                  ¬«      ‚d¬«      ‚y# 1 sw Y   Œ©xY w)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                  j                  | «       t         j                  j                  «        y ©N)ÚsysÚstdoutÚwriteÚflush©rY   s    r3   Úwrite_stdoutz"sandbox_exec.<locals>.write_stdout°   ó$   € Ü�
‰
×Ñ˜ÔÜ�
‰
×ÑÕrQ   c                 ó~   — t         j                  j                  | «       t         j                  j                  «        y 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   –   s  € ð4œ3ð  4ó ðœ3ð  4ó ô 
�*¨	¸Ô	?ð 	
À7Ø—‘Ü�‹MÜ˜c 8Ó,ØØ Ø"Ø"Øð ó 
ˆ÷	
ð ×ÒÜ�	‰	Ð,¨\¨N¸"Ð=Ô>Ü×Ñ×#Ñ#¨×)9Ñ)9Ò)@¸SÐ#ÓAÐAØ×Ñ˜1ÒÜ×Ñ×#Ñ#¸V×=MÑ=MÐ=Y¨×)9Ñ)9Ð#ÓaÐaÐ_`Ð#ÓaÐað ÷	
ð 	
ús   §,C;Ã;DÚ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                 ó\  — t        | ||¬«      5 }|j                  t        |«      t        ||«      |d¬«      }ddd«       t	        j
                  d| j                  ¬«       t	        j                  d| › d�«       t	        j                  d	| › d
|j                  › d�«       y# 1 sw Y   ŒkxY w)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´¸sÀHÓ1MÐSZÐgk�+Ólˆ÷mä‡J�JÐ ¨*¸'¿+¹+ÕFÜ‡H�HÐ:¸:¸,ÀbÐIÔJÜ‡H�HÐ5°j°\ÀÀ7Ç;Á;À-ÈrÐRÕS÷	mð mús   �)B"Â"B+Ú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«      ‚|�4t        |||¬«      5 }	|	j                  j                  ||«       ddd«       n7|€J ‚t        |||¬«      5 }	|	j                  j                  ||«       ddd«       t        j                  d| |¬«       y# 1 sw Y   Œ"xY w# 1 sw Y   Œ.xY w)	zCCopy a file between the local machine and a sandbox (docker-style).Úrefr-   Nc                 ó‚   — d| v r8| j                  d«      s'| j                  dd«      \  }}t        |«      dkD  r||fS d | fS )Nú:)ú.ú/ú~r   )Ú
startswithÚsplitÚlen)r‚   r*   Úpaths      r3   Úparsezsandbox_cp.<locals>.parseõ   sL   € ð �#‰:˜cŸn™n¨_Ô=Ø"Ÿy™y¨¨aÓ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ó ñ " #›JÑ€K�Ù! #›JÑ€K�Ø�tÐ °Ð!4Ò5ÜÐaÓbÐbØÐÜ�k¨Y¸eÔDð 	7ÈØ�M‰M×"Ñ" 8¨XÔ6÷	7ð 	7ð Ð&Ð&Ð&Ü�k¨Y¸eÔDð 	5ÈØ�M‰M× Ñ  ¨8Ô4÷	5ä‡J�Jˆx˜S cÖ*÷	7ð 	7ú÷	5ð 	5ús   ÁCÂ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                 óæ  — t        |¬«      }|rºt        |j                  ddgt        di|¬«      «      }|st	        j
                  d«       yt	        j                  dt        |«      › d	�|¬
«       |D ]3  }|j                  |j                  |j                  j                  ¬«       Œ5 t	        j                  dt        |«      ¬«       y| €t        d«      ‚t        | |«      \  }}	t        |v r@	 t!        | ||¬«      5 }
|
j#                  «        ddd«       t	        j                  d| ¬«       y|j)                  ||	¬«      }|j*                  xs i j-                  t.        «      t0        k(  rdt	        j                  d|› d�|¬
«       |j                  |j                  |j                  j                  ¬«       t	        j                  d|¬«       y	 t!        | ||¬«      5 }
|
j#                  «        ddd«       t	        j                  d| ¬«       y# 1 sw Y   �ŒxY w# t$        $ r}t        t'        |«      «      |‚d}~ww xY w# 1 sw Y   ŒTxY w# t$        $ r}t        t'        |«      «      |‚d}~ww xY w)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´     s  € ô  ˜5Ô
!€CáÜ�C—M‘M¨)°\Ð)BÌMÐ[^ÐK_Ðkt�MÓuÓvˆÙÜ�H‰HÐ,Ô-ØÜ�‰�j¤ T£ Ð+lÐmÐsvÕwØò 	DˆCØ�N‰N #§&¡&°C·I±I·N±NˆNÕCð	Dä�
‰
�<¤c¨$£iÕ0ØàÐÜÐCÓDÐDä 
¨IÓ6�G€CˆÜ˜Ñð	*Ü˜*°	ÀÔGð È7Ø—‘”÷ô 	�
‰
Ð'¨JÕ7Øð �/‰/ °ˆ/Ó
3€CØ�
‰
Ò�b×ÑœjÓ)¬YÒ6Ü�‰Ð,¨S¨EÐ1KÐLÐRUÕVØ�‰˜cŸf™f°·	±	·±ˆÔ?Ü�
‰
Ð$¨Õ-Øð&Ü�j¨I¸UÔCð 	ÀwØ�L‰LŒN÷	ô ‡J�JÐ#¨
Ö3÷'ñ ûäò 	*Üœ3˜q›6Ó"¨Ð)ûð	*ú÷	ð 	ûäò &Ü”s˜1“vÓ AÐ%ûð&ús`   Ã.H Ã<HÄH ÇI ÇIÇ.I ÈHÈH È	H>È$H9È9H>ÉI
ÉI É	I0ÉI+É+I0)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           	      ó†  — t        j                   «       }| xs t        } t        | |xs d|||�|nt        ||¬«      }|j                  }	|j
                  }
t        j                  d|	| |xs d|
d   t        j                   «       |z
  d›d�¬«       t        j                  d	|	› d
�«       t        j                  d|	› d
�«       y)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‰I‹K€EØÒ"”]€EÜØØÒ$˜Ø#ØØ%1Ð%=‘\ÔCWØØô€Dð �i‰i€GØ�}‰}€HÜ‡J�JØØØØÒ$˜Ø�a‰[Ü—9‘9“; Ñ& sÐ+¨1Ð-õô ‡H�HÐ>¸w¸iÀrÐJÔKÜ‡H�HÐLÈWÈIÐUWÐXÕYrQ   z	ls | listzhf sandbox pool lsc                 ój  — t        |¬«      }i }|j                  dt        t        i| ¬«      D ]§  }|j                  xs i j                  t        «      }|sŒ)t        |j                  t        «      r|j                  ni }|j                  |||j                  xs |j                  |j                  |j                  dd«      ddœ«      }|dxx   d	z  cc<   Œ© t        |j                  «       «      }t!        j"                  |d
¬«       |st!        j$                  d«       yt!        j$                  d«       y)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  s   € ô ˜5Ô
!€CØ')€EØ�}‰} I´zÄ9Ð6MÐYbˆ}Ócò ˆØ�z‰zÒ˜R×$Ñ$¤ZÓ0ˆÙØÜ!+¨C¯O©O¼TÔ!Bˆc�oŠoÈˆØ×ÑØàØ×)Ñ)Ò9¨S¯\©\ØŸ*™*ØŸG™G N°BÓ7Øñó	
ˆð 	ˆW‹˜ÑŒðô  �—‘“Ó€DÜ‡I�Iˆd˜4Õ ÙÜ�‰Ð<Õ=ä�‰ÐHÕIrQ   zdelete | rmz hf sandbox pool delete <pool_id>r»   zPool id to delete.c           	      óÞ  — t        |¬«      }t        |j                  ddgt        t        t
        | i|¬«      «      }|s%t        | «       t        j                  d| › d�«       yt        j                  dt        |«      › d	| › d
�|¬«       |D ]3  }|j                  |j                  |j                  j                  ¬«       Œ5 t        | «       t        j                  d| t        |«      ¬«       y)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¨i°rÐ:Ô;ØÜ‡K�K�*œS ›Z˜LÐ(:¸7¸)ÐC_Ð`ÐfiÕjØò @ˆØ�‰˜cŸf™f°·	±	·±ˆÕ?ð@ä�gÔÜ‡J�Jˆ~ '¼CÀ»JÖGrQ   Úcmdc                 óH   — t        | t        «      r| S dj                  | «      S )Nr|   )rÃ   rm   Újoin)rÒ   s    r3   Ú_fmt_cmdrÕ   ¸  s   € Ü˜S¤#Ô&ˆ3Ð9¨C¯H©H°S«MÐ9rQ   c                 óX   — | j                   ry| j                  €dS d| j                  › d�S )NÚrunningÚexitedzexited (ú))r×   ru   )r)   s    r3   Ú_fmt_statusrÚ   ¼  s3   € Ø‡‚ØØ×(Ñ(Ð0ˆ8ÐU¸À×ARÑARÐ@SÐSTÐ6UÐUrQ   z"hf sandbox process ls <sandbox_id>c                 ó~  — t        | ||¬«      5 }|j                  «       }ddd«       D �cg c].  }|j                  t        |«      t	        |j
                  «      dœ‘Œ0 }}t        j                  |d¬«       |st        j                  d| › d�«       yt        j                  d| › d	�«       y# 1 sw Y   Œ�xY wc c}w )
zUList the background processes running in a sandbox (started with `hf sandbox spawn`).r/   N)r{   r    rÒ   r{   rÁ   z!Start one with `hf sandbox spawn z -- <cmd>`.z'Stop one with `hf sandbox process kill z <pid>`.)	r4   Ú	processesr{   rÚ   rÕ   rÒ   r#   rÊ   rL   )r*   r+   r,   r2   rÜ   ÚprÍ   s          r3   Ú
process_lsrÞ   Â  sŸ   € ô 
�*¨	¸Ô	?ð (À7Ø×%Ñ%Ó'ˆ	÷(àV_Ö`ÐQR�A—E‘E¤[°£^¼HÀQÇUÁU»OÓLÐ`€DÐ`Ü‡I�Iˆd˜5Õ!ÙÜ�‰Ð4°Z°LÀÐLÕMä�‰Ð:¸:¸,ÀhÐOÕP÷(ð (üâ`s   �B.¬3B:Â.B7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„|j                  «       D «       d«      }|€t        d‰› d| › d�«      ‚|j	                  «        ddd«       t        j                  d| ‰¬«       y# 1 sw Y   Œ"xY w)	z/Stop a background process running in a sandbox.r/   c              3   óB   •K  — | ]  }|j                   ‰k(  sŒ|–— Œ y ­wr[   )r{   )Ú.0rÝ   r{   s     €r3   ú	<genexpr>zprocess_kill.<locals>.<genexpr>Ü  s   øè ø€ ÒG˜a¸!¿%¹%À3»,œÑGùs   ƒ˜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 7×#4Ñ#4Ó#6ÔGÈÓNˆØˆ?ÜÐ1°#°°lÀ:À,ÈaÐPÓQÐQØ�‰Œ÷	ô
 ‡J�JÐ ¨*¸#Ö>÷ð ús   �AA9Á9B)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ã 
Û Ý %ß +Ñ +ã ÷÷ ÷ ó õ =ß 9÷÷ ÷ ÷ )Ý ß )ñ Ð!QÔR€ÙÐbÔc€Ø × Ñ �h VÐ Ô ,ÙÐ![Ô\€Ø × Ñ �k¨	Ð Ô 2à˜™hÐ,_Ô`Ð`Ña€ð ð˜ð ¨C°$©Jð ¸sÀT¹zð ÈhÐW^ÑN_ò ó ðð ×ÑØòð ó ð TXð 	Øð 	ØØØØ#'ØØ"ð 	Øñ)>CØ�S˜4‘Z¡Ð/NÔ!OÐOÑPð>Cà
Øˆd‰
ÙˆxÐjÔkð	mñð>Cð ð>Cð Øˆd‰
ÙÐjÔkð	mñð>Cð 
ð>Cð ð>Cð ð>Cð !ð>Cð ð>Cð  ð!>Cð"  Ø‰fÐ)Ð0bÔcÐcñð#>Cð( ð)>Cð* 
ò+>Cóð>CðB ×ÑØ
Ø.°Ð5à?Ø;ðð ó ð \`ØØð 	Ø"Øñ(bØð(bà�t˜C‘y¡(Ð0EÔ"FÐFÑGð(bð �s˜T‘z¡6¨$°ÐBVÔ#WÐWÑXð(bð 
ð	(bð
 ð(bð Ø�‰‘f˜[Ð/ZÔ[Ð[ñð(bð ð(bð ð(bð 
ò(bóð(bðV ×ÑØØ.°Ð5àEØBðð ó ð \`ØØØ"ØñTØðTà�t˜C‘y¡(Ð0WÔ"XÐXÑYðTð �s˜T‘z¡6¨$°ÐBVÔ#WÐWÑXðTð 
ð	Tð
 ðTð ðTð ðTð 
òTóðTð* ×ÑØà<ØAðð ó ð #Øñ	+Ø	�3™Ð&TÔUÐUÑ	Vð+à	�3™Ð&YÔZÐZÑ	[ð+ð ð+ð ð	+ð
 
ò+óð+ð@ ×ÑØ
òð ó ð `dØhmØ_dØ"Øñ/4Ø˜# ™*¡hÐ4ZÔ&[Ð[Ñ\ð/4à
�D™& Ð/cÔdÐdÑ
eð/4ð 
�4™  gÐ4ZÔ[Ð[Ñ	\ð/4ð ð	/4ð
 ð/4ð 
ò/4óð/4ðd 
×ÑØòð ó ð bfØð 	#ð 	ð 	Ø"Øñ(ZØ�S˜4‘Z¡Ð/\Ô!]Ð]Ñ^ð(Zàð(Zð ØÙˆ| Ð+QÐRlÐQmÐmoÐ)pÔqð	sñð(Zð Øˆd‰
‘F˜=¨aÐ6_Ô`Ð`ñð(Zð Øˆd‰
ÙÐpÔqð	sñð(Zð ð(Zð ð(Zð  
ò!(Zóð(ZðV 
×Ñ�+Ð)=Ð(>ÐÓ?à"ØñJØðJàðJð 
òJó @ðJð> 
×ÑØØ0Ð1ð ó ð `eØ"Øñ	HØ�s™HÐ*>Ô?Ð?Ñ@ðHà	�4™  gÐ4ZÔ[Ð[Ñ	\ðHð ðHð ð	Hð
 
òHó	ðHð4:�#˜˜S™	‘/ð : có :ðV˜ð V¨Có Vð ×Ñ�[Ð,PÐ+QÐÓRð #ØñQØðQàðQð ðQð 
ò	Qó SðQð  ×Ñ�VÐ'SÐ&TÐÓUð #Øñ	?Øð?à	�3™Ð&VÔWÐWÑ	Xð?ð ð?ð ð	?ð
 
ò?ó Vñ?rQ   