
    `j6+                    X   d dl mZ d dlZd dlZd dlZ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  ed          ZdZdZdZg dd	d
g ddd
g ddd
dZddddZddhddhdhdZd9dZd:dZd;dZd<d Zd=d"Zd>d%Zd?d(Zd@d,ZdAdBd3ZdCd6ZdDd7Zed8k    r e  e                      dS )E    )annotationsN)PathzI/data/video-pipeline/HaTramAudio/project/028-Nguoi-Duoc-Goi-Ten-Cuoi-Cungz 028-Nguoi-Duoc-Goi-Ten-Cuoi-Cungzrun-20260722T063856Z-87753fd5Levy)zhttp://192.168.1.104:8022zhttp://192.168.1.104:8025zhttp://192.168.1.104:8028zhttp://192.168.1.104:8031z/v1/footage-render-huyenan/jobs)	base_urls	jobs_path)zhttp://192.168.1.104:8023zhttp://192.168.1.104:8026zhttp://192.168.1.104:8029zhttp://192.168.1.104:8032z/v1/huyenan-render-final/jobs)zhttp://192.168.1.104:8024zhttp://192.168.1.104:8027zhttp://192.168.1.104:8030zhttp://192.168.1.104:8033z!/v1/huyenan-transcode-upload/jobs)footagefinal	transcoder   final_renderr
   ttslayoutintroreturnstrc                     t           j                             t           j        j                                                                      dd          S )N+00:00Z)datetimenowtimezoneutc	isoformatreplace     work/run_remote_job.pyr   r   (   s<      !2!677AACCKKHVYZZZr   pathr   c                   t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                 .                          d          S )Ni   )read)fs   r   <lambda>zsha.<locals>.<lambda>/   s    !&&"9"9 r   r   )hashlibsha256openiterupdate	hexdigest)r   hblockr"   s      @r   shar,   ,   s    A	4 A99993?? 	 	EHHUOOOO	               ;;==s   ,A##A'*A'Nonec                    t          j        t          dz                      d                    } t          t
          t          d                                D ]0\  }}|                     |          |k    rt          d|           1d S )Nz.ownership-lock.jsonutf-8encoding)
project_idrun_idownerzownership mismatch: )
jsonloadsROOT	read_text
PROJECT_IDRUN_IDOWNERitemsgetRuntimeError)lockkeyvalues      r   guardrB   4   s    :t44???QQRRD%/6ERRXXZZ = =
U88C==E!!;c;;<<< "= =r   rA   dictc                   t                       | j                            dd           |                     d| j        z   dz             }|                    dd          5 }t          j        ||dd	
           |                    d           |	                                 t          j        |                                           d d d            n# 1 swxY w Y   t          j        ||            d S )NT)parentsexist_ok.z.tmpwr/   r0   F   )ensure_asciiindent
)rB   parentmkdir	with_namenamer&   r5   dumpwriteflushosfsyncfilenor   )r   rA   tempr"   s       r   atomic_jsonrX   ;   s   	GGGKdT222>>#	/F233D	3	)	) Q	%q9999					
	              
 JtTs   "A(CCCurlc                
   t           j                            | ddi          }t           j                            |d          5 }t	          j        |                                          cd d d            S # 1 swxY w Y   d S )NAcceptapplication/json)headers   timeout)urllibrequestRequesturlopenr5   r6   r!   )rY   rb   responses      r   get_jsonrf   G   s    n$$S8=O2P$QQG					4	4 +z(--//**+ + + + + + + + + + + + + + + + + +s   &A88A<?A<payloadtuple[int, dict]c                l   t           j                            | t          j        |d                              d          dddd          }t           j                            |d	          5 }|j        t          j        |	                                          fcd d d            S # 1 swxY w Y   d S )
NFrJ   r/   r\   )zContent-Typer[   POST)datar]   method<   r_   )
ra   rb   rc   r5   dumpsencoderd   statusr6   r!   )rY   rg   rb   re   s       r   	post_jsonrr   M   s    n$$Ze444;;GDD!3?QRR	 %  G 
				4	4 <
8==?? ; ;;< < < < < < < < < < < < < < < < < <s   /-B))B-0B-object
list[dict]c                0   t          | t                    r1t          |                     d          t                    r	| d         }n't          | t                    r| }nt	          d          t          d |D                       st	          d          |S )Njobsz!unknown list-jobs response schemac              3  @   K   | ]}t          |t                    V  d S )N)
isinstancerC   .0items     r   	<genexpr>z!normalize_jobs.<locals>.<genexpr>_   s,      77$z$%%777777r   zinvalid job item schema)rx   rC   r=   listr>   all)rA   rv   s     r   normalize_jobsr   X   s    % @:eii.?.?#F#F @V}	E4	 	  @>???77$77777 64555Kr   base_urlr   boolc                X   t          | dz             }|                    d          dk    s|                    d          durdS |                    d          }t          |t                    r|rdS t	          t          | |z                       }t          d |D                        S )	Nz/healthrq   ok
h264_nvencTFrunningc              3  D   K   | ]}|                     d           dv V  dS )rq   >   queuedr   Nr=   ry   s     r   r|   z#endpoint_is_idle.<locals>.<genexpr>l   s4      PP4488H%%)>>PPPPPPr   )rf   r=   rx   r}   r   any)r   r   healthr   rv   s        r   endpoint_is_idler   d   s    h*++Fzz(t##vzz,'?'?t'K'Kujj##Ggt$$  u(8i#78899DPP4PPPPPPPr   r^   @8  poolwait_secondsinttimeout_secondsc           
     r   t          j                    |z   }	 | d         D ]]}	 t          || d                   r|c S # t          $ r3}t	          d| dt          |          j         d           Y d }~Vd }~ww xY wt          j                    |k    rt          d          t          j        |           )NTr   r   zprobe base_url=z fail_closed=rS   z'no idle render endpoint before deadline)	time	monotonicr   	Exceptionprinttype__name__TimeoutErrorsleep)r   r   r   deadliner   excs         r   select_idle_endpointr   o   s    ~/1H	![) 	a 	aHa#Hd;.?@@ $#OOO$ a a aSSStCyy?QSS[_`````````a>x''HIII
