Ë
    ëBæj¨  ã                   óv  — d Z ddlZddlmc mZ ddlZddl	Z	ddl
mZmZmZ ddlmZ ddlmZmZmZ e	j(                  j+                  dg d¢«      d„ «       Zd	„ Ze	j(                  j+                  d
g d¢«      d„ «       Ze	j(                  j+                  dg d¢«      d„ «       Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z d„ Z!y)zcLanguage resolution and dub-stream selection: the parts that must hold for any m x n language pair.é    N)Úbase_ofÚresolveÚsame_language)Útext_in)Úchoose_dubsÚeffective_langÚis_passthroughzlabel,tag,whisper,spaced)
)zLatin American Spanishúes-419ÚesT)Úes_419r
   r   T)Úspar   r   T)ÚgerÚder   T)zpt-brzpt-BRÚptT)úzh-Hantr   ÚzhF)Újar   r   F)Úthr   r   F)Újvr   ÚjwT)Úfilr   ÚtlTc                 ó\  — t        | «      }|j                  |j                  |j                  f}|||f}||k(  }|slt	        j
                  d|fd||f«      t	        j                  |«      t	        j                  |«      dœz  }dd|iz  }	t        t	        j                  |	«      «      ‚d x}x}}y )N©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6)	r   ÚtagÚwhisperÚspacedÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanation)
Úlabelr"   r#   r$   ÚlangÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s
             ú4/root/repos/pocs/video-evals/tests/test_languages.pyÚ1test_resolve_maps_any_label_to_whisper_and_scriptr2   
   sw   € ô �5‹>€DØ�H‰H�d—l‘l D§K¡KÐ0ÐJ°S¸'À6Ð4JÐJÐ0Ð4JÑJ×J×JÕJÐ0Ð4J×J×JÓJÐ0×J×JÒJÐ4J×J×J×J×J×J×JÔJó    c                  óš  — t        d«      } g }| j                  }d}||k(  }|}|r| j                  }d }||u }|}|�s€t        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  }
|j                  |
«       |r t        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  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}}y )NÚtlhr   )z+%(py4)s
{%(py4)s = %(py2)s.tag
} == %(py7)sr+   )Úpy2r   Úpy7z%(py9)sÚpy9©Úis)z3%(py13)s
{%(py13)s = %(py11)s.whisper
} is %(py16)s)Úpy11Úpy13Úpy16z%(py18)sÚpy18r   zassert %(py21)sÚpy21)r   r"   r#   r%   r&   Ú@py_builtinsÚlocalsÚ_should_repr_global_namer'   ÚappendÚ_format_boolopr(   r)   )r+   Ú@py_assert1r-   Ú@py_assert6Ú@py_assert5r,   Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_format8Ú@py_format10Ú@py_format17Ú@py_format19Ú@py_format20Ú@py_format22s                  r1   ÚMtest_resolve_language_whisper_does_not_know_keeps_tag_and_disables_forced_asrrQ      sø   € Ü�5‹>€DÙ5ˆ4�8‰8Ð5�uÐ5ˆ8�uÑÔ5 §¡Ð5°Ð5 °Ð!5×5×5×5Ð5ˆ8�u×5×5×5×5×5Ñ5ˆ4×5×5Ó5ˆ4×5×5Ô5ˆ8×5×5Ò5�u×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×5×5×5×5×5×5×5×5×5r3   Úbad)Úundzxx-yyÚqaac                 óv   — t        j                  t        «      5  t        | «       d d d «       y # 1 sw Y   y xY w)N)ÚpytestÚraisesÚ
ValueErrorr   )rR   s    r1   Ú"test_resolve_rejects_non_languagesrY       s*   € ä	�‰”zÓ	"ñ Ü�Œ÷÷ ñ ús   š/¯8r"   )NÚ rS   rT   Úzxxz	not a tagc                 ó"  — t        | «      }d }||u }|söt        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}}y )Nr9   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   r"   )Úpy0r   Úpy3r!   zassert %(py8)sÚpy8)	r   r%   r&   r@   rA   rB   r'   r(   r)   )r"   r.   rG   Ú@py_assert4r0   Ú@py_format9s         r1   Ú(test_unusable_container_tags_are_unknownrb   &   sŽ   € ä�3‹<Ð˜4Ðˆ<˜4Ð××Õˆ<˜4×××××ÑŒ7××ÓŒ7×××××Ò�3××Ó�3××Ôˆ<××Ò˜4××××××Ôr3   c                  ó   — d} d}t        | |«      }|s©ddt        j                  «       v st        j                  t         «      rt        j
                  t         «      ndt        j
                  | «      t        j
                  |«      t        j
                  |«      dœz  }t        t        j                  |«      «      ‚d x} x}}d} d}t        | |«      }|s©ddt        j                  «       v st        j                  t         «      rt        j
                  t         «      ndt        j
                  | «      t        j
                  |«      t        j
                  |«      dœz  }t        t        j                  |«      «      ‚d x} x}}d} d	}t        | |«      }| }|s©d
