o
    PεiT                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZmZmZ g dZd	d
gZddgZddgZeje ZeG dd dZdejeef dedefddZdS )z9Methods for mapping phonemes from one language to another    N)copy)	dataclass)VowelVowelHeightVowelPlacement)get_closest)PhonemePhonemesPronunciation)u   ɹu   ʁru   ʀu   ɻu   ɚ   əu   ɐu   ɡgu   ʡu   ʔc                   @   s,   e Zd ZU dZeed< dZeje	 ed< dS )GuessedPhonemeszResult from guess_phonemesphonemesNdistance)
__name__
__module____qualname____doc__MATCHING_PHONEMES__annotations__r   typingOptionalfloat r   r   D/home/ubuntu/.local/lib/python3.10/site-packages/gruut_ipa/accent.pyr      s   
 r   from_phonemeto_phonemesreturnc              	   C   s  g }d}d}t | trt| } | jtv r&tD ]}||v r%t|g}d} nq|si| jri| jjrAtD ]}||v r@t|g}d} nq1|sUtD ]}||v rTt|g}d} nqE|sit	| } t
| dtdtjtjdd |s| jtv rtD ]}||v rt|g}d} nqr|s| jtv rtD ]}	|	|v rt|	g}d} nq|stg dS |rt||d	S |D ]E}
| j|
jkr|
g}d} n7| j|
jkr|du rttd
| j}ttd
|
j}tt|t| d }|du s||k r|
g}|}qqt| jdkr8g }tj| jdd}d}|D ] }t|j|}|jr|jdu r n||j7 }||j q|du s3||k r7|}|}n/|du rgt| j}|rg|D ]}|D ]}
||
jkr\t|g}d} nqK|dure nqG|du r|D ]}
| jd |
jd kr|
g}d} nqnt||d	S )z/Get best matching phonemes for a single phonemeNg        vowelr   F)ipaheight	placementroundedr   )r   )r   r   NFDg      $@   )	keep_tiesg      ?g      ?)
isinstancestrr   textGSschwa
r_colouredR_LIKESCHWA_PREFERREDr   setattrr   r   MIDr   CENTRALPHARY_GLOTTALr   letterssetunicodedata	normalizeabslenr
   from_stringguess_phonemesr   r   extendr   )r   r   best_phonemes	best_distfrom_codepointsmaybe_gmaybe_r_likemaybe_schwamaybe_rmaybe_pg
to_phonemeto_codepointsdist
best_splitsplit_phonemessplit_phonemeguessedclosestcandidate_strr   r   r   r:      s   








)





r:   )r   r   r5   r   dataclassesr   gruut_ipa.constantsr   r   r   gruut_ipa.distancesr   gruut_ipa.phonemesr   r	   r
   r-   r.   r*   r2   Listr   r   Unionr(   r:   r   r   r   r   <module>   s,    