<   	!s   >
A;)A66A;bindingsdict[str, str]c                    i }|                                  D ]:\  }}|                    d          r |                    d          r|dk    r|||<   ;|st          d          |S )Nsource__sha256source_canon_sha256z(request bindings contain no input hashes)r<   
startswithendswithr>   )r   resultr@   rA   s       r   input_hashesr   }   s}    Fnn&&    
U>>)$$ 	 i)@)@ 	 SLaEaEaF3K GEFFFMr   c                 X   t          j                    } |                     dt          t                               |                     dt
          d           |                     dt
          d           |                                 }t                       t          j	        t          dz  d	z                      d
                    t          |j                 }                    di                               |          dk    rt          d|           fdt           |j                 D             }|rt          d|           t          dz  dz  | dz  }|                                st          d|           t          j	        |                    d
                    }t$          j                            |d                             dd                    }|                    d          dk    sP|                    d          t*          k    s2|t$          j                            t$          j        j                  k    rt          d|           t          |j                 }|d         }t          dz  |j        z  t*          z  }	|	dz  }
|	dz  }|	dz  }|	d z  }t          j	        |
                    d
                    }t          j	        |                    d
                    }t3          |
          }|                    d!          |k    rt          d"          d }|                                }|                                rt          j	        |                    d
                    }|                    d!          |k    s<|                    d#          t6          k    s|                    d          t*          k    rt          d$          |                    d          |j        k    s|                    d          |k    rt          d%          |                    d&          |d'         vrt          d(          |r>|                    d)          r)|d&         }|d)         }t9          d*| d+| d,-           n|rt          d.          t;          |          }t=          ||          st          d/          |                    d0          }t?          |t@                    r'|!                    tA          t                              st          d1          d2t6          t*          |j        d3d4||tA          |
          |tE          |          |t-                      d5}tG          ||           	 tI          ||z   |          \  }}nK# tJ          $ r>}t9          d6| d7tM          |          j'         d,-           t          d8          |d }~ww xY w|                    d)          p|                    d9          }|s#t9          d:| d,-           t          d;          |(                    d<||t-                      d=           tG          ||           t9          d>| d+| d,-           ||z   d?z   tA          |          z   }d }tS          d2|j*        d2z             D ]?}	 tW          |          }nj# tX          j-        j.        t^          f$ rL}t9          d@| dAtM          |          j'         d,-           ta          j1        |j2                   Y d }~vd }~ww xY w|                    d          }||k    s	|dBz  dCk    rt9          d@| dD| d,-           |}t          j	        |                    d
                    }|(                    |t-                      |dE           tG          ||           |dFv r	tG          ||           |(                    |tA          |          t-                      |dGk    o*|                    dHi                               dI          d,u dJ           tG          ||           t9          t          j3        |||                    dHi                               dI          dKd4L          d,-           |dGk    r-|                    dHi                               dI          d,u rdCnd2c S ta          j1        |j2                   At9          t          j3        ||d4dMdN          d,-           dOS )PNstage)choicesz--poll-seconds   )r   defaultz--max-pollsi   scriptzproject-manifest.jsonr/   r0   stepspendingzremote gate is not pending: c                    i | ]Z}                     d i                                |          dk    /|                     d i                                |d          [S )r   	completedr   r   )rz   
