§
    «˜ºh"T  ã                   ó  — d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZmZmZmZ ddlZddlmZmZmZ ddlmZ dd	lmZ d
dlmZ  ej        e¦  «        Zd„ eD ¦   «         Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z!deeee"e#f                           dee"         de"fd„Z$ G d„ de¦  «        Z% G d„ de¦  «        Z& G d„ de¦  «        Z' G d„ de¦  «        Z(dee"e"f         fd„Z)dS ) a•  Contains commands to interact with jobs on the Hugging Face Hub.

Usage:
    # run a job
    hf jobs run <image> <command>

    # List running or completed jobs
    hf jobs ps [-a] [-f key=value] [--format TEMPLATE]

    # Stream logs from a job
    hf jobs logs <job-id>

    # Inspect detailed information about a job
    hf jobs inspect <job-id>

    # Cancel a running job
    hf jobs cancel <job-id>
é    N)Ú	NamespaceÚ_SubParsersAction©Úasdict)ÚPath)ÚDictÚListÚOptionalÚUnion)ÚHfApiÚSpaceHardwareÚ	get_token)Úlogging)Úload_dotenvé   )ÚBaseHuggingfaceCLICommandc                 ó2   — g | ]}|j         d k    ¯|j         ‘ŒS )z	zero-a10g)Úvalue)Ú.0Úitems     ú`/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/huggingface_hub/cli/jobs.pyú
<listcomp>r   4   s&   € ÐWÐWÐW D¸T¼ZÈ;Ò=VÐ=V�T”ZÐ=VÐ=VÐ=Vó    c                   ó*   — e Zd Zedefd„¦   «         ZdS )ÚJobsCommandsÚparserc                 óÌ  ‡— |                       dd¬¦  «        Š‰                     d¬¦  «        }‰                     ˆfd„¬¦  «         t                               |¦  «         t
                               |¦  «         t                               |¦  «         t                               |¦  «         t                               |¦  «         t                               |¦  «         d S )NÚjobszRun and manage Jobs on the Hub.©Úhelpz$huggingface.co jobs related commandsc                 ó,   •— ‰                      ¦   «         S ©N)Ú
print_help)ÚargsÚjobs_parsers    €r   ú<lambda>z2JobsCommands.register_subcommand.<locals>.<lambda>>   s   ø€ °;×3IÒ3IÑ3KÔ3K€ r   ©Úfunc)
Ú
add_parserÚadd_subparsersÚset_defaultsÚInspectCommandÚregister_subcommandÚLogsCommandÚ	PsCommandÚ
RunCommandÚCancelCommandÚ	UvCommand)r   Újobs_subparsersr%   s     @r   r-   z JobsCommands.register_subcommand8   sÖ   ø€ à×'Ò'¨Ð5VÐ'ÑWÔWˆØ%×4Ò4Ð:`Ð4ÑaÔaˆð 	× Ò Ð&KÐ&KÐ&KÐ&KÐ ÑLÔLÐLõ 	×*Ò*¨?Ñ;Ô;Ð;Ý×'Ò'¨Ñ8Ô8Ð8Ý×%Ò% oÑ6Ô6Ð6Ý×&Ò& Ñ7Ô7Ð7Ý×)Ò)¨/Ñ:Ô:Ð:Ý×%Ò% oÑ6Ô6Ð6Ð6Ð6r   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r-   © r   r   r   r   7   s:   € € € € € Øð7Ð$5ð 7ð 7ð 7ñ „\ð7ð 7ð 7r   r   c                   óF   — e Zd Zededdfd„¦   «         Zdeddfd„Zdd„ZdS )	r0   r   ÚreturnNc                 óþ  — |                       dd¬¦  «        }|                     dt          d¬¦  «         |                     ddd	d
¬¦  «         |                     ddd	d¬¦  «         |                     dt          d¬¦  «         |                     dt          d¬¦  «         |                     dt          dd                     t          ¦  «        › d�¬¦  «         |                     dt          d¬¦  «         |                     dddd¬¦  «         |                     dt          d¬¦  «         |                     dt          d ¬¦  «         |                     d!d"d#¬$¦  «         |                     t          ¬%¦  «         d S )&NÚrunz	Run a Jobr   ÚimagezThe Docker image to use.©Útyper    ú-eú--envÚappendz/Set environment variables. E.g. --env ENV=value©Úactionr    ú-sú	--secretsúvSet secret environment variables. E.g. --secrets SECRET=value or `--secrets HF_TOKEN` to pass your Hugging Face token.ú
--env-fileú(Read in a file of environment variables.ú--secrets-fileú/Read in a file of secret environment variables.ú--flavorúTFlavor for the hardware, as in HF Spaces. Defaults to `cpu-basic`. Possible values: ú, ú.ú	--timeoutzVMax duration: int/float with s (seconds, default), m (minutes), h (hours) or d (days).ú-dú--detachÚ
store_truez3Run the Job in the background and print the Job ID.ú--namespaceúVThe namespace where the Job will be created. Defaults to the current user's namespace.ú--tokenúIA User Access Token generated from https://huggingface.co/settings/tokensÚcommandú...zThe command to run.©Únargsr    r'   )r)   Úadd_argumentÚstrÚjoinÚSUGGESTED_FLAVORSr+   r0   ©r   Ú
run_parsers     r   r-   zRunCommand.register_subcommandJ   sò  € à×&Ò& u°;Ð&Ñ?Ô?ˆ
Ø×Ò ­cÐ8RÐÑSÔSÐSØ×Ò  g°hÐEvÐÑwÔwÐwØ×ÒØØØðKð 	 ñ 	
ô 	
ð 	
ð 	×Ò µ3Ð=gÐÑhÔhÐhØ×ÒÐ 0µsÐArÐÑsÔsÐsØ×ÒØÝð HÐhl×hqÒhqõ  sDñ  iEô  iEð  Hð  Hð  Hð 	 ñ 	
ô 	
ð 	
ð
 	×ÒØÝØið 	 ñ 	
