
    7bh˧                     f   	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlZ ej                          Zed    dk(  r" e eeed   j)                  d                  ZndZ G d d	e j,                        Z G d
 de j,                        Z G d de j,                        Z G d de j,                        Z G d de j,                        Z G d de j,                        Z G d de j,                        Z G d de j,                        Zedk(  r e j@                          yy)    N)support)skip_if_buggy_ucrt_strfptimerun_with_locales)dateglibc   .c                       e Zd Z	 d Zy)getlang_Testsc                     | j                  t        j                         t        j                  t        j
                               y N)assertEqual	_strptime_getlanglocale	getlocaleLC_TIMEselfs    </opt/python-3.12.12/usr/lib/python3.12/test/test_strptime.py
test_basiczgetlang_Tests.test_basic   s*    ++-v/?/?/OP    N)__name__
__module____qualname__r    r   r   r   r      s    Qr   r   c                   ~    e Zd Z	 d Zd Zd Zd Zd Z ej                  e
j                  d      d        Zd Zd	 Zy
)LocaleTime_Testsc                 j    	 t        j                         | _        t        j                         | _        y r   )time	localtime
time_tupler   
LocaleTimeLT_insr   s    r   setUpzLocaleTime_Tests.setUp$   s#    6..***,r   c           	          	 t        j                  || j                        j                         }|| j                  |      }| j	                  ||d|z         | j                  |||d|d|       y )Nz%s: not found in tuplez#: position within tuple incorrect;  != )r    strftimer"   lowerassertInr   )r   testing	directivetuple_position	error_msgstrftime_output
comparisons          r   compare_against_timez%LocaleTime_Tests.compare_against_time)   sq    	 --	4??CIIKT__^<=
ow.:	<_#ZB	Cr   c                     | j                  | j                  j                  ddd       | j                  | j                  j                  ddd       y )N%A   z#Testing of full weekday name failed%az*Testing of abbreviated weekday name failed)r1   r$   	f_weekday	a_weekdayr   s    r   test_weekdayzLocaleTime_Tests.test_weekday7   sH     	!!$++"7"7q"G	I!!$++"7"7q"N	Pr   c                     | j                  | j                  j                  ddd       | j                  | j                  j                  ddd       y )N%Br   z&Testing against full month name failed%bz-Testing against abbreviated month name failed)r1   r$   f_montha_monthr   s    r   
test_monthzLocaleTime_Tests.test_month?   sH     	!!$++"5"5tQ"J	L!!$++"5"5tQ"Q	Sr   c                 0   t        j                  d| j                        j                         }| j	                  || j
                  j                  d       | j                  d   dk  rd}nd}| j                  | j
                  j                  |   |d       y )Nz%pz!AM/PM representation not in tuple      r   r   z;AM/PM representation in the wrong position within the tuple)r    r(   r"   r)   r*   r$   am_pmr   )r   r/   positions      r   
test_am_pmzLocaleTime_Tests.test_am_pmG   s{    --doo>DDFot{{'8'89	;??1"qHh**84oV	Xr   (musl libc issue on Emscripten, bpo-46390c                 *   t        j                  d| j                        j                         }|rc| j	                  || j
                  j                  d   v xs || j
                  j                  d   v d|d| j
                  j                         y y )N%Zr   r   z	timezone z not found in )r    r(   r"   r)   
assertTruer$   timezone)r   rI   s     r   test_timezonezLocaleTime_Tests.test_timezoneQ   s}    
 ==t7==?OOH(<(<Q(?? @$(<(<Q(??%t{{';';=> r   c                 \   d}t        j                  d|      }| j                  t        j                  | j                  j                  |      |d       t        j                  d|      }| j                  t        j                  | j                  j
                  |      |d       t        j                  d|      }| j                  t        j                  | j                  j                  |      |d       t        j                         }d|_	        | j                  |j                  d	       y )
N)	  r@         ,   7      L   r   %czLC_date_time incorrect%xzLC_date incorrect%XzLC_time incorrect) rV   z6LocaleTime's LC directives cannot handle empty strings)r    r(   r   r$   LC_date_timeLC_dateLC_timer   r#   rB   rH   )r   
magic_dater/   LTs       r   test_date_timez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                 t    | j                  | j                  j                  t        j                                y r   )r   r$   langr   r   r   s    r   	test_langzLocaleTime_Tests.test_langs   s'     	))9+=+=+?@r   N)r   r   r   r%   r1   r8   r>   rD   unittestskipIfr   is_emscriptenrJ   r\   r_   r   r   r   r   r      sZ    -
CPSX X__I>>5,Ar   r   c                   H    e Zd Z	 d Zd Zd Zed        Zd Zd Z	d Z
d Zy	)
TimeRETestsc                 j    	 t        j                         | _        t        j                         | _        y r   )r   TimeREtime_rer#   locale_timer   s    r   r%   zTimeRETests.setUp|   s&    . '')$//1r   c                    | j                   j                  d      }| j                  |j                  | j                  j
                  d         dk7  d|z         | j                  |j                  | j                  j                  d         dk7  d|z         | j                  |j                  | j                   d         dk7  d|z         y )	Nz%a %A %drQ   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')rg   patternrH   findrh   r7   r6   r   pattern_strings     r   test_patternzTimeRETests.test_pattern   s    --k:++D,<,<,F,Fq,IJbPQ'(	) 	++D,<,<,F,Fq,IJbPJ'(	) 	++DLL,=>"DH'(	)r   c                 f    | j                   j                  d      }| j                  d|d|z         y )Nz\d+z\\d\+z/%s does not have re characters escaped properly)rg   rm   r*   ro   s     r   test_pattern_escapingz!TimeRETests.test_pattern_escaping   s3     --f5hG$%	&r   c                    | j                   j                  d      j                  | j                  j                  d         }| j                  |xr+ |j                  d      | j                  j                  d   k(  d       | j                   j                  d      }|j                  | j                  j                  d   d| j                  j                  d         }| j                  |d|j                  d	| j                  j                  d   d| j                  j                  d   d
       | j                  |j                  d      | j                  j                  d   k(  xr+ |j                  d      | j                  j                  d   k(  d|j                  d|j                  j                  d|j                  d      d|j                  d      d	       dD ]  }| j                   j                  d|z         }|j                  t        j                  d|z               }| j                  |dt        j                  d|z         d|j                  d        y )Nr3   r4   Azre object for '%A' failedz%a %brk    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' = ')rw   ru   rx   Bcrl   GHIjmMpSuUVwWxXyYZ%r   zMatching failed on 'z' regex)rg   compilematchrh   r6   rH   groupr7   r=   rm   stringrer    r(   )r   foundcompiledr,   s       r   test_compilez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||++C)O<HNN4==y#ABEOOE%)]]3?%C%-%5%5$7 8	Kr   c                     t        j                         }t               t               f|_        | j	                  t        j
                  |      j                  d      dd       y )NrG   rV   z6with timezone == ('',''), TimeRE().pattern('%Z') != '')r   r#   	frozensetrI   r   rf   rm   )r   test_locales     r   test_blankpatternzTimeRETests.test_blankpattern   sO      **, )Y[9))+6>>tDbQ	Sr   c                     | j                   j                  d      }|j                  d      }| j                  |d       y )Nz\w+ %mz\w+ 10z"Escaping failed of format '\w+ 10')rg   r   r   rH   )r   compiled_rer   s      r   test_matching_with_escapesz&TimeRETests.test_matching_with_escapes   s5    ll**95!!),DEr   c                     t        j                         }t        d      t        d      f|_        t        j                  |      }| j                  |j                  d      j                  d      d       y )N)utcgmtTokyo (standard time)zTokyo (daylight time)rG   r   zFlocale data that contains regex metacharacters is not properly escaped)r   r#   r   rI   rf   rH   r   r   )r   rh   rg   s      r   'test_locale_data_w_regex_metacharactersz3TimeRETests.test_locale_data_w_regex_metacharacters   so      **, ) +E !F )*A B D "";/-334KL,	-r   c                     | j                   j                  d      }| j                  t        j                  |d             | j                  t        j                  |d             y )Nz%j %H180z18 0)rg   rm   assertFalser   r   rH   )r   rm   s     r   test_whitespace_substitutionz(TimeRETests.test_whitespace_substitution   sH     ,,&&w/'512&12r   N)r   r   r   r%   rq   rs   r   r   r   r   r   r   r   r   r   rd   rd   y   s>    2
)& "8 "84SF-3r   rd   c                   <   e Zd Z	 d Zd Zd Zd ZdDdZd Zd Z	 e
d	d
dddddd      d        Zd Zd Z e
d	d
dd      d        Zd Zd Zd Zd Z e
d	d
ddddd      d        Zd Zd Zd Ze ej2                  ej6                  d      d               Z ej:                   eed      d       d!        Z  e
d	d
dddddd"d#d$d%d&d'd(d)d*d+d,d-      d.        Z! ejD                  d/       e
d	d
dddddd#d$d%d&d'd(d)d*d,      d0               Z# e
d	d
dddddd"d#d-d*d+d,      d1        Z$ ej2                  ej6                  xs ejJ                  d       e
d	ddddd"d#d*d,	      d2               Z& e
d	d
ddddd3d4d-d5d6d(d*d7d+d,d8d9d:d;d<      d=        Z'd> Z(d? Z)d@ Z*dA Z+dB Z,dC Z-y)EStrptimeTestsc                 8    	 t        j                         | _        y r   )r    r!   r"   r   s    r   r%   zStrptimeTests.setUp   s    )..*r   c                 L   | j                  t        t        j                  dd       dD ]-  }	 t        j                  d|       | j	                  d|z         / d
}d}d}d}t        j                         }dd|fdd|fdd|fdj                  |j                  d         d|fdj                  |j                  d         d|fdd|fdd|fdd|fdd|fdd |fd!d"|fd#d$|fd%d&d'g}|D ]W  \  }	}
}| j                  |	|
      5  | j                  t        |      5  t        j                  |	|
       d d d        d d d        Y y # t        $ r Y "t
        $ r7}| j	                  d|d|j                  j                  d	       Y d }~\d }~ww xY w# 1 sw Y   bxY w# 1 sw Y   xY w)(N%dr3   )data_stringformat)r   z% z%e2005z'%s' did not raise ValueErrorry   z	' raised z, not ValueErrorz|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fail	Exception	__class__r   r#   r   r6   r7   subTestassertRaisesRegex)r   
