
    6bh2                        d dl mZ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j4                  d	      g d
ad ZdddddZd i fd i fdddddfdddddfdddddfdddd dfdd!d"d#dfdd$d%d&dfdd'd(d)dfdd*d+d,dfd-
Zd.d.d/d0d1d2Zej                  d3k(  red4= ej                  d5k(  rd6ed7<    G d8 d9ej@                        Z!e"d:k(  r ejF                          yy# e$ r dZ
Y 2w xY wc c} w );    )	setlocaleLC_ALLLC_CTYPE
LC_NUMERICLC_TIME
localeconvError)	RADIXCHARTHOUSEPnl_langinfoN)uname)supportDarwin.)   r   r   z%locale support broken for OS X < 10.4)T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.eucKRzja_JP.UTF-8zlzh_TW.UTF-8zmy_MM.UTF-8zor_IN.UTF-8zshn_MM.UTF-8zar_AE.UTF-8zbn_IN.UTF-8zmr_IN.UTF-8zth_TH.TIS620c                     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     ;/opt/python-3.12.12/usr/lib/python3.12/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errrc   s         rb   setUpModulers   "   s,    ||x%%fmm4
	8G($$V]]C8 "--/(L
 NN3' ) !(V]]J7 s{{"	8 ->M,=S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   ,)rt   r   )rt    )u   ٫u   ٬)rW   r@   r   rV   d   u   ۰۰u   ۱۰u   ۹۹)r   
   c   u   一u   十u	   九十九)   rw   rx       u   〇u   卅一)r   rw      u   ၀၀u   ၁၀u   ၉၉u   ୦u   ୧୦u   ୯୯u   ႐႐u   ႑႐u   ႙႙u   ٠u   ١٠u   ٩٩u   ০u   ১০u   ৯৯)
CrW   rK   ja_JPlzh_TWmy_MMor_INshn_MMar_AEbn_IN)r   ru   )   *   +:1:2019/05/01:2019/12/31:令和:%EC元年)   u*   +:1:1912/01/01:1912/12/31:民國:%EC元年)ry   u"   +:1:-543/01/01:+*:พ.ศ.:%EC %Ey)r|   rW   r}   zh_TWth_TWwin32rV   rY   )   r   r}   c                      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 ej                  e	d       ej                   eed
      d       ej                  ej                  xs ej                  d      d                      Z ej                  e	d       ej                   eed      d       ej                  ej                  xs ej                  d      d                      Zd Zy)_LocaleTestsc                 ,    t        t              | _        y Nr   r   	oldlocaleselfs    rb   setUpz_LocaleTests.setUpp   s    "6*rd   c                 8    t        t        | j                         y r   r   r   s    rb   tearDownz_LocaleTests.tearDowns   s    &$..)rd   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)N<not able to determine>)ru   ru   thousands_sepT)r   r   r	   known_numericsgetassertEquallc_numeric_err_msg)r   	calc_type
calc_value	data_typeused_locale
set_localeknown_values          rb   numeric_testerz_LocaleTests.numeric_tester{   s    C	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)
rh   r   r   r   r	   r
   r   r   r   skipTest)r   testedr`   lilcs        rb   test_lc_numeric_nl_langinfoz(_LocaleTests.test_lc_numeric_nl_langinfo   s     $C*c*(C( &7$o68B&&}k"or3O!F8 % 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   )rh   r   r   r   r	   r   r   r   )r   r   r`   
formattingr   s        rb   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   )rh   r   r   r   r	   r
   r   r   r   r   r   )r   r   r`   r   r   nl_radixcharli_radixcharr   s           rb   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
 8 %( MM/0 !    ;!:J;s#    B%B4%	B10B14CC
ALT_DIGITSzrequires locale.ALT_DIGITSc           	      D   d}t         D ];  }| j                  |      5  	 t        t        |       t        t        |       | j                  |      5  t        t        j                        }| j                  |t               |r|j                  d      ng }|r| j                  t        |      d|       |j                  dd      d   }|t        v r`t        |   \  }}|r|s| j                  d	|d
       | j!                  t        |      ||       |D ]  }| j!                  ||   ||           d}d d d        d d d        > |s| j                  d       y y # t
        $ r  | j                  d|       Y d d d        |w xY w# 1 sw Y   UxY w# 1 sw Y   xY w)NFrg   
no locale ;rw   r   ry   r   z!ALT_DIGITS is not set for locale  on this platformTr   )rh   subTestr   r   r   r	   r   r   rg   r   assertIsInstancestrr^   assertGreaterEqualr_   known_alt_digitsr   )r   r   r`   
alt_digitsloc1countsamplesis           rb   test_alt_digits_nl_langinfoz(_LocaleTests.test_alt_digits_nl_langinfo   s    $$CS)gs+h,
 \\\-!,V->->!?J))*c::D!1!1#!6"J!//JZP99S!,Q/D//)9$)?w  MM,McWTe*fg((Z%L!(A ,,Z]GAJG ")!F . *) %0 MM/0 '  MMJsg"67 *) .- *)sG   F EFC"F	5FF:FFF	FFF	ERAzrequires locale.ERAc           	      l   d}t         D ]O  }| j                  |      5  	 t        t        |       t        t        |       | j                  |      5  t        t        j                        }| j                  |t               |r7| j                  |j                  d      |j                  d      dz   dz  |       |j                  dd      d	   }|t        v rnt        |   \  }}|rN|s| j                  d
|d       | j!                  |j                  d      dz   |       | j#                  ||       n| j                  |d       d}d d d        d d d        R |s| j                  d       y y # t
        $ r  | j                  d|       Y d d d        w xY w# 1 sw Y   UxY w# 1 sw Y   xY w)NFr   r   :r   ry   r   r   r   zERA is not set for locale r   ru   Tr   )rh   r   r   r   r   r	   r   r   rg   r   r   r   r   r   r^   	known_erar   assertIn)r   r   r`   erar   r   samples          rb   test_era_nl_langinfoz!_LocaleTests.test_era_nl_langinfo   s    $$CS)gs+h,
 \\\-%fjj1C))#s3((3#))C.1:LPQ9QSVW99S!,Q/Dy((1$v #& $0J3'Qb.c d 33CIIcNQ4FN MM&#6 ,,S"5!F! . *) %4 MM/0 +  MMJsg"67 *) .- *)sG   F) E1F)C6F	F)1FF)FF)F&"F))F3	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)NFrP   r   z' z3.14rv   i:  z using eval('3.14') failed for %sz!using float('3.14') failed for %sr   123Tr   )rh   r   r   r   r	   r   r   intevalfloatassertRaises
ValueErrorjoinr   )r   r   r`   s      rb   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   hasattrrg   r   r   r    rd   rb   r   r   n   s   +* E  X&DEX__021	 F
1  X__021	1" X&DE1 F14 X&DEX68TUX__021	 V F1< X&DEX/1FGX__021	 H F1@1rd   r   __main__)$_localer   r   r   r   r   r   r	   r
   r   r   ImportErrorrg   re   r   rf   r   testr   systemreleaser^   r   majminmicSkipTestrh   rs   r   r   r   TestCaser   r   main)parts   0rb   <module>r      s   Y Y Y99  
   7>>X+07??+@+@+EF+E4SY+EFMCcS#"h GHH  NL  ! RW~>~NOxX3GHIxX>BC~>~NOx^HINOPx^HIx^HI  
?>6	 <<7w<<8 KIgD18$$ D1N zHMMO c	  K Gs   
E ,EEE