
    /j                     p    S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	  SSK
JrJrJr  SS jr " S	 S
\5      rg)z&Normalized BCP-47 language identifier.    )annotations)Any)GetCoreSchemaHandler)
CoreSchemacore_schema   )CODE_TO_LANGUAGE_NAMEISO_639_3_TO_1LANGUAGE_NAMES_TO_CODEc                   U R                  5       R                  5       nU[        ;   a	  [        U   $ U[        ;   a  [        U   nUb  U$ U$ UR	                  SS5      R                  S5      n[        U5      S:  at  US   nU/nUSS  HR  n[        U5      S:X  a!  UR                  UR                  5       5        M3  UR                  UR                  5       5        MT     SR                  U5      $ U$ )u*  Normalize a language code/name to BCP-47 format.

Rules:
- Language names (e.g. "english") → ISO 639-1 ("en")
- ISO 639-3 (e.g. "eng") → ISO 639-1 ("en")
- ISO 639-1 (e.g. "en") → pass-through
- BCP-47 (e.g. "en-US") → normalized casing ("en-US")
- Unknown codes → lowercase pass-through
N_-   r   r      )striplowerr   r
   replacesplitlenappend
capitalizeupperjoin)codeloweredmappedpartslangnormalized_partsparts          H/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/language.py_normalize_languager"      s     jjl  "G ((%g.. . (M OOC%++C0E
5zQQx 6!"ID4yA~ ''(9: !''

5  xx()) N    c                     ^  \ rS rSrSrS
U 4S jjr\      SS j5       r\SS j5       r	\SS j5       r
\SS j5       rSS jrS	rU =r$ )LanguageCodeJ   uH  Normalized BCP-47 language identifier. Accepts any common format.

Examples::

    LanguageCode("english")  # → "en"
    LanguageCode("eng")      # → "en"
    LanguageCode("en")       # → "en"
    LanguageCode("en-US")    # → "en-US"
    LanguageCode("en_us")    # → "en-US"
    LanguageCode("multi")    # → "multi"
c                8   > [        U5      n[        TU ]	  X5      $ )N)r"   super__new__)clsr   
normalized	__class__s      r!   r)   LanguageCode.__new__W   s    (.
ws//r#   c                R    [         R                  " U [         R                  " 5       S9$ )N)serialization)r    no_info_plain_validator_functionto_string_ser_schema)r*   source_typehandlers      r!   __get_pydantic_core_schema__)LanguageCode.__get_pydantic_core_schema__[   s&     ;;%::<
 	
r#   c                d    U R                  S5      S   n[        R                  " U5      nUb  U$ U$ )zqBase language code (ISO 639-1 when possible).

E.g., ``'en'`` from ``'en-US'``, ``'zh'`` from ``'cmn-Hans-CN'``.
r   r   )r   r
   get)selfbaser   s      r!   languageLanguageCode.languaged   s6     zz#q!##D)+v55r#   c                    U R                  S5      nU R                  nUSS  Vs/ s H  n[        U5      S:X  d  M  UPM     nnU(       a
  U SUS    3$ U$ s  snf )zDISO 639-1 tag with region, e.g., ``'zh-CN'`` from ``'cmn-Hans-CN'``.r   r   Nr   r   )r   r:   r   )r8   r   r9   pregion_partss        r!   isoLanguageCode.ison   s`     

3}}#(9<9aA!9<.:$qa)*DD =s
   AAc                d    U R                  S5      nUSS  H  n[        U5      S:X  d  M  Us  $    g)z:Region code, e.g., ``'US'`` from ``'en-US'``, or ``None``.r   r   Nr   )r   r   )r8   r   r=   s      r!   regionLanguageCode.regionv   s6     

3qrA1v{  r#   c                B    [         R                  " U R                  5      $ )zNReturn the English language name (e.g. ``'english'``), or ``None`` if unknown.)r	   r7   r:   )r8   s    r!   to_language_nameLanguageCode.to_language_name   s    $((77r#    )r   strreturnr%   )r2   r   r3   r   rI   r   )rI   rH   )rI   z
str | None)__name__
__module____qualname____firstlineno____doc__r)   classmethodr4   propertyr:   r?   rB   rE   __static_attributes____classcell__)r,   s   @r!   r%   r%   J   s    
0 

(<
	
 
 6 6 E E  8 8r#   r%   N)r   rH   rI   rH   )rN   
__future__r   typingr   pydanticr   pydantic_corer   r   _language_datar	   r
   r   r"   rH   r%   rG   r#   r!   <module>rX      s.    - "  ) 1 Y Y,^783 78r#   