
    dafƩ                     J   d dl mZ d dlm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
Z
d dlZd dlZd dlZ	 d dlZd dlmZ  e
j"                  d      xs dZddez  dz
  z  dz
  Ze dz
  d	z   Zd
ZdZd
ZdZdZ G d dej4                        ZdZdZej<                  ej<                  fej>                  ej>                  fej@                  ej@                  fejB                  ejB                  ffZ" G d dejF                        Z$ G d dejF                        Z% G d d      Z& G d d      Z' G d d      Z( G d de&e(ejF                        Z) G d de'e(ejF                        Z* G d d ejF                        Z+ ejX                  edu d!       G d" d#             Z- G d$ d%e-ejF                        Z. G d& d'e-ejF                        Z/ ej`                  e	j                  d(k(  d)       G d* d+ejF                               Z1e2d,k(  r ejf                          yy# e$ r dZY w xY w)-    )support)warnings_helperN)skip_if_buggy_ucrt_strfptime
SIZEOF_INT         l  i@B   i ʚ;c                       e Zd ZdZdZdZdZy)_PyTimer   r         N)__name__
__module____qualname__ROUND_FLOORROUND_CEILINGROUND_HALF_EVENROUND_UP     )/root/Python-3.12.4/Lib/test/test_time.pyr   r      s    KMOHr   r   l         l    c                      e Zd Zd Zd Zd Zd Z ej                   e	e
d      d      d        Z ej                   e	e
d      d       ej                   e	e
d      d	      d
               Z ej                   e	e
d      d       ej                   e	e
d      d      d               Z ej                   e	e
d      d      d        Z ej                   e	e
d      d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zed        Zd Zd Zd Zd  Z ej<                  ej@                  d!      d"        Z! ej                   e	e
d#      d$      d%        Z"d& Z#d' Z$d( Z%d) Z&d* Z' ej                   e(jR                         d+   d,k7  d-      d.        Z*d/ Z+d0 Z, ej<                  ejZ                  d1      d2        Z.d3 Z/ ej                   e	e
d      d4      d5        Z0d6 Z1d7 Z2y8)9TimeTestCasec                 6    t        j                          | _        y N)timetselfs    r   setUpzTimeTestCase.setUp9   s    r   c                     t         j                   t         j                   t         j                   t         j                   y r   )r   altzonedaylighttimezonetznamer    s    r   test_data_attributesz!TimeTestCase.test_data_attributes<   s    r   c                     t        j                           t        j                  d      }| j                  |j                         | j	                  |j
                         y )Nr   )r   get_clock_infoassertFalse	monotonic
assertTrue
adjustable)r!   infos     r   	test_timezTimeTestCase.test_timeB   s=    		""6*((r   c                      fd} |t        j                          t        j                                 |t        j                         t        j                                 |t        j                         t        j
                                 |t        j                         t        j                                t        t         d      r- |t        j                         t        j                                t        t         d      rL |t        j                  t         j                        t        j                  t         j                               y y )Nc                 ~    j                  |t               t        | dz        }j                  ||z
  d| |f       y )Ng    eAl   @F )assertIsInstanceint
assertLess)secnssec_nsr!   s      r   check_nsz0TimeTestCase.test_time_ns_type.<locals>.check_nsI   s8    !!"c*s^FOOVb[7S"I>r   thread_timeclock_gettime)r   time_nsr,   monotonic_nsperf_counterperf_counter_nsprocess_timeprocess_time_nshasattrr:   thread_time_nsr;   CLOCK_REALTIMEclock_gettime_ns)r!   r9   s   ` r   test_time_ns_typezTimeTestCase.test_time_ns_typeH   s    	? 		!!""$	&""$%%'	)""$%%'	) 4'T%%'((*, 4)T''(;(;<**4+>+>?A *r   r;   zneed time.clock_gettime()c                 v    t        j                  t         j                        }| j                  |t               y r   )r   r;   rD   r3   floatr!   r   s     r   test_clock_realtimez TimeTestCase.test_clock_realtimea   s*     t223a'r   CLOCK_MONOTONICzneed time.CLOCK_MONOTONICc                     t        j                  t         j                        }t        j                  t         j                        }| j                  ||       y r   )r   r;   rK   assertLessEqual)r!   abs      r   test_clock_monotonicz!TimeTestCase.test_clock_monotonicg   s@    
 t334t334Q"r   pthread_getcpuclockidz!need time.pthread_getcpuclockid()c                 |   t        j                  t        j                               }| j	                  t        |      t        u        t        j                         dk(  rBt        j                  j                         dk  r!| j                  |t         j                         n`t        j                  j                  d      r!| j                  |t         j                         n | j                  |t         j                         t        j                   |      }t        j                   |      }| j#                  ||       y )NAIX    sunos)r   rQ   	threading	get_identr-   typer4   platformsystemsysmaxsize
bit_lengthassertEqualCLOCK_THREAD_CPUTIME_ID
startswithassertNotEqualr;   rM   )r!   clk_idt1t2s       r   test_pthread_getcpuclockidz'TimeTestCase.test_pthread_getcpuclockidp   s    
 ++I,?,?,ABV+,??%3;;+A+A+Cr+IVT%A%AB\\$$W-VT%A%AB(D(DE''R$r   clock_getreszneed time.clock_getres()c                     t        j                  t         j                        }| j                  |d       | j	                  |d       y )N              ?)r   rf   rD   assertGreaterrM   )r!   ress     r   test_clock_getreszTimeTestCase.test_clock_getres   s:      3 343$S#&r   clock_settimezneed time.clock_settime()c                 <   t        j                  t         j                        }	 t        j                  t         j                  |       t        t         d      r5| j                  t        t         j                  t         j                  d       y y # t        $ r Y Qw xY w)NrK   r   )	r   r;   rD   rm   PermissionErrorrB   assertRaisesOSErrorrK   rI   s     r   test_clock_settimezTimeTestCase.test_clock_settime   s     t223	t22A6 4*+g"00$2F2FK ,  		s   $B 	BBc           	      ~   | j                  t        j                  | j                        t        j                  t        j
                  | j                                     | j                  t        t        j                  t        j
                  | j                                    t        | j                               y r   )r^   r   ctimer   asctime	localtimer4   mktimer    s    r   test_conversionszTimeTestCase.test_conversions   sn    DFF+dnnTVV&<=	?T[[)?@ATVV	&r   c                     | j                  t        t        j                  d       | j                  t        t        j                  d       t        j                  d       y )Ng333333?)rp   
