a
    zeS                     @   s  d dl mZmZmZmZmZmZ zd dl mZmZm	Z	 W n e
yN   dZ	Y n0 d dlZd dlZd dlZd dlmZ e jdkrdd e jdD \ZZZeeefd	k red
g dadd ZdddddZejdkred= G dd dejZedkre  dS )    )	setlocaleLC_ALLLC_CTYPE
LC_NUMERIC
localeconvError)	RADIXCHARTHOUSEPnl_langinfoN)unameZDarwinc                 C   s   g | ]}t |qS  )int).0partr   r   '/usr/lib/python3.9/test/test__locale.py
<listcomp>       r   .)   r   r   z%locale support broken for OS X < 10.4)KZes_UYfr_FRfi_FIes_COpt_PTit_ITet_EEes_PYZno_NOnl_NLlv_LVel_GRbe_BYfr_BEro_ROZru_UAru_RUes_VEca_ESse_NOes_ECid_IDka_GEes_CLZwa_BEhu_HUlt_LTsl_SIhr_HRes_ARes_ESoc_FRgl_ESbg_BGis_ISmk_MKde_ATpt_BRda_DKnn_NOcs_CZde_LUes_BOsq_ALsk_SKfr_CHde_DEZsr_YUbr_FRnl_BEsv_FIpl_PLfr_CAfo_FObs_BAfr_LUkl_GLfa_IRZde_BEsv_SEit_CHuk_UAeu_ESvi_VNaf_ZAnb_NOZen_DKtg_TJps_AFen_USzfr_FR.ISO8859-1zfr_FR.UTF-8zfr_FR.ISO8859-15@eurozru_RU.KOI8-Rzko_KR.eucKRc                     s   t jdkrttj} zg }tD ]}zttj| W n tyL   Y q Y n0 td}z
t  W n< t	y } z$t
d||t||f  W Y d }~q d }~0 0 || q |aW ttj|  nttj|  0 dt jv rdd   fddtD ad S )	NZsunos5Fz.WARNING: Skip locale %s (encoding %s): [%s] %sz
MSC v.1200c                 S   s(   |  d}t|dko$t|d dk S )Nr      	   )splitlen)locar   r   r   accept:   s    
zsetUpModule.<locals>.acceptc                    s   g | ]} |r|qS r   r   )r   rY   r[   r   r   r   =   r   zsetUpModule.<locals>.<listcomp>)sysplatformlocaler   r   candidate_localesr   getpreferredencodingr   	Exceptionprinttypeappendversion)Z
old_localeZlocalesrY   encodingerrr   r\   r   setUpModule   s,    



 
ri   )r   ,)rj   r   )rj    )u   ٫u   ٬)rS   r?   r   rR   win32rR   c                   @   s`   e Zd Zdd Zdd ZdZdd Zee	dd	d
 Z
dd Zee	ddd Zdd ZdS )_LocaleTestsc                 C   s   t t| _d S Nr   r   Z	oldlocaleselfr   r   r   setUpQ   s    z_LocaleTests.setUpc                 C   s   t t| j d S rn   ro   rp   r   r   r   tearDownT   s    z_LocaleTests.tearDownz)%s != %s (%s for %s; set to %s, using %s)c                 C   sh   zt t}W n ty"   d}Y n0 t|d|dk }|rd|rd| ||| j||||||f  dS dS )z5Compare calculation against known value, if available<not able to determine>)rk   rk   thousands_sepTN)r   r   r   known_numericsgetassertEquallc_numeric_err_msg)rq   Z	calc_typeZ
calc_valueZ	data_typeZused_locale
set_localeZknown_valuer   r   r   numeric_tester\   s$    
z_LocaleTests.numeric_testerznl_langinfo is not availablec              	   C   s   d}t D ]f}ztt| tt| W n ty:   Y qY n0 tdftdffD ] \}}| dt|||rLd}qLq|s~| 	d d S )NFdecimal_pointru   r
   Tno suitable locales)
r`   r   r   r   r   r   r	   r{   r
   skipTest)rq   testedrY   lilcr   r   r   test_lc_numeric_nl_langinfol   s    

z(_LocaleTests.test_lc_numeric_nl_langinfoc              	   C   sx   d}t D ]\}ztt| tt| W n ty:   Y qY n0 t }dD ]}| d|| ||rFd}qFq|st| d d S )NF)r|   ru   r   Tr}   )r`   r   r   r   r   r   r{   r~   )rq   r   rY   Z
formattingr   r   r   r   test_lc_numeric_localeconv}   s    

z'_LocaleTests.test_lc_numeric_localeconvc                 C   s   d}t D ]}ztt| tt| W n ty:   Y qY n0 tdftdffD ]\\}}t|}t | }ztt}W n ty   d}Y n0 | 	||d||||f  d}qLq|s| 
d d S )NFr|   ru   rt   z9%s (nl_langinfo) != %s (localeconv) (set to %s, using %s)Tr}   )r`   r   r   r   r   r   r	   r
   r   rx   r~   )rq   r   rY   r   r   Znl_radixcharZli_radixcharrz   r   r   r   test_lc_numeric_basic   s4    



z"_LocaleTests.test_lc_numeric_basicc              	   C   s   d}t D ]}ztt| tt| W n ty:   Y qY n0 |dkrTt d dkrTq| ttdd dd|  | tt	dd dd	|  t d d
kr| 
tt	t d ddg d}q|s| d d S )NFrM   r|   z' z3.14d   i:  z using eval('3.14') failed for %sz!using float('3.14') failed for %sr   1Z23Tr}   )r`   r   r   r   r   r   rx   r   evalfloatZassertRaises
ValueErrorjoinr~   )rq   r   rY   r   r   r   test_float_parsing   s,    

z_LocaleTests.test_float_parsingN)__name__
__module____qualname__rr   rs   ry   r{   unittestZ
skipUnlessr
   r   r   r   r   r   r   r   r   rm   O   s   



rm   __main__)_localer   r   r   r   r   r   r   r	   r
   ImportErrorr_   r]   r   r^   r   systemreleaserW   ZmajminZmicZSkipTestr`   ri   rv   ZTestCaserm   r   mainr   r   r   r   <module>   s0    

&	
u
