
    7bh                     F   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mZ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SuppressCrashReport
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     8/opt/python-3.12.12/usr/lib/python3.12/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d Zd Zd Zed        Zd  Zd! Zd" Zd# Z  ejB                  e"jF                  d$      d%        Z$ ej                   e	e
d&      d'      d(        Z%d) Z&d* Z'd+ Z(d, Z)d- Z* ej                   e+jX                         d.   d/k7  d0      d1        Z-d2 Z.d3 Z/ ejB                  e"j`                  d4      d5        Z1d6 Z2 ej                   e	e
d      d7      d8        Z3d9 Z4d: Z5y;)<TimeTestCasec                 6    t        j                          | _        y N)timetselfs    r   setUpzTimeTestCase.setUp8   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_timeA   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_nsH   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"   r:   s   ` r   test_time_ns_typezTimeTestCase.test_time_ns_typeG   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<   rE   r4   floatr"   r    s     r   test_clock_realtimez TimeTestCase.test_clock_realtime`   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<   rL   assertLessEqual)r"   abs      r   test_clock_monotonicz!TimeTestCase.test_clock_monotonicf   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   rR   	threading	get_identr.   typer5   platformsystemsysmaxsize
bit_lengthassertEqualCLOCK_THREAD_CPUTIME_ID
startswithassertNotEqualr<   rN   )r"   clk_idt1t2s       r   test_pthread_getcpuclockidz'TimeTestCase.test_pthread_getcpuclockido   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   rg   rE   assertGreaterrN   )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)NrL   r   )	r   r<   rE   rn   PermissionErrorrC   assertRaisesOSErrorrL   rJ   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	localtimer5   mktimer!   s    r   test_conversionszTimeTestCase.test_conversions   sn    DFF+dnnTVV&<=	?T[[)?@ATVV	&r   c                    | j                  t        t        j                  g        | j                  t        t        j                  d       | j                  t        t        j                  t	        dd             | j                  t
        t        j                  d       | j                  t
        t        j                  d       | j                  t
        t        j                  d       y )NrO   r   g)rq   	TypeErrorr   sleepcomplex
ValueErrorr!   s    r   test_sleep_exceptionsz"TimeTestCase.test_sleep_exceptions   s    )TZZ4)TZZ5)TZZA?*djj"5*djj"5*djj$7r   c                     dD ]2  }| j                  |      5  t        j                  |       d d d        4 y # 1 sw Y   ?xY w)N)g       r   ri   g0.++g&.>gư>r	   g333333?)value)subTestr   r~   )r"   r   s     r   
test_sleepzTimeTestCase.test_sleep   s6    ?EE*

5! +* @**s	   9A	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                    t        j                  | j                        }dD ]  }d|z   }	 t        j                  ||         | j                  t        t         j                  d|       y # t        $ r | j                  d|z         Y gw xY w)NrO   ArP   BcdHIjmMpSUwWxXyYZ% %z conversion specifier: %r failed.s   %S)r   r   r    strftimer   failrq   r}   )r"   tt	directiveformats       r   test_strftimezTimeTestCase.test_strftime   s    [[ GI I%FGfb)G 	)T]]E2>  G		<vEFGs   A**B
	B
c           	         t        j                  | j                        }t               5  t	        dd      D ]B  }dt        |      z   }| j                  |      5  	 t        j                  ||       d d d        D 	 d d d        y # t        $ r%}| j                  t        |      d       Y d }~=d }~ww xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr	      r   )r   zInvalid format string)r   r   r    r   rangechrr   r   r   r_   str)r"   r   ir   excs        r   test_strftime_invalid_formatz)TimeTestCase.test_strftime_invalid_format   s    [[  "1c]A\\\0Lfb1 10 # #" & L((S3JKKL 10 #"sG   0CB7B2
C	B4	B/	*B7/B4	4B77C <CCc                    t        j                  | j                        }t        j                  d|      }t        j                  d|      }| j	                  t        j                  d|      d       | j	                  t        j                  d|      d| d|        | j	                  t        j                  d|      | d| d       | j	                  t        j                  d|      d       | j	                  t        j                  d|      d       | j	                  t        j                  d	|      d| d|        | j	                  t        j                  d
|      | d| d       | j	                  t        j                  d|      | d| d       | j	                  t        j                  d|      d       | j	                  t        j                  d|      | d|        | j	                  t        j                  d|      d       | j	                  t        j                  d|      | d|        | j	                  t        j                  d|      d       | j	                  t        j                  d|      d       | j	                  t        j                  d|      d| d|        | j	                  t        j                  d|      | d| d       y )Nz%c%Bu   🐍u   💻%c🐍%Bu   💻u   %c💻%B🐍u   u   u
   %c%Bu
   %c%Bu
   %c%Bu   u
   %c%Bu   u   %c%B a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          z %c %Bz%c %B )r   r   r    r   r_   )r"   r   s1s2s       r   test_strftime_specialz"TimeTestCase.test_strftime_special   so   [[ ]]4$]]4$ 	|R8,G'A2F*UWTXXbcebfHgh'A2F2$jY[X\\fHghx4h?x4h?'92>&FSURV@WX'92>2$fRDPV@WX'92>2$fRDPV@WX~r:NK'92>2$lSURV@WX'A2FHbc'ErJrdRjkmjnLoptR0$7y"5yAz26"RD2$Hz262$bBHr   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	   rU   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   r{   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|   )rq   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%#)r   r   r   r   )r"   r   r   zs       r   test_strftime_format_checkz'TimeTestCase.test_strftime_format_check   sW    
 *A3%BAa!eai0 C & *
 & 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-  sD    
 /++-]]#<nMF .6* .-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_strptime7  sy     [[ GI 9_F--3K1k62G  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)rq   r}   r   r   r!   s    r   test_strptime_bytesz TimeTestCase.test_strptime_bytesG  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                         y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nr   z%DT19z%Y %)	rq   r   r   r   assertIs	exception__suppress_context__assertIsNone__context__)r"   es     r   test_strptime_exception_contextz,TimeTestCase.test_strptime_exception_contextL  s    z*aMM"d# +akk66=z*aMM$' +!++112 +* +*s   B50C5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   rv   r   r    TIME_MAXYEARTIME_MINYEARr_   lenr   rq   OverflowErrorr}   )r"   bigyearascs      r   test_asctimezTimeTestCase.test_asctimeV  s    T[[() $\1G,,A9:CS#c'l"3!3!45s7|D 2 	-'!+-8	:-'!+-8	:)T\\15)T\\26)T\\9=r   c                 B    | j                  t        j                         y r   )r   r   rv   r!   s    r   test_asctime_bounding_checkz(TimeTestCase.test_asctime_bounding_checke  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   rx   r_   ru   r   r   r   )r"   r    yeartestvals       r   
test_ctimezTimeTestCase.test_ctimeh  s     KK9:A(BCKK78A(BC8DF++tQmf&<=   G!4RS!93t9E 9 .  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   rw   r&   r'   tm_isdstrb   r(   r   r%   assertInr.   r   )r"   r   xmas2002easternvictoriautcorg_TZs          r   
test_tzsetzTimeTestCase.test_tzsetz  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   ru   r   rw   rq   r   )r"   r   unreasonables      r   test_insane_timestampsz#TimeTestCase.test_insane_timestamps  s=    
 JJT^^;D -!!-|D !. <r   c                 V    t        j                          t        j                  d        y r   )r   ru   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   rx   assertAlmostEqual)r"   gt0gt1t0rd   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   rw   rx   r  )r"   lt0lt1r  rd   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)r{   r|   r   r	   )r   rw   r_   rx   r   rr   )r"   r    r   s      r   test_mktimezTimeTestCase.test_mktime  sR    A5^^A&   R!4   "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   rb   rx   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~   rk   r.   r+   r,   r/   )r"   ntimesrd   re   dtr0   s          r   test_monotoniczTimeTestCase.test_monotonic  s    +0:6:a!: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?rA   )	r   rA   r~   r6   r+   r.   r-   r,   r/   r"   startstopr0   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_timer0  r1  )rC   r   r\   rZ   ra   r   skipTestr;   r~   r6   r+   r.   r-   r,   r/   r2  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<   rE   rn   rp   r9  r(  )r"   rd   realtimeerrre   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   rw   r   r9  rr   rq   ru   r   rI   )r"   invalid_time_ttime_ts      r   test_localtime_failurez#TimeTestCase.test_localtime_failureK  s    /Fv& 0 !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?   rA   r   r;   )namer   ri   rj   xxx)rC   r   appendr   r+   r4   implementationr   rb   r-   bool
resolutionrI   rk   rN   r/   rq   r   )r"   clocksrE  r0   s       r   test_get_clock_infoz TimeTestCase.test_get_clock_info`  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)6r   r   r   r#   r)   r1   rG   unittest
skipUnlessrC   r   rK   rQ   rf   rm   rs   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   skipIfr   is_emscriptenr   r  r  r  r  r  r!  rZ   libc_verr&  r,  r.  is_wasir5  r:  r>  rC  rL  r   r   r   r   r   6   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&8"
I?	LI67?rB+ "1 "1C
3>, 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 ej                  ddd      d        Zy)
TestLocaleLC_ALLfr_FRr   c                 0    t        j                  dd       y )Nr   )	i  r   r	   r   r   r   r   r   r   r   r!   s    r   test_bug_3061zTestLocale.test_bug_3061{  s     	d23r   N)r   r   r   r   run_with_localerX  r   r   r   rT  rT  z  s%    WXw34 44r   rT  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   rv   splitr"   r   s     r   yearstrz_TestAsctimeYear.yearstr  s%    ||QD8O,224R88r   c                     | j                  | j                  d      d       | j                  | j                  d      d       y )N90  12345[	123456789)r_   r`  r!   s    r   test_large_yearz _TestAsctimeYear.test_large_year  s4    e,g6i0+>r   N)r   r   r   _formatr`  rf  r   r   r   r[  r[    s    G9?r   r[  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%04dr\  c                 6    t        j                  d|fdz         S )Nr   r   r   r_  s     r   r`  z_TestStrftimeYear.yearstr  s    }}TA4(?33r   zrequires strftime extensionc                 r    | j                   dk(  r| j                  d       y d }| j                  d|       y )Nrk  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   )rg  	test_year)r"   ro  s     r   test_4dyearz_TestStrftimeYear.test_4dyear  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   rM  rN  )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   )superrf  r"   	__class__s    r   rf  z!_TestStrftimeYear.test_large_year  s    w&((r   r   c                      t         |          S r   )rw  test_negativerx  s    r   r{  z_TestStrftimeYear.test_negative  s    w$&&r   )r   r   r   r   r   rg  r`  rM  rN  r   has_strftime_extensionsrq  ru  rf  r{  __classcell__)ry  s   @r   ri  ri    s     t}}T?+v54 X'')F00	. 5!) ") 1' ' 	r   ri  c                   $    e Zd ZdZddZd Zd Zy)_Test4dYearr\  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     '  )rg  r`  r_   )r"   fmtr   s      r   rp  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 )Nrb  +rc  rd  re  r	   )r_   r`  lstripr   r   rq   r   r!   s    r   rf  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_   r`  rg  r   r   rq   r   r   r!   s    r   r{  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   rg  rp  rf  r{  r   r   r   r  r    s    G1I
,r   r  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   rw   r.   rC   r  r_   r'   r%   r  r  r(   rx   )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  rJ   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   rM  rN  r   _STRUCT_TM_ITEMSrO  r   rP  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                   H    e Zd Z	 dZd Zd Zd Z	 d	dZ	 d
dZ	 d
dZ	d Z
y)CPyTimeTestCaseNc                 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 )
Nr	   gMbP?)r	   r         {   i  i  r   r  r  r  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_NSrG  extendr  INT_MININT_MAX)
r"   	use_floatunitsvaluesns_timestampsunitr   r8   pow2r  s
             r   _rounding_valuesz CPyTimeTestCase._rounding_values/  s;   1Hh	2LL
