+
    –°³j $ ã                   ó  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	H
t
Ht ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHtHtHt ^ R	IHt ^ R
IHtH t H!t!H"t"H#t#H$t$ ^ RI%H&t&H't'H(t(H)t) ^ RI*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3H4t4 ^RI5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtC ^RIDHEtEHFtF ^RIGHHtHHItI ^RIJHKtKHLtLHMtM ]-Pœ                  ! ]O4      tPR R ltQR R ltR] ! R R4      4       tS]R R l4       tTRR/R R  lltUR! R" ltVR#RR$RR%R/R& R' lltWR(tXR)R¾RR/R* R+ lltYR, R- ltZR.t[]]\]E! R/R07      3,          t]]]\R,          ]F! R1R07      3,          t^]]\R,          ]F! R2]:! ] 4      R37      3,          t_]]`]\,          R,          ]F! R4R5R6R07      3,          ta]]\R,          ]F! R7R8R07      3,          tb]]\R,          ]F! R9R07      3,          tc]]d]F! R:R;R<R07      3,          te]]d]F! R=R>R07      3,          tf]]\R,          ]F! R?R07      3,          tg]]\R,          ]F! R@RAR07      3,          th]]`]i,          R,          ]F! RBRCR07      3,          tj]]d]F! RDRER07      3,          tk]]\R,          ]F! RFRGR07      3,          tl]]`]\,          R,          ]F! RHRIR07      3,          tm]]`]\,          R,          ]F! RJRKR07      3,          tn]]\R,          ]F! RLRMRNR07      3,          to]]dR,          ]F! ROR07      3,          tp]]dR,          ]F! RPR07      3,          tq]]\]E! RQR07      3,          tr]]\]E! RRR07      3,          ts]]`]\,          R,          ]E! RSR07      3,          tt]]`]\,          ]E! RTR07      3,          tu]]\]E! RUR07      3,          tv]]`]\,          R,          ]E! RVR07      3,          tw]]\]E! RWR07      3,          tx]]`]\,          R,          ]F! RXRYRZR07      3,          ty]C! R[R07      tzR\ R] lt{]zPù                  R^R_R`/. R¿ORa7      RÀRb Rc ll4       t}]zPù                  Rd. RÁORe7      RÂRf Rg ll4       t~Rh Ri ltRj Rk lt€]zPù                  RlRm.Re7      RÃRn Ro ll4       t�]zPù                  Rp. RÄORe7      RÅRq Rr ll4       t‚]zPù                  RsRt.Re7      Ru Rv l4       tƒ]zPù                  RwRx.Re7      RÆRy Rz ll4       t„]zPù                  R{R|.Re7      RÆR} R~ ll4       t…]zPù                  R. RÇORe7      RÃR€ R� ll4       t†]zPù                  R‚. RÈORe7      RÉRƒ R„ ll4       t‡]zPù                  R…. RÊORe7      RËR† R‡ ll4       tˆ]C! RˆR07      t‰]zEP                  ]‰R‰RŠ7       ]‰Pù                  R^R_R`/. RÌORa7      RÍR‹ RŒ ll4       t‹ ! R� RŽ]\]4      tŒ]C! R�R07      t�]zEP                  ]�R�RŠ7       ]�Pù                  R^R_R`/R‘.Ra7      RÎR’ R“ ll4       tŽ]�Pù                  Rp. RÏORe7      RÐR” R• ll4       t�]�Pù                  RwR–.Re7      RÆR— R˜ ll4       t�]�Pù                  R™Rš.Re7      RÆR› Rœ ll4       t‘]�Pù                  R�Rž.Re7      RÆRŸ R  ll4       t’]�Pù                  R¡R¢.Re7      RÆR£ R¤ ll4       t“]�Pù                  R¥R¦.Re7      RÆR§ R¨ ll4       t”]�Pù                  R‚. RÑORe7      RÉR© Rª ll4       t•]C! R«R07      t–]�EP                  ]–R‰RŠ7       ]–Pù                  R^R_R`/R¬R­.Ra7      RÒR® R¯ ll4       t—R° R± lt˜RÓR² R³ llt™R´R/Rµ R¶ lltšR· R¸ lt›]! R¹4      tœRº R» lt�R¼ R½ ltžR# )Ôz@Contains commands to interact with jobs on the Hugging Face Hub.N)ÚCallableÚ
CollectionÚ	GeneratorÚIterable)Úcontextmanager)Ú	dataclassÚfield)ÚEnum)ÚPath)ÚEmptyÚQueue)Ú	AnnotatedÚAnyÚTypeVar)Úurlsplit)ÚHfApiÚJobHardwareÚJobInfoÚJobStageÚVolumeÚ	constants)ÚDEFAULT_UV_IMAGEÚTERMINAL_JOB_STAGESÚ_default_job_name_from_imageÚ_default_job_name_from_script)ÚCLIError)Úlogging)Ú_format_size©Ú_split_mount)Úformat_durationÚparse_duration)Ú
EnvFileOptÚEnvOptÚSecretsFileOptÚ
SecretsOptÚ
SoftChoiceÚSshDryRunOptÚSshIdentityFileOptÚTokenOptÚ_get_extended_environÚexec_sshÚ
get_hf_apiÚparse_env_mapÚparse_volumesÚtyper_factory)ÚArgumentÚOption)Ú_dataclass_to_dictÚout)Ú
TABLE_NAMEÚUvScriptHeaderÚload_uv_scriptc          	      óz   € V ^8„  d   QhR\         R\         R,          R\        \         \         R,          3,          /# )é   Újob_idÚ	namespaceNÚreturn)ÚstrÚtuple)Úformats   "ÚY/home/luca/screen-checking/.venv/lib/python3.14/site-packages/huggingface_hub/cli/jobs.pyÚ__annotate__r@   D   s5   € ÷ .ñ .¬ð .¼¸t½ð .ÌÌcÔSVÐY]ÕS]ÈoÕH^ñ .ó    c                ó*  € V '       g   \        R4      hV P                  R4      ^8”  d   \        RV  R24      hRV 9  d   W3# V P                  R^4      w  r#V'       d	   V'       g   \        RV  R24      hVe   W8w  d   \        RV RV R24      hW23# )a  Extract namespace from job_id if provided in 'namespace/job_id' format.

Allows users to pass job IDs copied from the Hub UI (e.g. 'username/job_id')
instead of only bare job IDs. If the namespace is also provided explicitly via
--namespace and conflicts, a CLIError is raised.
zJob ID cannot be empty.Ú/z<Job ID must be in the form 'job_id' or 'namespace/job_id': 'z'.z(Conflicting namespace: got --namespace='z ' but job ID implies namespace='Ú')r   ÚcountÚsplit)r9   r:   Úextracted_namespaceÚparsed_job_ids   &&  r?   Ú_parse_namespace_from_job_idrI   D   s·   € ÷ ÜÐ0Ó1Ð1à‡|�|�CÓ˜1ÔÜÐUÐV\ÐU]Ð]_Ð`ÓaÐaà
�&ÔØÐ Ð à)/¯©°c¸1Ó)=Ñ&Ðß§mÜÐUÐV\ÐU]Ð]_Ð`ÓaÐaàÒ Ô!AÜØ6°y°kÐAaÐbuÐavÐvwÐxó
ð 	
ð Ð-Ð-rA   c          	      óž   € V ^8„  d   QhR\         \        ,          R,          R\        R\        R,          R\         \        ,          R,          /# )r8   ÚvolumesNÚapir:   r;   )Úlistr<   r   r   )r>   s   "r?   r@   r@   `   sB   € ÷ )ñ )Ü”#�Y˜Õð)Ü',ð)Ü9<¸t½ð)ä	Œ&…\�DÕñ)rA   c               ól  € V '       g   R# . pV  EF   pVP                  \        P                  4      '       d(   TP                  \	        V.4      ;'       g    . 4       KP  \        WDR7      w  rVpVf   \        RV R24      h\        V4      P                  4       P                  4       '       g   \        RV R24      hTP                  TTVe   TMRVR7      pVP                  R	J d7   \        P                  ! R
V RVP                   RVP                   RV 24       VP!                  V4       EK#  	  V# )zþParse `-v` specs for Jobs commands.

Same as [`parse_volumes`] but the source side can also be a local directory: it is synced to a
bucket via [`HfApi.sync_job_volume`] and the resulting bucket subfolder is mounted (read-only
unless ':rw' is specified).
N©Úrawz#Missing mount path in volume spec 'zC'. Expected 'LOCAL_DIR:/MOUNT_PATH[:ro|:rw]' (e.g. './data:/data').zVolume source 'z�' is not an existing local directory. To mount a repo or bucket instead, use the 'hf://' syntax (e.g. 'hf://buckets/my-org/my-bucket:/data').T)Ú	read_onlyr:   FzVolume 'zg' is mounted read-write. Once the job is over, pull back its data with:
  hf buckets sync hf://buckets/rC   Ú )Ú
startswithr   ÚHF_PROTOCOLÚextendr.   r   r   r
   Ú
expanduserÚis_dirÚsync_job_volumerQ   r3   ÚhintÚsourceÚpathÚappend)	rK   rL   r:   ÚresultÚraw_specrZ   Ú
mount_pathrQ   Úvolumes	   &$$      r?   Ú_parse_and_sync_job_volumesra   `   sK  € ÷ Ùà€FÜˆØ×Ñœy×4Ñ4×5Ò5Ø�M‰Mœ-¨¨
Ó3×9Ð9°rÔ:Ùô )5°XÔ(LÑ%ˆ˜IØÒÜØ5°h°Zð  @Cð  Dóð ô �F‹|×&Ñ&Ó(×/Ñ/×1Ò1ÜØ! & ð *zð zóð ð ×$Ñ$ØØØ#,Ò#8‘i¸dØð	 %ó 
ˆð ×Ñ˜uÓ$Ü�HŠHØ˜:˜,ð '2Ø28·-±-°ÀÀ&Ç+Á+ÀÈaÐPVÈxðYôð 	�‰�f×ñ7 ð8 €MrA   c                   óÎ   a € ] tR t^Œt o Rt ]! ]R7      tRtRt	Rt
RtRtRt]! ]R7      t]! ]R7      t]! ]R7      t]! ]R7      tRt]! ]R7      t]! ]R7      t V 3R ltRtV tR# )Ú_UvJobConfigzeResolved launch configuration of a UV Job: CLI flags merged with the script's `[tool.hf-jobs]` table.)Údefault_factoryNc                óÞ  <€ V ^8„  d   Qh/ S[ ;R&   S[S[ ,          ;R&   S[ R,          ;R&   S[ R,          ;R&   S[ R,          ;R&   S[ R,          ;R&   S[ R,          ;R&   S[ R,          ;R	&   S[S[ S[ R,          3,          ;R
&   S[S[ S[ R,          3,          ;R&   S[S[ S[ 3,          ;R&   S[S[ ,          ;R&   S[S[,          R,          ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   # )r8   ÚscriptÚscript_argsNÚimageÚflavorÚpythonÚtimeoutr:   Únetwork_groupÚenvÚsecretsÚlabelsÚvolume_specsrK   Únetwork_aliasesÚfrom_script)r<   rM   Údictr   Úset)r>   Ú__classdict__s   "€r?   r@   Ú_UvJobConfig.__annotate__Œ   s  ø‡ ‚ ñ �Kñ	 ñ ‘c•Ñ8ñ ñ ��:Ññ ñ �$�JÑñ ñ �$�JÑñ ñ �4�ZÑñ ñ �T�zÑ ñ ñ ˜•:Ñ$ñ ñ 
‰c‘3˜•:ˆoÕ	Ñ<ñ ñ ‘#‘s˜T•z�/Õ"Ñ@ñ ñ  ‘‘c��NÑ8ñ! ñ" ‘s•)Ñ9ñ# ñ$ ‘&�\˜DÕ Ñ'ñ% ñ& ™#•YÑ<ñ' ñ* ‘S•Ñ6ò+ rA   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   rM   rg   rh   ri   rj   rk   r:   rl   rs   rm   rn   ro   rp   rK   rq   rt   rr   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)ru   s   @r?   rc   rc   Œ   s�   ø‡ € áoð rá"°4Ô8€KØ€EØ€FØ€FØ€GØ €IØ $€MÙ!&°tÔ!<€CÙ%*¸4Ô%@€GÙ"°4Ô8€FÙ#°DÔ9€LØ#'€GÙ!&°tÔ!<€Oá!°#Ô6€KØ`÷- ƒ rA   rc   c          +      óž  € V ^8„  d   QhR\         R\        R\        \        ,          R,          R\        \        ,          R,          R\        R,          R\        R,          R\        R,          R	\        \        ,          R,          R
\        R,          R\        \        ,          R,          R\        R,          R\        R,          R\        R,          R\        \        ,          R,          R\        \        ,          R,          R\        R,          R\        R,          R\        \        ,          R,          R\        R\        \
        RR3,          /# )r8   rL   rf   rg   NÚdependenciesrh   ri   rj   rm   Úenv_filern   Úsecrets_filerk   ÚnameÚlabelr`   r:   rl   rq   Údry_runr;   )r   r<   rM   Úboolr   rc   )r>   s   "r?   r@   r@   ¦   sW  € ÷ pñ pä	ðpô ðpô ”c•˜TÕ!ð	pô
 ”s•)˜dÕ"ðpô ��:ðpô �$�Jðpô �$�Jðpô 
Œc��TÕ	ðpô �D�jðpô ”#�Y˜Õðpô ˜•*ðpô �4�Zðpô ��*ðpô ”�9�tÕðpô  ”�I˜Õð!pô" �T�zð#pô$ ˜•:ð%pô& œ#•Y Õ%ð'pô( ð)pô* Œ|˜T 4Ð'Õ(ñ+prA   c              #  óä  a a!"  € \        V4      ;_uu_ 4       pVP                  ;'       g    \        4       o!\        4       o R V V!3R llpV! RV4      pV! RV4      pV! RV4      pV! RV4      pV! RV4      pV! RV4      pV'       g0   S!P                  '       d   S P                  R	4       S!P                  p\        Wx4      pS!P                  P                  4        UUu/ uF  w  ppVV9  g   K  VVbK  	  pppS P                  R
 V 4       4       / VCVCp\        Wš4      p\        S!P                  VVR7      pS P                  R V 4       4       / VCVCp\        WÜR7      ;'       g    / p/ S!P                  CS!P                  e   RS!P                  /M/ CpVP                  4        UUu/ uF  w  ppVV9  g   K  VVbK  	  pppS P                  R V 4       4       / VCVCp\        T;'       g    . S!P                   4      w  ppS P                  R V 4       4       \#        VP$                  T;'       g    . TTTTTTTTTTV'       d   RM\'        VWR7      T;'       g    . S R7      pRVP                  9  dÂ   \)        TVP*                  \-        VP.                  VP0                  VP2                  VP                  VP                  VP4                  VP6                  VP                  VP8                  ;'       g    \:        VP<                  ;'       g    R.T;'       g    . OR7	      R7      VP                  R&   Vx € RRR4       R# u uppi u uppi   + '       g   i     R# ; i5i)a[  Merge the CLI flags with the `[tool.hf-jobs]` table the script carries, if any.

An explicit CLI flag always wins over the script; `env`, `labels`, `secrets` and `volumes` are merged
entry by entry (by key, by name and by mount path respectively), so a script value and a CLI value
only ever conflict when they target the same entry. `network_aliases` is the exception: the aliases
a Job claims form a set, so `--network-alias` replaces the script's list rather than adding to it.

