
    ?s_jC'                         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 Z	d Zd Zd	 Zd
 Zedk    r e             dS dS )    N)Path   zscript/project-manifest.jsonc                    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-and-complete.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr	   s      @r
   r   r      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                 \   |                      di                                |          }|st          d| d          t          |          }|                                r|n	t          |z  }|                                                    t                                                     |S )Nactive_pathszactive_paths.z missing)getRuntimeErrorr   is_absoluteROOTresolverelative_to)manifestkeyvaluer   s       r
   r   r      s    LL,,0055E :83888999;;D##%%6444$;DLLNNt||~~...Kr   c                     | j                             dd           |                     | j        dz             }|                    t          j        |dd          dz   d	           t          j        ||            d S )
NT)parentsexist_okz.partF   )ensure_asciiindent
utf-8encoding)	parentmkdirwith_suffixsuffix
write_textjsondumpsosreplace)r   r    parts      r
   atomic_jsonr5      s|    KdT222DK'122DOODJu5CCCdJU\O]]]JtTr   c                 0   t          | |          }t          j        |                    d                    }|                    d          dk    s0|                    d          dus|                    d          |k    rt          | d          ||fS )	Nr(   r)   status	completedverifiedTsource_canon_sha256z not terminal on current canon)r   r0   loads	read_textr   r   )r   r   canonr   r    s        r
   terminal_receiptr>   &   s    8S!!DJt~~w~7788Eyyk))UYYz-B-B$-N-NRWR[R[\qRrRrv{R{R{cAAABBB;r   c                 P   t           dz  }t          j                            d|          }t          j                            |          }|j                            |           |                                }|d                             d          }|	                    | d                   }|
                    ||d         |          }|j        |j        h}t          |          |k    s+t          d |                                D                       rt!          d          |S )	Nzscript/publish-postiz.pygma006_publisherPOSTIZ_BASE_URL/slot_utcPOSTIZ_API_KEYc              3   D   K   | ]}|                     d           dvV  dS )state>   QUEUE	PUBLISHEDNr   .0rows     r
   	<genexpr>z$calendar_readback.<locals>.<genexpr>8   s5      $n$nX[SWWW%5%5=S%S$n$n$n$n$n$nr   zAcurrent calendar readback does not contain exact two target posts)r   	importlibutilspec_from_file_locationmodule_from_specloaderexec_moduleconfigrstrip
parse_dateposts_at_slotFBYTsetanyvaluesr   )	schedulepublisher_pathspec	publisherr\   baseslotfoundexpecteds	            r
   calendar_readbackre   .   s   66N>112DnUUD//55IKI&&&F#$++C00D 455D##D&1A*BDIIEil+H
5zzX$n$n_d_k_k_m_m$n$n$n!n!n^___Lr   c                     t          j        t                              d                                        d          } | st          d          t          d|           \  }}t          d|           \  }}t          d|           \  }}t          d|           \  }}t          d	          }	t          d
          }
t          d          }t          d          }t          d          }t          |	          }|		                                j
        dk    rt          d          ||                    d          k    s0|		                                j
        |                    d          k    rt          d          ||                    d          k    s&|                    d          t          |	          k    rt          d          |                    d          pi }|                    d          r|                    d          st          d          |                    d          pi }|                    d          t          |          k    s&|                    d          t          |          k    rt          d          t          |          }|                                rit          j        |                    d                    }|                    d          dk    r|                    d          d u rzt          d! |
|fD                       sN|	                                r:t          |	          |                    d"i                               d          k    rt          d#          n|                    d          d$k    ro|                    d%          | k    rV|                    d&          pg }t          |
          t          |          h}d' |D             |k    rt          d(          nt          d)          |
                                r|                                st          d*          d
