
    \yj
                     d    d dl Zd dlmc mZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d Zd ZdS )    N)Path)build_truetrace_final_voiceover),build_truetrace_weird_email_final_video_plan)SceneBackgroundPlan)build_chatgpt_image_scene_background_planvalidate_scene_background_planc                 :   t          d          }t          |          }t          ||           }t          |t                    }|sd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dt          j                    v st          j        t                    rt          j	        t                    ndt          j	        |          dz  }t          t          j        |                    d }|j        }|j        }||k    }|st          j        d|fd	||f          dt          j                    v st          j        |          rt          j	        |          ndt          j	        |          d
t          j                    v st          j        |          rt          j	        |          nd
t          j	        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}d |j        D             }
d |j        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 |j        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 |j        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 |j        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 |j        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 |j        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}}|j        }d}||k    }|st          j        d|fd||f          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}}|j        }d}||k    }|st          j        d|fd!||f          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 S )"N%truetrace-ai-automation-quiet-rot-38s
output_dirz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstanceplanr   )py0py1py2py4)==)zV%(py2)s
{%(py2)s = %(py0)s.candidate_id
} == %(py6)s
{%(py6)s = %(py4)s.candidate_id
}
final_plan)r   r   r   py6zassert %(py8)spy8c                     g | ]	}|j         
S  scene_id.0assets     V/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_scene_backgrounds.py
<listcomp>zbtest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<listcomp>   s    444uEN444    c                     g | ]	}|j         
S r   r   )r   scenes     r   r   zbtest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<listcomp>   s    8g8g8gE8g8g8gr    )z%(py1)s == %(py4)s)r   r   zassert %(py6)sr   c              3   ,   K   | ]}|j         d k    V  dS )chatgpt_image_codexN)providerr   s     r   	<genexpr>zatest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<genexpr>   s*      PP5u~!66PPPPPPr    z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)r   r   r   c              3   J   K   | ]}|j                             d           V  dS )z.pngN)output_pathendswithr   s     r   r&   zatest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<genexpr>   s3      KKeu ))&11KKKKKKr    c              3   L   K   | ]}d |j                                         v V   dS )zno readable textNpromptcasefoldr   s     r   r&   zatest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<genexpr>   s6      VV!U\%:%:%<%<<VVVVVVr    c              3   L   K   | ]}d |j                                         v V   dS )zno logosNr,   r   s     r   r&   zatest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<genexpr>   s5      NNzU\22444NNNNNNr    c              3   (   K   | ]}|j         d u V  dS )TN)renderer_owned_overlay_requiredr   s     r   r&   zatest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specific.<locals>.<genexpr>   s*      VVu4<VVVVVVr    r   )z4%(py2)s
{%(py2)s = %(py0)s.side_effects
} == %(py5)sr   r   py5assert %(py7)spy7)z6%(py2)s
{%(py2)s = %(py0)s.external_calls
} == %(py5)s)r   r   r   r   r   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanationcandidate_id_call_reprcompareassetsscenesr'   side_effectsexternal_calls)tmp_path	voiceoverr   r   @py_assert3@py_format5@py_assert1@py_assert5@py_format7@py_format9@py_assert0@py_assert2@py_assert4@py_format6@py_format8s                  r   Ntest_build_chatgpt_image_scene_background_plan_is_text_free_and_scene_specificrP      s   /0WXXI=iHHJ4ZHUUUDd/000000000000000:00000:0000000000000d00000d0000000000000/00000/000000000000000000000000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74777774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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7744444g8g8gU_Uf8g8g8gg48ggggggggggg48gggggg4gggg8ggggggggggggggggggggggggggggPPDKPPPP3PPPPPPPPPPPPPPPP3PPPPP3PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPKKt{KKKK3KKKKKKKKKKKKKKKK3KKKKK3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KKKVV$+VVVV3VVVVVVVVVVVVVVVV3VVVVV3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVNN$+NNNN3NNNNNNNNNNNNNNNN3NNNNN3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNVV$+VVVV3VVVVVVVVVVVVVVVV3VVVVV3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV""""""""""""""""""""""""4"""""4"""""""""""""""""""""""""""""""""""""$"$"$$$$$$$$$$"$$$$$$$$$$$$4$$$$$4$$$$$$$$$$"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$r    c           	         t          d          }t          |          }t          ||           }|j        d                             dddt          | dz            d	          }|                    |j        |fd
d          }t          |          }|j        }d}||u }	|	st          j
        d|	fd||f          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}|j        }||v }|st          j
        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}d}|j        }||v }|st          j
        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}d}|j        }||v }|st          j
        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}d}|j        }||v }|st          j
        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}d}|j        }||v }|st          j
        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}d}|j        }||v }|st          j
        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}d S )Nr
   r   r   z
clean-demor$   z1Generate a dashboard with readable text and logoszbad.jpgF)r   r%   r-   r)   r1   )call_image_api)openai)r=   r?   rA   rB   )is)z0%(py2)s
{%(py2)s = %(py0)s.is_valid
} is %(py5)s
validationr2   r4   r5   z0scene background plan must not have side effects)in)z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.errors
})r   py3r3   z2scene background plan must not have external callsz&asset 1 output_path must end with .pngz3asset 1 prompt must explicitly forbid readable textz+asset 1 prompt must explicitly forbid logosz(asset 1 requires renderer-owned overlays)r   r   r   r?   	__class__strr=   r   is_validr8   r>   r6   r7   r9   r:   r;   r<   errors)rC   rD   r   validbroken_assetbrokenrU   rG   rM   rE   rN   rO   rK   rL   s                 r   @test_validate_scene_background_plan_rejects_text_or_side_effectsr_      s   /0WXXI=iHHJ5jXVVVE<?,,&B9,--(- -  L __'("	   F 077J'%'%''''''''''%'''''''''''':''''':''''''''''%'''''''''''''''''''''''''''=RARR=ARRRRRRRRRRR=ARRRRRR=RRRRRRRRRRRRRRRRRRRRRRARRRRRRRRRRRRRRRRRRRRRRRRRRRR?T:CTT?CTTTTTTTTTTT?CTTTTTT?TTTTTTTTTTT:TTTTT:TTTTTTCTTTTTTTTTTTTTTTTTTTTTTTTTTTT3Hz7HH37HHHHHHHHHHH37HHHHHH3HHHHHHHHHHHzHHHHHzHHHHHH7HHHHHHHHHHHHHHHHHHHHHHHHHHHH@UJDUU@DUUUUUUUUUUU@DUUUUUU@UUUUUUUUUUUJUUUUUJUUUUUUDUUUUUUUUUUUUUUUUUUUUUUUUUUUU8MJ<MM8<MMMMMMMMMMM8<MMMMMM8MMMMMMMMMMMJMMMMMJ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5J9JJ59JJJJJJJJJJJ59JJJJJJ5JJJJJJJJJJJJJJJJJJJJJJ9JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJr    )builtinsr6   _pytest.assertion.rewrite	assertionrewriter8   pathlibr   autoshorts.audio.voiceoverr   %autoshorts.rendering.final_video_planr   &autoshorts.rendering.scene_backgroundsr   r   r   rP   r_   r   r    r   <module>rh      s                        F F F F F F ^ ^ ^ ^ ^ ^         % % %$K K K K Kr    