
    dafa                         d dl mZmZmZmZmZmZ 	 d dl mZmZm	Z	 d dlZd dlZd dlZd dlmZ d dlmZ  e       j$                  dk(  rR e       j&                  j)                  d      D  cg c]
  }  e|        c} \  ZZZeeefdk  r ej2                  d	      g d
ad ZdddddZej                  dk(  red=  G d dej:                        Zedk(  r ej@                          yy# e
$ r dZ	Y w xY wc c} w )    )	setlocaleLC_ALLLC_CTYPE
LC_NUMERIC
localeconvError)	RADIXCHARTHOUSEPnl_langinfoN)uname)supportDarwin.)   r   r   z%locale support broken for OS X < 10.4)Kes_UYfr_FRfi_FIes_COpt_PTit_ITet_EEes_PYno_NOnl_NLlv_LVel_GRbe_BYfr_BEro_ROru_UAru_RUes_VEca_ESse_NOes_ECid_IDka_GEes_CL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_DEsr_YUbr_FRnl_BEsv_FIpl_PLfr_CAfo_FObs_BAfr_LUkl_GLfa_IRde_BEsv_SEit_CHuk_UAeu_ESvi_VNaf_ZAnb_NO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                     t         j                  dk(  rt        j                  t        j                        } 	 g }t
        D ]W  }	 t        j                  t        j                  |       t        j                         }	 t                |j                  |       Y |at        j                  t        j                  |        dt         j                  v r!d }t
        D cg c]  } ||      s| c}ay y # t        $ r Y w xY w# t        $ r*}t        d|d|dt        |      d|       Y d }~d }~ww xY w# t        j                  t        j                  |        w xY wc c}w )Nsunos5zWARNING: Skip locale z (encoding z): [z] z
MSC v.1200c                 h    | j                  d      }t        |      dk(  xr t        |d         dk\   S )Nr      	   )splitlen)locas     ,/root/Python-3.12.4/Lib/test/test__locale.pyacceptzsetUpModule.<locals>.accept<   s1    		#A1v{6s1R5zQ77    )sysplatformlocaler   r   candidate_localesr   getencodingr   append	Exceptionprinttypeversion)
old_localelocalesr_   encodingerrrb   s         ra   setUpModulerr      s+    ||x%%fmm4
	8G( ($$V]]C8 "--/(L
 NN3'( !(V]]J7 s{{"	8 ->MSSM	 #  
 ! ;$s)S: ; ;; V]]J7 Nse   D9 $C4(D9 =
DD9 E"+E"4	D =D9 ?D  D9 	D6 D1,D9 1D66D9 9&E)r   ,)rs   r   )rs    )u   ٫u   ٬)rV   r?   r   rU   win32rU   c                   J   e Zd Zd Zd ZdZd Z ej                  e	d       ej                  ej                  xs ej                  d      d               Z ej                  ej                  xs ej                  d      d        Z ej                  e	d      d	        Zd
 Zy)_LocaleTestsc                 ,    t        t              | _        y Nr   r   	oldlocaleselfs    ra   setUpz_LocaleTests.setUpS   s    "6*rc   c                 8    t        t        | j                         y ry   rz   r|   s    ra   tearDownz_LocaleTests.tearDownV   s    &$..)rc   z)%s != %s (%s for %s; set to %s, using %s)c                     	 t        t              }t        j	                  |d      |dk(     }|r*|r'| j                  ||| j                  ||||||fz         yyy# t        $ r d}Y Vw xY w)z5Compare calculation against known value, if available<not able to determine>)rt   rt   thousands_sepTN)r   r   r   known_numericsgetassertEquallc_numeric_err_msg)r}   	calc_type
calc_value	data_typeused_locale
set_localeknown_values          ra   numeric_testerz_LocaleTests.numeric_tester^   s    	3":.J %(($,..7?.JL:Z $ 7 7$.$-y*$/;1 !12
  &;	  	32J	3s   A A('A(znl_langinfo is not availablez(musl libc issue on Emscripten, bpo-46390c                    d}t         D ][  }	 t        t        |       t        t        |       t
        dft        dffD ]%  \  }}| j                  dt        |      ||      s$d}' ] |s| j                  d       y y # t        $ r Y ~w xY w)NFdecimal_pointr   r   Tno suitable locales)
rg   r   r   r   r   r	   r
   r   r   skipTest)r}   testedr_   lilcs        ra   test_lc_numeric_nl_langinfoz(_LocaleTests.test_lc_numeric_nl_langinfon   s     $ 		"C*c*(C( &7$o68 "B&&}k"or3O!F"		" MM/0   s    A<<	BBc                     d}t         D ]N  }	 t        t        |       t        t        |       t               }dD ]  }| j                  d||   ||      sd} P |s| j                  d       y y # t        $ r Y qw xY w)NF)r   r   r   Tr   )rg   r   r   r   r   r   r   r   )r}   r   r_   
formattingr   s        ra   test_lc_numeric_localeconvz'_LocaleTests.test_lc_numeric_localeconv   s     $ 
	"C*c*(C( $J) "&&|Z^RM!F"
	" MM/0   s    A//	A;:A;c                    d}t         D ]  }	 t        t        |       t        t        |       t
        dft        dffD ]N  \  }}t        |      }t               |   }	 t        t              }| j                  |||d|d|d|d       d	}P  |s| j                  d
       y y # t        $ r Y w xY w# t        $ r d}Y Vw xY w)NFr   r   r   z (nl_langinfo) != z (localeconv) (set to z, using )Tr   )rg   r   r   r   r   r	   r
   r   r   r   r   )r}   r   r_   r   r   nl_radixcharli_radixcharr   s           ra   test_lc_numeric_basicz"_LocaleTests.test_lc_numeric_basic   s     $ 	C*c*(C( &7$o68 B*2)|B/;!*:!6J   | 1=l03Z!AB
 	( MM/0 !    ;!:J;s#    B%B4%	B10B14CCc           	         d}t         D ]  }	 t        t        |       t        t        |       |dk(  rt               d   dk(  r:| j                  t        t        d      dz        dd|z         | j                  t        t        d      dz        dd	|z         t               d   d
k7  r7| j                  t        t        t               d   j                  ddg             d} |s| j                  d       y y # t        $ r Y w xY w)NFrO   r   z' z3.14d   i:  z using eval('3.14') failed for %sz!using float('3.14') failed for %sr   123Tr   )rg   r   r   r   r   r   r   intevalfloatassertRaises
ValueErrorjoinr   )r}   r   r_   s      ra   test_float_parsingz_LocaleTests.test_float_parsing   s    $ 	C*c*(C(
 g~*,"?4"GSf!34c BS HJSv!45s Cc IK|O,3!!*e",,"?"D"Dc4["QSF%	& MM/0   s    C99	DDN)__name__
__module____qualname__r~   r   r   r   unittest
skipUnlessr   skipIfr   is_emscriptenis_wasir   r   r   r    rc   ra   rw   rw   Q   s    +* E  X&DEX__021	 F
1  X__021	1" X&DE1 F141rc   rw   __main__)!_localer   r   r   r   r   r   r	   r
   r   ImportErrorrf   rd   r   re   r   testr   systemreleaser]   r   majminmicSkipTestrg   rr   r   TestCaserw   r   main)parts   0ra   <module>r      s	   P P99  
   7>>X+07??+@+@+EF4SYFMCcS#"h GHH
#  NL  ! <<7wz18$$ z1z zHMMO U  K Gs   
C' *C4'C10C1