o
    0 i                     @   s  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eZdd eD ZG dd deZG dd deZ G dd deZ!deeee"e#f   dee" de"fddZ$G dd deZ%G dd deZ&G dd deZ'G dd  d eZ(dee"e"f fd!d"Z)G d#d$ d$eZ*G d%d& d&eZ+G d'd( d(eZ,G d)d* d*eZ-G d+d, d,eZ.G d-d. d.eZ/G d/d0 d0eZ0G d1d2 d2eZ1dS )3a  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                 C   s   g | ]
}|j d kr|j qS )z	zero-a10g)value).0item r   d/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/huggingface_hub/cli/jobs.py
<listcomp>4       r   c                   @      e Zd ZedefddZdS )JobsCommandsparserc                    sx   | j ddd  jdd} j fddd t| 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Zjobs_parserr   r   <lambda>>       z2JobsCommands.register_subcommand.<locals>.<lambda>func)
add_parseradd_subparsersset_defaultsInspectCommandregister_subcommandLogsCommand	PsCommand
RunCommandCancelCommand	UvCommandScheduledJobsCommands)r   Zjobs_subparsersr   r%   r   r.   8   s   





z JobsCommands.register_subcommandN__name__
__module____qualname__staticmethodr   r.   r   r   r   r   r   7       r   c                   @   >   e Zd ZededdfddZdeddfddZdd	d
ZdS )r1   r   returnNc                 C   s   | j ddd}|jdtdd |jddd	d
d |jddd	dd |jdtdd |jdtdd |jdtddt dd |jdtdd |jddddd |jdtdd |jdtd d |jd!d"d#d$ |jtd% d S )&Nrunz	Run a Jobr   imageThe Docker image to use.typer   -e--envappend/Set environment variables. E.g. --env ENV=valueactionr   -s	--secretsvSet 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.--flavorTFlavor for the hardware, as in HF Spaces. Defaults to `cpu-basic`. Possible values: , .	--timeoutVMax 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.--namespaceVThe namespace where the Job will be created. Defaults to the current user's namespace.--tokenIA User Access Token generated from https://huggingface.co/settings/tokenscommand...The command to run.nargsr   r(   )r*   add_argumentstrjoinSUGGESTED_FLAVORSr,   r1   r   
run_parserr   r   r   r.   K   sN   	zRunCommand.register_subcommandr$   c                 C   s   |j | _ |j| _i | _|jr | jtt|j tj	
 d |jp$g D ]}| jt|tj	
 d q%i | _t }|jrM| jtt|j |d |jpQg D ]}| jt||d qR|j| _|j| _|j| _|j| _|j| _d S Nenviron)r>   r\   envenv_fileupdater   r   	read_textosri   copysecrets_get_extended_environsecrets_fileflavortimeoutdetach	namespacetokenselfr$   Z	env_valueextended_environsecretr   r   r   __init__x   s$   $zRunCommand.__init__c              	   C   s|   t | jd}|j| j| j| j| j| j| j| j	d}t
d|j  t
d|j  | jr.d S |j|jdD ]}t
| q5d S )Nrw   )r>   r\   rj   rp   rs   rt   rv   Job started with ID: 	View at: job_id)r   rw   Zrun_jobr>   r\   rj   rp   rs   rt   rv   printidurlru   fetch_job_logsry   apijoblogr   r   r   r=      s"   

zRunCommand.runr<   N	r6   r7   r8   r9   r   r.   r   r|   r=   r   r   r   r   r1   J   s
    ,r1   c                   @   r;   )r/   r   r<   Nc                 C   N   | j ddd}|jdtdd |jdtdd |jd	td
d |jtd d S )NZlogszFetch the logs of a Jobr   r   Job IDr@   rX   QThe namespace where the job is running. Defaults to the current user's namespace.rZ   r[   r(   )r*   ra   rb   r,   r/   re   r   r   r   r.         zLogsCommand.register_subcommandr$   c                 C      |j | _ |j| _|j| _d S r    r   rv   rw   ry   r$   r   r   r   r|         zLogsCommand.__init__c                 C   s0   t | jd}|j| j| jdD ]}t| qd S Nr}   r   rv   )r   rw   r   r   rv   r   )ry   r   r   r   r   r   r=      s   
zLogsCommand.runr   r   r   r   r   r   r/      
    r/   rowsheadersr<   c           	      C   s&  dd t g | |R  D }tt jt|d }t|t| |krW|t|}||  d  < t|t| |krM|t| t| ||  ||< t|t| |ks$dt| j| }g }|	|j|  |	|jdd |D   | D ]}dd t ||D }|	|j|  qyd