A URL script is downloaded to a temporary file that lives until the `with` block exits: submit the
Job inside the block.
c                óX   € V ^8„  d   QhR\         R\         R,          R\         R,          /# )r8   ÚkeyÚ	cli_valueNr;   ©r<   )r>   s   "r?   r@   Ú,_resolve_uv_job_config.<locals>.__annotate__Ê   s)   € ÷ 	ñ 	”cð 	¤c¨D¥jð 	´S¸4µZñ 	rA   c                óZ   <€ Ve   V# \        SV 4      ;pe   SP                  V 4       V# R# )z2Keep the CLI value, and fall back to the script's.N)ÚgetattrÚadd)rŠ   r‹   Úscript_valuerr   Úheaders   && €€r?   ÚpickÚ$_resolve_uv_job_config.<locals>.pickÊ   s6   ø€ àÒ$Ø Ð Ü '¨°Ó 4Ð4�ÒAØ—‘ Ô$Ø#Ð#ÙrA   rh   ri   rj   rk   r:   rl   rq   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i)zenv.Nrw   ©Ú.0rŠ   s   & r?   Ú	<genexpr>Ú)_resolve_uv_job_config.<locals>.<genexpr>à   s   é € Ð>±:¨C˜T # �<³:ùó   ‚©r†   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i)zsecrets.Nrw   r–   s   & r?   r˜   r™   å   s   é € ÐF±~°˜X c UÕ+³~ùrš   ©r„   Nr„   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i)zlabels.Nrw   r–   s   & r?   r˜   r™   ì   s   é € ÐD±m¨s˜W S E�?³mùrš   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i)zvolumes.Nrw   )r—   Úspecs   & r?   r˜   r™   ð   s   é € ÐMÑ9L°˜X d VÕ,Ó9Lùrš   ©rL   r:   )rf   rg   rh   ri   rj   rk   r:   rl   rm   rn   ro   rp   rK   rq   rr   Ú ©	ri   rk   r:   rm   rn   rp   rl   rq   Úextra©Úconfig_parts)r6   r’   r5   rt   rq   r�   r-   rm   ÚitemsÚupdateÚ_resolve_script_secretsrn   Ú_parse_labels_mapro   r„   Ú_merge_volume_specsrK   rc   rf   ra   r   rg   Ú_name_hash_partsri   rk   r:   rp   rl   rh   r   rj   )"rL   rf   rg   r�   rh   ri   rj   rm   r‚   rn   rƒ   rk   r„   r…   r`   r:   rl   rq   r†   rZ   r“   Úenv_maprŠ   ÚvalueÚ
script_envÚsecrets_mapÚscript_secretsÚ
labels_mapÚscript_labelsrp   Úscript_volume_specsÚconfigrr   r’   s"   $$$$$$$$$$$$$$$$$$$             @@r?   Ú_resolve_uv_job_configr¶   ¥   s4  ùé € ôB 
˜×	Ô	 6Ø—‘×2Ð2¤.Ó"2ˆÜ #£ˆ÷	ñ 	ñ �W˜eÓ$ˆÙ�h Ó'ˆÙ�h Ó'ˆÙ�y 'Ó*ˆÙ˜ iÓ0ˆ	Ù˜_¨mÓ<ˆç 6×#9×#9Ð#9Ø�O‰OÐ-Ô.Ø$×4Ñ4ˆOä Ó.ˆØ39·:±:×3CÑ3CÔ3EÔ\Ñ3E¡Z S¨%ÈÐT[ÑI[”j�c˜5’jÑ3Eˆ
Ñ\Ø×ÑÑ>±:Ó>Ô>Ø+�ZÐ+ 7Ð+ˆä# GÓ:ˆÜ0°·±ÀÐV]Ô^ˆØ×ÑÑF±~ÓFÔFØ7˜Ð7¨;Ð7ˆä& uÔ8×>Ð>¸Bˆ
àg˜6Ÿ=™=ÐgÀfÇkÁkÒF]¨f°f·k±kÑ-BÐceÐgˆØ6C×6IÑ6IÔ6KÔeÑ6K©
¨¨UÈsÐZdÑOdœ˜˜ešÑ6KˆÑeØ×ÑÑD±mÓDÔDØ4˜Ð4¨Ð4ˆ
ä,?ÀÇÀÈ"ÈfÏnÉnÓ,]Ñ)ˆÐ)Ø×ÑÑMÑ9LÓMÔMäØ—=‘=Ø#×)Ð) rØØØØØØ'ØØØØ%ç#‘DÔ)DÀ\ÐWZÔ)pØ+×1Ð1¨rØ#ô!
ˆð$ ˜Ÿ™Ô&ô %BØØ×"Ñ"Ü-Ø!Ÿ=™=Ø"ŸN™NØ$×.Ñ.ØŸ
™
Ø"ŸN™NØ!'×!4Ñ!4Ø"(×"6Ñ"6Ø$*×$:Ñ$:Ø!Ÿ<™<×;Ð;Ô+;¸V¿]¹]×=PÐ=PÈbÐhÐT`×TfÐTfÐdfÐhô
ô%ˆF�M‰M˜&Ñ!ð Š÷a 
 Ñ	ùó2 ]ùó f÷K 
 ×	Ð	üs{   „M0˜BMÂAMÃ M
Ã1M
Ã8B7MÆ/M
Ç M
Ç.MÇ6AMÈ<MÉMÉ'BMÌMÌMÌ'MÍ
M0ÍMÍM-	Í'	M0r†   Fc                ó¾   € V ^8„  d   QhR\         \        ,          R\        \        \        R,          3,          R\        R\        \        \        R,          3,          /# )r8   ÚnamesÚcli_secretsNr†   r;   )rM   r<   rs   r‡   )r>   s   "r?   r@   r@     sJ   € ÷ %2ñ %2Ü”�9ð%2Ü#'¬¬S°4­Z¨Õ#8ð%2ÜFJð%2ä	Œ#Œs�T�zˆ/Õñ%2rA   c          	     óÚ  € V '       g   / # \        4       p/ p. pV  F.  pWa9   d   K  Wc9   d   W6,          WF&   K  VP                  V4       K0  	  V'       d;   V'       g3   \        RRP                  V4       RV^ ,           RV^ ,           R24      hV'       d>   \        P
                  ! R\         RRP                  V4       RV'       d   R	MR
 R24       / VC\        P                  V4      C# )a„  Resolve the secrets requested by a script from the caller's environment.

A script only lists secret *names*: values always come from whoever runs it (`HF_TOKEN` also
resolves from `hf auth login`). A requested secret that is not set locally is an error rather than
an empty value: forgetting to export a secret before launching is easy, and debugging the Job that
results from it is not.

In `--dry-run` a missing secret is not an error but a `None` value, displayed as `<not set>` in the
summary: nothing is submitted, so the point is to see the full configuration of a script - including
one whose secrets are not provisioned locally (yet).
zTThe script requires the following secret(s), which are not set in your environment: ú, z$. Export them locally (e.g. `export z0=...`) or pass them explicitly (e.g. `--secrets z=...`).zThe script's [z] table requests z+: the value(s) from your local environment zwould bezwill bez sent to the Job.)	r*   r\   r   Újoinr3   Úwarningr4   rs   Úfromkeys)r¸   r¹   r†   ÚenvironÚresolvedÚmissingr„   s   &&$    r?   r©   r©     sõ   € ÷ Øˆ	Ü#Ó%€GØ&(€HØ€GÛˆØÔÙØŒ?Ø$�]ˆH‹Nà�N‰N˜4Ö ñ ÷ —wÜØbÐcg×clÑclÐmtÓcuÐbvð w2Ø29¸!µ*°ð >!Ø!(¨¥ ¨Gð5ó
ð 	
÷
 Ü�ŠØœZ˜LÐ(9¸$¿)¹)ÀHÓ:MÐ9Nð Oß*1™J°yÐAÐARðTô	
ð 2ˆhÐ1œ$Ÿ-™-¨Ó0Ð1Ð1rA   c          	      ó¶   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        \         \        ,          \         \        ,          3,          /# )r8   Ú	cli_specsÚscript_specsr;   )rM   r<   r=   )r>   s   "r?   r@   r@   A  sA   € ÷ "ñ "¤4¬¥9ð "¼DÄ½Ið "Ì%ÔPTÔUXÕPYÔ[_Ô`cÕ[dÐPdÕJeñ "rA   c                óÄ   € V  Uu0 uF  p\        W"R7      ^,          kK  	  ppV Uu. uF  p\        W"R7      ^,          V9  g   K  VNK!  	  ppW@,           V3# u upi u upi )zšMerge `-v` specs with the ones from the script. Returns `(all specs, specs from the script)`.

A CLI mount overrides the script's mount at the same path.
rO   r   )rÃ   rÄ   r    Úcli_mount_pathsÚkepts   &&   r?   r«   r«   A  sf   € ñ
 DMÓMÁ9¸4”| DÔ3°A×6Ð6Á9€OÐMÙ)Ód™\�T¬\¸$Ô-IÈ!Õ-LÐTcÑ-c�DˆD™\€DÐdØÕ˜TÐ!Ð!ùò NùÚds   …A§AÁArl   rq   r¤   c                óœ  € V ^8„  d   QhR\         R,          R\         R,          R\         R,          R\        \         \         R,          3,          R\        \         \         R,          3,          R\        \         ,          R\         R,          R	\        \         ,          R,          R
\        \         ,          R,          R\        \         ,          /
# )r8   ri   Nrk   r:   rm   rn   rp   rl   rq   r¤   r;   )r<   rs   rM   )r>   s   "r?   r@   r@   K  s²   € ÷ ñ ä�$�Jðô �4�Zðô �T�zð	ô
 
Œc”3˜•:ˆoÕ	ðô ”#”s˜T•z�/Õ"ðô ”s•)ðô ˜•:ðô œ#•Y Õ%ðô ”�9�tÕðô 
Œ#…YñrA   c        	        ó  € T ;'       g    \         P                  P                  T;'       g    RT;'       g    RT;'       g    R.T;'       g    . OR \        VP	                  4       4       4       O\        V4      OVOT;'       g    . O# )at  The resolved launch values hashed into a Job's default name, on top of its image/script.

Same inputs for `hf jobs run` and `hf jobs uv run`, so that both name Jobs after what they actually
submit (`extra` carries what is specific to UV runs). Env *values* are part of the hash since they
change what the Job does; secrets only contribute their names, never their values.
r¢   c              3   ó4   "  € T F  w  rV R V 2x € K  	  R# 5i)Ú=Nrw   )r—   rŠ   r®   s   &  r?   r˜   Ú#_name_hash_parts.<locals>.<genexpr>c  s   é € Ð	AÑ-@™z˜sˆSˆE��5�'Õ
Ó-@ùs   ‚)r   Ú	CPU_BASICr®   Úsortedr§   r£   s	   $$$$$$$$$r?   r¬   r¬   K  s—   € ð& 	×-Ð-”+×'Ñ'×-Ñ-Ø�ˆ�2Ø�ˆ�RØ×Ð˜ð	
ð
 �+ˆ+�2ð
ñ 
B¬V°C·I±I³KÔ-@Ó	Að
ô 
�‹ð
ð 
ð
ð ×
Ð
˜Rð
ð 
rA   z (from script)rr   c                óx   € V ^8„  d   QhR\         \        \        3,          R\        \        ,          R\        RR/# )r8   Úvaluesrr   r†   r;   N)rs   r<   r   r   r‡   )r>   s   "r?   r@   r@   m  s6   € ÷ ñ œt¤C¬ H�~ð ¼zÌ#½ð Ô^bð Ðosñ rA   c          
     ó<  € V P                  4        UUu. uF!  w  r4VRR. / R39  g   K  V\        W4V4      3NK#  	  ppp\        R V 4       4      pR.pV Fm  w  r4YCV9   d   \        MR,          pT\	        VP                  R4      4       UU	u. uF%  w  r‰RV^ 8X  d   TMRP                  V4       RV	 2NK'  	  up	p,          pKo  	  RP                  V4      p
V'       d   \        P                  ! V
 R24       R# \        P                  ! V
4       R# u uppi u up	pi )	aT  Echo the launch configuration of a Job before submitting it.

