
    ]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Zd dlm	Z	  e	e
                                          j        d         Zedz  Zdd
ZddZddZddZd dZedk    rw	  ej         e                       dS # e$ rTZ e ej        dd ee          j         de dd          ej                    ej        d           Y dZ[dS dZ[ww xY wdS )!    )annotationsN)Path   zscript/project-manifest.json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/verify-layout.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)r   digestchunkr   s      @r   r   r      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)r   r   valuer   excs        r   resolve_activer(      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$r&   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   r&   datafdr=   r   s         r   atomic_jsonrI   &   s   KdT222Ju5;;;dBJJ7SSD'749'7'7'7T[IIIHBYr4   	&FLLLLNNNHV]]__%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	
47>>$ 	IdOOOOO	 	27>>$ 	IdOOOO	s1   2D: AC#D: #C''D: *C'+D: :6E0c                    t          j        t          j        ddddddddd	t	          |           g
d
                    d         d         S )Nffprobez-verrorz-select_streamszv:0z-show_entriesz&stream=codec_name,width,height,pix_fmtz-ofr8   T)textstreamsr   )r8   loads
subprocesscheck_outputr   )r   s    r   proberR   5   sg    :j-4"3UAvs4yy/ 	     	  	! !r   intc                 <   t          j        t                              d                    d} fd| D             d                                 D             }d |D             }|rt          d|           fdd	D             }|rt          d
|           t          j        d                             d                    }t          j        d                             d                    }t          j        d                             d                    }t          j        d                             d                    }t          j        d                             d                    }t          j        d                             d                    }	|                    d          }
t          d                   t          d                   t          d                   d}d         d         d         d         d         d         d         g}d d         d         d         d         fD             }d |	                    di                                           D             }d |                    di                                           D             }|                    d          d k    o|                    d!          d"u |                    d#          |
k    |                    d$          d"u |                    d          d k    oH|                    d!          d"u o1|                    d#          |
k    o|                    d%          |k    |                    d          d k    oH|                    d!          d"u o1|                    d#          |
k    o|                    d%          |k    |                    d          d k    o|                    d!          d"u oo|                    d#          |
k    oV|t          d                   t          d                   t          d                   t          d                   d&k    |	                    d          d'k    o|	                    d#          |
k    o||k    t          d                   d(         t          d                   d)         fd*k    t          d                   d(         t          d                   d)         fd*k    t          d                   d(         t          d                   d)         fd+k    t          d                   d(         t          d                   d)         fd+k    t          d, |D                       d-}t          |
                                          }|rd nd.||