dt        j                  «       v st        j                  t         «      rt        j
                  t         «      ndt        j
                  | «      t        j
                  |«      t        j
                  |«      dœz  }t        t        j                  |«      «      ‚d x} x}x}}d } d	}t        | |«      }| }|s©d
dt        j                  «       v st        j                  t         «      rt        j
                  t         «      ndt        j
                  | «      t        j
                  |«      t        j
                  |«      dœz  }t        t        j                  |«      «      ‚d x} x}x}}y )Nr   r
   z5assert %(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
}r   )r]   r6   r   r!   ÚhinÚurÚengÚhiz9assert not %(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
})r   r@   rA   r%   rB   r'   r(   r)   )rE   r-   rG   r0   Ú@py_assert7rK   s         r1   ÚHtest_same_language_ignores_region_and_code_length_and_groups_confusablesri   +   s¼  € ØÐ) Ð)Œ=˜ Ó)Ð)Ñ)×)×)×)×)Õ)Œ=×)×)Ó)Œ=×)×)Ô)˜×)×)Ò) ×)×)Ò)Ð)×)×)×)×)×)Ô)ØÐ% Ð%Œ=˜ Ó%Ð%Ñ%×%×%×%×%Õ%Œ=×%×%Ó%Œ=×%×%Ô%˜×%×%Ò% ×%×%Ò%Ð%×%×%×%×%×%Ô%Ø"Ð) DÐ)Œ}˜U DÓ)Ð)Ð)Ð)Ð)Ñ)×)×)×)×)Õ)Œ}×)×)Ó)Œ}×)×)Ô)˜U×)×)Ò) D×)×)Ò)Ð)×)×)×)×)×)Ö)Ø!Ð( 4Ð(Œ}˜T 4Ó(Ð(Ð(Ð(Ð(Ñ(×(×(×(×(Õ(Œ}×(×(Ó(Œ}×(×(Ô(˜T×(×(Ò( 4×(×(Ò(Ð(×(×(×(×(×(×(r3   c                  ó  — d} dddœ}t        | |«      }d}||k(  }|sÝt        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                  |«      t        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x} x}x}x}}d} dddœ}t        | |«      }d}||k(  }|sÝt        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                  |«      t        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x} x}x}x}}d } dddœ}t        | |«      }d}||k(  }|sÝt        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                  |«      t        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x} x}x}x}}y )Nrf   rg   g
×£p=
ï?)r+   Úprobr   )z9%(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
} == %(py9)sr   )r]   r6   r   r!   r8   zassert %(py11)sr;   r   r   g333333Ó?r   )	r   r%   r&   r@   rA   rB   r'   r(   r)   )rE   r-   rG   Ú@py_assert8rh   rL   Ú@py_format12s          r1   Ú6test_confident_detection_overrides_wrong_container_tagrn   2   sÓ  € àÐ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×F×F×F×F×FØÐ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×E×E×E×E×EØÐD¨°sÑ ;Ð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ÐDr3   c                 ó   — | ||dœS )N)Úindexr+   Úpassthrough© )Úir+   rq   s      r1   Ú_crt   9   s   € Ø °[ÑAÐAr3   c                  óö  — t        t        dd«      t        ddd¬«      gdg «      \  } }dg}| |k(  }|s™t        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ddœg}||k(  }|s™t        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}}y )Nr   r   é   rg   T)rq   )r   Nr   ©z%(py0)s == %(py3)sÚpicked©r]   r^   úassert %(py5)sÚpy5zidentical to original audio)rp   ÚreasonÚskipped©
r   rt   r%   r&   r@   rA   rB   r'   r(   r)   )rx   r}   r.   rE   Ú@py_format4Ú@py_format6s         r1   Ú>test_choose_dubs_skips_source_copy_and_source_language_streamsr�   =   sê   € Ü!¤2 a¨£;´°1°dÈÔ0MÐ"NÐPTÐVXÓY�O€FˆGØ�[Ð ˆ6�[Ñ × × Õ ˆ6�[× × × × × Ñ ˆ6× × Ó ˆ6× × Ô �[× × × × × × Ñ Ø!"Ð.KÑLÐMÐMˆ7ÐMÑM×M×MÕMˆ7ÐM×M×M×M×M×MÑMˆ7×M×MÓMˆ7×M×MÔMÐM×M×M×M×M×M×MÒMr3   c                  óü  — t        dd«      t        dd«      t        dd«      t        dd«      g} t        | dddg«      \  }}d	d
g}||k(  }|s™t        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 �ch c]  }|d   ’Œ	 }}ddh}	||	k(  }|slt        j                  d|fd||	f«      t        j                  |«      t        j                  |	«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}}	y c c}w )Nr   r   rv   r   é   Úfré   rg   ©r   r   )rv   r   r   rw   rx   ry   rz   r{   rp   r   r   r    r!   )
rt   r   r%   r&   r@   rA   rB   r'   r(   r)   )Úcandsrx   r}   r.   rE   r   r€   Úsr,   r-   r/   r0   s               r1   Ú;test_choose_dubs_multi_track_filters_by_requested_languagesr‰   C   s  € Ü��4‹[œ"˜Q ›+¤r¨!¨T£{´B°q¸$³KÐ@€EÜ! %¨°°d¨|Ó<�O€FˆGØ Ð+Ð+ˆ6Ð+Ñ+×+×+Õ+ˆ6Ð+×+×+×+×+×+Ñ+ˆ6×+×+Ó+ˆ6×+×+Ô+Ð+×+×+×+×+×+×+Ñ+Ø 'Ö(˜1ˆAˆg‹JÐ(Ð2Ð(¨Q°¨FÐ2Ð(¨FÑ2×2×2Õ2Ð(¨F×2×2Ó2Ð(×2×2Ò2¨F×2×2×2×2×2×2Ô2ùÒ(s   Ã-E9c                  óŠ  — t        t        dd«      gddg«      \  } }dg}| |k(  }|s™t        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}}y )Nr   rg   r   r†   r   rw   rx   ry   rz   r{   r~   )rx   Ú_r.   rE   r   r€   s         r1   ÚBtest_choose_dubs_lone_stream_in_source_language_is_still_evaluatedrŒ   J   sy   € äœR  4›[˜M¨4°$°Ó8�I€FˆAØ�[Ð ˆ6�[Ñ × × Õ ˆ6�[× × × × × Ñ ˆ6× × Ó ˆ6× × Ô �[× × × × × × Ò r3   c                  óÞ  — t         j                  j                  d«      } | j                  d«      j	                  t         j
                  «      }| j                  d«      j	                  t         j
                  «      }t         j                  }d} |||«      }d}||z  }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t        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d	œ	z  }	t        t        j                  |	«      «      ‚d x}x}x}x}x}}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                  |«      rt        j                  |«      ndt        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}}
