o
    m=8j
                     @   sT   d Z ddlZddlZddlmZ ddlmZ eG dd dZG dd dejZ	dS )	zData models for edge-tts.    N)	dataclass)Literalc                	   @   sf   e Zd ZU dZeed< eed< eed< eed< ed ed< eded	ed
edefddZdddZ	dS )	TTSConfigzU
    Represents the internal TTS configuration for edge-tts's Communicate class.
    voiceratevolumepitch)WordBoundarySentenceBoundaryboundary
param_nameparam_valuepatternreturnc                 C   sB   t |tst|  dt||du rtd|  d| d|S )aZ  
        Validates the given string parameter based on type and pattern.

        Args:
            param_name (str): The name of the parameter.
            param_value (str): The value of the parameter.
            pattern (str): The pattern to validate the parameter against.

        Returns:
            str: The validated parameter.
        z must be strNzInvalid z 'z'.)
isinstancestr	TypeErrorrematch
ValueError)r   r   r    r   \/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/edge_tts/data_classes.pyvalidate_string_param   s
   
zTTSConfig.validate_string_paramNc                 C   s   t | jts
tdtd| j}|durS|d}|d}|d}|ddkrD| d|d|d  }||dd d }d	d
| d| d| d | _| d| jd | d| j	d | d| j
d | d| jd dS )zF
        Validates the TTSConfig object after initialization.
        zvoice must be strz$^([a-z]{2,})-([A-Z]{2,})-(.+Neural)$N         -z,Microsoft Server Speech Text to Speech Voicez (z, )r   z8^Microsoft Server Speech Text to Speech Voice \(.+,.+\)$r   z
^[+-]\d+%$r   r   z^[+-]\d+Hz$)r   r   r   r   r   r   groupfindr   r   r   r   )selfr   langregionnamer   r   r   __post_init__+   s,   



zTTSConfig.__post_init__)r   N)
__name__
__module____qualname____doc__r   __annotations__r   staticmethodr   r%   r   r   r   r   r      s   
 r   c                   @   sb   e Zd ZU dZeed< eed< eed< eed< eed< eed< eed< eed	< eed
< eed< dS )UtilArgszCLI arguments.textfiler   list_voicesr   r   r   write_mediawrite_subtitlesproxyN)r&   r'   r(   r)   r   r*   boolr   r   r   r   r,   O   s   
 r,   )
r)   argparser   dataclassesr   typing_extensionsr   r   	Namespacer,   r   r   r   r   <module>   s    B