|S )	z
    Inspired by:

    - stackoverflow.com/a/8356620/593036
    - stackoverflow.com/questions/9535954/printing-lists-as-tabular-data
    c                 S   s   g | ]}t d d |D qS )c                 s   s    | ]	}t t|V  qd S r    lenrb   )r   xr   r   r   	<genexpr>   s    z'_tabulate.<locals>.<listcomp>.<genexpr>)max)r   colr   r   r   r          z_tabulate.<locals>.<listcomp>      z{{:{}}} c                 S   s   g | ]}d | qS )-r   )r   wr   r   r   r          c                 S   s@   g | ]\}}t t||krt|d |d  d nt|qS )N   r]   r   )r   r   Z	col_widthr   r   r   r      s    .
)zipr   rn   get_terminal_sizecolumnsr   sumindexformatrD   rc   )	r   r   Z
col_widthsterminal_widthZcol_to_minimizeZ
row_formatlinesrowZrow_format_argsr   r   r   	_tabulate   s$    
r   c                   @   `   e Zd ZededdfddZdeddfddZdd	d
Zde	e
e
f defddZdd ZdS )r0   r   r<   Nc                 C   t   | j ddd}|jddddd |jd	td
d |jdtdd |jdddg dd |jdtdd |jtd d S )Npsz	List Jobsr   -a--allrW   z*Show all Jobs (default shows just running)rF   rX   UThe namespace from where it lists the jobs. Defaults to the current user's namespace.r@   rZ   r[   -f--filterrD   >Filter output based on conditions provided (format: key=value)rG   defaultr   --format%Format output using a custom templater(   )r*   ra   rb   r,   r0   re   r   r   r   r.      <   zPsCommand.register_subcommandr$   c                 C   n   |j | _ |j| _|j| _|j| _i | _|jD ]}d|v r,|dd\}}|| j| < qtd| d qd S N=r   z)Warning: Ignoring invalid filter format 'z'. Use key=value format.	allrv   rw   r   filtersfiltersplitlowerr   ry   r$   fkeyr   r   r   r   r|         
zPsCommand.__init__c              
   C   s  zt | jd}|j| jd}g d}g }|D ]M}|jr|jjnd}| js)|dvr)q|j}|jp0d}|j	p5g }	|	r=d
|	nd}
|jrH|jdnd}||| |
d	}| |sYq||||
||g q|sd
}| jr{dd
dd | j D  }td|  W dS | || W dS  tjy } ztd|  W Y d}~dS d}~w tttfy } ztd|  W Y d}~dS d}~w ty } ztdt|j d|  W Y d}~dS d}~ww )z
        Fetch and display job information for the current user.
        Uses Docker-style filtering with -f/--filter flag and key=value pairs.
        r}   rv   )zJOB IDIMAGE/SPACECOMMANDCREATEDZSTATUSUNKNOWN)RUNNINGZUPDATINGN/A %Y-%m-%d %H:%M:%S)r   r>   statusr\     matching filters: rQ   c                 S      g | ]\}}| d | qS r   r   r   kvr   r   r   r   D  r   z!PsCommand.run.<locals>.<listcomp>zNo jobs foundNzError fetching jobs data: zError processing jobs data: Unexpected error - : )r   rw   Z	list_jobsrv   r   Zstager   r   docker_imager\   rc   
created_atstrftimer   _matches_filtersrD   r   itemsr   _print_outputrequestsRequestExceptionKeyError
ValueError	TypeError	ExceptionrA   r6   )ry   r   r   table_headersr   r   r   r   image_or_spacer\   command_strr   job_propertiesfilters_msger   r   r   r=     sN   


 (zPsCommand.runr   c                 C      | j  D ]<\}}||vr dS d|v sd|v r4|dddd}td| d|| tjs3 dS q| ||  vrA dS qdS )	z+Check if job matches all specified filters.F*?.*rR   ^$Tr   r   replaceresearch
IGNORECASEr   ry   r   r   patternZregex_patternr   r   r   r   S     zPsCommand._matches_filtersc           	      C   x   | j r2| j }|D ]'}|}tg dD ]\}}d| d}||v r*||t|| }qt| qdS tt||d dS ),Print output according to the chosen format.)r   r>   r\   createdr   {{.}}r   Nr   	enumerater   rb   r   r   	ry   r   r   templater   lineifieldplaceholderr   r   r   r   f  s"   
	zPsCommand._print_outputr   r6   r7   r8   r9   r   r.   r   r|   r=   r   rb   boolr   r   r   r   r   r   r0      s    "
Hr0   c                   @   r;   )r-   r   r<   Nc                 C   N   | j ddd}|jdtdd |jdtdd |jd	d
dd |jtd d S )Ninspectz0Display detailed information on one or more Jobsr   rX   r   r@   rZ   r[   job_idsr]   zThe jobs to inspectr_   r(   )r*   ra   rb   r,   r-   re   r   r   r   r.   }     z"InspectCommand.register_subcommandr$   c                 C   r   r    )rv   rw   r  r   r   r   r   r|     r   zInspectCommand.__init__c                    D   t jd  fddjD }ttjdd |D dtd d S )Nr}   c                       g | ]
} j |jd qS )r   )Zinspect_jobrv   )r   r   r   ry   r   r   r     r   z&InspectCommand.run.<locals>.<listcomp>c                 S      g | ]}t |qS r   r   )r   r   r   r   r   r     r      indentr   )r   rw   r  r   jsondumpsrb   )ry   r   r   r  r   r=     s   "zInspectCommand.runr   r   r   r   r   r   r-   |  r   r-   c                   @   r;   )r2   r   r<   Nc                 C   r   )NcancelzCancel a Jobr   r   r   r@   rX   r   rZ   r[   r(   )r*   ra   rb   r,   r2   re   r   r   r   r.     r   z!CancelCommand.register_subcommandr$   c                 C   r   r    r   r   r   r   r   r|     r   zCancelCommand.__init__c                 C   "   t | jd}|j| j| jd d S r   )r   rw   Z
cancel_jobr   rv   ry   r   r   r   r   r=        zCancelCommand.runr   r   r   r   r   r   r2     r   r2   c                   @   8   e Zd ZdZedd ZdeddfddZdd	d
ZdS )r3   z.Run UV scripts on Hugging Face infrastructure.c                 C   sB  | j ddd}|jdddd}|j dd	d}|jd
dd |jdddg d |jdtdd |jddd |jdtddt dd |jddddd |jdddd d |jd!td"d |jd#td$d |jd%td&d |jd'd(d)d*d |jd+td,d |jd-td.d |jd/dd0d1d2 |jd3d4td5d |jtd6 d7S )8Register UV run subcommand.uvzERun UV scripts (Python with inline dependencies) on HF infrastructurer   
uv_commandUV commandsTdestr   requiredr=   8Run a UV script (local file or URL) on HF infrastructurescript$UV script to run (local file or URL)script_argsr]   Arguments for the scriptr`   r   r   --image.Use a custom Docker image with `uv` installed.r@   --repoCRepository name for the script (creates ephemeral if not specified)rO   rP   rQ   rR   rB   rC   rD   Environment variablesrF   rH   rI   rJ   rK   rL   rM   rN   rS    Max duration (e.g., 30s, 5m, 1h)rU   rV   rW   Run in backgroundrX   rY   rZ   HF token--with%Run with the given packages installedwith_rG   r   r&  -p--python5The Python interpreter to use for the run environmentr(   N)r*   r+   ra   rb   rc   rd   r,   r3   r   Z	uv_parserZ
subparsersrf   r   r   r   r.     s^   	zUvCommand.register_subcommandr$   r<   Nc                 C   s
  |j | _ |j| _|j| _|j| _|j| _i | _|jr,| jt	t