t          |
          t          |
          |
	                                j
        d+dt          |          t          |          |	                                j
        d+g}d$d,| |t          |	          ||		                                j
        d-t          |          t          |          d.t          |          t          |          d.t          |          t          |          d.|t           j                            t           j        j                                                  d/
}t+          ||           |d&         }|D ]}t-          |d                   }|                                                    t0                                                     ||	k    rt          d0          |                                rbt          |          |d         k    s#|	                                j
        |d1         k    rt          d2|           |                                 t          d3 |D                       rt          d4          |	                                rt          |	          |k    rt          d5          t           j                            t           j        j                                                  }|                    dd |t7          d6 |D                       t          |	          ||		                                j
        d-fd7d8D             t          |          |d9           t+          ||           g d:}i }|D ]P}t          ||           \  }}t          |                    t0                              t          |          d.||<   Qi }d;D ]}t          |          }|                                r|	                                j
        d<k    rt          d=|           t          |                    t0                              t          |          |	                                j
        d-||<   t9          d>                   }|D ]}dd>         |<   d? d>                                         D             }|rt          d@|           dd | ||dA |D             |dB         dC |dB                                         D             d d>         dD|dE
}t+          ||           dd<   dd>         dF<   dd>         dG<   dd>         dH<   dd t          |                    t0                              |dI         |dJdG<   dd t          |                    t0                              |dKdH<   |dL<   t+          t                     t=          t          j        dd |dI         t          |          dMd,N                     d S )ONr(   r)   canon_sha256zcanon missingtranscode_receiptpostiz_media_receiptpostiz_schedule_receiptpublish_ready_receiptfinal_uploadfinal_masterfootagecleanup_receiptcompletion_receipti ʚ;z+retained upload not under one billion bytesartifact_sha256artifact_bytesztranscode/upload lineage failedvideo_sha256
video_pathz"Postiz media/upload lineage failedvideoidr   zremote video object invalidmedia_receiptr   z'schedule/media receipt hash link failedr7   r8   r9   Tc              3   >   K   | ]}|                                 V  d S )N)exists)rK   r   s     r
   rM   zmain.<locals>.<genexpr>]   s*      EET4;;==EEEEEEr   retained_uploadz:terminal cleanup receipt does not match current filesystemrunningr:   deletion_setc                 8    h | ]}|                     d           S r   rI   rJ   s     r
   	<setcomp>zmain.<locals>.<setcomp>b   s"    444C444r   z"running cleanup deletion set driftz-existing cleanup receipt not safely resumablez1cleanup targets missing before deletion plan lock)r   r   r   bytesF)r   r   r   )r   r   )
r7   r9   r:   r|   rz   rh   ri   rj    calendar_readback_before_cleanup
started_atz%deletion set includes retained uploadr   zcleanup target drift: c              3   d   K   | ]+}t          |d                                                    V  ,dS )r   Nr   ry   rJ   s     r
   rM   zmain.<locals>.<genexpr>   s:      
:
:#4F##%%
:
:
:
:
:
:r   zcleanup target remainsz#retained upload drift after cleanupc              3   &   K   | ]}|d          V  dS )r   N rJ   s     r
   rM   zmain.<locals>.<genexpr>   s&      /Q/QG/Q/Q/Q/Q/Q/Qr   c                 ,    g | ]}d          |         S )r   r   )rK   r   r   s     r
   
<listcomp>zmain.<locals>.<listcomp>   s0     
 
 
.1H^$S)
 
 
r   )
rl   intro	tts_audiointro_audiointro_normalizedlayoutmetadatastory_canonspoken_narrationpromotion_receipt)r7   r9   deletedbytes_freedrz   retainedcalendar_readback_after_cleanupcompleted_at)r   tts_pronunciation_receipttts_receiptartwork_generation_receiptartwork_visual_receiptlayout_receiptintro_receiptfootage_receiptfinal_receiptfinal_qa_receiptrh   metadata_receiptrk   postiz_identity_receiptri   rj   ro   )rl   r   r   r   r   r   r   zretained artifact missing: stepsc                 $    g | ]\  }}|d k    |S )r8   r   rK   r   r    s      r
   r   zmain.<locals>.<listcomp>   s&    XXX
U5KCWCWCWCWCWr   zstep reconciliation failed: c                 l    i | ]1}|d          t          |d                                                     2S r~   r   rJ   s     r
   
