ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g@sddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z z ddl Z Wne y~dZ Yn0ddlmZedpdZdded>dZe ddZd Zd Zd Zd Zd ZGd d d ejZejejfejejfejejfejejffZGddde j Z!Gddde j Z"GdddZ#GdddZ$GdddZ%Gddde#e%e j Z&Gddde$e%e j Z'Gddde j Z(e )e dudGdd 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 0dS)*)supportN)skip_if_buggy_ucrt_strfptime SIZEOF_INTli@Biʚ;c@seZdZdZdZdZdZdS)_PyTimerrN)__name__ __module__ __qualname__ ROUND_FLOOR ROUND_CEILINGROUND_HALF_EVENROUND_UPrr-/opt/python39/lib/python3.9/test/test_time.pyr sr c@seZdZddZddZddZddZee e d d d d Z ee e d d ee e d dddZ ee e ddee e d d ddZ ee e ddddZee e ddddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zed+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zee e d7d8d9d:Zd;d<Zd=d>Z d?d@Z!dAdBZ"dCdDZ#ee$%dEdFkdGdHdIZ&dJdKZ'dLdMZ(dNdOZ)dPdQZ*ee e ddRdSdTZ+dUdVZ,dWdXZ-dYS)Z TimeTestCasecCst|_dSN)timetselfrrrsetUp4szTimeTestCase.setUpcCstjtjtjtjdSr)raltzonedaylighttimezonetznamerrrrtest_data_attributes7sz!TimeTestCase.test_data_attributescCs.ttd}||j||jdS)Nr)rget_clock_info assertFalse monotonic assertTrue adjustable)rinforrr test_time=s  zTimeTestCase.test_timecsfdd}|tt|tt|tt|ttttdrp|t t ttdr|t tj t tj dS)Ncs2|tt|d}||d||fdS)NgeAl@F)assertIsInstanceint assertLess)ZsecnsZsec_nsrrrcheck_nsDs  z0TimeTestCase.test_time_ns_type..check_ns thread_time clock_gettime)rtime_nsr$ monotonic_ns perf_counterperf_counter_ns process_timeprocess_time_nshasattrr.thread_time_nsr/CLOCK_REALTIMEclock_gettime_ns)rr-rrrtest_time_ns_typeCs*     zTimeTestCase.test_time_ns_typer/zneed time.clock_gettime()cCsttj}||tdSr)rr/r8r)floatrrrrrtest_clock_realtime\s z TimeTestCase.test_clock_realtimeCLOCK_MONOTONICzneed time.CLOCK_MONOTONICcCs(ttj}ttj}|||dSr)rr/r>assertLessEqual)rabrrrtest_clock_monotonicbs  z!TimeTestCase.test_clock_monotonicpthread_getcpuclockidz!need time.pthread_getcpuclockid()cCstt}|t|tutdkrJt j dkrJ| |tj n*t jdrf| |tj n||tj t|}t|}|||dS)NZAIX Zsunos)rrC threading get_identr%typer*platformsystemsysmaxsize bit_length assertEqualCLOCK_THREAD_CPUTIME_ID startswithassertNotEqualr/r?)rZclk_idt1t2rrrtest_pthread_getcpuclockidks   z'TimeTestCase.test_pthread_getcpuclockid clock_getreszneed time.clock_getres()cCs(ttj}||d||ddS)N?)rrTr8 assertGreaterr?)rresrrrtest_clock_getres~s  zTimeTestCase.test_clock_getres clock_settimezneed time.clock_settime()cCsTttj}zttj|Wnty0Yn0ttdrP|ttjtjddS)Nr>r) rr/r8rZPermissionErrorr6 assertRaisesOSErrorr>r<rrrtest_clock_settimes    zTimeTestCase.test_clock_settimecCsJ|t|jtt|j|ttt|jt|jdSr)rMrctimerasctime localtimer*mktimerrrrtest_conversionss zTimeTestCase.test_conversionscCs.|ttjd|ttjdtddS)Ng333333?)r\ ValueErrorrsleeprrrr test_sleepszTimeTestCase.test_sleepc Csxt|j}dD]>}d|}zt||WqtyL|d|Yq0q|ttjd||ttjd|dS)Nr@ArABcdHIjmMpSUwWxXyYZ%z %z conversion specifier: %r failed.s%Sz%S)rgmtimerstrftimerffailr\ TypeError)rtt directiveformatrrr test_strftimes  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|ddS)N) rrrrrrrrre) r rrrrrrre) rrerrrrrrre) r rrrrrrre) rrrrrrrrre) rrrrrrrre) rrrerrrrrre) rrrDrrrrrre) rrrrrrrre) rrrrerrrrre) rrrrrrrre) rrrr;rrrre) rrrrrerrrre) rrrr<rrrre) rrrrrrerrre) rrrrrrrrre) rrrrr=rrre) rrrrr>rrre) rrrrrrrerre) rrrrrrrre) rrrrrrrdrre) rrrrrrrrre) rrrrrrrinre) rrrrrrrrere) rrrrrrriore)r\rfrM)rfuncrrr_bounds_checkingsh zTimeTestCase._bounds_checkingcCs|dddS)NcSs td|S)Nrr)tuprrrz;TimeTestCase.test_strftime_bounding_check..)rrrrrtest_strftime_bounding_checksz)TimeTestCase.test_strftime_bounding_checkc CsRdD]H}tddD]8}dD].}zt|||WqtyFYq0qqqdS)N)rrjz%Az%AAr)r}zA%zAA%z%A%zA%A%z%#)rangerrrf)rrxrzzrrrtest_strftime_format_checks z'TimeTestCase.test_strftime_format_checkcCsHd}ttdd}Wdn1s.0Y|||dS)Nz2000 01 01 00 00 00 1 001z%Y %m %d %H %M %S %w %j) rrrrrrrr)rZcheck_warningsrrrM)rexpectedresultrrrtest_default_values_for_zeros *z)TimeTestCase.test_default_values_for_zeroc Csdt|j}dD]N}d|}t||}zt||Wqty\|d||fYq0qdS)Nrir}z/conversion specifier %r failed with '%s' input.)rr~rrstrptimerfr)rrrrZ strf_outputrrr test_strptimes   zTimeTestCase.test_strptimecCs(|ttjdd|ttjdddS)Ns2009%YZ2009s%Y)r\rrrrrrrtest_strptime_bytessz TimeTestCase.test_strptime_bytescCs|t}tddWdn1s,0Y||jjd|t}tddWdn1sr0Y||jjddS)Nrz%DTZ19z%Y %)r\rfrrassertIs exception__suppress_context__)rerrrtest_strptime_exception_contexts  * *z,TimeTestCase.test_strptime_exception_contextcCstt|jttfD]:}t|ddfd}||tt| dt|q| t tjtdfd| t tjtdfd| t tjd| t tjd| t tjddS)Nrrrrrrrrrrrrrrrrrr) rrrrrrrrrr) rr`r~r TIME_MAXYEAR TIME_MINYEARrMlenstrr\ OverflowErrorr)rZbigyearZascrrr test_asctimes $    zTimeTestCase.test_asctimecCs|tjdSr)rrr`rrrrtest_asctime_bounding_check-sz(TimeTestCase.test_asctime_bounding_checkc Cstd}|t|dtd}|t|ddD]R}zt|ddfd}WnttfynYq<0|t|d dt|qrz/TimeTestCase.test_monotonic..rrrztimes=%sg?g?r$) rassertGreaterEqualrr$rgrWr%r"r#r&)rtimesrQrRZdtr'rrrtest_monotonics    zTimeTestCase.test_monotoniccCs tdSr)rr2rrrrtest_perf_counterszTimeTestCase.test_perf_countercCsPt}tdt}|||dtd}||j||jdS)N皙?{Gz?r4) rr4rgr+r"r%r$r#r&rstartstopr'rrrtest_process_times   zTimeTestCase.test_process_timecCsttds4tjdr*|dtjfn |dt}tdt}| ||dt d}| |j | |jdS)Nr.)linuxwinz,time.thread_time() should be available on %rzneed time.thread_timerr)r6rrJrHrOrskipTestr.rgr+r"r%r$r#r&rrrrtest_thread_times      zTimeTestCase.test_thread_timezneed time.clock_settimec Cst}ttj}zttj|dWn.tyX}z||WYd}~n d}~00t}ttj||||dS)Ni)rr$r/r8rZr[rr)rrQZrealtimeerrrRrrrtest_monotonic_settimes  z#TimeTestCase.test_monotonic_settimec Csd}dD]J}zt|Wqty6|dYqtyP|}YqTYq0q|durf|d|ttj||ttj||ttjtd|ttjtddS)N)rei@llzneed 64-bit time_tz&unable to find an invalid time_t valuenan) rrarrr]r\r_rfr;)rZinvalid_time_tZtime_trrrtest_localtime_failure s   z#TimeTestCase.test_localtime_failurec Csgd}|D]}|j|d|t|}||jt||jd||jt||j t | |j d| |j d||j tWdq 1s0Yq |ttjddS)N)r$r2r4rr.)namerrUrVZxxx)ZsubTestrr"r)implementationrrPr$boolZ resolutionr;rWr?r&r\rf)rZclocksrr'rrrtest_get_clock_info"s .z TimeTestCase.test_get_clock_infoN).r rrrr!r(r:unittest skipUnlessr6rr=rBrSrYr^rcrhrrrrrrrrrrrrrrrrrrrHZlibc_verrrrrrrrrrrrrr2s            9      I      rc@s$eZdZddZddZddZdS) TestLocalecCsttj|_dSrlocale setlocaleLC_ALLoldlocrrrrr<szTestLocale.setUpcCsttj|jdSrrrrrrtearDown?szTestLocale.tearDowncCsBzttjd}Wntjy0|dYn0tdddS)Nfr_FRz$could not set locale.LC_ALL to fr_FRz%B) ir rrrrrrr)rrrErrorrrr)rtmprrr test_bug_3061Bs zTestLocale.test_bug_3061N)r rrrrrrrrrr;src@s eZdZdZddZddZdS)_TestAsctimeYear%dcCst|fddS)Nrre)rr`splitrrzrrryearstrNsz_TestAsctimeYear.yearstrcCs(||dd||dddS)N9012345[ 123456789)rMrrrrrtest_large_yearQsz _TestAsctimeYear.test_large_yearN)r rr_formatrrrrrrrKsrcsleZdZedddkrdZndZddZdd Zd d Zed fd dZ edfddZ [Z S)_TestStrftimeYearr) rrrrrrrrrZ0001%04drcCstd|fdS)Nrrrrrrrrbsz_TestStrftimeYear.yearstrcCs0|jdkr|dndd}|jd|ddS)NrcSstd|fdS)Nz%4Yrr)rzrrryear4djsz-_TestStrftimeYear.test_4dyear..year4d)r)r test_year)rrrrr test_4dyeares  z_TestStrftimeYear.test_4dyearcCsBd}ztd|fdWnty0d}Yn0d}t||S)Nz5strftime() is limited to [1; 9999] with Visual StudiorrFT)rrrfrr)rzmsgcondrrrskip_if_not_supportedns  z'_TestStrftimeYear.skip_if_not_supportedrcs tSr)superrr __class__rrrysz!_TestStrftimeYear.test_large_yearrcs tSr)r test_negativerrrrr}sz_TestStrftimeYear.test_negative) r rrrrrrrrrr __classcell__rrrrrVs  rc@s*eZdZdZd ddZddZddZdS) _Test4dYearrNcCs|p|j}|p|j}||d|d||d|d||d|d||d|d||d|d||d|ddS)NrDEc')rrrM)rfmtrrrrrs  z_Test4dYear.test_yearcCsd||ddd||ddd||tdtt|t|jtddS)Nr+rrrr)rMrlstriprrr\rrrrrrsz_Test4dYear.test_large_yearcCs||d|jd||dd||dd||dtd||dtd||ttt|t|jtd|t |t dWdn1s0YdS) Nrei.z-1234iz-123456i2i.ir)rMrrrrr\rrrrrrrs z_Test4dYear.test_negative)NN)r rrrrrrrrrrr s r c@s eZdZdS)TestAsctime4dyearNr rrrrrrrsrc@s eZdZdS)TestStrftime4dyearNrrrrrrsrc@s^eZdZeeejdkdddZeejdkdddZ eejdkdddZ d S) TestPytime zneeds tm_zone supportcCs0t}|t|d|t|d|jdurF|ttd n||jtjtjg|j |j dur|ttd n||j tj |jt |}t |dd}|||t|}t|}|||||j|j||j |j |||||j|j||j |j dS)N tm_gmtofftm_zonerr r) rrar%r6rrMrrrrr rb)rltrZt9Znew_ltZnew_lt9rrrtest_localtime_timezones$     z"TestPytime.test_localtime_timezonecCs8tdd}||jdtdd}||jddS)NZUTCrz+0500z%zr)rrrMrrr<rrrtest_strptime_timezones  z!TestPytime.test_strptime_timezonecCs6ddl}d}||}||jd||jddS)NrsLctime struct_time p0 ((I2007 I8 I11 I1 I24 I49 I5 I223 I1 tp1 (dp2 tp3 Rp4 .)pickleloadsrrr)rrstrrrrtest_short_timess  zTestPytime.test_short_timesN) r rrrrrr_STRUCT_TM_ITEMSrrr rrrrrs " rzneed the _testcapi modulec@sReZdZdZdZddZddZddZdd d Zdd d Z dddZ ddZ 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#bitsrrrrs   zCPyTimeTestCase.setUpcCs|j|ko|jkSSr)r%r&)rsecondsrrr time_t_filterszCPyTimeTestCase.time_t_filterc Csdtttg}|r|dd}dg}|D]&}|D]}||}|| |fq0q(dD]<}d|t}|| d| | d|d||dfqTtjtjfD]} || tq|rdD]}d| }|| |fqd tt}|| |f|S) z'Build timestamps used to test rounding.rgMbP?)rr {iirr rrii?Biiiiiii i ir) rr*rrr!r )r r+rr-g@l)US_TO_NSMS_TO_NS SEC_TO_NSappendextendr$INT_MININT_MAX) r use_floatZunitsvalues ns_timestampsZunitvaluer,Zpow2r(rrr_rounding_valuess0     z CPyTimeTestCase._rounding_valuesc s4fdd}|}||}tD]\} } tp} | | _|D]T} | | d} z|| | }|| }Wn ty|d| Yn0|||| qBWdq&1s0Yq&|jt }| |f}||}tD]V\} }|D]H} | | d} |j t | d|| | Wdq1s"0YqqdS)NcsXr$ttfdd|D}ntfdd|D}rLt|}tt|S)Ncsg|] }|qSrrrr,Z unit_to_nsrrr,rzKCPyTimeTestCase._check_rounding..convert_values..csg|] }|qSrrr=r>rrr/r)r3r;filtersortedset)r:r9 unit_to_secr8 value_filterr>rconvert_values)s  z7CPyTimeTestCase._check_rounding..convert_values)r;roundingz!Error on timestamp conversion: %s)r) r<ROUNDING_MODESdecimalZ localcontextrF ExceptionrrMOVERFLOW_SECONDSr3r\r)rpytime_converter expected_funcr8rCrDrEr:Z valid_valuestime_rndZ decimal_rndcontextr;Z debug_inforrr,Zoverflow_values_rrBr_check_rounding&s2       &    zCPyTimeTestCase._check_roundingrcCs|||d||dS)NFrPrrKrLrCrDrrrcheck_int_roundingSsz"CPyTimeTestCase.check_int_roundingcCs|||d||dS)NTrQrRrrrcheck_float_roundingXsz$CPyTimeTestCase.check_float_roundingcCst|}|d}t|S)Nr)rHDecimalZquantizer*)rrxrmrrr decimal_round]s  zCPyTimeTestCase.decimal_round)N)rN)rN) r rr__doc__rJrr)r<rPrSrTrVrrrrr"s4 .  r"c@speZdZdZedeZddZddZ ddZ d d Z d d Z e eed dddZddZddZdS) TestCPyTimez# Test the C _PyTime_t API. lc sxddlmdd}|jfdddd|dtD]>\}}|ttd Wdq41sh0Yq4dS) NrPyTime_FromSecondscSstj|kotjkSSr)r$r6r7secsrrr c_int_filternsz2TestCPyTime.test_FromSeconds..c_int_filtercs|Srr)r\rndrYrrrqrz.TestCPyTime.test_FromSeconds..cSs|tSrr3r[rrrrrrrDr)r$rZrSrGr\rr;)rr]rMrOrrYrtest_FromSecondsjs   zTestCPyTime.test_FromSecondsc szddlm}|dd|fddtD]@\}}t|td|Wdq41sj0Yq4dS)Nr)PyTime_FromSecondsObjectcSs|tSrr_r[rrrrrz4TestCPyTime.test_FromSecondsObject..cs|tSr)rVr3r,rrrrrr)r$rbrSrTrGr\rfr;)rrbrMrOrrrtest_FromSecondsObjectzs    z"TestCPyTime.test_FromSecondsObjectc srddlmdd}|fdd|ttD]>\}}|ttdWdq.1sb0Yq.dS)NrPyTime_AsSecondsDoublecSs,t|tdkrt|tSt|tSdSNr)absr3r;rcrrrfloat_converters z9TestCPyTime.test_AsSecondsDouble..float_convertercs|Srrr,r^rerrrrz2TestCPyTime.test_AsSecondsDouble..r)r$rfrS NS_TO_SECrGr\rr;)rrirMrOrrertest_AsSecondsDoubles   z TestCPyTime.test_AsSecondsDoublecst|fdd}|S)Ncst|}|Sr)rHrUrV)r;rmZdenomrrr convertersz7TestCPyTime.create_decimal_converter..converter)rHrU)r denominatorrnrrmrcreate_decimal_converters z$TestCPyTime.create_decimal_convertercshddlm}|tfdd}tjdkrLddlmmfdd}n|j}|j ||t |d dS) Nr)PyTime_AsTimevalcs|}t|tSr)divmod SEC_TO_US)r,us) us_converterrrtimeval_convertersz5TestCPyTime.test_AsTimeval..timeval_converterwin32)LONG_MINLONG_MAXcs|kokSSrrr[)ryrxrrseconds_filtersz2TestCPyTime.test_AsTimeval..seconds_filterr`) r$rqrpr1rJrHrxryr)rSrk)rrqrvrzr)ryrxrurtest_AsTimevals    zTestCPyTime.test_AsTimevalPyTime_AsTimespecz need _testcapi.PyTime_AsTimespeccs4ddlmdd}|jfdd|t|jddS)Nrr|cSs t|tSr)rrr3rcrrrtimespec_convertersz7TestCPyTime.test_AsTimespec..timespec_convertercs|Srrrjr}rrrrz-TestCPyTime.test_AsTimespec..r`)r$r|rSrkr))rr~rr}rtest_AsTimespecs zTestCPyTime.test_AsTimespeccCs$ddlm}|||ttdS)Nr)PyTime_AsMilliseconds)r$rrSrpr2rk)rrrrrtest_AsMillisecondss  zTestCPyTime.test_AsMillisecondscCs$ddlm}|||ttdS)Nr)PyTime_AsMicroseconds)r$rrSrpr1rk)rrrrrtest_AsMicrosecondss  zTestCPyTime.test_AsMicrosecondsN)r rrrWmathceilr3rJrardrlrpr{rrr6r$rrrrrrrrXcs   rXc@s4eZdZdZdZddZddZddZd 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[rrrrrz5TestOldPyTime.test_object_to_time_t..r`)r$rrSr)rTrV)rrrrrtest_object_to_time_ts z#TestOldPyTime.test_object_to_time_tcsfdd}|S)Ncsbt|\}}t|}|9}|}|dkrB|7}|d8}n|krZ|8}|d7}||fS)Nrr)rmodfr*rV)r\Z floatpartZintpart sec_to_unitrrrrns  z1TestOldPyTime.create_converter..converterr)rrrnrrrcreate_converters zTestOldPyTime.create_converterc Csddlm}|j|dd|jd|j||t|jdtD]@\}}|t |t d|Wdq>1st0Yq>dS)Nr)pytime_object_to_timevalcSs|dfSrgrr[rrrrrz6TestOldPyTime.test_object_to_timeval..r`r) r$rrSr)rTrrsrGr\rfr;)rrrMrOrrrtest_object_to_timevals   z$TestOldPyTime.test_object_to_timevalc Csddlm}|j|dd|jd|j||t|jdtD]@\}}|t |t d|Wdq>1st0Yq>dS)Nr)pytime_object_to_timespeccSs|dfSrgrr[rrrrrz7TestOldPyTime.test_object_to_timespec..r`r) r$rrSr)rTrr3rGr\rfr;)rrrMrOrrrtest_object_to_timespec s   z%TestOldPyTime.test_object_to_timespecN) r rrrWrJrrrrrrrrrs  rdarwinztest weak linking on macOSc@seZdZddZdS)TestTimeWeaklinkingcCsddl}ddl}|}d}||vs,||s*rz;TestTimeWeaklinking.test_clock_functions...)r>r/r9rZclock_settime_nsrT)rrztime.z is available) sysconfigrHZget_config_varsrZSkipTesttuplemac_verrr%r6rr#)rrrHZ config_varsZvar_namerZ clock_namesrrrrtest_clock_functions!s z(TestTimeWeaklinking.test_clock_functionsN)r rrrrrrrrsr__main__)1testrrHenumrrrHrJrrrErr$ ImportErrorZ test.supportrZget_config_varrrrrsr1r2r3rkIntEnumr rrrrrGZTestCaserrrrr rrrZskipIfr"rXrrrr mainrrrrsb            . 8uB