ô 	
ð 	
ð
 	×ÒØØØØFð	 	 ñ 	
ô 	
ð 	
ð 	×ÒØÝØið 	 ñ 	
ô 	
ð 	
ð
 	×ÒØÝØ\ð 	 ñ 	
ô 	
ð 	
ð
 	×Ò 	°Ð=RÐÑSÔSÐSØ×Ò¥ZÐÑ0Ô0Ð0Ð0Ð0r   r$   c                 óz  — |j         | _         |j        | _        i | _        |j        ri| j                             t          t          |j        ¦  «                             ¦   «         t          j	         
                    ¦   «         ¬¦  «        ¦  «         |j        pg D ]G}| j                             t          |t          j	         
                    ¦   «         ¬¦  «        ¦  «         ŒHi | _        t          ¦   «         }|j        rM| j                             t          t          |j        ¦  «                             ¦   «         |¬¦  «        ¦  «         |j        pg D ]+}| j                             t          ||¬¦  «        ¦  «         Œ,|j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d S )N©Úenviron)r=   rX   ÚenvÚenv_fileÚupdater   r   Ú	read_textÚosrd   ÚcopyÚsecretsÚ_get_extended_environÚsecrets_fileÚflavorÚtimeoutÚdetachÚ	namespaceÚtoken©Úselfr$   Ú	env_valueÚextended_environÚsecrets        r   Ú__init__zRunCommand.__init__w   s~  € Øœ*ˆŒ