bad_formaterrmsg_week_no_year_or_weekdaymsg_week_not_compatiblemsg_julian_not_compatiblemsg_year_no_week_or_weekdayrh   subtestsr   r   messages               r   test_ValueErrorzStrptimeTests.test_ValueError   s   *i&>&>D!% 	 	'+JH((< 		9JFG ,'.##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*[&'+fE++J@''V< A FE /7k   B		')?)?A B BBj A@ FEsA   E ?FF-F 	FF,FFFFF#	c                    | j                  t              5 }t        j                  dd       d d d        | j	                  j
                  j                  d       | j                  t              5 }t        j                  dd       d d d        | j                  |j
                  j                         y # 1 sw Y   xY w# 1 sw Y   ;xY w)NrV   z%DT19z%Y %)	r   r   r   r   assertIs	exception__suppress_context__assertIsNone__context__)r   es     r   test_strptime_exception_contextz-StrptimeTests.test_strptime_exception_context  s    z*a$$R. +akk66=z*a$$T62 +!++112 +* +*s   B50C5B>C
c                 P    | j                  t        t        j                  dd       y )Nz10 12%m)r   r   r   r   r   s    r   test_unconverteddataz"StrptimeTests.test_unconverteddata'  s    *i&>&>Nr   Nc                 &   	 || j                   }t        j                  ||      }t        j                  ||      }| j                  ||   ||   d|d|d||   d||          t        j                  dk\  rt        d|d|d||          y y )Nztesting of z format failed; z -> r'   r@   z	 format: )	r"   r    r(   r   r   r   r   verboseprint)r   fmtrC   r"   strf_outputstrp_outputs         r   	roundtripzStrptimeTests.roundtrip+  s    $JmmC4..{C@X.
80D{K,A$X.0	1 ??a[%:< =  r   c                 r   | j                  dd       | j                  dd       | j                  ddd       t        j                  }| j                   |dd      d   d       | j                   |dd      d   d       | j                   |d	d      d   d
       | j                   |dd      d   d       y )N%Yr   z%y	l  r   r   r   r   r   r   r   r   00i  68i  69i  99rL   )r   r   r   r   )r   strptimes     r   	test_yearzStrptimeTests.test_year9  s    tQtQtQ >? ++$-a0$7$-a0$7$-a0$7$-a0$7r   c                 (    | j                  dd       y )Nr   r   r   r   s    r   r>   zStrptimeTests.test_monthF      tQr   r   Cen_USfr_FRde_DEja_JPhe_ILrV   c                     | j                  dd       | j                  dd       t        dd      D ]:  }| j                  ddd|dddddddf	       | j                  ddd|dddddddf	       < y )Nr:   r   r;      r   r   )r   range)r   r   s     r   test_month_localezStrptimeTests.test_month_localeJ  sv     	tQtQq"ANN4T1aAq!Q$BCNN4T1aAq!Q$BC r   c                 (    | j                  dd       y )N%d %YrQ   r   r   s    r   test_dayzStrptimeTests.test_dayS  s    w"r   c                 (    | j                  dd       y )Nz%Hr@   r   r   s    r   	test_hourzStrptimeTests.test_hourW  r   r   c                 (    | j                  dd       y )N%I %pr@   r   r   s    r   test_hour_localezStrptimeTests.test_hour_locale\  s     	w"r   c                 (    | j                  dd       y )Nz%Mrk   r   r   s    r   test_minutezStrptimeTests.test_minutea  r   r   c                 (    | j                  dd       y )Nz%Sr   r   r   s    r   test_secondzStrptimeTests.test_seconde  r   r   c           	          dd l }|j                  ddddddd      }t        j                  t        |      d	      \  }}}| j                  ||j                         y )