dependencymanifests     r   
<dictcomp>zmain.<locals>.<dictcomp>   sj       <<$$((44CC 	HLL"--11*iHHCCCr   z)remote gate dependencies are incomplete: zgate-leasesz.jsonzremote gate lease is missing: 
expires_atr   r   rq   activer3   z1remote gate lease is not active for current run: r   workzrequest.jsonzrequest-bindings.jsonzjob-intent.jsonzterminal-response.jsonrequest_sha256zrequest binding hash mismatchr2   zstale/foreign job intentzintent stage/jobs path mismatchr   r   z(intent base_url is not in the stage pooljob_idzresume base_url=z job_id=Tr   zbmanual_reconciliation_required: intent has base_url but no job_id; inspect only the pinned replicaz0selected endpoint became busy before intent/POSToutputzinvalid output path binding   creatingF)schema_versionr2   r3   r   rq   verifiedr   r   request_pathr   input_sha256output_path
created_atz(ambiguous_post_transport_error base_url=z error=zRmanual_reconciliation_required: POST result ambiguous; do not fallback or resubmitidz0ambiguous_post_response_missing_job_id base_url=zWmanual_reconciliation_required: POST response lacks job_id; do not fallback or resubmit	submitted)rq   http_statusr   submitted_atzaccepted base_url=/zpoll=z transient=   r   z status=)rq   last_polled_at
poll_count>   failed	cancelledr   r   verificationr   )rq   terminal_response_pathterminal_atr   )r   rq   server_verifiedrj   continue_poll_same_job)r   rq   terminalactionrI   )4argparseArgumentParseradd_argumentsortedCONFIGr   
parse_argsrB   r5   r6   r7   r8   GATESr   r=   r>   DEPENDENCIESis_filer   fromisoformatr   r:   r   r   r   r,   existsr9   r   r   r   rx   r   r   r   rX   rr   r   r   r   r(   range	max_pollsrf   ra   errorURLErrorr   r   r   poll_secondsro   ) parserargsgate
incomplete
lease_pathleaser   r   router   r   bindings_pathintent_pathterminal_pathrg   r   request_hashintentintent_existedbaser   r   r   status_codere   r   
status_urllastpolljobrq   r   s                                   @r   mainr      s
   $&&F
888
(sA>>>
C>>>D	GGGz4(?-DDOOY`OaabbHD||GR  $$T**i77@$@@AAA   &tz2  J
  USzSSTTT=0d>>>AJ DBDBBCCCJz++W+==>>E"00|1D1L1LSRZ1[1[\\Jyyh&&%))H*=*=*G*G:YaYjYnYnow  pA  pE  ZF  ZF  LF  LFUtUUVVV$*DE&=4:%.D.(L22M**K33Mj///AABBGz-1171CCDDH|$$L||$%%55:;;;F ''))N KK1171CCDD::&''<776::l;S;SWa;a;aekeoeopxeyey  ~D  fD  fD9:::::g$*,,

;0G0G50P0P@AAA::j!!k):::IJJJ (G&**X&& (Gj!!777v77tDDDDD	 $G  A  A  	A#D))e,, 	SQRRRll8,,+s++ 	>;3I3I#d))3T3T 	><===$Z --*(22&%%
 
 	K***	~$-dUlG$D$D!K 	~ 	~ 	~^T^^$s))J\^^fjkkkksttz}}	~ h''=8<<+=+= 	zKTKKSWXXXXxyyy;{V\nqnsnsttuuuK***949999FFFF#c&kk1JDa!+,, & &	:&&CC%|4 	 	 	?$??499+=??tLLLLJt()))HHHH	 ""T>>TBY!^^0$0000====DK1171CCDD355PTUUVVVK(((999s+++MMVs=GYGYjmjojo  ~D  HS  ~S  ~K  X[  X_  X_  `n  pr  Xs  Xs  Xw  Xw  xB  XC  XC  GK  XK  L  L  M  M  MV,,,$*&UXU\U\]kmoUpUpUtUtu  VA  VA  B  B  QV  W  W  W  _c  d  d  d  d+--#''."2M2M2Q2QR\2]2]ae2e2e11kllll
4$%%%%	$*$EUmnn
o
ow{||||1s1   V( (
W029W++W0[\<0A\77\<__main__)r   r   )r   r   r   r   )r   r-   )r   r   rA   rC   r   r-   )rY   r   r   rC   )rY   r   rg   rC   r   rh   )rA   rs   r   rt   )r   r   r   r   r   r   )r^   r   )r   rC   r   r   r   r   r   r   )r   rC   r   r   )r   r   )!
__future__r   r   r   r$   r5   rT   r   urllib.errorra   urllib.requestpathlibr   r7   r9   r:   r;   r   r   r   r   r,   rB   rX   rf   rr   r   r   r   r   r   r   
SystemExitr   r   r   <module>r      sK   " " " " " "     				               tWXX/
	( J  J  J6 
 J  J  J4 
 J  J  J8 
 
 [QQx ! ! [ [ [ [   = = = =	 	 	 	+ + + +< < < <	 	 	 	Q Q Q Q! ! ! ! !   r r r rj z
*TTVV

 r   