
    \j                       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mZ  ee	          
                                j        d         Zedz  Zdddd	d
dddddd
Zddddddddddd
Zd1d Zd2d$Zd3d'Zd4d)Zed*k    rv ej         e                       dS # e$ rTZ e ej        d+d, ee          j         d-e d.d,/          ej        0            ej        d           Y dZ[dS dZ[ww xY wdS )5    )annotationsN)Path   zscript/project-manifest.jsonpromotion_receipttts_receiptlayout_receiptintro_receiptfootage_receiptfootage_qa_receiptfinal_receiptfinal_qa_receipttranscode_receiptmetadata_receipt)
	promotionttslayoutintrofootage
footage_qafinalfinal_qa	transcodemetadatastory_canonspoken_narration	tts_audior   intro_normalizedr   r   final_masterfinal_uploadr   )
canon	narrationaudior   	thumbnailr   r   r   uploadr   pathr   returnstrc                   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)handles   script/audit-publish-ready.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r/   )hashlibsha256openiterupdate	hexdigest)r%   digestchunkr,   s      @r-   r1   r1      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'manifestdictkeyc                   |                      d          pi                      |          }t          |t                    r|st          d| d          t	          |          }|                                s
t          |z  }	 |                                                    t                                                     n%# t          $ r}t          d|           |d }~ww xY w|S )Nactive_pathszactive_paths.z is missingzactive path escapes project: )
get
isinstancer'   RuntimeErrorr   is_absoluteROOTresolverelative_to
ValueError)r8   r:   valuer%   excs        r-   resolve_activerG   "   s    \\.))/R44S99EeS!! = =;3;;;<<<;;D d{K""4<<>>2222 K K K@3@@AAsJKKs   >C 
C$CC$rE   Nonec                   | j                             dd           t          j        |dd          dz                       d          }t          j        d| j         d| j         	          \  }}	 t          j	        |d
          5 }|
                    |           |                                 t          j        |                                           d d d            n# 1 swxY w Y   t          j        ||            t          j                            |          rt          j        |           d S d S # t          j                            |          rt          j        |           w w xY w)NT)parentsexist_okF   )ensure_asciiindent
utf-8.)prefixdirwb)parentmkdirjsondumpsencodetempfilemkstempnameosfdopenwriteflushfsyncfilenoreplacer%   existsunlink)r%   rE   datafdr\   r,   s         r-   atomic_jsonrh   0   s   KdT222Ju5;;;dBJJ7SSD'749'7'7'7T[IIIHB1Yr4   	JFLL0I0I0I	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J

47>>$040027>>$040s1   2D: AC#D: #C''D: *C'+D: :6E0intc                 :   t          j        t                              d                    fdt                                          D             } fdt                                          D             }t          d          }|                                rt          d          d | 
                                D             }d |
                                D             }|s|rt          d	| d
|           d |                                 D             }|d         }|                    d          }i }|                                D ]\  }	}
|	dk    r|
                    d          n|
                    d          }|
                    d          dk    |
                    d          du ||k    t          | |	                   t          | |	                   d||	<   d |                                D             t          |d                             t                              }d         |k    d         |                    d          k    d         |d                             d          k    d         |d                             di                               |i                               d          k    d         |d                             d          k    d         |d                             d          k    d          |d                              d          k    d!         |d"                             d          k    d#         |d#                             d          k    d$	}|d!                                         j        }t%          d% |
                                D                       t%          d& |
                                D                       t%          d' |
                                D                       t%          |
                                          |d(k     t'          t                              d)                     ot          d*z                                   d+}t%          |
                                          }|rdnd,|                    d-          ||fd.|                                D             d/ |                                D             d0 |                                D             |d1 |                                D             d2d3}t+          ||           t-          t          j        |d         ||d4         t          |          d5d67                     |rd8nd9S ):NrP   encodingc                8    i | ]\  }}|t          |          S  rG   .0r\   r:   projects      r-   