Nr   i  rA      "   8   i4 z%Y-%m-%d %H:%M:%S.%f)r   )datetimer   strr   microsecond)r   r   rl   tupfrac_s         r   test_fractionzStrptimeTests.test_fractioni  sR    dBBB> **3q6:PQT1q}}-r   c                 L    | j                  dd       | j                  dd       y )N%wr4   %ur   r   s    r   r8   zStrptimeTests.test_weekdayp  s    tQtQr   c                 L    | j                  dd       | j                  dd       y )Nr3   r4   r5   r   r   s    r   test_weekday_localez!StrptimeTests.test_weekday_localeu  s      	tQtQr   c                 (    | j                  dd       y )Nz%j   r   r   s    r   test_julianzStrptimeTests.test_julian{  r   r   c                 x   d}d}d}t        j                   dd      \  ^ }}}}| j                  |||z          | j                  |d       t        j                   dd      \  ^ }}}}| j                  ||        | j                  |d       t        j                   dd      \  ^ }}}}| j                  |||z   |z           | j                  |d       t        j                   d	d      \  ^ }}}}| j                  |||z   |z           | j                  |d
       t        j                   dd      \  ^ }}}}| j                  ||       | j                  |d       t        j                   dd      \  ^ }}}}| j                  |||z           | j                  |d       t        j                   dd      \  ^ }}}}| j                  |||z   |z           | j                  |d       t        j                   dd      \  ^ }}}}| j                  |||z   |z           | j                  |d
       t        j                   dd      \  ^ }}}}| j                  |||z   |z          | j                  |d       t        j                   dd      \  ^ }}}}| j                  |d       | j                  |d       y )N       z+0130%zr   z-0100z-013030z-013030.000001rj   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_offsetzStrptimeTests.test_offset  s   	+4+>+>w+M(!VaI!56!,+4+>+>w+M(!Va(+!,+4+>+>y$+O(!Va8i#7+#E!FG!,+4+>+>?OQU+V(!Va8i#7+#E!FG"-+4+>+>x+N(!Va*!,+4+>+>x+N(!Va8i#7!89!,+4+>+>{D+Q(!Va8i#7+#E!FG!,+4+>+>?QSW+X(!Va8i#7+#E!FG"-+4+>+>PT+U(!VaI!5!CD$/+4+>+>sD+I(!Va#!,r   c                    | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        | j                  t              5 }t        j                  dd       d d d        | j                  dt	        j
                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w)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   r   s     r   test_bad_offsetzStrptimeTests.test_bad_offset  s    z*d3 +z*
D1 +z* 3T: +z* 2D9 +z*c
D1 +<c#-->PQ +*********s;   D+
D7>E2E&E+D47E EEE$rE   c           
      f   t        j                  dd      }| j                  |j                  d       t        j                  dd      }| j                  |j                  d       t	        j
                         }t	        j                  d      }t        j                  |d      }t        j                         }t        j                  d   t        j                  d   k7  st        j                  s+| j                  |d   |d   k(  d|d|d   d	|d          y | j                  |d   d
k(  d       y )NUTCrG   r   GMTr      ztimezone check failed; 'z' -> r'   rj   z]LocaleTime().timezone has duplicate values and time.daylight but timezone value not set to -1)r   r   r   tm_isdstr    r!   r(   r#   tznamedaylightrH   )r   r   r"   r   rh   s        r   rJ   z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                 l   t         j                  d   }|j                         dv r| j                  d       t	        j
                  t         d||f      5  t	        j
                  t         dd      5  t	        j
                  t         dd       5  ||ft         _        dt         _        t        j                  |d	      d
   }| j                  |dt         j                  d|dt         j                  d|       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )r  r  zneed non-UTC/GMT timezoner   r!  r   r"  c                       y r   r   r   r   r   <lambda>z1StrptimeTests.test_bad_timezone.<locals>.<lambda>  s    dr   rG   r  rj   z lead to a timezone value of z) instead of -1 when time.daylight set to z and passing in )
