
    &`iW>              0          d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlZd dlmc mZ d dlmZmZ d dlmZm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  d d
l!m"Z"m#Z# d dl$m%Z% 	 	 	 dTde
e&         de'de
e&         dee'e&f         de#f
dZ(de
e&         de
e	e&ef                  fdZ)d Z*d Z+de#de&de"fdZ,de#de&de"fdZ- ej.        d          d             Z/e/0                                 ej1        de&ddd           ej1        d e&ddd!           ej1        d"e&ddd#           ej1        d$e&ddd%           ej1        d&e&ddd'           ej1        d(e&ddd)           ej1        d*e&ddd+           ej1        d,de2d-.           ej1        d/de2d0.           ej1        d1de3d2.           ej1        d3de&d4.           ej1        d5de'dd67          ee ej4        d8d9dej5        :          e%de
e&         de
e&         d;e
e&         d<e
e&         d=e
e&         d>e
e&         d?e
e&         d8ee&         d@e
ee3e2f                  dAe
ee3e2f                  dBe
e3         dCe
e&         dDe'dee'e&f         de
e&         fdE                                                                                                                                                                                                            Z6e/0                                 ej1        de&ddd           ej4        dFe&G          ee e%dHI          de
e&         de&de
e&         dee'e&f         fdJ                                                                        Z7e/0                                 ej1        de&ddd           ej1        d5de'ddK7           ej4        dFe&G          ee e%dHI          de
e&         dDe'de&de
e&         dee'e&f         f
dL                                                                                    Z8e/0                                 ej1        de&ddd           ej4        dFe&G          ee e%dHI          de
e&         de&de
e&         dee'e&f         fdM                                                                        Z9e/0                                 ej1        de&ddd           ej4        dFe&G           ej1        dNdOde'ddP7          ee e%dHI          de
e&         de&dQe'de
e&         dee'e&f         f
dR                                                                                    Z:e/0                                 ej1        de&ddd          ee e%dHI          de
e&         de
e&         dee'e&f         fdS                                                            Z;dS )U    N)list2cmdline)AnyDictOptionalTupleUnion)get_or_create_event_loop
load_class)parse_metadata_jsonparse_resources_json)add_click_logging_optionscf
cli_logger)parse_runtime_env_args)add_common_job_options)redact_url_password)	JobStatusJobSubmissionClient)	PublicAPIFTaddresscreate_cluster_if_neededheadersverifyreturnc                     t          | |t          |          |          }|                                }t          j        dt          |                     |S )Nr   r   zJob submission server address)r   _handle_headersget_addressr   labeled_valuer   )r   r   r   r   clientclient_addresss         q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/modules/job/cli.py_get_sdk_clientr#      si     ! ((	  F ''))N')<^)L)L   M    c                     |  dt           j        v rt           j        d         } | J	 t          j        |           S # t          $ r(}t          d                    | |                    d }~ww xY wd S )NRAY_JOB_HEADERSzbFailed to parse headers into JSON.
                Expected format: {{"KEY": "VALUE"}}, got {}, {})osenvironjsonloads	Exception
ValueErrorformat)r   excs     r"   r   r   /   s    ,
::*./	:g&&& 	 	 	CCI6SD D  	 4s   : 
A,#A''A,c                 
   t          j                     t          j        dt          |           z             t          j        |            t          j        dt          |           z             t          j                     d S N-)r   newlinesuccesslensuccess_msgs    r"   _log_big_success_msgr7   ?   ss    sS---...{###sS---...r$   c                 
   t          j                     t          j        dt          |           z             t          j        |            t          j        dt          |           z             t          j                     d S r0   )r   r2   errorr4   r5   s    r"   _log_big_error_msgr:   G   ss    S3{+++,,,[!!!S3{+++,,,r$   r    job_idc                    |                      |          }|j        t          j        k    rt	          d| d           n|j        t          j        k    rt          j        d| d           n|j        t          j        k    r9t          d| d           |j
        t          j        d|j
         d           nDt          j        d| d	|j                    |j
        t          j        d|j
         d           |j        S )
NJob 'z' succeededz' was stoppedz' failedzStatus message: T	no_formatzStatus for job 'z': )get_job_infostatusr   	SUCCEEDEDr7   STOPPEDr   warningFAILEDr:   messageprint)r    r;   infos      r"   _log_job_statusrI   O   s   v&&D{i)))8V8889999		)	)	)868889999		(	(	(36333444<#>>>$OOOO 	DFDDt{DDEEE<#>>>$OOOO;r$   c                    K   |                      |          2 3 d {V }t          |d           6 t          | |          S )N )end)tail_job_logsrG   rI   )r    r;   liness      r"   
_tail_logsrO   a   si      ++F33       ee 4 66***s   1jobc                      dS )z'Submit, stop, delete, or list Ray jobs.N rR   r$   r"   job_cli_grouprS   h   s	     	Dr$   z	--addresszAddress of the Ray cluster to connect to. Can also be specified using the RAY_API_SERVER_ADDRESS environment variable (falls back to RAY_ADDRESS).)typedefaultrequiredhelpz--job-idz*DEPRECATED: Use `--submission-id` instead.z--submission-idzMSubmission ID to specify for the job. If not provided, one will be generated.z--runtime-envz>Path to a local YAML file containing a runtime_env definition.z--runtime-env-jsonz'JSON-serialized runtime_env dictionary.z--working-dirzDirectory containing files that your job will run in. Can be a local directory or a remote URI to a .zip file (S3, GS, HTTP). If specified, this overrides the option in `--runtime-env`.z--metadata-jsonz<JSON-serialized dictionary of metadata to attach to the job.z--entrypoint-num-cpusz|the quantity of CPU cores to reserve for the entrypoint command, separately from any tasks or actors that are launched by it)rV   rT   rW   z--entrypoint-num-gpuszwthe quantity of GPUs to reserve for the entrypoint command, separately from any tasks or actors that are launched by itz--entrypoint-memoryzwthe amount of memory to reserve for the entrypoint command, separately from any tasks or actors that are launched by itz--entrypoint-resourcesza JSON-serialized dictionary mapping resource name to resource quantity describing resources to reserve for the entrypoint command, separately from any tasks or actors that are launched by itz	--no-waitz:If set, will not stream logs and wait for the job to exit.)is_flagrT   rU   rW   
entrypoint)nargsrV   rT   submission_idruntime_envruntime_env_jsonmetadata_jsonworking_direntrypoint_num_cpusentrypoint_num_gpusentrypoint_memoryentrypoint_resourcesno_waitc                    |rt          j        d           |t          |t           t          d          }|t	          |t           t          d          }|p|}t
          j        t          j        v r? t          t          j        t
          j                           | |||||||||	|
||           t          | d||          }t          |||	          }|                    t          |          |||||	|
|
          }t          d| d           t          j        d          5  t          j        d           t          j                    5  t          j        t          j        d|                      ddd           n# 1 swxY w Y   t          j        d           t          j                    5  t          j        t          j        d|                      ddd           n# 1 swxY w Y   t          j        d           t          j                    5  t          j        t          j        d|                      ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          j                     t          j                     |                                }|st-          |          dk    rkt          j        d           t/                                          t3          ||                    }|t4          j        k    rt9          j        d           dS dS t          j        d| d           dS dS )a  Submits a job to be run on the cluster.

    By default (if --no-wait is not set), streams logs to stdout until the job finishes.
    If the job succeeded, exits with 0. If it failed, exits with 1.

    Example:
        `ray job submit -- python my_script.py --arg=val`
    zB--job-id option is deprecated. Please use --submission-id instead.Nzentrypoint-resources)command_argzmetadata-json)r   r;   r\   r]   r^   r_   r`   rY   ra   rb   rc   rd   re   T)r   r   r   )r]   r^   r`   )rY   r\   r]   metadatara   rb   rc   rd   r=   z' submitted successfullyz
Next stepszQuery the logs of the job:zray job logs zQuery the status of the job:zray job status zRequest the job to be stopped:zray job stop r   z:Tailing logs until the job exits (disable with --no-wait):   z7Tailing logs is not enabled for job sdk client version z<. Please upgrade Ray to the latest version for this feature.)r   rD   r   r   r   ray_constantsRAY_JOB_SUBMIT_HOOKr'   r(   r
   r#   r   
submit_jobr   r7   grouprG   indentedboldr2   flushget_versionintr	   run_until_completerO   r   rE   sysexit)r   r;   r\   r]   r^   r_   r`   rY   ra   rb   rc   rd   re   r   r   r    final_runtime_envsdk_version
job_statuss                      r"   submitry   n   s   |  
P	
 	
 	
 '3 *b>T 
  
  
  +:r
 
 
 "+VM(BJ66A
