a zeO@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z ddlmZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddlZ ddlm!Z!m"Z"ddlm#Z#dd lm$Z$dd lm%Z%dd lm&Z&dd lm'Z'mZddl%Z(ddl)Z)ddl*Z*ej+ej,hZ-d de.ej/dDZ0dddigdfZ1e2dZ3e2dZ4Gddde j5Z6Gddde$Z7Gddde7Z8Gddde$Z9Gddde j5Z:Gd d!d!e j5Z;Gd"d#d#ZGd(d)d)e'Z?Gd*d+d+eZKe#dd?ZLe#dd@ZMeddAddBZNedddCdZOGdDdEdEe$ZPePdFdGdHdIZQePdJdKdLdMZRePdNdOdPdQZSePdRdSdTdUZTe7ddVdZUe7dWdXdZVGdYdZdZe j5ZWGd[d\d\e j5ZXGd]d^d^e$ZYGd_d`d`eYZZeZdFdadHdIZ[eZdJdbdLdMZ\eZdNdcdPdQZ]eZdRdddTdUZ^Gdedfdfe$Z_Gdgdhdhe j5Z`e#ddZadidjZbGdkdldle$ZcGdmdndne j5ZdGdodpdpe jeZfGdqdrdredZgGdsdtdte j5ZhdudvZiejdwkre kdS)xzTTest date/time type. See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases N)array) ltlegtgeeqnetruedivfloordivmod)support)is_resource_enabled ALWAYS_EQLARGESTSMALLEST)MINYEARMAXYEAR timedeltatzinfo)timetimezone)datedatetimecCsg|]}tt|fqS)pickle).0protorrG/opt/bitninja-python-dojo/embedded/lib/python3.9/test/datetimetester.py *sr! g@A@abcrinfnanc@s,eZdZddZddZddZddZd S) TestModulecCs$t}||jd||jddS)Nr"')datetime_module assertEqualrr)selfrrrr test_constants=szTestModule.test_constantscCs$tt}tjD]}|||qdS)z2Test that __all__ only points to valid attributes.N)dirr)__all__assertIn)r+Z all_attrsattrrrr test_allBs zTestModule.test_allcCsTd|jjvr|dt}tddt|D}tgd}|||tgdS)NZ_Purez"Only run for Fast C implementationcss&|]}|ds|ds|VqdS)__N) startswithendswith)rnamerrr Msz/TestModule.test_name_cleanup..) rrrrZ datetime_CAPIrrrrsys) __class____name__skipTestr)setr-r*)r+rnamesallowedrrr test_name_cleanupHs    zTestModule.test_name_cleanupcCsd|jjvr|dtj}||ddd||ddd||ddd ||d dd||ddd||d dd ||d d d ||dd d||d d d||dd d ||dd d ||dd d||dd d||dd d dS)N_Fastz'Only run for Pure Python implementationr#)r8r9r:r)Z_divide_and_roundr*)r+Zdarrrr test_divide_and_roundTs"  z TestModule.test_divide_and_roundN)r9 __module__ __qualname__r,r1r>rLrrrr r';s r'c@s6eZdZd ddZddZddZdd Zd d Zd S) FixedOffset*cCs>t|trt|d}t|tr(t|d}||_||_||_dSNminutes) isinstanceintr_FixedOffset__offset_FixedOffset__name_FixedOffset__dstoffsetr+offsetr5Z dstoffsetrrr __init__us    zFixedOffset.__init__cCs |jSN)rWlowerr+rrr __repr__}szFixedOffset.__repr__cCs|jSr\)rVr+dtrrr utcoffsetszFixedOffset.utcoffsetcCs|jSr\)rWr`rrr tznameszFixedOffset.tznamecCs|jSr\)rXr`rrr dstszFixedOffset.dstN)rP)r9rMrNr[r_rbrcrdrrrr rOss  rOc@seZdZdddZddZdS)PicklableFixedOffsetNcCst||||dSr\)rOr[rYrrr r[szPicklableFixedOffset.__init__cCs|jSr\)__dict__r^rrr __getstate__sz!PicklableFixedOffset.__getstate__)NNN)r9rMrNr[rgrrrr res rec@seZdZddZdS)_TZInfocCstSr\)random)r+r)rrr rbsz_TZInfo.utcoffsetNr9rMrNrbrrrr rhsrhc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) TestTZInfoc CsRt}tddddddd|}|t|Wdn1sD0YdS)NrE rBr)rhr assertRaises TypeErrorrb)r+Ztz1dt1rrr test_refcnt_crash_bug_22044s z&TestTZInfo.test_refcnt_crash_bug_22044cCs@t}tj}|t|j||t|j||t|j|dSr\)rrmaxrpNotImplementedErrorrcrbrd)r+Zuselessrarrr test_non_abstractnesss z TestTZInfo.test_non_abstractnesscCsrGdddt}|t|t|dd}||tt}|t|j||t|j ||t|j |dS)Nc@seZdZddZdS)z9TestTZInfo.test_subclass_must_override..NotEnoughcSs||_||_dSr\)Z_NotEnough__offsetZ_NotEnough__name)r+rZr5rrr r[szBTestTZInfo.test_subclass_must_override..NotEnough.__init__N)r9rMrNr[rrrr NotEnoughsrwrBZNotByALongShot) r assertTrue issubclassassertIsInstancernowrprurcrbrd)r+rwrrarrr test_subclass_must_overrides  z&TestTZInfo.test_subclass_must_overridecCsntdd}||ttdfD]F}|||tdd|||d|| |tddq"dS)NrBZThreerRrP) rOrzrrr{r*rbrrcrd)r+forarrr test_normals   zTestTZInfo.test_normalcCsTtt}|t|ttD]0\}}}|||}||}|t|tqdSr\)r__new__assertIstypepickle_choicesdumpsloads)r+origpickler unpicklerrgreenderivedrrr test_pickling_bases    zTestTZInfo.test_pickling_basec Cstdd}t|dfft|fft|dfffD]\}}||}|d}||t|t|||| d|||d|t D]`\}}}| ||} | | } || t|t| ||| d||| d|qq*dS)NrRcookieEST) rrerrcrzrrrr*rbrrr) r+rZZotypeargsrZonamerrrrrrrr test_pickling_subclasss$        z!TestTZInfo.test_pickling_subclasscs`tddGfdddt}|}tddddd|d }||}||||dS) Nr"hourscs0eZdZdZfddZfddZddZdS) z0TestTZInfo.test_issue23600..UKSummerTimez~Simple time zone which pretends to always be in summer time, since that's what shows the failure. csSr\rr`) DSTOFFSETrr rbsz:TestTZInfo.test_issue23600..UKSummerTime.utcoffsetcsSr\rr`)DSTDIFFrr rdsz4TestTZInfo.test_issue23600..UKSummerTime.dstcSsdS)N UKSummerTimerr`rrr rcsz7TestTZInfo.test_issue23600..UKSummerTime.tznameN)r9rMrN__doc__rbrdrcrrrrr rs  rrlrH r)rrrfromutcr*rb)r+rtzutrrr test_issue23600s  zTestTZInfo.test_issue23600N) r9rMrNrsrvr|r~rrrrrrr rks  rkc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#S)$ TestTimeZonecCs8ttddd|_ttdd d|_tddd|_dS)N#@rACDTrCrr")rrrrrDTr^rrr setUpszTestTimeZone.setUpcCs8|j|jtjtjtjfD]}|t||dqdSr\) rrrutcminrtr*strrcr+rrrr test_strs zTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|}||t |qdSr\) r)rrrrrrtreprr*eval)r+rrZtzreprrr test_reprs  zTestTimeZone.test_reprcCsNtddd}|tjdt|tjd| |tjd|dS)N;rrS)rr*rrrbZEROrrt)r+limitrrr test_class_memberss zTestTimeZone.test_class_memberscCs|tjttd|tjttdd|tjttddtddtddfD](}t|}||dtdddqZtddtdfD]"}|t t||t t| q|t tdWdn1s0Y|t tdWdn1s0Y|t tt dWdn1sL0Y|t tt dWdn1s0Y|t tt dd Wdn1s0YdS) NrUTCr" microsecondssecondsrRrPABCextra) rrrr assertIsNotr*assertNotEqualrbrp ValueErrorrqr)r+Z subminuterinvalidrrr test_constructor s2466zTestTimeZone.test_constructorcCs |tjt||jtdSr\)rzrrrrr^rrr test_inheritanceszTestTimeZone.test_inheritancecCs|j}dD]<}|t}||t|||| t| |q |t|jdWdn1st0Y|t|jdWdn1s0YdS)N)rg?rrC)rHOURr*rrbrprqr)r+dummyhrZrrr test_utcoffset!s6zTestTimeZone.test_utcoffsetcCs|tj|j|t|jdWdn1s@0Y|t|jdWdn1sv0YdS)NrrC) assertIsNonerrrdrrprqrr^rrr test_dst,s6zTestTimeZone.test_dstcCs|dtjd|dttd|dtdtd|dtdtd|dttddd|d tdtd d|d ttd d|d ttd d d|dttd d  d|dttd d dd|dttd d d d|t|j dWdn1sT0Y|t|j dWdn1s0YdS)Nrz UTC-05:00z UTC+09:30rz UTC-00:01rRZXYZz UTC+01:06:40rz UTC-01:06:40zUTC+01:06:40.000001r"zUTC-01:06:40.000001rrC) r*rrrcrrrrprqrr^rrr test_tzname2s&8zTestTimeZone.test_tznamecCs|ttj|jWdn1s.0Y|ttjdWdn1sd0Y|j|jt fD]J}|jj |d}||}| ||| || ||jj tjdq|dS)Nz not datetimer) rprrrrrrqrrEasternreplacer*rb)r+rZutctimelocalrrr test_fromutcHs , * zTestTimeZone.test_fromutccCsR|tttt|tttt|tdttdtd|t ttttkWdn1sv0Y|tttth|ttdk| ttdktt}||t k| |t k||t k| |t k||t k| |t k| |t k||t k| |t k||t kdS)Nrr) rrrrr*rprqr/rx assertFalserrrrrrr test_comparisonTs$:zTestTimeZone.test_comparisoncCstddd}tjtjtjfD]^}||||j|d||||j|d|| ||j|d qdS)Nr"r) rrrrtrr*rcrrbrdr+rrrrr test_aware_datetimeis    z TestTimeZone.test_aware_datetimecCs|j|jtjtjfD]2}tD](\}}}||||}|||qqtj }tD](\}}}||||}| ||qRdSr\) rrrrrtrrrr*rr)r+rrrrtz_copyrrr test_pickletszTestTimeZone.test_picklecCsP|j|jtjtjfD]}t|}|||qtj}t|}|||dSr\) rrrrrtcopyr*rrr+rrrrr test_copy~s   zTestTimeZone.test_copycCsP|j|jtjtjfD]}t|}|||qtj}t|}| ||dSr\) rrrrrtrdeepcopyr*rrrrrr test_deepcopys   zTestTimeZone.test_deepcopyc Cstdddtddddtdddddg}|dd|D|D]:}|jd |d t|Wdq@1sp0Yq@td d td d dg}|dd|D|D]f}|jd|d B|tt|Wdn1s0YWdq1s0YqdS)NrrrrrSr?BrrSrrcSsg|] }| qSrrrdeltarrr r!z7TestTimeZone.test_offset_boundaries..Zgood)Z test_typerrr")rrcSsg|] }| qSrrrrrr r!rZbad)rextendsubTestrrpr)r+Z time_deltasrZbad_time_deltasrrr test_offset_boundariess   (  z#TestTimeZone.test_offset_boundariescCs,|tjt|ttddtdS)Nr"r)rrrrrr^rrr test_comparison_with_tzinfosz(TestTimeZone.test_comparison_with_tzinfoN)r9rMrNrrrrrrrrrrrrrrrrrrrrr rs"    rc@seZdZddZddZdS)HarmlessMixedComparisoncCs|ddd}||dk||dk|d|k|d|k||ddg|g|g|ddgg||tk||tk||tk||tk||tk||tk||tk||tk||tk||tkdS)Nr"r)theclassrrxr/rrr)r+merrr test_harmless_mixed_comparisons"z6HarmlessMixedComparison.test_harmless_mixed_comparisoncs|ddd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfd d|tfd ddS) Nr"csdkSNrrrrrr rzGHarmlessMixedComparison.test_harmful_mixed_comparison..csdkSrrrrrr rrcsdkSrrrrrr rrcsdkSrrrrrr rrcsdkSrrrrrr rrcsdkSrrrrrr rrcsdkSrrrrrr rrcsdkSrrrrrr rr)rrprqr^rrr test_harmful_mixed_comparisonsz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r9rMrNrrrrrr rsrc@seZdZeZddZddZddZej ddZ d d Z d d Z d dZ ddZddZddZddZddZddZddZddZej dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Z d5d6Z!d7S)8 TestTimeDeltac Csv|j}t}|||dddddddd||d|dd||dd|dd||ddd|dd||dd|dd||dd|d d ||dd |d d ||dd |d d||dd|d d||dd|d d||dd|dd||dd|dd ||dd |dd ||dd |dd||dd|dd||dd|dddS)Nr)weeksdaysrrSr millisecondsrr"rrrrrErr<rRrg$I$I?gUUUUUU?g?gMbP?)r*r)r+rtdrrr rs(zTestTimeDelta.test_constructorcCsb|j}t}|d}|dd}|ddd}|||||ddd||||dd||||dd|| |d|| |d|| |dd|| |dd d |t|||t| |||dd |||ddd |||d |d||d d |||d d |||d |dd|d ||dd||d |dd||d |ddd|d ||ddd||d |ddd||d| ||d| |||d| | ||d|dd||dd|d||d|dd|d||dd||d|d||d |dd||d|ddd||d |dd||d|ddd||d|d||d|dd||d|d||d |dd||d|ddd||d |dd||d|ddd|dd}|d|dd||d|dd||dd|d||dd|d||d|dd||d |dd|||dd!d"|d#d||dd!d$|d%d|d|dd||d|dd||d|d&d||d |d&d||d|dd||d|dd||d|d'd||d|d'd|td(d D]$}|||d|t|dqtd(d D]$}|||d|t|dq||dd!d)|d%d||d*d d+|d*d d,|ddd||d*dd|d*dd|ddddS)-NrErrrrJiDQrGrQX>Qir#FiX'rDrr"i@i6i@?xrrBrFrCrArr翶~Ϛ?@g6+1?iS g@gr@g`""K?-?ɚ;r>B)r*r__rsub__absrangeround)r+rrabcusirrr test_computationss   ""  zTestTimeDelta.test_computationscstddD]\|tfdd|tfdd|tfdd|tfddq d|tfd d|tfd d|tfd d|tfd d|tfd ddS)NrPr"?csSr\rrr r rr rYrz.csSr\rrrrr rZrcsSr\rrrrr r[rcsSr\rrrrr r\rrcsSr\rrr zerorr rarcsSr\rrrrr rbrcsSr\rrrrr rcrcsdS)Nrrr rr rdrcsdS)Nrrrrrr rer)rrprqZeroDivisionErrorr^r)r r rr test_disallowed_computationsTsz*TestTimeDelta.test_disallowed_computationscCs,td}|t|jt|t|jtdS)NrP)rrpr__mul__NAN __truediv__)r+r rrr test_disallowed_specialgsz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||}||j|||j|||j|dS)N)r"rErr*rrr)r+rrr rrrr test_basic_attributesms   z#TestTimeDelta.test_basic_attributescCsptdd}||ddD]}t|d}|||qdD](}t|d}|||tddqBdS) Nmrg8~A)g ˟ $@g ˟ $rrg.Ar)rrDirr")rr* total_seconds)r+rr msrrr test_total_secondsts   z TestTimeDelta.test_total_secondscCs.tddddddd}tdd }|||dS) NdrG8rArgArrrrSrrr"r)rr*r+t1t2rrr test_carriess zTestTimeDelta.test_carriescCstddddddd}t}|t|t||tdd 7}|td d 7}||||t|t||d i}d ||<|t|d |||d dS)Nr#rGr$rAriz r%rEr1rr"rF)rr*hashlen)r+r'r(drrr test_hash_equalitys" z TestTimeDelta.test_hash_equalitycCsBd}t|}tD],\}}}|||}||}|||qdS)N)r"8)rrrrr*r+rrrrrrrrrr test_picklings   zTestTimeDelta.test_picklingcs$tdddtddd}||||k||k||k||k||kdD]}t|}||k||k||k||k||k||k||k||k||k||k||k||kqntD]|kd|kd|kd|kd|tfdd|tfd d|tfd d|tfd d|tfd d|tfd d|tfdd|tfddq(dS)NrFrBrH)rBrBrB)rFrHrH)rFrBrCFTcskSr\rrZbadargr'rr rrz,TestTimeDelta.test_compare..cskSr\rrr4rr rrcskSr\rrr4rr rrcskSr\rrr4rr rrcskSr\rrr4rr rrcskSr\rrr4rr rrcskSr\rrr4rr rrcskSr\rrr4rr rr)rr*rxr OTHERSTUFFrprqr+r(rrr4r test_comparesF   zTestTimeDelta.test_comparec Cst}|j}|t|dd|t|dd|t|dd|t|dd|t|d d d d d |t|dddd d|t|ddd ddd|t|ddd|t|ddd|t|ddd d ddddS)Nr"z1 day, 0:00:00rz-1 day, 0:00:00rFz2 days, 0:00:00rDz-2 days, 0:00:00r:rrz12:58:59rBrHz2:03:04irr/)rrrSrz-210 days, 23:12:34rz0:00:00.001000rz0:00:00.000003rrrrrSrrz999999999 days, 23:59:59.999999)rr*r)r+rrrrr rs$zTestTimeDelta.test_strcCsd|jj}|t|dd||t|ddd||t|dddd ||t|jd d d ||t|d ||t|jddd||t|jdddd||t|jdddd|dS)N datetime.r"z %s(days=1)r#rFz%s(days=10, seconds=2)r@z,%s(days=-10, seconds=2, microseconds=400000)rrz%s(seconds=60)z%s(0)r#rz%s(microseconds=100))rrz%s(days=1, microseconds=100))rrz%s(seconds=1, microseconds=100)rr9r*rr+r5rrr rs2 zTestTimeDelta.test_reprcCstddddddtddtddd tdd d d fD]Z}t|}||d |dd}t|}|||t|j|j|j}|||q2dS)Nrrrrr96err"rrrFrBrrrr: ) rrrxr3rr*rrr)r+rsZtd2rrr test_roundtrips    zTestTimeDelta.test_roundtripcCs~|tjt|tjt|tjt|tjtjk|tjtd|tjtddd|tjtddddS)Nr>rrg~.Arr")rzrrrt resolutionrxr*r^rrr test_resolution_infosz"TestTimeDelta.test_resolution_infocCstj}tj|}||8}|t|j||t|j| tj|}||7}|t|j||t|j| |tddtd}|t|jd|t|jd|t|j d|t|j d|t|j ddS) NcSstj Sr\)rrtrrrr rrz-TestTimeDelta.test_overflow..r"ʚ;geAg#B ;g|=gr{>) rrDrrp OverflowError__sub____add__rtrr)r+tinyrdayrrr test_overflows   zTestTimeDelta.test_overflowcCs.td}|t|jt|t|jt dSNr")rrprGrINF)r+rKrrr _test_overflow_special'sz$TestTimeDelta._test_overflow_specialcCst}|j}||dd|d||dd|d||dd|dd||dd|dd||dd|d d||d d|d d||d d|d d||dd|dd||dd|dd||dd|dd||dd|dd||dd|ddd}|d}||d|d|d||d|d|d||d|d|d|d d||d|d|d||d|d|d||d|d|d|d d||d dd |d!d||d d|jd |j|jdS)"Ng-C6:?rrg-C6:gMb@?rgMb@ga2U0*C?r"ga2U0*Crg~jtX?rFg~jtXrDgƠ>rgƠ?i|tArg?rg?r)rrgٿgɿrr)rr*rD)r+rrZ us_per_hourZ us_per_dayrrr test_microsecond_rounding-s0  z'TestTimeDelta.test_microsecond_roundingcCs&tdd}||j|j|jfddS)Nrr)rrrr)r+rrrr test_massive_normalizationNs z(TestTimeDelta.test_massive_normalizationcCsR|td|tdd|tddd|tdd|tddS)Nr"rr)rxrrr^rrr test_boolSs zTestTimeDelta.test_boolcsGfdddtdd}|t|||dddd}|t|||d ||}|t|t|}|t|||j|j||j|j||j|j|t |t |||ddS) Ncs$eZdZefddZddZdS)z0TestTimeDelta.test_subclass_timedelta..Tcs|j|j|jSr\r@)rTrr from_td]sz8TestTimeDelta.test_subclass_timedelta..T.from_tdcSs&|jd|jd|jd}t|S)Nrg @rS)rrrr)r+sumrrr as_hoursas z9TestTimeDelta.test_subclass_timedelta..T.as_hoursN)r9rMrN staticmethodrYr[rrWrr rX\srXr"rrrir?i) rrrr*r[rYrrrr)r+r'r(t3t4rrWr test_subclass_timedeltaZs    z%TestTimeDelta.test_subclass_timedeltac CsGdddt}|ddd}tdd}ddd |ddd fd d d |ddd fd dd |dddfg}|D]V\}}}||2|||}||||||Wdqj1s0YqjdS)Nc@s eZdZdS)z6TestTimeDelta.test_subclass_date..DateSubclassNr9rMrNrrrr DateSubclasszsrar"rCraddcSs||Sr\rr-rrrr rrz2TestTimeDelta.test_subclass_date..rJraddcSs||Sr\rrdrrr rrsubcSs||Sr\rrdrrr rrrH)rrrr*rz) r+rad1rtestsr5funcexpectedactrrr test_subclass_dateys     z TestTimeDelta.test_subclass_datec CsGdddt}|ddddd}tddd}d d d |ddd d fddd |ddd d fddd |ddddfg}|D]V\}}}||2|||}||||||Wdqv1s0YqvdS)Nc@s eZdZdS)z>TestTimeDelta.test_subclass_datetime..DateTimeSubclassNr`rrrr DateTimeSubclasssrmrbr"rCr)rrSrccSs||Sr\rrdrrr rrz6TestTimeDelta.test_subclass_datetime..rJ recSs||Sr\rrdrrr rrrfcSs||Sr\rrdrrr rrrH)rrrr*rz) r+rmrgrrhr5rirjrkrrr test_subclass_datetimes    z$TestTimeDelta.test_subclass_datetimecCstdddd}tdd}|||d|||dtdd d }tdd }|||d |||dtd }|tt|||tt||dS)Nr"rrrgó@irFrnrSrrRg@r)rr*rprr r )r+rsecondminutezerotdrrr test_divisions   zTestTimeDelta.test_divisioncCstddd}tdd}||}||tddtddd}||}||tddtd}|tt|||tt|d dS NrFrnrrr"rRrrDrr#)rr*rprr rq)r+rrtrrurrr test_remainders   zTestTimeDelta.test_remaindercCstddd}tdd}t||\}}||d||tddtddd}t||\}}||d||tddtd}|tt|||tt|d dSrw)rdivmodr*rprrq)r+rrtqrxrurrr test_divmods     zTestTimeDelta.test_divmodc Csdd}|t"t|dd>Wdn1s:0Y|t"t|dd>Wdn1sv0YdD]t}|tt||Wdn1s0Y|tt||Wdq1s0YqdS)NcsGfdddt}|S)NcseZdZfddZdS)zFTestTimeDelta.test_issue31293..get_bad_float..BadFloatcsSr\rr^ bad_ratiorr as_integer_ratioszWTestTimeDelta.test_issue31293..get_bad_float..BadFloat.as_integer_ratioN)r9rMrNrrr}rr BadFloatsr)float)r~rrr}r get_bad_floatsz4TestTimeDelta.test_issue31293..get_bad_floatr"r)r)rPr"rFrB)rprqrr)r+rr~rrr test_issue31293s 0 0 , zTestTimeDelta.test_issue31293c spGfdddt}GfdddGfdddtdD]*|jdzt|d d WntyxYn0zt|d d WntyYn0zt|d d WnttfyYn0ztd |d WnttfyYn0z|d td WntyYn0ztd |d WntyHYn0Wdq>1s`0Yq>dS) Ncs<eZdZfddZfddZfddZfddZd S) z-TestTimeDelta.test_issue31752..BadIntcsSr\rr+otherProdrr rsz5TestTimeDelta.test_issue31752..BadInt.__mul__csSr\rrrrr __rmul__sz6TestTimeDelta.test_issue31752..BadInt.__rmul__csSr\rrrrr __floordiv__sz:TestTimeDelta.test_issue31752..BadInt.__floordiv__csSr\rrrrr __rfloordiv__sz;TestTimeDelta.test_issue31752..BadInt.__rfloordiv__N)r9rMrNrrrrrrrr BadInts   rcs$eZdZfddZfddZdS)z+TestTimeDelta.test_issue31752..ProdcsSr\rrSumrr rIsz3TestTimeDelta.test_issue31752..Prod.__add__csSr\rrrrr __radd__sz4TestTimeDelta.test_issue31752..Prod.__radd__N)r9rMrNrIrrrrr rs rcseZdZfddZdS)z*TestTimeDelta.test_issue31752..SumcsSr\rr divmodresultrr __divmod__sz5TestTimeDelta.test_issue31752..Sum.__divmod__N)r9rMrNrrrrr rsr)Nr)rr"rF)rrrr"rrr)rUrrrqr)r+rr)rrrr test_issue31752s:    zTestTimeDelta.test_issue31752N)"r9rMrNrrrrrr Zrequires_IEEE_754rrr"r)r.r2r7rrrCrErLrOrTrUrVr_rlrprvryr|rrrrrr rs<S   (  !rc@seZdZddZdS) TestDateOnlycCstddd}tdddddd}t|j}||td||}||||||}||||||}||||| }t|j}||td||}||||||}||||||}||||dS) Nr"rFrBrHrCr9rD)rrrr*)r+rarrdt2rrr test_delta_non_days_ignored!s*    z(TestDateOnly.test_delta_non_days_ignoredN)r9rMrNrrrrr rsrc@seZdZdZdS) SubclassDater"Nr9rMrNZsub_varrrrr r>src@s`eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Z d9d:Z!d;d<Z"d=d>Z#d?d@Z$dAdBZ%dCdDZ&dEdFZ'dGdHZ(dIdJZ)dKdLZ*dMdNZ+dOdPZ,dQdRZ-dSdTZ.dUS)VTestDatecCs<|ddd}||jd||jd||jddS)NrBr")rr*yearmonthrKr`rrr rGszTestDate.test_basic_attributescCsz|ddd|jfD]\}t|}||d|dd}t|}|||||j|j|j }|||qdS)Nr"rFrBr:rA) rtodayrrxr3rr*rrrKr+rarBrrrr rCMs   zTestDate.test_roundtripc CsdD]\}}}}||||}||||j|}|||t|dr||jd||jd||jd||jdqt t t ddD]|}||dd}|}|j|}||||dkr|j|d}||ddd}||||||dqgd}d D]\}} ||dd}t t dd |D]r\} } | d krn| rn| d7} t d| dD]@} ||| | }||||||j||d7}q|qNq$dS) N))r"r"r"r")r"rrr)rFr"r"n)irnri hourrr"rErr) rrrnrrnrrrnrrnr))rT)rFrorF) rr* toordinal fromordinalhasattrrrtrs microsecondrrrzip) r+ymr-nZfromordrd2ZdimZisleaprZmaxdayrKrrr test_ordinal_conversions[s>       z!TestDate.test_ordinal_conversionscs|jj|jjj}|||t fddt dd}||d|||jd|jj |jjj}|||t fddt dd}||d|||jddS)NcsdSrMrrr Zaordrr rrz0TestDate.test_extreme_ordinals..r"rcsdSrMrrrrr rr) rrrrrKrrr*rprrrt)r+r rrr test_extreme_ordinalss$    zTestDate.test_extreme_ordinalscCs6|tdd|tdd|t|jtddd|t|jtddd|ddd|ddd|t|jddd|t|jddd|ddd|ddd|d dd|t|jddd |t|jd dd|t|jd dd|t|jd dd|t|jddd|t|jddddS)Nr"rrrrorF` rn4lro)rrrrprr^rrr test_bad_constructor_argumentss"z'TestDate.test_bad_constructor_argumentscCs|ddd}|ddd}||||t|t||di}d||<|t|d|||d|||d|ddd}|ddd}||||t|t||di}d||<|t|d|||d|||ddS)Nrrrr"rFrrr*r+r,r+r-eZdicrrr r.s$  zTestDate.test_hash_equalityc s2|ddd|ddd}|ddd}|}||jdttddd||jd ||jd tdtd }|dd d||dd d ||dd d ||dd d| |dd d|||dd d |||ddd |d||dd d|d||dd d ||||||| | ||| | |||||||dD]^|t fdd|t fdd|t fdd|t fddq$|t fdd|t fdd|t fdd|t fdd|t fdd|t fdd|t fdd|t fdddS)Nrr"rrrFArHrrErBrAr4rcsSr\rrrrr rrz,TestDate.test_computations..csSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrr rKrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rr rr*rr,rrrrrprq)r+r r diffweekrr rKr r rsPzTestDate.test_computationscCs|jj}|tdtdfD]p}|jj|}||8}|t|j||t|j| |jj|}||7}|t|j||t|j| qdS)Nr"rF) rrDrrrprGrHrIrt)r+rJrrarrr rLs  zTestDate.test_overflowc Cshddl}d\}}}||||ddddddf }|j|}||j|||j|||j|dS)Nr)irArqr)rmktimer fromtimestampr*rrrK)r+rrrrKtsr-rrr test_fromtimestamps  zTestDate.test_fromtimestampcCs dD]}|t|jj|qdSN)gZbtgZbtirprGrrr+Zinsanerrr test_insane_fromtimestamps z"TestDate.test_insane_fromtimestampcCslddl}tdD]8}|j}|}|j|}||kr>qJ|dq||krh|j||tddddS)NrrBg?rr)r)rrrrrsleepZassertAlmostEqualr)r+rrrrZ todayagainrrr test_today&s    zTestDate.test_todayc CstdD]}||ddd||||ddd||d||ddd||||ddd||dqdS)NrErrBrHr"rrF)rr*rweekdayZ isoweekday)r+r rrr test_weekdayCs  "zTestDate.test_weekdayc Csgd}g}|D]T\}}|j|}tdD]8}|t|}|dd|d|f}|||fq*q|D]\} } |j| dd || | Wdn1s0Y|j| dd0| } || j| j| j f| Wdqj1s0YqjdS)N)))rr)rrr"))rrrrr"r"))rr"rC)rrFr"))rrm)rrr"))rrr)r5r"))rr"rH)rr"r"rErrFtuple)r-Z comparisonfields) rrrappendrr* isocalendarrrr) r+Z week_mondays test_casesZcal_dateZiso_dateZ base_dater Znew_dateZnew_isor-Zexp_isorrrr test_isocalendarLs      .zTestDate.test_isocalendarcCsF|ddd}t|}t|}|t|t||ddS)zTest that the result of datetime.isocalendar() can be pickled. The result of a round trip should be a plain tuple. r")rr"rFN)rrrrrr*rr)r+r-presrrr test_isocalendar_picklingjs  z"TestDate.test_isocalendar_picklingcCsd}ttt|}g}tdD]f}|d|dd}|d|dd}||dd|dd|ddkr"||q"|||dS) NaK 4 32 60 88 9 37 65 93 15 43 71 99 20 48 76 26 54 82 105 133 161 189 111 139 167 195 116 144 172 122 150 178 128 156 184 201 229 257 285 207 235 263 291 212 240 268 296 218 246 274 224 252 280 303 331 359 387 308 336 364 392 314 342 370 398 320 348 376 325 353 381 irrri@r"r) sortedmaprUsplitrrr*rr)r+ZISO_LONG_YEARS_TABLEZiso_long_yearsLr r-rgrrr test_iso_long_yearsus $ zTestDate.test_iso_long_yearscCs"|ddd}||ddS)NrFrBz 0002-03-02)rr* isoformatr+rrrr test_isoformatszTestDate.test_isoformatcCs"|ddd}||ddS)NrrBrFzSat Mar 2 00:00:00 2002)rr*ctimerrrr test_ctimeszTestDate.test_ctimec Cs|ddd}||dd||dd||dd|t|j|t|jdd |t|jd ||d d ||d ddD]&}z||WqtyYq0qz|dWntyYn0|ddS)NrBrFm:%m d:%d y:%yzm:03 d:02 y:05rAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoneZtworP%mZ03 '%z' '%Z''' '')z%e%z%#u%y%mz%f)rr*strftimerprqrUnicodeEncodeError)r+rfrrr test_strftimes&   zTestDate.test_strftimecCsz|ddd}ztdWnty8|dYn0||dtd|||dtd|dS)NrrBrFrz'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r_timerrr:r* timetuplerrrr test_strftime_trailing_percents z'TestDate.test_strftime_trailing_percentcCs|ddd}||dt||td|dWdn1sP0YGddd|j}|ddd}||ddGd d d |j}|ddd}||dt|d D]F}|||||||||||||d qdS) NrAr#rmust be str, not int{c@seZdZddZdS)zTestDate.test_format..AcSsdSNArr^rrr __str__sz'TestDate.test_format..A.__str__Nr9rMrNrrrrr rsrc@seZdZddZdS)zTestDate.test_format..BcSsdSNBrr+ format_specrrr rsz(TestDate.test_format..B.strftimeNr9rMrNrrrrr rsrrzm:%m d:%d y:%y H:%H M:%M S:%S%z %Zrr* __format__rassertRaisesRegexrqrr+rarr rr fmtrrr test_formats(  zTestDate.test_formatcCs`t|jtrt}nt}||jj|||jj|||jjt| |jj|jjkdSr\) ryrrrrzrrtrDrrx)r+Zexpected_classrrr rEs zTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|}|||||jj||jj||jj||jjdS)Nr@Br)rrtrrrrrr*)r+bigrZ justasbigrrr test_extreme_timedeltas   zTestDate.test_extreme_timedeltac CsrtdD]b}|ddd|}|}||ddd|ddd|d|df |ddd|}|}||ddd|dddd|dd|df |ddd|}|}||ddd|dddd|dd |df ||jd||jd||jd|||jd||jd||j d||j d|d||j d |||j dqdS) NrErr"rFrrrorB=) rrrr*tm_yeartm_montm_mdaytm_hourtm_mintm_sectm_wdaytm_ydaytm_isdst)r+r r-rrrr test_timetuple s&&..zTestDate.test_timetuplecCsZd}|j|}tD],\}}}|||}||}|||q|||ddS)NrJrErrFrrrrr* __reduce__ __reduce_ex__r1rrr r2%s   zTestDate.test_picklingcCsFgd}d}|j|}|D]&}tD]}||dd}|||q"qdS)N)s'cdatetime date (S'\x07\xdf\x0b\x1b' tR.scdatetime date (U tR.scdatetime date U R.)rnlatin1encodingr pickle_loadsr*r+rhrrjdatarrrrr test_compat_unpickle.s  zTestDate.test_compat_unpicklecs|ddd|ddd}||||k||k||k||k||kdD]}|j|}||k||k||k||k||k||k||k||k||k||k||k||kqrtD]|kd|kd|kd|kd|tfdd|tfd d|tfd d|tfd d|tfd d|tfd d|tfddq.dS)NrFrBrHr3FTcskSr\rrr4rr rZrz'TestDate.test_compare..cskSr\rrr4rr r[rcskSr\rrr4rr r\rcskSr\rrr4rr r]rcskSr\rrr4rr r^rcskSr\rrr4rr r_rcskSr\rrr4rr r`r)rr*rxrr5rprqr6rr4r r7;sD  zTestDate.test_comparecs|ddd|dkd|dkd|dkd|dkd|tfdd|tfd dGd d d }||kd|kd|kd|kd|tfd d|tfd ddS)NrrHrCr"FTcsdkSrMrrourrr rlrz-TestDate.test_mixed_compare..csdkSrMrrr&rr rmrc@s eZdZdS)z.TestDate.test_mixed_compare..SomeClassNr`rrrr SomeClassqsr(cskSr\rrr'Ztheirrr ryrcskSr\rrr)rr rzr)rr*rprq)r+r(rr)r test_mixed_comparebszTestDate.test_mixed_comparecCs ||jj||jjdSr\)rxrrrtr^rrr rV|szTestDate.test_boolcCsZdD]P}||dd}|dd|kr||dd|||dd|qdS)N)r"r*rcr#irr"z%Yz%04d%dz%4Y)rrr*)r+rr-rrr test_strftime_y2ks zTestDate.test_strftime_y2kc Cs|j}gd}||}|||d}dD]L\}}|dd}|||<||}|jfi||i} ||| |d7}q.|ddd}|jt|jdd dS) Nrr)rrFrrBrKrHr"rrFrrrrr*rrpr r+clsrbaser r5newvalnewargsrjgotrrr test_replaces     zTestDate.test_replacecCs:Gddd|j}|ddd}|t|jdd|dS)Nc@s eZdZdS)z4TestDate.test_subclass_replace..DateSubclassNr`rrrr rasrar"ir2rrrr)r+rararrr test_subclass_replaces zTestDate.test_subclass_replacecsGfdddj}d}j|}||iddi}|j||jd|jd|||d|j|jddS)Ncs$eZdZdZfddZddZdS)z&TestDate.test_subclass_date..CrPcs6|}|d}jj|g|Ri|}||_|SNrrpoprrrr5rkwsZtemprresultr^rr rs  z.TestDate.test_subclass_date..C.__new__cSs||j|jSr\)rrr+startrrr newmethsz.TestDate.test_subclass_date..C.newmethNr9rMrN theAnswerrrFrr^rr Cs rIrrHrrrErPrG) rr*r8rHrrrFrrr+rIrrrrrr^r rls  zTestDate.test_subclass_datec sGfdddj}d}d}d}||}|||jdt|td}d|ffd |ffd |ffg}|D]\}} ||fD]n} jt | |d Ht | |} | | } | || || jdWdq1s0YqqxdS) NcseZdZfddZdS)zCTestDate.test_subclass_alternate_constructors..DateSubclasscs$jj|g|Ri|}d|_|SNrErrrr5rkwargsrCr^rr rszKTestDate.test_subclass_alternate_constructors..DateSubclass.__new__Nr9rMrNrrr^rr rasrarJi( z 2003-04-14rErrr fromisoformatZ base_obj_type constr_name) rrzr*rrcombiner timestamprrgetattr) r+rarZd_ord d_isoformatbase_drrrS constr_argsbase_objconstrrarr^r $test_subclass_alternate_constructorss,       z-TestDate.test_subclass_alternate_constructorscCsRd}t|}tD]<\}}}|||}||}||||t|tqdS)Nr)rrrrr*rxrTr1rrr test_pickling_subclass_dates   z$TestDate.test_pickling_subclass_datec Csd}t|jts|dd}dD],}|t|j|dd||ddq t|jtr|td*|tdgt|dWdn1s0Ytdd D],}||ddt|g|ddqdS) Ns 1995-03-25rH)9 rFrB^bad tzinfo state arg$r"rro) ryrrrprqrbytesr,r)r+r6Z month_byteZord_byterrr test_backdoor_resistances     8z!TestDate.test_backdoor_resistancec Cspgd}|D]^}|j|}|}|j|d,|j|}|||Wdq 1s`0Yq dS)N)r"r"r")rrFrrr"r")rrFrrrnr)rrHrBirCrn)dt_strrrrrQr*)r+ base_datesdt_tupleraridt_rtrrr test_fromisoformats  zTestDate.test_fromisoformatcCs<Gddd|j}|ddd}||}|||dS)Nc@s eZdZdS)z:TestDate.test_fromisoformat_subclass..DateSubclassNr`rrrr ra)srarlrr)rrQrrz)r+rararmrrr test_fromisoformat_subclass(s z$TestDate.test_fromisoformat_subclassc CsLgd}|D]:}|t|j|Wdq 1s<0Yq dS)N) rrz 009-03-04Z 123456789z 200a-12-04z 2009-1a-04z 2009-12-0az 2009-01-32z 2009-02-29Z20090228u20090228)rprrrQr+Zbad_strsbad_strrrr test_fromisoformat_fails2s z!TestDate.test_fromisoformat_failsc Cs\ddl}dd|dg}|D]:}|t|j|Wdq1sL0YqdS)Nrs 2009-03-01z 2009-03-01ioStringIOrprqrrQr+rtZ bad_typesZbad_typerrr "test_fromisoformat_fails_typeerrorFs  z+TestDate.test_fromisoformat_fails_typeerrorcCsddddddddd d d d d tddftddfg}|D]Z}|j|d:|j|}|}|jj|}|||Wdq21s0Yq2dS)N)rHrB)rr"rF)irrn)rr"rF)rrrrf)rrr)rr"r")rrrr)rrrre)r(rrr"rr) datecomps)rrrrrfromisocalendarr*)r+ZdatesryZdobjisocalZ d_roundtriprrr test_fromisocalendarOs,  zTestDate.test_fromisocalendarc Csxgd}|D]f}|j|dF|t|jj|Wdn1sJ0YWdq 1sh0Yq dS)N) )rrr")rrr")r6r")rr"r)rr"r)rr")rrr")rr"r")rr"r")ir"r")r"r")rrr")rr"rr{)rrprrrz)r+isocalsr{rrr !test_fromisocalendar_value_errorsms  z*TestDate.test_fromisocalendar_value_errorsc Csttddg}g}d}tdD]4}|D]*}t|}|||||<|t|q&q|D]f}|j|dF|t|j j |Wdn1s0YWdqX1s0YqXdS)NcSsdSr\r)xrrr rrz;TestDate.test_fromisocalendar_type_errors..)rr"r"rBr) rrrlistrrrrprqrrz)r+Z err_txformersrr6r ZtxformerZerr_valr{rrr test_fromisocalendar_type_errorss   z)TestDate.test_fromisocalendar_type_errorsN)/r9rMrNrrrrCrrrr.rrLrrrrrrrrrrrrrEr rr2r%r7r*rVr.r:r=rlr\r]rdrnrorrrwr|rrrrrr rAsV/2    &'    ' ,   rc@seZdZdZdS)SubclassDatetimer"Nrrrrr rsrc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zed)d*d+Zd,d-Zed.d/d0Zd1d2Zd3d4Zd5d6Z e!"e#j$d7kd8d9d:Z%e!"e#j$d7kd8d;d<Z&d=d>Z'd?d@Z(dAdBZ)dCdDZ*dEdFZ+dGdHZ,dIdJZ-dKdLZ.edMdNdOZ/dPdQZ0dRdSZ1dTdUZ2dVdWZ3dXdYZ4dZd[Z5d\d]Z6d^d_Z7d`daZ8dbdcZ9dddeZ:dfdgZ;dhS)i TestDateTimecCsx|ddddd}||jd||jd||jd||jd||jd||jd||jddS)NrrBr"rr rr*rrrKrrtrsrr`rrr rsz"TestDateTime.test_basic_attributesc Cs||ddddddd}||jd||jd||jd||jd||jd||jd||jddS)NrrBr"rr@rr`rrr test_basic_attributes_nonzerosz*TestDateTime.test_basic_attributes_nonzeroc Cs|ddddddd|jfD]l}t|}||d|d d}t|}|||||j|j|j |j |j |j |j }|||q dS) Nr"rFrBrHrCrJrEr:rA)rr{rrxr3rr*rrrKrrtrsrrrrr rCs   zTestDateTime.test_roundtripc Csb|ddddddd}||d||dd||d d ||d d ||d d||jddd||jddd||jddd||jddd||jddd||jddd||jd ddd|jt|jdd|jt|jd d|t|d |jdddddddtjd}||jddd|ddddddd}||jddd |dddddd}||jddd||jddd||jddd!|ddd}||d"||dd"||d d#|t|d#tt d$d%d&}|jddd|d}||d'dS)(Nr"rFrBrHrCrz0001-02-03T04:05:01.000123rX z0001-02-03 04:05:01.000123z0001-02-0304:05:01.000123ru0001-02-0304:05:01.000123rtimespecz 0001-02-03T04rSz0001-02-03T04:05rz0001-02-03T04:05:01rz0001-02-03T04:05:01.000rauto)seprz0001-02-03 04:05fooL@rz0001-02-03T04:05:01.999+00:00z0001-02-03T04:05:01.999z0001-02-03T04:05:01.000000z0002-03-02T00:00:00z0002-03-02 00:00:00rZXXXz0002-03-02T00:00:00+00:00:16) rr*rrprrrrrOrrrrr rsD zTestDateTime.test_isoformatc Csdtddfdtddfdtddd fd td d d dfdtdddddfg}ddtjfdttdfg}|dd|D7}|dddd dd}d}|D]H\}}|j|d}||}|j|dWdq1s0YqdS)N05:00rCr02:00rF06:27rJrr12:32:30rrornr02:04:09.123456rHrArrrN+00:00rcSs2g|]*\}}dD]\}}||t||fqqS))-r)+r"rrrjrprefixsignrrr r!s z8TestDateTime.test_isoformat_timezone..rxr"%z2016-04-01T12:37:09rtzirrrrrr) r+ tzoffsetstzinfosZdt_baseexp_baseexp_tzrraexprrr test_isoformat_timezones(     z$TestDateTime.test_isoformat_timezonec Cs&|ddddddd}||dt||td |dWdn1sX0YGd d d |j}|ddddddd}||dd Gd d d |j}|ddddddd}||dt|dD]F}|||||||||||||d qdS)NrrAr#rHrCr"rrrc@seZdZddZdS)z#TestDateTime.test_format..AcSsdSrrr^rrr rsz+TestDateTime.test_format..A.__str__Nrrrrr rsrc@seZdZddZdS)z#TestDateTime.test_format..BcSsdSrrrrrr r%sz,TestDateTime.test_format..B.strftimeNrrrrr r$srrrrrrr rs(zTestDateTime.test_formatc Cshddl}|ddddddd}||d|ddd dddd}|||||dS) NrrrBrFrCrzSat Mar 2 18:03:05 2002r)rrr*rrr)r+rrrrr test_more_ctime2s zTestDateTime.test_more_ctimec Cs|dddddd}|dddddd}|dddddd}||||||k|tddd d d d }tdd }||}|||||||kdS) NrrBr"rArr#rrrrrr)rr*rxrr)r+rrrdt3r rrr test_tz_independent_comparingBs  z*TestDateTime.test_tz_independent_comparingc CsBGdddt}|ddddddd|dd}|t|jddS) Nc@seZdZddZdS)zDTestDateTime.test_strftime_with_bad_tzname_replace..MyTzInfocSsGdddt}|dS)Nc@seZdZddZdS)zZTestDateTime.test_strftime_with_bad_tzname_replace..MyTzInfo.tzname..MyStrcWsdSr\r)r+rrrr rYszbTestDateTime.test_strftime_with_bad_tzname_replace..MyTzInfo.tzname..MyStr.replaceN)r9rMrNrrrrr MyStrXsrr5)r)r+rarrrr rcWszKTestDateTime.test_strftime_with_bad_tzname_replace..MyTzInfo.tznameN)r9rMrNrcrrrr MyTzInfoVsrrrBrFrr5%Z)rOrrprqr)r+rrrrr %test_strftime_with_bad_tzname_replaceTsz2TestDateTime.test_strftime_with_bad_tzname_replacec Cs|tdd|tdd|t|jtddd|t|jtddd|ddd|ddd|t|jddd|t|jddd|ddd|ddd|d dd|t|jddd |t|jd dd|t|jd dd|t|jd dd|t|jddd|t|jddd|dddd|dddd|t|jdddd|t|jdddd|ddddd|ddddd|t|jddddd|t|jddddd|dddddd|dddddd|t|jdddddd|t|jdddddd|ddddddd|ddddddd|t|jddddddd |t|jddddddd |jt|jddddd|jt|jddddd|t|jddddddddd dS)Nr"rrrrorFrrrrnrrrrorrrrrrrr fold)rrrrprrqr^rrr r_s^      z+TestDateTime.test_bad_constructor_argumentscCs|dddddd}|dddddd}||||t|t||di}d||<|t|d|||d|||d|d ddd d d}|d ddd d d}||||t|t||di}d||<|t|d|||d|||ddS) Nrrrrrnr"rFrrrCrrrrr r.s$  zTestDateTime.test_hash_equalityc s<|ddd|ddd}|}||jdttddd||jd||jd|ddd d d tddd }tdd }tdtd}|||ddd dd |||ddd dd |d||ddddd |||ddd dd || |ddd dd ||| |d||ddddd ||dddd d ||dddd d |||dddd d |||dd dd d |d||dddd d |d||dddd d ||||||||||||| | ||| ||| ||| | ||| ||| |||||||||||||||ddddd dd ||||||||||||dd ddddd|||||||dD]^|t fdd|t fd d|t fd!d|t fd"dq.|t fd#d|t fd$d|t fd%d|t fd&d|t fd'd|t fd(d|t fd)d|t fd*ddS)+Nrr"rrrrHrrBrFrrJrr rErr#rrrmrArrrrrrCrrrcsSr\rrrrr rrz0TestDateTime.test_computations..csSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrr)r+r rZmillisecrrrrr rs  " """zTestDateTime.test_computationscCsZd}|j|}tD],\}}}|||}||}|||q|||ddS)NrJrErrrr"rFrr1rrr r2s   zTestDateTime.test_picklingc Csn|ddddddd}ttjdD]D}t||}t|}||jd||jd||j dq$dS) NrrFrEr0rir") rrrHIGHEST_PROTOCOLrrr*rrrK)r+r rrBr rrr test_more_picklings  zTestDateTime.test_more_picklingcCsRd}t|}tD]<\}}}|||}||}||||t|tqdS)Nr)rrrrr*rxrTr1rrr test_pickling_subclass_datetime s   z,TestDateTime.test_pickling_subclass_datetimecCsFgd}d}|j|}|D]&}tD]}||dd}|||q"qdS)N)s@cdatetime datetime (S'\x07\xdf\x0b\x1b\x14;\x01\x00\x10\x00' tR.s#cdatetime datetime (U  ;tR.s$cdatetime datetime U  ;R.)rrnrrrr"rrrr!r#rrr r% s   z!TestDateTime.test_compat_unpicklecCsRgd}|j|}|j|}||||||k|||k|||k|||k|||ktt|D]}|dd}||d||<|j|}|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||kqzdS)N)rrnrrr8rrr")rr*rxrrr,)r+rr'r(r r8rrr test_more_compare s2     zTestDateTime.test_more_comparecCsd||j|j||j|j||j|j||j|j||j |j ||j |j dSr\) r*rrrrrrKrrrrtrrs)r+rjr9rrr verify_field_equality= s z"TestDateTime.verify_field_equalitycCs6ddl}|}||}|j|}|||dSNr)r localtimerrrr+rrrjr9rrr rE s   zTestDateTime.test_fromtimestampcCs6ddl}|}||}|j|}|||dSr)rgmtimerutcfromtimestamprrrrr test_utcfromtimestampM s   z"TestDateTime.test_utcfromtimestampEST+05EDT,M3.2.0,M11.1.0c Cs,|ddd}||d|ddddddd}||d|ddd dd }|jdd }||j||tdd ||j||tdd |dd ddd }||j|||ddd|d ddfD]:}z |}WntyYq0||j||qdS)Nr,r"g@rFrBrH6@r;rnrnrri'r)rr*rUrrrrG)r+rt0r'rBrrr test_timestamp_naiveW s,      z!TestDateTime.test_timestamp_naivec Cs|jdddtjd}||d|jdddddddtjd}||d|jdddddddttd d d d}||d dS) Nr,r"rrrFrBrHg7@rrrr)rrrr*rUrrrrr test_timestamp_awares s  z!TestDateTime.test_timestamp_awarezMSK-03c Csx|jj|jjfD]`}|d}||jd||jd|d}z |d}Wnty`Yn~0||jd||jd|d}||||d}||||d}||||d }||jd||jd |d }||||d }||||d }||jd||jd|d}||jd||jd|d}||jd||jdqdS)Nrgư>gưrrg:0yEg1E2gHzrRi#gHz>g1E2>g<"2?gP?r"rPrQ)rrrr*rsrOSError)r+ZftsrrZ minus_onerrrr rT~ sF        z&TestDateTime.test_microsecond_roundingc Cs|jjjtjd}|}z||jj|tjd|Wn6tt fyn}z| t |WYd}~n d}~00|jj jtjddd}|}||jj|tjd|d}||}| ttf|j|Wdn1s0Y| ttf|j|Wdn1s 0Y||}| ttf|j|Wdn1sh0Y| ttf|j|Wdn1s0YdS)Nrrr)rrsriX)rrrrrrUr*rrGrr:rrtrprr)r+Zmin_dtZmin_tsexcZmax_dtZmax_tsrrrrr test_timestamp_limits s4$ *, ,z"TestDateTime.test_timestamp_limitscCs dD]}|t|jj|qdSrrrrrr r s z&TestDateTime.test_insane_fromtimestampcCs dD]}|t|jj|qdSr)rprGrrrrrr test_insane_utcfromtimestamp s z)TestDateTime.test_insane_utcfromtimestampwin32z*Windows doesn't accept negative timestampscCs|jddS)N)rrr^rrr !test_negative_float_fromtimestamp sz.TestDateTime.test_negative_float_fromtimestampc Cs.|jd}|||ddddddddS) Nrirrrrr8i~)rrr*)r+r-rrr $test_negative_float_utcfromtimestamp s z1TestDateTime.test_negative_float_utcfromtimestampcCsfddl}tdd}tdD]2}|j}|j|}t|||krqNq|t|||dS)Nrr"rrB)rrrrutcnowrrZassertLessEqual)r+rZ tolerancerZfrom_nowfrom_timestamprrr test_utcnow s   zTestDateTime.test_utcnowc Csd}d}t|j||}|j||}||||t||j|t||jgd}|D]`\}}|j||d:t|j||}|j||}|||Wdqb1s0Yqb|jj}||dddt ||ddd t ||d dt dd d d  ddt j t j dffD]z\}}|dkrXd} | } nd} |} t| dd\} } d| | | |} || d}||t |d|| |q:d\} }|| |}||dtdt || d|||| ||ddjd|t|ddWdn1sF0Y|t|ddWdn1s|0Y|t|ddWdn1s0YdS)Nz2004-12-01 13:02:47.197z%Y-%m-%d %H:%M:%S.%f))u2004-12-0113:02:47.197u%Y-%m-%d%H:%M:%S.%f)u200412-01 13:02:47.197u%Y%m-%d %H:%M:%S.%f)u2004-12-01 13:0247.197u%Y-%m-%d %H:%M%S.%f)stringformatz+0002%zrFz-0002rDz-00:02:01.000003r"rB)rSrr)rr)rZGMTrrrrz{}{:02d}{:02d} {}rr)z +1234 UTCrrr/rrz-2400z-000z) _strptimeZ_strptime_datetimerstrptimer*rrrrbMINUTErrrrcrzrrrrrpr)r+rrrjr9inputsrZ tzsecondsrcrrrrSdtstrrarrrr test_strptime sX   ,     66zTestDateTime.test_strptimec Cs`|jj}|t|dd}Wdn1s20Y|dddddd}|dddddd}|dddd d d }|ddd d d d }d d d|fd dd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg }|D]b\}} } } d"|}|j|| | | d#*|| | }|j|| |d$Wdq1sP0YqdS)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%SrrFr"rHrCrJrr-z 1/02/03 4:5:6rz 01/2/03 4:5:6z%Hz01/02/03 4:05:06z%Mz01/02/03 04:5:06z%Sz01/02/03 04:05:6z%jz2/03 04am:05:06z%j/%y %I%p:%M:%Sz%Iz02/03 4am:05:06z%wz6/04/03z%w/%U/%yz%Wz6/4/2003z%u/%W/%Yz%Vz%u/%V/%Gztest single digit )reasonrrtarget)msg)rrrprrr*) r+rZnewdaterrrrZdt4rrrrrrrr test_strptime_single_digit6 s6 (            z'TestDateTime.test_strptime_single_digitcCs$|dddddd}||d|||j|j|j|j|j|j| | t |jdd dd f |}||j |j||j |j||j|j||j|j||j|j||j|j||j| ||j| t |jdd d||jd dS) NrrrrJr!) rrrrJrrrHrrr"r)rr*rrrrKrrtrsrrrrrrrrrrrr)r+rttrrr test_more_timetupleX s0   z TestDateTime.test_more_timetuplec Cs|ddddddd}||dd d D]B\\}}}ttd ||d  }|j|d }||dd|q,z|dWntyYn0dS)NrrrrJrr/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))rrz 33.000123))rrZ33rF)rrrrrz-0200u%y%m %H%M)rr*rrrrr)r+rrBr rrrrr test_more_strftimen s   zTestDateTime.test_more_strftimec CsL|ddddddd}||tddd||tdddddS)NrrBrHr-)rr*rrr`rrr test_extract~ szTestDateTime.test_extractc Cstddd}tdddd}|ddddddd}|jj}|||}||||||d}|||||||||||||||t||t|||t||||t|||d|t|||dd |t|d d |t||d |t|d ||||tj}| |j tj|||tjd }| |j tjt}|||}||||||dS) NrrBrHrrr)rrr"rFrrr) rrrrTr*rprqrrrr)r+r-rrjrTrarrr test_combine s6       zTestDateTime.test_combinec Cs|j}gd}||}|||d}dD]L\}}|dd}|||<||}|jfi||i} ||| |d7}q.|ddd}|jt|jdd dS) N)r"rFrBrHrCrJrEr)r/r0r1rrCrtrJrsrErr~r"rrFrrr2r3r4rrr r: s     zTestDateTime.test_replaceZEDT4c Cs\|j}tdd}|jttdddd}||||t |j|||t |j||j|dtddd}||||||j|d |Gd d d t }|}|t |j|||j|d||Gd d d t }|}|t |j|Gdddt } | } |j| d} |t | Wdn1sN0YdS)N,Z0044rIrEDTrrHrrc@seZdZddZddZdS)z+TestDateTime.test_astimezone..BoguscSsdSr\rr`rrr rb rz5TestDateTime.test_astimezone..Bogus.utcoffsetcSstdSrrr`rrr rd rz/TestDateTime.test_astimezone..Bogus.dstNr9rMrNrbrdrrrr Bogus src@seZdZddZddZdS)z/TestDateTime.test_astimezone..AlsoBoguscSstdSrrr`rrr rb rz9TestDateTime.test_astimezone..AlsoBogus.utcoffsetcSsdSr\rr`rrr rd rz3TestDateTime.test_astimezone..AlsoBogus.dstNrrrrr AlsoBogus src@seZdZddZddZdS)z,TestDateTime.test_astimezone..BrokencSsdSrMrr`rrr rb rz6TestDateTime.test_astimezone..Broken.utcoffsetcSsdSrMrr`rrr rd rz0TestDateTime.test_astimezone..Broken.dstNrrrrr Broken sr) rr{rOrrrr* astimezonerprqrr) r+rardt_utcZdt_frZbogrZalsobogrbrokenZ dt_brokenrrr test_astimezone s*    zTestDateTime.test_astimezonecsGfdddj}d}j|}||iddi}|j||jd|jd|||d|j|j|j ddS)Ncs$eZdZdZfddZddZdS)z.TestDateTime.test_subclass_datetime..CrPcs6|}|d}jj|g|Ri|}||_|Sr>r?rAr^rr r s  z6TestDateTime.test_subclass_datetime..C.__new__cSs||j|j|jSr\)rrrsrDrrr rF sz6TestDateTime.test_subclass_datetime..C.newmethNrGrr^rr rI s rI)rrHrrro)rrErPrG) rr*r8rHrrrFrrrsrKrr^r rp s  z#TestDateTime.test_subclass_datetimec sBGfdddj}d}d}d}||}|||jd|}d|f|fd|tjf|tjfd|f|fd |f|fd |d f|fd t|d dt |ddf|fg}|D]\}} } ||fD]p} j t | |dHt | |} | | } | || | | jdWdq1s00YqqdS)NcseZdZfddZdS)zTTestDateTime.test_subclass_alternate_constructors_datetime..DateTimeSubclasscs$jj|g|Ri|}d|_|SrLrMrNr^rr r sz\TestDateTime.test_subclass_alternate_constructors_datetime..DateTimeSubclass.__new__NrPrr^rr rm srm)rrHrrrnrz2003-04-14T12:30:15.123456gh͏TMArErrrQrz%Y-%m-%dT%H:%M:%S.%frTrrBrR) rrzr*rrUrrrrrrrrV)r+rmrrWZutc_tsrXrrrSrYrjrZ constructorrarr^r -test_subclass_alternate_constructors_datetime s6       $      z:TestDateTime.test_subclass_alternate_constructors_datetimec sGfdddj}ddifddifdddtjifdddttdd d ifg}|D]f\}}}|Bt||}|fi|}|||jd WdqT1s0YqTdS) NcseZdZfddZdS)z8TestDateTime.test_subclass_now..DateTimeSubclasscs$jj|g|Ri|}d|_|SrLrMrNr^rr r. sz@TestDateTime.test_subclass_now..DateTimeSubclass.__new__NrPrr^rr rm- srmr{rZnow_utcrZ now_fixedrrrrE) rrrrrrVrzr*r)r+rmrr5Z meth_namerOr[rarr^r test_subclass_now+ s   zTestDateTime.test_subclass_nowc sgd}gdddg}dtjttddttddgfdd |D}|D]^}|D]T}|j|d }j|d (j|}||Wdq\1s0Yq\qTdS) N)rerfrgrh)rrrr)rrrih)rrrG)rrnrrrrXrrrFcs:g|]2}D](}D]}jg||Rd|iqq qSr)r)rZ date_tupleZ time_tuplerZ base_timesr+rrr r!Y sz.rr)rrrrrrrQr*)r+rk separatorsdtsrarrrmrrr test_fromisoformat_datetimeC s     z(TestDateTime.test_fromisoformat_datetimec Cs|ddddddd}tddtddtd d d tdd dd tdddddg}|dd|D7}dtjttddg}|dd|D7}|D]P}|j|d}|}|j|d|j|}Wdq1s0YqdS)NrlrrnrpQrCrrFrJrrrorrHrArrcSsg|] }d|qSrrrrrrr r!p rz.rcSsg|] }t|qSrrr rrr r!u rrtstrrrrrrrrrQ)r+Zbase_dtrrrrarrmrrr test_fromisoformat_timezonef s"     z(TestDateTime.test_fromisoformat_timezonec Cs|gd}|D]j}|ddddddd}|j|d }|j|d (|j|}|||Wdq 1sl0Yq dS) N) rrX€uʁuᛇu時u🐍rrbr"rrrriurrrjr+rrrarrmrrr test_fromisoformat_separators s  z*TestDateTime.test_fromisoformat_separatorsc Csxddg}|D]f}|ddddd}|j|d}|j|d (|j|}|||Wdq 1sh0Yq dS) Nrrrbr"rrrrrrjrrrr test_fromisoformat_ambiguous s  z)TestDateTime.test_fromisoformat_ambiguousc Csddg}dtjttddttddttdddg}gd }t|D]\}}|D]}|D]}|d krd |dd }|d d|f}|j|d d |d|i} | j|d} |j| d(|j| } || | Wdq\1s0Yq\qTqHdS)N)rrrHr~rrr)rrrHr~rrrrrrFrJrrrrSrrrrrrrHrrr rrr enumeraterrrrQr*) r+Zdatetime_basesr timespecsiprrrlnew_microsecondsrarrmrrr test_fromisoformat_timespecs s(    z)TestDateTime.test_fromisoformat_timespecsc Csxgd}|D]f}|j|dF|t|j|Wdn1sJ0YWdq 1sh0Yq dS)N)rrz 2009.04-19T03z 2009-04.19T03z 2009-04-19T0az2009-04-19T03:1a:45z2009-04-19T03:15:4az2009-04-19T03;15:45z2009-04-19T03:15;45z2009-04-19T03:15:4500:00z2009-04-19T03:15:45.2345z2009-04-19T03:15:45.1234567z 2009-04-19T03:15:45.123456+24:30z 2009-04-19T03:15:45.123456-24:30u2009-04-10ᛇᛇᛇᛇᛇ12:15u2009-0410T12:15u2009-04-10T1215z 2009-04-19T1z2009-04-19T12:3z2009-04-19T12:30:4z2009-04-19T12:z2009-04-19T12:30:z2009-04-19T12:30:45.z2009-04-19T12:30:45.123456+z2009-04-19T12:30:45.123456-z!2009-04-19T12:30:45.123456-05:00az2009-04-19T12:30:45.123-05:00az2009-04-19T12:30:45-05:00arqrrprrrQrprrr !test_fromisoformat_fails_datetime s  z.TestDateTime.test_fromisoformat_fails_datetimecCsJd}|ttt||j|Wdn1s<0YdS)Nu2018-01-0301:0113)rrreescaperrrQ)r+rrrr "test_fromisoformat_fails_surrogate sz/TestDateTime.test_fromisoformat_fails_surrogatecCs$d}|j|}||jtjdS)Nz2014-04-19T13:21:13+00:00)rrQrrrr)r+rirarrr test_fromisoformat_utc s z#TestDateTime.test_fromisoformat_utcc Cs`Gddd|j}|ddddddd ttd dd d }||}||||||dS) Nc@s eZdZdS)zBTestDateTime.test_fromisoformat_subclass..DateTimeSubclassNr`rrrr rm srmrlrrrArnrir#rr)rrrrQrr*rz)r+rmrarmrrr ro s z(TestDateTime.test_fromisoformat_subclassN).cskSr\rrr4rr rF rcskSr\rrr4rr rG rcskSr\rrr4rr rH rcskSr\rrr4rr rI rcskSr\rrr4rr rJ rcskSr\rrr4rr rK rcskSr\rrr4rr rL r) rr*rxrrr,r5rprq)r+rr(r r8rr4r test_comparing# sL     zTestTime.test_comparingcCs |dd|dd|t|jdd|t|jdd|dd|dd|t|jdd|t|jdd|ddd|ddd|t|jddd|t|jddd|dddd|dddd|t|jdddd|t|jdddddS) Nrrrrrrrr )rrprr^rrr rN s     z'TestTime.test_bad_constructor_argumentscCs|ddd}|ddd}||||t|t||di}d||<|t|d|||d|||d|ddd}|ddd}||||t|t||di}d||<|t|d|||d|||ddS)Nrrnrr"rFrrCrrrrr r.d s$  zTestTime.test_hash_equalitycCs|dddd}||d||t||}||d||t||jdd}||d||t||jd d}||d ||t||jd d}||d ||t||jd d}||d||t||jdd}||d||t||jdd}||d||t||jddddd}||jddd||jddd||jddd||jddd ||jd!dd"||jd#dd"|jt|jd$d|jt|jd%d|jdddd&d}||jddd'|jdddd(d}||jddd)||jd!dd*||jd#dddS)+NrHrCr"rz04:05:01.000123z00:00:00rz00:00:00.000001r#z00:00:00.000010r#z00:00:00.000100rz00:00:00.001000rz00:00:00.010000iz00:00:00.100000rr/r0r)rrtrsrrrZ12rSz12:34rz12:34:56rz 12:34:56.123rz12:34:56.123456rZmonkeyrrz 12:34:56.999rz 12:34:56.000z12:34:56.000000)rr*rrrprrrrr r{ sN      zTestTime.test_isoformatc Csdtddfdtddfdtddd fd td d d dfdtdddddfg}ddtjfdttdfg}|dd|D7}|d dd}d}|D]H\}}|j|d}||}|j|dWdq1s0YqdS)NrrCrrrFrrJrrrrrornrrrHrArrrrrcSs2g|]*\}}dD]\}}||t||fqqSrrrrrr r! s z4TestTime.test_isoformat_timezone..rz12:37:09rrr) r+rrZt_baserrrrrrrr r s(     z TestTime.test_isoformat_timezonecCs"|jdd}|jt|jdddS)Nr"rsrB)r)rrprqrrrrr test_1653736 s zTestTime.test_1653736cCsZ|dddd}||dd||ddz|d WntyTYn0dS) Nr"rFrBrHz %H %M %S %fz01 02 03 000004rru%H%M)rr*rrrrrr r s zTestTime.test_strftimecCs|dddd}||dt||td|dWdn1sR0YGdd d |j}|dddd}||dd Gd d d |j}|dddd}||dt|d D]F}|||||||||||||d qdS) Nr"rFrBrHrrrc@seZdZddZdS)zTestTime.test_format..AcSsdSrrr^rrr r sz'TestTime.test_format..A.__str__Nrrrrr r src@seZdZddZdS)zTestTime.test_format..BcSsdSrrrrrr r sz(TestTime.test_format..B.strftimeNrrrrr r sr)z%H %M %Sr)r+rrr rr rrrr r s(zTestTime.test_formatc Cs|t|ddddd|t|ddddd|t|d ddd d |t|d ddd d |t|ddd d ddS)Nr"rFrBrHz01:02:03.000004r#rz10:02:03.004000rr;z00:02:03.400000rz12:02:03rrz23:15:00)r*rrr^rrr r s zTestTime.test_strc Csd|jj}|t|ddddd||t|ddddd ||t|d ddd d ||t|d ddd d||t|ddd d d|dS)Nr:r"rFrBrHz%s(1, 2, 3, 4)r#rz%s(10, 2, 3, 4000)rr;z%s(0, 2, 3, 400000)rz %s(12, 2, 3)rrz %s(23, 15)r<r=rrr r s  zTestTime.test_reprcCsN||jj|j||jj|j||jjt||jj|jjkdSr\)rzrrrtrDrrxr^rrr rE szTestTime.test_resolution_infocCsZd}|j|}tD],\}}}|||}||}|||q|||ddS)NrrrrrFrr1rrr r2 s   zTestTime.test_picklingcCsRd}t|}tD]<\}}}|||}||}||||t|tqdS)Nr/)r'rrrr*rxrTr1rrr test_pickling_subclass_time s   z$TestTime.test_pickling_subclass_timec Cszgd}t|D]d\}\}}|j|d<|j|}tD]}||dd}|||q8Wdq1sj0YqdS)N))s,cdatetime time (S'\x14;\x10\x00\x10\x00' tR.r/)scdatetime time (U;tR.r/)scdatetime time U;R.r/)s,cdatetime time (S'\x14;\x19\x00\x10\x00' tR.rrrr)scdatetime time (U;tR.r1)scdatetime time U;R.r1)r rr)rrrr"r*)r+rhr r$rrjrrrrr r%% s  zTestTime.test_compat_unpicklecCsh|j}||d||dd||ddd||dddd||d||dS)Nr"r)rrx)r+r5rrr rV; szTestTime.test_boolc Cs|j}gd}||}|||d}dD]L\}}|dd}|||<||}|jfi||i} ||| |d7}q.|d}|jt|jdd|jt|jdd|jt|jd d |jt|jd d dS) Nr*r)rrrrr"rrrrtr#r-r r,r3r4rrr r:E s"    zTestTime.test_replacecCs8Gddd|j}|dd}|t|jdd|dS)Nc@s eZdZdS)z4TestTime.test_subclass_replace..TimeSubclassNr`rrrr TimeSubclass_ sr4rrnr#r2r<)r+r4rrrr r=^ s zTestTime.test_subclass_replacecsGfdddj}d}j|}||iddi}|j||jd|jd|||d|j|jddS)Ncs$eZdZdZfddZddZdS)z&TestTime.test_subclass_time..CrPcs6|}|d}jj|g|Ri|}||_|Sr>r?rAr^rr rj s  z.TestTime.test_subclass_time..C.__new__cSs||j|jSr\rrsrDrrr rFq sz.TestTime.test_subclass_time..C.newmethNrGrr^rr rIg s rI)rHrCrJrrErPrG) rr*r8rHrrrFrrsrKrr^r test_subclass_timee s  zTestTime.test_subclass_timec Csd}ddtddfD] }|t|j||ddq|td*|tdgt|dWdn1sr0YdS) Nz2:59.0r9rÿr"rbr)chrrprqrrrcr,)r+r6Z hour_byterrr rd s z!TestTime.test_backdoor_resistanceN)r9rMrNrrrrrCr+rr.rrr.rrrrrEr2r0r%rVr:r=r6rdrrrr r( s. +4     r(c@s4eZdZddZddZddZddZd d Zd S) TZInfoBasecCs|j}Gdddt}|ddd|d}|tur4dp6d}|||t|turVd pXd d }||||||dS) Nc@s eZdZddZddZeZdS)z7TZInfoBase.test_argument_passing..introspectivecSs |rdp dS)Nrealnonerr`rrr rc rz>TZInfoBase.test_argument_passing..introspective.tznamecSst|r dp ddS)NrPrRrr`rrr rb szATZInfoBase.test_argument_passing..introspective.utcoffsetN)r9rMrNrcrbrdrrrr introspective sr>r"rFrBrr<r;r=rPrR)rrrr*rcrrbrd)r+r5r>objrjrrr test_argument_passing sz TZInfoBase.test_argument_passingcCsz|j}|jt|dddddGdddt}|jt|ddd|dGdddt}|}|ddd|d}||j|dS)Nr"rrc@seZdZddZddZdS)z3TZInfoBase.test_bad_tzinfo_classes..NiceTrycSsdSr\rr^rrr r[ rz.NiceTry.__init__cSsdSr\rr`rrr rb rz=TZInfoBase.test_bad_tzinfo_classes..NiceTry.utcoffsetNr9rMrNr[rbrrrr NiceTry srBc@seZdZddZddZdS)z5TZInfoBase.test_bad_tzinfo_classes..BetterTrycSsdSr\rr^rrr r[ rz>TZInfoBase.test_bad_tzinfo_classes..BetterTry.__init__cSsdSr\rr`rrr rb rz?TZInfoBase.test_bad_tzinfo_classes..BetterTry.utcoffsetNrArrrr BetterTry srC)rrprqobjectrr)r+r5rBrCr rrrr test_bad_tzinfo_classes sz"TZInfoBase.test_bad_tzinfo_classesc CsGdddt}|j}dD]\}}|tur@|ddd||d}n$|turd|dddddd||d}n|rt|}t|d \}}d |d krd pd ||f} t|tr|}|t |d| q| t t |qdS)Nc@seZdZddZddZdS)z6TZInfoBase.test_utc_offset_out_of_bounds..EdgycSst|d|_dSrQrrZ)r+rZrrr r[ sz?TZInfoBase.test_utc_offset_out_of_bounds..Edgy.__init__cSs|jSr\)rZr`rrr rb sz@TZInfoBase.test_utc_offset_out_of_bounds..Edgy.utcoffsetNrArrrr Edgy srG))`F)aT)T)rFr"rFrBrrJrz %c%02d:%02drrrz01:02:03) rrrrrrzrTtimetzr*rrpr) r+rGr5rZZlegitrZaofsrrtagrrr test_utc_offset_out_of_bounds s  z(TZInfoBase.test_utc_offset_out_of_boundscCs|j}Gdddt}|ddd|ddddd|ddd|dfD].}||||||qBGdddt}|ddd|d}||tdd||td d||d Gd d d t}|ddd|d}|t |j|t |j|t |jGd ddt}|ddd|d}|t |j|t |jGdddt}|ddd|d}||tdd||tdddS)Nc@s$eZdZddZddZddZdS)z*TZInfoBase.test_tzinfo_classes..C1cSsdSr\rr`rrr rb rz4TZInfoBase.test_tzinfo_classes..C1.utcoffsetcSsdSr\rr`rrr rd rz.TZInfoBase.test_tzinfo_classes..C1.dstcSsdSr\rr`rrr rc rz1TZInfoBase.test_tzinfo_classes..C1.tznameNr9rMrNrbrdrcrrrr C1 srOr"rc@s$eZdZddZddZddZdS)z*TZInfoBase.test_tzinfo_classes..C3cSs tddS)NrIrRrr`rrr rb rz4TZInfoBase.test_tzinfo_classes..C3.utcoffsetcSs tddS)NrJrRrr`rrr rd rz.TZInfoBase.test_tzinfo_classes..C3.dstcSsdSNanamerr`rrr rc rz1TZInfoBase.test_tzinfo_classes..C3.tznameNrNrrrr C3 srRrIrRrJrQc@s$eZdZddZddZddZdS)z*TZInfoBase.test_tzinfo_classes..C4cSsdSrPrr`rrr rb rz4TZInfoBase.test_tzinfo_classes..C4.utcoffsetcSsdSrLrr`rrr rd rz.TZInfoBase.test_tzinfo_classes..C4.dstcSsdSrrr`rrr rc rz1TZInfoBase.test_tzinfo_classes..C4.tznameNrNrrrr C4 srSc@seZdZddZddZdS)z*TZInfoBase.test_tzinfo_classes..C6cSs tddS)Nirrr`rrr rb rz4TZInfoBase.test_tzinfo_classes..C6.utcoffsetcSs tddS)Nrrrr`rrr rd rz.TZInfoBase.test_tzinfo_classes..C6.dstNrrrrr C6 srTc@seZdZddZddZdS)z*TZInfoBase.test_tzinfo_classes..C7cSs tddS)Nr rrr`rrr rb rz4TZInfoBase.test_tzinfo_classes..C7.utcoffsetcSs tddS)Nrrr`rrr rd rz.TZInfoBase.test_tzinfo_classes..C7.dstNrrrrr C7 srVr rrU) rrrrbrdrcr*rrprqr)r+r5rOrrRrSrTrVrrr test_tzinfo_classes s6 zTZInfoBase.test_tzinfo_classesc Cs|j}Gdddt}|ddd|d}|jdd}|jdd}|jd d}|||fD]N}|||fD]>}ttttttfD](} | ||} | |j |j } | | | qxqdqV|t ur|jd|d }|jd|d }|jd |d }|||fD]}|||fD]}||k||k} ||us ||ur:||us4||ur:d } n6||urR|ur\nnd } n||urld } nd } | | | qqdS)Nc@seZdZddZdS)z=TZInfoBase.test_aware_compare..OperandDependentOffsetcSs$|jdkrt|jdStddSdSNr#rRrrtrrrrr rbs  zGTZInfoBase.test_aware_compare..OperandDependentOffset.utcoffsetNrjrrrr OperandDependentOffsetsrZr~rAr#rrBr3rnrtrrrr") rrrrrrrrrrtr*r) r+r5rZr6d0rgrrropr9rjrrr test_aware_compare s6      ( zTZInfoBase.test_aware_compareN)r9rMrNr@rErMrWr^rrrr r: s 0r:c@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdS) TestTimeTZcCsP|}||jd||jd||jd||jd||jdSr)rr*rrtrsrrrrrrr test_empty0s zTestTimeTZ.test_emptyc s"tddd}tddd}tddd }td d |d }td d |d }tdd |d }tddtd|d||j|||j|||j||j|j|||tdd||tdd||tdd||t|jd|| d|| d|| d| |t|j d|| tdd|| tdd|| td d| |t|j d|t |t ||t |t ||t |t ||||||||||| |tfdd|tfdd|t |d|t |d|t |d|t d|t d||d||d||d|d|dd}|t||d|t||d|t||d|t|d |t|d!||d"d#||d$d%||d$d&td'd(}td)d*|d }||d+d,Gd-d.d.t} td/d d0| d } || d1d2|t| jd3d4|jjvrd5| _|t| jd3dS)6Nrrr"rrrDrMETrBrErrrro(r,)rrrRzno argscskSr\rrr^Zt5rr rbrz'TestTimeTZ.test_zones..cskSr\rrrcrr rcrz07:47:00-05:00z12:47:00+00:00z13:47:00+01:00z00:00:00.000040z00:00:00.000040+00:00z datetime.timez(7, 47, tzinfo=est)z(12, 47, tzinfo=utc)z(13, 47, tzinfo=met)z (0, 0, 0, 40)z(0, 0, 0, 40, tzinfo=utc)z%H:%M:%S %%Z=%Z %%z=%zz07:47:00 %Z=EST %z=-0500z%H:%M:%S %Z %zz12:47:00 UTC +0000z13:47:00 MET +0100rIz %z %Z %%z%%Zrrz%H:%M %%Z='%Z' %%z='%z'z"23:59 %Z='%z %Z %%z%%Z' %z='-2359'c@seZdZdZddZdS)z(TestTimeTZ.test_zones..BadtznamerPcSs|jSr\rr`rrr rcrz/TestTimeTZ.test_zones..Badtzname.tznameN)r9rMrNrrcrrrr BadtznamesrdrFrHz%H:%M:%Sz02:03:04rr?r)rOrr*rrrbrrprqrcrdr+rrrrrr8r9rr) r+estrmetr'r(r]r-Zyuckrdrrrcr test_zones8s             zTestTimeTZ.test_zonescCs|jddddtddd}|jddddtddd}|t|t||jd d d d td dd}|jd dd d tddd}|t|t|dS)Nrr"rFrBrJrrirr8rJr#iri)rrOr*r+r&rrr test_hash_edge_casess zTestTimeTZ.test_hash_edge_casesc Csd}|j|}tD],\}}}|||}||}|||q|||dtdd}|jddd|d}tD]`\}}}|||}||}|||||j t|| t dd || dqv|||ddS) Nr/rFrrrCrJrErrR) rrrrr*rrrerzrrbrrc r+rrrrrrrtinforrr r2s"       zTestTimeTZ.test_picklingcCsgd}tdd}|jdddd|d}|D]`}tD]V}||d d }|||t|||jt||tdd || dq2q*dS) N)scdatetime time (S'\x05\x06\x07\x01\xe2@' ctest.datetimetester PicklableFixedOffset (tR(dS'_FixedOffset__offset' cdatetime timedelta (I-1 I68400 I0 tRsS'_FixedOffset__dstoffset' NsS'_FixedOffset__name' S'cookie' sbtR.scdatetime time (U@ctest.datetimetester PicklableFixedOffset )R}(U_FixedOffset__offsetcdatetime timedelta (JJ0 KtRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.scdatetime time U@ctest.datetimetester PicklableFixedOffset )R}(U_FixedOffset__offsetcdatetime timedelta JJ0 KRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubR.rrrCrJrErrrrrR) rerr"r*rrzrrbrrc)r+rhrjrjr$rrrrr r%s  zTestTimeTZ.test_compat_unpicklecCs||j}|dtddd}|||dtddd}|||dtddd}|||ddtd dd}||dS) NrrrrrCi,rrrJ)rrOrx)r+r5rrrr test_more_bools   zTestTimeTZ.test_more_boolcCs\|j}tdd}ttddd}dddd |g}||}|||d }d d d dd|ffD]L\}}|dd} || |<|| } |jfi||i} || | |d7}q\||d|jdd} || j|| | j|d} ||| ||j| j|d}|j t |jdd|j t |jdd|j t |jdd|j t |jdddS)Nr#+1008rR-200r"rFrBrHrrrrrrrrr2rr3r-r r, rrOrr*rrcrrrrprr+r5Zz100Zzm200rr6r r5r7r8rjr9Zbase2Zbase3rrr r:s>         zTestTimeTZ.test_replacecCs|ddd}|ddd}||||jdd}||||jtddd}||||jtddd}|||Gdddt}|}|j|d}|j|d}||td d ||td d ||||j|d}|||kdS) Nr"rFrBrrrc@seZdZddZddZdS)z-TestTimeTZ.test_mixed_compare..VariescSstdd|_dSNrrRrFr^rrr r[sz6TestTimeTZ.test_mixed_compare..Varies.__init__cSs|jtdd7_|jSNr"rRrZrrrrr rbsz7TestTimeTZ.test_mixed_compare..Varies.utcoffsetNrArrrr VariessrtrrRr) rr*rrOrrrbrrxr+r'r(rtvrrr r*s$        zTestTimeTZ.test_mixed_comparec Csddg}d}d}d}d}|tt||||7}dtjttddttd d d g}|D]j}|D]`}|j|d |i} | } |j| d (|j | } | | | Wdq`1s0Yq`qXdS)Nr)rrrr)rArr)rCrn)rHr)rii[ rFrrJrrrr ) r itertoolsproductrrrrrrrQr*) r+Z time_examplesZhhZmmssZusecrZttuprrr t_rtrrr rn&s&  zTestTimeTZ.test_fromisoformatc Cs|dddd}tddtddtdd d tdd dd tdd dddg}|dd|D7}dtjttddg}|dd|D7}|D]P}|j|d}|}|j|d|j|}Wdq1s0YqdS)NrrnrrrCrrFrJrrrorrHrArrcSsg|] }d|qSr rr rrr r!Jrz:TestTimeTZ.test_fromisoformat_timezone..rcSsg|] }t|qSrrr rrr r!Orrr r )r+Z base_timerrrrr rzrrr r@s"     z&TestTimeTZ.test_fromisoformat_timezonec Csddg}dtjttddttddttdddg}gd }t|D]\}}|D]}|D]}|d krd |d d }|d d |f}|j|d d|d|i} | j|d} |j| d(|j| } || | Wdq\1s0Yq\qTqHdS)N)r~rrr)r~rrrrrrFrJrrrrrrrr"rrr r) r+Z time_basesrrrrrZt_tuplerrr rzrrr rYs(    z'TestTimeTZ.test_fromisoformat_timespecsc Csxgd}|D]f}|j|dF|t|j|Wdn1sJ0YWdq 1sh0Yq dS)N)ru1200z12:z12:30:z 12:30:15.1z12:3z12:30:1z1a:30:45.334034z12:a0:45.334034z12:30:a5.334034z 12:30:45.1234z12:30:45.1234567z12:30:45.123456+24:30z12:30:45.123456-24:30u 12:30:45u12:30:45․123456z 12:30:45az 12:30:45.123az12:30:45.123456az12:30:45.123456+12:00:30arrrprrr rrts  z#TestTimeTZ.test_fromisoformat_failsc Cs\ddl}dd|dg}|D]:}|t|j|Wdq1sL0YqdS)Nrs12:30:45z12:30:45rsrvrrr rws  z-TestTimeTZ.test_fromisoformat_fails_typeerrorcCsPGddd|j}|ddddtjd}||}||||||dS)Nc@s eZdZdS)z.TimeSubclassNr`rrrr r4sr4rrrir)rrrrQrr*rz)r+r4ZtscZtsc_rtrrr ros  z&TestTimeTZ.test_fromisoformat_subclasscsGfdddj}ddddtddd f}j|}||id d i}|j||jd |jd |||d |j|j d dS)Ncs$eZdZdZfddZddZdS)z*TestTimeTZ.test_subclass_timetz..CrPcs6|}|d}jj|g|Ri|}||_|Sr>r?rAr^rr rs  z2TestTimeTZ.test_subclass_timetz..C.__new__cSs||j|jSr\r5rDrrr rFsz2TestTimeTZ.test_subclass_timetz..C.newmethNrGrr^rr rIs rIrHrCrJrrr"rrErPrG) rrOr*r8rHrrbrFrrsrKrr^r test_subclass_timetzs  zTestTimeTZ.test_subclass_timetzN)r9rMrNrrr`rgrhr2r%rkr:r*rnrrrrrwror}rrrr r_-s W "'  r_c@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zed%d&d'Zed(d)d*Zed(d+d,Zd-d.Zd/d0Zd1d2Zd3S)4TestDateTimeTZc Cs|ddddddd}||jd||jd||jd||jd||jd||jd||jd||j ddS)Nr"rFrBrHrCrJrE) rr*rrrKrrtrsrrr`rrr test_trivialszTestDateTimeTZ.test_trivialc sj|jdddtddd|jtdddddd td dd|k|k|k|||jdddddtddd|jd ddd d tddd||jdddddtddd|k|jdddddtd dd|k|jdddddtdddd|k|jdddddtdddd|k|jj|||tkWdn1s0YGdddt }|jddd|d|||ddd|Gdddt }|jd d d |d|jd d d tddd|t fdddS)Nr"rJrrrrrrrrIrFrBror)rrs)rrc@seZdZddZdS)z4TestDateTimeTZ.test_even_more_compare..NaivecSsdSr\rr`rrr rbrz>TestDateTimeTZ.test_even_more_compare..Naive.utcoffsetNrjrrrr NaivesrrCrJrEc@seZdZddZdS)z4TestDateTimeTZ.test_even_more_compare..BoguscSs tddS)NrrRrr`rrr rbsz>TestDateTimeTZ.test_even_more_compare..Bogus.utcoffsetNrjrrrr rsrcskSr\rrr'r(rr rrz7TestDateTimeTZ.test_even_more_compare..) rrOrrxr*rrrprqrr)r+rrrrr test_even_more_comparesN      (   z%TestDateTimeTZ.test_even_more_comparec Csd}|j|}tD],\}}}|||}||}|||q|||dtdd}|j|id|i}|jdddtdddd }tD]`\}}}|||}||}|||| |j t|| t dd || dq|||ddS) NrrFrrrr"rrrrR)rrrrr*rrrerOrzrrbrrcrirrr r2s$       zTestDateTimeTZ.test_picklingcCsgd}d}tdd}|j|id|i}|D]Z}tD]P}||dd}|||||jt||tdd||dq6q.dS) N)scdatetime datetime (S'\x07\xdf\x0b\x1b\x14;\x01\x01\xe2@' ctest.datetimetester PicklableFixedOffset (tR(dS'_FixedOffset__offset' cdatetime timedelta (I-1 I68400 I0 tRsS'_FixedOffset__dstoffset' NsS'_FixedOffset__name' S'cookie' sbtR.scdatetime datetime (U  ;@ctest.datetimetester PicklableFixedOffset )R}(U_FixedOffset__offsetcdatetime timedelta (JJ0 KtRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.scdatetime datetime U  ;@ctest.datetimetester PicklableFixedOffset )R}(U_FixedOffset__offsetcdatetime timedelta JJ0 KRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubR.)rrnrrrr"rrrrrrrR) rerr"r*rzrrbrrc)r+rhrrjrjr$rrrrr r%-s   z#TestDateTimeTZ.test_compat_unpicklec Csr|jdddtddd}t||jtdddddd td dd}t||jd d d td dd}|tt|dS) Nr"rJrrrrrrrrIrCrH)rrOr+rrprrrrr test_extreme_hashesRsz"TestDateTimeTZ.test_extreme_hashescCstdd}tdd}tdd}tddd d d |d }tddd d d |d }tddd dd |d }||j|||j|||j|||tdd||tdd||tdd||d||d||d|t|t||t|t||t|t|||||||||||t|d|t|d|t|dd}|t ||d|t ||d|t ||ddS)NrrrrrrarrBrqrErrrrorRz2002-03-19 07:47:00-05:00z2002-03-19 12:47:00+00:00z2002-03-19 13:47:00+01:00zdatetime.datetime(2002, 3, 19, z7, 47, tzinfo=est)z12, 47, tzinfo=utc)z13, 47, tzinfo=met)) rOrr*rrbrrcr+rr)r+rerrfr'r(r]r-rrr rg`s8      zTestDateTimeTZ.test_zonesc CsXtdd}tddd}tdddd|d }t||}||tddddddd|d dS NrrarrBrHrrrr)rOrrrrTr*)r+rfr-rrarrr r~s   zTestDateTimeTZ.test_combinec Csxtdd}|jddddddd|d }||tddd||tdddd||tdddd|d dSr)rOrr*rrrK)r+rfrarrr rs  zTestDateTimeTZ.test_extractc st|jtdd}j|d}|j||j||  || t fdd| t fdd| t fdd| t fdd| t fd d| t d | t d t d d d d|j|}||j|| |}||j|| || t fdd| ttddd}j|d|j|}}| |||jd d d tddd}|jtd dddddtddd} | |} | | |jj|jjt ddttd} ttd} |j| d| j| d| |jj|jjdS)Niz west 5:30rcsSr\rrr{nowawarerr rrz9TestDateTimeTZ.test_tz_aware_arithmetic..csSr\rrrrr rrcsSr\rrrrr rrcsSr\rrrrr rrcsSr\rr)rrr rrrr"ri.)rrSrcsSr\rr)r nowawareplusrr rrrIrZrandomtimezonerJrrrrrrti> rRrr)rr{rOrrrTrrrr*rKrprqrri randrangerbrrtrrr) r+Ztz55Z timeawareZ nowawareplus2rZtzrr9rjrrtZmaxdiffZtzaZtzbr)rr{rrr test_tz_aware_arithmeticsT        z'TestDateTimeTZ.test_tz_aware_arithmeticc Cs.|jj}|}tdd}||}||d}||j|j||tdd|t |d|jt |dd|jt ||d|t |||tdd d}ttd d d d dt td d d d fD]h}t dD]P}t |} || j|t j|d} | |} t| | tddkrqq|dqdS)NrP42rrRrrrjrrrr8rweirdtzrBrnrz0utcnow(), now(tz), or astimezone() may be broken)rr{rOrrr*rbrrprqrrrrrrrZfail) r+methr6off42anotheragainrrrr{rZnow2rrr test_tzinfo_nows.      zTestDateTimeTZ.test_tzinfo_nowcCs ddl}|jj}|}||}tdd}|||}|||d}||j|j||tdd| t ||d|j t ||dd|j t |||d| t ||||| t |d }t |} td d d } t| d d} | | } t || } || | j dddS)NrrPrrrRrrrrFi'rr)rrrrOrrr*rbrrprqrrr)r+rrrr6rrrrUZ utcdatetimerbrrjr9rrr test_tzinfo_fromtimestamps*        z(TestDateTimeTZ.test_tzinfo_fromtimestampcCs:|jj}|}tdd}|t|||jt||ddS)NrPrr)rrrOrprq)r+rr6rrrr test_tzinfo_utcnows  z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}|}||}tdd}|t||||jt|||ddS)NrrPrr)rrrrOrprq)r+rrrr6rrrr test_tzinfo_utcfromtimestamp s z+TestDateTimeTZ.test_tzinfo_utcfromtimestampc CshGdddt}|j}dD]\}}|ddddddd||d }|}|d|j|d|j|d|j|d|j|d|j|d|j |d |j |d|j |||j q| t|ddd|d d j||ddd|d d j d||ddd|d d j d| t|ddd|dd j| t|ddd|dd jdS)Nc@seZdZddZddZdS)z1TestDateTimeTZ.test_tzinfo_timetuple..DSTcSst|trt|d}||_dSrQrTrUrdstvaluer+rrrr r[0s  z:TestDateTimeTZ.test_tzinfo_timetuple..DST.__init__cSs|jSr\rr`rrr rd4sz5TestDateTimeTZ.test_tzinfo_timetuple..DST.dstNr9rMrNr[rdrrrr DST/sr))r")rr")rr)Nrr"r#rrnrbrrrrJrIrrH)rrrr*rrrrrrrrrrprqr)r+rr5rflagr-rrrr test_tzinfo_timetuple,s& ""z$TestDateTimeTZ.test_tzinfo_timetuplec sGdddt|j}|t|dddddjGfddd}dD]}|dd d d d d d|d|d}|}||j|j||j |j ||j |j |d|j |d|j||j|j|||j||tdddd|j|d|jqL|dd d d d d d}|}||dd|dd|d|jGddd}|dd d d d d d|d}|}||dd|dd|d|jGddd}|dd d d d d d|d}|t|j|ddddddd}tjtjtjfD]>}|j|d} || dd| tjddq |tddddd|dd} |t | j|t!ddd d!dd"|d#d} |t | j|jjtt"d} |t | j|jjtt" d} |t | jdS)$Nc@seZdZdddZddZdS)z-TestDateTimeTZ.test_utctimetuple..DSTrcSst|trt|d}||_dSrQrrrrr r[Rs  z6TestDateTimeTZ.test_utctimetuple..DST.__init__cSs|jSr\rr`rrr rdVsz1TestDateTimeTZ.test_utctimetuple..DST.dstN)rrrrrr rQs rr"rrcs"eZdZdfdd ZddZdS)z.TestDateTimeTZ.test_utctimetuple..UOFSNcs||t|d|_dSrQ)r[ruofs)r+rZdofsrrr r[_s z7TestDateTimeTZ.test_utctimetuple..UOFS.__init__cSs|jSr\)rr`rrr rbbsz8TestDateTimeTZ.test_utctimetuple..UOFS.utcoffset)NrArrrr UOFS^sr)rrrNrFrBr#rrnrbirnrorc@seZdZddZdS)z.TestDateTimeTZ.test_utctimetuple..NOFScSsdSr\rr`rrr rb|sz8TestDateTimeTZ.test_utctimetuple..NOFS.utcoffsetNrjrrrr NOFS{src@seZdZddZdS)z.TestDateTimeTZ.test_utctimetuple..BOFScSsdS)Nrrr`rrr rbsz8TestDateTimeTZ.test_utctimetuple..BOFS.utcoffsetNrjrrrr BOFSsrrrrri+rrJrrrrrrI)#rrrprurbZ utctimetupler*rrrrrKrrrrsrrrrrrrrrqrrrrtrrrrGrr) r+r5rrr-rrrrZdtzrJZhugerrr test_utctimetuplePs\   z TestDateTimeTZ.test_utctimetuplec Cstdd}tdd}tdd}tdd}|j}d}d||||fD]}d D]}|d d d d dd||d} d|rndppd} |dur| pd} | | } | } || |d| || | d|| d|d| || d|d| |t| |d| qHq@dS)Nrrz+03:40iz-03:51rz 0001-02-03)riyr"rFrBrHrCrrz04:05:59z.987001rXkuሴr)rOrrcrr*r)r+rZplusZminusunknownr5ZdatestrZofsr r-ZtimestrZofsstrZtailstrZisorrr test_tzinfo_isoformats$    z$TestDateTimeTZ.test_tzinfo_isoformatc Cs6|j}tdd}ttddd}dddd d d d |g}||}|||d }dddddddd|ffD]L\}}|dd} || |<|| } |jfi||i} || | |d7}qh||d|jdd} || j|| | j|d} ||| ||j| j|ddd}|j t |jdddS)Nr#rlrmrRrnr"rFrBrHrCrJrErr/r0r1rrrrrrrrrr2rorprrr r:s>          zTestDateTimeTZ.test_replacecCsDtdd}tdd}ttdd d}|jj|d}||j||t|j|||j}||j|| | | | | | ||}||j|| | tdd|| }|| |7}|j |d }| | | | | | | ||||j|j| ||dS) NNonerZ44rCrZm300rrr)rOrrr{rrrprrr*rrrbrrK)r+ZfnoneZf44mZfm5hrarr9rjrrr test_more_astimezones*      z#TestDateTimeTZ.test_more_astimezonercCs4|jtj}||d||||dSr\)rr{rrr*rr`rrr test_astimezone_default_utcsz*TestDateTimeTZ.test_astimezone_default_utcrcCs|jdddddtjd}|}|||||dd|jdddd dtjd}|}|||||dd dS) Nr;rnrHrJrnrrz -0500 ESTrCz -0400 EDT)rrrrr*r)r+rarrrr test_astimezone_default_easterns  z.TestDateTimeTZ.test_astimezone_default_easterncCs8tddddtjd}|}|}||j|jdS)Nrrnr"rCr)rrrrr*r)r+rrrBrrr !test_astimezone_default_near_fold sz0TestDateTimeTZ.test_astimezone_default_near_foldc Cs|j}Gdddt}|ddddddd |d }|jd d }|jdd }|jdd }|||fD]:}|||fD]*}||} t|j|jd } || | qlq^|ddddddd }|jd |d}|jd|d}|jd|d}|||fD]}|||fD]}||} ||us||ur4||us*||ur4td} nF||urL|urZnn td} n ||urptdd } n tdd } || | qqdS)Nc@seZdZddZdS)zBTestDateTimeTZ.test_aware_subtract..OperandDependentOffsetcSs$|jdkrt|jdStddSdSrXrYrrrr rbs  zLTestDateTimeTZ.test_aware_subtract..OperandDependentOffset.utcoffsetNrjrrrr rZsrZr~rAr#rnrrorrrBr3rRr[rir)rrrrrtr*) r+r5rZr6r\rgrrrr9rjrrr test_aware_subtracts4    (     z"TestDateTimeTZ.test_aware_subtractcCstddddddd}tddddddd}||||jdd}||||jtdd d}||||jtd d d}|||Gd d d t}|}|j|d}|j|d}||td d||tdd||||j|d}|||kdS)Nr"rFrBrHrCrJrErrrc@seZdZddZddZdS)z1TestDateTimeTZ.test_mixed_compare..VariescSstdd|_dSrqrFr^rrr r[Msz:TestDateTimeTZ.test_mixed_compare..Varies.__init__cSs|jtdd7_|jSrrrsrrrr rbOsz;TestDateTimeTZ.test_mixed_compare..Varies.utcoffsetNrArrrr rtLsrtrrRr) rr*rrOrrrbrrxrurrr r*@s$        z!TestDateTimeTZ.test_mixed_comparec sGfdddj}ddddddd td d d f}j|}||id di}|j||jd|jd|||d|j|j ddS)Ncs$eZdZdZfddZddZdS)z2TestDateTimeTZ.test_subclass_datetimetz..CrPcs6|}|d}jj|g|Ri|}||_|Sr>r?rAr^rr rcs  z:TestDateTimeTZ.test_subclass_datetimetz..C.__new__cSs||j|jSr\)rrrDrrr rFjsz:TestDateTimeTZ.test_subclass_datetimetz..C.newmethNrGrr^rr rI`s rIrrrrHrCrJr|rrr"rrErPrG) rrOr*r8rHrrbrFrrrKrr^r test_subclass_datetimetz^s  z'TestDateTimeTZ.test_subclass_datetimetzN)r9rMrNrrrrr2r%rrgrrrrrrrrrrr:rr r"rrrrr*rrrrr r~s8 E%A%#  $P'   ,r~cCs d|}|r|t|7}|S)NrJ)rr)raZ days_to_gorrr first_sunday_on_or_afterzs  rrRrrrHrFrc@s4eZdZddZddZddZddZd d Zd S) USTimeZonecCs"t|d|_||_||_||_dSNrr stdoffsetreprnamestdnamedstnamer+rrrrrrr r[s zUSTimeZone.__init__cCs|jSr\rr^rrr r_szUSTimeZone.__repr__cCs||r|jS|jSdSr\rdrrr`rrr rcs zUSTimeZone.tznamecCs|j||Sr\rrdr`rrr rbszUSTimeZone.utcoffsetcCsf|dus|jdurtSttj|jd}ttj|jd}||jddkrV|kr^nntStSdSNr2r)rrrDSTSTARTrrDSTENDrr+rarEendrrr rds zUSTimeZone.dstNr9rMrNr[r_rcrbrdrrrr rs rrrrrrKCentralZCSTZCDTrGMountainZMSTZMDTiPacificZPSTZPDTri0ZUTCfakec@sdeZdZeddddZeddddZeZdd Zd d Zd d Z ddZ ddZ ddZ ddZ dS)TestTimezoneConversionsrrHrErFr#rr"c Cs||t||||||}||}||kr|jdkr||t|||t|||||n ||||t}||} ||kr|jdkr|| |jdd|t7}||} || |jddn|| |tdS)NrFrr"r2)r*rdrrrrrr) r+rarrdstondstoffasutcthere_and_backZ nexthour_utcZ nexthour_tzrrr checkinsides&      z#TestTimezoneConversions.checkinsidecCsF||t||||||}||}|||dSr\)r*rdrr)r+rarrrrrrr checkoutsides   z$TestTimezoneConversions.checkoutsidec Cs|jj|d}|jj|d}tddtttddtddfD]p}||||||||||fD]}||||||qb||||||||fD]}||||qq.okcSstSr\rr`rrr rbirz.ok.utcoffsetcSstSr\rr`rrr rdjrz6TestTimezoneConversions.test_bogus_dst..ok.dstNrrrrr okhsrrc@seZdZddZdS)z5TestTimezoneConversions.test_bogus_dst..notokcSsdSr\rr`rrr rdrrz9TestTimezoneConversions.test_bogus_dst..notok.dstNr9rMrNrdrrrr notokqsrc@seZdZddZdS)z.tricky_notokcSs|jdkrdSdtSdS)Nrr#)rrr`rrr rdzs z@TestTimezoneConversions.test_bogus_dst..tricky_notok.dstNrrrrr tricky_notokysrrr")rrr{rrrrpr)r+rr{rrrarrr test_bogus_dstgs z&TestTimezoneConversions.test_bogus_dstc Cs|ttjtjtd}|ttj||jtd}t|}| |j t|ttj|||ttjt Gdddt }|dddd}|jjdtd }|j|d}d D]}|j|d }|d kr|td d8}t|} | || ||j}||} | || |jtd|} | || |t7}|t7}q|jjdtd }|j|d}dD]v}|j|d }t|} | || ||j}||} | || |jtd|} | || |t7}|t7}qbdS)Nrc@seZdZddZdS)z.FauxUSTimeZonecSs ||jSr\)rr`rrr rszDTestTimezoneConversions.test_fromutc..FauxUSTimeZone.fromutcNr9rMrNrrrrr FauxUSTimeZonesrrFEasternZFESTZFEDTrHr)rrr"rBrHrCr2rr"r)rr"r"rFrBrH)rprqrrrrrrrr*rrrrrrrrrr) r+r{ZenowrrrEZfstartZwallrjr9rrr rsL                   z$TestTimezoneConversions.test_fromutcN)r9rMrNrrrrrrrrrrrrrrr rs4 3rc@s$eZdZddZddZddZdS)Oddballscsttt|k|k|k|k|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfd d| d j d d d }j |d }| |dt jjj }| || |tjjj ddd}| || |dS)NcskSr\rrZas_dateZ as_datetimerr rrz+Oddballs.test_bug_1028306..cskSr\rrrrr rrcskSr\rrrrr rrcskSr\rrrrr rrcskSr\rrrrr rrcskSr\rrrrr rrcskSr\rrrrr rrcskSr\rrrrr rrTr"r)rKFr)rrrrTrrxrrprqr*__eq__rKrrrrr)r+Z different_dayZ as_differentZdate_scZ datetime_scrrr test_bug_1028306s4      zOddballs.test_bug_1028306c Cs^tttttttfD]4}|t d|_ Wdq$1sN0Yq$dSrM) rrrrrrrrrpAttributeErrorr$)r+rrrr test_extra_attributess zOddballs.test_extra_attributesc CsGddd}tdtd|dfD]Z}|t<|tdddddddt|||||||Wdq(1sx0Yq(|tdtdddWdn1s0Y|d}|tdtdd|Wdn1s0YGd d d t}|d}|td tdd|Wdn1sD0Y| ttd ddWdn1s|0Y| ttdd dWdn1s0Y| ttddd Wdn1s0Y| ttdddd Wdn1s&0Y| t tddddd Wdn1sb0Y| t"tdddddd Wdn1s0Y| t$tddddddd Wdn1s0YdS) Nc@seZdZddZddZdS)z-Oddballs.test_check_arg_types..NumbercSs ||_dSr\value)r+rrrr r[sz6Oddballs.test_check_arg_types..Number.__init__cSs|jSr\rr^rrr __int__sz5Oddballs.test_check_arg_types..Number.__int__N)r9rMrNr[rrrrr Numbersrr#z10.9z)^an integer is required \(got type str\)$Z10g%@z)^__int__ returned non-int \(type float\)$c@s eZdZdS)z,Oddballs.test_check_arg_types..FloatNr`rrrr Float srz&^integer argument expected, got float$g$@) decimalZDecimalZ assertWarnsDeprecationWarningr*rrrqrrp)r+rxxZf10rZs10rrr test_check_arg_typess@ $**, , , , . 0 2 zOddballs.test_check_arg_typesN)r9rMrNrrrrrrr rs% rc@seZdZddZdS)tzinfo2cCst|tstd|j|ur$td|jdd}|jdd}|dus`|dus`|durdt||kr||}|}||kr|S||fD]@}||}||kr|S|jdd}||kr|SqtddS)*datetime in UTC -> datetime in local time.&fromutc() requires a datetime argumentdt.tzinfo is not selfrrr"NzNo suitable local time found)rTrrqrrrrbrd)r+raZoff0Zoff1ldtZoffrrr r's*       ztzinfo2.fromutcNrrrrr r%src@s4eZdZddZddZddZddZd d Zd S) USTimeZone2cCs"t|d|_||_||_||_dSrrrrrr r[Is zUSTimeZone2.__init__cCs|jSr\rr^rrr r_OszUSTimeZone2.__repr__cCs||r|jS|jSdSr\rr`rrr rcRs zUSTimeZone2.tznamecCs|j||Sr\rr`rrr rbXszUSTimeZone2.utcoffsetcCs|dus|jdurtSttj|jd}ttj|jd}|jdd}|t|kr^|krfnntS||kr~|tkrnn|jrtStS||kr|tkrnn|jrtStStSdSr) rrrrrrrrrrrrr rd[s zUSTimeZone2.dstNrrrrr rGs rEastern2Central2 Mountain2Pacific2c@s<eZdZddZddZddZddZd d Zd d Zd S)Europe_Vilnius_1941cCs$tdddd|dtdddd|dgS)NrJrrmrrrr^rrr _utc_foldszEurope_Vilnius_1941._utc_foldcCs$tdddd|dtdddd|dgS)NrrJrrrrrr^rrr _loc_foldszEurope_Vilnius_1941._loc_foldcCs>|\}}||krdtS||kr6|jr.dndtSdtS)NrBrFrrrr+raZ fold_startZ fold_stoprrr rbs  zEurope_Vilnius_1941.utcoffsetcCs>|\}}||krdtS||kr6|jr.dndtSdtS)Nrr"rrrrr rds  zEurope_Vilnius_1941.dstcCs.|\}}||krdS||kr*d|jSdS)NMSK)rCESTr)rrrrrr rcs   zEurope_Vilnius_1941.tznamecCsV|jdkrt|\}}||kr.|dtS||krJ|dtjddS|dtS)NrrBrFr"r)rrurrrrrrr rs   zEurope_Vilnius_1941.fromutcN) r9rMrNrrrbrdrcrrrrr rs    rc@seZdZddZddZddZddZd d Zd d Zd dZ e dddZ e dddZ ddZe dddZe dddZe dddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/S)0TestLocalTimeDisambiguationc Cst}tddddddtjd}||}||dd||jd || tdddd tjd}||}||dd ||jd | | tdddd tjd}||}||dd||jd | | dS)NrrJrrrrz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rrmz"Mon Jun 23 23:00:00 1941 CEST+0200r"rz"Tue Jun 24 00:00:00 1941 CEST+0200) rrrrrr*rrrrdrx)r+Vilniusgdtrrrr test_vilnius_1941_fromutcs,      z5TestLocalTimeDisambiguation.test_vilnius_1941_fromutcc Cst}tdddddd|d}|tj}||ddtdddddd|d}|tj}||dd tdddddd|d d }|tj}||dd tddd d|d}|tj}||dddS)NrrJrrrrz%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr")rrzMon Jun 23 21:59:59 1941 UTCrrzMon Jun 23 22:00:00 1941 UTC)rrrrrr*r)r+rrrrrr test_vilnius_1941_toutcs*        z3TestLocalTimeDisambiguation.test_vilnius_1941_toutccCsxtddd}tddddd}||jd||jd|t"tddddddWdn1sj0YdSNrr"r)rrr*rrprqr+rrarrr test_constructorss   z-TestLocalTimeDisambiguation.test_constructorscCs@tddddd}|}||jd|}||jddS)Nr"r)rrr*rrK)r+rarrrr test_members z'TestLocalTimeDisambiguation.test_memberc Cstd}tddd}||jddjd||jddjd||jddjd||jddjd|jdtd}|jdtd}||jddjd||jddjd|t|jddWdn1s0Y|t|jddWdn1s0Y|t"|dddddWdn1sV0Y|t*|ddddddddd Wdn1s0YdS)Nrr"r)rrrrF) rrr*rrrrprrqrrrr r:s$  * , 2 z(TestLocalTimeDisambiguation.test_replacecCs@td}tddd}|||jdd|||jdddSr)rrr*rrrrr rs z+TestLocalTimeDisambiguation.test_comparisoncCsPtd}tddd}|t|t|jdd|t|t|jdddSr)rrr*r+rrrrr test_hashs z%TestLocalTimeDisambiguation.test_hashrcCs<d}t|}t|d}||jd||jddS)NiXUTr rr")rrr*r)r+rBdt0rrrrr r s  z.TestLocalTimeDisambiguation.test_fromtimestampzAustralia/Lord_HowecCsltd}td|dkr$|dd}t|}t|d}|||||jd||jddS) NA%Z%z LHST+1030>Australia/Lord_Howe timezone is not supported on this platformiUrr")rrrr:rrr*r)r+tmrBrr'rrr test_fromtimestamp_lord_howe(s    z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs|tdjddSr)r*rrrr^rrr %test_fromtimestamp_low_fold_detection8szATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tddddd}|jdd}||d|dS)NrlrnrFr"rnrr )rrr*rU)r+r rrrrr test_timestamp=s  z*TestLocalTimeDisambiguation.test_timestampcCshtd}td|dkr$|dtddddd }|jd d }|jdd }||d |dS) Nr r r rrrHrCr"rrrr)rrrr:rrrUr*)r+rrs0s1rrr test_timestamp_lord_howeDs  z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tddddd}|jdd}|}|}||d||d||t|||jd ||jd dS) NrlrnrFr"rnrrrr)rrrr*rcrr)r+r rrZadt0Zadt1rrr rNs z+TestLocalTimeDisambiguation.test_astimezonec Csztdd}tddddd}tD]V\}}}||fD]B}|||}||}|||||dkrfdn|j|jq0qdS)Nr"rrHr)rrrrrr*r) r+rrarrrrrBrrrr test_pickle_fold]s     z,TestLocalTimeDisambiguation.test_pickle_foldcCs>tdd}tddddd}|t|d|t|ddS)Nr"rzdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))rrr*rrrrr rgs   z%TestLocalTimeDisambiguation.test_reprc Cs tddddtdtj}tddddtd}||t||t||jddt||jddtdD]@}tdddd|td}||t||jddtq~dD]@}tdd d d|td}||t||jddtqdS) Nrr#rr"rrFrrrHrE) rrrrDr*rdrrr)r+ dt_summer dt_winterrtrarrr rnsz$TestLocalTimeDisambiguation.test_dstcCstddddtdtj}tddddtd}||dt||dt||jdd dt||jdd dtdS) Nrr#rr"rrFrIrr)rrrrDr*rbrr)r+rrrrr rs z*TestLocalTimeDisambiguation.test_utcoffsetc Csttddddtdtj}tddddtd}t|}t|}|||dt|||dt||jd ||jd tddddd td}t|}|t7}t|}|||||jd ||jd tdddd d td}t|}||j|j fd tddddd td}t|}||j|j fd tddddd td}t|}||j|j fddS)Nrr#rrJrrErHrCrrnr")rrm)rr"rF)rJrm) rrrrDrr*rrrKr) r+Zu_summerZu_winterZt_summerZt_winterrrr'rrrr rs0        z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd}|||tjtdddtd}|||tjdS)Nrr"rrJ)rrr*rrrrrrr test_mixed_compare_regularsz6TestLocalTimeDisambiguation.test_mixed_compare_regularcCs<tdddddtd}|tj}||||||dS)Nrr#rr"rrrrrrrr)r+t_foldZ t_fold_utcrrr test_mixed_compare_folds  z3TestLocalTimeDisambiguation.test_mixed_compare_foldcCs<tdddddtd}|tj}||||||dS)NrrHrErFrrr)r+t_gapZ t_gap_utcrrr test_mixed_compare_gaps  z2TestLocalTimeDisambiguation.test_mixed_compare_gapcCstdddtd}|t|t|jddtdddddtd}tdd d d dtd}|t|t|jdd|t|t|jdddS) Nrr"rrrr#rrrHrErF)rrr*r+r)r+rrrrrr test_hash_awares z+TestLocalTimeDisambiguation.test_hash_awareN)r9rMrNrrrrr:rr r r"rrrrrrrrrrrrrrr rrrr rs6       !rcCs"t|\}}t|dt||Sr\)rwteenextr)iterabler r rrr pairss r$c@seZdZdZddZeddZeddZedd Z e d d d  Z d d Z ddZddZddZddZed(ddZed)ddZddZddZed*d d!Zd"d#Zd$d%Zd&d'ZdS)+ZoneInfoz/usr/share/zoneinfocCs||_||_||||_dS)z :param ut: array Array of transition point timestamps :param ti: list A list of (offset, isdst, abbr) tuples :return: None N)uttiinvertr)r+r&r'rrr r[s zZoneInfo.__init__cCstd|td|f}|r|ddt}|dd|7<|dd|7<tdt|D]H}|d|||ddt7<|d|||dt7<q^|S)Nr{rr")rSECrr,)r&r'rrZr rrr r(s$"zZoneInfo.invertc CsH|ddkrtd|dtd}||dtjdkrJ|td}|||dtjdkrt|td }|||dg}t |d D]}| t d |d q||d }t |D]:\}\}} } || |d| } td|| | f||<qdgt|} t |D]\}} || | |<q"||| }|S)NrHZTZifznot a zoneinfo fileror rBr rrr"z>lbbrJrF)readdecoderseekrfromfiler7 byteorderbyteswaprrstructunpackrfindrr,)r5fileobjcountsr&Z type_indicesZttisr ZabbrsZgmtoffisdstZabbrindabbrr'idxr+rrr r-s2     zZoneInfo.fromfilecCsHtj|j|}t|d}||WdS1s:0YdS)Nrb)ospathjoinzonerootopenr-)r5r5r:rrrr fromnames zZoneInfo.fromnamer,r"cCst|tstd|j|ur$td||jd|jd|jd|j }||j dkrn|j d}d}nPt |j |}|j |d|\}}|d|d}|td||j |dk}||d7}|r|jdd S|Sd S) rrrrr rr"rrFrN)rTrrqrrr EPOCHORDINALrrtrsr&r'bisect bisect_rightrr)r+rarUZttirr7Ztti_prevshiftrrr rs,     zZoneInfo.fromutccCs\||jd|jd|jd|j}|j|j}t||}|j t d|d|S)Nrr rrr") rr?rrtrsrrr@rAr'rt)r+rar rUrr7rrr _find_ti;s  zZoneInfo._find_ticCs ||dSrrCr`rrr rbEszZoneInfo.utcoffsetcCs||d}|rtStSrM)rCrr)r+rar5rrr rdHs z ZoneInfo.dstcCs ||dS)NrFrDr`rrr rcPszZoneInfo.tznameNccs|dur|j}tj|d}z t|}Wnty<YdS0|>|D](}|}|rH|dsH|dVqHWdn1s0YdS)Nzzone.tab#rF) r<r9r:r;r=rstripr3r)r5ZzonedirZzone_tabrlinerrr zonenamesSs  zZoneInfo.zonenamescCsd}}}}tj}}t}} tj} } d} } tj}}d}}t|dd}|D]}|d7}||}|D]\}}||krqx|tkr|d7}||f|| fkr|}|} |} |tj|f|tj| fkr|}|} |} qx|tkrB|d7}| }||f| |fkr|} |}|}|tj|f|tj|fkrJ|}|}|}qx|d7}qxqZ|||f}td|tdt |f|td|| | ftd|| | ftd|||ftd| ||fdS) Nrr"zNumber of zones: %5dz@Number of transitions: %5d = %d (gaps) + %d (folds) + %d (zeros)z!Min gap: %16s at %s in %sz!Max gap: %16s at %s in %sz!Min fold: %16s at %s in %sz!Max fold: %16s at %s in %s) rrtrrrrHr> transitionsprintrZ)r5 start_yearcountZ gap_countZ fold_countZ zeros_countZmin_gapZmin_foldZmax_gapZmax_foldZmin_gap_datetimeZmax_gap_datetimeZ min_gap_zoneZ max_gap_zoneZmin_fold_datetimeZmax_fold_datetimeZ min_fold_zoneZ max_fold_zoneZ stats_sincezonenamerrarBZ trans_countsrrr statsbsZ           zZoneInfo.statsccsHtt|j|jD]0\\}}\}}|d|d}t||fVqdSr)r$rr&r'rrr+_Zprev_tirr'rBrrr rIs"zZoneInfo.transitionsccsntt|j|jD]V\\}}\}}|d|d}|tkr|d|dkrt|| |d|dfVqdS)zLFind all folds with the same value of isdst on both sides of the transition.rr"rFN)r$rr&r'rrrrOrrr nondst_foldss"zZoneInfo.nondst_foldsFc Csnd}|D]\}||}|D]D\}}}} |j|ks"|rF|| krFq"|d7}td|||||| fq"q dS)Nrr"z%3d) %-30s %s %10s %5s -> %s)rHr>rQrrJ) r5Z same_abbrrKrLrMrrarBZ prev_abbrr6rrr print_all_nondst_foldss  zZoneInfo.print_all_nondst_foldsccs*|D]\}}|tkr|| fVqdSr\rIrr+rrBrrr foldsszZoneInfo.foldsccs(|D]\}}|tkr||fVqdSr\rSrTrrr gapssz ZoneInfo.gapsccs |D]\}}|s|VqdSr\)rIrTrrr zerosszZoneInfo.zeros)N)r")Fr")r9rMrNr<r[r\r( classmethodr-r>rrr?rrCrbrdrcrHrNrIrQrRrUrVrWrrrr r%s2   $    0 r%c@s8eZdZdZddZddZddZdd Zd d Zd S) ZoneInfoTestzAmerica/New_Yorkc Csxtjdkr|dtjdkr(|dzt|j|_Wn8tyr}z |d|j|fWYd}~n d}~00dS)NZvxworksz"Skipping zoneinfo tests on VxWorksrz"Skipping zoneinfo tests on WindowszSkipping %s: %s)r7r$r:r%r>rMrFileNotFoundError)r+errrrr rs    zZoneInfoTest.setUpcCs<||jdd|jt|jf|jdd|jt|jfdS)Nr)r*rridr)r+r r rrr assertEquivDatetimessz!ZoneInfoTest.assertEquivDatetimesc Cs|j}|D]\}}d|d||tjfD]}||}||j|d}||jd|jtj d |}| ||| }||jdd||| | tj |jtj dq.tj |fD]0}||}|j|d}||}||jdqqdS)Nrrrr") rrUrrDrrr*rrrrr]rb r+rrarBrudtrZadtrbrrr test_foldss$    zZoneInfoTest.test_foldsc Cs.|j}|D]\}}d|d||tjfD]}||}|j|d}||}||jd|jtj d |}| ||| }||jdd|jdd|||j|d||}| |jdd |jdd d|q0tj |fD],}||}||j|d}||jdqqdS)Nrrrr"rzAt %s.)rrVrrDrrr*rrrrr]rbZ assertLessr^rrr test_gapss(    zZoneInfoTest.test_gapsc Csd|jvs|jdr&|d|j|j}tjd}|jtjd<z4t| D]\}}|j dkrpqR|t dddt }|t }dd d d |d|d |d fD]J}||}t |} t ||jdd} || | | } ||| q|d krXt ||d} | } | jdd}|| ||d||||dqXW|durhtjd=n |tjd<tn(|durtjd=n |tjd<t0dS)NZRiyadh8zright/z Skipping %sTZir,r"iirri@i2rrFr)rMr3r:rr9environgetrtzsetrIrrr)rrr]rUr*)r+rrbr_rBrryrrBZsdtZtzdtrraZts0Zts1rrr test_system_transitionssJ             z$ZoneInfoTest.test_system_transitionsN) r9rMrNrMrr]r`rarfrrrr rYs  rYcseZdZfddZZS)ZoneInfoCompleteTestcshg}tdrXtD]B}td|tfi}||_t|D]}|dr8|||q8qt |dS)NZtzdatazZoneInfoTest[%s]Ztest_) r r%rHrrYrMr-r3rsuperr[)r+rhr5ZTestmethodr8rr r['s   zZoneInfoCompleteTest.__init__)r9rMrNr[ __classcell__rrrjr rg&srgc@seZdZdZdS)IranTestz Asia/TehranN)r9rMrNrMrrrr rl3srlc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+S),CapiTestcCs$|jjdr|dtdS)NZPurezNot relevant in pure Python)r8r9r4r: _testcapiZtest_datetime_capir^rrr r8s zCapiTest.setUpc CsRdD]H}t|}|j|d||tjWdq1sB0YqdS)NTF) use_macro)rnZget_timezone_utc_capirrrr)r+rpZcapi_utcrrr test_utc_capiAs zCapiTest.test_utc_capic Cst\}}}ttddd}ttdd}d||fd||fd||fg}|D]\}}} |j|d||| tdd d |d } tdd d | d } || | || | tdd d d tjd } || tj| WdqL1s0YqLdS) Nrrrest_capi est_macro est_macro_nn)r5rrFrHrrC) rnZmake_timezones_capirrrr*rrcrr) r+rrrsrtZ exp_namedZ exp_unnamedcasesr5Ztz_actZtz_exprrrrrrr test_timezones_capiHs   zCapiTest.test_timezones_capic CsGdddt}t|fD]~}dD]t}||}|j||dJt|\}}}|||j|||j|||jWdq 1s0Yq qdS)Nc@s eZdZdS)z=CapiTest.test_PyDateTime_DELTA_GET..TimeDeltaSubclassNr`rrrr TimeDeltaSubclasscsrw)r7韆rxr5r)rrrnZPyDateTime_DELTA_GETr*rrr)r+rwklassrr-rrrrrr test_PyDateTime_DELTA_GETbs z"CapiTest.test_PyDateTime_DELTA_GETc CsGdddt}t|fD]~}dD]t}||}|j||dJt|\}}}|||j|||j|||jWdq 1s0Yq qdS)Nc@s eZdZdS)z2CapiTest.test_PyDateTime_GET..DateSubclassNr`rrrr raqsra))rr"rF)r;rFrr{)rrrnZPyDateTime_GETr*rrrK)r+rar|rr-rrrKrrr test_PyDateTime_GETps zCapiTest.test_PyDateTime_GETc CsGdddt}t|fD]}dD]}||}|j||dZt|\}}}}|||j|||j|||j|||jWdq 1s0Yq qdS)Nc@s eZdZdS)z;CapiTest.test_PyDateTime_DATE_GET..DateTimeSubclassNr`rrrr rmsrm)r~rrrryrzrr{) rrrnZPyDateTime_DATE_GETr*rrtrsr) r+rmr|rr-rrtrsrrrr test_PyDateTime_DATE_GET~s z!CapiTest.test_PyDateTime_DATE_GETc CsGdddt}t|fD]}dD]}||}|j||dZt|\}}}}|||j|||j|||j|||jWdq 1s0Yq qdS)Nc@s eZdZdS)z7CapiTest.test_PyDateTime_TIME_GET..TimeSubclassNr`rrrr r4sr4)rrnrr#rr{) rrrnZPyDateTime_TIME_GETr*rrtrsr) r+r4r|rr-rrtrsrrrr test_PyDateTime_TIME_GETs z!CapiTest.test_PyDateTime_TIME_GETcCst\}}}|jdd||tjWdn1s>0Y|jdd||tjWdn1sx0Y|jddz||tjttddd}|||t dd d |d }t dd d |d }||||| | Wdn1s0YdS) Nutc0)Ztestnameutc1non_utcrrrrrFrHr) rnZget_timezones_offset_zerorrrrrrr*rrc)r+rrrZ non_utc_exprrrrrr test_timezones_offset_zeros,,  z#CapiTest.test_timezones_offset_zeroc Cs Gdddt}tddd}|ddd}tddd}tj}||||||||||||d|||d|||dttddtdt j t ddg}|D]L}d D]B}|j ||d  ||||Wdq1s0YqqdS) Nc@s eZdZdS)z.CapiTest.test_check_date..DateSubclassNr`rrrr rasrar"T 2011-01-01rrroargexact) rrrnZdatetime_check_daterxrrrrrrrr) r+rar-ZdsraZis_daterrrrrr test_check_dates$    zCapiTest.test_check_datec CsGdddt}tdd}|dd}tj}|||||||||d|||dttddtdtj t dddg}|D]L}d D]B}|j ||d  ||||Wdq1s0YqqdS) Nc@s eZdZdS)z.CapiTest.test_check_time..TimeSubclassNr`rrrr r4sr4rrnTr"rrror) rrnZdatetime_check_timerxrrrrrrrr)r+r4rrZis_timerrrrrr test_check_times   zCapiTest.test_check_timec CsGdddt}tddddd}|ddddd}tj}|||||||||d|||dttddtdtj t dddg}|D]L}d D]B}|j ||d  ||||Wdq1s0YqqdS) Nc@s eZdZdS)z6CapiTest.test_check_datetime..DateTimeSubclassNr`rrrr rmsrmrr"rrnTrror) rrnZdatetime_check_datetimerxrrrrrrrr)r+rmrarZ is_datetimerrrrrr test_check_datetimes zCapiTest.test_check_datetimec CsGdddt}td}|d}tj}|||||||||d|||dttddtjt dddt dddg}|D]L}dD]B}|j ||d ||||Wdq1s0YqqdS) Nc@s eZdZdS)z4CapiTest.test_check_delta..TimeDeltaSubclassNr`rrrr rwsrwr"Trrror) rrnZdatetime_check_deltarxrrrrrrrr)r+rwrZtdsZ is_timedeltarrrrrr test_check_deltas zCapiTest.test_check_deltac CsGdddt}t}|}ttdd}tj}||||||||||||d|||d|||dttddt dddt dddg}|D]L}d D]B}|j ||d  ||||Wdq1s0YqqdS) Nc@s eZdZdS)z2CapiTest.test_check_tzinfo..TZInfoSubclassNr`rrrr TZInfoSubclasssrrrTr"rrror) rrrrnZdatetime_check_tzinforxrrrrrr) r+rrZtzisrZ is_tzinforrrrrr test_check_tzinfos$ zCapiTest.test_check_tzinfoc Cshtddd}dD]R}|j|d2t||j|j|j}|||Wdq1sX0YqdS)Nrr~rFTmacro)rrrnZget_date_fromdaterrrKr*r+exp_dater c_api_daterrr test_date_from_date:s zCapiTest.test_date_from_datec Cstddddddd}dD]b}|j|d Bt||j|j|j|j|j|j |j }| ||Wdq1sp0YqdS) Nrr~rrrryrzrr) rrrnZget_datetime_fromdateandtimerrrKrrtrsrr*rrrr test_datetime_from_dateandtimeGs z'CapiTest.test_datetime_from_dateandtimecCstddddddd}dD]}d D]x}|j||d Vt||j|j|j|j|j|j |j |j }| ||| |j |j Wdq 1s0Yq qdS) Nrr~rrrryrzrr"rrr) rrrnZ#get_datetime_fromdateandtimeandfoldrrrKrrtrsrrr*)r+rrrrrrr %test_datetime_from_dateandtimeandfoldXs" z.CapiTest.test_datetime_from_dateandtimeandfoldc Csntdddd}dD]V}|j|d6t||j|j|j|j}|||Wdq1s^0YqdS)Nrrryrzrr) rrrnZget_time_fromtimerrtrsrr*)r+exp_timer c_api_timerrr test_time_from_timelszCapiTest.test_time_from_timec Cstdddd}dD]v}dD]l}|j||dJt||j|j|j|j|j}| ||| |j|jWdq1s|0YqqdS)Nrrryrzrrr) rrrnZget_time_fromtimeandfoldrrtrsrrr*)r+rrrrrrr test_time_from_timeandfoldzs z#CapiTest.test_time_from_timeandfoldc Cshtddd}dD]R}|j|d2t||j|j|j}|||Wdq1sX0YqdS)Nrryrzrr)rrrnZget_delta_fromdsurrrr*)r+Z exp_deltarZ c_api_deltarrr test_delta_from_dsus zCapiTest.test_delta_from_dsuc Csntddd}dD]T}|j|d4tt||}||tdddWdq1s^0YqdS)NrHrrr)rrUrrnZget_date_fromtimestamprUr*r)r+rrr-rrr test_date_from_timestamps z!CapiTest.test_date_from_timestampc Csdddttdddfddd ttdddfg}tj}|D]z}d D]p}|j||d N|\}}}t|d |i}t|} || |||} ||| WdqB1s0YqBq:dS) N)rrHrNF)rNTrr"rT)rrHrrrnNF)rNTrr)caserr) rrrnZget_datetime_fromtimestamprrrUrUr*) r+rurrrZdtuprZusetzZdt_origrrmrrr test_datetime_from_timestamps    z%CapiTest.test_datetime_from_timestampN)r9rMrNrrqrvr}r~rrrrrrrrrrrrrrrrrrrr rm7s*    rmcCs|t|Sr\)ZaddTestrg)loaderZstandard_testspatternrrr load_testss r__main__)lrrtrwr@rrr7r9rrirr0r#roperatorrrrrrrr r r testr Z test.supportr rrrrr)rrrrrrrrrnrr_loadsr"rrrr5rrNrZTestCaser'rOrerhrkrrrrrrrrr%r'r(r:r_r~rrrrrrrrrrrrrrrrrrrrrrrrr)r$r%rYZ TestSuitergrlrmrr9mainrrrr s ,       8_A3=!c]"<   *  c"32 gk