r    r   upperskipTestr   	swap_attrr!  r   r   r   )r   tz_nametz_values      r   test_bad_timezonezStrptimeTests.test_bad_timezone  s     ++a.==?n,MM56tX/ABtZ3tWl;"G,DKDM //>qAHXr [[(DMM7DE	 < 4 CB;; 43 CBs=   D*0DA,D9DD*DDD'	#D**D3eu_ESar_AEmfe_MUyo_NGcsb_PLbr_FRgez_ETbrx_INmy_MMor_INshn_MMaz_IRc           
         t        j                  t         j                        d   }t        rt        dk  r|dk(  r| j	                  d       t        j
                         }| j                  dt        dd      t        j                  |             | j                  dt        dd      t        j                  |dz
               | j                  dt        dd      t        j                  |dz
               t        d	d
      D ];  }| j                  dt        dd      t        j                  ||dz  dz  z
               = t        d	d      D ]>  }| j                  dt        dd      t        j                  ||dz  dz  dz  z
               @ | j                  dt        dd      t        j                  |dz
               y )Nr   )rQ      r1  z(%c in locale br_FR does not include timerS   r4       r   r     r  rA   r   )
r   r   r   	glibc_verr'  r    r   slicer!   r   )r   locnowis       r   test_date_time_localez#StrptimeTests.test_date_time_locale  sM    v~~.q1W,MMDEiiktU1a[$..*=>tU1a[$..t*DEtU1a[$..w*GHq!ANN4q!dnnS1R49_.MN  q"ANN4q!dnnS1R474<=O.PQ  	tU1a[$..{9J*KLr   STD-1DST,M4.1.0,M10.1.0c                 4   t        j                  t         j                        d   }t        j                  j                  d      r|dv r| j                  d|d       | j                  dt        dd      d       | j                  dt        dd      d	       y )
Nr   sunos)r-  locale  may not work on this platformrS   r4   r   	r  r   r   r   r   r   r   r   r   	r   r   r   sysplatform
startswithr'  r   r?  r   r@  s     r   test_date_time_locale2z$StrptimeTests.test_date_time_locale2  s{     v~~.q1<<""7+j w.LMNtU1a[*HItU1a[*HIr   c           
          t        j                          }| j                  dt        dd      t        j                  |             t	        dd      D ];  }| j                  dt        dd      t        j                  ||dz  dz  z
               = t	        dd      D ]>  }| j                  dt        dd      t        j                  ||d	z  dz  dz  z
               @ | j                  dt        dd      t        j                  |d
