
    nj                         d dl Zd dlmc mZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZ d	efd
Zd Zd Zd Zd ZdS )    N)Path)load_testbatch)build_mechanism_shot_plan)build_render_manifestwrite_render_manifests)PILOT_IDEASbuild_mechanism_explainer)build_shot_plan)finalize_voiceover	script_idc                      t          t          d                    }t           fd|d         D                       }t          t	          |                    S )Nzdata/drafts/testbatch_002.jsonc              3   4   K   | ]}|d          k    |V  dS )idN ).0itemr   s     F/home/agent/jarvis_runtime/AutoShortsBot/tests/test_render_manifest.py	<genexpr>z_shot_plan.<locals>.<genexpr>   s1      KK4:3J3J3J3J3J3JKK    ideas)r   r   nextr
   r   )r   batchideas   `  r   
_shot_planr      sV    4 @AABBEKKKKwKKKKKD-d33444r   c                     t          d          } t          |           }|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d	         d
         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d	         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d	         d         }ddd}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         d         }| d         d         d         }||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         d         d         }d }||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d! |d         D             }t          |          }|sd"d#t          j	                    v st          j
        t                    rt          j        t                    nd#t          j        |          t          j        |          d$z  }t          t          j        |                    d x}}|d%         d&         }d'}||u }|slt          j        d(|fd)||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )*Nai-004schema_versionrender_manifest.v1==z%(py1)s == %(py4)spy1py4assert %(py6)spy6videor   aspect_ratioz9:16
resolutioni8  i  )widthheighttimeliner   trackvisualstart_msduration_ms)>)z%(py1)s > %(py4)stypekinetic_texttextsceneson_screen_textstylesafe_area_pct   c              3   .   K   | ]}|d          dk    V  dS )r-   captionsNr   r   r   s     r   r   zQtest_build_render_manifest_maps_shot_plan_to_renderer_contract.<locals>.<genexpr>!   s+      LLttG}
*LLLLLLr   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anypy0py2r$   render_constraintsavoid_static_slideshowT)is)z%(py1)s is %(py4)s)r   r   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationr>   @py_builtinslocals_should_repr_global_name)planmanifest@py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert1s           r   >test_build_render_manifest_maps_shot_plan_to_renderer_contractrU      s   hD$T**H$%=)==%)===========%)======%====)============================GT".h."h.........."h....."....h...........................G^,66,6666666666,66666,6666666666666666666666666666666G\*M.M.MM*.MMMMMMMMMMM*.MMMMMM*MMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMJ"7+7x7+x7777777777+x77777+7777x777777777777777777777777777J":.3!3.!3333333333.!33333.3333!333333333333333333333333333J"=15A51A55555555551A5555515555A555555555555555555555555555J"6*<n<*n<<<<<<<<<<*n<<<<<*<<<<n<<<<<<<<<<<<<<<<<<<<<<<<<<<J"6*Qd8nQ.?@P.QQ*.QQQQQQQQQQQ*.QQQQQQ*QQQQ.QQQQQQQQQQQQQQQQQQQQQQQQQQQQJ"7+O<AA<AAAAAAAAAA<AAAAA<AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALLx
7KLLLL3LLLLLLLLLLLLLLLL3LLLLL3LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL()*BCKtKCtKKKKKKKKKKCtKKKKKCKKKKtKKKKKKKKKKKKKKKKKKKKKKKKKKKKKr   c                     t          d          } t          |           }d |d         D             }d |D             }t          |          }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }t          t          j	        |                    d x}}d |D             }t          |          }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }t          t          j	        |                    d x}}d	 |D             }t          |          }|sdd
t          j                    v st          j        t                    rt          j        t                    nd
t          j        |          t          j        |          dz  }t          t          j	        |                    d x}}|d         d         }|s:ddt          j        |          iz  }t          t          j	        |                    d }|d         d         }|s:ddt          j        |          iz  }t          t          j	        |                    d }d S )Nattention-002c                 *    g | ]}|d          dk    |S r-   r.   r   r<   s     r   
<listcomp>zNtest_build_render_manifest_uses_asset_placeholders_by_type.<locals>.<listcomp>*   &    WWWTT']h=V=VD=V=V=Vr   r,   c              3   .   K   | ]}|d          dk    V  dS )r2   stock_brollNr   r<   s     r   r   zMtest_build_render_manifest_uses_asset_placeholders_by_type.<locals>.<genexpr>+   s+      FFtF|},FFFFFFr   r=   r>   r?   c              3   .   K   | ]}|d          dk    V  dS )r2   card_animationNr   r<   s     r   r   zMtest_build_render_manifest_uses_asset_placeholders_by_type.<locals>.<genexpr>,   s,      IIDtF|//IIIIIIr   c              3   L   K   | ]}|d                               d          V   dS )	asset_refzplaceholder://N)
startswithr<   s     r   r   zMtest_build_render_manifest_uses_asset_placeholders_by_type.<locals>.<genexpr>-   s6      WW$tK ++,<==WWWWWWr   allasset_requirementsr]   assert %(py1)sr#   screen_recording)r   r   r>   rJ   rK   rE   rL   rG   rH   rI   rc   )rM   rN   visual_itemsrT   rP   rR   rO   @py_format2s           r   :test_build_render_manifest_uses_asset_placeholders_by_typeri   %   s	   o&&D$T**HWWXj%9WWWLFFFFFF3FFFFFFFFFFFFFFFF3FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFIILIIII3IIIIIIIIIIIIIIII3IIIII3IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIWW,WWWW3WWWWWWWWWWWWWWWW3WWWWW3WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW()-8888888888888888888888888()*<===========================r   c                    t          d          t          d          t          d          g}t          ||           }t          |          }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          d	z  }d
d|iz  }t          t          j
        |                    d x}x}}d |D             }t          |          }	|	sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |	          dz  }
t          t          j
        |
                    d x}}	t          j        |d                             d                    }|d         }d}	||	k    }|slt          j        d|fd||	f          t          j        |          t          j        |	          dz  }
dd|
iz  }t          t          j
        |                    d x}x}}	d}||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j
        |                    d x}}|d         }t          |          }	d }|	|k    }|st          j        d!|fd"|	|f          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |	          t          j        |          d#z  }d$d%|iz  }t          t          j
        |                    d x}x}	x}}d S )&Nr   zai-005rW      r   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenpaths)r@   r#   py3r&   zassert %(py8)spy8c              3   ,   K   | ]}|j         d k    V  dS )z.jsonN)suffix)r   paths     r   r   zGtest_write_render_manifests_outputs_valid_json_files.<locals>.<genexpr>8   s)      88$t{g%888888r   r=   rc   r?   r   zutf-8)encodingr   r   r!   r"   r%   r&   r,   )in)z%(py1)s in %(py3)spayload)r#   rn   zassert %(py5)spy5
   )>=)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} >= %(py7)s)r@   rA   r$   py7zassert %(py9)spy9)r   r   rl   rE   rF   rJ   rK   rL   rG   rH   rI   rc   jsonloads	read_text)tmp_pathplansrm   rQ   @py_assert5@py_assert4rS   @py_format9rT   rP   rR   ru   rO   @py_format4@py_format6@py_assert6@py_format8@py_format10s                     r   4test_write_render_manifests_outputs_valid_json_filesr   2   s   !!:h#7#7O9T9TUE"5(33Eu:::?:33uu:88%88883888888888888888838888838888888888888888888888888888888jq++W+==>>G#$<(<<$(<<<<<<<<<<<$(<<<<<<$<<<<(<<<<<<<<<<<<<<<<<<<<<<<<<<<< :          :     :                                           z")3"##)r)#r))))))))))#r))))))))))))3)))))3))))))"))))#))))r)))))))))))))))))))))))))))))))r   c                     t          t          d                   } t          |           }t          |          }d |d         D             }|d         d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}d |D             }g d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}|d         d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}|d         d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}|d         d         d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}|d         d         }|s:ddt	          j        |          iz  }	t          t	          j        |	                    d }|d         d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}|d         d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          d	z  }d
d|iz  }t          t	          j        |                    d x}x}}d S )Nr   c                 *    g | ]}|d          dk    |S rY   r   r<   s     r   rZ   zXtest_build_render_manifest_preserves_mechanism_motion_and_sound_cues.<locals>.<listcomp>E   r[   r   r,   r'   r   z<hidden-money-systems-warum-ein-billiges-auto-teuer-sein-kannr   r!   r"   r%   r&   c                     g | ]
}|d          S )r2   r   r<   s     r   rZ   zXtest_build_render_manifest_preserves_mechanism_motion_and_sound_cues.<locals>.<listcomp>G   s    222TDL222r   )cinematic_ai_videor   mechanism_animationr   kinetic_text_overlayvisual_motionz)hard zoom, freeze-frame, red signal pulse	sound_cuezbass hit + camera snap   r7   layoutxray_layer_revealrd   r   re   r#   rB   max_static_cardsvisual_change_every_seconds)	r	   r   r   r   rE   rF   rG   rH   rI   )
	explainerrM   rN   rg   rO   rP   rQ   rR   rS   rh   s
             r   Dtest_build_render_manifest_preserves_mechanism_motion_and_sound_cuesr   ?   s   )+a.99I$Y//D$T**HWWXj%9WWWLGT"d&dd"&ddddddddddd"&dddddd"dddd&dddddddddddddddddddddddddddd22\222  7 7 7 2 7        2 7     3   7                          ??+Z/ZZ+/ZZZZZZZZZZZ+/ZZZZZZ+ZZZZ/ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ?;'C+CC'+CCCCCCCCCCC'+CCCCCC'CCCC+CCCCCCCCCCCCCCCCCCCCCCCCCCCC?7#H-D1DD-1DDDDDDDDDDD-1DDDDDD-DDDD1DDDDDDDDDDDDDDDDDDDDDDDDDDDD()*?@@@@@@@@@@@@@@@@@@@@@@@@@()*<=BB=BBBBBBBBBB=BBBBB=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB()*GHMAMHAMMMMMMMMMMHAMMMMMHMMMMAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMr   )builtinsrJ   _pytest.assertion.rewrite	assertionrewriterE   r{   pathlibr   autoshorts.growth_planr   autoshorts.mechanism_pipeliner   autoshorts.render_manifestr   r   autoshorts.retention_studior   r	   autoshorts.shot_plannerr
   autoshorts.voiceover_finalizerr   strr   rU   ri   r   r   r   r   r   <module>r      s                       1 1 1 1 1 1 C C C C C C T T T T T T T T N N N N N N N N 3 3 3 3 3 3 = = = = = =5# 5 5 5 5L L L&
> 
> 
>
* 
* 
*N N N N Nr   