
    0hh-                     x   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSK
JrJr  SSKJr  SSKr\R$                  " 5       r\S   S:X  a"  \" \" \\S   R-                  S	5      5      5      rOSr " S
 S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r \!S:X  a  \RD                  " 5         gg)zPyUnit testing against strptime    N)support)warnings_helper)skip_if_buggy_ucrt_strfptimerun_with_locales)dateglibc   .c                       \ rS rSrSrS rSrg)getlang_Tests   zTest _getlangc                     U R                  [        R                  " 5       [        R                  " [        R
                  5      5        g N)assertEqual	_strptime_getlanglocale	getlocaleLC_TIMEselfs    ;/opt/python-3.13.8/usr/lib/python3.13/test/test_strptime.py
test_basicgetlang_Tests.test_basic   s*    ++-v/?/?/OP     N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r      s    Qr   r   c                       \ rS rSrSrS rS rS rS rS r	\
R                  " \R                  S5      S	 5       rS
 rS rSrg)LocaleTime_Tests   zTests for _strptime.LocaleTime.

All values are lower-cased when stored in LocaleTime, so make sure to
compare values after running ``lower`` on them.

c                 l    [         R                  " 5       U l        [        R                  " 5       U l        g)z(Create time tuple based on current time.N)time	localtime
time_tupler   
LocaleTimeLT_insr   s    r   setUpLocaleTime_Tests.setUp%   s     ..***,r   c           	          [         R                  " X R                  5      R                  5       nXR                  U      nU R	                  XQSU-  5        U R                  XeU< SU< SU< 35        g)zHelper method that tests testing against directive based on the
tuple_position of time_tuple.  Uses error_msg as error message.

z%s: not found in tuplez#: position within tuple incorrect;  != N)r'   strftimer)   lowerassertInr   )r   testing	directivetuple_position	error_msgstrftime_output
comparisons          r   compare_against_time%LocaleTime_Tests.compare_against_time*   sd     --	??CIIK__^<=
o.:	<#ZB	Cr   c                     U R                  U R                  R                  SSS5        U R                  U R                  R                  SSS5        g )N%A   z#Testing of full weekday name failed%az*Testing of abbreviated weekday name failed)r9   r+   	f_weekday	a_weekdayr   s    r   test_weekdayLocaleTime_Tests.test_weekday8   sH     	!!$++"7"7q"G	I!!$++"7"7q"N	Pr   c                     U R                  U R                  R                  SSS5        U R                  U R                  R                  SSS5        g )N%Br	   z&Testing against full month name failed%bz-Testing against abbreviated month name failed)r9   r+   f_montha_monthr   s    r   
test_monthLocaleTime_Tests.test_month@   sH     	!!$++"5"5tQ"J	L!!$++"5"5tQ"Q	Sr   c                 2   [         R                  " SU R                  5      R                  5       nU R	                  XR
                  R                  S5        U R                  S   S:  a  SnOSnU R                  U R
                  R                  U   US5        g )Nz%pz!AM/PM representation not in tuple      r   r	   z;AM/PM representation in the wrong position within the tuple)r'   r0   r)   r1   r2   r+   am_pmr   )r   r7   positions      r   