|j tj d |jp0g D ]}| jt	|tj d q1i | _t }|jrY| jt	t
|j |d |jp]g D ]}| jt	||d q^|j| _|j| _|j| _|j| _|j| _|j| _dS z-Initialize the command with parsed arguments.rh   N)r)  r+  r8  dependenciespythonr>   rj   rk   rl   r   r   rm   rn   ri   ro   rp   rq   rr   rs   rt   ru   rv   rw   repo_reporx   r   r   r   r|     s,   $zUvCommand.__init__c                 C   s   t t j t| jd}|j| j| j| j| j	| j
| j| j| j| j| j| jd}td|j  td|j  | jr<dS |j|jdD ]}t| qCdS )zExecute UV command.r}   )r)  r+  r?  r@  r>   rj   rp   rs   rt   rv   rB  r~   r   Nr   )r   set_verbosityINFOr   rw   Z
run_uv_jobr)  r+  r?  r@  r>   rj   rp   rs   rt   rv   rB  r   r   r   ru   r   r   r   r   r   r=     s,   
zUvCommand.runr   	r6   r7   r8   __doc__r9   r.   r   r|   r=   r   r   r   r   r3     s    
9r3   c                  C   s$   t j } t  }d ur|| d< | S )NZHF_TOKEN)rn   ri   ro   r   )rz   rw   r   r   r   rq   #  s   
rq   c                   @   r   )r4   r   c                    sx   | j ddd}|jdd |j fddd t  t  t  t  t  t	  t
  d S )NZ	scheduledz,Create and manage scheduled Jobs on the Hub.r   z.huggingface.co scheduled jobs related commandsc                    r   r    r!   r#   Zscheduled_jobs_subparsersr   r   r&   3  r'   z;ScheduledJobsCommands.register_subcommand.<locals>.<lambda>r(   )r*   r+   r,   ScheduledRunCommandr.   ScheduledPsCommandScheduledInspectCommandScheduledDeleteCommandScheduledSuspendCommandScheduledResumeCommandScheduledUvCommand)r   Zscheduled_jobs_parserr   rG  r   r.   +  s   