y )Nr   i S é    g      à?z…assert %(py14)s
{%(py14)s = %(py0)s(%(py1)s, (%(py9)s
{%(py9)s = %(py4)s
{%(py4)s = %(py2)s.roll
}(%(py5)s, %(py7)s)
} * %(py11)s))
}r	   ÚaÚnp)	r]   r   r6   r   r{   r7   r8   r;   Úpy14z9assert not %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}Úb)r]   r   r6   r   )r�   ÚrandomÚdefault_rngÚstandard_normalÚastypeÚfloat32Úrollr	   r@   rA   r%   rB   r'   r(   r)   )Úrngr�   r’   r-   rF   rl   Ú@py_assert10rH   Ú@py_assert13Ú@py_format15rG   r€   s               r1   Ú?test_passthrough_detects_copied_audio_but_not_a_different_trackr�   P   sä  € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜JÓ'×.Ñ.¬r¯z©zÓ:€AØ×Ñ˜JÓ'×.Ñ.¬r¯z©zÓ:€AÜŸW™WÐ3¨Ð3™W Q¨›_Ð3¨sÐ3˜_¨sÑ2Ð3Œ>˜!Ð2Ó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œR×3×3Ó3œR×3×3Ô3˜W×3×3×3×3×3Ð3 Q×3×3Ó3 Q×3×3Ô3¨×3×3Ò3˜_×3×3Ò3¨s×3×3Ò3Ð3×3×3×3×3×3×3Ò3Ü˜a Ó#Ð#Ð#Ð#Ð#Ò#×#×#×#×#Õ#Œ~×#×#Ó#Œ~×#×#×#×#×#Ò#˜a×#×#Ó#˜a×#×#×#×#×#Ò# ×#×#Ó# ×#×#Ô#Ð#×#×#×#×#×#Ó#r3   c            	      óŒ  — ddddœddddœg} | ddœ}d	}d
}t        |||«      }d}||k(  }|sñt        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                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}}| ddœ}d	}d
}t        |||«      }d}||k(  }|sñt        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                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}}y )Ng        gš™™™™™É?u   ã�“ã‚“ã�«ã�¡ã�¯)ÚstartÚendÚwordgš™™™™™Ù?u   ä¸–ç•ŒrZ   )ÚwordsÚjoinerr   rv   u   ã�“ã‚“ã�«ã�¡ã�¯ä¸–ç•Œr   )zC%(py8)s
{%(py8)s = %(py0)s(%(py2)s, %(py4)s, %(py6)s)
} == %(py11)sr   )r]   r6   r   r!   r_   r;   zassert %(py13)sr<   ú u   ã�“ã‚“ã�«ã�¡ã�¯ ä¸–ç•Œ)	r   r%   r&   r@   rA   rB   r'   r(   r)   )	r¢   rE   r-   rG   rh   rš   Ú@py_assert9rm   Ú@py_format14s	            r1   Ú%test_text_join_uses_no_spaces_for_cjkr§   X   sƒ  € Ø 3Ð0AÑBÈcÐZ]ÐgoÑDpÐq€EØ"¨bÑ1ÐS°1ÐS°aÐSŒ7Ð1°1°aÓ8ÐSÐ<SÐSÐ8Ð<SÑS×S×SÕSÐ8Ð<S×S×S×S×S×SÑSŒ7×S×SÓSŒ7×S×SÔSÐ1×S×SÒS°1×S×SÒS°a×S×SÒSÐ8×S×SÒSÐ<S×S×S×S×S×S×S×SÑSØ"¨cÑ2ÐU°AÐU°qÐUŒ7Ð2°A°qÓ9ÐUÐ=UÐUÐ9Ð=UÑU×U×UÕUÐ9Ð=U×U×U×U×U×UÑUŒ7×U×UÓUŒ7×U×UÔUÐ2×U×UÒU°A×U×UÒU°q×U×UÒUÐ9×U×UÒUÐ=U×U×U×U×U×U×U×UÒUr3   )F)"Ú__doc__Úbuiltinsr@   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter%   Únumpyr�   rV   Údubeval.langr   r   r   Údubeval.speechr   Údubeval.tracksr   r   r	   ÚmarkÚparametrizer2   rQ   rY   rb   ri   rn   rt   r�   r‰   rŒ   r�   r§   rr   r3   r1   ú<module>r³      sÍ   ðÙ iß  „ Ó Û ç 8Ñ 8Ý "ß FÑ Fð ‡�×ÑÐ3ò 6ó ñKóðKò
6ð
 ‡�×Ñ˜Ò 7Ó8ñó 9ðð
 ‡�×Ñ˜Ò LÓMñ ó Nð ò)òEóBòNò3ò!ò$óVr3   