2:m?@AA '#-'#! 3 3/!5	
 	
 	
 	
  $  F /)  
 
++#%//+1  	 	F AAAABBB		,	'	' @ @5666 "" 	@ 	@RW%=V%=%=>>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	7888 "" 	B 	BRW%?v%?%?@@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	9::: "" 	@ 	@RW%=V%=%=>>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @  $$&&K {aL   233FF66** J Y--- .- $$ $ $     s~   &(I+*F8I+F	I+F	*I+6*G, I+,G0	0I+3G0	4*I+*II+I	I+I	I++I/2I/zjob-id)rT   stable)	stabilityc                 J    t          | ||          }t          ||           dS )z`Queries for the current status of a job.

    Example:
        `ray job status <my_job_id>`
    r   N)r#   rI   r   r;   r   r   r    s        r"   rA   rA   H  s.    4 WgfEEEFFF#####r$   z*If set, will not wait for the job to exit.c                    t          | ||          }t          j        d| d           |                    |           |rdS t          j        d| d           	 |                    |          }|t
          j        t
          j        t
          j        hv rt          ||           dS t          j        d|            t          j        d	           x)
zMAttempts to stop a job.

    Example:
        `ray job stop <my_job_id>`
    r   zAttempting to stop job ''NzWaiting for job 'z#' to exit (disable with --no-wait):Tz Job has not exited yet. Status: ri   )r#   r   rG   stop_jobget_job_statusr   rC   rB   rE   rI   timesleep)r   re   r;   r   r   r    rA   s          r"   stopr   f  s    D WgfEEEF9999:::