Ø"&¤,ˆŒØ-/ˆŒØŒ=ð 	eØŒH�OŠO�K­¨T¬]Ñ(;Ô(;×(EÒ(EÑ(GÔ(GÕQSÔQ[×Q`ÒQ`ÑQbÔQbÐcÑcÔcÑdÔdÐdØœ˜ Rð 	Oð 	OˆIØŒH�OŠO�K¨	½2¼:¿?º?Ñ;LÔ;LÐMÑMÔMÑNÔNÐNÐNØ13ˆŒÝ0Ñ2Ô2ÐØÔð 	lØŒL×Ò¥­D°Ô1BÑ,CÔ,C×,MÒ,MÑ,OÔ,OÐYiÐ jÑ jÔ jÑkÔkÐkØ”lÐ( bð 	Oð 	OˆFØŒL×Ò¥¨FÐ<LÐ MÑ MÔ MÑNÔNÐNÐNØ/3¬{ˆŒØ&*¤lˆŒØ œKˆŒØ(,¬ˆŒØ$(¤JˆŒ
ˆ
ˆ
r   c           	      óv  — t          | j        ¬¦  «        }|                     | j        | j        | j        | j        | j        | j        | j	        ¬¦  «        }t          d|j        › �¦  «         t          d|j        › �¦  «         | j        rd S |                     |j        ¬¦  «        D ]}t          |¦  «         Œd S )N©rr   )r=   rX   re   rk   rn   ro   rq   úJob started with ID: ú	View at: ©Újob_id)r   rr   Úrun_jobr=   rX   re   rk   rn   ro   rq   ÚprintÚidÚurlrp   Úfetch_job_logs©rt   ÚapiÚjobÚlogs       r   r<   zRunCommand.run‹   sÍ   € Ý˜$œ*Ð%Ñ%Ô%ˆØ�kŠkØ”*Ø”LØ”Ø”LØ”;Ø”LØ”nð ñ 
ô 
ˆõ 	Ð. c¤fÐ.Ð.Ñ/Ô/Ð/ÝÐ#˜#œ'Ð#Ð#Ñ$Ô$Ð$àŒ;ð 	ØˆFð ×%Ò%¨S¬VÐ%Ñ4Ô4ð 	ð 	ˆCÝ�#‰JŒJˆJˆJð	ð 	r   ©r:   N©	r4   r5   r6   r7   r   r-   r   rx   r<   r8   r   r   r0   r0   I   sx   € € € € € Øð*1Ð$5ð *1¸$ð *1ð *1ð *1ñ „\ð*1ðX/˜Yð /¨4ð /ð /ð /ð /ð(ð ð ð ð ð r   r0   c                   óF   — e Zd Zededdfd„¦   «         Zdeddfd„Zdd„ZdS )	r.   r   r:   Nc                 ó  — |                       dd¬¦  «        }|                     dt          d¬¦  «         |                     dt          d¬¦  «         |                     d	t          d
¬¦  «         |                     t          ¬¦  «         d S )NÚlogszFetch the logs of a Jobr   r~   úJob IDr>   rT   úQThe namespace where the job is running. Defaults to the current user's namespace.rV   rW   r'   )r)   r\   r]   r+   r.   r`   s     r   r-   zLogsCommand.register_subcommand£   s¢   € à×&Ò& vÐ4MÐ&ÑNÔNˆ
Ø×Ò ­s¸ÐÑBÔBÐBØ×ÒØÝØdð 	 ñ 	
ô 	
ð 	
ð
 	×ÒØ�CÐ&qð 	 ñ 	
ô 	
ð 	
ð 	×Ò¥[ÐÑ1Ô1Ð1Ð1Ð1r   r$   c                 óN   — |j         | _         |j        | _        |j        | _        d S r"   ©r~   rq   rr   ©rt   r$   s     r   rx   zLogsCommand.__init__±   s!   € Øœ;ˆŒØ(,¬ˆŒØ$(¤JˆŒ
ˆ
ˆ
r   c                 ó–   — t          | j        ¬¦  «        }|                     | j        | j        ¬¦  «        D ]}t          |¦  «         Œd S ©Nrz   ©r~   rq   )r   rr   rƒ   r~   rq   r€   )rt   r…   r‡   s      r   r<   zLogsCommand.run¶   sQ   € Ý˜$œ*Ð%Ñ%Ô%ˆØ×%Ò%¨T¬[ÀDÄNÐ%ÑSÔSð 	ð 	ˆCÝ�#‰JŒJˆJˆJð	ð 	r   rˆ   r‰   r8   r   r   r.   r.   ¢   sw   € € € € € Øð2Ð$5ð 2¸$ð 2ð 2ð 2ñ „\ð2ð/˜Yð /¨4ð /ð /ð /ð /ð
ð ð ð ð ð r   r.   ÚrowsÚheadersr:   c                 ó’  — d„ t          g | ¢|‘R Ž D ¦   «         }t          t          j        ¦   «         j        t          |¦  «        dz  ¦  «        }t          |¦  «        t          |¦  «        z   |k    r¦|                     t          |¦  «        ¦  «        }||xx         dz  cc<   t          |¦  «        t          |¦  «        z   |k    r.|t          |¦  «        z
  t          |¦  «        z
  ||         z   ||<   t          |¦  «        t          |¦  «        z   |k    °¦ dt          |¦  «        z  j        |Ž }g }| 	                     |j        |Ž ¦  «         | 	                     |j        d„ |D ¦   «         Ž ¦  «         | D ]9}d„ t          ||¦  «        D ¦   «         }| 	                     |j        |Ž ¦  «         Œ:d 
                    |¦  «        S )z‰
    Inspired by:

    - stackoverflow.com/a/8356620/593036
    - stackoverflow.com/questions/9535954/printing-lists-as-tabular-data
    c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c              3   óN   K  — | ] }t          t          |¦  «        ¦  «        V — Œ!d S r"   ©Úlenr]   )r   Úxs     r   ú	<genexpr>z'_tabulate.<locals>.<listcomp>.<genexpr>Ã   s.   è è € Ð/Ð/ a•c�#˜a™&œ&‘k”kÐ/Ð/Ð/Ð/Ð/Ð/r   )Úmax)r   Úcols     r   r   z_tabulate.<locals>.<listcomp>Ã   s/   € ÐOÐOÐO°C•#Ð/Ð/¨3Ð/Ñ/Ô/Ñ/Ô/ÐOÐOÐOr   é   é   z{{:{}}} c                 ó   — g | ]}d |z  ‘ŒS )ú-r8   )r   Úws     r   r   z_tabulate.<locals>.<listcomp>Í   s   € Ð$AÐ$AÐ$A° S¨1¡WÐ$AÐ$AÐ$Ar   c                 ó¬   — g | ]Q\  }}t          t          |¦  «        ¦  «        |k    rt          |¦  «        d |dz
  …         dz   nt          |¦  «        ‘ŒRS )Né   rY   rš   )r   rœ   Ú	col_widths      r   r   z_tabulate.<locals>.<listcomp>Ï   sf   € ð 
ð 
ð 
á��9õ 03µ3°q±6´6©{¬{¸YÒ/FÐ/F�C�‰FŒF�?�Y ‘]�?Ô# eÑ+Ð+ÍCÐPQÉFÌFð
ð 
ð 
r   ú
)Úziprž   ri   Úget_terminal_sizeÚcolumnsr›   ÚsumÚindexÚformatrB   r^   )	r•   r–   Ú
col_widthsÚterminal_widthÚcol_to_minimizeÚ
row_formatÚlinesÚrowÚrow_format_argss	            r   Ú	_tabulater¶   ¼   sÞ  € ð PÐO½3Ð;NÀÐ;NÀgÐ;NÐ;NÐ;NÐOÑOÔO€JÝ�Ô-Ñ/Ô/Ô7½¸W¹¼ÈÑ9JÑKÔK€NÝ
ˆg‰,Œ,�˜Z™œÑ
(¨>Ò
9Ð
9Ø$×*Ò*­3¨z©?¬?Ñ;Ô;ˆØ�?Ð#Ð#Ô#¨Ñ)Ð#Ð#Ñ#Ýˆw‰<Œ<�#˜j™/œ/Ñ)¨^Ò;Ð;Ø*8½3¸z¹?¼?Ñ*JÍSÐQXÉ\Ì\Ñ*YÐ\fÐgvÔ\wÑ*wˆJ�Ñ'õ	 ˆg‰,Œ,�˜Z™œÑ
(¨>Ò
9Ð
9ð
 4�*�s 7™|œ|Ñ+Ô3°ZÐ@€JØ€EØ	‡L‚LÐ"�Ô" GÐ,Ñ-Ô-Ð-Ø	‡L‚LÐ"�Ô"Ð$AÐ$A°jÐ$AÑ$AÔ$AÐBÑCÔCÐCØð :ð :ˆð
ð 
å # C¨Ñ 4Ô 4ð
ñ 
ô 
ˆð 	�ŠÐ&�ZÔ&¨Ð8Ñ9Ô9Ð9Ð9Ø�9Š9�UÑÔÐr   c                   ól   — e Zd Zededdfd„¦   «         Zdeddfd„Zdd„Zde	e
e
f         defd	„Zd
„ ZdS )r/   r   r:   Nc                 ó~  — |                       dd¬¦  «        }|                     dddd¬¦  «         |                     d	t          d
¬¦  «         |                     dt          d¬¦  «         |                     dddg d¬¦  «         |                     dt          d¬¦  «         |                     t          ¬¦  «         d S )NÚpsz	List Jobsr   z-az--allrS   z*Show all Jobs (default shows just running)rC   rT   zUThe namespace from where it lists the jobs. Defaults to the current user's namespace.r>   rV   rW   z-fz--filterrB   z>Filter output based on conditions provided (format: key=value))rD   Údefaultr    z--formatz%Format output using a custom templater'   )r)   r\   r]   r+   r/   r`   s     r   r-   zPsCommand.register_subcommandØ   s  € à×&Ò& t°+Ð&Ñ>Ô>ˆ
Ø×ÒØØØØ=ð	 	 ñ 	
ô 	
ð 	
ð 	×ÒØÝØhð 	 ñ 	
ô 	
ð 	
ð
 	×ÒØÝØ\ð 	 ñ 	