Printed on every run, so that what is sent to the Jobs API is always visible - in particular the
values injected by a script's `[tool.hf-jobs]` table, which are marked as such. Goes to stderr for a
real run, and to stdout for `--dry-run`, where it is the output of the command.
Nr¢   Fc              3   ó<   "  € T F  w  r\        V4      x € K  	  R # 5i©N)Úlen)r—   rŠ   Ú_s   &  r?   r˜   Ú%_print_job_summary.<locals>.<genexpr>y  s   é € Ð,¡t™V˜S”�C—�£tùs   ‚zJob configuration:Ú
ú  z
(dry run) Job not submitted.)r§   Ú_format_job_valueÚmaxÚ_FROM_SCRIPTÚ	enumeraterF   Úljustr¼   r3   ÚtextÚlog)rÐ   rr   r†   rŠ   r®   ÚrowsÚwidthÚlinesÚindexÚlineÚsummarys   &$$        r?   Ú_print_job_summaryræ   m  s  € ð !Ÿ,™,œ.ôá(‰JˆCØ˜˜r 2 r¨5Ð1Ñ1ô 	:ˆÔ ¨KÓ8Ó9Ù(ð 	ñ ô
 Ñ,¡tÓ,Ó,€EØ!Ð"€EÛ‰
ˆØ¨Ô!3•¸Õ;ˆàÜW`Ðaf×alÑalÐmqÓarÔWsô
ÙWsÉÈˆb˜ !œ‘#¨×2Ñ2°5Ó9Ð:¸"¸T¸FÓCÑWsò
õ 	
Šñ ð �i‰i˜Ó€GßÜ�Š�G�9Ð:Ð;Ö<ä�Š�Öùó#ùó
s   ”D©DÂ+D
c                ó^   € V ^8„  d   QhR\         R\        R\        \         ,          R\         /# )r8   rŠ   r®   rr   r;   )r<   r   r   )r>   s   "r?   r@   r@   ˆ  s2   € ÷ xñ xœ3ð x¤sð x¼ÄC½ð xÌSñ xrA   c                óH  a a€ S ;R8X  dS    / pVP                  4        F:  w  rET;'       g    RpT R\        V4      ^<8”  d   VR,          R,           MT 2W4&   K<  	  MŒ;R8X  d1    VP                  4        UUu/ uF  w  rEYD RVe   RMR 2bK  	  pppMU;R	8X  d+    VP                  4        UUu/ uF  w  rEWD RV 2bK  	  pppM$R
8X  d   V Uu/ uF  qwVbK  	  ppM \        V4      # RP                  VV 3R lVP                  4        4       4      # u uppi u uppi u upi )zVFormat config entries, redacting secrets and marking values inherited from the script.rm   r¢   rË   :Né;   Nu   â€¦rn   z***z	<not set>ro   rK   r×   c              3   ó^   <"  € T F"  w  rTS R V 2S9   d   \         MR,           x € K$  	  R# 5i)Ú.r¢   N)rÛ   )r—   r„   rÞ   rr   rŠ   s   &  €€r?   r˜   Ú$_format_job_value.<locals>.<genexpr>™  s3   øé € ÐwÑgvÑYcÐY]�T°¨u°A°d°V¨_ÀÔ-K�\ÐQS×TÒTÓgvùs   ƒ*-)r§   rÔ   r<   r¼   )rŠ   r®   rr   Úentriesr„   ÚitemrÞ   r    s   f&f     r?   rÙ   rÙ   ˆ  s  ù€ à
ÞáˆGØ#Ÿk™kžm‘
�Ø—z�z˜r�Ø#' &¨¼sÀ4»yÈ2¼~¨$¨s­)°eÖ*;ÐSWÐ)XÐ Y�“ò ,ö Ùfk×fqÑfqÔfsÔtÑfsÑXbÐX\�t˜v Q°Ò0@¡uÀkÐ&RÐSÒSÑfsˆGÑtˆGÞÙ@EÇÁÄÔNÁ±*°$�t˜v Q t fÐ-Ò-ÁˆGÑNˆGÝÙ.3Ó4©e d˜T’z©eˆGÐ4ˆGØÜ�u“:ÐØ�9‰9ÕwÐgn×gtÑgtÔgvÓwÓwÐwùó uùãNùâ4s   Á8DÂ/DÃDgš™™™™™¹?zThe Docker image to use.©Úhelpz.Use a custom Docker image with `uv` installed.zcFlavor for the hardware. Run 'hf jobs hardware' to list available flavors. Defaults to `cpu-basic`.)rð   Ú
click_typeú-lú--labelz3Set labels. E.g. --label KEY=VALUE or --label LABELú--namez¦Name the Job. Stored as the `name` label. Names do not have to be unique. Defaults to the image or script name plus a short hash of the resolved launch configuration.zPMax duration: int with s (seconds, default), m (minutes), h (hours) or d (days).z-dz--detachz3Run the Job in the background and print the Job ID.z	--dry-runz@Print the resolved Job configuration without submitting the Job.zVThe namespace where the job will be running. Defaults to the current user's namespace.z--resource-group-idzŸThe ID of the resource group to create the Job in. Used to control access to resources within an organization and for cost attribution/spending-limit features.z--exposez÷Expose a container port through the jobs proxy. Repeat the flag for multiple ports (e.g. `--expose 8000 --expose 8001`). Each exposed port is reachable on the public jobs domain; access requires an HF token with read access to the job's namespace.z--sshz Make the job's container reachable over SSH. Connect with `hf jobs ssh <job_id>`. Requires an SSH public key registered on https://huggingface.co/settings/keys.z--network-groupa  Join a network group. Jobs in the same namespace and resource group sharing a group are placed together and reach each other on every port. Inside each member, `$HF_NETWORK_GROUP_HOSTNAME` resolves to every member. Lowercase alphanumerics and dashes, 46 characters max.z--network-aliaszþClaim an alias in the network group. Members reach the jobs claiming it at `${HF_NETWORK_GROUP_PREFIX}<alias>`. Repeat the flag for several aliases. Lowercase alphanumerics and dashes, 34 characters max, unique within the job. Requires `--network-group`.z--withz%Run with the given packages installedz-pz--pythonz5The Python interpreter to use for the run environmentz!Suspend (pause) the scheduled Jobz8Allow multiple instances of this Job to run concurrentlyzWOne of annually, yearly, monthly, weekly, daily, hourly, or a CRON schedule expression.z$UV script to run (local file or URL)zArguments for the scriptzThe command to run.zJob ID (or 'namespace/job_id')zJob IDs (or 'namespace/job_id')z2Scheduled Job ID (or 'namespace/scheduled_job_id')z-vz--volumeaÓ  Mount one or more volumes. Format: hf://[TYPE/]SOURCE:/MOUNT_PATH[:ro|:rw] or LOCAL_DIR:/MOUNT_PATH[:ro|:rw]. TYPE is one of: models, datasets, spaces, buckets. TYPE defaults to models if omitted. models, datasets and spaces are always mounted read-only. buckets are read+write by default. A local directory source is first synced to a bucket and mounted read-only by default. E.g. -v hf://datasets/org/ds:/data or -v hf://buckets/org/b:/mnt:ro or -v ./inputs:/inputszRun and manage Jobs on the Hub.c                ó4   € V ^8„  d   QhR\         R\        RR/# )r8   rL   Újobr;   N)r   r   )r>   s   "r?   r@   r@   p  s!   € ÷ 	*ñ 	*¤uð 	*´7ð 	*¸tñ 	*rA   c                ór  € V P                  VP                  VP                  P                  RR7       F  p\        P
                  ! V4       K  	  V P                  VP                  VP                  P                  R7      pVP                  P                  \        P                  8w  dj   VP                  P                  '       d   RVP                  P                   2MRp\        RVP                   RVP                  P                   RV 24      h\        P
                  ! RVP                   R	24       R
# )zcStream Job logs until the Job ends, then fail the command if the Job did not complete successfully.T)r9   r:   Úfollow©r9   r:   z: r¢   zJob z finished with stage 'rD   z
 completedN)Úfetch_job_logsÚidÚownerr„   r3   rÞ   Úwait_for_jobÚstatusÚstager   Ú	COMPLETEDÚmessager   )rL   rö   rß   Úfinalr  s   &&   r?   Ú_stream_logs_and_check_statusr  p  sä   € à×!Ñ!¨¯©¸3¿9¹9¿>¹>ÐRVÐ!ÖWˆÜ�Š�Žñ Xð ×Ñ C§F¡F°c·i±i·n±nÐÓE€EØ‡|�|×ÑœX×/Ñ/Ô/Ø16·±×1E×1EÐ1E�B�u—|‘|×+Ñ+Ð,Ñ-È2ˆÜ˜˜eŸh™h˜ZÐ'=¸e¿l¹l×>PÑ>PÐ=QÐQRÐSZÐR[Ð\Ó]Ð]Ü‡H‚Hˆt�E—H‘H�:˜ZÐ(Ö)rA   ÚrunÚignore_unknown_optionsT)Úcontext_settingsÚexamplesc          *      ó  € V ^8„  d   QhR\         R\        R\        R\        R\        R\
        R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R\        R\         R\"        R\$        R\&        RR/# )r8   rh   Úcommandrm   rn   r„   r…   r`   r‚   rƒ   ri   rk   Údetachr†   ÚexposeÚsshrl   Únetwork_aliasÚresource_group_idr:   Útokenr;   N)ÚImageArgÚ
CommandArgr#   r%   ÚNameOptÚ	LabelsOptÚJobVolumesOptr"   r$   Ú	FlavorOptÚ
TimeoutOptÚ	DetachOptÚ	DryRunOptÚ	ExposeOptÚSshEnabledOptÚNetworkGroupOptÚNetworkAliasOptÚResourceGroupIdOptÚNamespaceOptr)   )r>   s   "r?   r@   r@   ‡  sñ   € ÷ j,ñ j,Üðj,äðj,ô 
ðj,ô ð	j,ô
 ðj,ô ðj,ô ðj,ô ðj,ô !ðj,ô ðj,ô ðj,ô ðj,ô ðj,ô ðj,ô 
