
    x]jU+              
         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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)final_masterfootage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/cleanup-after-publish.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   resolvedexcs         r   resolve_activer+      s    \\.))/R44S99EeS!! = =;3;;;<<<;;D d{||~~HKT\\^^,,,, K K K@3@@AAsJKOs   ,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_jsonrL   (   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labelc                    |                                  st          | d|            t          j        |                     d                    }t          |t                    st          | d          |S )Nz is missing: r4   )encodingz is not an object)is_filer"   r;   loads	read_textr!   r   )r   rM   r(   s      r   	load_jsonrS   7   sy    <<>> :e88$88999Jt~~w~7788EeT"" 8e666777Lr   intc                 @  )* t          t          d          **fddD             )*                    d          } t          | t                    rt          |           dk    rt          d          )d         }|                                r|                                j	        dk    rt          d	          |                                j	        }t          |          }|d
k    rt          d          t          )d         d          }t          )d         d          }t          )d         d          }d|fd|fd|ffD ]r\  }}|                    d          dk    s|                    d          durt          | d          |                    d          | k    rt          | d          s|                    d          |k    rt          d          |                    d          |k    s|                    d          |k    rt          d           t          t	          |                    d!d"                                                              }	|	|k    rt          d#          |                    d$          pi }
|
                    d%          r|
                    d&          st          d'          |                    d(          pi                     d)          }|t          )d                   k    rt          d*          |                    d+          pi }|                    d,          pi }|                    d-          |                    d.          h}d |v s&t          |          |k    st          |          d/k    rt          d0          d1 |                                D             }d2 |                                D             }|                    d3d4h          rt          |          d5k    sd |v rt          d6          )d7         }|                                rt          |d8          }|                    d          dk    r|                    d          du r|                    d9i                               d)          |k    rt          d:          d; |                    d<g           D             }|rt          d=|           t#          t%          j        dddt	          |          t	          |          d>d?@                     dS t          dA          )fdBt(          D             }*                    dC          pi                     dD          pi }|rWdEdF*                    dG          pi fdHd*                    dI          pi ff}|D ]\  }}}|                    |          }t          |t                    r|st          dJ|           t*          |z                                  }	 |                    t*                                                     n%# t.          $ r}t          dK|           |d }~ww xY w|                    d&          |k    s|                    d          st          dL|           |                    |||                    d)          f           !g }t                      }|D ]\  }}} ||k    rt          dM|           ||v r#|                    |           |                                st          dN|           t          |          }!| |!| k    rt          dO|           |                    |t	          |          |                                j	        |!ddP           t4          j                            t4          j        j                                                  }"dQd?| *                    dR          t	          )d                   t          )d                   dSt	          )d                   t          )d                   dSt	          |          ||dT||"dU	}#t?          ||#           |D ])}t          |d&                                                     *t          |          }$|                                |$|k    tC          dV |D                       dW}%tC          |%                                          }&i |#|&rdndX|&|%dY |D             tE          dZ |D                       dt	          |          |$|                                j	        d[d\t	          tG          *d\                    d]d^t	          tG          *d^                    d]gt4          j                            t4          j        j                                                  d_d`}'t?          ||'           |&st          da|%           t          t          d          }(|(                    dbi                               d7          t	          |                    t*                              k    rt          dc          d|($                    ddi           de<   d|(dd         df<   ddt	          |                    t*                              t	          |                    t*                              tK          t(                    |'dg         |'dh         di|(df<   d|(d<   |'dh         |(dj<   t?          t          |(           t#          t%          j        ddt	          |          dk |D             |'dg         t	          |          |$dld?@                     dS )mNzproject manifestc                2    i | ]}|t          |          S  )r+   ).0r   projects     r   
<dictcomp>zmain.<locals>.<dictcomp>B   s1       3S.#..   r   )final_uploadr   r   transcode_receiptpostiz_media_receiptpostiz_schedule_receiptcleanup_receiptcanon_sha256@   zproject canon hash is invalidr[   r   zverified upload copy is missingi ʚ;z*upload copy is not under one billion bytesr\   ztranscode receiptr]   zPostiz media receiptr^   zPostiz schedule receipt	transcodemediaschedulestatus	completedverifiedTz! receipt is not terminal verifiedsource_canon_sha256z receipt canon mismatchartifact_sha256z/upload copy hash differs from transcode receiptvideo_sha256video_bytesz-upload copy differs from Postiz media receipt
video_path z2Postiz media receipt points to another local videovideoidr   z(Postiz remote media object is incompletemedia_receiptr   z7schedule receipt is not linked to current media receiptpostsintegration_idsfacebookyoutuber0   zAschedule receipt does not contain exactly two target integrationsc                8    h | ]}|                     d           S )stater    rX   posts     r   	<setcomp>zmain.<locals>.<setcomp>n   s$    ;;;Ddhhw;;;r   c                8    h | ]}|                     d           S )publishDaterw   rx   s     r   rz   zmain.<locals>.<setcomp>o   s$    @@@TXXm$$@@@r   QUEUE	PUBLISHEDr   z1Postiz schedule readback is not terminal verifiedr_   zcleanup receiptupload_copyz-existing cleanup receipt upload hash mismatchc                l    g | ]1}t          |d                                                    )|d          2S r   r   rH   rX   records     r   
<listcomp>zmain.<locals>.<listcomp>y   s=    uuuFW[\bci\jWkWkWrWrWtWtuuuur   delete_targetsz7cleanup receipt is completed but intermediates remain: )re   rg   
idempotentreceiptr   Fr1   z?non-terminal cleanup receipt exists and requires reconciliationc                &    g | ]}||         d fS )NrW   )rX   r   pathss     r   r   zmain.<locals>.<listcomp>   s$    HHHS#uSz40HHHr   poster_v2_promotionsuperseded_pathssuperseded_final_masterr   final_rendersuperseded_final_uploadtranscode_uploadzsuperseded path is missing: z!superseded path escapes project: z1superseded artifact is not verified in manifest: z$cleanup target aliases upload copy: z0cleanup target is missing before first cleanup: z#superseded artifact hash mismatch: )r   r   bytesr   exists_beforerunningactive_version)r   r   )r   r   r   )	re   rg   rh   r   r]   r^   r   r   
started_atc              3  f   K   | ],}t          |d                                                     V  -dS )r   Nr   r   s     r   	<genexpr>zmain.<locals>.<genexpr>   s=      !a!ad6&>&:&:&A&A&C&C"C!a!a!a!a!a!ar   )upload_copy_existsupload_copy_hash_unchangedall_targets_absentfailedc                h    g | ]/}i |d t          |d                                                   i0S )exists_afterr   r   r   s     r   r   zmain.<locals>.<listcomp>   sA    kkkRXMvM~tF6N/C/C/J/J/L/LMMkkkr   c              3  &   K   | ]}|d          V  dS )r   NrW   r   s     r   r   zmain.<locals>.<genexpr>   s&      HHv6'?HHHHHHr   )r   r   r   r   intro)r   r   	tts_audiozsha256 streaming 8 MiB)re   rg   checksdeletedbytes_freedkeptcompleted_athash_methodzcleanup verification failed: r   z7project manifest changed cleanup receipt during cleanupstepsuploadcleanupr   r   )re   rg   r   upload_copy_retaineddeleted_keysr   r   
updated_atc                    g | ]
}|d          S r   rW   r   s     r   r   zmain.<locals>.<listcomp>   s    @@@vF6N@@@r   )re   rg   r   r   r   r   upload_copy_sha256)&rS   MANIFESTr    r!   r
   lenr"   rP   statst_sizer   r   r%   setvaluesissubsetrH   printr;   r<   DELETE_KEYSr$   r&   r'   appendadddatetimenowtimezoneutc	isoformatrL   rI   allsumr+   