ô 	
ð 	
ð 	×ÒØØØØØQð 	 ñ 	
ô 	
ð 	
ð 	×ÒØÝØ8ð 	 ñ 	
ô 	
ð 	
ð
 	×Ò¥YÐÑ/Ô/Ð/Ð/Ð/r   r$   c                 ó"  — |j         | _         |j        | _        |j        | _        |j        | _        i | _        |j        D ]O}d|v r6|                     dd¦  «        \  }}|| j        |                     ¦   «         <   Œ<t          d|› d�¦  «         ŒPd S )Nú=r   z)Warning: Ignoring invalid filter format 'z'. Use key=value format.)	Úallrq   rr   r®   ÚfiltersÚfilterÚsplitÚlowerr€   )rt   r$   ÚfÚkeyr   s        r   rx   zPsCommand.__init__û   s    € ØœˆŒØ(,¬ˆŒØ$(¤JˆŒ
Ø%)¤[ˆŒØ')ˆŒð ”ð 	_ð 	_ˆAØ�aˆxˆxØŸWšW S¨!™_œ_‘
��UØ,1�”˜SŸYšY™[œ[Ñ)Ð)åÐ]À!Ð]Ð]Ð]Ñ^Ô^Ð^Ð^ð	_ð 	_r   c                 óÚ  — 	 t          | j        ¬¦  «        }|                     | j        ¬¦  «        }g d¢}g }|D ]§}|j        r|j        j        nd}| j        s|dvrŒ#|j        }|j        pd}|j	        pg }	|	rd 
                    |	¦  «        nd}