z
               y )NrT   r   r@   r   r  r<  r  rA   r  r=  )r    r   r?  r!   r   )r   rA  rB  s      r   test_date_localezStrptimeTests.test_date_locale  s    
 iiktU1a[$..*=>q!ANN4q!dnnS1R49_.MN  q"ANN4q!dnnS1R474<=O.PQ  	tU1a[$..{9J*KLr   c                 4   t        j                  t         j                        d   }t        j                  j                  d      r|dv r| j                  d|d       | j                  dt        dd      d       | j                  dt        dd      d	       y )
Nr   rF  )r   r   r-  rG  rH  rT   r@   r   rI  rJ  rN  s     r   test_date_locale2zStrptimeTests.test_date_locale2'  s|     v~~.q1<<""7+11w.LMNtU1a[*HItU1a[*HIr   aa_ETam_ETbyn_ERfa_IRom_ETsid_ETso_SOti_ETtig_ERwal_ETc                    t        j                  t         j                        d   }t        dd      }t        rt        dk  r|dv rt        dd      }t        j
                         }| j                  d|t        j                  |             | j                  d|t        j                  |dz
               | j                  d|t        j                  |d	z
               y )
Nr   r@   r4   )rQ      >
   rT  rU  rX  rZ  r[  rV  r2  rY  r\  r]  rk   rU   r:  r;  )r   r   r   r?  r>  r    r   r!   )r   r@  posrA  s       r   test_time_localezStrptimeTests.test_time_locale=  s     v~~.q1AqkW, 9@ 2@
 1+CiiktS$.."56tS$..t"<=tS$..w"?@r   c                     t        j                  d| j                        }t        j                  |d      }| j                  |d   | j                  d   k(  xr |d   | j                  d   k(  d       y )Nz%m %% %Yr   r   zhandling of percent sign failed)r    r(   r"   r   r   rH   )r   r   r   s      r   test_percentzStrptimeTests.test_percentR  se    mmJ@..{JGA$//!*<< >$Q4??1+==9	;r   c                 |   t        j                  d| j                        }| j                  t	        j
                  |j                         d      d       | j                  t	        j
                  |j                         d      d       | j                  t	        j
                  |j                         d      d       y )Nr:   z0strptime does not handle ALL-CAPS names properlyz1strptime does not handle lowercase names properlyz/strptime does not handle capword names properly)	r    r(   r"   rH   r   r   r&  r)   
capitalize)r   r   s     r   test_caseinsensitivez"StrptimeTests.test_caseinsensitiveZ  s    mmD$//:	001B1B1DdKJ	L	001B1B1DdKK	M	001G1G1I4PI	Kr   c                 j    d}t        j                  dd      }| j                  ||k(  d|d|       y )N)	r   r   r   r   r   r   r   r   rj   1r   z-Default values for strptime() are incorrect; r'   )r   r   rH   )r   defaultsr   s      r   test_defaultszStrptimeTests.test_defaultsd  s6    2..sD9x/'2H>	?r   c                 R    d}| j                  t        j                  ||             y )Nz.^$*+?{}\[]|)()rH   r   r   )r   need_escapings     r   test_escapingzStrptimeTests.test_escapingl  s"     *	00NOr   c                 0    t        j                  dd       y )NFeb 29%b %d)r    r   r   s    r   $test_feb29_on_leap_year_without_yearz2StrptimeTests.test_feb29_on_leap_year_without_yearu  s    h(r   c                 x    | j                  t        j                  dd      t        j                  dd             y )Nro  rp  zMar 1)
assertLessr    r   r   s    r   7test_mar1_comes_after_feb29_even_when_omitting_the_yearzEStrptimeTests.test_mar1_comes_after_feb29_even_when_omitting_the_yearx  s*    h0gw/	1r   r   ).r   r   r   r%   r   r   r   r   r   r>   r   r   r   r   r   r   r   r  r8   r
  r  r  r  r   r`   ra   r   rb   rJ   
skipUnlesshasattrr    r+  rC  run_with_tzrO  rQ  is_wasirS  ra  rc  rf  rj  rm  rq  rt  r   r   r   r   r      s   '+?=B3O=8  igw'SUVD WD# 
 igw7# 8#  . 
 igw"M  N 
 !-FR "X__IO "O, Xg D
E
E< igww78w';M	;M, W23igww'8x)J	) 4
J igwww;M;M X__02 i'7Gw;J;	J  igww7Hw8Wx3A	3A";K?P)1r   r   c                       e Zd Z	 d Zy)Strptime12AMPMTestsc                    | j                   } |t        j                  dd      d   d        |t        j                  dd      d   d        |t        j                  dd      d   d        |t        j                  dd      d   d       y )Nz12 PMr   r@   rA   z12 AMr   )r   r    r   r   r   )r   eqs     r   test_twelve_noon_midnightz-Strptime12AMPMTests.test_twelve_noon_midnight  sy    
4=='*1-r2
4=='*1-q1
9##GW5a8"=
9##GW5a8!<r   N)r   r   r   r}  r   r   r   rz  rz  }  s
    C=r   rz  c                       e Zd Z	 d Zy)JulianTestsc                     | j                   }t        dd      D ]%  } |t        j                  d|z  d      d   |       ' y )Nr   io  z%d 2004z%j %Yr  )r   r   r   r   )r   r|  rB  s      r   test_all_julian_daysz JulianTests.test_all_julian_days  s=    q#Ay''	Aw?BAF r   N)r   r   r   r  r   r   r   r  r    s    JGr   r  c                       e Zd Z	 d Zed        Zed        Zed        Zej                  rdZ
dZndZ
dZ ej                  ej                  j!                  d      d	      d
        Zd Zy)CalculationTestsc                 6    t        j                         | _        y r   )r    gmtimer"   r   s    r   r%   zCalculationTests.setUp  s    ++-r   c                    d}t        j                  t        j                  || j                        |      }| j                  |j                  | j                  j                  k(  d|j                  d| j                  j                         y )Nz%Y %m %d %H %M %S %w %ZzCalculation of tm_yday failed; r'   )r   r   r    r(   r"   rH   tm_ydayr   format_stringresults      r   test_julian_calculationz(CalculationTests.test_julian_calculation  sh     2))$--t*W$13$//*A*AA ..$//*A*AC	Dr   c                 B   d}t        j                  t        j                  || j                        |      }| j                  |j                  | j                  j                  k(  xrH |j                  | j                  j                  k(  xr# |j                  | j                  j                  k(  d|j                  d|j                  d|j                  d| j                  j                  d| j                  j                  d| j                  j                         y )Nz%Y %H %M %S %w %j %Zz&Calculation of Gregorian date failed; -r'   )	r   r   r    r(   r"   rH   tm_yeartm_montm_mdayr  s      r   test_gregorian_calculationz+CalculationTests.test_gregorian_calculation  s     /))$--t*W$13$//*A*AA C$//*@*@@C4??+B+BB !..&--//114??3I3I//11	3	4r   c                    d}t        j                  t        j                  || j                        |      }| j                  |j                  | j                  j                  k(  d|j                  d| j                  j                         y )Nz%Y %m %d %H %S %j %Zz'Calculation of day of the week failed; r'   )r   r   r    r(   r"   rH   tm_wdayr  s      r   test_day_of_week_calculationz-CalculationTests.test_day_of_week_calculation  sh     /))$--t*W$13$//*A*AA'-~~t7N7NP	Qr   )q  r   r   r  rA   r9    rA   r_  }  rA   r9  )r   r   aixzbpo-29972: broken test on AIXc                 x     fd} |dd        |dd        |dd        |dd	        |d
d        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |d d!        |d"d#        |d$d%        |d&d'       y )(Nc           	         dD ]  }|	j                   v r| 	j                  v r y dD ]  }|dz   |z   }	j                  || |      5  t        |  }|j	                  |      }t        j                  ||      }|d|d   d|j                         d   }	j                  |d d | |       d d d          y # 1 sw Y   xY w)	N)z%Y %Wz%Y %Ur   )r  r  r5   r3   rv   )r   r   z: r  r'   r@   )	_formats_excluded_ymd_excludedr   datetime_dater(   r   r   	timetupler   )
	ymd_tupletest_reasonyear_week_formatweekday_formatr  dt_date
strp_inputr   msgr   s
            r   test_helperzSCalculationTests.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)SI< < '?	 %@< <s   A$B77C )m  r   r@   zweek 0)r  r   r  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  rA   r9  zDec 31 on Sundayr  zDec 31 on Mondayr  z#Monday in the last week of the year)r  rA   rN   z-Monday in the second-to-last week of the year)i  
      zrandomly chosen date)i  rA      zEyear starting and ending on Monday while date not on Sunday or Monday)r  rA   rM   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)  rA   r9  zLast Sunday of 2006)r  rA   r<  zSecond to last Sunday of 2006r   )r   r  s   ` r   -test_week_of_year_and_day_of_week_calculationz>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                      fd} |dddddddddd	
        |dd