t          d                   t          d                   t          d                   gt          d                   d/ |D             d0 |                                D             t          d                   t          d                   d1t          d                   t          d                   d1t          d                   t          d                   d1t          d                   t          d                   d1d2d3 |                                D             d4}t          d5         |           t          d6         |           t          t          j        |d         ||d7         t          d5                   d8d9:                     |rd;nd<S )=Nr1   )encoding)left_panel_masterright_panel_masterintro_masterleft_panel_normalizedright_panel_normalizedintro_normalizedlayoutartwork_visual_receiptorientation_receiptnormalized_visual_receiptlayout_normalization_receiptpromotion_receiptimage_promptslayout_manifestlayout_receiptc                2    i | ]}|t          |          S  )r(   ).0r   projects     r   
<dictcomp>zmain.<locals>.<dictcomp>F   s%    ???3S.#..???r   c                     g | ]\  }}|d v	|S )>   rd   rc   rf   )rg   r   r   s      r   
<listcomp>zmain.<locals>.<listcomp>G   s'    hhhdsBg7g7g7g7g7gr   c                T    g | ]%}|                                 t          |          &S rf   rE   r   rg   r   s     r   rk   zmain.<locals>.<listcomp>H   s+    CCCTT[[]]Cs4yyCCCr   zlayout inputs missing: c                n    g | ]1}|                                          t          |                   2S rf   rm   )rg   r   pathss     r   rk   zmain.<locals>.<listcomp>K   s;    hhhCTYZ]T^TeTeTgTghE#Jhhhr   )rc   rd   zJlayout verification outputs already exist and require audit/invalidation: ra   rb   r]   r^   r_   r`   canon_sha256rV   rW   rX   )
left_panelright_panelintrorY   rZ   r\   r[   c                x    i | ]7}t          |                    t                              t          |          8S rf   )r   r$   r"   r   rn   s     r   ri   zmain.<locals>.<dictcomp>_   sF        	DT""##VD\\  r   c                @    i | ]\  }}||                     d           S r   r   rg   r=   r&   s      r   ri   zmain.<locals>.<dictcomp>c   s7       &1dEeii!!  r   outputsc                @    i | ]\  }}||                     d           S rw   rx   )rg   r   r&   s      r   ri   zmain.<locals>.<dictcomp>f   s7       %/S%UYYx    r   	artifactsstatus	completedverifiedTsource_canon_sha256image_api_calledartifact_sha256)rY   rZ   r[   r\   &completed_pending_target_visual_reviewwidthheight)i  8  )i  r   c              3  b   K   | ]*}t          |                              d           dk    V  +dS )
codec_namepngN)rR   r   rn   s     r   	<genexpr>zmain.<locals>.<genexpr>z   s9      \\T%++//,775@\\\\\\r   )promotion_verifiedprompt_canon_currentr   visual_gateorientation_gatetarget_visual_gatenormalization_receiptleft_dimensionsright_dimensionslayout_dimensionsintro_dimensions
png_codecsfailedc                    i | ]_}t          |                    t                              t          |          |                                j        t          |          d `S ))r   bytesrR   )r   r$   r"   r   statst_sizerR   rn   s     r   ri   zmain.<locals>.<dictcomp>   se     
 
 
   &&''F4LL499;;K^inositit)u)u
 
 
r   c                     i | ]\  }}|||d S ))r   r&   rf   ry   s      r   ri   zmain.<locals>.<dictcomp>   s&    ___u4ee<<___r   )r   r   zsha256 streaming 8 MiBc                    g | ]	\  }}||
S rf   rf   ry   s      r   rk   zmain.<locals>.<listcomp>   s!    IIIkdE5ITIIIr   )r}   r   r   input_pathsoutput_pathr|   checksvisual_receiptr^   target_visual_receiptr   hash_methodblockersrc   rd   r   )r}   r   r   r   Fr.   r   r   )r8   rO   PROJECT_MANIFEST	read_textitemsr    r   r   rR   allvaluesr   rI   printr9   )keysrequiredmissingexisting	promotionpromptsvisualorientationtarget_visualnormalization
canon_hashmaster_hashesartifact_pathsnormalized_expectednormalized_recordedtarget_visual_hashesr   r   resultrp   rh   s                      @@r   mainr   =   s7	   j)33W3EEFFGD @???$???EhhekkmmhhhHCCXCCCG @>W>>???hhhh+PhhhH trhprrsss
5!45???QQRRIj/9979KKLLGZ67AA7ASSTTF*U#89CCWCUUVVKJu%@AKKU\K]]^^MJu%CDNNX_N``aaM~..JU#6788e$89::n-.. M 	!"E*>$?G^A_&'x%:OQVWiQjN 23U;S5TV[\dVeglm  hA  B   5B5F5FyRT5U5U5[5[5]5]   3@3D3D[RT3U3U3[3[3]3]   (mmH55DjWaIbIbfjIj ',A B Bj P#KK(:;;tCzz(++{:  Evzz*?U?UY]?]  Ebhblbl  nC  cD  cD  HR  cR  E  W]  Wa  Wa  bs  Wt  Wt  xE  WE'OOH55D  ^YcIdIdhlIl  ^q|  rA  rA  BW  rX  rX  \f  rf  ^  kv  kz  kz  {L  kM  kM  Q^  k^+//99[H 
]M^M^_iMjMjnrMr 
  xE  xI  xI  J_  x`  x`  dn  xn 
  sG%+E2I,J%K%K&,U3K-L&M&M &u-?'@ A AU8_--	K
 K
 s
 "/!2!28!<!<@h!h  "Smzm~m~  @U  nV  nV  Zd  nd  "S  i|  @S  iS!%(?"@AA'JERWXoRpLqLqrzL{|  AL  L"5)A#BCCGLeTYZrTsNtNtu}N~  DO  O#E(O44W=uU8_?U?UV^?_`dpp"5);#<==gFeTfNgHhHhiqHrs  xD  D\\^\\\\\# F& 6==??##H!)7++xX)E"5677UCW=X9Y9Y[^_des_t[u[uv5?++
 
&
 
 
 `_PVP\P\P^P^___#&u-E'F#G#GSYZ_`xZySzSz{{(+E2G,H(I(IU[\abw\xUyUyzz*-e4O.P*Q*Q]cdi  kF  eG  ^H  ^H  "I  "I*-e4R.S*T*T`fgl  nL  hM  aN  aN  "O  "O/IIV\\^^III F" '(&111&'000	$*x 0hTZ[eTftwx}  P  yQ  uR  uR  S  S  bg  h  h  h  i  i  i11ar   __main__r   Fz: )r}   r   rL   r   )file)r   r   r   r   )r   r   r   r   r   r   )r   r   r&   r   r   r)   )r   r   r   r   )r   rS   )
__future__r   r   r8   r>   rP   sysr;   pathlibr   __file__r#   r+   r"   r   r   r(   rI   rR   r   __name__exit	Exceptionr'   r   r9   typestderrrf   r   r   <module>r      s   " " " " " "   				     



       tH~~'*88          ! ! ! !T  T  T  T n z   jdjH%TTRUYYM_JhJhcfJhJhiix}~~~  FI  FP  	Q  	Q  	Q  	Q s   -B C A	CC 