ðj,ô  #ð!j,ô" #ð#j,ô$ *ð%j,ô& ð'j,ô( ð)j,ð* 
ñ+j,rA   c                ó  € \        W'4      p\        W84      p\        WTR7      ;'       g    / pTP                  R\        T T\	        T	T
TTTT;'       g    . VVR7      R7      4       \        VR7      pV'       d   RM\        VVVR7      p\        RT R	\        P                  ! V4      R
T	;'       g    \        P                  P                  RT
RTRTRT;'       g    . RTRRP                  R T;'       g    .  4       4      RTRTRRP                  T;'       g    . 4      RVRV/VR7       V'       d   R# VP                  V VVVVVV	V
VVVVVVR7      p\        P                  ! RVP                   VP"                  ;'       g    / P%                  R4      VP&                  R7       \)        WE4      '       gd   VP"                  ;'       g    / P%                  R4      p\        P*                  ! RV RVP,                  P.                   RVP                    R24       \1        VP2                  P4                  \6        4      '       dF   R P                  R! VP2                  P4                   4       4      p\        P*                  ! R"V 24       \1        VP2                  P8                  \:        4      '       d<   \        P*                  ! R#VP,                  P.                   RVP                    R$24       V'       d   \        P*                  ! R%V R&V R'24       V'       d_   VP,                  P.                   RVP                    2p\        P*                  ! R(V R)V R*24       \        P*                  ! R+V R,24       R# \=        VV4       R# )-z
Run a Job.r�   r„   )ri   rk   r:   rm   rn   rp   rl   rq   r¥   ©r  Nr¡   rh   r	  ri   rk   rm   rn   rK   ro   r  rR   c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irÓ   rŒ   ©r—   Úports   & r?   r˜   Újobs_run.<locals>.<genexpr>¿  ó   é € ÐB±\¨Tœs 4Ÿy˜y³\ùó   ‚r  rl   rq   r  r:   r›   )rh   r	  rm   rn   ro   rK   ri   rk   r  r  rl   rq   r  r:   úJob started©rû   r„   ÚurlúJob auto-named 'ú('. Pass `--name` or run `hf jobs labels rC   ú --name NAME` to rename it.r×   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i©rØ   Nrw   ©r—   r)  s   & r?   r˜   r$  â  ó   é € ÐFÑ/E¨˜2˜c˜U�Ó/Eùrš   úSExposed ports are reachable at (requires an HF token with read access to the job):
úUse `hf jobs ssh ú&` to open an SSH session into the job.úJoined network group 'úK'. Jobs of this namespace and resource group started with `--network-group ú…` reach each other at `$HF_NETWORK_GROUP_HOSTNAME` (every member) or `${HF_NETWORK_GROUP_PREFIX}<alias>` (members claiming an alias).úUse `hf jobs logs -f ú&` to stream logs, or `hf jobs inspect ú` to check status.úUse `hf jobs wait ú` to block until it finishes.)r-   rª   Ú
setdefaultr   r¬   r,   ra   ræ   Úshlexr¼   r   rÍ   r®   Úrun_jobr3   r]   rû   ro   Úgetr)  Ú_has_explicit_namerY   rü   r„   Ú
isinstancerþ   Úexpose_urlsrM   Ússh_urlr<   r  )rh   r	  rm   rn   r„   r…   r`   r‚   rƒ   ri   rk   r
  r†   r  r  rl   r  r  r:   r  r­   r°   r²   rL   rK   rö   Ú	auto_nameÚurlsÚjob_refs   &&&&&&&&&&&&&&&&&&&&         r?   Újobs_runrG  |  s/  € ôD ˜CÓ*€GÜ Ó6€KÜ" 5Ô4×:Ð:¸€JØ×ÑØÜ$ØØÜ)ØØØ#ØØ#Ø#Ÿ\˜\ rØ+Ø -ô	ô	
ôô$ ˜5Ô
!€Cß‰dÔ#>¸vÈ3ÐZcÔ#d€GÜà�UØ”u—z’z 'Ó*Ø�f×;Ð;¤× 5Ñ 5× ;Ñ ;Ø�wØ�7Ø�{Ø�v—|�| Ø�jØ�c—h‘hÑB°V·\°\¸r°\ÓBÓBØ�3Ø˜]Ø˜sŸx™x¨×(;Ð(;¸Ó<ØÐ!2Ø˜ð	
ð  õ#÷& ÙØ
�+‰+ØØØØØØØØØØØ#Ø%Ø+Øð ó €Cô  ‡J‚Jˆ} §¡¨s¯z©z×/?Ð/?¸R×.DÑ.DÀVÓ.LÐRU×RYÑRYÕZÜ˜d×*Ò*Ø—Z‘Z×%Ð% 2×*Ñ*¨6Ó2ˆ	Ü�ŠØ˜y˜kð *Ø"Ÿy™yŸ~™~Ð.¨a°·±¨xÐ7RðTô	
ô �#—*‘*×(Ñ(¬$×/Ò/Ø�y‰yÑF¨s¯z©z×/EÒ/EÓFÓFˆÜ�ŠÐgÐhlÐgmÐnÔoÜ�#—*‘*×$Ñ$¤c×*Ò*Ü�ŠÐ$ S§Y¡Y§^¡^Ð$4°A°c·f±f°XÐ=cÐdÔeßÜ�ŠØ$ ] Oð 4 Ø -˜ð /RðRô	
÷
 Ø—Y‘Y—^‘^Ð$ A c§f¡f XÐ.ˆÜ�ŠÐ(¨¨	Ð1WÐX_ÐW`Ð`rÐsÔtÜ�ŠÐ% g YÐ.KÐLÔMÙÜ! # sÖ+rA   Úlogs)r  c                óÊ   € V ^8„  d   QhR\         R\        \        \        RRRR7      3,          R\        \        R,          \        R	R
RR7      3,          R\
        R\        RR/# )r8   r9   rø   ú-fz--followzqFollow log output (stream until the job completes). Without this flag, only currently available logs are printed.rï   ÚtailNz-nz--tailzvNumber of lines to show from the end of the logs. When combined with --follow, starts streaming from the last N lines.r:   r  r;   )ÚJobIdArgr   r‡   r1   Úintr  r)   )r>   s   "r?   r@   r@   ý  s’   € ÷ &xñ &xÜð&xäÜÜØØð Eô	
ð	õð&xô Üˆd�
ÜØØð Jô	
ð	õð&xô$ ð%&xô& ð'&xð( 
ñ)&xrA   c                ó  € \        W4      w  r\        VR7      pVP                  WWR7      pV F  p\        P                  ! V4       K  	  V'       d.   V'       d   V RV  2MT p\        P
                  ! RV R24       R# R# )a•  Fetch the logs of a Job.

By default, prints currently available logs and exits (non-blocking).
Use --follow/-f to stream logs in real-time until the job completes.
Use --tail/-n to limit the number of lines returned (server-side when supported).

Note: following exits when the log stream ends, regardless of whether the Job
succeeded or failed. Run `hf jobs inspect <job_id>` to check the final status.
r   )r9   r:   rø   rK  rC   z#Stream ended. Run `hf jobs inspect z6` to check the final status (e.g. COMPLETED or ERROR).N)rI   r,   rú   r3   rÞ   rY   )	r9   rø   rK  r:   r  rL   rH  rß   rF  s	   &&&&&    r?   Ú	jobs_logsrO  ô  sy   € ôN 5°VÓGÑ€Fä
˜5Ô
!€CØ×Ñ VÈÐÓ[€DÛˆÜ�Š�Žñ çß-6�Y�K˜q  Ñ)¸FˆÜ�ŠÐ6°w°iÐ?uÐvÖwñ rA   c                ó(   € V ^8„  d   QhR\         RR/# )r8   Únr;   N)rM  )r>   s   "r?   r@   r@   &  s   € ÷ 'ñ '”3ð '˜4ñ 'rA   c                 óJ   € R pRp\        V 4       F  p\        WR7       K  	  R# )z[1Az[2K)ÚendN)ÚrangeÚprint)rQ  ÚLINE_UPÚ
LINE_CLEARÚis   &   r?   Ú_clear_linerY  &  s"   € Ø€GØ€JÜ�1ŽXˆÜˆg×&ó rA   c                ó  € V ^8„  d   QhR\         R\        \        \         \        3,          ,          R\        \         ,          R\        \
        \        \         \        \        \         \        ,          ,          ,          3,          ,          /# )r8   r9   Úmetrics_streamÚtable_headersr;   )r<   r   rs   r   rM   r=   r‡   rM  )r>   s   "r?   r@   r@   -  s[   € ÷ ñ ÜðÜ!)¬$¬s´C¨x­.Õ!9ðÜJNÌsÍ)ðäŒe”Dœ#œt¤D¬¬s­¥OÕ4Ð4Õ5Õ6ñrA   c              #   ó  "  € V EFé  pV VR ,           R2\        VR,          R,          ^4      \        ^dVR,          ,          VR,          ,          ^4       R2\        VR,          4       R\        VR,          4       R2\        VR,          4       R	\        VR
,          4       R2.pVR,          '       Ed   \        VR,          \        4      '       dç   V.\	        \        VR,          4      ^,
          4       Uu. uF  pR.\        V4      ,          NK  	  up,           p\        V\        VR,          4      4       Fz  w  rGVR,          V,          pVVR,           R2\        ^dVR,          ,          VR,          ,          ^4       R2\        VR,          4       R\        VR,          4       R2.,          pK|  	  M-VR.\        V4      \        V4      ,
          ,          ,          pV.pRW3x € EKì  	  RV . 3x € R# u upi 5i)Úcpu_usage_pctÚ%Úcpu_millicoresg     @�@Úmemory_used_bytesÚmemory_total_byteszB / ÚBÚrx_bpszbps / Útx_bpsÚbpsÚgpusr¢   ÚutilizationúN/AFTN)Úroundr   rA  rs   rT  rÔ   ÚziprÎ   )	r9   r[  r\  ÚmetricsÚrowrÕ   rà   Úgpu_idÚgpus	   &&&      r?   Ú_get_jobs_stats_rowsrp  -  sø  é € ô "ˆàØ�Õ'Ð(¨Ð*Ü�'Ð*Õ+¨fÕ4°aÓ8Ü�S˜7Ð#6Õ7Õ7¸'ÐBVÕ:WÕWÐYZÓ[Ð\Ð\]Ð^Ü˜GÐ$7Õ8Ó9Ð:¸$¼|ÈGÐThÕLiÓ?jÐ>kÐklÐmÜ˜G HÕ-Ó.Ð/¨v´lÀ7È8ÕCTÓ6UÐ5VÐVYÐZð
ˆð �6�?�?œz¨'°&­/¼4×@Ò@Ø�5´U¼3¸wÀv½Ó;OÐRSÕ;SÔ5TÓUÑ5T°˜R˜D¤3 s£8ŸO˜OÑ5TÑUÕUˆDÜ" 4¬°¸µÓ)@ÖA‘�Ø˜f•o fÕ-�ØØ˜=Õ)Ð*¨!Ð,Ü˜S 3Ð':Õ#;Õ;¸cÐBVÕ>WÕWÐYZÓ[Ð\Ð\]Ð^Ü# CÐ(;Õ$<Ó=Ð>¸dÄ<ÐPSÐThÕPiÓCjÐBkÐklÐmðõ ’ò  Bð �E�7œc -Ó0´3°s³8Õ;Õ<Õ<ˆCØ�5ˆDØ�VÐ!Õ!ñ+ "ð, �˜Ð
Ôùò Vùs   ‚C9HÃ;G<ÄC*HÚstatszhf jobs stats <job_id>c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# )r8   Újob_idsr:   r  r;   N)Ú	JobIdsArgr  r)   )r>   s   "r?   r@   r@   J  s6   € ÷ A'ñ A'ÜðA'äðA'ô ðA'ð 
ñ	A'rA   c                óp  € V e,   . pV  F!  p\        WA4      w  rAVP                  V4       K#  	  Tp \        VR7      pVf   VP                  4       R,          pV f]   VP	                  VR7       Uu. uF@  pVP
                  '       d   VP
                  P                  MRR9   g   K4  VP                  NKB  	  p p\        V 4      ^ 8X  d   \        P                  ! R4       R# . ROp\        P                  P                  \        V 4      4      ;_uu_ 4       p/ p	V  F:  pV.p
Y§R,           Uu. uF  pRV9   g   R	V9   d   R
MRNK  	  up,          p
V
.W”&   K<  	  \        P                  ! 4       pV	 UU
u. uF  qIV,           F  qªNK  	  K  	  ppp
\        \!        W×R7      4       V  Uu. uF  pRVRVP#                  WAR7      RV/NK  	  pp\%        V\&        VR7       F¡  w  rôpV'       d   V	P)                  VR4       MVW”&   \        P                  ! 4       pVV,
          \*        8¼  g   KN  \-        ^\        V4      ,           4       V	 UU
u. uF  qIV,           F  qªNK  	  K  	  ppp
\        \!        W×R7      4       TpK£  	  RRR4       R# u upi u upi u up
pi u upi u up
pi   + '       g   i     R# ; i)z7Fetch the resource usage statistics and metrics of JobsNr   r„   )r:   ÚUNKNOWNzNo running jobs found:é   NNrC   ÚUSAGEz-- / --z--)Úheadersr9   r[  rù   r\  )Úkwargs_list)ÚRUNNINGÚUPDATING)	zJOB IDzCPU %zNUM CPUzMEM %z	MEM USAGEzNET I/Oz
GPU UTIL %z	GPU MEM %zGPU MEM USAGE)rI   r\   r,   ÚwhoamiÚ	list_jobsrþ   rÿ   rû   rÔ   r3   rÞ   ÚmultiprocessingÚpoolÚ
ThreadPoolÚtimerU  Ú	_tabulateÚfetch_job_metricsÚiflatmap_unorderedrp  ÚpopÚSTATS_UPDATE_MIN_INTERVALrY  )rs  r:   r  Ú
parsed_idsr9   rL   rö   r\  r€  Úrows_per_job_idrm  r’   Úlast_update_timeÚ
total_rowsrz  Údonerà   Únows   &&&               r?   Ú
jobs_statsrŽ  I  s–  € ð ÒØˆ
ÛˆFÜ <¸VÓ OÑˆFØ×Ñ˜fÖ%ñ ð ˆÜ
˜5Ô
!€CØÒØ—J‘J“L Õ(ˆ	Ø‚ð —}‘}¨y�}Ô9ó
á9�Ø$'§J§J J�—
‘
× Ò °IÐBYÑYô ˆC�FŒFÙ9ð 	ð 
ô
 ˆ7ƒ|�qÔÜ�ŠÐ(Ô)Ùò
€Mô 
×	Ñ	×	(Ñ	(¬¨W«×	6Ô	6¸$Ø<>ˆÛˆFØ$* 8ˆCØÐlnÖ^oÓpÑ^oÐTZ #¨¤-°7¸fÔ3D‘IÈ4ÒOÑ^oÑpÕpˆCØ'* eˆOÓ#ñ ô  Ÿ9š9›;ÐÙ(7Ô[©˜fÐSY×CZÐCZ¸C’cÑCZ‘c©ˆ
Ñ[ô 	Œi˜
Ô:Ô;ñ "ó
ñ "�ð	 ˜&Ø  #×"7Ñ"7¸vÐ"7Ó"[Ø óñ
 "ð 	ð 
ô #5°TÔ;OÐ]h×"iÑˆD˜$ßØ×#Ñ# F¨DÕ1à*.�Ñ'Ü—)’)“+ˆCØÐ%Õ%Ô)BÖBÜ˜A¤ J£Õ/Ô0Ù0?Ôc± fÐ[a×KbÐKbÀCšcÑKb™c±�
ÑcÜ”i 
ÔBÔCØ#&Ò ñ #j÷) 
7Ñ	6ùò'
ùò. qùó \ùò

ùó  d÷9 
7×	6Ð	6ús[   Á/J	ÂJ	Â%J	ÄJ$Ä)JÅ,J$Å0J
Æ	J$Æ%!JÇAJ$È( J$ÉJÉ!J$ÊJ$Ê$J5	zlist | ls | psc                ó8  € V ^8„  d   QhR\         \        \        RRRR7      3,          R\         \        \        ,          R,          \        R\        \        4      R	R
7      3,          R\         \        \        ,          R,          \        RRRR7      3,          R\         \        R,          \        RRR7      3,          R\         \        \        RRR7      3,          R\        R\        R\         \        \        ,          R,          \        RRRR7      3,          RR/	# )r8   Úallú-aú--allzWShow all Jobs (default shows running and scheduling). Cannot be combined with --status.rï   rþ   Nú--statuszfOnly show Jobs with the given status. Comma-separated or repeated, e.g. `--status running,scheduling`.©rñ   rð   r…   rò   ró   z{Only show Jobs with the given `key=value` label. Repeat to require several labels, e.g. `--label env=prod --label team=ml`.r„   rô   zFOnly show Jobs with the given name (shortcut for `--label name=NAME`).Úlimitz--limitzCMaximum number of Jobs to display. Set to 0 to show all (no limit).r:   r  ÚfilterrJ  ú--filterú2(Deprecated) Use `--status` and `--label` instead.r;   )
r   r‡   r1   rM   r<   r&   r   rM  r  r)   )r>   s   "r?   r@   r@   ™  sY  € ÷ Fañ FaÜ	ÜÜØØØjô	
ð	õ
ðFaô ÜŒS�	�DÕÜØÜ!¤(Ó+Øyô	
ð	õðFaô" ÜŒS�	�DÕÜØØð Oô	
ð	õð#Faô2 Üˆd�
ÜØØYô	
ð	õð3Faô@ ÜÜØØVô	
ð	õðAFaôN ðOFaôP ðQFaôR ÜŒS�	�DÕÜØØØEô	
ð	õðSFaðb 
ñcFarA   c                óœ  € \        VR7      pV'       d   \        P                  ! RV R24       V '       d   V'       d   \        R4      h. p	T;'       g    .  F*  p
V	P	                  R V
P                  R4       4       4       K,  	  V	'       d   T	pM?V '       d   RpM4\        P                  P                  \        P                  P                  .p/ pT;'       g    .  F0  pRV9  d   \        R	V R
24      hVP                  R4      w  rêW¬V&   K2  	  Ve   RV9   d   \        R4      hW<R&   TP                  Y[T;'       g    RR7      pRpV^ 8”  d?   \        \        P                  ! Wô^,           4      4      p\        V4      V8”  d   RpVRV pM\        V4      p. pV EFe  p\        V4      pVP!                  R4      ;'       g    / pVP!                  R4      ;'       g    . pVP!                  RR4      VR&   VP!                  R4      ;'       g    / P!                  R4      ;'       g    RVR&   VP!                  R4      ;'       g    RVR&   V'       d   RP#                  V4      MRVR&   VP!                  R4      '       d!   VR,          R,          P%                  RR4      MRVR&   VP!                  R4      ;'       g    / P!                  RR 4      VR&   \'        VP!                  R!4      4      VR"&   VP)                  V4       EKh  	  \        P*                  ! V. R+ORR#7       V'       d   \        P,                  ! R$V R%24       V'       g   V	'       g	   V'       dM   R&P#                  . R' V	 4       OR( VP/                  4        4       O4      p\        P0                  ! R)V 24       R# V '       g   \        P,                  ! R*4       R# R# R# ),z±List Jobs.

Use `--status` to filter by status (see [`JobStage`] for possible values) and `--label` to filter by `key=value`
labels. A Job must match every filter to be listed.
r   úIgnoring filter 'úc'. `-f`/`--filter` is deprecated and will be removed in a future release. Use `--status`/`--label`.ú0`-a`/`--all` cannot be combined with `--status`.c              3   óp   "  € T F,  qP                  4       '       g   K  VP                  4       x € K.  	  R # 5irÓ   )Ústrip©r—   Úparts   & r?   r˜   Újobs_ps.<locals>.<genexpr>Þ  s"   é € ÐVÑ5E¨TÏÉÏœL˜DŸJ™JŸL˜LÓ5Eùs   ‚6ž6Ú,NrË   úInvalid label filter 'ú"': must be in the form 'key=value'r„   ú6Cannot filter by both `--name` and `--label name=...`.)r:   rþ   ro   FTÚ	durationsr	  rû   r¢   r9   ro   ri  Údocker_imageúimage/spacerR   Ú
created_atºNé   NÚTÚcreatedrþ   rÿ   rv  Úrunning_secsÚruntime©ry  Úid_keyzOutput truncated to z4 Jobs. Use `--limit 0` to show all (or `--limit N`).r»   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5i©zstatus=Nrw   ©r—   Úss   & r?   r˜   r¡    ó   é € Ð7©, Q�W˜Q˜C•=«,ùrš   c              3   ó6   "  € T F  w  rR V RV 2x € K  	  R# 5i©zlabel=rË   Nrw   ©r—   ÚkÚvs   &  r?   r˜   r¡    ó#   é € Ð:gÑXfÑPTÐPQ¸VÀAÀ3ÀaÈÀsÕ;KÓXfùó   ‚zNo jobs matched filters: zHNo running jobs. Use `-a`/`--all` to include finished (and failed) jobs.)r9   r„   r¨  r	  r­  rþ   r¯  )r,   r3   r½   r   rU   rF   r   r{  r®   Ú
SCHEDULINGr~  rM   Ú	itertoolsÚislicerÔ   r2   r?  r¼   Úreplacer    r\   ÚtablerY   r§   rÞ   )r�  rþ   r…   r„   r•  r:   r  r–  rL   Úraw_statusesr®   Úserver_statusesro   rî   rŠ   Ú	jobs_iterÚ	truncatedÚjobsÚ	job_itemsrö   Újob_itemr¦  ÚcmdÚfilters_msgs   &&&&&&&&                r?   Újobs_psrÌ  Ž  s^  € ôD ˜5Ô
!€CçÜ�ŠØ ˜xð (pð pô	
÷
 �vÜÐIÓJÐJð !€LØ—�˜2’ˆØ×ÑÑV°U·[±[ÀÔ5EÓVÖVñ ÷ Ø&‰ß	Ø‰ä#×+Ñ+×1Ñ1´8×3FÑ3F×3LÑ3LÐMˆð  €FØ—�˜’ˆØ�dŒ?ÜÐ3°D°6Ð9[Ð\Ó]Ð]Ø—Z‘Z “_‰
ˆØˆs‹ñ	 ð ÒØ�VÔÜÐSÓTÐTØˆv‰à—‘¨	ÐRX×R`ÐR`Ð\`�Óa€Ið €IØˆq„yÜ”I×$Ò$ Y¸µ	Ó:Ó;ˆÜˆt‹9�uÔØˆIØ˜˜�<ˆDøä�I‹ˆð ')€IÜˆÜ% cÓ*ˆØ—L‘L Ó-×3Ð3°ˆ	Ø�l‰l˜9Ó%×+Ð+¨ˆØ%Ÿ\™\¨$°Ó3ˆ�ÑØ$ŸL™L¨Ó2×8Ð8°b×=Ñ=¸fÓE×NÐNÈˆ�ÑØ"*§,¡,¨~Ó">×"GÐ"GÀ%ˆ�Ñß/2˜cŸh™h sœm¸ˆ�ÑØOWÏ|É|Ð\h×OiÒOi˜h |Õ4°SÕ9×AÑAÀ#ÀsÔKÐotˆ�ÑØ&Ÿl™l¨8Ó4×:Ð:¸×?Ñ?ÀÈÓSˆ�ÑÜ-¨i¯m©m¸NÓ.KÓLˆ�ÑØ×Ñ˜×"ñ ô ‡I‚IØÚ\Øõ÷
 Ü�ŠÐ'¨ wÐ.bÐcÔdßßŸ6ØŸ)™)ØhÑ7©,Ó7ÐhÑ:gÐX^×XdÑXdÔXfÓ:gÐhóˆKô �HŠHÐ0°°Ð>Ö?ßÜ�HŠHÐ_Ö`ñ ñ rA   Úhardwarezhf jobs hardwarec                ó   € V ^8„  d   QhRR/# )r8   r;   Nrw   )r>   s   "r?   r@   r@   #  s   € ÷ ]ñ ]�tñ ]rA   c                 ó¦  € \        4       p V P                  4       p. pV EF  pRpVP                  '       dH   VP                  P                   RVP                  P                   RVP                  P
                   R2pVP                  '       d   RVP                  R 2MRpVP                  '       d   RVP                  ^<,          R 2MRpVP                  R	VP                  R