dddddddd
        |dddddddddd
        |dddddddddd
        |dd
dddddddd
        |dddddddddd
        |dddddddddd
        |dd
dddddddd
        |dddddddddd
        |dddddddddd
        |dd
dddddddd
        |dddddddddd
        |dddddddddd
        |dd
dddddddd
        |dddddddddd
        |d ddddddddd
        |d d
dddddddd
        |d!dddddddd"d
        |d#dddddddd"d
        |d#d
ddddddd"d
        |d$ddddddddd
        |d%dd&ddddddd
        |d%d
d'ddddddd
        |d(dd&ddddddd
        |d)dd&ddddddd
        |d)d
d&ddddddd
        |d*dd&ddddddd
        |d+dd&ddddddd
        |d+d
d&ddddddd
        |d,dd&ddddddd-
        |d.dd&ddddddd-
        |d.d
d&ddddddd-
        |d/dd'ddddddd
        |d0dd'ddddddd
        |d0d
d'ddddddd
        |d1dd'ddddddd
        |d2dd'ddddddd
        |d2d
d'ddddddd
        |d3dd'dddddd"d
        |d4dd'dddddd"d
        |d4d
d'dddddd"d
        |d5dd'ddddddd
       y )6Nc                 X    j                  t        j                  | |      d d |       y )Nrj   )r   r   r   )valuer   expectedr   s      r   checkz+CalculationTests.test_week_0.<locals>.check  s'    Y55eVDSbI8Tr   z2015 0 0z%Y %U %wi  rA      r   r4   ij  z%Y %W %wi  r   rk   z2015 1 1z%G %V %ur_  ik  z2015 0 1z2015 1 2r  il  z2015 0 2z2015 1 3r9  rQ   im  z2015 0 3z2015 1 4r@   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_0z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   N)r   r   r   r%   r   r  r  r  r   