|j        pd}|||                     ¦   «         |
dœ}|                      |¦  «        sŒ�|                     |||
||g¦  «         Œ¨|sVd	}| j        r9d
d 
                    d„ | j                             ¦   «         D ¦   «         ¦  «        › �}t#          d|› �¦  «         dS |                      ||¦  «         dS # t&          j        $ r}t#          d|› �¦  «         Y d}~dS d}~wt*          t,          t.          f$ r}t#          d|› �¦  «         Y d}~dS d}~wt0          $ r2}t#          dt3          |¦  «        j        › d|› �¦  «         Y d}~dS d}~ww xY w)z˜
        Fetch and display job information for the current user.
        Uses Docker-style filtering with -f/--filter flag and key=value pairs.
        rz   )rq   )zJOB IDzIMAGE/SPACEÚCOMMANDÚCREATEDÚSTATUSÚUNKNOWN)ÚRUNNINGÚUPDATINGzN/Aú )r�   r=   ÚstatusrX   Ú z matching filters: rN   c                 ó"   — g | ]\  }}|› d |› �‘ŒS )r¼   r8   )r   ÚkÚvs      r   r   z!PsCommand.run.<locals>.<listcomp>C  s)   € ÐBoÐBoÐBoÑRVÐRSÐUVÀaÀ:À:È!À:À:ÐBoÐBoÐBor   zNo jobs foundNzError fetching jobs data: zError processing jobs data: zUnexpected error - z: )r   rr   Ú	list_jobsrq   rÌ   Ústager½   r�   Údocker_imagerX   r^   Ú
created_atrÁ   Ú_matches_filtersrB   r¾   Úitemsr€   Ú_print_outputÚrequestsÚRequestExceptionÚKeyErrorÚ
ValueErrorÚ	TypeErrorÚ	Exceptionr?   r4   )rt   r…   r   Útable_headersr•   r†   rÌ   r~   Úimage_or_spacerX   Úcommand_strrÔ   Újob_propertiesÚfilters_msgÚes                  r   r<   zPsCommand.run
  s§  € ð
