
    bjr	                     P    d dl Zd dlmc mZ d dlmZmZm	Z	m
Z
 d Zd Zd Zd ZdS )    N)SubtitleCueSubtitleStylebuild_hormozi_subtitle_trackvalidate_subtitle_trackc                  |   t          dd          } | 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}}| j
        }t          j        } |            }||k    }|st          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        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }dd|iz  }	t          t          j	        |	                    d x}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}}| 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         }
|
j        }d}||k    }|st          j        d|fd||f          t          j        |
          t          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}x}}| j        d         }
|
j        }d}||k    }|st          j        d|fd||f          t          j        |
          t          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
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 S )#NzgMost AI automations do not fail dramatically. They quietly rot when the workflow has no exception path.   total_duration_secondsTis)z6%(py2)s
{%(py2)s = %(py0)s.renderer_owned
} is %(py5)strackpy0py2py5assert %(py7)spy7==)zj%(py2)s
{%(py2)s = %(py0)s.style
} == %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.hormozi_inspired
}()
}r   r   r   py4py6py8assert %(py10)spy10 )z4%(py2)s
{%(py2)s = %(py0)s.side_effects
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.external_calls
} == %(py5)sr   )z0%(py3)s
{%(py3)s = %(py1)s.start_ms
} == %(py6)s)py1py3r   assert %(py8)sr   i@  )z.%(py3)s
{%(py3)s = %(py1)s.end_ms
} == %(py6)sc              3   ~   K   | ]8}d t          |j                                                  cxk    odk    nc V  9dS )      N)lentextsplit.0cues     R/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_subtitle_cues.py	<genexpr>z^test_build_hormozi_subtitle_track_chunks_text_into_renderer_owned_safe_cues.<locals>.<genexpr>   sR      EE3qC(())....Q....EEEEEE    z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}allr   r   r   c              3   z   K   | ]6}|j         |j                                                                        v V  7d S N)active_wordr%   upperr&   r'   s     r*   r+   z^test_build_hormozi_subtitle_track_chunks_text_into_renderer_owned_safe_cues.<locals>.<genexpr>   sA      QQss#(.."2"2"8"8":"::QQQQQQr,   c              3   ,   K   | ]}|j         d k    V  dS )r"   N)	max_linesr'   s     r*   r+   z^test_build_hormozi_subtitle_track_chunks_text_into_renderer_owned_safe_cues.<locals>.<genexpr>   s)      88cs}!888888r,   c              3   $   K   | ]}|j         V  d S r0   )renderer_ownedr'   s     r*   r+   z^test_build_hormozi_subtitle_track_chunks_text_into_renderer_owned_safe_cues.<locals>.<genexpr>   s%      88cs!888888r,   )r   r6   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationstyler   hormozi_inspiredside_effectsexternal_callscuesstart_msend_msr-   )r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert5@py_assert7@py_format9@py_format11@py_assert0@py_assert2@py_format7@py_format5s                 r*   Ktest_build_hormozi_subtitle_track_chunks_text_into_renderer_owned_safe_cuesrS   	   st   (q   E
 '4'4''''''''''4''''''''''''5'''''5''''''''''4''''''''''''''''''''''''''';:-8:88:::;:::::::::::;:::::::::::::5:::::5::::::;:::::::::::-:::::-::::::8::::::::::::::::::::::::::::::::::########################5#####5#####################################%2%2%%%%%%%%%%2%%%%%%%%%%%%5%%%%%5%%%%%%%%%%2%%%%%%%%%%%%%%%%%%%%%%%%%%%:a=&=!&Q&!Q&&&&&&&&&&!Q&&&&&=&&&&!&&&&Q&&&&&&&&&&&&&&&&&&&&&&&&&&&&&:b>(> (D( D(((((((((( D(((((>(((( ((((D(((((((((((((((((((((((((((((EE%*EEEE3EEEEEEEEEEEEEEEE3EEEEE3EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEQQejQQQQ3QQQQQQQQQQQQQQQQ3QQQQQ3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88UZ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88UZ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88r,   c            	         t          dd          } d}| j        D ]}|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d	z  }d