VP                  RVP                  RVP                  RVP                  RVRVRV/4       EK  	  \        P                  ! V4       \        P                  ! R4       R# )z(List available hardware options for Jobsr¢   zx ú (Ú)Ú$z.4fÚfreez.2fr„   zpretty nameÚcpuÚramÚstorageÚacceleratorzcost/minz	cost/hourzLUse `hf jobs run --flavor <name> ...` to request a specific hardware flavor.N)r,   Úlist_jobs_hardwarer×  ÚquantityÚmodelÚvramÚunit_cost_usdr\   r„   Úpretty_namerÔ  rÕ  Úephemeral_storager3   rÂ  rY   )rL   Úhardware_listr§   ÚhwÚaccelerator_infoÚcost_minÚ	cost_hours          r?   Újobs_hardwarerä  "  s*  € ô ‹,€CØ×*Ñ*Ó,€MØ€EÜˆØÐØ�>�>ˆ>Ø"$§.¡.×"9Ñ"9Ð!:¸"¸R¿^¹^×=QÑ=QÐ<RÐRTÐUW×UcÑUc×UhÑUhÐTiÐijÐkÐØ13×1A×1AÐ1A�Q�r×'Ñ'¨Ð,Ñ-ÀvˆØ79×7G×7GÐ7G�a˜×(Ñ(¨2Õ-¨cÐ2Ñ3ÈVˆ	Ø�‰à˜Ÿ™Ø˜rŸ~™~Ø�r—v‘vØ�r—v‘vØ˜2×/Ñ/ØÐ/Ø˜HØ˜Yð	÷	
ñ ô$ ‡I‚IˆeÔÜ‡H‚HÐ[Ö\rA   Úinspectzhf jobs inspect <job_id>c                ó„   € V ^8„  d   QhR\         \        \        ,          \        RR7      3,          R\        R\
        RR/# )r8   rs  z*Job IDs to inspect (or 'namespace/job_id')rï   r:   r  r;   N©r   rM   r<   r0   r  r)   )r>   s   "r?   r@   r@   ?  sT   € ÷ hñ hÜÜŒS�	ÜØ=ô	
ð	õðhô ðhô ðhð 
ñhrA   c           
     óT  € . pV  F!  p\        WA4      w  rAVP                  V4       K#  	  Tp \        VR7      pV  Uu. uF  qEP                  WAR7      NK  	  pp\        P
                  ! V Uu. uF#  p\        \        V4      VP                  R7      NK%  	  upRR7       R# u upi u upi )z0Display detailed information on one or more Jobsr   rù   ©ro   rû   ©r±  N)	rI   r\   r,   Úinspect_jobr3   rÂ  Ú_surface_namer2   ro   )rs  r:   r  rˆ  r9   rL   rÇ  rö   s   &&&     r?   Újobs_inspectrí  >  s—   € ð €JÛˆÜ8¸ÓKÑˆØ×Ñ˜&Ö!ñ ð €GÜ
˜5Ô
!€CÙNUÓVÉgÀF�O‰O 6ˆOÖ?Ég€DÐVÜ‡I‚IÑTXÓYÑTXÈSŒ}Ô/°Ó4¸S¿Z¹Z×HÑTXÑYÐbf×gùò WùÚYs   ¼B Á,)B%Úcancelzhf jobs cancel <job_id>c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# )r8   r9   r:   r  r;   N)rL  r  r)   )r>   s   "r?   r@   r@   U  s0   € ÷ 	+ñ 	+Üð	+äð	+ô ð	+ð 
ñ		+rA   c                óŒ   € \        W4      w  r\        VR7      pVP                  WR7       \        P                  ! RV R7       R# )zCancel a Jobr   rù   zJob cancelled©rû   N)rI   r,   Ú
cancel_jobr3   r]   )r9   r:   r  rL   s   &&& r?   Újobs_cancelró  T  s7   € ô 5°VÓGÑ€FÜ
˜5Ô
!€CØ‡N�N˜&€NÔ6Ü‡J‚Jˆ 6×*rA   Úwaitc          
      óÌ   € V ^8„  d   QhR\         \        \        ,          \        RR7      3,          R\         \        R,          \	        RR7      3,          R\
        R\        R	R/# )
r8   rs  z,Job IDs to wait for (or 'namespace/job_id').rï   rk   NzTMax time to wait: int with s (seconds, default), m (minutes), h (hours) or d (days).r:   r  r;   )r   rM   r<   r0   r1   r  r)   )r>   s   "r?   r@   r@   i  st   € ÷ 4
ñ 4
ÜÜŒS�	ÜØ?ô	
ð	õð4
ô Üˆd�
ÜØgô	
ð	õð4
ô ð4
ô ð4
ð 
ñ4
rA   c                óf  € . p\        4       pV  F2  p\        Wb4      w  rxVP                  V4       VP                  V4       K4  	  \	        V4      ^8”  d8   \        RRP                  R \        V\        R7       4       4      ,           4      hVP                  4       pVe   \        V4      MRp	\        VR7      p
\        P                  ! R\	        V4       R24      p V
P                  WIVR	7      pTP!                  \	        T4       R24       \        P"                  ! T Uu. uFF  pRTP$                  R\        TP                  P&                  4      RTP                  P(                  /NKH  	  up4       T Uu. uF/  qÝP                  P&                  \*        P,                  8w  g   K-  TNK1  	  ppT'       dA   \        \	        T4       R\	        T4       R2RP                  R T 4       4      ,           4      hR#   \         d#    TP!                  R
4       \        RT R24      Rhi ; iu upi u upi )a  Wait for one or more Jobs to reach a terminal state.

Blocks until every Job has finished, then exits with code 0 if all Jobs completed
successfully, or a non-zero exit code if any Job was canceled, errored or deleted.

All Jobs must belong to the same namespace.
z0All Job IDs must be in the same namespace, got: r»   c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irÓ   rŒ   )r—   Únss   & r?   r˜   Újobs_wait.<locals>.<genexpr>‰  s   é € ÐFÑ*E Bœ˜BŸ˜Ó*Eùr&  )rŠ   Nr   zWaiting for z Job(s) to finish...)rk   r:   z
Timed out.zTimed out after z waiting for Job(s) to finish.z Job(s) finished.rû   rÿ   r  z of z' Job(s) did not complete successfully: c              3   ól   "  € T F*  qP                    R VP                  P                   R2x € K,  	  R# 5i)rÐ  rÑ  N)rû   rþ   rÿ   )r—   rö   s   & r?   r˜   rù  œ  s*   é € ÐKÁF¸SŸ6™6˜( " S§Z¡Z×%5Ñ%5Ð$6°aÕ8ÃFùs   ‚24)rt   rI   r\   r�   rÔ   r   r¼   rÎ   r<   r†  r!   r,   r3   rþ   rý   ÚTimeoutErrorrŒ  rÂ  rû   rÿ   r  r   r   )rs  rk   r:   r  rˆ  Ú
namespacesr9   Ú	parsed_idÚparsed_namespaceÚtimeout_secsrL   rþ   rÇ  rö   Úfaileds   &&&&           r?   Ú	jobs_waitr  a  sô  € ð> €JÜ“€JÛˆÜ&BÀ6Ó&UÑ#ˆ	Ø×Ñ˜)Ô$Ø�‰Ð'Ö(ñ ô ˆ:ƒ˜ÔÜØ>Ø�i‰iÑF¬&°ÄÕ*EÓFÓFõGó
ð 	
ð —‘Ó €IØ.5Ò.A”> 'Ô*Àt€Lä
˜5Ô
!€CÜ�ZŠZ˜,¤s¨:£Ð&7Ð7KÐLÓM€Fð]Ø×Ñ 
ÈIÐÓVˆð ‡K�K”3�t“9�+Ð.Ð/Ô0ä‡I‚IÑhlÓmÑhlÐad��c—f‘f˜g¤s¨3¯:©:×+;Ñ+;Ó'<¸iÈÏÉ×I[ÑI[Ó\ÑhlÑmÔnÙ!ÓL™T�c§Z¡Z×%5Ñ%5¼×9KÑ9KÑ%K�cˆc™T€FÐLßÜÜ�6‹{ˆm˜4¤ D£	˜{Ð*QÐRØ�i‰iÑKÁFÓKÓKõLó
ð 	
ñ øô ô ]Ø�‰�LÔ!ÜÐ)¨'¨Ð2PÐQÓRÐX\Ð\ð]üò
 nùÚLs   ÃG9 Ä!AH)Å8*H.Æ'H.Ç9-H&ro   c                ó”   € V ^8„  d   QhR\         R\        R\        R\        \        \        RRR7      3,          R\        R	\        R
R/# )r8   r9   r„   r…   Úclearú--clearzRemove all labels from the job.rï   r:   r  r;   N)rL  r  r  r   r‡   r1   r  r)   )r>   s   "r?   r@   r@   ¨  si   € ÷ Eñ EÜðEä
ðEô ðEô ”Tœ6 )Ð2SÔTÐTÕUð	Eô
 ðEô ðEð 
ñErA   c                óà  € V'       g   Vf   V'       g   \        R4      hV'       g   Ve   V'       d   \        R4      h\        W4      w  r\        VR7      pVe8   V'       g0   VP                  WR7      P                  ;'       g    / p/ VCRV/CpM\        W!R7      ;'       g    / pVP                  WVR7      p	\        P                  ! R	V	P                  VP                  R4      R
7       R# )zfUpdate labels on a Job. Passing --label replaces all existing labels; passing --name alone keeps them.NúePlease set a name with --name or at least one label with --label. To remove all labels, pass --clear.úlCannot set a name or labels and clear them at the same time. Please use --name/--label or --clear, not both.r   rù   r„   r�   )r9   ro   r:   úLabels updated©rû   r„   )r   rI   r,   rë  ro   rª   Úupdate_job_labelsr3   r]   rû   r?  )
r9   r„   r…   r  r:   r  rL   Úcurrent_labelsro   rö   s
   &&&&&&    r?   Újobs_labelsr     sÏ   € ÷" �T’\¯%ÜØsó
ð 	
÷ 	�Ò!§uÜØzó
ð 	
ô 5°VÓGÑ€FÜ
˜5Ô
!€CØÒ§àŸ™°˜ÓL×SÑS×YÐYÐWYˆØ1�NÐ1 F¨DÑ1‰ä" 5Ô4×:Ð:¸ˆØ
×
Ñ
 vÈ	Ð
Ó
R€CÜ‡J‚JÐ C§F¡F°·±¸FÓ1C×DrA   r  c                óX   € V ^8„  d   QhR\         R\        R\        R\        R\        RR/# )r8   r9   Úidentity_filer†   r:   r  r;   N)rL  r(   r'   r  r)   )r>   s   "r?   r@   r@   Í  sD   € ÷ #ñ #Üð#ä%ð#ô ð#ô ð	#ô
 ð#ð 
ñ#rA   c                óú  € \        W4      w  r\        VR7      pVP                  WR7      pVP                  P                  f   \        R4      hVP                  P                  \        9   d1   \        RVP                   RVP                  P                   R24      hVP                  P                  \        P                  8w  dä   \        P                  ! RVP                   R	VP                  P                   R
24      pVP                  VP                  V\        P                  .R7      pVP                  P                  \        P                  8w  dB   VP                  R4       \        RVP                   RVP                  P                   R24      hVP                  R4       \        VP                  P                  4      p\        VP                    RVP"                   2VP$                  VVR7       R# )a  SSH into a running Job.

If the Job is not yet running, waits until it reaches the RUNNING state before
connecting. Requires the Job to be started with SSH enabled (`hf jobs run --ssh ...`)
and your SSH public key to be registered at https://huggingface.co/settings/keys.
r   rù   Nz[SSH is not enabled on this job. Start a job with SSH support using `hf jobs run --ssh ...`.zCannot SSH into job 'z%': job has already finished (stage: 'z').zWaiting for job 'z' to be running (stage: 'z')...)r9   r:   ÚstageszJob finished.z1': job finished before reaching RUNNING (stage: 'zJob is running.Ú@)r#  r  r†   )rI   r,   rë  rþ   rC  r   rÿ   r   rû   r   r{  r3   rý   rŒ  r   r+   ÚusernameÚhostnamer#  )	r9   r  r†   r:   r  rL   rö   rþ   rC  s	   &&&&&    r?   Újobs_sshr  Å  s¢  € ô* 5°VÓGÑ€FÜ
˜5Ô
!€CØ
�/‰/ ˆ/Ó
=€CØ
‡z�z×ÑÒ!ÜÐtÓuÐuØ
‡z�z×ÑÔ.Ô.ÜÐ.¨s¯v©v¨hÐ6[Ð\_×\fÑ\f×\lÑ\lÐ[mÐmpÐqÓrÐrØ
‡z�z×Ñœ8×+Ñ+Ô+Ü—’Ð/°·±¨xÐ7PÐQT×Q[ÑQ[×QaÑQaÐPbÐbgÐhÓiˆØ×Ñ c§f¡f¸	Ì8×K[ÑK[ÐJ\ÐÓ]ˆØ�:‰:×Ñœx×/Ñ/Ô/Ø�K‰K˜Ô(ÜØ'¨¯© xÐ/`Ðad×akÑak×aqÑaqÐ`rÐruÐvóð ð 	�‰Ð%Ô&Ü�s—z‘z×)Ñ)Ó*€GÜØ×ÑÐ
˜A˜g×.Ñ.Ð/Ð0Ø�\‰\Ø#Ø÷	rA   zFRun UV scripts (Python with inline dependencies) on HF infrastructure.Úuvr�   c          0      ó0  € V ^8„  d   QhR\         R\        R\        R\        R\        R\
        R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R\        R\         R\"        R\$        R\&        R\(        R\*        R\,        RR/# )r8   rf   rg   rh   ri   rm   rn   r„   r…   r`   r‚   rƒ   rk   r
  r†   r  r  rl   r  r  r:   r  Úwith_rj   r;   N)Ú	ScriptArgÚScriptArgsArgÚImageOptr  r#   r%   r  r  r  r"   r$   r  r  r  r  r  r  r  r  r  r)   ÚWithOptÚ	PythonOpt)r>   s   "r?   r@   r@     s  € ÷ s,ñ s,Üðs,äðs,ô ðs,ô ð	s,ô
 
ðs,ô ðs,ô ðs,ô ðs,ô ðs,ô ðs,ô !ðs,ô ðs,ô ðs,ô ðs,ô ðs,ô  
ð!s,ô" #ð#s,ô$ #ð%s,ô& *ð's,ô( ð)s,ô* ð+s,ô, ð-s,ô. ð/s,ð0 
ñ1s,rA   c                óš	  € \        VR7      p\        R4/ RVbRV bRVbRVbRVbRVbRVbR	VbR
V	bRVbRV
bRVbRVbRVbRVbRVbRVbRVbRVb ;_uu_ 4       p\        / RV bR\        P                  ! VP
                  4      bRRP	                  T;'       g    . 4      bRVP                  ;'       g    \        bRVP                  ;'       g    \        P                  P                  bRVP                  bRVP                  bR	VP                  bRVP                  bRVP                   bRVP"                  bRRP	                  R T;'       g    .  4       4      bRVbRVP$                  bRRP	                  VP&                  4      bRVbRVP(                  bVP*                  VR7       V'       d    RRR4       R# TP-                  VP.                  VP
                  TVP                  VP                  VP                  VP                  VP"                  VP0                  VP                  VP                  TTVP$                  VP&                  ;'       g    RVVP(                  R 7      pRRR4       \2        P4                  ! R!XP6                  VP"                  ;'       g    / P9                  R4      VP:                  R"7       \=        WgXP*                  4      '       gd   VP"                  ;'       g    / P9                  R4      p\2        P>                  ! R#V R$VP@                  PB                   R%VP6                   R&24       \E        VPF                  PH                  \J        4      '       dF   R'P	                  R( VPF                  PH                   4       4      p\2        P>                  ! R)V 24       \E        VPF                  PL                  \N        4      '       d<   \2        P>                  ! R*VP@                  PB                   R%VP6                   R+24       VP$                  ;p'       d   \2        P>                  ! R,V R-V R.24       V'       d_   VP@                  PB                   R%VP6                   2p\2        P>                  ! R/V R0V R124       \2        P>                  ! R2V R324       R# \Q        VV4       R#   + '       g   i     ELZ; i)5ú8Run a UV script (local file or URL) on HF infrastructurer   rL   rf   rg   r�   rh   ri   rj   rm   r‚   rn   rƒ   rk   r„   r…   r`   r:   rl   rq   r†   ÚargsÚwithrR   rK   ro   r  c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irÓ   rŒ   r"  s   & r?   r˜   Újobs_uv_run.<locals>.<genexpr>@  ó   é € Ð"F¹°¤3 t§9 9»ùr&  r  r  ©rr   r†   N)rf   rg   r�   rj   rh   rm   rn   ro   rK   ri   rk   r  r  rl   rq   r  r:   r'  r(  r*  r+  rC   r,  r×   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5ir.  rw   r/  s   & r?   r˜   r"  g  r0  rš   r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  rw   ))r,   r¶   ræ   r=  r¼   rg   rh   r   ri   r   rÍ   r®   rj   rk   rm   rn   rp   ro   rl   rq   r:   rr   Ú
run_uv_jobrf   rK   r3   r]   rû   r?  r)  r@  rY   rü   r„   rA  rþ   rB  rM   rC  r<   r  )rf   rg   rh   ri   rm   rn   r„   r…   r`   r‚   rƒ   rk   r
  r†   r  r  rl   r  r  r:   r  r  rj   rL   rµ   rö   rD  rE  ÚgrouprF  s   &&&&&&&&&&&&&&&&&&&&&&&       r?   Újobs_uv_runr(  ÷  sÒ  € ôL ˜5Ô
!€CÜ	ò 
Ùð
áð
ñ  ð
ñ ð	
ñ
 ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ "ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ  ð!
ñ" $ð#
ñ$ &ð%
ñ& ÷'
ñ 
ð( 
ÜðØ˜&ðàœŸ
š
 6×#5Ñ#5Ó6ðð ˜Ÿ™ § ¨"Ó-ðð ˜Ÿ™×9Ð9Ô)9ð	ð
 ˜&Ÿ-™-×FÐF¬;×+@Ñ+@×+FÑ+Fðð ˜&Ÿ-™-ðð ˜6Ÿ>™>ðð �v—z‘zðð ˜6Ÿ>™>ðð ˜6×.Ñ.ðð ˜&Ÿ-™-ðð ˜#Ÿ(™(Ñ"F¸¿¸À2¸Ó"FÓFðð �sðð   ×!5Ñ!5ðð " 3§8¡8¨F×,BÑ,BÓ#Cðð  $Ð%6ð!ð" ˜V×-Ñ-ð#ð& ×*Ñ*Øõ+	
÷. Ø÷[
ñ 
ð\ �n‰nØ—=‘=Ø×*Ñ*ØØ—=‘=Ø—,‘,Ø—
‘
Ø—N‘NØ—=‘=Ø—N‘NØ—=‘=Ø—N‘NØØØ ×.Ñ.Ø"×2Ñ2×:Ð:°dØ/Ø×&Ñ&ð# ó 
ˆ÷]
ôB ‡J‚Jˆ} §¡¨s¯z©z×/?Ð/?¸R×.DÑ.DÀVÓ.LÐRU×RYÑRYÕZÜ˜d¨6×+=Ñ+=×>Ò>Ø—Z‘Z×%Ð% 2×*Ñ*¨6Ó2ˆ	Ü�ŠØ˜y˜kð *Ø"Ÿy™yŸ~™~Ð.¨a°·±¨xÐ7RðTô	
ô �#—*‘*×(Ñ(¬$×/Ò/Ø�y‰yÑF¨s¯z©z×/EÒ/EÓFÓFˆÜ�ŠÐgÐhlÐgmÐnÔoÜ�#—*‘*×$Ñ$¤c×*Ò*Ü�ŠÐ$ S§Y¡Y§^¡^Ð$4°A°c·f±f°XÐ=cÐdÔeØ×$Ñ$Ð$€uÖ$Ü�ŠØ$ U Gð , Ø %˜wð 'RðRô	
÷
 Ø—Y‘Y—^‘^Ð$ A c§f¡f XÐ.ˆÜ�ŠÐ(¨¨	Ð1WÐX_ÐW`Ð`rÐsÔtÜ�ŠÐ% g YÐ.KÐLÔMÙÜ! # sÖ+÷q
÷ 
ð 
ús4   ÁAR9Â2R9ÃA?R9ÅA!R9Æ/R9Æ:BR9ÉR9Ò9S
	c                   ó"   € ] tR tRtRtRtRtRtR# )ÚScheduledJobStatusFilteriy  zŸPossible values for `hf jobs scheduled ls --status`.

Scheduled Jobs are not "running": they are either active (i.e. they will trigger new runs) or suspended.
ÚactiveÚ	suspendedrw   N)rx   ry   rz   r{   r|   ÚACTIVEÚ	SUSPENDEDr~   rw   rA   r?   r*  r*  y  s   † ñð
 €FØ„IrA   r*  z,Create and manage scheduled Jobs on the Hub.Ú	scheduledzRhf jobs scheduled run "0 0 * * *" --name daily-script python:3.12 python script.pyc          (      ó   € V ^8„  d   QhR\         R\        R\        R\        R\        R\
        R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R\        R\         R\"        R\$        RR/# )r8   Úschedulerh   r	  ÚsuspendÚconcurrencyrm   rn   r„   r…   r`   r‚   rƒ   ri   rk   r†   r  r  r:   r  r;   N)ÚScheduleArgr  r  Ú