OOF 
OOOO	
 	
 	
&&v..i')<i>NOOOFF+++EHHHIIIJqMMMr$   c                     t          | ||          }|                    |           t          j        d| d           dS )a  Deletes a stopped job and its associated data from memory.

    Only supported for jobs that are already in a terminal state.
    Fails with exit code 1 if the job is not already stopped.
    Does not delete job logs from disk.
    Submitting a job with the same submission ID as a previously
    deleted job is not supported and may lead to unexpected behavior.

    Example:
        ray job delete <my_job_id>
    r   r=   z' deleted successfullyN)r#   
delete_jobr   rG   r}   s        r"   deleter     sP    @ WgfEEEF
f;V;;;<<<<<r$   z-fz--followz)If set, follow the logs (like `tail -f`).followc                 f   t          | ||          }|                                }|r^t          |          dk    r1t                                          t          ||                     dS t          j        d| d           dS t          j        |	                    |          dd           dS )	zMGets the logs of a job.

    Example:
        `ray job logs <my_job_id>`
    r   r   z<Tailing logs is not enabled for the Jobs SDK client version z8. Please upgrade Ray to latest version for this feature.rK   T)rL   r?   N)
r#   rq   rr   r	   rs   rO   r   rD   rG   get_job_logs)r   r;   r   r   r   r    rw   s          r"   logsr     s    F WgfEEEF$$&&K N{a$&&99*VV:T:TUUUUU$$ $ $     	,,V44"MMMMMMr$   c                     t          | ||          }t          j        t          j        |                                          d           dS )zWLists all running jobs and their information.

    Example:
        `ray job list`
    r   Tr>   N)r#   r   rG   pprintpformat	list_jobs)r   r   r   r    s       r"   listr     sL    ( WgfEEEF V^F$4$4$6$6774HHHHHHr$   )FNT)<r)   r'   r   rt   r   
subprocessr   typingr   r   r   r   r   clickray._private.ray_constants_privaterj   ray._common.utilsr	   r
   ray._private.utilsr   r   "ray.autoscaler._private.cli_loggerr   r   r   #ray.dashboard.modules.dashboard_sdkr   #ray.dashboard.modules.job.cli_utilsr   ray.dashboard.modules.job.utilsr   ray.job_submissionr   r   ray.util.annotationsr   strboolr#   r   r7   r:   rI   rO   rm   rS   commandoptionfloatrr   argumentUNPROCESSEDry   rA   r   r   r   r   rR   r$   r"   <module>r      s    				  



  # # # # # # 4 4 4 4 4 4 4 4 4 4 4 4 4 4  2 2 2 2 2 2 2 2 2               Y X X X X X X X X X F F F F F F F F F F F F ? ? ? ? ? ? = = = = = = = = * * * * * *
 &+!#	 c]" c] $)	
    &Xc] xS#X/G         /      $+0 +# +) + + + + U	 	 	
 		]	 	 	 	
6   		2	 	 	 		I   		2   		F
 
 
 		G   	
B	   	
B	   	
	   	
B	   		E   BE<MNNN
rc]rSMr C=r #	r
 smr C=r #r c
r "%U
"34r "%U
"34r  }r #3-r r $)r c]r r r  ON        
 
  	 	 	 	 Jrj 		]	 	 	 s###
X$c]$$ c]$ $)	$ $ $    $#	 	 $ 		]	 	 	 		5   s###
Xc]  c]	
 $)      $# 	 	 ,B 		]	 	 	 s###
X=c]== c]= $)	= = =    $#	 	 =, 		]	 	 	 s###		4   
XNc]NN N c]	N
 $)N N N     $#	 	 .N< 		]	 	 	 
X	I(3- 	I(3- 	ItSyAQ 	I 	I 	I   	 	 	I 	I 	Ir$   