test_am_pmLocaleTime_Tests.test_am_pmH   sy    --doo>DDFo{{'8'89	;??1"qHh**84oV	Xr   (musl libc issue on Emscripten, bpo-46390c                 D   [         R                  " SU R                  5      R                  5       nU(       aj  U R	                  XR
                  R                  S   ;   =(       d    XR
                  R                  S   ;   SU< SU R
                  R                  < 35        g g )N%Zr   r	   z	timezone z not found in )r'   r0   r)   r1   
assertTruer+   timezone)r   rU   s     r   test_timezoneLocaleTime_Tests.test_timezoneR   sy    
 ==t7==?OOH(<(<Q(?? @$(<(<Q(??%t{{';';=> r   c                 j   Sn[         R                  " SU5      nU R                  [         R                  " U R                  R                  U5      US5        [         R                  " SU5      nU R                  [         R                  " U R                  R
                  U5      US5        [         R                  " SU5      nU R                  [         R                  " U R                  R                  U5      US5        [        R                  " 5       nSUl	        U R                  UR                  S	5        g )
N)	  rK         ,   7      L   r   %czLC_date_time incorrect%xzLC_date incorrect%XzLC_time incorrect) rc   z6LocaleTime's LC directives cannot handle empty strings)r'   r0   r   r+   LC_date_timeLC_dateLC_timer   r*   rM   rT   )r   
magic_dater7   LTs       r   test_date_timeLocaleTime_Tests.test_date_time^   s     9
--j9t{{'?'?L(*B	D--j9t{{':':JG(*=	?--j9t{{':':JG(*=	?!!#

 %4 	5r   c                 v    U R                  U R                  R                  [        R                  " 5       5        g r   )r   r+   langr   r   r   s    r   	test_langLocaleTime_Tests.test_langt   s'     	))9+=+=+?@r   )r+   r)   N)r   r   r   r    r!   r,   r9   rA   rH   rO   unittestskipIfr   is_emscriptenrV   ri   rm   r"   r   r   r   r$   r$      sX    -
CPSX __I>>5,Ar   r$   c                   R    \ rS rSrSrS rS rS r\S 5       r	S r
S rS	 rS
 rSrg)TimeRETestsz   zTests for TimeRE.c                 l    [         R                  " 5       U l        [         R                  " 5       U l        g)z Construct generic TimeRE object.N)r   TimeREtime_rer*   locale_timer   s    r   r,   TimeRETests.setUp}   s#     '')$//1r   c                    U R                   R                  S5      nU R                  UR                  U R                  R
                  S   5      S:g  SU-  5        U R                  UR                  U R                  R                  S   5      S:g  SU-  5        U R                  UR                  U R                   S   5      S:g  SU-  5        g )	Nz%a %A %d %Yr^   z7did not find abbreviated weekday in pattern string '%s'   z0did not find full weekday in pattern string '%s'dz.did not find 'd' directive pattern string '%s')rw   patternrT   findrx   r@   r?   r   pattern_strings     r   test_patternTimeRETests.test_pattern   s    --n=++D,<,<,F,Fq,IJbPQ'(	) 	++D,<,<,F,Fq,IJbPJ'(	) 	++DLL,=>"DH'(	)r   c                 f    U R                   R                  S5      nU R                  SUSU-  5        g )Nz\d+z\\d\+z/%s does not have re characters escaped properly)rw   r~   r2   r   s     r   test_pattern_escaping!TimeRETests.test_pattern_escaping   s3     --f5hG$%	&r   c                    U R                   R                  S5      R                  U R                  R                  S   5      nU R                  U=(       a+    UR                  S5      U R                  R                  S   :H  S5        U R                   R                  S5      nUR                  U R                  R                  S   < SU R                  R                  S   < 35      nU R                  USUR                  < S	U R                  R                  S   < SU R                  R                  S   < 3< S
35        U R                  UR                  S5      U R                  R                  S   :H  =(       a+    UR                  S5      U R                  R                  S   :H  SUR                  < SUR                  R                  < SUR                  S5      < SUR                  S5      < S3	5        S H  nUS:X  a  SOSU-   nU R                   R                  U5      nUR                  [        R                  " U5      5      nU R                  US[        R                  " U5      < SUR                  < S35        M     g )Nr<   r=   Azre object for '%A' failedz%a %br|    zMatch failed with 'z' regex and 'z' stringabz:re object couldn't find the abbreviated weekday month in 'z	' using 'z'; group 'a' = 'z', group 'b' = ')r   r   r   Bcr}   GHIjmMpSuUVwWxXyYZ%r}   %d %Yr   zMatching failed on 'z' regex)rw   compilematchrx   r?   rT   groupr@   rG   r~   stringrer'   r0   )r   foundcompiledr4   fmts        r   test_compileTimeRETests.test_compile   s    $$U+11$2B2B2L2LQ2OPS%++c"2d6F6F6P6PQR6S"S3	5<<''1$*:*:*D*DQ*G#//77: < =4+;+;+E+Ea+H+/+;+;+C+CA+F!HI	J 	C(D,<,<,F,Fq,II IS)T-=-=-E-Ea-HH  ,,(8(8%++c:J++c*,	-KI&#-'3?C||++C0HNN4==#56EOOE%)]]3%7%-%5%5$7 8Kr   c                     [         R                  " 5       n[        5       [        5       4Ul        U R	                  [         R
                  " U5      R                  S5      SS5        g )NrS   rc   z6with timezone == ('',''), TimeRE().pattern('%Z') != '')r   r*   	frozensetrU   r   rv   r~   )r   test_locales     r   test_blankpatternTimeRETests.test_blankpattern   sO      **, )Y[9))+6>>tDbQ	Sr   c                     U R                   R                  S5      nUR                  S5      nU R                  US5        g )Nz\w+ %mz\w+ 10z"Escaping failed of format '\w+ 10')rw   r   r   rT   )r   compiled_rer   s      r   test_matching_with_escapes&TimeRETests.test_matching_with_escapes   s5    ll**95!!),DEr   c                     [         R                  " 5       n[        S5      [        S5      4Ul        [         R                  " U5      nU R                  UR                  S5      R                  S5      S5        g )N)utcgmtTokyo (standard time)zTokyo (daylight time)rS   r   zFlocale data that contains regex metacharacters is not properly escaped)r   r*   r   rU   rv   rT   r   r   )r   rx   rw   s      r   'test_locale_data_w_regex_metacharacters3TimeRETests.test_locale_data_w_regex_metacharacters   so      **, ) +E !F )*A B D "";/-334KL,	-r   c                     U R                   R                  S5      nU R                  [        R                  " US5      5        U R                  [        R                  " US5      5        g )Nz%j %H180z18 0)rw   r~   assertFalser   r   rT   )r   r~   s     r   test_whitespace_substitution(TimeRETests.test_whitespace_substitution   sH     ,,&&w/'512&12r   )rx   rw   N)r   r   r   r    r!   r,   r   r   r   r   r   r   r   r   r"   r   r   r   rs   rs   z   s>    2
)& "8 "86SF-3r   rs   c                      \ rS rSrSrS rS rS rS rSPS jr	S	 r
S
 r\" SSSSSSSS5      S 5       r\" SSSSS5      S 5       rS rS r\" SSSS5      S 5       rS rS rS rS r\" SSSSSSS5      S  5       rS! rS" rS# r\\R8                  " \R<                  S$5      S% 5       5       r\R@                  " \!" \"S&5      S'5      S( 5       r#\" SSSSSSSS)S*S+S,S-S.S/S0S1S2S3S4S5S6S75      S8 5       r$\RJ                  " S95      \" SSSSSSSS*S+S,S-S.S/S0S1S35      S: 5       5       r&\" SSSSSSSS)S*S4S1S2S3S75      S; 5       r'\R8                  " \R<                  =(       d    \RP                  S$5      \" SSSSSS)S*S1S3S75
      S< 5       5       r)\" SSSSSSS=S>S4S5S?S/S1S@S2S3SASBSCSDS6S7SESF5      SG 5       r*SH r+SI r,SJ r-SK r.\/R`                  " \1SL9SM 5       r2\/R`                  " \1SL9SN 5       r3SOr4g)QStrptimeTests   zTests for _strptime.strptime.c                 8    [         R                  " 5       U l        g)zCreate testing time tuples.N)r'   r(   r)   r   s    r   r,   StrptimeTests.setUp   s    ..*r   c                    U R                  [        [        R                  SSS9  S HQ  nU R	                  US9   U R                  [        S5         [        R                  " SU5        S S S 5        S S S 5        MS     S H|  nUS	S  R                  5       nU R	                  US9   U R                  [        S
[        R                  " U5       S35         [        R                  " SU5        S S S 5        S S S 5        M~     SnSnSnSn[        R                  " 5       nSSU4SSU4SSU4SR                  UR                  S   5      SU4SR                  UR                  S   5      SU4SSU4SSU4SSU4SS U4S!S"U4S#S$U4S%S&U4S'S(S)/nU HS  u  pnU R	                  XS9   U R                  [        U5         [        R                  " X5        S S S 5        S S S 5        MU     g ! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN$= f! , (       d  f       GM  = f! , (       d  f       Ne= f! , (       d  f       M  = f)*Nz%dr<   )data_stringformat)r   z% z%
r   zstray % in format 2005)z%iz%Oiz%Oz%O z%Eez%Ez%E z%.z%+z%~z%\z%O.z%O+z%O_z%O~z%O\r	   r   z' is a bad directive in format z|ISO week directive '%V' must be used with the ISO year directive '%G' and a weekday directive \('%A', '%a', '%w', or '%u'\).zdISO week directive '%V' is incompatible with the year directive '%Y'. Use the ISO year '%G' instead.z`Day of the year directive '%j' is not compatible with ISO year directive '%G'. Use '%Y' instead.z|ISO year directive '%G' must be used with the ISO week directive '%V' and a weekday directive \('%A', '%a', '%w', or '%u'\).z1999 50z%Y %Vz	1999 50 5z%Y %V %uz1999 51%G %Vz1999 {}   z%G %Az%G %az1999 5z%G %wz%G %u2015z%Gz1999 256z%G %jz1999 50 5 256z%G %V %u %j50z%Vz50 5z%V %u)z	2019-00-1%G-%V-%uz6time data '2019-00-1' does not match format '%G-%V-%u')z	2019-54-1r   z6time data '2019-54-1' does not match format '%G-%V-%u')z	2021-53-1r   zInvalid week: 53)assertRaises
ValueErrorr   _strptime_timesubTestassertRaisesRegexrstripr   escaper*   r   r?   r@   )r   
bad_formatr4   msg_week_no_year_or_weekdaymsg_week_not_compatiblemsg_julian_not_compatiblemsg_year_no_week_or_weekdayrx   subtestsr   r   messages               r   test_ValueErrorStrptimeTests.test_ValueError   sj   *i&>&>D!% 	 	',J,,j,1((5IJ((< K 21 -?J #12--/I,,j,1((		),--LMO((<O 21	?'.##G%J!'.#  **, !<=*&=>!<=k33A67+-k33A67+-w ;<w ;<T67";<m-FG445W9:GG99
> /7*['+E++J@''< A FE /7q KJ 21O O 21h A@ FEsk   G4G"(G4#/HH*HH=6H,H="
G1,G44
H	
HH
H)	,
H:6H==
I	c                    U R                  [        5       n[        R                  " SS5        S S S 5        U R	                  WR
                  R                  5        U R                  [        5       n[        R                  " SS5        S S S 5        U R	                  UR
                  R                  5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nrc   z%Dr   )r   r   r   r   rT   	exception__suppress_context__)r   es     r   test_strptime_exception_context-StrptimeTests.test_strptime_exception_context!  s    z*a$$R. +889z*a$$S#. +889 +* +*s   B60C6
C
Cc                 P    U R                  [        [        R                  SS5        g )Nz10 12%m)r   r   r   r   r   s    r   test_unconverteddata"StrptimeTests.test_unconverteddata+  s    *i&>&>Nr   Nc                 ,   Uc  U R                   n[        R                  " X5      n[        R                  " XA5      nU R                  XR   X2   SU< SU< SXR   < SX2   < 35        [        R                  S:  a  [        SU< SU< SXR   < 35        gg)zHelper fxn in testing.Nztesting of z format failed; z -> r/   rK   z	 format: )	r)   r'   r0   r   r   r   r   verboseprint)r   r   rN   r)   strf_outputstrp_outputs         r   	roundtripStrptimeTests.roundtrip/  s    JmmC4..{@.
0D{K,A$.0	1 ??a[%:< =  r   c                 r   U R                  SS5        U R                  SS5        U R                  SSS5        [        R                  nU R                  U" SS5      S   S5        U R                  U" SS5      S   S5        U R                  U" S	S5      S   S
5        U R                  U" SS5      S   S5        g )N%Yr   z%y	l  r	   r	   r   r   r   r   r	   r   00i  68i  69i  99rY   )r   r   r   r   )r   strptimes     r   	test_yearStrptimeTests.test_year=  s    tQtQtQ >? ++$-a0$7$-a0$7$-a0$7$-a0$7r   c                 (    U R                  SS5        g )Nr   r	   r   r   s    r   rH   StrptimeTests.test_monthJ      tQr   r   Cen_USfr_FRde_DEja_JPhe_ILrc   c                     U R                  SS5        U R                  SS5        [        SS5       H;  nU R                  SSSUSSSSSSS4	5        U R                  SSSUSSSSSSS4	5        M=     g )NrD   r	   rE      r   r   )r   range)r   r   s     r   test_month_localeStrptimeTests.test_month_localeN  sv     	tQtQq"ANN4T1aAq!Q$BCNN4T1aAq!Q$BC r   az_AZber_DZber_MAcrh_UAc                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        g )NrD   r	   )	  r=   r	   r   r   r   r=      r   rE   )	r     r	   r   r   r   r	      r   r   r   s    r   test_month_locale2 StrptimeTests.test_month_locale2W  sH     	tQ @AtQ @AtQ @AtQ @Ar   c                 (    U R                  SS5        g )Nr   r^   r   r   s    r   test_dayStrptimeTests.test_day`  s    w"r   c                 (    U R                  SS5        g )Nz%HrK   r   r   s    r   	test_hourStrptimeTests.test_hourd  r   r   c                 (    U R                  SS5        g )N%I %prK   r   r   s    r   test_hour_localeStrptimeTests.test_hour_localei  s     	w"r   c                 (    U R                  SS5        g )Nz%Mr|   r   r   s    r   test_minuteStrptimeTests.test_minuten  r   r   c                 (    U R                  SS5        g )Nz%Sr   r   r   s    r   test_secondStrptimeTests.test_secondr  r   r   c           	          SS K nUR                  SSSSSSS5      n[        R                  " [        U5      SS	9u  p4nU R                  XBR                  5        g )
Nr   i  rL      "   8   i4 z%Y-%m-%d %H:%M:%S.%fr   )datetimer   strr   microsecond)r   r*  r}   tupfrac_s         r   test_fractionStrptimeTests.test_fractionv  sN    dBBB> **3q6:PQ1}}-r   c                 L    U R                  SS5        U R                  SS5        g )N%wr=   %ur   r   s    r   rA   StrptimeTests.test_weekday}  s    tQtQr   c                 L    U R                  SS5        U R                  SS5        g )Nr<   r=   r>   r   r   s    r   test_weekday_locale!StrptimeTests.test_weekday_locale  s      	tQtQr   c                 (    U R                  SS5        g )Nz%jr  r   r   s    r   test_julianStrptimeTests.test_julian  r   r   c                 R   SnSnSn[         R                   " SS5      u  Gt pEpFU R                  XQU-   5        U R                  US5        [         R                   " SS5      u  Gt pEpFU R                  XQ* 5        U R                  US5        [         R                   " SS5      u  Gt pEpFU R                  XQU-   U-   * 5        U R                  US5        [         R                   " S	S5      u  Gt pEpFU R                  XQU-   U-   * 5        U R                  US
5        [         R                   " SS5      u  Gt pEpFU R                  XQ5        U R                  US5        [         R                   " SS5      u  Gt pEpFU R                  XQU-   * 5        U R                  US5        [         R                   " SS5      u  Gt pEpFU R                  XQU-   U-   * 5        U R                  US5        [         R                   " SS5      u  Gt pEpFU R                  XQU-   U-   * 5        U R                  US
5        [         R                   " SS5      u  Gt pEpFU R                  XQU-   U-   5        U R                  US5        [         R                   " SS5      u  Gt pEpFU R                  US5        U R                  US5        g )N       z+0130%zr   z-0100z-013030z-013030.000001r{   z+01:00z-01:30z	-01:30:30z-01:30:30.000001z+01:30:30.001i  r   )r   r   )r   one_hour	half_hourhalf_minuter/  offsetoffset_fractions          r   test_offsetStrptimeTests.test_offset  s   	+4+>+>w+M(!aI!56!,+4+>+>w+M(!a+!,+4+>+>y$+O(!ai#7+#E!FG!,+4+>+>?OQU+V(!ai#7+#E!FG"-+4+>+>x+N(!a*!,+4+>+>x+N(!ai#7!89!,+4+>+>{D+Q(!ai#7+#E!FG!,+4+>+>?QSW+X(!ai#7+#E!FG"-+4+>+>PT+U(!aI!5!CD$/+4+>+>sD+I(!a#!,r   c                    U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5       n[        R                  " SS5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       GN	= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ny= f)Nz
-01:30:30.r@  z-0130:30z-01:30:30.1234567z-01:30:30:123456z-01:3030z!Inconsistent use of : in -01:3030)r   r   r   r   r+  r   )r   errs     r   test_bad_offsetStrptimeTests.test_bad_offset  s    z*d3 +z*
D1 +z* 3T: +z* 2D9 +z*c
D1 +<c#-->PQ +*********s;   D0E E5E$*E50
D?
E
E!$
E25
FrQ   c           
         [         R                  " SS5      nU R                  UR                  S5        [         R                  " SS5      nU R                  UR                  S5        [        R
                  " 5       n[        R                  " S5      n[         R                  " US5      n[         R                  " 5       n[        R                  S   [        R                  S   :w  d  [        R                  (       d.  U R                  US   US   :H  SU< SUS   < S	US   < 35        g U R                  US   S
:H  S5        g )NUTCrS   r   GMTr	      ztimezone check failed; 'z' -> r/   r{   z]LocaleTime().timezone has duplicate values and time.daylight but timezone value not set to -1)r   r   r   tm_isdstr'   r(   r0   r*   tznamedaylightrT   )r   r   r)   r   rx   s        r   rV   StrptimeTests.test_timezone  s      ..ud;--q1..ud;--q1^^%
mmD)..{DA**,;;q>T[[^+4==OOKNjm;);q>:a=JK OOKNb0NOr   tzsetz"time module has no attribute tzsetc                    [         R                  S   nUR                  5       S;   a  U R                  S5        [        R
                  " [         SX45         [        R
                  " [         SS5         [        R
                  " [         SS 5         X4[         l        S[         l        [        R                  " US	5      S
   nU R                  US[         R                  < SU< S[         R                  < SU< 35        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   )rM  rN  zneed non-UTC/GMT timezonerQ  rR  r	   rT  c                      g r   r   r   r   r   <lambda>1StrptimeTests.test_bad_timezone.<locals>.<lambda>  s    dr   rS   rO  r{   z lead to a timezone value of z) instead of -1 when time.daylight set to z and passing in )
r'   rQ  upperskipTestr   	swap_attrrR  r   r   r   )r   tz_nametz_values      r   test_bad_timezoneStrptimeTests.test_bad_timezone  s     ++a.==?n,MM56tX/ABtZ3tWl;",DKDM //>qAHXr [[(DMM7DE	 < 4 CB;; 43 CBs=   D<3D+A0DD+	D<
D($D++
D9	5D<<
E
eu_ESar_AEmfe_MUyo_NGcsb_PLbr_FRgez_ETbrx_INmy_MMor_INshn_MMaz_IRbyn_ERwal_ETlzh_TWc           
         [         R                  " [         R                  5      S   n[        (       a!  [        S:  a  US:X  a  U R	                  S5        [
        R
                  " 5       nU R                  S[        SS5      [
        R                  " U5      5        U R                  S[        SS5      [
        R                  " US-
  5      5        U R                  S[        SS5      [
        R                  " US-
  5      5        [        S	S
5       H<  nU R                  S[        SS5      [
        R                  " X#S-  S-  -
  5      5        M>     [        S	S5       H?  nU R                  S[        SS5      [
        R                  " X#S-  S-  S-  -
  5      5        MA     U R                  S[        SS5      [
        R                  " US-
  5      5        g )Nr   )r^      re  z(%c in locale br_FR does not include timer`   r=       r	   r  r   r=  rL   r?   )
r   r   r   	glibc_verrZ  r'   r   slicer(   r  )r   locnowis       r   test_date_time_locale#StrptimeTests.test_date_time_locale  sK    v~~.q19W,MMDEiiktU1a[$..*=>tU1a[$..t*DEtU1a[$..w*GHq!ANN4q!dnnSR49_.MN  q"ANN4q!dnnSR474<=O.PQ  	tU1a[$..{9J*KLr   STD-1DST,M4.1.0,M10.1.0c                 F   [         R                  " [         R                  5      S   n[        R                  R                  S5      (       a  US;   a  U R                  SU< S35        U R                  S[        SS5      S5        U R                  S[        SS5      S	5        g )
Nr   sunos)ra  locale  may not work on this platformr`   r=   r   	r>  r	   r	   r   r   r   r   r	   r   	r   r   r   sysplatform
startswithrZ  r   ru  r   rv  s     r   test_date_time_locale2$StrptimeTests.test_date_time_locale2  s~     v~~.q1<<""7++j w.LMNtU1a[*HItU1a[*HIr   c           
      .   [         R                   " 5       nU R                  S[        SS5      [         R                  " U5      5        [	        SS5       H<  nU R                  S[        SS5      [         R                  " XS-  S-  -
  5      5        M>     [	        SS5       H?  nU R                  S[        SS5      [         R                  " XS	-  S-  S-  -
  5      5        MA     U R                  S[        SS5      [         R                  " US
-
  5      5        g )Nra   r   rK   r	   r  r   r=  rL   r?  rs  )r'   r   ru  r(   r  )r   rw  rx  s      r   test_date_localeStrptimeTests.test_date_locale  s    
 iiktU1a[$..*=>q!ANN4q!dnnSR49_.MN  q"ANN4q!dnnSR474<=O.PQ  	tU1a[$..{9J*KLr   c                 F   [         R                  " [         R                  5      S   n[        R                  R                  S5      (       a  US;   a  U R                  SU< S35        U R                  S[        SS5      S5        U R                  S[        SS5      S	5        g )
Nr   )r}  aix)r  r  ra  r~  r  ra   rK   r   r  r  r  s     r   test_date_locale2StrptimeTests.test_date_locale20  s     v~~.q1<<""#34411w.LMNtU1a[*HItU1a[*HIr   aa_ETam_ETfa_IRom_ETsid_ETso_SOti_ETtig_ERar_SAbg_BGc                    [         R                  " [         R                  5      S   n[        SS5      n[        (       a  [        S:  a  US;   a  [        SS5      n[
        R
                  " 5       nU R                  SU[
        R                  " U5      5        U R                  SU[
        R                  " US-
  5      5        U R                  SU[
        R                  " US	-
  5      5        g )
Nr   rK   r=   )r^   r%   >
   r  r  r  r  r  rl  rf  r  r  rm  r|   rb   rq  rr  )r   r   r   ru  rt  r'   r   r(   )r   rv  posrw  s       r   test_time_localeStrptimeTests.test_time_localeE  s     v~~.q1Aqk9W, 9@ 2@
 1+CiiktS$.."56tS$..t"<=tS$..w"?@r   c                     [         R                  " SU R                  5      n[        R                  " US5      nU R                  US   U R                  S   :H  =(       a    US   U R                  S   :H  S5        g )Nz%m %% %Yr   r	   zhandling of percent sign failed)r'   r0   r)   r   r   rT   )r   r   r   s      r   test_percentStrptimeTests.test_percent[  se    mmJ@..{JGA$//!*<< >$Q4??1+==9	;r   c                    [         R                  " SU R                  5      nU R                  [        R
                  " UR                  5       S5      S5        U R                  [        R
                  " UR                  5       S5      S5        U R                  [        R
                  " UR                  5       S5      S5        g )NrD   z0strptime does not handle ALL-CAPS names properlyz1strptime does not handle lowercase names properlyz/strptime does not handle capword names properly)	r'   r0   r)   rT   r   r   rY  r1   
capitalize)r   r   s     r   test_caseinsensitive"StrptimeTests.test_caseinsensitivec  s    mmD$//:	001B1B1DdKJ	L	001B1B1DdKK	M	001G1G1I4PI	Kr   c                 n    Sn[         R                  " SS5      nU R                  X!:H  SU< SU< 35        g )N)	r   r	   r	   r   r   r   r   r	   r{   1r   z-Default values for strptime() are incorrect; r/   )r   r   rT   )r   defaultsr   s      r   test_defaultsStrptimeTests.test_defaultsm  s4    2..sD9/'2H>	?r   c                 R    SnU R                  [        R                  " X5      5        g )Nz.^$*+?{}\[]|)()rT   r   r   )r   need_escapings     r   test_escapingStrptimeTests.test_escapingu  s      *	00NOr   )categoryc                 2    [         R                  " SS5        g )NFeb 29%b %d)r'   r   r   s    r   $test_feb29_on_leap_year_without_year2StrptimeTests.test_feb29_on_leap_year_without_year~  s    h(r   c                 |    U R                  [        R                  " SS5      [        R                  " SS5      5        g )Nr  r  zMar 1)
assertLessr'   r   r   s    r   7test_mar1_comes_after_feb29_even_when_omitting_the_yearEStrptimeTests.test_mar1_comes_after_feb29_even_when_omitting_the_year  s*    h0gw/	1r   r)   r   )5r   r   r   r    r!   r,   r   r   r   r   r   rH   r   r	  r  r  r  r  r!  r$  r0  rA   r7  r:  rF  rJ  r   ro   rp   r   rq   rV   
skipUnlesshasattrr'   r^  ry  run_with_tzr  r  is_wasir  r  r  r  r  r  r   ignore_warningsDeprecationWarningr  r  r"   r   r   r   r   r      s(   '+A=F:O=8  igw'SUVD WD i(HhGB HB# 
 igw7# 8#  . 
 igw"M  N 
 !-FR "__IO "O, g D
E
E6 igww78w'(	4
M4
M, 23igww'8x)J	) 4
J igwww8EMEM __02 i'7Gw8EJE	J igww7Hw8Wx8w	(
A(
A";K?P $$.@A) B) $$.@A1 B1r   r   c                       \ rS rSrSrS rSrg)Strptime12AMPMTestsi  z9Test a _strptime regression in '%I %p' at 12 noon (12 PM)c                 $   U R                   nU" [        R                  " SS5      S   S5        U" [        R                  " SS5      S   S5        U" [        R                  " SS5      S   S5        U" [        R                  " SS5      S   S5        g )Nz12 PMr  rK   rL   z12 AMr   )r   r'   r   r   r   )r   eqs     r   test_twelve_noon_midnight-Strptime12AMPMTests.test_twelve_noon_midnight  sy    
4=='*1-r2
4=='*1-q1
9##GW5a8"=
9##GW5a8!<r   r   N)r   r   r   r    r!   r  r"   r   r   r   r  r    s
    C=r   r  c                       \ rS rSrSrS rSrg)JulianTestsi  z@Test a _strptime regression that all julian (1-366) are acceptedc                     U R                   n[        SS5       H'  nU" [        R                  " SU-  S5      S   U5        M)     g )Nr	   io  z%d 2004z%j %Yr  )r   r  r   r   )r   r  rx  s      r   test_all_julian_days JulianTests.test_all_julian_days  s=    q#Ay''	Aw?BAF r   r   N)r   r   r   r    r!   r  r"   r   r   r   r  r    s    JGr   r  c                       \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	\
R                  (       a  SrSrOS	rS	r\R                  " \R"                  R%                  S
5      S5      S 5       rS rSrg)CalculationTestsi  z4Test that strptime() fills in missing info correctlyc                 8    [         R                  " 5       U l        g r   )r'   gmtimer)   r   s    r   r,   CalculationTests.setUp  s    ++-r   c                 $   Sn[         R                  " [        R                  " XR                  5      U5      nU R                  UR                  U R                  R                  :H  SUR                  < SU R                  R                  < 35        g )Nz%Y %m %d %H %M %S %w %ZzCalculation of tm_yday failed; r/   )r   r   r'   r0   r)   rT   tm_ydayr   format_stringresults      r   test_julian_calculation(CalculationTests.test_julian_calculation  sf     2))$--*W$13$//*A*AA ..$//*A*AC	Dr   c                 d   Sn[         R                  " [        R                  " XR                  5      U5      nU R                  UR                  U R                  R                  :H  =(       aM    UR                  U R                  R                  :H  =(       a#    UR                  U R                  R                  :H  SUR                  < SUR                  < SUR                  < SU R                  R                  < SU R                  R                  < SU R                  R                  < 35        g )Nz%Y %H %M %S %w %j %Zz&Calculation of Gregorian date failed; -r/   )	r   r   r'   r0   r)   rT   tm_yeartm_montm_mdayr  s      r   test_gregorian_calculation+CalculationTests.test_gregorian_calculation  s     /))$--*W$13$//*A*AA C$//*@*@@C4??+B+BB !..&--//114??3I3I//11	3	4r   c                 $   Sn[         R                  " [        R                  " XR                  5      U5      nU R                  UR                  U R                  R                  :H  SUR                  < SU R                  R                  < 35        g )Nz%Y %m %d %H %S %j %Zz'Calculation of day of the week failed; r/   )r   r   r'   r0   r)   rT   tm_wdayr  s      r   test_day_of_week_calculation-CalculationTests.test_day_of_week_calculation  sf     /))$--*W$13$//*A*AA'-~~t7N7NP	Qr   )q  r	   r	   r  rL   rp    rL   r%   }  rL   rp  )r   r   r  zbpo-29972: broken test on AIXc                 z  ^  U 4S jnU" SS5        U" SS5        U" SS5        U" SS	5        U" S
S5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" SS5        U" S S!5        U" S"S#5        U" S$S%5        U" S&S'5        g )(Nc           	        > S H  nUT	R                   ;   a  U T	R                  ;   a    g S H  nUS-   U-   nT	R                  UU US9   [        U 6 nUR	                  U5      n[
        R                  " UU5      nU< SUS   < SUR                  5       S   < 3nT	R                  US S X5        S S S 5        M     M     g ! , (       d  f       M  = f)	N)z%Y %Wz%Y %Ur   )r3  r4  r>   r<   r   )r   r   z: r  r/   rK   )	_formats_excluded_ymd_excludedr   datetime_dater0   r   r   	timetupler   )
	ymd_tupletest_reasonyear_week_formatweekday_formatr  dt_date
strp_inputr   msgr   s
            r   test_helperSCalculationTests.test_week_of_year_and_day_of_week_calculation.<locals>.test_helper  s    $? $(>(>>!T%7%77&>N$4s$:^$KMk+4-: & < #0";%,%5%5m%D
&/&>&>z?L'N0:0;A070A0A0CA0FH ((Ra)I< < '?	 %@< <s   A'B??
C)m  r	   rK   zweek 0)r  r	   rO  zcommon case)r  r	   r  zday on Sunday)r  r	      zday on Mondayr  zJan 1 on Sunday)r  r	   r	   zJan 1 on Monday)r  r	   r  z)first Sunday in a year starting on Monday)r  rL   rp  zDec 31 on Sundayr  zDec 31 on Mondayr  z#Monday in the last week of the year)r  rL   r[   z-Monday in the second-to-last week of the year)i  
      zrandomly chosen date)i  rL      zEyear starting and ending on Monday while date not on Sunday or Monday)r  rL   rZ   zXyear starting and ending on Monday with a Monday not at the beginning or end of the yearr  z8Dec 31 on Monday with year starting and ending on Monday)  r	   r  zFirst Sunday of 2007)r  r	   r  zSecond Sunday of 2007)  rL   rp  zLast Sunday of 2006)r  rL   r   zSecond to last Sunday of 2006r   )r   r  s   ` r   -test_week_of_year_and_day_of_week_calculation>CalculationTests.test_week_of_year_and_day_of_week_calculation  s    
	J$ 	L(+L-0M?3M?3L"34L"34L"MNN$67N$67N$IJN %+ 	,N$:;N$:;N %G 	HN %6 	7 	N %; 	<L"89M#:;N$9:N$CDr   c                   ^  U 4S jnU" SSSSSSSSSS	5
        U" SS
SSSSSSSS5
        U" SSSSSSSSSS5
        U" SSSSSSSSSS5
        U" SS
SSSSSSSS5
        U" SSSSSSSSSS5
        U" SSSSSSSSSS5
        U" SS
SSSSSSSS5
        U" SSSSSSSSSS5
        U" SSSSSSSSSS5
        U" SS
SSSSSSSS5
        U" SSSSSSSSSS5
        U" SSSSSSSSSS5
        U" SS
SSSSSSSS5
        U" SSSSSSSSSS5
        U" S SSSSSSSSS5
        U" S S
SSSSSSSS5
        U" S!SSSSSSSS"S5
        U" S#SSSSSSSS"S5
        U" S#S
SSSSSSS"S5
        U" S$SSSSSSSSS5
        U" S%SS&SSSSSSS5
        U" S%S
S'SSSSSSS5
        U" S(SS&SSSSSSS5
        U" S)SS&SSSSSSS5
        U" S)S
S&SSSSSSS5
        U" S*SS&SSSSSSS5
        U" S+SS&SSSSSSS5
        U" S+S
S&SSSSSSS5
        U" S,SS&SSSSSSS-5
        U" S.SS&SSSSSSS-5
        U" S.S
S&SSSSSSS-5
        U" S/SS'SSSSSSS5
        U" S0SS'SSSSSSS5
        U" S0S
S'SSSSSSS5
        U" S1SS'SSSSSSS5
        U" S2SS'SSSSSSS5
        U" S2S
S'SSSSSSS5
        U" S3SS'SSSSSS"S5
        U" S4SS'SSSSSS"S5
        U" S4S
S'SSSSSS"S5
        U" S5SS'SSSSSSS5
        g )6Nc                 X   > TR                  [        R                  " X5      S S U5        g )Nr{   )r   r   r   )valuer   expectedr   s      r   check+CalculationTests.test_week_0.<locals>.check  s%    Y55eDSbI8Tr   z2015 0 0z%Y %U %wi  rL      r   r=   ij  z%Y %W %wi  r	   r|   z2015 1 1z%G %V %ur%   ik  z2015 0 1z2015 1 2r?  il  z2015 0 2z2015 1 3rp  r^   im  z2015 0 3z2015 1 4rK   z2015 0 4z2015 1 5z2015 0 5z2015 1 6r   z2015 0 6z2015 1 7z2009 0 0r  i  z2009 1 1z2009 0 1z2009 1 2z2009 0 2z2009 1 3in  z2009 0 3z2009 1 4z2009 0 4z2009 1 5z2009 0 5z2009 1 6z2009 0 6z2009 1 7r   )r   r  s   ` r   test_week_0CalculationTests.test_week_0   sM   	Uj*dBAq!QDj*dAq!Q1a@j*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dBAq!QDj*dAq!Q1a@j*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dBAq!QDj*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@j*dAq!Q1a@r   r  N)r   r   r   r    r!   r,   r   r  r  r  r   
is_androidr  r  ro   rp   r  r  r  r  r  r"   r   r   r   r  r    s    >( "D "D "4 "4 "Q "Q (&__S\\,,U346-E6-E^-Ar   r  c                   `    \ rS rSrSrS rS rS rS r\	R                  " S5      S 5       rS	rg
)
CacheTestsi0  z!Test that caching works properly.c                 ~   [         R                  " SS5        [         R                  " SS5        S[         R                  R                  l        [         R                  n[         R                  " SS5        U R                  U[         R                  5        U R                  [        [         R                  5      S5        g )N10 2004r   r   r   Nir	   )	r   r   _TimeRE_cacherx   rl   assertIsNotr   len_regex_cache)r   original_time_res     r   test_time_re_recreation"CacheTests.test_time_re_recreation3  s     	  G4  .37	++0$22  G4)9+B+BCY334a8r   c                     [         R                  S	 Sn[        [         R                  5      [         R                  ::  aE  S [         R                  U'   US-  n[        [         R                  5      [         R                  ::  a  ME  [         R
                  " SS5        U R                  [        [         R                  5      S5        g ! [         a     Nf = f)Nr   r   r	   r  )r   r  KeyErrorr  _CACHE_MAX_SIZEr   r   )r   	bogus_keys     r   test_regex_cleanupCacheTests.test_regex_cleanup>  s    	&&w/ 	)(()Y-F-FF04I""9-NI )(()Y-F-FF 	  G4Y334a8  		s   C 
CCc                     [         R                  R                  nS[         R                  R                  l        [         R                  " SS5        U R                  U[         R                  R                  5        g )Nr  r  r   )r   r  rx   rl   r   r  )r   locale_time_ids     r   test_new_localetimeCacheTests.test_new_localetimeK  sU     #00<<37	++0  G4)@)@)L)LMr   c                    [         R                  " SS5         [        R                  " SS5        [        R                  n [
        R                  " [
        R                  S5        [        R                  " SS5        [        R                  nU R                  X5        S S S 5        g ! [
        R                   a    U R                  S5         N0f = f! , (       d  f       g = f)Nr   z
en_US.UTF8r  r   )r  UTF8ztest needs de_DE.UTF8 locale)r   run_with_localer   r   r  r   	setlocaler   r  ErrorrZ  )r   first_time_resecond_time_res      r   test_TimeRE_recreation_locale(CacheTests.test_TimeRE_recreation_localeS  s    $$Y=$$Y8%33M>  1BC((G<!*!8!8  ? >= << ><=> >=s*   (CAB''%CCCC
C r{  c                    [         R                  n[        R                  " [         R                  S   S5      nU R	                  UR
                  S5        [        R                  " [         R                  S   S5      nU R	                  UR
                  S5        [        R                  nS[        R                  S'   [         R                  " 5         [        R                  " [         R                  S   S5      nU R	                  UR
                  S5        [        R                  " [         R                  S   S5      nU R	                  UR
                  S5        [        R                  nU R                  X45        U R                  [        5         [        R                  " US   S5        S S S 5        U R                  [        5         [        R                  " US   S5        S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)Nr   rS   r	   zEST+05EDT,M3.2.0,M11.1.0TZ)r'   rQ  r   r   r   rP  r  osenvironrT  r  r   r   )r   	oldtznametmr%  r&  s        r   test_TimeRE_recreation_timezone*CacheTests.test_TimeRE_recreation_timezoneg  sa    KK	%%dkk!nd;a(%%dkk!nd;a(!//5

4

%%dkk!nd;a(%%dkk!nd;a("007z*$$Yq\48 +z*$$Yq\48 +* +***s   G+G<+
G9<
H
r   N)r   r   r   r    r!   r  r  r  r'  r   r  r/  r"   r   r   r   r  r  0  s:    +	99N>( 239 49r   r  __main__)#r!   ro   r'   r   r   r+  r  r  testr   test.supportr   r   r   r*  r   r  r   libc_vertuplemapintsplitrt  TestCaser   r$   rs   r   r  r  r  r  r   mainr   r   r   <module>r;     s*   %    	 	  
  ( G * A;'c#x{00567IIQH%% Q
ZAx(( ZAzZ3(## Z3zo1H%% o1b=(++ =G(## GQAx(( QAhP9"" P9f zMMO r   