Ë
    ëBæj_  ã                  ó6  — d Z ddlmZ ddlmZmZ ddlmZ ddlZ e	h d£«      Z
ddd	d
œZ e	ddh«       e	h d£«       e	ddh«       e	h d£«       e	ddh«      fZ e	h d£«      Z ed¬«      dd„«       Z ed¬«       G d„ d«      «       Zd d„Zd!d„Zd"d„Zd#d„Zy)$a  Language resolution: any user or container language label -> one record every layer uses.

Accepts BCP-47 tags (es-419, pt-BR, zh-Hant), ISO 639-1/2/3 codes (es, spa, chi, ger) and English
names ("Latin American Spanish", "hindi"). Nothing else in the pipeline hardcodes a language.
é    )Úannotations)ÚasdictÚ	dataclass)Ú	lru_cacheN>	   ÚHaniÚHansÚHantÚJpanÚKhmrÚLaooÚMymrÚThaiÚTibtÚjwÚtlÚno)ÚjvÚfilÚnbÚhiÚur>   ÚbsÚhrÚsrÚmsÚid>   Údar   Únnr   ÚzhÚyue>   ÚmisÚmulÚundÚzxxé   )Úmaxsizec                 ó$   — ddl m}  t        | «      S )Nr   ©Ú_LANGUAGE_CODES)Úfaster_whisper.tokenizerr)   Ú	frozensetr(   s    ú0/root/repos/pocs/video-evals/src/dubeval/lang.pyÚ_whisper_codesr-      s   € å8ä�_Ó%Ð%ó    T)Úfrozenc                  óZ   — e Zd ZU ded<   ded<   ded<   ded<   ded<   edd	„«       Zdd
„Zy)ÚLangÚstrÚtagÚbaseÚnameú
str | NoneÚwhisperÚboolÚspacedc                ó"   — | j                   rdS dS )Nú Ú )r9   ©Úselfs    r,   ÚjoinerzLang.joiner&   s   € à—k’kˆsÐ) rÐ)r.   c                ó   — t        | «      S ©N)r   r=   s    r,   Úto_dictzLang.to_dict*   s   € Ü�d‹|Ðr.   N)Úreturnr2   )rC   Údict)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Úpropertyr?   rB   © r.   r,   r1   r1      s3   … à	ƒHØ
ƒIØ
ƒIØÓØƒLàò*ó ð*ôr.   r1   c                ón   — | j                   }|r%|t        v st        |«      dk(  rd|cxk  rdk  ry  | S y | S )Né   ÚqaaÚqtz)ÚlanguageÚ_NOT_A_LANGUAGEÚlen)ÚxÚlangs     r,   Ú	_languagerT   .   sE   € Ø�:‰:€DÙ�4œ?Ñ*¬s°4«y¸Aª~À%È4ÔBXÐSXÒBXØð CYà€Hð Ø€Hr.   c                ó\  — | j                  «       j                  dd«      }	 t        t        j                  |«      rt        j
                  |«      nt        j                  |«      «      }|€t        d| ›d�«      ‚t        j                  |j                  |j                  «      }|j                  xs |j                  «       j                  }t        |j                  «       |j                  |j                  «       |t!        «       v r|nd |t"        v¬«      S # t        t        f$ r d }Y ŒÀw xY w)NÚ_ú-zunknown language z?: use a BCP-47 tag (es-419), ISO 639 code (spa) or English name)r3   r4   r5   r7   r9   )ÚstripÚreplacerT   Ú	langcodesÚtag_is_validÚgetÚfindÚLookupErrorÚ
ValueErrorÚ_WHISPER_ALIASrO   ÚscriptÚmaximizer1   Úto_tagÚdisplay_namer-   ÚNO_SPACE_SCRIPTS)ÚlabelÚsrR   Úwra   s        r,   Úresolveri   5   sô   € Ø�‰‹×Ñ˜c 3Ó'€AðÜ¬)×*@Ñ*@ÀÔ*C”i—m‘m AÔ&ÌÏÉÐXYÓIZÓ[ˆð 	€yÜÐ,¨U¨IÐ5tÐuÓvÐvÜ×Ñ˜1Ÿ:™: q§z¡zÓ2€AØ�X‰XÒ,˜Ÿ™›×,Ñ,€FÜ�A—H‘H“J Q§Z¡Z°a·n±nÓ6FØ¤.Ó"2Ñ2™¸ÀVÔScÐEcôeð eøô œÐ$ò ØŠðús   ¢AD ÄD+Ä*D+c                óÐ   — | sy| j                  «       j                  dd«      }t        j                  |«      syt	        t        j
                  |«      «      }|r|j                  S dS )zZLanguage subtag of a container/stream tag ('spa' -> 'es'); None for missing/'und'/garbage.NrV   rW   )rX   rY   rZ   r[   rT   r\   rO   )r3   rg   rR   s      r,   Úbase_ofrk   C   sU   € áØØ�	‰	‹×Ñ˜C Ó%€AÜ×!Ñ! !Ô$ØÜ”)—-‘- Ó"Ó#€AÙˆ1�:‰:Ð$ Ð$r.   c                ól   ‡ ‡— ‰ r‰syd„ ‰ ‰fD «       \  Š Š‰ ‰k(  xs t        ˆ ˆfd„t        D «       «      S )NFc              3  ó:   K  — | ]  }t        |«      xs |–— Œ y ­wrA   )rk   )Ú.0Úvs     r,   ú	<genexpr>z same_language.<locals>.<genexpr>Q   s   è ø€ Ò, ŒG�A‹JŠO˜!‹OÑ,ùs   ‚c              3  ó2   •K  — | ]  }‰|v xr ‰|v –— Œ y ­wrA   rJ   )rn   ÚgÚaÚbs     €€r,   rp   z same_language.<locals>.<genexpr>R   s!   øè ø€ Ò@¨q˜˜a˜Ò* A¨ FÓ*Ñ@ùs   ƒ)ÚanyÚ_CONFUSABLE)rs   rt   s   ``r,   Úsame_languagerw   N   s7   ù€ Ù‘AØÙ, a¨ VÔ,�D€A€qØ�‰6Ò@”SÔ@´KÔ@Ó@Ð@r.   )rC   zfrozenset[str])rR   zlangcodes.LanguagerC   zlangcodes.Language | None)rf   r2   rC   r1   )r3   r6   rC   r6   )rs   r6   rt   r6   rC   r8   )Ú__doc__Ú
__future__r   Údataclassesr   r   Ú	functoolsr   rZ   r+   re   r`   rv   rP   r-   r1   rT   ri   rk   rw   rJ   r.   r,   ú<module>r|      sÈ   ðñõ
 #ç )Ý ã ñ ÒeÓfÐ à T°Ñ6€á˜$ ˜Ó&©	Ò2DÓ(EÁyÐRVÐX\ÐQ]ÓG^ÙÒ1Ó2±I¸tÀU¸mÓ4LðN€áÒ8Ó9€ñ �1Ôò&ó ð&ñ �$Ô÷ð ó ðóóeó%ôAr.   