z)ScheduledJobsCommands.register_subcommandNr5   r   r   r   r   r4   *  r:   r4   c                   @   r;   )rH  r   r<   Nc                 C   s  | j ddd}|jdtdd |jdtdd |jd	d
dd d |jdd
dd d |jddddd |jddddd |jdtdd |jdtdd |jdtddt dd |jdtd d |jd!td"d |jd#td$d |jd%d&d'd( |jtd) d S )*Nr=   zSchedule a Jobr   scheduleWOne of annually, yearly, monthly, weekly, daily, hourly, or a CRON schedule expression.r@   r>   r?   	--suspendrW   !Suspend (pause) the scheduled JobrG   r   r   --concurrency8Allow multiple instances of this Job to run concurrentlyrB   rC   rD   rE   rF   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rX   z`The namespace where the scheduled Job will be created. Defaults to the current user's namespace.rZ   r[   r\   r]   r^   r_   r(   )r*   ra   rb   rc   rd   r,   rH  re   r   r   r   r.   @  sd   	z'ScheduledRunCommand.register_subcommandr$   c                 C   s   |j | _ |j| _|j| _|j| _|j| _i | _|jr,| jtt	|j
 tj d |jp0g D ]}| jt|tj d q1i | _t }|jrY| jtt	|j
 |d |jp]g D ]}| jt||d q^|j| _|j| _|j| _|j| _d S rg   )rO  r>   r\   suspendconcurrencyrj   rk   rl   r   r   rm   rn   ri   ro   rp   rq   rr   rs   rt   rv   rw   rx   r   r   r   r|   x  s(   $zScheduledRunCommand.__init__c                 C   sR   t | jd}|j| j| j| j| j| j| j| j	| j