is_androidr  r  r`   ra   rK  rL  rM  r  r  r   r   r   r  r    s    >( "D "D "4 "4 "Q "Q (&X__S\\,,U346-E6-E^-Ar   r  c                   V    e Zd Z	 d Zd Zd Zd Z ej                  d      d        Z	y)
CacheTestsc                 x   t        j                  dd       t        j                  dd       dt         j                  j                  _        t         j                  }t        j                  dd       | j                  |t         j                         | j                  t        t         j                        d       y )N10r   r   r   Nir   )	r   r   _TimeRE_cacherh   r^   assertIsNotr   len_regex_cache)r   original_time_res     r   test_time_re_recreationz"CacheTests.test_time_re_recreation(  s     	  t,  .37	++0$22  t,)9+B+BCY334a8r   c                    	 t         j                  d= d}t        t         j                        t         j                  k  rCd t         j                  |<   |dz  }t        t         j                        t         j                  k  rCt        j
                  dd       | j                  t        t         j                        d       y # t        $ r Y w xY w)Nr   r   r   r  )r   r  KeyErrorr  _CACHE_MAX_SIZEr   r   )r   	bogus_keys     r   test_regex_cleanupzCacheTests.test_regex_cleanup3  s    	&&t, 	)(()Y-F-FF04I""9-NI )(()Y-F-FF 	  t,Y334a8  		s   C 	CCc                     t         j                  j                  }dt         j                  j                  _        t        j                  dd       | j                  |t         j                  j                         y )Nr  r  r   )r   r  rh   r^   r   r  )r   locale_time_ids     r   test_new_localetimezCacheTests.test_new_localetime@  sU     #00<<37	++0  t,)@)@)L)LMr   c                    t        j                  dd      5  t        j                  dd       t        j                  }	 t        j                  t
        j                  d       t        j                  dd       t        j                  }| j                  ||       d d d        y # t
        j                  $ r | j                  d       Y /w xY w# 1 sw Y   y xY w)	Nr   z
en_US.UTF8z10 2004r   )r   UTF8r  r   ztest needs de_DE.UTF8 locale)r   run_with_localer   r   r  r   	setlocaler   r  Errorr'  )r   first_time_resecond_time_res      r   test_TimeRE_recreation_localez(CacheTests.test_TimeRE_recreation_localeH  s    $$Y=$$Y8%33M>  1BC((t4!*!8!8  ? >= << ><=> >=s)   'CAB$$$CC
CCCrD  c                    t         j                  }t        j                  t         j                  d   d      }| j	                  |j
                  d       t        j                  t         j                  d   d      }| j	                  |j
                  d       t        j                  }dt        j                  d<   t        j                          t        j                  t         j                  d   d      }| j	                  |j
                  d       t        j                  t         j                  d   d      }| j	                  |j
                  d       t        j                  }| j                  ||       | j                  t              5  t        j                  |d   d       d d d        | j                  t              5  t        j                  |d   d       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr   rG   r   zEST+05EDT,M3.2.0,M11.1.0TZ)r    r   r   r   r   r  r  osenvironr"  r  r   r   )r   	oldtznametmr  r  s        r   test_TimeRE_recreation_timezonez*CacheTests.test_TimeRE_recreation_timezone\  sc    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%G1%G.1G:N)
r   r   r   r  r  r  r  r   rw  r  r   r   r   r  r  %  s<    +	99N>( W239 49r   r  __main__)!r`   r    r   r   r  rL  rK  testr   test.supportr   r   r   r   r  r   libc_vertuplemapintsplitr>  TestCaser   r   rd   r   rz  r  r  r  r   mainr   r   r   <module>r     s+   %    	 	  
  G * 8A;'c#x{00567IIQH%% Q
ZAx(( ZAzY3(## Y3xf1H%% f1P=(++ =G(## GQAx(( QAhP9"" P9f zHMMO r   