<dictcomp>zmain.<locals>.<dictcomp>>   s)    YYYytSnWc22YYYr/   c                8    i | ]\  }}|t          |          S rn   ro   rp   s      r-   rs   zmain.<locals>.<dictcomp>?   s)    [[[	c~gs33[[[r/   publish_ready_receiptzDpublish-ready receipt already exists and requires audit/invalidationc                T    g | ]%}|                                 t          |          &S rn   rd   r'   rq   r%   s     r-   
<listcomp>zmain.<locals>.<listcomp>C   s+    UUUdt{{}}UD		UUUr/   c                T    g | ]%}|                                 t          |          &S rn   rw   rx   s     r-   ry   zmain.<locals>.<listcomp>D   s+    WWWtWTWWWr/   z!publish inputs missing; receipts=z; artifacts=c                f    i | ].\  }}|t          j        |                    d                     /S )rP   rk   )rW   loads	read_textrq   r\   r%   s      r-   rs   zmain.<locals>.<dictcomp>G   s6    dddZT4dDJt~~w~??@@dddr/   r   canon_sha256source_canon_sha256status	completedverifiedT)r   r   canon_currentr%   receipt_sha256c                4    i | ]\  }}|t          |          S rn   )r1   r~   s      r-   rs   zmain.<locals>.<dictcomp>N   s$    NNNjdDtVD\\NNNr/   r   r    r!   spoken_narration_sha256r"   r   artifact_sha256	artifactsr1   r   r   r   r$   r   r   )	r    r!   r"   r   r   r   r   r$   r   c              3  &   K   | ]}|d          V  dS )r   Nrn   rq   rE   s     r-   	<genexpr>zmain.<locals>.<genexpr>\   s'      +d+d5E+,>+d+d+d+d+d+dr/   c              3  &   K   | ]}|d          V  dS )r   Nrn   r   s     r-   r   zmain.<locals>.<genexpr>\   sZ        C{  C{  Z_  DI  JT  DU  C{  C{  C{  C{  C{  C{r/   c              3  &   K   | ]}|d          V  dS )r   Nrn   r   s     r-   r   zmain.<locals>.<genexpr>\   sZ        ^[  ^[  z  _d  et  _u  ^[  ^[  ^[  ^[  ^[  ^[r/   i ʚ;zDO_NOT_PUBLISH*publish_block)all_receipts_completedall_receipts_verifiedall_receipts_current_canonall_artifact_hash_linksupload_under_one_gbno_publish_block_markerfailed
project_idc                x    i | ]6\  }}|t          |          |         |                                j        d 7S ))r%   r1   bytes)r'   statst_size)rq   r\   r%   artifact_hashess      r-   rs   zmain.<locals>.<dictcomp>^   s      QO  QO  QO  oy  os  uy  RV  ad  ei  aj  aj  vE  FJ  vK  VZ  V_  V_  Va  Va  Vi  Xj  Xj  QO  QO  QOr/   c                     i | ]\  }}|||d S )r   rE   rn   rq   r\   rE   s      r-   rs   zmain.<locals>.<dictcomp>^   sd      _p  _p  _p  NY  NR  TY  `d  sx  CH  fI  fI  _p  _p  _pr/   c                     i | ]\  }}|||d S r   rn   r   s      r-   rs   zmain.<locals>.<dictcomp>^   sd      |I  |I  |I  kv  ko  qv  }A  PU  `e  Cf  Cf  |I  |I  |Ir/   c                    g | ]	\  }}||
S rn   rn   r   s      r-   ry   zmain.<locals>.<listcomp>^   sV      ti	  ti	  ti	  ~I	  ~B	  D	I	  c	h	  ti	  uy  ti	  ti	  ti	r/   zsha256 streaming 8 MiB)r   r   r   r   receipt_checksr   
hash_linkschecksupload_bytesblockershash_methodr   )r   r   r   receiptFrM   r   r   )rW   r|   PROJECT_MANIFESTr}   RECEIPT_KEYSitemsARTIFACT_KEYSrG   rd   r?   valuesr=   r'   r1   rC   rA   r   r   allanyglobrh   printrX   )receiptsr   outputmissing_receiptsmissing_artifactsr   r   
canon_hashr   r\   rE   current_hashlayout_relativer   upload_sizer   r   resultr   rr   s                     @@r-   mainr   <   s   j)33W3EEFFGYYYYLDVDVDXDXYYYH[[[[]EXEXEZEZ[[[IG%<==F}} cabbbUUhoo.?.?UUUWWy/?/?/A/AWWW r, rp?Opp]nppqqqddS[SaSaScScdddF{#I~..JN||~~ p pe48K4G4Guyy000UYYWlMmMm-2YYx-@-@K-O]b]f]fgq]r]rvz]z  NZ  ^h  Nh  ru  v~  C  vD  rE  rE  Y_  `h  im  `n  Yo  Yo   p   ptNNIOO<M<MNNNO)H-99$??@@O )Z7$[1Y]]C\5]5]] )VE]->->?P-Q-QQ!(+vh/?/C/CKQS/T/T/X/XYhjl/m/m/q/qrz/{/{{ )VG_-@-@AR-S-SS"9-	1B1F1FGX1Y1YY )VG_-@-@AR-S-SS!(+vk/B/F/FGX/Y/YY#J/6*3E3I3IJ[3\3\\
 
J H%**,,4K(++d+dNLaLaLcLc+d+d+d(d(d  @C  C{  C{  cq  cx  cx  cz  cz  C{  C{  C{  @{  @{  [^  ^[  ^[  CQ  CX  CX  CZ  CZ  ^[  ^[  ^[  [[  [[  x{  |F  |M  |M  |O  |O  xP  xP  it  wD  iD  eh  im  ir  ir  sD  iE  iE  eF  eF  aF  ap  PT  Wf  Pf  On  On  Op  Op  Kp  q  qF6==??##H'/=X8cjcncno{c|c|  V`  tB  QO  QO  QO  QO  }F  }L  }L  }N  }N  QO  QO  QO  _p  _p  ]g  ]m  ]m  ]o  ]o  _p  _p  _p  |I  |I  z@  zF  zF  zH  zH  |I  |I  |I  [f  ti	  ti	  M	S	  M	Y	  M	Y	  M	[	  M	[	  ti	  ti	  ti	  z	R
  S
  S
F	$*x 0hTZ[eTfsvw}s~s~  OT  U  U  U  V  V  V11ar/   __main__r   Fz: )r   r   errorr   )file)r%   r   r&   r'   )r8   r9   r:   r'   r&   r   )r%   r   rE   r9   r&   rH   )r&   ri   )
__future__r   r0   rW   r]   sysrZ   pathlibr   __file__rB   rJ   rA   r   r   r   r1   rG   rh   r   __name__exit	ExceptionrF   r   rX   typestderrrn   r/   r-   <module>r      s:   " " " " " "   				 



       tH~~'*88 $]FV):J^*<$2D	  );k%7'>^Yc       	1 	1 	1 	1%  %  %  % P z	$$&&					 ^ ^ ^jdjH%TTRUYYM_JhJhcfJhJhiix}~~~  FI  FP  	Q  	Q  	Q  	Q  S[  SV  S[  \]  S^  S^  S^  S^  S^  S^  S^  S^  S^^ s   >B C1A	C,,C1