| j| jd
}td|j  d S )Nr}   )
r>   r\   rO  rV  rW  rj   rp   rs   rt   rv   Scheduled Job created with ID: )r   rw   Zcreate_scheduled_jobr>   r\   rO  rV  rW  rj   rp   rs   rt   rv   r   r   )ry   r   scheduled_jobr   r   r   r=     s   zScheduledRunCommand.runr   r   r   r   r   r   rH  ?  s
    7rH  c                   @   r   )rI  r   r<   Nc                 C   r   )Nr   zList scheduled Jobsr   r   r   rW   z1Show all scheduled Jobs (default hides suspended)rF   rX   r   r@   rZ   r[   r   r   rD   r   r   r   r   r(   )r*   ra   rb   r,   rI  re   r   r   r   r.     r   z&ScheduledPsCommand.register_subcommandr$   c                 C   r   r   r   r   r   r   r   r|     r   zScheduledPsCommand.__init__c              
   C   s  zt | jd}|j| jd}g d}g }|D ]\}|j}| js!|r!q|j}|j}|jj	p,d}	|jj
p2g }
|
r:d|
nd}|jjrH|jjjdnd}|jjrU|jjdnd}||	t||d}| |sfq||||	||||g q|sd}| jrd	d
dd | j D  }td|  W dS | || W dS  tjy } ztd|  W Y d}~dS d}~w tttfy } ztd|  W Y d}~dS d}~w ty } ztdt|j d|  W Y d}~dS d}~ww )z
        Fetch and display scheduked job information for the current user.
        Uses Docker-style filtering with -f/--filter flag and key=value pairs.
        r}   r   )IDZSCHEDULEr   r   zLAST RUNzNEXT RUNZSUSPENDr   r   r   )r   r>   rV  r\   r   r   rQ   c                 S   r   r   r   r   r   r   r   r   *  r   z*ScheduledPsCommand.run.<locals>.<listcomp>zNo scheduled jobs foundNz$Error fetching scheduled jobs data: z&Error processing scheduled jobs data: r   r   ) r   rw   Zlist_scheduled_jobsrv   rV  r   r   rO  Zjob_specr   r\   rc   r   Zlast_jobatr   next_job_run_atrb   r   rD   r   r   r   r   r   r   r   r   r   r   rA   r6   )ry   r   scheduled_jobsr   r   rY  rV  scheduled_job_idrO  r   r\   r   last_job_atr\  r   r   r   r   r   r   r=     sp   

 (zScheduledPsCommand.runr   c                 C   r   )	z5Check if scheduled job matches all specified filters.Fr   r   r   rR   r   r   Tr   r   r   r   r   r   9  r   z#ScheduledPsCommand._matches_filtersc           	      C   r   )r   )r   rO  r>   r\   r_  r\  rV  r  r  r  Nr  r  r   r   r   r   L  s&   
z ScheduledPsCommand._print_outputr   r  r   r   r   r   rI    s    "
frI  c                   @   r;   )rJ  r   r<   Nc                 C   r  )Nr  z:Display detailed information on one or more scheduled Jobsr   rX   SThe namespace where the scheduled job is. Defaults to the current user's namespace.r@   rZ   r[   scheduled_job_idsr]   zThe scheduled jobs to inspectr_   r(   )r*   ra   rb   r,   rJ  re   r   r   r   r.   e  r  z+ScheduledInspectCommand.register_subcommandr$   c                 C   r   r    )rv   rw   ra  r   r   r   r   r|   s  r   z ScheduledInspectCommand.__init__c                    r  )Nr}   c                    r  )r^  rv   )Zinspect_scheduled_jobrv   )r   r^  r  r   r   r   z  s    z/ScheduledInspectCommand.run.<locals>.<listcomp>c                 S   r  r   r   )r   rY  r   r   r   r   ~  r   r  r  )r   rw   ra  r   r  r  rb   )ry   r]  r   r  r   r=   x  s
   "zScheduledInspectCommand.runr   r   r   r   r   r   rJ  d  r   rJ  c                   @   r;   )rK  r   r<   Nc                 C   r   )NdeletezDelete a scheduled Jobr   r^  Scheduled Job IDr@   rX   r`  rZ   r[   r(   )r*   ra   rb   r,   rK  re   r   r   r   r.     r   z*ScheduledDeleteCommand.register_subcommandr$   c                 C   r   r    r^  rv   rw   r   r   r   r   r|     r   zScheduledDeleteCommand.__init__c                 C   r  Nr}   rb  )r   rw   Zdelete_scheduled_jobr^  rv   r  r   r   r   r=     r  zScheduledDeleteCommand.runr   r   r   r   r   r   rK    r   rK  c                   @   r;   )rL  r   r<   Nc                 C   r   )NrV  zSuspend (pause) a scheduled Jobr   r^  rd  r@   rX   r`  rZ   r[   r(   )r*   ra   rb   r,   rL  re   r   r   r   r.     r   z+ScheduledSuspendCommand.register_subcommandr$   c                 C   r   r    re  r   r   r   r   r|     r   z ScheduledSuspendCommand.__init__c                 C   r  rf  )r   rw   Zsuspend_scheduled_jobr^  rv   r  r   r   r   r=     r  zScheduledSuspendCommand.runr   r   r   r   r   r   rL    r   rL  c                   @   r;   )rM  r   r<   Nc                 C   r   )Nresumez Resume (unpause) a scheduled Jobr   r^  rd  r@   rX   r`  rZ   r[   r(   )r*   ra   rb   r,   rM  re   r   r   r   r.     r   z*ScheduledResumeCommand.register_subcommandr$   c                 C   r   r    re  r   r   r   r   r|     r   zScheduledResumeCommand.__init__c                 C   r  rf  )r   rw   Zresume_scheduled_jobr^  rv   r  r   r   r   r=     r  zScheduledResumeCommand.runr   r   r   r   r   r   rM    r   rM  c                   @   r   )rN  z3Schedule UV scripts on Hugging Face infrastructure.c                 C   sv  | j ddd}|jdddd}|j dd	d}|jd