SuspendOptÚConcurrencyOptr#   r%   r  r  r  r"   r$   r  r  r  r  r  r  r)   )r>   s   "r?   r@   r@   Œ  sü   € ÷ Wtñ WtÜðWtäðWtô ðWtô ð	Wtô
  ðWtô 
ðWtô ðWtô ðWtô ðWtô ðWtô ðWtô !ðWtô ðWtô ðWtô ðWtô  ð!Wtô" *ð#Wtô$ ð%Wtô& ð'Wtð( 
ñ)WtrA   c                óŠ  € \        WZ4      p\        Wk4      p\        W‡R7      ;'       g    / pTP                  R\        TT\	        TTTTTT	;'       g    . R7      R7      4       \        VR7      pV'       d   RM\        V	VVR7      p\        RT R	TR
TRTR\        P                  ! V4      RT;'       g    \        P                  P                  RTRTRTRT	;'       g    . RTRRP                  R T;'       g    .  4       4      RVRV/VR7       V'       d   R# VP                  VVV VVVVVVVVVVVR7      p\        P                  ! RVP                   VP"                  P$                  ;'       g    / P'                  R4      R7       \)        Wx4      '       gn   VP"                  P$                  ;'       g    / P'                  R4      p\        P*                  ! RV RVP,                  P.                   RVP                    R24       \        P*                  ! R VP,                  P.                   RVP                    R!24       R# )"zSchedule a Job.r�   r„   )ri   rk   r:   rm   rn   rp   r¥   r   Nr¡   r1  r2  r3  rh   r	  ri   rk   rm   rn   rK   ro   r  rR   c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irÓ   rŒ   r"  s   & r?   r˜   Ú scheduled_run.<locals>.<genexpr>Ä  r%  r&  r  r:   r›   )rh   r	  r1  r2  r3  rm   rn   ro   rK   ri   rk   r  r  r:   úScheduled Job createdr	  úScheduled Job auto-named 'ú2'. Pass `--name` or run `hf jobs scheduled labels rC   r,  úUse `hf jobs scheduled inspect ú` to view its details.)r-   rª   r<  r   r¬   r,   ra   ræ   r=  r¼   r   rÍ   r®   Úcreate_scheduled_jobr3   r]   rû   Újob_specro   r?  r@  rY   rü   r„   )r1  rh   r	  r2  r3  rm   rn   r„   r…   r`   r‚   rƒ   ri   rk   r†   r  r  r:   r  r­   r°   r²   rL   rK   Úscheduled_jobrD  s   &&&&&&&&&&&&&&&&&&&       r?   Úscheduled_runrB  ‡  s?  € ô6 ˜CÓ*€GÜ Ó6€KÜ" 5Ô4×:Ð:¸€JØ×ÑØÜ$ØØÜ)ØØØ#ØØ#Ø#Ÿ\˜\ rôô	
ôô  ˜5Ô
!€Cß‰dÔ#>¸vÈ3ÐZcÔ#d€GÜà˜Ø�wØ˜;Ø�UØ”u—z’z 'Ó*Ø�f×;Ð;¤× 5Ñ 5× ;Ñ ;Ø�wØ�7Ø�{Ø�v—|�| Ø�jØ�c—h‘hÑB°V·\°\¸r°\ÓBÓBØÐ!2Ø˜ð	
ð  õ#÷& ÙØ×,Ñ,ØØØØØØØØØØØØØ+Øð -ó €Mô  ‡J‚JÐ&¨=×+;Ñ+;À=×CYÑCY×C`ÑC`×CfÐCfÐdf×BkÑBkÐlrÓBsÕtÜ˜d×*Ò*Ø"×+Ñ+×2Ñ2×8Ð8°b×=Ñ=¸fÓEˆ	Ü�ŠØ(¨¨ð 4)Ø)6×)<Ñ)<×)AÑ)AÐ(BÀ!ÀM×DTÑDTÐCUÐUpðrô	
ô ‡H‚HÐ.¨}×/BÑ/B×/GÑ/GÐ.HÈÈ-×JZÑJZÐI[Ð[qÐrÖsrA   c                óü  € V ^8„  d   QhR\         \        \        RRRR7      3,          R\         \        \        ,          R,          \        R\        \        4      R	R
7      3,          R\         \        \        ,          R,          \        RRRR7      3,          R\         \        R,          \        RRR7      3,          R\        R\        R\         \        \        ,          R,          \        RRRR7      3,          RR/# )r8   r�  r‘  r’  zTShow all scheduled Jobs (default hides suspended). Cannot be combined with --status.rï   rþ   Nr“  zgOnly show scheduled Jobs with the given status. Comma-separated or repeated, e.g. `--status suspended`.r”  r…   rò   ró   z…Only show scheduled Jobs with the given `key=value` label. Repeat to require several labels, e.g. `--label env=prod --label team=ml`.r„   rô   zPOnly show scheduled Jobs with the given name (shortcut for `--label name=NAME`).r:   r  r–  rJ  r—  r˜  r;   )	r   r‡   r1   rM   r<   r&   r*  r  r)   )r>   s   "r?   r@   r@   ð  s2  € ÷ Omñ OmÜ	ÜÜØØØgô	
ð	õ
ðOmô ÜŒS�	�DÕÜØÜ!Ô":Ó;ð)ô		
ð	õ
ðOmô( ÜŒS�	�DÕÜØØð7ô		
ð	õ
ð)Omô> Üˆd�
ÜØØcô	
ð	õð?OmôL ðMOmôN ðOOmôP ÜŒS�	�DÕÜØØØEô	
ð	õðQOmð` 
ñaOmrA   c           	     óð  € \        VR7      pV'       d   \        P                  ! RV R24       V '       d   V'       d   \        R4      h. pT;'       g    .  F*  p	VP	                  R V	P                  R4       4       4       K,  	  V U
u. uF  qª\        \        4      9  g   K  V
NK  	  pp
V'       d0   \        RT R\         U
u. uF  qªP                  NK  	  up
 R	24      hV'       d(   \        P                  V9   p\        P                  V9   pMR
pT p/ pT;'       g    .  F2  pRV9  d   \        RV R24      hVP                  R^4      w  pp	WžV&   K4  	  Ve   RV9   d   \        R4      hW>R&   TP                  YN;'       g    RR7      p. pV FN  pVP                  ;'       g    RpV'       d   V'       g   K+  V'       g   V'       g   K=  VP                  V4       KP  	  . pV EF“  p\        V4      pVP                  R4      ;'       g    / pVP                  R4      ;'       g    / pVP                  R4      pVP                  R4      ;'       g    . pVP                  R4      ;'       g    / P                  R4      ;'       g    RVR&   VP                  R4      ;'       g    RVR&   V'       d   RP!                  V4      MRVR&   V'       d8   VP                  R4      '       d!   VR,          R,          P#                  RR4      MRVR&   VP                  R 4      '       d!   VR ,          R,          P#                  RR4      MRVR!&   VP                  R"4      ;'       g    RVR"&   VP                  V4       EK–  	  \        P$                  ! V. R.OR#R$7       V'       gz   V'       g	   V'       dL   R%P!                  . R& V 4       OR' VP'                  4        4       O4      p\        P(                  ! R(V 24       MV '       g   \        P*                  ! R)4       V'       dG   V^ ,          R#,          p\        P*                  ! R*V R+24       \        P*                  ! R,V R-24       R# R# u up
i u up
i )/z¸List scheduled Jobs.

Use `--status` to filter by status (`active` or `suspended`) and `--label` to filter by `key=value` labels.
A scheduled Job must match every filter to be listed.
r   rš  r›  rœ  c              3   óŒ   "  € T F:  qP                  4       '       g   K  VP                  4       P                  4       x € K<  	  R # 5irÓ   )rž  ÚlowerrŸ  s   & r?   r˜   Úscheduled_ps.<locals>.<genexpr>4  s0   é € Ð^Ñ=M°T×Q[ÑQ[×Q]Ô0˜DŸJ™J›L×.Ñ.×0Ð0Ó=Mùs
   ‚Až&Ar¢  zInvalid status filter(s) z: expected one of rë   TrË   r£  r¤  Nr„   r¥  )r:   ro   Fr@  rþ   Úlast_jobr	  ro   ri  r§  r¨  rR   Úatrª  r¬  Úlast_runÚnext_job_run_atÚnext_runr2  rû   r°  r»   c              3   ó,   "  € T F
  pR V 2x € K  	  R# 5ir³  rw   r´  s   & r?   r˜   rG  w  r¶  rš   c              3   ó6   "  € T F  w  rR V RV 2x € K  	  R# 5ir¸  rw   r¹  s   &  r?   r˜   rG  w  r¼  r½  z#No scheduled jobs matched filters: zENo active scheduled jobs. Use `-a`/`--all` to include suspended ones.r=  z(` to view details about a scheduled job.zUse `hf jobs scheduled trigger z)` to trigger a scheduled job immediately.)rû   r„   r1  r¨  r	  rJ  rL  r2  )r,   r3   r½   r   rU   rF   r=   r*  r®   r-  r.  Úlist_scheduled_jobsr2  r\   r2   r?  r¼   rÁ  rÂ  r§   rÞ   rY   )r�  rþ   r…   r„   r:   r  r–  rL   rÃ  r®   rµ  Úunknown_statusesÚshow_activeÚshow_suspendedro   Ú	raw_labelrŠ   Úscheduled_jobsÚfiltered_jobsrA  r2  r§   Úsjrî   r@  Ústatus_dictrH  rÊ  rË  Úfirst_item_ids   &&&&&&&                       r?   Úscheduled_psrY  æ  sÿ  € ô@ ˜5Ô
