o
    Xεi                     @   sv   d Z ddlZddlZddlZddlZddlmZ ddlmZ e	dZ
ejeef Zejegef ZG dd dZdS )z<Class for getting phonetic pronunciations for tokenized text    N)Path)PHONEMES_TYPEzgruut.phonemizec                   @   s   e Zd ZU dZdZeed< 				ddejde	j
e	jeef  de	j
e	jee	jeef f  de	j
e	je  d	e	j
e f
d
dZ	ddede	j
e dede	j
e fddZdS )SqlitePhonemizerz6Phonemizes text using a lexicon from a sqlite database DEFAULT_ROLENdb_connlexicon	g2p_modelword_transform_funcscasing_funcc                 C   s,   || _ |d ur	|ni | _|pg | _|| _d S )N)r   r   r
   r   )selfr   r   r	   r
   r    r   C/home/ubuntu/.local/lib/python3.10/site-packages/gruut/phonemize.py__init__   s   


zSqlitePhonemizer.__init__Twordroledo_transformsreturnc                 C   s6  | j d ur
|  |}| j|}|d ur;|d ur#||}|d ur#|S |tj}|d ur/|S |r9tt| S d S | j}|sBg }t	
d g|D ]O}|d urT||}n|}|sYqI| jd|f}	|	D ] }
|d u rpi }|| j|< |
d |
d  }}||vr|||< qc|d ur| j| | j|< | ||d  S qId S )NzKSELECT role, phonemes FROM word_phonemes WHERE word = ? ORDER BY pron_orderr      )r   )r   r   getr   r   nextitervaluesr
   	itertoolschainr   executesplit)r   r   r   r   role_to_wordphonemes
transformstransform_funclookup_wordcursorrowdb_roledb_phonemesr   r   r   __call__/   sP   




zSqlitePhonemizer.__call__)NNNN)NT)__name__
__module____qualname____doc__r   str__annotations__sqlite3
ConnectiontypingOptionalDictROLE_TO_PHONEMESUnionr   IterableWORD_TRANSFORM_TYPEr   boolr   r&   r   r   r   r   r      s<   
 
r   )r*   r   loggingr-   r/   pathlibr   gruut.constr   	getLogger_LOGGERr1   r+   r2   Callabler5   r   r   r   r   r   <module>   s    
