a 5êdg¡žã@sddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z z ddl Z Wne y~dZ Yn0ddlmZe d¡p˜dZdded>dZe ddZd Zd Zd Zd Zd ZGd d „d ejƒZejejfejejfejejfejejffZGdd„de j ƒZ!Gdd„de j ƒZ"Gdd„dƒZ#Gdd„dƒZ$Gdd„dƒZ%Gdd„de#e%e j ƒZ&Gdd„de$e%e j ƒZ'Gdd„de j ƒZ(e  )e dud¡Gdd „d ƒƒZ*Gd!d"„d"e*e j ƒZ+Gd#d$„d$e*e j ƒZ,e  -ejd%kd&¡Gd'd(„d(e j ƒƒZ.e/d)kre  0¡dS)*é)ÚsupportN)Úskip_if_buggy_ucrt_strfptimeÚ SIZEOF_INTééééli@BéèiÊš;c@seZdZdZdZdZdZdS)Ú_PyTimerrééN)Ú__name__Ú __module__Ú __qualname__Ú ROUND_FLOORÚ ROUND_CEILINGÚROUND_HALF_EVENÚROUND_UP©rrú*/usr/local/lib/python3.9/test/test_time.pyr sr c@sêeZdZdd„Zdd„Zdd„Zdd„Ze e e d ƒd ¡d d „ƒZ e e e d ƒd ¡e e e d ƒd¡dd„ƒƒZ e e e dƒd¡e e e d ƒd ¡dd„ƒƒZ e e e dƒd¡dd„ƒZe e e dƒd¡dd„ƒZdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zed+d,„ƒZd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Ze e e d7ƒd8¡d9d:„ƒZd;d<„Zd=d>„Z d?d@„Z!dAdB„Z"dCdD„Z#e e$ %¡dEdFkdG¡dHdI„ƒZ&dJdK„Z'dLdM„Z(dNdO„Z)dPdQ„Z*e e e dƒdR¡dSdT„ƒZ+dUdV„Z,dWdX„Z-dYS)ZÚ TimeTestCasecCst ¡|_dS©N)ÚtimeÚt©ÚselfrrrÚsetUp4szTimeTestCase.setUpcCstjtjtjtjdSr)rÚaltzoneÚdaylightÚtimezoneÚtznamerrrrÚtest_data_attributes7sz!TimeTestCase.test_data_attributescCs.t ¡t d¡}| |j¡| |j¡dS)Nr)rÚget_clock_infoÚ assertFalseÚ monotonicÚ assertTrueÚ adjustable)rÚinforrrÚ test_time=s  zTimeTestCase.test_timecs˜‡fdd„}|t ¡t ¡ƒ|t ¡t ¡ƒ|t ¡t ¡ƒ|t ¡t ¡ƒttdƒrp|t  ¡t  ¡ƒttdƒr”|t  tj ¡t  tj ¡ƒdS)Ncs2ˆ |t¡t|dƒ}ˆ ||d||f¡dS)NgeÍÍAl@¥F)ÚassertIsInstanceÚintÚ assertLess)ZsecÚnsZsec_nsrrrÚcheck_nsDs  z0TimeTestCase.test_time_ns_type..check_nsÚ 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)rr-rrrÚtest_time_ns_typeCs* ÿÿÿÿ ÿ   ÿzTimeTestCase.test_time_ns_typer/zneed time.clock_gettime()cCst tj¡}| |t¡dSr)rr/r8r)Úfloat©rrrrrÚtest_clock_realtime\s z TimeTestCase.test_clock_realtimeÚCLOCK_MONOTONICzneed time.CLOCK_MONOTONICcCs(t tj¡}t tj¡}| ||¡dSr)rr/r>ÚassertLessEqual)rÚaÚbrrrÚtest_clock_monotonicbs  z!TimeTestCase.test_clock_monotonicÚpthread_getcpuclockidz!need time.pthread_getcpuclockid()cCsŒt t ¡¡}| t|ƒtu¡t ¡dks<|  |tj ¡n,t j   ¡dkrZ|  |tj ¡n| |tj ¡t |¡}t |¡}| ||¡dS)NZAIXé )rrCÚ threadingÚ get_identr%Útyper*ÚplatformÚsystemÚassertNotEqualÚCLOCK_THREAD_CPUTIME_IDÚsysÚmaxsizeÚ bit_lengthÚ assertEqualr/r?)rZclk_idÚt1Út2rrrÚtest_pthread_getcpuclockidks   z'TimeTestCase.test_pthread_getcpuclockidÚ clock_getreszneed time.clock_getres()cCs(t tj¡}| |d¡| |d¡dS)Nççð?)rrSr8Ú assertGreaterr?)rÚresrrrÚtest_clock_getres}s  zTimeTestCase.test_clock_getresÚ clock_settimezneed time.clock_settime()cCsTt tj¡}zt tj|¡Wnty0Yn0ttdƒrP| ttjtjd¡dS)Nr>r) rr/r8rYÚPermissionErrorr6Ú assertRaisesÚOSErrorr>r<rrrÚtest_clock_settime„s    ÿzTimeTestCase.test_clock_settimecCsJ| t |j¡t t |j¡¡¡| tt t |j¡¡ƒt|jƒ¡dSr)rOrÚctimerÚasctimeÚ localtimer*ÚmktimerrrrÚtest_conversions‘s ÿÿzTimeTestCase.test_conversionscCs.| ttjd¡| ttjd¡t d¡dS)Néþÿÿÿéÿÿÿÿg333333ó?)r[Ú ValueErrorrÚsleeprrrrÚ test_sleep—szTimeTestCase.test_sleepc Csxt |j¡}dD]>}d|}zt ||¡WqtyL| d|¡Yq0q| ttjd|¡| ttjd|¡dS)N©r@ÚArAÚ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ÚgmtimerÚstrftimereÚfailr[Ú TypeError)rÚttÚ directiveÚformatrrrÚ test_strftimeœs  zTimeTestCase.test_strftimecCs|dƒ|dƒ| t|d¡| t|d¡|dƒ|dƒ| t|d¡| t|d¡|d ƒ| t|d ¡| t|d ¡|d ƒ| t|d ¡| t|d¡| t|d¡|dƒ|dƒ| t|d¡| |dƒ|dƒ¡| t|d¡|dƒ|dƒ| t|d¡| t|d¡dS)N) rrrrrrrrrd) ré rrrrrrrd) rrdrrrrrrrd) ré rrrrrrrd) rrrrrrrrrd) rrérrrrrrd) rrrdrrrrrrd) rrrDrrrrrrd) rrrérrrrrd) rrrrdrrrrrd) rrrérrrrrd) rrrré;rrrrd) rrrrrdrrrrd) rrrré<rrrrd) rrrrrrdrrrd) rrrrrr‹rrrd) rrrrré=rrrd) rrrrré>rrrd) rrrrrrrdrrd) rrrrrrérrd) rrrrrrrcrrd) rrrrrrrrrd) rrrrrrrinrd) rrrrrrrrdrd) rrrrrrriord)r[rerO)rÚfuncrrrÚ_bounds_checking«shÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿzTimeTestCase._bounds_checkingcCs| dd„¡dS)NcSs t d|¡S)NÚ©rr~)ÚtuprrrÚåóz;TimeTestCase.test_strftime_bounding_check..)rrrrrÚtest_strftime_bounding_checkäsz)TimeTestCase.test_strftime_bounding_checkc CsRdD]H}tddƒD]8}dD].}zt |||¡WqtyFYq0qqqdS)N)r‘riz%Az%AAré)r|zA%zAA%z%A%zA%A%z%#)Úrangerr~re)rrwryÚzrrrÚtest_strftime_format_checkçs z'TimeTestCase.test_strftime_format_checkcCsHd}t ¡t dd¡}Wdƒn1s.0Y| ||¡dS)Nz2000 01 01 00 00 00 1 001z%Y %m %d %H %M %S %w %j) éÐrrrrrrrr)rZcheck_warningsrr~rO)rÚexpectedÚresultrrrÚtest_default_values_for_zeroôs *z)TimeTestCase.test_default_values_for_zeroc Csdt |j¡}dD]N}d|}t ||¡}zt ||¡Wqty\| d||f¡Yq0qdS)Nrhr|z/conversion specifier %r failed with '%s' input.)rr}rr~Ústrptimerer)rrr‚rƒZ strf_outputrrrÚ test_strptimeþs   ÿzTimeTestCase.test_strptimecCs(| ttjdd¡| ttjdd¡dS)Ns2009ú%YZ2009s%Y)r[r€rrŸrrrrÚtest_strptime_bytessz TimeTestCase.test_strptime_bytescCs| t¡}t dd¡Wdƒn1s,0Y| |jjd¡| t¡}t dd¡Wdƒn1sr0Y| |jjd¡dS)Nr‘z%DTZ19z%Y %)r[rerrŸÚassertIsÚ exceptionÚ__suppress_context__)rÚerrrÚtest_strptime_exception_contexts  * *z,TimeTestCase.test_strptime_exception_contextcCs¾t t |j¡¡ttfD]:}t |ddfd¡}| |tt|ƒƒ d…t|ƒ¡q|  t tjtdfd¡|  t tjtdfd¡|  t tjd¡|  t tjd¡|  t tjd¡dS)NrŽr©rrrrrr©rrrrrrrrrr) rrrrrrrrrr) rr_r}rÚ TIME_MAXYEARÚ TIME_MINYEARrOÚlenÚstrr[Ú OverflowErrorr€)rZbigyearZascrrrÚ test_asctimes $  ÿ  ÿzTimeTestCase.test_asctimecCs| tj¡dSr)rrr_rrrrÚtest_asctime_bounding_check,sz(TimeTestCase.test_asctime_bounding_checkc Cs”t d¡}| t |¡d¡t d¡}| t |¡d¡dD]R}zt |ddfd¡}WnttfynYq<0| t |¡d d…t|ƒ¡qs^  ÿ     ü   zTimeTestCase.test_tzsetcCs2tjtjtjfD]}dD]}| t||¡qqdS)N)gZb××çtégZb××çti)rr^r}r`r[r®)rrZ unreasonablerrrÚtest_insane_timestamps‰sz#TimeTestCase.test_insane_timestampscCst ¡t d¡dSr)rr^rrrrÚtest_ctime_without_arg’sz#TimeTestCase.test_ctime_without_argcCs:t ¡}t d¡}t |¡}t |¡}|j||dddS©Ngš™™™™™É?)Zdelta)rr}raÚassertAlmostEqual)rZgt0Zgt1Út0rPrrrÚtest_gmtime_without_arg™s    z$TimeTestCase.test_gmtime_without_argcCs:t ¡}t d¡}t |¡}t |¡}|j||dddSrÂ)rr`rarÃ)rZlt0Zlt1rÄrPrrrÚtest_localtime_without_arg s    z'TimeTestCase.test_localtime_without_argc CsFdD]<}zt |¡}Wnttfy,Yq0| t |¡|¡qdS)N)rcrdrr)rr`r®r\rOra)rrrrrrÚ test_mktime§s zTimeTestCase.test_mktimerÚglibcz0disabled because of a bug in glibc. Issue #13309cCs^t |j¡}t d|¡}| |d¡zt d¡WntyDYn0| t d|¡|¡dS)Nú%ZZLMT) rdrrrrrrdrdrd)rr}rr~rJrar®rO)rrr rrrÚtest_mktime_error³s    zTimeTestCase.test_mktime_errorcCs¤dd„tdƒDƒ}|d}|dd…D]}| ||d|¡|}q&t ¡}t d¡t ¡}||}| ||¡| d|k¡t d ¡}| |j¡| |j ¡dS) NcSsg|] }t ¡‘qSr)rr$)Ú.0ÚnrrrÚ Är•z/TimeTestCase.test_monotonic..r³rrztimes=%sgà?gÍÌÌÌÌÌÜ?r$) r˜ÚassertGreaterEqualrr$rfrVr%r"r#r&)rÚtimesrPrQZdtr'rrrÚtest_monotonicÂs    zTimeTestCase.test_monotoniccCs t ¡dSr)rr2rrrrÚtest_perf_counterÙszTimeTestCase.test_perf_countercCsPt ¡}t d¡t ¡}| ||d¡t d¡}| |j¡| |j¡dS)Nçš™™™™™¹?ç{®Gáz”?r4) rr4rfr+r"r%r$r#r&©rÚstartÚstopr'rrrÚtest_process_timeÜs   zTimeTestCase.test_process_timecCs„ttdƒs4tj d¡r*| dtjf¡n | d¡t ¡}t d¡t ¡}|  ||d¡t  d¡}|  |j ¡|  |j¡dS)Nr.)ÚlinuxÚwinz,time.thread_time() should be available on %rzneed time.thread_timerÒrÓ)r6rrLrHÚ startswithrÚskipTestr.rfr+r"r%r$r#r&rÔrrrÚtest_thread_timeés  ÿ    zTimeTestCase.test_thread_timezneed time.clock_settimec Cs€t ¡}t tj¡}zt tj|d¡Wn.tyX}z| |¡WYd}~n d}~00t ¡}t tj|¡| ||¡dS)Ni)rr$r/r8rYrZrÛrÎ)rrPZrealtimeÚerrrQrrrÚtest_monotonic_settimeýs  z#TimeTestCase.test_monotonic_settimec Cs²d}dD]J}zt |¡Wqty6| d¡YqtyP|}YqTYq0q|durf| d¡| ttj|¡| ttj|¡| ttjtdƒ¡| ttjtdƒ¡dS)N)rdi@llzneed 64-bit time_tz&unable to find an invalid time_t valueÚnan) rr`r®rÛr\r[r^rer;)rZinvalid_time_tZtime_trrrÚtest_localtime_failure s   z#TimeTestCase.test_localtime_failurecCs’gd¢}|D]p}t |¡}| |jt¡| |jd¡| |jt¡| |jt ¡|  |jd¡|  |jd¡| |j t¡q |  ttjd¡dS)N)r$r2r4rr‘rTrUZxxx)rr"r)Úimplementationr­rJr$ÚboolZ resolutionr;rVr?r&r[re)rZclocksÚnamer'rrrÚtest_get_clock_info!s z TimeTestCase.test_get_clock_infoN).r rrrr!r(r:ÚunittestÚ skipUnlessr6rr=rBrRrXr]rbrgr„rr–ršržrr r¢r§r¯r°r·r¿rÀrÁrÅrÆrÇrHZlibc_verrÊrÐrÑr×rÜrÞràrärrrrr2s† ÿ  ÿ ÿ  ÿ ÿ  ÿ  ÿ 9     ÿ I  ÿ   ÿ rc@s$eZdZdd„Zdd„Zdd„ZdS)Ú TestLocalecCst tj¡|_dSr©ÚlocaleÚ setlocaleÚLC_ALLÚoldlocrrrrr5szTestLocale.setUpcCst tj|j¡dSrrèrrrrÚtearDown8szTestLocale.tearDowncCsBzt tjd¡}Wntjy0| d¡Yn0t dd¡dS)NÚfr_FRz$could not set locale.LC_ALL to fr_FRz%B) iÙr rrrrrrr)rérêrëÚErrorrÛrr~)rÚtmprrrÚ test_bug_3061;s zTestLocale.test_bug_3061N)r rrrrírñrrrrrç4srçc@s eZdZdZdd„Zdd„ZdS)Ú_TestAsctimeYearú%dcCst |fd¡ ¡dS)Nr©rd)rr_Úsplit©rryrrrÚyearstrGsz_TestAsctimeYear.yearstrcCs(| | d¡d¡| | d¡d¡dS)Né90Ú12345éÍ[Ú 123456789)rOrörrrrÚtest_large_yearJsz _TestAsctimeYear.test_large_yearN)r rrÚ_formatrörûrrrrròDsròcsleZdZe dd¡dkrdZndZdd„Zdd „Zd d „Zed ƒ‡fd d„ƒZ edƒ‡fdd„ƒZ [‡Z S)Ú_TestStrftimeYearr¡) rrrrrrrrrZ0001ú%04drócCst d|fd¡S)Nr¡r©r’rõrrrrö[sz_TestStrftimeYear.yearstrcCs0|jdkr| d¡ndd„}|jd|ddS)NrþcSst d|fd¡S)Nz%4Yr©r’)ryrrrÚyear4dcsz-_TestStrftimeYear.test_4dyear..year4d)r)rüÚ test_year)rrÿrrrÚ test_4dyear^s  z_TestStrftimeYear.test_4dyearcCsBd}zt d|fd¡Wnty0d}Yn0d}t ||¡S)Nz5strftime() is limited to [1; 9999] with Visual Studior¡r©FT)rr~reråræ)ryÚmsgÚcondrrrÚskip_if_not_supportedgs  z'_TestStrftimeYear.skip_if_not_supportedr´cs tƒ ¡Sr)Úsuperrûr©Ú __class__rrrûrsz!_TestStrftimeYear.test_large_yearrcs tƒ ¡Sr)rÚ test_negativerrrrrvsz_TestStrftimeYear.test_negative) r rrrr~rürörrrûrÚ __classcell__rrrrrýOs  rýc@s*eZdZdZd dd„Zdd„Zdd„ZdS) Ú _Test4dYearróNcCs|p|j}|p|j}| |dƒ|d¡| |dƒ|d¡| |dƒ|d¡| |dƒ|d¡| |dƒ|d¡| |dƒ|d¡dS)NréDéEécéçé')rürörO)rÚfmtrrrrr€s  z_Test4dYear.test_yearcCsd| | d¡ d¡d¡| | d¡ d¡d¡| | t¡ d¡ttƒ¡| t|jtd¡dS)Nr÷ú+rørùrúr)rOröÚlstriprªr­r[r®rrrrrûŠsz_Test4dYear.test_large_yearcCsÐ| | d¡|jd¡| | d¡d¡| | d¡d¡| | d¡tdƒ¡| | d¡tdƒ¡| | t¡ttƒ¡| t|jtd¡| t¡ | t d¡Wdƒn1sÂ0YdS) Nrdi.ûÿÿz-1234iÀþÿz-123456ië2¤øi.ýi¶r)rOrörür­r«r[r®rªrrrrrs z_Test4dYear.test_negative)NN)r rrrürrûrrrrrr }s r c@s eZdZdS)ÚTestAsctime4dyearN©r rrrrrrrsrc@s eZdZdS)ÚTestStrftime4dyearNrrrrrr src@s^eZdZee ejdkd¡dd„ƒƒZe ejdkd¡dd„ƒZ e ejdkd¡dd„ƒZ d S) Ú TestPytimeé zneeds tm_zone supportcCs0t ¡}| t|dƒ¡| t|dƒ¡|jdurF| ttdƒ ¡n| |jtjtjg|j ¡|j dur‚| ttdƒ ¡n| |j tj |j¡t  |¡}t  |dd…¡}| ||¡t |¡}t |¡}| ||¡| |j|j¡| |j |j ¡| ||¡| |j|j¡| |j |j ¡dS)NÚ tm_gmtoffÚtm_zonerr r±) rr`r%r6rrOrrr¾rr ra)rÚltrZt9Znew_ltZnew_lt9rrrÚtest_localtime_timezone¥s$     z"TestPytime.test_localtime_timezonecCs8t dd¡}| |jd¡t dd¡}| |jd¡dS)NZUTCrÉz+0500z%zr»)rrŸrOrrr<rrrÚtest_strptime_timezoneÉs  z!TestPytime.test_strptime_timezonecCs6ddl}d}| |¡}| |jd¡| |jd¡dS)NrsLctime struct_time p0 ((I2007 I8 I11 I1 I24 I49 I5 I223 I1 tp1 (dp2 tp3 Rp4 .)ÚpickleÚloadsr£rr)rrÚstrrrrÚtest_short_timesÐs  zTestPytime.test_short_timesN) r rrrrårærÚ_STRUCT_TM_ITEMSrrr rrrrr¤s " rzneed the _testcapi modulec@sReZdZdZdZdd„Zdd„Zdd„Zdd d „Zdd d „Z ddd„Z dd„Z dS)ÚCPyTimeTestCasez1 Base class to test the C _PyTime_t API. NcCs6ddlm}|dd}d| |_d|d|_dS)Nr)Ú SIZEOF_TIME_Trrr )Ú _testcapir#Ú time_t_minÚ time_t_max)rr#Úbitsrrrrãs   zCPyTimeTestCase.setUpcCs|j|ko|jkSSr)r%r&)rÚsecondsrrrÚ time_t_filterészCPyTimeTestCase.time_t_filterc Csúdtttg}|r| d¡d}dg}|D]&}|D]}||}| | |f¡q0q(dD]<}d|t}| | d| | d|d||df¡qTtjtjfD]} | | t¡qž|rÚdD]}d| }| | |f¡qºd tt}| | |f¡|S) z'Build timestamps used to test rounding.rgü©ñÒMbP?)rr ééé{iÈiÒr±r rriŸ†i?BióiôiõiÛiÜiÝiÄ i¬ i”r) rr*rµéérˆr‰éé!r )r r+rµr-g@l)ÚUS_TO_NSÚMS_TO_NSÚ SEC_TO_NSÚappendÚextendr$ÚINT_MINÚINT_MAX) rÚ use_floatZunitsÚvaluesÚ ns_timestampsZunitÚvaluer,Zpow2r(rrrÚ_rounding_valuesìs0   þ  z CPyTimeTestCase._rounding_valuesc s4‡‡‡fdd„}| ˆ¡}||ƒ}tD]\} } t ¡p} | | _|D]T} | | dœ} z|| | ƒ}|| ƒ}Wn ty†| d| ¡Yn0| ||| ¡qBWdƒq&1s¬0Yq&|jt }| |f}||ƒ}tD]V\} }|D]H} | | dœ} |j t | d|| | ƒWdƒqä1s"0YqäqØdS)NcsXˆr$ttˆƒ‰‡fdd„|Dƒ}ntˆ‰‡fdd„|Dƒ}ˆrLtˆ|ƒ}tt|ƒƒS)Ncsg|] }|ˆ‘qSrr©rËr,©Z unit_to_nsrrrÍ%r•zKCPyTimeTestCase._check_rounding..convert_values..csg|] }|ˆ‘qSrrr=r>rrrÍ(r•)r3r;ÚfilterÚsortedÚset)r:r9©Ú unit_to_secr8Ú value_filterr>rÚconvert_values"s  z7CPyTimeTestCase._check_rounding..convert_values)r;Úroundingz!Error on timestamp conversion: %s)r) r<ÚROUNDING_MODESÚdecimalZ localcontextrFÚ ExceptionrrOÚOVERFLOW_SECONDSr3r[r®)rÚpytime_converterÚ expected_funcr8rCrDrEr:Z valid_valuesÚtime_rndZ decimal_rndÚcontextr;Z debug_inforrœr,Zoverflow_valuesÚ_rrBrÚ_check_roundings2       þ&    zCPyTimeTestCase._check_roundingrcCs| ||d||¡dS)NF©rP©rrKrLrCrDrrrÚcheck_int_roundingLsÿz"CPyTimeTestCase.check_int_roundingcCs| ||d||¡dS)NTrQrRrrrÚcheck_float_roundingQsÿz$CPyTimeTestCase.check_float_roundingcCst |¡}| d¡}t|ƒS)Nr)rHÚDecimalZquantizer*)rrwrlrrrÚ decimal_roundVs  zCPyTimeTestCase.decimal_round)N)rN)rN) r rrÚ__doc__rJrr)r<rPrSrTrVrrrrr"Üs4ÿ .ÿ ÿ r"c@speZdZdZe de¡Zdd„Zdd„Z dd„Z d d „Z d d „Z e  eed ƒd¡dd„ƒZdd„Zdd„ZdS)Ú TestCPyTimez# Test the C _PyTime_t API. lc sxddlm‰dd„}|j‡fdd„dd„|dtD]>\}}| t¡ˆtd ƒƒWdƒq41sh0Yq4dS) Nr©ÚPyTime_FromSecondscSstj|kotjkSSr)r$r6r7©ÚsecsrrrÚ c_int_filtergsz2TestCPyTime.test_FromSeconds..c_int_filtercsˆ|ƒSrr)r\ÚrndrYrrr”jr•z.TestCPyTime.test_FromSeconds..cSs|tSr©r3r[rrrr”kr•©rDrß)r$rZrSrGr[r€r;)rr]rMrOrrYrÚtest_FromSecondscs þ  zTestCPyTime.test_FromSecondsc szddlm}ˆ |dd„¡ˆ |‡fdd„¡tD]@\}}ˆ t¡|tdƒ|ƒWdƒq41sj0Yq4dS)Nr)ÚPyTime_FromSecondsObjectcSs|tSrr_r[rrrr”xr•z4TestCPyTime.test_FromSecondsObject..csˆ |t¡Sr)rVr3©r,rrrr”|r•rß)r$rbrSrTrGr[rer;)rrbrMrOrrrÚtest_FromSecondsObjectss þ þ  z"TestCPyTime.test_FromSecondsObjectc srddlm‰dd„}| ‡fdd„|t¡tD]>\}}| t¡ˆtdƒƒWdƒq.1sb0Yq.dS)Nr©ÚPyTime_AsSecondsDoublecSs,t|ƒtdkrt|tƒSt|ƒtSdS©Nr)Úabsr3r;rcrrrÚfloat_converter†s z9TestCPyTime.test_AsSecondsDouble..float_convertercsˆ|ƒSrr©r,r^rerrr”Œr•z2TestCPyTime.test_AsSecondsDouble..rß)r$rfrSÚ NS_TO_SECrGr[r€r;)rrirMrOrrerÚtest_AsSecondsDoubleƒs þ  z TestCPyTime.test_AsSecondsDoublecst |¡‰‡‡fdd„}|S)Ncst |¡ˆ}ˆ |¡Sr)rHrUrV)r;rl©ZdenomrrrÚ converter˜sz7TestCPyTime.create_decimal_converter..converter)rHrU)rÚ denominatorrnrrmrÚcreate_decimal_converter•s z$TestCPyTime.create_decimal_convertercshddlm}| t¡‰‡fdd„}tjdkrLddlm‰m‰‡‡fdd„}n|j}|j ||t |d dS) Nr)ÚPyTime_AsTimevalcsˆ|ƒ}t|tƒSr)ÚdivmodÚ SEC_TO_US)r,Úus)Ú us_converterrrÚtimeval_converter£sz5TestCPyTime.test_AsTimeval..timeval_converterÚwin32)ÚLONG_MINÚLONG_MAXcsˆ|koˆkSSrrr[)ryrxrrÚseconds_filter«sz2TestCPyTime.test_AsTimeval..seconds_filterr`) r$rqrpr1rLrHrxryr)rSrk)rrqrvrzr)ryrxrurÚtest_AsTimevalžs    ýzTestCPyTime.test_AsTimevalÚPyTime_AsTimespecz need _testcapi.PyTime_AsTimespeccs4ddlm‰dd„}|j‡fdd„|t|jddS)Nr©r|cSs t|tƒSr)rrr3rcrrrÚtimespec_converterºsz7TestCPyTime.test_AsTimespec..timespec_convertercsˆ|ƒSrrrjr}rrr”½r•z-TestCPyTime.test_AsTimespec..r`)r$r|rSrkr))rr~rr}rÚtest_AsTimespecµs ýzTestCPyTime.test_AsTimespeccCs$ddlm}| || t¡t¡dS)Nr)ÚPyTime_AsMilliseconds)r$r€rSrpr2rk)rr€rrrÚtest_AsMillisecondsÂs  þzTestCPyTime.test_AsMillisecondscCs$ddlm}| || t¡t¡dS)Nr)ÚPyTime_AsMicroseconds)r$r‚rSrpr1rk)rr‚rrrÚtest_AsMicrosecondsÉs  þzTestCPyTime.test_AsMicrosecondsN)r rrrWÚmathÚceilr3rJrardrlrpr{rårær6r$rrrƒrrrrrX\s  ÿ rXc@s4eZdZdZdZdd„Zdd„Zdd„Zd d „Zd S) Ú TestOldPyTimezH Test the old C _PyTime_t API: _PyTime_ObjectToXXX() functions. lcCs:ddlm}|j|dd„|jd|j||j|jddS)Nr)Úpytime_object_to_time_tcSs|Srrr[rrrr”Ýr•z5TestOldPyTime.test_object_to_time_t..r`)r$r‡rSr)rTrV)rr‡rrrÚtest_object_to_time_tÙs þþz#TestOldPyTime.test_object_to_time_tcs‡‡fdd„}|S)Ncsbt |¡\}}t|ƒ}|ˆ9}ˆ |¡}|dkrB|ˆ7}|d8}n|ˆkrZ|ˆ8}|d7}||fS)Nrr)r„Úmodfr*rV)r\Z floatpartZintpart©Ú sec_to_unitrrrrnås  z1TestOldPyTime.create_converter..converterr)rr‹rnrrŠrÚcreate_converteräs zTestOldPyTime.create_converterc Cs„ddlm}|j|dd„|jd|j|| t¡|jdtD]@\}}| t ¡|t dƒ|ƒWdƒq>1st0Yq>dS)Nr)Úpytime_object_to_timevalcSs|dfSrgrr[rrrr”÷r•z6TestOldPyTime.test_object_to_timeval..r`rß) r$rrSr)rTrŒrsrGr[rer;)rrrMrOrrrÚtest_object_to_timevalós þþ  z$TestOldPyTime.test_object_to_timevalc Cs„ddlm}|j|dd„|jd|j|| t¡|jdtD]@\}}| t ¡|t dƒ|ƒWdƒq>1st0Yq>dS)Nr)Úpytime_object_to_timespeccSs|dfSrgrr[rrrr”r•z7TestOldPyTime.test_object_to_timespec..r`rß) r$rrSr)rTrŒr3rGr[rer;)rrrMrOrrrÚtest_object_to_timespecs þþ  z%TestOldPyTime.test_object_to_timespecN) r rrrWrJrˆrŒrŽrrrrrr†Ñs  r†Údarwinztest weak linking on macOSc@seZdZdd„ZdS)ÚTestTimeWeaklinkingcCsºddl}ddl}| ¡}d}||vs,||s#r•z;TestTimeWeaklinking.test_clock_functions..Ú.)r>r/r9rYÚclock_settime_nsrS)rµr…ztime.z is available) Ú sysconfigrHZget_config_varsråZSkipTestÚtupleÚmac_verrôr%r6rr#)rr–rHZ config_varsZvar_namer˜Z clock_namesrãrrrÚtest_clock_functionss z(TestTimeWeaklinking.test_clock_functionsN)r rrr™rrrrr’sr’Ú__main__)1ÚtestrrHÚenumrér„rHrLr–rrErår$Ú ImportErrorZ test.supportrZget_config_varrrªr«rsr1r2r3rkÚIntEnumr rrrrrGZTestCaserrçròrýr rrrZskipIfr"rXr†rær’r ÚmainrrrrÚsb         û  . 8uB