A	AÝ˜dœjÐ)Ñ)Ô)ˆCð —=’=¨4¬>�=Ñ:Ô:ˆDð VÐUÐUˆMð ˆDàð "Wð "W�à-0¬ZÐF˜œÔ)Ð)¸Y�ð ”xð  FÐ2IÐ$IÐ$IØð œ�ð "%Ô!1Ð!:°U�ð œ+Ð+¨�Ø3:ÐE˜cŸhšh wÑ/Ô/Ð/À�ð !œ^Ð4¨u�
ð !Ø+Ø$Ÿlšl™nœnØ*ð	"ð "�ð ×,Ò,¨^Ñ<Ô<ð Øð —’˜V ^°[À*ÈfÐUÑVÔVÐVÐVð ð Ø �Ø”<ð sØ"r¸¿	º	ÐBoÐBoÐZ^ÔZf×ZlÒZlÑZnÔZnÐBoÑBoÔBoÑ8pÔ8pÐ"rÐ"r�KåÐ3 kÐ3Ð3Ñ4Ô4Ð4Ø�ð ×Ò˜t ]Ñ3Ô3Ð3Ð3Ð3øåÔ(ð 	4ð 	4ð 	4ÝÐ2¨qÐ2Ð2Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3øøøøÝ�*¥iÐ0ð 	6ð 	6ð 	6ÝÐ4°Ð4Ð4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5øøøøÝð 	Að 	Að 	AÝÐ?­¨Q©¬Ô(8Ð?Ð?¸AÐ?Ð?Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@øøøøð	Aøøøs6   ‚D6E Ä:E ÅG*Å!E9Å9G*ÆF+Æ+G*Æ8'G%Ç%G*rá   c                 ót  — | j                              ¦   «         D ]�\  }}||vr dS d|v sd|v rX|                     dd¦  «                             dd¦  «        }t          j        d|› d�||         t          j        ¦  «        s dS Œl|                     ¦   «         ||                              ¦   «         vr dS ŒždS )	z+Check if job matches all specified filters.FÚ*ú?z.*rO   ú^ú$T)r¾   rÖ   ÚreplaceÚreÚsearchÚ
IGNORECASErÁ   )rt   rá   rÃ   ÚpatternÚregex_patterns        r   rÕ   zPsCommand._matches_filtersR  sÚ   € à œL×.Ò.Ñ0Ô0ð 	ð 	‰LˆC�à˜.Ð(Ð(Ø�u�uð �gˆ~ˆ~ ¨  à '§¢°°TÑ :Ô :× BÒ BÀ3ÈÑ LÔ L�Ý”yÐ!5 ]Ð!5Ð!5Ð!5°~ÀcÔ7JÍBÌMÑZÔZð !Ø ˜5˜5ð!ð —’‘”¨°sÔ(;×(AÒ(AÑ(CÔ(CÐCÐCØ�u�uð Dð ˆtr   c           	      ó"  — | j         ri| j         }|D ]]}|}t          g d¢¦  «        D ]8\  }}d|› d�}||v r)|                     |t          ||         ¦  «        ¦  «        }Œ9t	          |¦  «         Œ^dS t	          t          ||¬¦  «        ¦  «         dS )z,Print output according to the chosen format.)r�   r=   rX   ÚcreatedrÌ   z{{.z}})r–   N)r®   Ú	enumerateré   r]   r€   r¶   )	rt   r•   r–   Útemplater´   ÚlineÚiÚfieldÚplaceholders	            r   r×   zPsCommand._print_outpute  sÑ   € àŒ;ð 	à”{ˆHØð ð �Ø�Ý )Ð*YÐ*YÐ*YÑ ZÔ Zð Fð F‘H�A�uØ"5¨%Ð"5Ð"5Ð"5�KØ" dÐ*Ð*Ø#Ÿ|š|¨K½¸SÀ¼V¹¼ÑEÔE˜øÝ�d‘”��ðð õ ÝØØ#ðñ ô ñô ð ð ð r   rˆ   )r4   r5   r6   r7   r   r-   r   rx   r<   r   r]   ÚboolrÕ   r×   r8   r   r   r/   r/   ×   sÀ   € € € € € Øð 0Ð$5ð  0¸$ð  0ð  0ð  0ñ „\ð 0ðD_˜Yð _¨4ð _ð _ð _ð _ðFAð FAð FAð FAðP¨t°C¸°H¬~ð À$ð ð ð ð ð&ð ð ð ð r   r/   c                   óF   — e Zd Zededdfd„¦   «         Zdeddfd„Zdd„ZdS )	r,   r   r:   Nc                 ó  — |                       dd¬¦  «        }|                     dt          d¬¦  «         |                     dt          d¬¦  «         |                     d	d
d¬¦  «         |                     t          ¬¦  «         d S )NÚinspectz0Display detailed information on one or more Jobsr   rT   rŽ   r>   rV   rW   Újob_idsrY   zThe jobs to inspectrZ   r'   )r)   r\   r]   r+   r,   r`   s     r   r-   z"InspectCommand.register_subcommand|  s£   € à×&Ò& yÐ7iÐ&ÑjÔjˆ
Ø×ÒØÝØdð 	 ñ 	
ô 	
ð 	
ð
 	×ÒØ�CÐ&qð 	 ñ 	
ô 	
ð 	
ð 	×Ò 	°Ð=RÐÑSÔSÐSØ×Ò¥^ÐÑ4Ô4Ð4Ð4Ð4r   r$   c                 óN   — |j         | _         |j        | _        |j        | _        d S r"   )rq   rr   rû   r‘   s     r   rx   zInspectCommand.__init__Š  s!   € Ø(,¬ˆŒØ$(¤JˆŒ
Ø"&¤,ˆŒˆˆr   c                 óÂ   ‡ ‡— t          ‰ j        ¬¦  «        Šˆˆ fd„‰ j        D ¦   «         }t          t	          j        d„ |D ¦   «         dt          ¬¦  «        ¦  «         d S )Nrz   c                 óH   •— g | ]}‰                      |‰j        ¬ ¦  «        ‘ŒS )r”   )Úinspect_jobrq   )r   r~   r…   rt   s     €€r   r   z&InspectCommand.run.<locals>.<listcomp>‘  s+   ø€ ÐdÐdÐdÈV�—’ v¸¼�ÑHÔHÐdÐdÐdr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r8   r   )r   r†   s     r   r   z&InspectCommand.run.<locals>.<listcomp>’  s   € Ð6Ð6Ð6¨#�& ™+œ+Ð6Ð6Ð6r   é   )Úindentrº   )r   rr   rû   r€   ÚjsonÚdumpsr]   )rt   r   r…   s   ` @r   r<   zInspectCommand.run�  sj   øø€ Ý˜$œ*Ð%Ñ%Ô%ˆØdÐdÐdÐdÐdÐW[ÔWcÐdÑdÔdˆÝ�dŒjÐ6Ð6°Ð6Ñ6Ô6¸qÍ#ÐNÑNÔNÑOÔOÐOÐOÐOr   rˆ   r‰   r8   r   r   r,   r,   {  s}   € € € € € Øð5Ð$5ð 5¸$ð 5ð 5ð 5ñ „\ð5ð/˜Yð /¨4ð /ð /ð /ð /ð
Pð Pð Pð Pð Pð Pr   r,   c                   óF   — e Zd Zededdfd„¦   «         Zdeddfd„Zdd„ZdS )	r1   r   r:   Nc                 ó  — |                       dd¬¦  «        }|                     dt          d¬¦  «         |                     dt          d¬¦  «         |                     d	t          d
¬¦  «         |                     t          ¬¦  «         d S )NÚcancelzCancel a Jobr   r~   r�   r>   rT   rŽ   rV   rW   r'   )r)   r\   r]   r+   r1   r`   s     r   r-   z!CancelCommand.register_subcommand–  s¡   € à×&Ò& x°nÐ&ÑEÔEˆ
Ø×Ò ­s¸ÐÑBÔBÐBØ×ÒØÝØdð 	 ñ 	
ô 	
ð 	
ð
 	×ÒØ�CÐ&qð 	 ñ 	