!€CçÜ�ŠØ ˜xð (pð pô	
÷
 �vÜÐIÓJÐJð !€LØ—�˜2’ˆØ×ÑÑ^¸U¿[¹[ÈÔ=MÓ^Ö^ñ ñ $0Ó\¡<˜a¼EÔBZÓ<[Ñ3[Ÿ˜¡<ÐÐ\ßÜØ'Ð(8Ð'9ð :Ý":Ó;Ñ":˜Q—”Ñ":Ñ;Ð<¸Að?ó
ð 	
÷
 Ü.×5Ñ5¸ÑEˆÜ1×;Ñ;¸|ÑK‰àˆØˆð  €FØ—[�[˜b’[ˆ	Ø�iÔÜÐ3°I°;Ð>`ÐaÓbÐbØ—_‘_ S¨!Ó,‰
ˆˆUØˆs‹ñ	 !ð ÒØ�VÔÜÐSÓTÐTØˆv‰à×,Ñ,°yÏÈÐSWÐ,ÓX€Nà€MÛ'ˆØ×'Ñ'×0Ð0¨5ˆßŸ>ÙßŸ{ÙØ×Ñ˜]Ö+ñ (ð #%€EÜˆÜ! "Ó%ˆØ—8‘8˜JÓ'×-Ð-¨2ˆØ—h‘h˜xÓ(×.Ð.¨BˆØ—?‘? :Ó.ˆØ�l‰l˜9Ó%×+Ð+¨ˆØ Ÿ™ XÓ.×4Ð4°"×9Ñ9¸&ÓA×JÐJÀUˆˆV‰Ø&Ÿl™l¨>Ó:×CÐC¸eˆˆ]Ñß+.˜#Ÿ(™( 3œ-°EˆˆY‰ßDLÐQY×Q]ÑQ]Ð^b×QcÒQc˜8 D�>¨#Õ.×6Ñ6°s¸CÔ@ÐinˆˆZÑàEPÇ_Á_ÐUf×EgÒEgˆKÐ)Õ*¨3Õ/×7Ñ7¸¸SÔAÐmrð 	ˆZÑð Ÿ(™( 9Ó-×6Ð6°ˆˆY‰Ø�‰�T×ñ ô  ‡I‚IØÚgØõ÷
 ßŸ6ØŸ)™)ØhÑ7©,Ó7ÐhÑ:gÐX^×XdÑXdÔXfÓ:gÐhóˆKô �HŠHÐ:¸;¸-ÐHÕIßÜ�HŠHÐ\Ô]ßØ˜a� �ˆÜ�ŠÐ2°=°/ÐAiÐjÔkÜ�ŠÐ2°=°/ÐAjÐkÖlñ ùòM ]ùò <s   Â
Q.Â$Q.ÃQ3zhf jobs scheduled inspect <id>c                ó„   € V ^8„  d   QhR\         \        \        ,          \        RR7      3,          R\        R\
        RR/# )r8   Úscheduled_job_idsz>Scheduled Job IDs to inspect (or 'namespace/scheduled_job_id')rï   r:   r  r;   Nrç  )r>   s   "r?   r@   r@   ƒ  sT   € ÷ xñ xÜ ÜŒS�	ÜØQô	
ð	õðxô ðxô ðxð 
ñxrA   c           
     ój  € . pV  F!  p\        WA4      w  rAVP                  V4       K#  	  Tp \        VR7      pV  Uu. uF  pVP                  WaR7      NK  	  pp\        P
                  ! V Uu. uF-  p\        \        V4      VP                  P                  R7      NK/  	  upRR7       R# u upi u upi )z:Display detailed information on one or more scheduled Jobsr   ©Úscheduled_job_idr:   ré  rû   rê  N)
rI   r\   r,   Úinspect_scheduled_jobr3   rÂ  rì  r2   r@  ro   )	r[  r:   r  rˆ  r9   rL   r^  rT  rV  s	   &&&      r?   Úscheduled_inspectr`  ‚  s¸   € ð €JÛ#ˆÜ8¸ÓKÑˆØ×Ñ˜&Ö!ñ $ð #ÐÜ
˜5Ô
!€Cñ !2óá 1Ðð 	×!Ñ!Ð3CÐ!ÖYÙ 1ð ð ô ‡I‚IÑZhÓiÑZhÐTVŒ}Ô/°Ó3¸B¿K¹K×<NÑ<N×OÑZhÑiÐrv×wùò	ùò js   ¼B+Á-3B0Údeletezhf jobs scheduled delete <id>c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# ©r8   r^  r:   r  r;   N©ÚScheduledJobIdArgr  r)   )r>   s   "r?   r@   r@   œ  ó0   € ÷ 	=ñ 	=Ü'ð	=äð	=ô ð	=ð 
ñ		=rA   c                óŒ   € \        W4      w  r\        VR7      pVP                  WR7       \        P                  ! RV R7       R# )zDelete a scheduled Job.r   r]  zScheduled Job deletedrñ  N)rI   r,   Údelete_scheduled_jobr3   r]   ©r^  r:   r  rL   s   &&& r?   Úscheduled_deleterj  ›  ó?   € ô #?Ð?OÓ"[ÑÐÜ
˜5Ô
!€CØ×ÑÐ.>ÐÔTÜ‡J‚JÐ&Ð+;×<rA   r2  zhf jobs scheduled suspend <id>c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# rc  rd  )r>   s   "r?   r@   r@   ©  ó6   € ÷ 
Qñ 
QÜ'ð
Qäð
Qô ð
Qð 
ñ	
QrA   c                óÀ   € \        W4      w  r\        VR7      pVP                  WR7       \        P                  ! RV R7       \        P
                  ! RV  R24       R# )z Suspend (pause) a scheduled Job.r   r]  zScheduled Job suspendedrñ  zUse `hf jobs scheduled resume z` to resume it.N)rI   r,   Úsuspend_scheduled_jobr3   r]   rY   ri  s   &&& r?   Úscheduled_suspendrp  ¨  sW   € ô #?Ð?OÓ"[ÑÐÜ
˜5Ô
!€CØ×ÑÐ/?ÐÔUÜ‡J‚JÐ(Ð-=Õ>Ü‡H‚HÐ-Ð.>Ð-?¸ÐOÖPrA   Úresumezhf jobs scheduled resume <id>c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# rc  rd  )r>   s   "r?   r@   r@   ·  rf  rA   c                óŒ   € \        W4      w  r\        VR7      pVP                  WR7       \        P                  ! RV R7       R# )z!Resume (unpause) a scheduled Job.r   r]  zScheduled Job resumedrñ  N)rI   r,   Úresume_scheduled_jobr3   r]   ri  s   &&& r?   Úscheduled_resumeru  ¶  rk  rA   Útriggerzhf jobs scheduled trigger <id>c                ó@   € V ^8„  d   QhR\         R\        R\        RR/# rc  rd  )r>   s   "r?   r@   r@   Ä  rm  rA   c                ó,  € \        W4      w  r\        VR7      pVP                  WR7      p\        P                  ! RVP
                  VP                  R7       \        P                  ! RVP                  P                   RVP
                   R24       R# )	zJTrigger a scheduled Job to run immediately (does not change the schedule).r   r]  zScheduled Job triggered)rû   r)  r7  rC   z` to stream logs.N)
rI   r,   Útrigger_scheduled_jobr3   r]   rû   r)  rY   rü   r„   )r^  r:   r  rL   rö   s   &&&  r?   Úscheduled_triggerrz  Ã  st   € ô #?Ð?OÓ"[ÑÐÜ
˜5Ô
!€CØ
×
#Ñ
#Ð5EÐ
#Ó
[€CÜ‡J‚JÐ(¨S¯V©V¸¿¹ÕAÜ‡H‚HÐ$ S§Y¡Y§^¡^Ð$4°A°c·f±f°XÐ=NÐOÖPrA   c                ó”   € V ^8„  d   QhR\         R\        R\        R\        \        \        RRR7      3,          R\        R	\        R
R/# )r8   r^  r„   r…   r  r  z)Remove all labels from the scheduled job.rï   r:   r  r;   N)re  r  r  r   r‡   r1   r  r)   )r>   s   "r?   r@   r@   Ù  si   € ÷ Oñ OÜ'ðOä
ðOô ðOô ”Tœ6 )Ð2]Ô^Ð^Õ_ð	Oô
 ðOô ðOð 
ñOrA   c                óô  € V'       g   Vf   V'       g   \        R4      hV'       g   Ve   V'       d   \        R4      h\        W4      w  r\        VR7      pVeB   V'       g:   VP                  WR7      P                  P
                  ;'       g    / p/ VCRV/CpM\        W!R7      ;'       g    / pVP                  WVR7      p	\        P                  ! R	V	P                  VP                  R4      R
7       R# )zpUpdate labels on a scheduled Job. Passing --label replaces all existing labels; passing --name alone keeps them.Nr  r  r   r]  r„   r�   )r^  ro   r:   r  r	  )r   rI   r,   r_  r@  ro   rª   Úupdate_scheduled_job_labelsr3   r]   rû   r?  )
r^  r„   r…   r  r:   r  rL   r  ro   rA  s
   &&&&&&    r?   Úscheduled_labelsr~  Ñ  së   € ÷" �T’\¯%ÜØsó
ð 	
÷ 	�Ò!§uÜØzó
ð 	
ô #?Ð?OÓ"[ÑÐÜ
˜5Ô
!€CØÒ§ð ×%Ñ%Ð7GÐ%Ó]×fÑf×mÑm×sÐsÐqsð 	ð 2�NÐ1 F¨DÑ1‰ä" 5Ô4×:Ð:¸ˆØ×3Ñ3Ø)ÀIð 4ó €Mô ‡J‚JÐ M×$4Ñ$4¸6¿:¹:ÀfÓ;M×NrA   z)Schedule UV scripts on HF infrastructure.zBhf jobs scheduled uv run "0 0 * * *" --name daily-script script.pyz<hf jobs scheduled uv run "0 0 * * *" script.py --with pandasc          .      ó$  € V ^8„  d   QhR\         R\        R\        R\        R\        R\
        R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R\        R\         R\"        R\$        R\&        R\(        R\*        RR/# )r8   r1  rf   rg   r2  r3  rh   ri   rm   rn   r„   r…   r`   r‚   rƒ   rk   r†   r  r  r:   r  r  rj   r;   N)r4  r  r  r5  r6  r  r  r#   r%   r  r  r  r"   r$   r  r  r  r  r  r)   r  r  )r>   s   "r?   r@   r@     s   € ÷ h`ñ h`Üðh`äðh`ô ðh`ô ð	h`ô
  ðh`ô ðh`ô ðh`ô 
ðh`ô ðh`ô ðh`ô ðh`ô ðh`ô ðh`ô !ðh`ô ðh`ô  ð!h`ô" ð#h`ô$ *ð%h`ô& ð'h`ô( ð)h`ô* ð+h`ô, ð-h`ð. 
ñ/h`rA   c                ó   € \        VR7      p\        R-/ RVbRVbRVbRVbRVbRVbRVbR	VbR
VbRVbRVbRVbRV	bRV
bRVbRVbRRbRRbRVb ;_uu_ 4       pVP                  '       g   VP                  '       d   \	        R\
         R24      h\        / RV bRVbRVbRVbR\        P                  ! VP                  4      bRRP                  T;'       g    . 4      bRVP                  ;'       g    \        bRVP                  ;'       g    \        P                  P                  bRVP                   bRVP"                  bR	VP$                  bRVP&                  bRVP(                  bRVP*                  bR RP                  R! T;'       g    .  4       4      bR"VbRVP,                  bVP.                  VR#7       V'       d    RRR4       R# VP1                  VP2                  VP                  V VVVVP                   VP                  VP$                  VP&                  VP*                  VP4                  VP                  VP"                  VVVP,                  R$7      pRRR4       \6        P8                  ! R%XP:                  VP<                  P*                  ;'       g    / P?                  R4      R&7       \A        WšXP.                  4      '       gn   VP<                  P*                  ;'       g    / P?                  R4      p\6        PB                  ! R'V R(VPD                  PF                   R)VP:                   R*24       \6        PB                  ! R+VPD                  PF                   R)VP:                   R,24       R#   + '       g   i     EL'; i).r  r   rL   rf   rg   r�   rh   ri   rj   rm   r‚   rn   rƒ   rk   r„   r…   r`   r:   rl   Nrq   r†   zjScheduled Jobs do not support network groups: remove 'network_group'/'network_aliases' from the script's [z] table to schedule it.r1  r2  r3  r  r   rR   rK   ro   r  c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irÓ   rŒ   r"  s   & r?   r˜   Ú#scheduled_uv_run.<locals>.<genexpr>K  r#  r&  r  r$  )rf   rg   r1  r2  r3  r�   rj   rh   rm   rn   ro   rK   ri   rk   r  r  r:   r:  r	  r;  r<  rC   r,  r=  r>  rw   )$r,   r¶   rl   rq   r   r4   ræ   r=  r¼   rg   rh   r   ri   r   rÍ   r®   rj   rk   rm   rn   rp   ro   r:   rr   Úcreate_scheduled_uv_jobrf   rK   r3   r]   rû   r@  r?  r@  rY   rü   r„   )r1  rf   rg   r2  r3  rh   ri   rm   rn   r„   r…   r`   r‚   rƒ   rk   r†   r  r  r:   r  r  rj   rL   rµ   rö   rD  s   &&&&&&&&&&&&&&&&&&&&&&    r?   Úscheduled_uv_runr„  þ  sè  € ôB ˜5Ô
!€CÜ	ò 
Ùð
áð
ñ  ð
ñ ð	
ñ
 ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ "ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ  ð!
ñ$ ð%
ñ& ð'
ñ( ÷)
ñ 
ð* 
Ø××Ð 6×#9×#9Ð#9ÜðÜ(˜\Ð)@ðBóð ô 	ðØ˜Hðà˜7ðð ˜{ðð ˜&ð	ð
 œŸ
š
 6×#5Ñ#5Ó6ðð ˜Ÿ™ § ¨"Ó-ðð ˜Ÿ™×9Ð9Ô)9ðð ˜&Ÿ-™-×FÐF¬;×+@Ñ+@×+FÑ+Fðð ˜&Ÿ-™-ðð ˜6Ÿ>™>ðð �v—z‘zðð ˜6Ÿ>™>ðð ˜6×.Ñ.ðð ˜&Ÿ-™-ðð ˜#Ÿ(™(Ñ"F¸¿¸À2¸Ó"FÓFðð  $Ð%6ð!ð" ˜V×-Ñ-ð#ð& ×*Ñ*Øõ+	
÷. Ø÷g
ñ 
ðh ×)Ñ)Ø—=‘=Ø×*Ñ*ØØØ#ØØ—=‘=Ø—,‘,Ø—
‘
Ø—N‘NØ—=‘=Ø—N‘NØ—=‘=Ø—N‘NØØ/Ø×&Ñ&ð# *ó 
ˆ÷i
ôN ‡J‚JÐ&¨3¯6©6¸¿¹×9LÑ9L×9RÐ9RÐPR×8WÑ8WÐX^Ó8_Õ`Ü˜d¨6×+=Ñ+=×>Ò>Ø—\‘\×(Ñ(×.Ð.¨B×3Ñ3°FÓ;ˆ	Ü�ŠØ(¨¨ð 4)Ø),¯©¯©Ð(8¸¸#¿&¹&¸ÐA\ð^ô	
ô ‡H‚HÐ.¨s¯y©y¯~©~Ð.>¸aÀÇÁ¸xÐG]Ð^Ö_÷]
÷ 
ð 
ús9   Á$M<Á<AM<ÃM<Ã2M<ÄA?M<Æ5M<ÇM<ÇBM<Í<N	c                ó°   € V ^8„  d   QhR\         \        \        3,          R\         \        \        3,          R,          R\         \        \        3,          /# )r8   rî   ro   Nr;   )rs   r<   r   )r>   s   "r?   r@   r@   t  sA   € ÷ 	"ñ 	"œœS¤#˜X�ð 	"´4¼¼S¸µ>ÀDÕ3Hð 	"ÌTÔRUÔWZÐRZÍ^ñ 	"rA   c               óP   € T;'       g    / P                  R4      pVf   V # RV/V C# )zûPromote the `name` label to a top-level `name` field for display.

The `name` is kept inside `labels` too (the dataclasses and API payloads are unchanged); this
only makes it a first-class column/field in command outputs. No-op when there is no name.
r„   )r?  )rî   ro   r„   s   &$ r?   rì  rì  t  s4   € ð �LˆL�b×Ñ˜fÓ%€DØ‚|ØˆØ�DÐ!˜DÐ!Ð!rA   c                ó�   € V ^8„  d   QhR\         R,          R\        \         ,          R,          R\        \         ,          R\        /# )r8   r„   Nr…   rr   r;   )r<   rM   r   r‡   )r>   s   "r?   r@   r@   €  s;   € ÷ ñ œS 4�Zð ´´Sµ	¸DÕ0@ð ÌzÔZ]Íð Ôhlñ rA   c                óÄ   € V RJ;'       gV    RV9   ;'       gI    \         ;QJ d&    R T;'       g    .  4       F  '       g   K   R# 	  R# ! R T;'       g    .  4       4      # )zlWhether the Job was named on purpose: via `--name`, a `name=` label, or the script's `[tool.hf-jobs]` table.Nzlabels.namec              3   óX   "  € T F   qP                  R ^4      ^ ,          R8H  x € K"  	  R# 5i)rË   r„   N)rF   )r—   rî   s   & r?   r˜   Ú%_has_explicit_name.<locals>.<genexpr>…  s#   é € ÐG¹;°4�z‰z˜#˜qÓ! !Õ$¨Ö.»;ùs   ‚(*TF)Úany)r„   r…   rr   s   &&&r?   r@  r@  €  sq   € ð 	�DÐ÷ 	Hð 	HØ˜KÑ'÷	Hð 	Hç‹3ÑG¸5¿;¸;ÀB¸;ÓG�3Œ3ðò ðð ÑG¸5¿;¸;ÀB¸;ÓGÓGðrA   r„   c                óž   € V ^8„  d   QhR\         \        ,          R,          R\        R,          R\        \        \        3,          R,          /# )r8   ro   Nr„   r;   )rM   r<   rs   )r>   s   "r?   r@   r@   ‰  s?   € ÷ ñ œd¤3�i¨$Õ.ð ¼¸t½ð ÌtÔTWÔY\ÐT\Í~Ð`dÕOdñ rA   c               óÆ   € V '       g   Vf   R# / pT ;'       g    .  F&  pRV9   d   VP                  R^4      MVR3w  rEWRV&   K(  	  Ve   RV9   d   \        R4      hWR&   V# )züParse label key-value pairs from CLI arguments.

Args:
    labels: List of label strings in KEY=VALUE format. If KEY only, then VALUE is set to empty string.

Returns:
    Dictionary mapping label keys to values, or None if no labels or name provided.
NrË   r¢   r„   z4--name and --label name=... cannot both be provided.)rF   r   )ro   r„   r²   Ú	label_varrŠ   r®   s   &$    r?   rª   rª   ‰  sv   € ÷ �d’lÙØ!#€JØ—\�\˜r’\ˆ	Ø03°yÔ0@�Y—_‘_ S¨!Ô,ÀyÐRTÀo‰
ˆØ�3‹ñ "ð ÒØ�ZÔÜÐQÓRÐRØ!�6ÑØÐrA   c                ó”   € V ^8„  d   QhR\         \         \        \        ,          ,          ,          R\         \        ,          R\        /# )r8   rà   ry  r;   )rM   r<   rM  )r>   s   "r?   r@   r@   Ÿ  s2   € ÷ ñ ”Dœœc¤C�i�Õ)ð ´D¼µIð Ä#ñ rA   c           
     óL  € \        . V OVN5!   Uu. uF  p\        R V 4       4      NK  	  pp\        \        P                  ! 4       P                  \        V4      ^,          4      p\        V4      \        V4      ,           V8”  d„   VP                  \        V4      4      pW5;;,          ^,          uu&   \        V4      \        V4      ,           V8:  g   Kp  V\        V4      ,
          \        V4      ,
          W5,          ,           W5&   K£  R\        V4      ,          P                  ! V!  p. pVP                  VP                  ! V!  4       TP                  VP                  ! V Uu. uF  pRV,          NK  	  up!  4       V  F~  p	\        W“4       U