d|iz  }t          t          j
        |                    d x}}|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}}|j        }| 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        |          t          j        |	          dz  }dd|iz  }
t          t          j
        |
                    d x}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        |          dz  }dd|iz  }t          t          j
        |                    d x}}d S )NzEPrompt is not system. Workflow boundaries create reliable automation.   r	   r   r   )z0%(py2)s
{%(py2)s = %(py0)s.start_ms
} == %(py4)sr)   previous_endr.   zassert %(py6)sr   )>)zK%(py2)s
{%(py2)s = %(py0)s.end_ms
} > %(py6)s
{%(py6)s = %(py4)s.start_ms
})r   r   r   r   r   r   )zs%(py2)s
{%(py2)s = %(py0)s.emphasis_color
} == %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.style
}.accent_color
}r   r   r   r   ip  )z%(py0)s == %(py3)s)r   r   zassert %(py5)sr   )r   rC   rD   r7   r8   r9   r:   r;   r<   r=   r>   rE   emphasis_colorr?   accent_color)r   rV   r)   rF   rH   rR   rQ   rK   rM   rL   rN   rP   @py_format4rI   s                 r*   Ntest_build_hormozi_subtitle_track_uses_continuous_timing_and_emphasis_metadatar[      sX   (O   E
 Lz " "|+||++++++++++||++++++++++++s+++++s++++++|+++++++++++|+++++|+++++++++++++++++++++++++++z(CL(zL((((((((((zL((((((((((((s(((((s((((((z(((((((((((C(((((C((((((L(((((((((((((((((((((((((((!=U[=[%==!%===========!%=============s=====s======!===========U=====U======[====%==============================z<4<4<<4r,   c                     t          ddddd          } t          dd	                              | f          }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 S )NzTHIS CUE HAS FAR TOO MANY WORDSr   i  TOOF)r%   rD   rE   r1   r6   zshort valid textr"   r	   r   )z0%(py2)s
{%(py2)s = %(py0)s.is_valid
} is %(py5)s
validationr   r   r   z%subtitle cue 1 must be renderer-owned)in)z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.errors
})r   r   r   z&subtitle cue 1 must contain 2..5 words)r   r   	with_cuesr   is_validr7   r8   r9   r:   r;   r<   r=   r>   errors)
r)   r   r^   rF   rG   rH   rI   rJ   rO   rP   s
             r*   Ltest_validate_subtitle_track_rejects_non_renderer_owned_and_overcrowded_cuesrc   *   s	   
.  C ));TUVVV``beaghhE(//J'%'%''''''''''%'''''''''''':''''':''''''''''%'''''''''''''''''''''''''''2Gj6GG26GGGGGGGGGGG26GGGGGG2GGGGGGGGGGGjGGGGGjGGGGGG6G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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HHr,   c                  .   dD ]\  } }	 t          | |           t          d          # t          $ r}t          |          }|sd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        |          dz  }t          t          j	        |                    d }Y d }~
d }~ww xY wd S )N))    )z
valid textr   r	   zexpected ValueErrorz,assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}strexc)r   r   r   )
r   r=   
ValueErrorrg   r9   r:   r7   r;   r<   r>   )r%   durationrh   rP   rZ   s        r*   Etest_build_hormozi_subtitle_track_rejects_blank_text_and_bad_durationrk   ;   s    6 8 8h	8(hOOOO !!6777  	 	 	s88O8OOOOOOOOOOO3OOOOO3OOOOOOOOOOOOOsOOOOOsOOOOOO8OOOOOOOOOOOOOOOOOOOOOO	8 8s   *
DCDD)builtinsr9   _pytest.assertion.rewrite	assertionrewriter7   autoshorts.audio.subtitlesr   r   r   r   rS   r[   rc   rk   r   r,   r*   <module>rq      s                             9 9 9$     I I I"8 8 8 8 8r,   