ô 	
ð 	
ð 	×Ò¥]ÐÑ3Ô3Ð3Ð3Ð3r   r$   c                 óN   — |j         | _         |j        | _        |j        | _        d S r"   r�   r‘   s     r   rx   zCancelCommand.__init__¤  s!   € Øœ;ˆŒØœˆŒØ$(¤JˆŒ
ˆ
ˆ
r   c                 ór   — t          | j        ¬¦  «        }|                     | j        | j        ¬¦  «         d S r“   )r   rr   Ú
cancel_jobr~   rq   )rt   r…   s     r   r<   zCancelCommand.run©  s4   € Ý˜$œ*Ð%Ñ%Ô%ˆØ�Š˜dœk°T´^ˆÑDÔDÐDÐDÐDr   rˆ   r‰   r8   r   r   r1   r1   •  s}   € € € € € Øð4Ð$5ð 4¸$ð 4ð 4ð 4ñ „\ð4ð/˜Yð /¨4ð /ð /ð /ð /ð
Eð Eð Eð Eð Eð Er   r1   c                   ó@   — e Zd ZdZed„ ¦   «         Zdeddfd„Zdd„ZdS )	r2   z.Run UV scripts on Hugging Face infrastructure.c                 ó(  — |                       dd¬¦  «        }|                     ddd¬¦  «        }|                      dd	¬¦  «        }|                     d
d¬¦  «         |                     dddg ¬¦  «         |                     dt          d¬¦  «         |                     dd¬¦  «         |                     dt          dd                     t
          ¦  «        › d�¬¦  «         |                     dddd¬¦  «         |                     dddd ¬¦  «         |                     d!t          d"¬¦  «         |                     d#t          d$¬¦  «         |                     d%t          d&¬¦  «         |                     d'd(d)d*¬¦  «         |                     d+t          d,¬¦  «         |                     d-t          d.¬¦  «         |                     d/dd0d1¬2¦  «         |                     d3d4t          d5¬¦  «         |                     t          ¬6¦  «         d7S )8zRegister UV run subcommand.ÚuvzERun UV scripts (Python with inline dependencies) on HF infrastructurer   Ú
uv_commandzUV commandsT)Údestr    Úrequiredr<   z8Run a UV script (local file or URL) on HF infrastructureÚscriptz$UV script to run (local file or URL)Úscript_argsrY   zArguments for the script)r[   r    rº   z--imagez.Use a custom Docker image with `uv` installed.r>   z--repozCRepository name for the script (creates ephemeral if not specified)rL   rM   rN   rO   r@   rA   rB   zEnvironment variablesrC   rE   rF   rG   rH   rI   rJ   rK   rP   z Max duration (e.g., 30s, 5m, 1h)rQ   rR   rS   zRun in backgroundrT   rU   rV   zHF tokenz--withz%Run with the given packages installedÚwith_)rD   r    r  z-pz--pythonz5The Python interpreter to use for the run environmentr'   N)r)   r*   r\   r]   r^   r_   r+   r2   )r   Ú	uv_parserÚ
subparsersra   s       r   r-   zUvCommand.register_subcommand±  s¬  € ð ×%Ò%ØØXð &ñ 
ô 
ˆ	ð
 ×-Ò-°<ÀmÐ^bÐ-ÑcÔcˆ
ð  ×*Ò*ØØKð +ñ 
ô 
ˆ
ð 	×Ò Ð/UÐÑVÔVÐVØ×Ò °UÐA[ÐegÐÑhÔhÐhØ×Ò 	µÐ:jÐÑkÔkÐkØ×ÒØØVð 	 ñ 	
ô 	
ð 	
ð 	×ÒØÝð HÐhl×hqÒhqõ  sDñ  iEô  iEð  Hð  Hð  Hð 	 ñ 	
ô 	
ð 	
ð
 	×Ò  g°hÐE\ÐÑ]Ô]Ð]Ø×ÒØØØðKð 	 ñ 	
ô 	
ð 	
ð 	×Ò µ3Ð=gÐÑhÔhÐhØ×ÒØÝØBð 	 ñ 	
ô 	
ð 	
ð
 	×Ò µ#Ð<^ÐÑ_Ô_Ð_Ø×Ò  j¸ÐL_ÐÑ`Ô`Ð`Ø×ÒØÝØið 	 ñ 	
ô 	
ð 	
ð
 	×Ò 	µ¸*ÐÑEÔEÐEà×Ò °Ð@gÐnuÐÑvÔvÐvØ×ÒØ�*¥3Ð-dð 	 ñ 	