<dictcomp>zmain.<locals>.<dictcomp>   s:    "c"c"cSV3v;DV4E4E4L4L4N4N0N"c"c"cr   r   c                 @    i | ]\  }}||                     d           S )rv   rI   r   s      r
   r   zmain.<locals>.<dictcomp>   s(    ooojc5S%))D//ooor   )all_completedr   )
r7   r9   r:   receipt_hashesretained_artifactsdeleted_targets_absentre   post_idsstep_reconciliationr   uploadcleanup
completionr   )r7   r9   receiptr   r   )r7   r9   r   r   
updated_at)r7   r9   r   rp   )r%   ) r0   r;   MANIFESTr<   r   r   r>   r   r   statst_sizestrre   ry   r[   is_filedatetimenowtimezoneutc	isoformatr5   r   r   r   unlinkr   sumlistitemsprintr1   ) r=   transcode_path	transcode
media_pathmediaschedule_pathr]   
ready_path_r   rm   rn   cleanup_pathcompletion_pathupload_hashru   
media_linkcurrent_postsr   deletionexpected_pathsrL   r   r   required_receiptsr   r   r   
step_namesblockersr   r   s                                   @r
   mainr   =   s
   z(,,g,>>??HLL((E ,?+++ 0;NPU V VNI(3I5QQJ.x9RTYZZM8$X/FNNMJX~..F8^44Lh	**G8%677Lh(<==O..K{{}}--HIIIimm$56666&++--:OS\S`S`aqSrSr:r:r<===eii////599\3J3JcRXkk3Y3Y?@@@IIg$"E99T?? :%))F"3"3 :8999o..4"J~~fZ00JNN84L4LPVWaPbPb4b4bDEEE%h//M +*\33W3EEFF;;x  K//GKK
4K4Kt4S4SEElG-DEEEEE aV]]__ a`fgm`n`nryr}r}  P  RT  sU  sU  sY  sY  Zb  sc  sc  ac  ac"#_``` ac[[""i//GKK@U4V4VZ_4_4_{{>228bH!,//W>N448444FF"#GHHH G NOOO##%% 	TW__->-> 	TRSSS"C,=,=P\I]I]hthyhyh{h{  iD  E  Es7||vgY`YeYeYgYgYopp

  U5$(+F{U[U`U`UbUbUjkk*-n*=*=P^I_I_!`!`-0__zHZHZ$[$[03M0B0BfUbNcNc'd'd0="+//0A0EFFPPRR	
 	
 	L'***~&H  CK  ""4<<>>2226>>FGGG;;== 	d||s8},,		0Cs7|0S0S"#BD#B#BCCCKKMMM

:
:
:
:
::: 53444>> Bvf~~<<@AAA



 1 5
6
6
@
@
B
BCNN4C/Q/Q/Q/Q/Q,Q,Q$'KK;QWQ\Q\Q^Q^Qfgg
 
 
 
6
 
 
 ,=X+F+FX[     g&&&   N  \ \"8S%88a'*4+;+;D+A+A'B'BfUYll[[sHo t tx%%||~~ 	D!4!9!9BSBBCCC!$T%5%5d%;%;!<!<t_c_h_h_j_j_rsshw'((J - -!,#XXhw&7&=&=&?&?XXXH FD(DDEEE4("c"cZb"c"c"c$%FGooGDe<f<l<l<n<nooo15@QRR J ,,,$HX"-HWh#.HWi &1HWl#%0dsS_SkSklpSqSqOrOr  DK  LY  DZ  lo  p  pHY(3RUVeVqVqrvVwVwRxRx  KN  O  OH\ H\(###	$*gVcNd|  AP  }Q  }Q  R  R  af  g  g  g  h  h  h  h  hr   __main__)r   r   importlib.utilrN   r0   r2   pathlibr   __file__r   r"   r   r   r   r5   r>   re   r   __name__r   r   r
   <module>r      s           				      tH~~'*00          Ah Ah AhH zDFFFFF r   