$ DT\$$rc2Y/    7Dt)y(B  AsRCE1b"Q$"  7 "))9+<+<=G  9!45 >&dU^$$rc2Y/ '
 "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  rI   filtersortedset)r  
unit_to_nsr8   r  unit_to_secr  value_filters       r   convert_valuesz7CPyTimeTestCase._check_rounding.<locals>.convert_valuese  s|    &{);;
4ABMb"z/MB&+5
5BC]r"
*]Cf5 #f+&& C Ds
   A&A+)r   roundingz!Error on timestamp conversion: %s)rs  )r  ROUNDING_MODESdecimallocalcontextr  	Exceptionr   r_   OVERFLOW_SECONDSr  rq   r   )r"   pytime_converterexpected_funcr  r  r  r  r  valid_valuestime_rnddecimal_rndcontextr   
debug_infor   r   r8   overflow_values_s      ```             r   _check_roundingzCPyTimeTestCase._check_roundingb  s@   	' --i8%m4%3!Hk%%'7#. )E+0k!JJT!1%!B#0#7 $$V%-%/1 * (' &4  ""Y.b	(7)KHa(',(C
&&}*&E$UH5 FE ) * % T		"E
"RST ('* FEs<   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_rounding  s    -}"K	?r   c                 .    | j                  ||d||       y )NTr  r  s        r   check_float_roundingz$CPyTimeTestCase.check_float_rounding  s    -}!;	>r   c                 d    t        j                  |      }|j                  d      }t        |      S )Nr	   )r  Decimalquantizer5   )r"   r   r   s      r   decimal_roundzCPyTimeTestCase.decimal_round  s&    OOAJJqM1vr   r   )r	   N)r   r   r   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	  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)TestCPyTimel           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    2DT2Jr   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  rq   r}   rI   )r"   r  r  r  r  s       @r   test_FromSecondszTestCPyTime.test_FromSeconds  sc    0	D 	 J =-9 	  	;
 *KHa""9-"5<0 .- *--s   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  )r8   r"   s    r   r   z4TestCPyTime.test_FromSecondsObject.<locals>.<lambda>  s    t))"y.9r   r@  )r  r  r  r  r  rq   r   rI   )r"   r  r  r  s   `   r   test_FromSecondsObjectz"TestCPyTime.test_FromSecondsObject  sk    6$)	+ 	!!$9	;
 *KHa"":.(ux@ /. *..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  rI   r8   s    r   float_converterz9TestCPyTime.test_AsSecondsDouble.<locals>.float_converter  s1    2w"a'R9_--Ry9,,r   c                      |       S r   r   )r8   r  r  s     r   r   z2TestCPyTime.test_AsSecondsDouble.<locals>.<lambda>  s    0Fr0Jr   r@  )r  r  r  	NS_TO_SECr  rq   r}   rI   )r"   r  r  r  r  s       @r   test_AsSecondsDoublez TestCPyTime.test_AsSecondsDouble  s]    4	- 	 J / )	+
 *KHa""9-&uU|4 .- *--s   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)r8   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\   rZ   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   )r8   r  r  s     r   r   z-TestCPyTime.test_AsTimespec.<locals>.<lambda>   s    0A"0Er   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\   rZ   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{+A'7+@+@AB%%'7#*#8#8 ''(:X(EF ( %R3OFGF"#*$#R&'!23 ,''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   sy     	6{+A(+B$Q	2OFG'$//)R&'!23 ,r   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_AsMilliseconds0  '    3 5 $ = =h G )	+r   c                 d    ddl m} | j                  || j                  t              t
               y )Nr   )PyTime_AsMicroseconds)r  r3  r  r
  r  r  )r"   r3  s     r   test_AsMicrosecondszTestCPyTime.test_AsMicroseconds7  r1  r   N)r   r   r   mathceilr  r  r  r  r  r
  r  rM  rN  rC   r  r  r)  r-  r0  r4  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y)TestOldPyTimel            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>K  s    Tr   r  )r  r:  r  r  r  r  )r"   r:  s     r   test_object_to_time_tz#TestOldPyTime.test_object_to_time_tG  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	   )r5  modfr5   r  )r  	floatpartintpartsec_to_unitr"   s      r   r  z1TestOldPyTime.create_converter.<locals>.converterS  s    !%4Iw'lG$I**95I1}[(	1 Y'' k)[(	1Y''r   r   )r"   rB  r  s   `` r   create_converterzTestOldPyTime.create_converterR  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>e      dAYr   r  r@  )r  rE  r  r  r  rC  r  r  rq   r   rI   )r"   rE  r  r  s       r   test_object_to_timevalz$TestOldPyTime.test_object_to_timevala  s    6 8 6-1-?-? 	  	A 	!!":"&"7"7	"B/3/A/A 	" 	C
 *KHa"":.(ux@ /. *..   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>u  rG  r   r  r@  )r  rK  r  r  r  rC  r  r  rq   r   rI   )r"   rK  r  r  s       r   test_object_to_timespecz%TestOldPyTime.test_object_to_timespecq  s    7 9 6-1-?-? 	  	A 	!!";"&"7"7	"B/3/A/A 	" 	C
 *KHa"":.)%,A /. *..rI  N)r   r   r   r  r<  rC  rH  rM  r   r   r   r8  r8  ?  s&    
 	CA Br   r8  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   )r5   ).0r   s     r   	<genexpr>z;TestTimeWeaklinking.test_clock_functions.<locals>.<genexpr>  s     I(H1A(Hs   .)rL   r<   rF   rn   clock_settime_nsrg   )r   r   ztime.z is available)	sysconfigrZ   get_config_varsrM  SkipTestr   mac_verr^  r.   rC   r   r,   )r"   rX  rZ   config_varsvar_namer[  clock_namesrE  s           r   test_clock_functionsz(TestTimeWeaklinking.test_clock_functions  s    /i//1';&k(.C##xj0A$BCCI(8(8(8(:1(=(C(CC(HII0 h#d 3uTFBS5TU $ $  t!4dV=6QR $r   N)r   r   r   r_  r   r   r   rP  rP    s    Sr   rP  __main__)4testr   test.supportr   r  enumr5  rZ   r\   rX  r   rW   rM  r  ImportErrorr   r   get_config_varr   r   r   r  r  r  r  r  IntEnumr   r"  r#  r   r   r   r   r  TestCaser   rT  r[  ri  r  r  r  r  rO  r  r  r8  rN  rP  r   mainr   r   r   <module>ri     s^    (     
     K &Y%%l38q
Q^a''1,}q 4'			dll  
 '--.G112g556w''(A	B8$$ A	BH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 e$  Is   H H H 