ô 	
ð 	
ð 	×Ò¥YÐÑ/Ô/Ð/Ð/Ð/r   r$   r:   Nc                 óÚ  — |j         | _         |j        | _        |j        | _        |j        | _        |j        | _        i | _        |j        ri| j                             t          t          |j        ¦  «                             ¦   «         t          j                             ¦   «         ¬¦  «        ¦  «         |j        pg D ]G}| j                             t          |t          j                             ¦   «         ¬¦  «        ¦  «         ŒHi | _        t!          ¦   «         }|j        rM| j                             t          t          |j        ¦  «                             ¦   «         |¬¦  «        ¦  «         |j        pg D ]+}| j                             t          ||¬¦  «        ¦  «         Œ,|j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        dS )z-Initialize the command with parsed arguments.rc   N)r  r  r  ÚdependenciesÚpythonr=   re   rf   rg   r   r   rh   ri   rd   rj   rk   rl   rm   rn   ro   rp   rq   rr   ÚrepoÚ_repors   s        r   rx   zUvCommand.__init__ë  s¥  € à”kˆŒØÔ+ˆÔØ œJˆÔØ”kˆŒØ”ZˆŒ
Ø-/ˆŒØŒ=ð 	eØŒH�OŠO�K­¨T¬]Ñ(;Ô(;×(EÒ(EÑ(GÔ(GÕQSÔQ[×Q`ÒQ`ÑQbÔQbÐcÑcÔcÑdÔdÐdØœ˜ Rð 	Oð 	OˆIØŒH�OŠO�K¨	½2¼:¿?º?Ñ;LÔ;LÐMÑMÔMÑNÔNÐNÐNØ13ˆŒÝ0Ñ2Ô2ÐØÔð 	lØŒL×Ò¥­D°Ô1BÑ,CÔ,C×,MÒ,MÑ,OÔ,OÐYiÐ jÑ jÔ jÑkÔkÐkØ”lÐ( bð 	Oð 	OˆFØŒL×Ò¥¨FÐ<LÐ MÑ MÔ MÑNÔNÐNÐNØ/3¬{ˆŒØ&*¤lˆŒØ œKˆŒØ(,¬ˆŒØ$(¤JˆŒ
Ø”YˆŒ
ˆ
ˆ
r   c                 óâ  — t          j        t           j        ¦  «         t          | j        ¬¦  «        }|                     | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        | j        ¬¦  «        }t#          d|j        › �¦  «         t#          d|j        › �¦  «         | j        rdS |                     |j        ¬¦  «        D ]}t#          |¦  «         ŒdS )zExecute UV command.rz   )r  r  r  r  r=   re   rk   rn   ro   rq   r  r{   r|   Nr}   )r   Úset_verbosityÚINFOr   rr   Ú
run_uv_jobr  r  r  r  r=   re   rk   rn   ro   rq   r  r€   r�   r‚   rp   rƒ   r„   s       r   r<   zUvCommand.run  sö   € åÔ�gœlÑ+Ô+Ð+Ý˜$œ*Ð%Ñ%Ô%ˆØ�nŠnØ”;ØÔ(ØÔ*Ø”;Ø”*Ø”Ø”LØ”;Ø”LØ”nØ”*ð ñ 
ô 
ˆõ 	Ð. c¤fÐ.Ð.Ñ/Ô/Ð/ÝÐ#˜#œ'Ð#Ð#Ñ$Ô$Ð$àŒ;ð 	ØˆFð ×%Ò%¨S¬VÐ%Ñ4Ô4ð 	ð 	ˆCÝ�#‰JŒJˆJˆJð	ð 	r   rˆ   )	r4   r5   r6   Ú__doc__r7   r-   r   rx   r<   r8   r   r   r2   r2   ®  sj   € € € € € Ø8Ð8àð70ð 70ñ „\ð70ðr˜Yð ¨4ð ð ð ð ð2ð ð ð ð ð r   r2   c                  ól   — t           j                             ¦   «         } t          ¦   «         x}�|| d<   | S )NÚHF_TOKEN)ri   rd   rj   r   )rv   rr   s     r   rl   rl   "  s4   € Ý”z—’Ñ(Ô(ÐÝ‘”ÐˆÐ)Ø',Ð˜Ñ$ØÐr   )*r  r  ri   rê   Úargparser   r   Údataclassesr   Úpathlibr   Útypingr   r	   r
   r   rØ   Úhuggingface_hubr   r   r   Úhuggingface_hub.utilsr   Úhuggingface_hub.utils._dotenvr   rÍ   r   Ú
get_loggerr4   Úloggerr_   r   r0   r.   r]   Úintr¶   r/   r,   r1   r2   rl   r8   r   r   ú<module>r,     sÕ  ððð ð& €€€Ø 	€	€	€	Ø 	€	€	€	Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø )Ð )Ð )Ð )Ð )Ð )Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð 
ˆÔ	˜HÑ	%Ô	%€àWÐW¨MÐWÑWÔWÐ ð7ð 7ð 7ð 7ð 7Ð,ñ 7ô 7ð 7ð$Vð Vð Vð Vð VÐ*ñ Vô Vð Vðrð ð ð ð Ð+ñ ô ð ð4�D˜˜e C¨ HœoÔ.Ô/ð ¸$¸s¼)ð Èð ð ð ð ð6að að að að aÐ)ñ aô að aðHPð Pð Pð Pð PÐ.ñ Pô Pð Pð4Eð Eð Eð Eð EÐ-ñ Eô Eð Eð2qð qð qð qð qÐ)ñ qô qð qðh˜t C¨ Hœ~ð ð ð ð ð ð r   