tdd |jddd |jdddg d |jddddd |jddddd |jdtdd |jddd |jdtdd t d!d |jd"d#d$d%d& |jd'd(d$d)d& |jd*td+d |jd,td-d |jd.td/d |jd0d1dd2d& |jd3td4d |jd5td6d |jd7d$d8d9d: |jd;d<td=d |jtd> dS )?r!  r"  zJSchedule UV scripts (Python with inline dependencies) on HF infrastructurer   r#  r$  Tr%  r=   r(  rO  rP  r@   r)  r*  r+  r]   r,  r-  rQ  rW   rR  NrS  rT  rU  r.  r/  r0  r1  rO   rP   rQ   rR   rB   rC   rD   r2  rF   rH   rI   rJ   rK   rL   rM   rN   rS   r3  rU   rV   r4  rX   rY   rZ   r5  r6  r7  r8  r9  r:  r;  r<  r(   )r*   r+   ra   rb   rc   rd   r,   rN  r=  r   r   r   r.     s   	z&ScheduledUvCommand.register_subcommandr$   r<   Nc                 C   s"  |j | _ |j| _|j| _|j| _|j| _|j| _|j| _|j| _i | _	|j
r8| j	tt|j
 tj d |j	p<g D ]}| j	t|tj d q=i | _t }|jre| jtt|j |d |jpig D ]}| jt||d qj|j| _|j| _|j| _|j| _|j| _|j| _dS r>  )rO  r)  r+  rV  rW  r8  r?  r@  r>   rj   rk   rl   r   r   rm   rn   ri   ro   rp   rq   rr   rs   rt   ru   rv   rw   rA  rB  rx   r   r   r   r|     s2   $zScheduledUvCommand.__init__c                 C   sn   t t j t| jd}|j| j| j| j| j	| j
| j| j| j| j| j| j| j| j| jd}td|j  dS )zSchedule UV command.r}   )r)  r+  rO  rV  rW  r?  r@  r>   rj   rp   rs   rt   rv   rB  rX  N)r   rC  rD  r   rw   Zcreate_scheduled_uv_jobr)  r+  rO  rV  rW  r?  r@  r>   rj   rp   rs   rt   rv   rB  r   r   )ry   r   r   r   r   r   r=   6  s&   zScheduledUvCommand.runr   rE  r   r   r   r   rN    s    
JrN  )2rF  r  rn   r   argparser   r   dataclassesr   pathlibr   typingr   r   r	   r
   r   Zhuggingface_hubr   r   r   Zhuggingface_hub.utilsr   Zhuggingface_hub.utils._dotenvr   r   r   Z
get_loggerr6   loggerrd   r   r1   r/   rb   intr   r0   r-   r2   r3   rq   r4   rH  rI  rJ  rK  rL  rM  rN  r   r   r   r   <module>   sD   
Y* %ta E