ValueErrorr   sleepr    s    r   
test_sleepzTimeTestCase.test_sleep   s9    *djj"5*djj"5

3r   c                 l    t        j                  d      }| j                  t        |      d d d|       y )Nr      )i  r   r   r   r   r   )r   gmtimer^   tuple)r!   epochs     r   
test_epochzTimeTestCase.test_epoch   s/     Aubq)+@%Hr   c                 f   t        j                  | j                        }dD ]  }d|z   }	 t        j                  ||         | j                  t        t         j                  d|       | j                  t        t         j                  d|       y # t        $ r | j                  d|z         Y w xY w)NrN   ArO   BcdHIjmMpSUwWxXyYZ%z %z conversion specifier: %r failed.s   %Sz%S )r   r   r   strftimer|   failrp   	TypeError)r!   tt	directiveformats       r   test_strftimezTimeTestCase.test_strftime   s    [[ G 	GI I%FGfb)	G 	)T]]E2>*dmmVR@  G		<vEFGs   BB0/B0c                 6    |d        |d       | j                  t        |d       | j                  t        |d        |d        |d       | j                  t        |d       | j                  t        |d        |d	       | j                  t        |d
       | j                  t        |d        |d       | j                  t        |d       | j                  t        |d       | j                  t        |d        |d        |d       | j                  t        |d       | j                   |d       |d             | j                  t        |d        |d        |d       | j                  t        |d       | j                  t        |d       y )N)	r
   r   r   r   r   r   r   r   r{   )	r
      r   r   r   r   r   r   r{   )	r
   r{   r   r   r   r   r   r   r{   )	r
      r   r   r   r   r   r   r{   )	r
   r   r   r   r   r   r   r   r{   )	r
   r      r   r   r   r   r   r{   )	r
   r   r{   r   r   r   r   r   r{   )	r
   r   rT   r   r   r   r   r   r{   )	r
   r   r      r   r   r   r   r{   )	r
   r   r   r{   r   r   r   r   r{   )	r
   r   r      r   r   r   r   r{   )	r
   r   r   r   ;   r   r   r   r{   )	r
   r   r   r   r{   r   r   r   r{   )	r
   r   r   r   <   r   r   r   r{   )	r
   r   r   r   r   r{   r   r   r{   )	r
   r   r   r   r   r   r   r   r{   )	r
   r   r   r   r   =   r   r   r{   )	r
   r   r   r   r   >   r   r   r{   )	r
   r   r   r   r   r   r{   r   r{   )	r
   r   r   r   r   r   r   r   r{   )	r
   r   r   r   r   r   rz   r   r{   )	r
   r   r   r   r   r   r   r   r{   )	r
   r   r   r   r   r   r   in  r{   )	r
   r   r   r   r   r   r   r{   r{   )	r
   r   r   r   r   r   r   io  r{   )rp   r|   r^   )r!   funcs     r   _bounds_checkingzTimeTestCase._bounds_checking   s    	,--.*d<	>*d<	> 	,--.*d<	>*d<	> 	-.*d<	>*d<	> 	-.*d<	>*d<	> 	*d<	> 	-.-.*d<	> 	>?>?	A*d<	> 	,-./*d<	>*d=	?r   c                 (    | j                  d        y )Nc                 .    t        j                  d|       S )N r   r   )tups    r   <lambda>z;TimeTestCase.test_strftime_bounding_check.<locals>.<lambda>   s    $--C*@ r   )r   r    s    r   test_strftime_bounding_checkz)TimeTestCase.test_strftime_bounding_check   s    @Ar   c                     dD ]6  }t        dd      D ]%  }dD ]  }	 t        j                  ||z  |z            ' 8 y # t        $ r Y 1w xY w)N)r   r   z%Az%AAr      )r   zA%zAA%z%A%zA%A%z%#)ranger   r   r|   )r!   r   r   zs       r   test_strftime_format_checkz'TimeTestCase.test_strftime_format_check   se    
 * 	A3% B Aa!eai0	
 & s   =	A		A		c                     d}t        j                         5  t        j                  dd      }d d d        | j	                  |       y # 1 sw Y   xY w)Nz2000 01 01 00 00 00 1 001z%Y %m %d %H %M %S %w %j)	  r   r   r   r   r   r   r   r   )r   check_warningsr   r   r^   )r!   expectedresults      r   test_default_values_for_zeroz)TimeTestCase.test_default_values_for_zero  sO    
 /++- 	N]]#<nMF	N6*	N 	Ns   A		Ac           	         t        j                  | j                        }dD ]4  }d|z   }t        j                  ||      }	 t        j                  ||       6 y # t
        $ r | j                  d|d|d       Y [w xY w)Nr   r   zconversion specifier z failed with 'z' input.)r   r   r   r   strptimer|   r   )r!   r   r   r   strf_outputs        r   test_strptimezTimeTestCase.test_strptime  s}     [[ G 		1I 9_F--3K1k62		1  1		!;0 11s   A!A>=A>c                     | j                  t        t        j                  dd       | j                  t        t        j                  dd       y )Ns   2009%Y2009s   %Y)rp   r   r   r   r    s    r   test_strptime_bytesz TimeTestCase.test_strptime_bytes  s2    )T]]GTB)T]]FEBr   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                  d       y # 1 sw Y   xY w# 1 sw Y   <xY w)Nr   z%DT19z%Y %)rp   r|   r   r   assertIs	exception__suppress_context__)r!   es     r   test_strptime_exception_contextz,TimeTestCase.test_strptime_exception_context   s    z* 	$aMM"d#	$akk66=z* 	(aMM$'	(akk66=	$ 	$	( 	(s   B60C6B?Cc           	         t        j                  t        j                  | j                               t        t
        fD ]N  }t        j                  |ddfdz         }| j                  |t        t        |             d  t        |             P | j                  t        t         j                  t        dz   fdz          | j                  t        t         j                  t
        dz
  fdz          | j                  t        t         j                  d       | j                  t        t         j                  d       | j                  t        t         j                  d       y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   ru   r   r   TIME_MAXYEARTIME_MINYEARr^   lenstrrp   OverflowErrorr   )r!   bigyearascs      r   test_asctimezTimeTestCase.test_asctime*  s   T[[() $\1 	EG,,A9:CS#c'l"3!3!45s7|D	E 	-'!+-8	:-'!+-8	:)T\\15)T\\26)T\\9=r   c                 B    | j                  t        j                         y r   )r   r   ru   r    s    r   test_asctime_bounding_checkz(TimeTestCase.test_asctime_bounding_check9  s    dll+r   (musl libc issue on Emscripten, bpo-46390c                    t        j                  d      }| j                  t        j                  |      d       t        j                  d      }| j                  t        j                  |      d       dD ]O  }	 t        j                  |ddfdz         }| j                  t        j                  |      d	d  t	        |             Q y # t
        t        f$ r Y dw xY w)
N)	i  	   r   r   r   4   r   r   r{   zSun Sep 16 01:03:52 1973)	r   r   r   r   r   r   r   r   r{   zSat Jan  1 00:00:00 2000)id   r   r   i  '  r   
   r      )r   rw   r^   rt   r   r|   r   )r!   r   yeartestvals       r   
test_ctimezTimeTestCase.test_ctime<  s     KK9:A(BCKK78A(BC8 	FDF++tQmf&<=   G!4RS!93t9E	F .  s   ;C

CCtzsetz"time module has no attribute tzsetc                 ,   ddl m} d}d}d}d}|j                  dd       }	 ||d<   t        j                          ||d<   t        j                          | j                  t        j                  |      t        j                  |             | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  |      j                  d       ||d<   t        j                          | j                  t        j                  |      t        j                  |             | j                  t        j                  d       | j                  t        t        j                        d	       | j                  t        j                  d
       | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  |      j                  d       | j                  t        t        j                        d	       ||d<   t        j                          | j                  t        j                  |      t        j                  |             | j                  t        j                  d   dt        j                  d          | j!                  t        j                  d
   dv t#        t        j                  d
                | j                  t        t        j                        d	       | j                  t        j                  d
       | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  |      j                  d
       |||d<   nd|v r|d= t        j                          y # |||d<   nd|v r|d= t        j                          w xY w)Nr   )environg   zAzEST+05EDT,M4.1.0,M10.5.0zAEST-10AEDT-11,M10.5.0,M3.5.0zUTC+0TZ)ESTEDTr   r   PF  i@8  AESTEST)AEDTr   i`siPe)osr   getr   r   r^   r   rv   r%   r&   tm_isdstra   r'   r   r$   assertInr-   r   )r!   r   xmas2002easternvictoriautcorg_TZs          r   
test_tzsetzTimeTestCase.test_tzsetN  s    	   -2T$'5	 $GDMJJLGDMJJLH%t~~h'? T]]A.T]]A.T^^H5>>B $GDMJJLH 5t~~h7OPT[[.9S-q1T]]A.T]]E2T\\51T^^H5>>BS-q1 %GDMJJLH 5t~~h7OP MM$++a.<$++a.IOODKKNo=s4;;q>?RSS-q1T]]A.T]]F3T\\62T^^H5>>B
 ! &DMJJL	 ! &DMJJLs   N(O. .%Pc                     t         j                  t         j                  t         j                  fD ]   }dD ]  }| j	                  t
        ||        " y )N)gZbtgZbti)r   rt   r   rv   rp   r   )r!   r   unreasonables      r   test_insane_timestampsz#TimeTestCase.test_insane_timestamps  sK    
 JJT^^; 	ED - E!!-|DE	Er   c                 V    t        j                          t        j                  d        y r   )r   rt   r    s    r   test_ctime_without_argz#TimeTestCase.test_ctime_without_arg  s     	



4r   c                     t        j                         }t        j                  d       }t        j                  |      }t        j                  |      }| j                  ||d       y Ng?)delta)r   r   rw   assertAlmostEqual)r!   gt0gt1t0rc   s        r   test_gmtime_without_argz$TimeTestCase.test_gmtime_without_arg  sL    kkmkk$[[[[r2S1r   c                     t        j                         }t        j                  d       }t        j                  |      }t        j                  |      }| j                  ||d       y r   )r   rv   rw   r  )r!   lt0lt1r  rc   s        r   test_localtime_without_argz'TimeTestCase.test_localtime_without_arg  sM    nnnnT"[[[[r2S1r   c                     dD ]=  }	 t        j                  |      }| j                  t        j                  |      |       ? y # t        t
        f$ r Y Rw xY w)N)rz   r{   r   r   )r   rv   r^   rw   r   rq   )r!   r   r   s      r   test_mktimezTimeTestCase.test_mktime  sW     	5A5^^A&   R!4	5 "7+ s   AAAr   glibcz0disabled because of a bug in glibc. Issue #13309c                 (   t        j                  | j                        }t        j                  d|      }| j	                  |d       	 t        j
                  d       | j                  t        j                  d|      |       y # t        $ r Y 2w xY w)N%ZLMT)	r{   r   r   r   r   r   r{   r{   r{   )r   r   r   r   ra   rw   r   r^   )r!   r   r'   s      r   test_mktime_errorzTimeTestCase.test_mktime_error  sy     [[ tR(FE*	KK78 	tR0&9  		s   	B 	BBc                    t        d      D cg c]  }t        j                          }}|d   }|dd  D ]  }| j                  ||d|z         |} t        j                         }t        j                  d       t        j                         }||z
  }| j                  ||       | j                  d|k         t        j                  d      }| j                  |j                         | j                  |j                         y c c}w )Nr   r   r   ztimes=%sg      ?g?r,   )
r   r   r,   assertGreaterEqualr}   rj   r-   r*   r+   r.   )r!   ntimesrc   rd   dtr/   s          r   test_monotoniczTimeTestCase.test_monotonic  s    +0:6a!661X) 	B##BJ,>?B	
 ^^

3^^"W2r" 	$ "";/')' 7s   Dc                 ,    t        j                          y r   )r   r>   r    s    r   test_perf_counterzTimeTestCase.test_perf_counter  s    r   z"process_time not available on WASIc                 >   t        j                         }t        j                  d       t        j                         }| j                  ||z
  d       t        j                  d      }| j                  |j                         | j                  |j                         y )N皙?{Gz?r@   )	r   r@   r}   r5   r*   r-   r,   r+   r.   r!   startstopr/   s       r   test_process_timezTimeTestCase.test_process_time  sr    
 !!#

5  " 	ue,"">2')r   c                    t        t        d      sSt        j                  j	                  d      r#| j                  dt        j                         n| j                  d       t        j                         }t        j                  d       t        j                         }| j                  ||z
  d       t        j                  d      }| j                  |j                         | j                  |j                         y )Nr:   )linuxwinz*time.thread_time() should be available on zneed time.thread_timer  r  )rB   r   r[   rY   r`   r   skipTestr:   r}   r5   r*   r-   r,   r+   r.   r  s       r   test_thread_timezTimeTestCase.test_thread_time  s    t]+||&&'78		 \\, - 56   "

5! 	ue,""=1')r   zneed time.clock_settimec                    t        j                         }t        j                  t         j                        }	 t        j                  t         j                  |dz
         t        j                         }t        j                  t         j                  |       | j                  ||       y # t
        $ r}| j                  |       Y d }~jd }~ww xY w)Ni  )r   r,   r;   rD   rm   ro   r$  r  )r!   rc   realtimeerrrd   s        r   test_monotonic_settimez#TimeTestCase.test_monotonic_settime  s     ^^%%d&9&9:	t22HtOD ^^4..9B'  	MM#	s   'B+ +	C4C

Cc                    d }dD ]  }	 t        j                  |        || j                  d       | j                  t        t         j                  |       | j                  t        t         j                  |       | j                  t        t         j                  t        d             | j                  t        t         j                  t        d             y # t        $ r | j                  d       Y t        $ r |}Y  w xY w)N)r{   i   @l        l            zneed 64-bit time_tz&unable to find an invalid time_t valuenan)	r   rv   r   r$  rq   rp   rt   r|   rH   )r!   invalid_time_ttime_ts      r   test_localtime_failurez#TimeTestCase.test_localtime_failure  s    / 	Fv&	 !MMBC'4>>>B'4::~> 	*dnneElC*djj%,? ! 423 !'s   CD6
DDc                    g d}t        t        d      r|j                  d       |D ]  }| j                  |      5  t        j                  |      }| j                  |j                  t               | j                  |j                  d       | j                  |j                  t               | j                  |j                  t               | j                  |j                  d       | j                  |j                  d       | j                  |j                  t               d d d        
 | j!                  t"        t        j                  d       y # 1 sw Y   ;xY w)N)r,   r>   r@   r   r:   )namer   rh   ri   xxx)rB   r   appendsubTestr*   r3   implementationr   ra   r,   bool
resolutionrH   rj   rM   r.   rp   r|   )r!   clocksr0  r/   s       r   test_get_clock_infoz TimeTestCase.test_get_clock_info4  s   
 4'MM-( 	=D4( 
=**40%%d&9&93?##D$7$7<%%dnnd;%%doou=""4??C8$$T__c:%%doot<
= 
=	= 	*d&9&95A
= 
=s   C*EE#	N)3r   r   r   r"   r(   r0   rF   unittest
skipUnlessrB   r   rJ   rP   re   rl   rr   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   skipIfr   is_emscriptenr   r   r   r   r  r
  r  rY   libc_verr  r  r  is_wasir   r%  r)  r.  r8  r   r   r   r   r   7   s   )A2 X746(6( X746X'8946#66#
 X'>?<>X746%6>% X~635'5'
 X746	K6	K&
IA7?rB+ "1 "1C
>>, X__IFF Xw/=?G?GRE225 X***,Q/7:KM:M:*. X__=***( X724(4(@*Br   r   c                       e Zd Zd Zd Zd Zy)
TestLocalec                 T    t        j                  t         j                        | _        y r   locale	setlocaleLC_ALLoldlocr    s    r   r"   zTestLocale.setUpO  s    &&v}}5r   c                 `    t        j                  t         j                  | j                         y r   rB  r    s    r   tearDownzTestLocale.tearDownR  s    4r   c                     	 t        j                  t         j                  d      }t        j                  dd       y # t         j                  $ r | j	                  d       Y =w xY w)Nfr_FRz$could not set locale.LC_ALL to fr_FRz%B)	i  r   r   r   r   r   r   r   r   )rC  rD  rE  Errorr$  r   r   )r!   tmps     r   test_bug_3061zTestLocale.test_bug_3061U  sS    	B""6==':C 	d23 || 	BMM@A	Bs   $= $A$#A$N)r   r   r   r"   rH  rM  r   r   r   r@  r@  N  s    654r   r@  c                       e Zd ZdZd Zd Zy)_TestAsctimeYear%dc                 V    t        j                  |fdz         j                         d   S )Nr   r{   )r   ru   splitr!   r   s     r   yearstrz_TestAsctimeYear.yearstra  s%    ||QD8O,224R88r   c                     | j                  | j                  d      d       | j                  | j                  d      d       y )N90  12345[	123456789)r^   rT  r    s    r   test_large_yearz _TestAsctimeYear.test_large_yeard  s4    e,g6i0+>r   N)r   r   r   _formatrT  rZ  r   r   r   rO  rO  ^  s    G9?r   rO  c                        e Zd Z ej                  dd      dk(  rdZndZd Z ej                  e	j                  d      d        Zd	 Z ed
       fd       Z ed       fd       Z[ xZS )_TestStrftimeYearr   )	r   r   r   r   r   r   r   r   r   0001%04drP  c                 6    t        j                  d|fdz         S )Nr   r   r   rS  s     r   rT  z_TestStrftimeYear.yearstru  s    }}TA4(?33r   zrequires strftime extensionc                 r    | j                   dk(  r| j                  d       y d }| j                  d|       y )Nr_  c                 6    t        j                  d| fdz         S )Nz%4Yr   r   )r   s    r   year4dz-_TestStrftimeYear.test_4dyear.<locals>.year4d  s    }}UQD8O<<r   )r   )r[  	test_year)r!   rc  s     r   test_4dyearz_TestStrftimeYear.test_4dyearx  s1    
 <<6!NN6"=NN6N/r   c                     d}	 t        j                  d| fdz          d}t        j                  ||      S # t        $ r d}Y #w xY w)Nz5strftime() is limited to [1; 9999] with Visual Studior   r   TF)r   r   r|   r9  r:  )r   msgconds      r   skip_if_not_supportedz'_TestStrftimeYear.skip_if_not_supported  sP    E	MM$x0 D""4--	  	D	s   6 AAr   c                      t         |          S r   )superrZ  r!   	__class__s    r   rZ  z!_TestStrftimeYear.test_large_year  s    w&((r   r   c                      t         |          S r   )rk  test_negativerl  s    r   ro  z_TestStrftimeYear.test_negative  s    w$&&r   )r   r   r   r   r   r[  rT  r9  r:  r   has_strftime_extensionsre  ri  rZ  ro  __classcell__)rm  s   @r   r]  r]  i  s     t}}T?+v54 X'')F00	. 5!) ") 1' ' 	r   r]  c                   $    e Zd ZdZddZd Zd Zy)_Test4dYearrP  Nc                    |xs | j                   }|xs | j                  }| j                   |d      |dz         | j                   |d      |dz         | j                   |d      |dz         | j                   |d      |dz         | j                   |d      |dz         | j                   |d      |dz         y )Nr   D   E   c     '  )r[  rT  r^   )r!   fmtr   s      r   rd  z_Test4dYear.test_year  s    !T\\#t||aS1W-bS2X.bS2X.bS2X.cS3Y/dS4Z0r   c                    | j                  | j                  d      j                  d      d       | j                  | j                  d      j                  d      d       | j                  | j                  t              j                  d      t	        t                     | j                  t        | j                  t        dz          y )NrV  +rW  rX  rY  r   )r^   rT  lstripr   r   rp   r   r    s    r   rZ  z_Test4dYear.test_large_year  s    e,33C8'Bi077<kJl3::3?\ARS-|a7GHr   c                    | j                  | j                  d      | j                  dz         | j                  | j                  d      d       | j                  | j                  d      d       | j                  | j                  d      t        d             | j                  | j                  d      t        d             | j                  | j                  t              t        t                     | j                  t        | j                  t        dz
         | j                  t              5  | j                  t         dz
         d d d        y # 1 sw Y   y xY w)	Nr{   i.z-1234iz-123456i2i.ir   )r^   rT  r[  r   r   rp   r   r   r    s    r   ro  z_Test4dYear.test_negative  s    b)4<<"+<=e,g6g.	:j13z?Ck2C4DEl3S5FG-|a7GH}- 	,LL,*+	, 	, 	,s   4EE )NN)r   r   r   r[  rd  rZ  ro  r   r   r   rs  rs    s    G1I
,r   rs  c                       e Zd Zy)TestAsctime4dyearNr   r   r   r   r   r   r  r        r   r  c                       e Zd Zy)TestStrftime4dyearNr  r   r   r   r  r    r  r   r  c                   :   e Zd Ze ej
                  ej                  dk(  d       ej                  e	j                  d      d                      Z ej
                  ej                  dk(  d      d        Z ej
                  ej                  dk(  d      d        Zy)
TestPytime   zneeds tm_zone supportr   c                    t        j                         }| j                  t        |d             | j                  t        |d             |j                  !| j                  t        t         d              nH| j                  |j                  t         j                  t         j                  g|j                             |j                  !| j                  t        t         d              n7| j                  |j                  t         j                  |j                            t        j                  |      }t        j                  |d d       }| j                  ||       t        j                  |      }t        j                  |      }| j                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  ||       | j                  |j                  |j                         | j                  |j                  |j                         y )N	tm_gmtofftm_zoner&   r'   r   )r   rv   r-   rB   r  r^   r&   r$   r   r  r'   rw   )r!   ltr   t9new_ltnew_lt9s         r   test_localtime_timezonez"TestPytime.test_localtime_timezone  s    ^^K01I./ <<OOj 99:R\\T]]DLL,I"++,V+VW::OOh 778RZZR[[)AB
 KKO$++b!f"5RB "dnnR.@G$))2<<84"%))2<<8"**5r   c                     t        j                  dd      }| j                  |j                  d       t        j                  dd      }| j                  |j                  d       y )NUTCr  z+0500z%zr   )r   r   r^   r  r  rI   s     r   test_strptime_timezonez!TestPytime.test_strptime_timezone  sJ    MM%&E*MM'4(h/r   c                     dd l }d}|j                  |      }| j                  |j                  d        | j                  |j                  d        y )Nr   sL   ctime
struct_time
p0
((I2007
I8
I11
I1
I24
I49
I5
I223
I1
tp1
(dp2
tp3
Rp4
.)pickleloadsr   r  r  )r!   r  str  s       r   test_short_timeszTestPytime.test_short_times  sA     	 m\\"bllD)bjj$'r   N)r   r   r   r   r9  r:  r   _STRUCT_TM_ITEMSr;  r   r<  r  r  r  r   r   r   r  r    s    !X.."46MNX__I 6 O "
 6D X.."46MN0 O0 X.."46MN( O(r   r  zneed the _testcapi modulec                   J    e Zd ZdZdZd Zd Zd Z	 d
dZ	 ddZ		 ddZ
d	 Zy)CPyTimeTestCasez1
    Base class to test the C _PyTime_t API.
    Nc                 P    ddl m} |dz  dz
  }d|z   | _        d|z  dz
  | _        y )Nr   )SIZEOF_TIME_Tr	   r   r   )	_testcapir  
time_t_min
time_t_max)r!   r  bitss      r   r"   zCPyTimeTestCase.setUp  s0    +q 1$9*t)a-r   c                 J    | j                   |cxk  xr | j                  k  S c S r   )r  r  )r!   secondss     r   time_t_filterzCPyTimeTestCase.time_t_filter	  s     7=doo=>=>r   c           
      "   dt         t        t        g}|r|j                  d       d}dg}|D ]"  }|D ]  }||z  }|j	                  | |f        $ dD ]4  }d|z  t        z  }|j	                  | dz
  | | dz   |dz
  ||dz   f       6 t
        j                  t
        j                  fD ]  }	|j                  |	t        z          |r!dD ]  }d| z  }|j	                  | |f        d	t        z  t        z  }|j	                  | |f       |S )
z'Build timestamps used to test rounding.r   gMbP?)r   r         {   i  i  r   rw  rx  ry  i i?B i  i  i  i  i  i  i	  i  i  r   )	r   r  r         r   r      !   r   )r   r  r   r  g       @l            )US_TO_NSMS_TO_NS	SEC_TO_NSr2  extendr  INT_MININT_MAX)
r!   	use_floatunitsvaluesns_timestampsunitvaluer7   pow2r  s
             r   _rounding_valuesz CPyTimeTestCase._rounding_values  sS    Hh	2LL
$  	0D 0T\$$rc2Y/0	0 7 	Dt)y(B  AsRCE1b"Q$" 	 "))9+<+<= 	6G  9!45	6& 0dU^$$rc2Y/0
 "i/rc2Y'r   c                 N   fd}| j                        } ||      }t        D ][  \  }	}
t        j                         5 }|
|_        |D ],  }||
d}	  |||	      } ||      }| j                  |       . 	 d d d        ] | j                  t        z  }| |f} ||      }t        D ]:  \  }	}|D ]0  }||	d}| j                  t        |      5   |||	       d d d        2 < y # t
        $ r | j                  d|z         Y w xY w# 1 sw Y   xY w# 1 sw Y   nxY w)Nc                     r%t         t              z  }| D cg c]  }||z  	 }}nt         z  }| D cg c]  }||z  	 }}rt        |      }t        t	        |            S c c}w c c}w r   )r  rH   filtersortedset)r  
unit_to_nsr7   r  unit_to_secr  value_filters       r   convert_valuesz7CPyTimeTestCase._check_rounding.<locals>.convert_valuesB  sz    &{);;
4ABb"z/BB&+5
5BCr"
*CCf5 #f+&& C Ds
   A&A+)r  roundingz!Error on timestamp conversion: %s)rg  )r  ROUNDING_MODESdecimallocalcontextr  	Exceptionr   r^   OVERFLOW_SECONDSr  rp   r   )r!   pytime_converterexpected_funcr  r  r  r  r  valid_valuestime_rnddecimal_rndcontextr  
debug_infor   r   r7   overflow_values_s      ```             r   _check_roundingzCPyTimeTestCase._check_rounding?  sd   	' --i8%m4%3 	1!Hk%%' 17#. ) 	1E+0k!JJT!1%!B#0#7 $$V%-%/1	11 1	1  ""Y.b	(7) 	6KHa( 6',(C
&&}*&E 6$UH56 66	6 % T		"E
"RST1 1*6 6s<   DC,(D
D,D		DD	DD	D$c                 .    | j                  ||d||       y )NFr  r!   r  r  r  r  s        r   check_int_roundingz"CPyTimeTestCase.check_int_roundingl  s    -}"K	?r   c                 .    | j                  ||d||       y )NTr  r  s        r   check_float_roundingz$CPyTimeTestCase.check_float_roundingq  s    -}!;	>r   c                 d    t        j                  |      }|j                  d      }t        |      S )Nr   )r  Decimalquantizer4   )r!   r   r   s      r   decimal_roundzCPyTimeTestCase.decimal_roundv  s&    OOAJJqM1vr   r   )r   N)r   r   r   __doc__r  r"   r  r  r  r  r  r  r   r   r   r  r    sD     (?1h >B+6\ 8<? :>>
r   r  c                   $   e Zd ZdZ ej
                  dez        Zd Zd Z	d Z
d Zd Z ej                   eed      d	      d
        Z ej                   eed      d      d        Z ej                   eed      d      d        Zd Zd Zy)TestCPyTimez#
    Test the C _PyTime_t API.
    l           c                     ddl m d }| j                  fdd |       t        D ]4  \  }}| j	                  t
              5   t        d             d d d        6 y # 1 sw Y   AxY w)Nr   )PyTime_FromSecondsc                 Z    t         j                  | cxk  xr t         j                  k  S c S r   )r  r  r  secss    r   c_int_filterz2TestCPyTime.test_FromSeconds.<locals>.c_int_filter  s$    %%B1B1BBCBCr   c                      |       S r   r   )r  rndr  s     r   r   z.TestCPyTime.test_FromSeconds.<locals>.<lambda>  s    2DT2J r   c                     | t         z  S r   r  r  s    r   r   z.TestCPyTime.test_FromSeconds.<locals>.<lambda>  s    TI-= r   r  r+  )r  r  r  r  rp   r   rH   )r!   r  r  r  r  s       @r   test_FromSecondszTestCPyTime.test_FromSeconds  ss    0	D 	 J =-9 	  	;
 * 	1KHa""9- 1"5<01 1	11 1s   A!!A*	c                      ddl m}  j                  |d         j                  | fd       t        D ]5  \  }} j                  t              5   |t        d      |       d d d        7 y # 1 sw Y   BxY w)Nr   )PyTime_FromSecondsObjectc                     | t         z  S r   r  r  s    r   r   z4TestCPyTime.test_FromSecondsObject.<locals>.<lambda>  s    	) r   c                 4    j                  | t        z        S r   )r  r  )r7   r!   s    r   r   z4TestCPyTime.test_FromSecondsObject.<locals>.<lambda>  s    t))"y.9 r   r+  )r  r  r  r  r  rp   r|   rH   )r!   r  r  r  s   `   r   test_FromSecondsObjectz"TestCPyTime.test_FromSecondsObject  s    6$)	+ 	!!$9	;
 * 	AKHa"":. A(ux@A A	AA As   A//A8	c                     ddl m d }| j                  fd|t               t        D ]4  \  }}| j                  t              5   t        d             d d d        6 y # 1 sw Y   AxY w)Nr   )PyTime_AsSecondsDoublec                 t    t        |       t        z  dk(  rt        | t        z        S t        |       t        z  S Nr   )absr  rH   r7   s    r   float_converterz9TestCPyTime.test_AsSecondsDouble.<locals>.float_converter  s1    2w"a'R9_--Ry9,,r   c                      |       S r   r   )r7   r  r  s     r   r   z2TestCPyTime.test_AsSecondsDouble.<locals>.<lambda>  s    0Fr0J r   r+  )r  r  r  	NS_TO_SECr  rp   r   rH   )r!   r  r  r  r  s       @r   test_AsSecondsDoublez TestCPyTime.test_AsSecondsDouble  sm    4	- 	 J / )	+
 * 	5KHa""9- 5&uU|45 5	55 5s   A##A,	c                 @     t        j                  |       fd}|S )Nc                 V    t        j                  |       z  }j                  |      S r   )r  r  r  )r  r   denomr!   s     r   	converterz7TestCPyTime.create_decimal_converter.<locals>.converter  s'    &.A%%a((r   )r  r  )r!   denominatorr  r  s   `  @r   create_decimal_converterz$TestCPyTime.create_decimal_converter  s    ,	) r   c                     ddl m} | j                  t              fd}t        j
                  dk(  rddl mm fd}n| j                  }| j                  ||t        |       y )Nr   )PyTime_AsTimevalc                 4     |       }t        |t              S r   )divmod	SEC_TO_US)r7   usus_converters     r   timeval_converterz5TestCPyTime.test_AsTimeval.<locals>.timeval_converter  s    b!B"i((r   win32LONG_MINLONG_MAXc                 $    | cxk  xr k  S c S r   r   )r  r  r  s    r   seconds_filterz2TestCPyTime.test_AsTimeval.<locals>.seconds_filter  s    4383333r   r  )r  r  r   r  r[   rY   r  r  r  r  r  )r!   r  r  r  r  r  r  s       @@@r   test_AsTimevalzTestCPyTime.test_AsTimeval  s]    .44X>	) <<7"44 "//N 0 1 )-; 	  	=r   PyTime_AsTimespecz need _testcapi.PyTime_AsTimespecc                 d    ddl m d }| j                  fd|t        | j                         y )Nr   )r  c                 "    t        | t              S r   )r  r  r  s    r   timespec_converterz7TestCPyTime.test_AsTimespec.<locals>.timespec_converter  s    "i((r   c                      |       S r   r   )r7   r  r  s     r   r   z-TestCPyTime.test_AsTimespec.<locals>.<lambda>  s    0A"0E r   r  )r  r  r  r  r  )r!   r  r  s     @r   test_AsTimespeczTestCPyTime.test_AsTimespec  s5     	0	) 	 E 2 )-1-?-? 	  	Ar   PyTime_AsTimeval_clampz%need _testcapi.PyTime_AsTimeval_clampc                    ddl m} t        j                  dk(  rddl m}m} |}|}n| j                  }| j                  }t        t        fD ]  } ||t        j                        }t        j                         5 }t        j                  |_        | j                  t        j                   |      t"        z        }	d d d        t%        	t&              \  }
}||
k  r|}
d}n	|
|k  r|}
d}| j)                  ||
|f        y # 1 sw Y   FxY w)Nr   )r  r	  r
  )r  r  r[   rY   r  r  r  r  _PyTime_MIN_PyTime_MAXr   r   r  r  r  r  r  r  r  r  r^   )r!   r  r  r  
tv_sec_max
tv_sec_minr   tsr  r  tv_sectv_usecs               r   test_AsTimeval_clampz TestCPyTime.test_AsTimeval_clamp  s     	5<<7"4!J!JJJ{+ 	4A'7+@+@AB%%' G7#*#8#8 ''(:X(EFG %R3OFGF"#*$#R&'!23	4G Gs   9AC??D	PyTime_AsTimespec_clampz&need _testcapi.PyTime_AsTimespec_clampc                    ddl m} t        t        fD ]l  } ||      }t	        |t
              \  }}| j                  |k  r| j                  }d}n|| j                  k  r| j                  }d}| j                  |||f       n y )Nr   )r   )	r  r   r  r  r  r  r  r  r^   )r!   r   r   r  r  tv_nsecs         r   test_AsTimespec_clampz!TestCPyTime.test_AsTimespec_clamp  s~     	6{+ 		4A(+B$Q	2OFG'$//)R&'!23		4r   c                 d    ddl m} | j                  || j                  t              t
               y )Nr   )PyTime_AsMilliseconds)r  r%  r  r   r  r  )r!   r%  s     r   test_AsMillisecondszTestCPyTime.test_AsMilliseconds  '    3 5 $ = =h G )	+r   c                 d    ddl m} | j                  || j                  t              t
               y )Nr   )PyTime_AsMicroseconds)r  r)  r  r   r  r  )r!   r)  s     r   test_AsMicrosecondszTestCPyTime.test_AsMicroseconds  r'  r   N)r   r   r   r  mathceilr  r  r  r  r  r   r  r9  r:  rB   r  r  r  r#  r&  r*  r   r   r   r  r  |  s     !tyy)y!891 A 5$=. X,?@;=	A=	A X,DE@B4B42 X,EFAC4C4++r   r  c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)TestOldPyTimezH
    Test the old C _PyTime_t API: _PyTime_ObjectToXXX() functions.
    l            c                     ddl m} | j                  |d | j                         | j	                  || j
                  | j                         y )Nr   )pytime_object_to_time_tc                     | S r   r   r  s    r   r   z5TestOldPyTime.test_object_to_time_t.<locals>.<lambda>(  s    T r   r  )r  r0  r  r  r  r  )r!   r0  s     r   test_object_to_time_tz#TestOldPyTime.test_object_to_time_t$  sS    5 7 1-1-?-? 	  	A 	!!"9"&"4"4/3/A/A 	" 	Cr   c                       fd}|S )Nc                     t        j                  |       \  }}t        |      }|z  }j                  |      }|dk  r|z  }|dz  }||fS |k\  r
|z  }|dz  }||fS )Nr   r   )r+  modfr4   r  )r  	floatpartintpartsec_to_unitr!   s      r   r  z1TestOldPyTime.create_converter.<locals>.converter0  s    !%4Iw'lG$I**95I1}[(	1 Y'' k)[(	1Y''r   r   )r!   r8  r  s   `` r   create_converterzTestOldPyTime.create_converter/  s    	( r   c                 D   ddl m} | j                  |d | j                         | j	                  || j                  t              | j                         t        D ]5  \  }}| j                  t              5   |t        d      |       d d d        7 y # 1 sw Y   BxY w)Nr   )pytime_object_to_timevalc                 
    | dfS r  r   r  s    r   r   z6TestOldPyTime.test_object_to_timeval.<locals>.<lambda>B  
    dAY r   r  r+  )r  r;  r  r  r  r9  r  r  rp   r|   rH   )r!   r;  r  r  s       r   test_object_to_timevalz$TestOldPyTime.test_object_to_timeval>  s    6 8 6-1-?-? 	  	A 	!!":"&"7"7	"B/3/A/A 	" 	C
 * 	AKHa"":. A(ux@A A	AA A   8BB	c                 D   ddl m} | j                  |d | j                         | j	                  || j                  t              | j                         t        D ]5  \  }}| j                  t              5   |t        d      |       d d d        7 y # 1 sw Y   BxY w)Nr   )pytime_object_to_timespecc                 
    | dfS r  r   r  s    r   r   z7TestOldPyTime.test_object_to_timespec.<locals>.<lambda>R  r=  r   r  r+  )r  rA  r  r  r  r9  r  r  rp   r|   rH   )r!   rA  r  r  s       r   test_object_to_timespecz%TestOldPyTime.test_object_to_timespecN  s    7 9 6-1-?-? 	  	A 	!!";"&"7"7	"B/3/A/A 	" 	C
 * 	BKHa"":. B)%,AB B	BB Br?  N)	r   r   r   r  r  r2  r9  r>  rC  r   r   r   r.  r.    s&    
 	CA Br   r.  darwinztest weak linking on macOSc                       e Zd Zd Zy)TestTimeWeaklinkingc                    dd l }dd l} |j                         }d}||vs||   st        j                  | d      t        d  |j                         d   j                  d      D              }g d}|dk\  r,|D ]&  }| j                  t        t        |      d| d       ( y |D ]&  }| j                  t        t        |      d| d	       ( y )
Nr   HAVE_CLOCK_GETTIMEz is not availablec              3   2   K   | ]  }t        |        y wr   )r4   ).0r   s     r   	<genexpr>z;TestTimeWeaklinking.test_clock_functions.<locals>.<genexpr>n  s     I1AIs   .)rK   r;   rE   rm   clock_settime_nsrf   )r   r   ztime.z is available)	sysconfigrY   get_config_varsr9  SkipTestr   mac_verrR  r-   rB   r   r+   )r!   rN  rY   config_varsvar_namerQ  clock_namesr0  s           r   test_clock_functionsz(TestTimeWeaklinking.test_clock_functionse  s    /i//1';&k(.C##xj0A$BCCI(8(8(8(:1(=(C(CC(HII0 h# Vd 3uTFBS5TUV $ S  t!4dV=6QRSr   N)r   r   r   rU  r   r   r   rF  rF  ^  s    Sr   rF  __main__)4testr   test.supportr   r  enumrC  r+  rY   r[   rN  r   rV   r9  r  ImportErrorr   get_config_varr   r   r   r  r  r  r  r  IntEnumr   r  r  r   r   r   r   r  TestCaser   r@  rO  r]  rs  r  r  r  r;  r  r  r.  r:  rF  r   mainr   r   r   <module>r_     s`    (      
     6 &Y%%l38q
Q^a''1,}q 4'			dll  
 '--.G112g556w''(TB8$$ TBn4"" 4 	? 	?. .b, ,@	(+x7H7H 		*K9J9J 	8("" 8(v d"$?@| | A|~]+/8#4#4 ]+@@BOX%6%6 @BD S\\X-/KLS(++ S MS< zHMMO ]#  Is   H H"!H"