Uu. uFE  w  r«\        \        V
4      4      V8”  d   \        V
4      RV^,
           R,           M
\        V
4      NKG  	  pp
pVP                  VP                  ! V!  4       K€  	  RP                  V4      # u upi u upi u upp
i )zy
Inspired by:

- stackoverflow.com/a/8356620/593036
- stackoverflow.com/questions/9535954/printing-lists-as-tabular-data
c              3   óJ   "  € T F  p\        \        V4      4      x € K  	  R # 5irÓ   )rÔ   r<   )r—   Úxs   & r?   r˜   Ú_tabulate.<locals>.<genexpr>¦  s   é € Ð/©3 a”cœ#˜a›&—k�k«3ùs   ‚!#z{{:{}}} Ú-Nz...r×   )rk  rÚ   ÚshutilÚget_terminal_sizeÚcolumnsrÔ   Úsumrã   r>   r\   r<   r¼   )rà   ry  ÚcolÚ
col_widthsÚterminal_widthÚcol_to_minimizeÚ
row_formatrâ   Úwrm  r’  Ú	col_widthÚrow_format_argss   &&           r?   rƒ  rƒ  Ÿ  sÂ  € ô <?Ð;NÀÐ;NÀgÔ;NÓOÑ;N°C”#Ñ/©3Ó/Ö/Ñ;N€JÐOÜœ×1Ò1Ó3×;Ñ;¼SÀ»\ÈBÕ=NÓO€NÜ
ˆg‹,œ˜Z›Õ
(¨>Ô
9Ø$×*Ñ*¬3¨z«?Ó;ˆØ×#¨Õ)Ó#Üˆw‹<œ#˜j›/Õ)¨^Ö;Ø*8¼3¸z»?Õ*JÌSÐQXË\Õ*YÐ\fÕ\wÕ*wˆJÓ'Øœs 7›|Õ+×3Ò3°ZÑ@€JØ€EØ	‡L�L�×"Ò" GÑ,Ô-Ø	‡L�L�×"Ò"±jÓ$A±j° S¨1§W W±jÑ$AÑBÔCÛˆô !$ CÔ 4ô
á 4‘�ô 03´3°q³6«{¸YÔ/FŒC�‹F�?�Y •]Ð# eÖ+ÌCÐPQËFÒRÙ 4ð 	ñ 
ð 	�‰�Z×&Ò&¨Ñ8Ö9ñ ð �9‰9�UÓÐùò# Pùò %Bùó
s   ‘HÅ&HÆAH r¬  c                ó†   € V ^8„  d   QhR\         \        ,          R\        R\        \        ,          3,          R\        RR/# )r8   ÚqueueÚfunc.Úkwargsr;   N)r   r¬  r   r   rs   )r>   s   "r?   r@   r@   ½  s<   € ÷ ñ ¤U¬1¥Xð ´X¸cÄ8ÌAÅ;Ð>NÕ5Oð ÔY]ð Ðbfñ rA   c                 óF   € V! R/ VB  F  pV P                  V4       K  	  R # )Nrw   )Úput)r¢  r£  r¤  r]   s   &&& r?   Ú_write_generator_to_queuer§  ½  s   € Ù‘.˜”.ˆØ�	‰	�&Öó !rA   c          	      óÌ   € V ^8„  d   QhR\         P                  P                  R\        R\        \
        ,          3,          R\        \        ,          R\        \
        ,          /# )r8   r€  r£  .rz  r;   )r  r€  r�  r   r   r¬  rM   rs   )r>   s   "r?   r@   r@   Â  sR   € ÷ ñ Ü
×
Ñ
×
)Ñ
)ðä
�3œ¤�Ð#Õ
$ðô ”d•ð	ô
 Œa…[ñrA   c          	   #  ó®  "  € \        4       pV Uu. uF  q@P                  \        W1V34      NK  	  pp   VP                  RR7      x € K  u upi   \         dZ    \
        ;QJ d    R T 4       F  '       d   K   RM	  RM! R T 4       4      '       d   TP                  4       '       d    M K}   K€  i ; i  \         d     Mi ; i T Uu. uF  qfP                  RR7      NK  	  Mu upi  pR#   \        P                   d     R# i ; i   T Uu. uF  qfP                  RR7      NK  	  Mu upi  pi   \        P                   d     i i ; i; i5i)a#  
Takes a function that returns an iterable of items, and run it in parallel using threads to return the flattened iterable of items as they arrive.

This is inspired by those three `map()` variants, and is the mix of all three:

* `imap()`: like `map()` but returns an iterable instead of a list of results
* `imap_unordered()`: like `imap()` but the output is sorted by time of arrival
* `flatmap()`: like `map()` but given a function which returns a list, `flatmap()` returns the flattened list that is the concatenation of all the output lists
Tgš™™™™™©?)rk   c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5irÓ   )Úready)r—   Úasync_results   & r?   r˜   Ú%iflatmap_unordered.<locals>.<genexpr>Ø  s   é € ÐNÁ°×)Ñ)×+Ð+Ãùs   ‚FN)
r   Úapply_asyncr§  r?  r   r�  ÚemptyÚKeyboardInterruptr  rû  )r€  r£  rz  r¢  r¤  Úasync_resultsr¬  s   &&$    r?   r…  r…  Â  s0  é € ô “g€EÙfqÓrÑfqÐ\b×%Ñ%Ô&?À%ÈvÐAVÖWÑfq€MÐrðØðØ—i‘i¨�iÓ-Ô-ùò	 søô
 ô ß“3ÑNÁÓN—3—3’3ÑNÁÓN×NÒNÐSX×S^ÑS^×S`ÒS`Ùò TaÒNðûô ô Ùðúð	Ù@MÓNÁ°×Ñ dÐÖ+ÂùÖNøÜ×+Ñ+ô 	Úð	ûð	Ù@MÓNÁ°×Ñ dÐÖ+ÂùÕNøÜ×+Ñ+ô 	Ùð	ÿsß   ‚E‘ A±E´B8 ¶A Á
B8 ÁEÁB5Á'B5Á;B5ÂB5Â,B8 Â-D Â.B8 Â4B5Â5B8 Â8CÃD ÃCÃD Ã
C2 ÃC)Ã(C2 Ã0EÃ2DÄEÄ
DÄEÄEÄD7ÄD/Ä.D7Ä6EÄ7EÅEÅEÅEÅErw   )zFhf jobs run --name hello-world python:3.12 python -c 'print("Hello!")'z1hf jobs run --detach python:3.12 python script.pyz3hf jobs run -e FOO=foo python:3.12 python script.pyz;hf jobs run --secrets HF_TOKEN python:3.12 python script.pyz^hf jobs run -v hf://org/my-model:/data -v hf://buckets/org/b:/mnt python:3.12 python script.py)NNNNNNNNNFFNFNNNNN)zhf jobs logs <job_id>zhf jobs logs -f <job_id>zhf jobs logs --tail 20 <job_id>z#hf jobs logs -f --tail 100 <job_id>)FNNN)NNN)z
hf jobs lszhf jobs ls -az&hf jobs ls --status running,schedulingzhf jobs ls --name training-v2z+hf jobs ls --label env=prod --label team=mlz%hf jobs ls --all --label hf-sandbox=1)FNNNéd   NNN)NN)zhf jobs wait <job_id>z"hf jobs wait <job_id_1> <job_id_2>z"hf jobs ls -q | xargs hf jobs wait)z*hf jobs labels <job_id> --name training-v2z8hf jobs labels <job_id> --label env=prod --label team=mlzhf jobs labels <job_id> --clear)NNFNN)zhf jobs ssh <job_id>zhf jobs ssh <job_id> --dry-runz)hf jobs ssh <job_id> -i ~/.ssh/id_ed25519)NFNN)z,hf jobs uv run --name my-script my_script.pyz$hf jobs uv run --detach my_script.pyz1hf jobs uv run --flavor a10g-small ml_training.pyz+hf jobs uv run --with transformers train.pyzNhf jobs uv run -v hf://org/my-model:/data -v hf://buckets/org/b:/mnt script.pyz"hf jobs uv run --dry-run script.py)NNNNNNNNNNNFFNFNNNNNNN)NNNNNNNNNNNFNNNN)zhf jobs scheduled lszhf jobs scheduled ls -az'hf jobs scheduled ls --status suspendedz(hf jobs scheduled ls --name daily-scriptz5hf jobs scheduled ls --label env=prod --label team=ml)FNNNNNN)z1hf jobs scheduled labels <id> --name daily-scriptz>hf jobs scheduled labels <id> --label env=prod --label team=mlz%hf jobs scheduled labels <id> --clear)NNNNNNNNNNNNNFNNNNNN)rw   )Ÿr|   r¿  r  Úmultiprocessing.poolr=  r•  r‚  Úcollections.abcr   r   r   r   Ú
contextlibr   Údataclassesr   r   Úenumr	   Úpathlibr
   r¢  r   r   Útypingr   r   r   Úurllib.parser   Úhuggingface_hubr   r   r   r   r   r   Úhuggingface_hub._jobs_apir   r   r   r   Úhuggingface_hub.errorsr   Úhuggingface_hub.utilsr   Ú$huggingface_hub.utils._cache_managerr   Úhuggingface_hub.utils._hf_urisr   Úhuggingface_hub.utils._parsingr    r!   Ú
_cli_utilsr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   Ú
_frameworkr0   r1   Ú_outputr2   r3   Ú_uv_script_headerr4   r5   r6   Ú
get_loggerrx   ÚloggerrI   ra   rc   r¶   r©   r«   r¬   rÛ   ræ   rÙ   r‡  r<   r  r  r  rM   r  r  r  r‡   r  r  r  r  rM  r  r  r  r  r  r  r5  r6  r4  r  r  r  rL  rt  re  r  Újobs_clir  r	  rG  rO  rY  rp  rŽ  rÌ  rä  rí  ró  r  r  r  Úuv_appÚ	add_groupr(  r*  Úscheduled_apprB  rY  r`  rj  rp  ru  rz  r~  Úscheduled_uv_appr„  rì  r@  rª   rƒ  r¬  r§  r…  rw   rA   r?   Ú<module>rÍ     st	  ðñ Gã Û Û Û Û Û ß EÓ EÝ %ß (Ý Ý ß ß *Ñ *Ý !ç T× T÷ó õ ,Ý )Ý =Ý 7ß J÷÷ ÷ ÷ ÷  )ß ,ß IÑ Ið 
×	Ò	˜HÓ	%€õ.õ8)ðX ÷að aó ðað0 ôpó ðpðf%2ØMR÷%2õP"ðð !%ðð )-ðð #÷ð>  €ðÐQSð Ðej÷ õ6xð(  Ð ð ØÙØ'ôðõ€ð Øˆ$…JÙ
Ø=ôðõ€ð Øˆ$…JÙ
ØrÙ˜kÓ*ôðõ€	ð Øˆ…I�ÕÙ
ØØØBôðõ€	ð Øˆ$…JÙ
Øð vôðõ€ð Øˆ$…JÙ
Ø_ôðõ€
ð ØÙ
ØØØBôðõ€	ð ØÙ
ØØOôðõ€	ð Øˆ$…JÙ
Øeôðõ€ð Øˆ$…JÙ
Øð oôðõÐ ð Øˆ…I�ÕÙ
Øð Gôðõ€	ð ØÙ
Øð pôðõ€ð Øˆ$…JÙ
Øð ]ôðõ€ð Øˆ…I�ÕÙ
Øð Nôðõ€ð Øˆ…I�ÕÙ
ØØ4ôðõ€ð Øˆ$…JÙ
ØØØDôðõ€	ð Øˆ4…KÙ
Ø0ôðõ€
ð Øˆ4…KÙ
ØGôðõ€ð ØÙØfôðõ€ð ØÙØ3ôðõ€	ð Øˆ…I�ÕÙØ'ôðõ€ð Øˆ…IÙØ"ôðõ€
ð ØÙØ-ôðõ€ð Øˆ…I�ÕÙØ.ôðõ€	ð ØÙØAôðõÐ ð Øˆ…I�ÕÙ
ØØðeô	ð
õ€ñ Ð?Ô@€õ	*ð 
×ÑØ	Ø.°Ð5òð ó 
öj,ó
ðj,ðZ 
×ÑØ
òð ó ö&xóð&xõR'õð8 
×Ñ�'Ð%=Ð$>ÐÓ?öA'ó @ðA'ðH 
×ÑØòð ó 
öFaó
ðFaðR 
×Ñ�*Ð(:Ð';ÐÓ<ô]ó =ð]ð6 
×Ñ�)Ð'AÐ&BÐÓCöhó Dðhð* 
×Ñ�(Ð&?Ð%@ÐÓAö	+ó Bð	+ð 
×ÑØ
òð ó ö4
óð4
ðn 
×ÑØòð ó öEóðEð: 
×ÑØ	òð ó ö#óð#ñL 
ÐdÔ	e€Ø × Ò �6 Ð Ô %ð ‡�Ø	Ø.°Ð5òð ó ös,óðs,ôl˜s Dô ñ Ð#QÔR€Ø × Ò �= {Ð Ô 3ð ×ÑØ	Ø.°Ð5ØbÐcð ó ö
Wtóð
Wtðt ×ÑØòð ó 	öOmó	ðOmðd ×Ñ�yÐ,LÐ+MÐÓNöxó Oðxð0 ×Ñ�xÐ+JÐ*KÐÓLö	=ó Mð	=ð ×Ñ�yÐ,LÐ+MÐÓNö
Qó Oð
Qð ×Ñ�xÐ+JÐ*KÐÓLö	=ó Mð	=ð ×Ñ�yÐ,LÐ+MÐÓNö
Qó Oð
Qð ×ÑØòð ó öOóðOñB !Ð&QÔRÐ Ø × Ò Ð(¨tÐ Ô 4ð ×ÑØ	Ø.°Ð5àLØFðð ó öh`óðh`õ\	"÷ðÀd÷ õ,ñ6 ˆCƒL€õ÷
rA   