o
    °ó®gS  ã                   @   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
y'   dZ	Y nw d dlZd dlZd dlZd dlmZ eƒ jdkr[dd„ eƒ j d¡D ƒ\ZZZeeefd	k r[e d
¡‚g d¢add„ ZdddddœZejdkrred= G dd„ dejƒZedkr…e ¡  dS 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   úG/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test__locale.pyÚ
<listcomp>   s    r   Ú.)é   r   r   z%locale support broken for OS X < 10.4)KZes_UYÚfr_FRZfi_FIZes_COZpt_PTZit_ITZet_EEZes_PYZno_NOZnl_NLZlv_LVZel_GRZbe_BYZfr_BEZro_ROZru_UAZru_RUZes_VEZca_ESZse_NOZes_ECZid_IDZka_GEZes_CLZwa_BEZhu_HUZlt_LTZsl_SIZhr_HRZes_ARZes_ESZoc_FRZgl_ESZbg_BGZis_ISZmk_MKZde_ATZpt_BRZda_DKZnn_NOZcs_CZZde_LUZes_BOZsq_ALZsk_SKZfr_CHÚde_DEZsr_YUZbr_FRZnl_BEZsv_FIZpl_PLZfr_CAZfo_FOZbs_BAZfr_LUZkl_GLZfa_IRZde_BEZsv_SEZit_CHZuk_UAÚeu_ESZvi_VNZaf_ZAZnb_NOZen_DKZ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rgt tj¡} zSg }tD ]C}z	t tj|¡ W n	 ty$   Y qw t d¡}ztƒ  W n t	yM } zt
d||t|ƒ|f ƒ W Y d }~qd }~ww | |¡ q|aW t tj| ¡ nt tj| ¡ w dt jv r{dd„ ‰ ‡ fdd„tD ƒad S d S )	NÚ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   r   ©r!   r   r   r   =   s    zsetUpModule.<locals>.<listcomp>)ÚsysÚplatformÚlocaler   r   Úcandidate_localesr   Zgetpreferredencodingr   Ú	ExceptionÚprintÚtypeÚappendÚversion)Z
old_localeZlocalesr   ÚencodingÚerrr   r"   r   ÚsetUpModule   s4   
ÿ

ÿ€ÿ 
ür.   )r   ú,)r/   r   )r/   Ú )u   Ù«u   Ù¬)r   r   r   r   Úwin32r   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 r3   r4   r5   r   r   r   ÚtearDownT   s   z_LocaleTests.tearDownz)%s != %s (%s for %s; set to %s, using %s)c                 C   sl   zt tƒ}W n ty   d}Y nw t |d¡|dk }|r2|r4|  ||| j||||||f ¡ dS dS dS )z5Compare calculation against known value, if availableú<not able to determine>)r0   r0   Úthousands_sepTN)r   r   r   Úknown_numericsÚgetÚassertEqualÚlc_numeric_err_msg)r6   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 ]1}ztt|ƒ tt|ƒ W n	 ty   Y qw tdftdffD ]\}}|  dt|ƒ||¡r4d}q$q|s?|  	d¡ d S d S )NFÚdecimal_pointr:   r
   Túno suitable locales)
r&   r   r   r   r   r   r	   r@   r
   ÚskipTest)r6   Útestedr   Ú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w tƒ }dD ]}|  d|| ||¡r/d}q!q|s:|  d¡ d S d S )NF)rA   r:   r   TrB   )r&   r   r   r   r   r   r@   rC   )r6   rD   r   Z
formattingrF   r   r   r   Útest_lc_numeric_localeconv}   s"   
ÿ€ýÿz'_LocaleTests.test_lc_numeric_localeconvc                 C   s¾   d}t D ]O}ztt|ƒ tt|ƒ W n	 ty   Y qw tdftdffD ].\}}t|ƒ}tƒ | }zttƒ}W n tyB   d}Y nw |  	||d||||f ¡ d}q$q|s]|  
d¡ d S d S )NFrA   r:   r9   z9%s (nl_langinfo) != %s (localeconv) (set to %s, using %s)TrB   )r&   r   r   r   r   r   r	   r
   r   r=   rC   )r6   rD   r   rE   rF   Znl_radixcharZli_radixcharr?   r   r   r   Útest_lc_numeric_basicŽ   s<   
ÿÿ
ÿþÿÿóÿz"_LocaleTests.test_lc_numeric_basicc              	   C   sÔ   d}t D ]Z}ztt|ƒ tt|ƒ W n	 ty   Y qw |dkr(tƒ d dkr(q|  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|sh|  d¡ d S d S )NFr   rA   z' z3.14éd   i:  z using eval('3.14') failed for %sz!using float('3.14') failed for %sr   Ú1Z23TrB   )r&   r   r   r   r   r   r=   r   ÚevalÚfloatZassertRaisesÚ
ValueErrorÚjoinrC   )r6   rD   r   r   r   r   Útest_float_parsing©   s0   
ÿÿÿÿÿz_LocaleTests.test_float_parsingN)Ú__name__Ú
__module__Ú__qualname__r7   r8   r>   r@   ÚunittestZ
skipUnlessr
   rG   rH   rI   rP   r   r   r   r   r2   O   s    



r2   Ú__main__)Ú_localer   r   r   r   r   r   r   r	   r
   ÚImportErrorr%   r#   rT   r$   r   ÚsystemÚreleaser   ZmajÚminZmicZSkipTestr&   r.   r;   ZTestCaser2   rQ   Úmainr   r   r   r   Ú<module>   s6     ÿ
&ú
	uÿ