setdefaultlist)+canonr   upload_bytesupload_hashrb   rc   rd   rM   r   media_video_pathremoteexpected_media_hashrq   rr   expected_idsstatesdatescleanup_pathold	remainingdelete_candidates
supersededstale_specs
source_keyr   r(   
stale_pathr*   delete_recordsseenr   r   expected_hashobserved_hashr   r   upload_hash_afterr   rg   resultlatestr   rY   s+                                            @@r   mainr   @   s>   "455G    ;   E KK''EeS!! <SZZ2%5%5:;;;>"F>> >v{{}}499<===;;==(L..K}$$GHHH% 346IJJIe235KLLE89;TUUH'3gu5E
T\G]^ B Bw;;x  K//7;;z3J3JRV3V3V%JJJKKK;;,--66%@@@AAA 7 }}&'';66LMMMyy  K//599]3K3K|3[3[JKKKC		, ; ;<<==EEGG6!!OPPPYYw%2F::d G6::f#5#5 GEFFF#<<88>BCCHMMfU+A%BCCCCTUUULL!!'REll#455;O#''
33_5H5H5S5STL|s5zz\99SZZ1__^___;;ELLNN;;;F@@@@@E??G[122 Pc%jjAooQVNOOO*+L ^&788778++
0C0Ct0K0Kww}b))--h77;FF"#RSSSuucgg>NPR6S6SuuuI j"#h]f#h#hiii$*%4t|,,S[[  "# # # $ $ $ 1\]]]HHHHKHHH++344:??@RSSYWYJ P&N8S8S8YWYZ&DV8W8W8][]^
 *5 	P 	P%E:vNN:..EeS)) P P"#N*#N#NOOO,//11J^&&t||~~6666 ^ ^ ^"#Sz#S#STTZ]]^zz&!!U**&**Z2H2H*"#cWa#c#cddd$$eZH9M9M%NOOOON55D$5   T=6>>KcKKLLL4<<||~~ 	ZXRVXXYYYt$-)G)GJSJJKKKD		DIIKK4G#d
 
 	 	 	 	
 "&&x'8'<==GGIIJ$!++&677),U3I-J)K)KW]^cdz^{W|W| } },/6O0P,Q,Q]cdi  kD  eE  ^F  ^F  $G  $G #F{\ZZ( 	 	G g&&&  & &VF^##%%%%v$nn..&7;&F!!a!aR`!a!a!aaa F
 6==??##H
!)7++xkk\jkkkHHHHHHH"CKKCT_e_j_j_l_l_tuuS)I)I%J%JKK^G[-Q-Q)R)RSS

 !)--h.?.CDDNNPP/  F f%%% EC6CCDDDx!344Fzz."%%))*;<<LD\D\]aDbDb@c@cccTUUU/:Fgr""8,!,F7OI4|//5566 #F$6$6t$<$< = =[))&:O~. F9 #F8!.1F<&!!!	$*4C<M<M@@@@@m,c&kk/	 
       1s   ,Y
Y-Y((Y-__main__r   Fz: )re   rg   errorr   )file)r   r   r	   r
   )r   r   r   r
   r	   r   )r   r   r(   r   r	   r,   )r   r   rM   r
   r	   r   )r	   rT   )
__future__r   r   r   r;   rA   sysr>   pathlibr   __file__r%   r.   r$   r   r   r   r+   rL   rS   r   __name__exit	Exceptionr*   r   r<   typestderrrW   r   r   <module>r      s   " " " " " "    				 



       tH~~'*00)            h h h hV z   jdjES		*33c33
 
    &)Z	1 	1 	1 	1 	 s   /B	 	C"A	CC"