%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/lib/python3.8/test/__pycache__/
Upload File :
Create Path :
Current File : //usr/local/lib/python3.8/test/__pycache__/datetimetester.cpython-38.pyc

U

n©ßa[¿ã@sždZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZddl
mZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddlZddlm Z m!Z!ddlm"Z"dd	lm#Z#dd
lm$Z$ddlm%Z%ddlm&Z&mZddl$Z'ddl(Z(ddl)Z)ej*ej+hZ,d
d„e-ej.dƒDƒZ/e0e/ƒej.dksdt1‚dddigdfZ2e3dƒZ4e3dƒZ5Gdd„dej6ƒZ7Gdd„de#ƒZ8Gdd„de8ƒZ9Gdd„de#ƒZ:Gdd„dej6ƒZ;Gd d!„d!ej6ƒZ<Gd"d#„d#ƒZ=Gd$d%„d%e=ej6ƒZ>Gd&d'„d'ej6ƒZ?Gd(d)„d)e&ƒZ@Gd*d+„d+e=ej6ƒZAGd,d-„d-eƒZBGd.d/„d/eAƒZCGd0d1„d1eCƒZDGd2d3„d3e$ƒZEGd4d5„d5e=ej6ƒZFGd6d7„d7ƒZGGd8d9„d9eFeGej6ƒZHGd:d;„d;eCeGej6ƒZId<d=„ZJe"dƒZKe"dd>ZLe"dd?ZMe"dd@ZNeddAddBƒZOedddCdƒZPGdDdE„dEe#ƒZQeQdFdGdHdIƒZReQdJdKdLdMƒZSeQdNdOdPdQƒZTeQdRdSdTdUƒZUe8ddVdƒZVe8dWdXdƒZWGdYdZ„dZej6ƒZXGd[d\„d\ej6ƒZYGd]d^„d^e#ƒZZGd_d`„d`eZƒZ[e[dFdadHdIƒZ\e[dJdbdLdMƒZ]e[dNdcdPdQƒZ^e[dRdddTdUƒZ_Gdedf„dfe#ƒZ`Gdgdh„dhej6ƒZae"ddƒZbdidj„ZcGdkdl„dle#ƒZdGdmdn„dnej6ƒZeGdodp„dpejfƒZgGdqdr„dreeƒZhGdsdt„dtej6ƒZidudv„Zjekdwkrše l¡dS)xzTTest date/time type.

See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases
éN)Úarray)	ÚltÚleÚgtÚgeÚeqÚneÚtruedivÚfloordivÚmod)Úsupport)Úis_resource_enabledÚ	ALWAYS_EQÚLARGESTÚSMALLEST)ÚMINYEARÚMAXYEAR©Ú	timedelta©Útzinfo)Útime©Útimezone)ÚdateÚdatetimecCsg|]}tt|f‘qS©)Úpickle)Ú.0Úprotorrú//usr/local/lib/python3.8/test/datetimetester.pyÚ
<listcomp>)sÿr!éé
g@A@ÚabcrÚinfÚnanc@s$eZdZdd„Zdd„Zdd„ZdS)Ú
TestModulecCs$t}| |jd¡| |jd¡dS)Nr"é')Údatetime_moduleÚassertEqualrr)Úselfrrrr Útest_constants<szTestModule.test_constantscCsdd|jjkr| d¡t}tdd„t|ƒDƒƒ}tddddd	d
ddd
dg
ƒ}| ||tgƒ¡dS)NZ_Purez"Only run for Fast C implementationcss&|]}| d¡s| d¡s|VqdS)Ú__N)Ú
startswithÚendswith)rÚnamerrr Ú	<genexpr>Fs

ÿz/TestModule.test_name_cleanup.<locals>.<genexpr>rrrrZ
datetime_CAPIrrrrÚsys)Ú	__class__Ú__name__ÚskipTestr)ÚsetÚdirr*)r+rÚnamesÚallowedrrr Útest_name_cleanupAs

þzTestModule.test_name_cleanupcCsd|jjkr| d¡tj}| |ddƒd¡| |ddƒd¡| |ddƒd	¡| |d
dƒd¡| |ddƒd¡| |d
dƒd	¡| |ddƒd	¡| |ddƒd¡| |dd
ƒd¡| |dd
ƒd	¡| |ddƒd	¡| |ddƒd¡| |dd
ƒd¡| |dd
ƒd	¡dS)NÚ_Fastz'Only run for Pure Python implementationéöÿÿÿéýÿÿÿéééþÿÿÿéééùÿÿÿr#ééüÿÿÿééúÿÿÿ)r3r4r5r)Z_divide_and_roundr*)r+Zdarrrr Útest_divide_and_roundMs"
z TestModule.test_divide_and_roundN)r4Ú
__module__Ú__qualname__r,r:rHrrrr r':sr'c@s6eZdZd
dd„Zdd„Zdd„Zdd	„Zd
d„ZdS)ÚFixedOffseté*cCs>t|tƒrt|d}t|tƒr(t|d}||_||_||_dS©N©Úminutes)Ú
isinstanceÚintrÚ_FixedOffset__offsetÚ_FixedOffset__nameÚ_FixedOffset__dstoffset©r+Úoffsetr0Z	dstoffsetrrr Ú__init__ns



zFixedOffset.__init__cCs
|j ¡S©N)rSÚlower©r+rrr Ú__repr__vszFixedOffset.__repr__cCs|jSrX)rR©r+Údtrrr Ú	utcoffsetxszFixedOffset.utcoffsetcCs|jSrX)rSr\rrr ÚtznamezszFixedOffset.tznamecCs|jSrX)rTr\rrr Údst|szFixedOffset.dstN)rL)r4rIrJrWr[r^r_r`rrrr rKls

rKc@seZdZddd„Zdd„ZdS)ÚPicklableFixedOffsetNcCst ||||¡dSrX)rKrWrUrrr rWszPicklableFixedOffset.__init__cCs|jSrX)Ú__dict__rZrrr Ú__getstate__„sz!PicklableFixedOffset.__getstate__)NNN)r4rIrJrWrcrrrr ras
rac@seZdZdd„ZdS)Ú_TZInfocCst ¡SrX)Úrandom)r+r)rrr r^ˆsz_TZInfo.utcoffsetN©r4rIrJr^rrrr rd‡srdc@sDeZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dS)Ú
TestTZInfoc	Cs>tƒ}tddddddd|ƒ}| t¡| ¡W5QRXdS)NéÞrAééé r>r)rdrÚassertRaisesÚ	TypeErrorr^)r+Ztz1Údt1rrr Útest_refcnt_crash_bug_22044sz&TestTZInfo.test_refcnt_crash_bug_22044cCs@tƒ}tj}| t|j|¡| t|j|¡| t|j|¡dSrX)rrÚmaxrlÚNotImplementedErrorr_r^r`)r+Zuselessr]rrr Útest_non_abstractness“s
z TestTZInfo.test_non_abstractnesscCsrGdd„dtƒ}| t|tƒ¡|ddƒ}| |t¡t ¡}| t|j|¡| t|j	|¡| t|j
|¡dS)Nc@seZdZdd„ZdS)z9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughcSs||_||_dSrX)Z_NotEnough__offsetZ_NotEnough__name)r+rVr0rrr rWŸszBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r4rIrJrWrrrr Ú	NotEnoughžsrsr>ZNotByALongShot)rÚ
assertTrueÚ
issubclassÚassertIsInstancerÚnowrlrqr_r^r`)r+rsrr]rrr Útest_subclass_must_overrides
z&TestTZInfo.test_subclass_must_overridecCsntddƒ}| |t¡t ¡dfD]F}| | |¡tdd¡| | |¡d¡| | 	|¡tdd¡q"dS)Nr>ZThreerNrL)
rKrvrrrwr*r^rr_r`)r+Úfor]rrr Útest_normal«s
zTestTZInfo.test_normalcCsTt t¡}| t|ƒt¡tD]0\}}}| ||¡}| |¡}| t|ƒt¡qdSrX)rÚ__new__ÚassertIsÚtypeÚpickle_choicesÚdumpsÚloads)r+ÚorigÚpicklerÚ	unpicklerrÚgreenÚderivedrrr Útest_pickling_base³s

zTestTZInfo.test_pickling_basecCsðtdd}t|dfft|fft|dfffD]À\}}||Ž}| d¡}| |t¡| t|ƒ|¡| | 	d¡|¡| | d¡|¡t
D]`\}}}| ||¡}	| |	¡}
| |
t¡| t|
ƒ|¡| |
 	d¡|¡| |
 d¡|¡qˆq*dS)NéÔþÿÿrNÚcookieÚEST)
rrarr_rvrr|r}r*r^r~rr€)r+rVZotypeÚargsrZonamer‚rƒrr„r…rrr Útest_pickling_subclass¾s$


ý

z!TestTZInfo.test_pickling_subclasscs`tdd‰‰G‡‡fdd„dtƒ}|ƒ}tddddd|d	}| |¡}| || ¡|¡dS)
Nr"©Úhourscs0eZdZdZ‡fdd„Z‡fdd„Zdd„ZdS)	z0TestTZInfo.test_issue23600.<locals>.UKSummerTimez~Simple time zone which pretends to always be in summer time, since
                that's what shows the failure.
            csˆSrXrr\)Ú	DSTOFFSETrr r^Ûsz:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetcsˆSrXrr\)ÚDSTDIFFrr r`Þsz4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstcSsdS)NÚUKSummerTimerr\rrr r_ász7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN)r4rIrJÚ__doc__r^r`r_r©rrŽrr rÖsrrhrDéér)rrrÚfromutcr*r^)r+rÚtzÚuÚtrr’r Útest_issue23600Ós
zTestTZInfo.test_issue23600N)
r4rIrJrorrrxrzr†r‹r™rrrr rg‹s
rgc@s”eZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
dd„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#S)$ÚTestTimeZonecCs8ttdddƒ|_ttdddƒ|_tdddƒ|_dS)Nç#@rŒÚACDTr?r‰éÚr")rrrœr‰rÚDTrZrrr ÚsetUpìszTestTimeZone.setUpcCs8|j|jtjtjtjfD]}| t|ƒ| d¡¡qdSrX)	rœr‰rÚutcÚminrpr*Ústrr_©r+r–rrr Útest_strñs
ÿzTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|ƒ}| |t	|ƒ¡qdSrX)
r)rœr‰rr r¡rpÚreprr*Úeval)r+rr–Ztzreprrr Ú	test_reprösÿzTestTimeZone.test_reprcCsNtddd}| tj d¡t¡| tj d¡|¡| tj d¡|¡dS)Néé;©rrO)rr*rr r^ÚZEROr¡rp)r+Úlimitrrr Útest_class_membersþszTestTimeZone.test_class_membersc	Cs\| tjttdƒƒ¡| tjttdƒdƒ¡| tjttdƒdƒ¡tddtddfD](}t|ƒ}| | d¡tddd¡qZtddƒtdƒfD]"}| t	t|¡| t	t|¡q–| t
¡tdƒW5QRX| t
¡tdƒW5QRX| t
¡ttdƒW5QRX| t
¡ttdƒW5QRX| t
¡ttdd	ƒW5QRXdS)
NrÚUTCr"©Úmicroseconds©ÚsecondsrNrLÚABCÚextra)r|rr rÚassertIsNotr*ÚassertNotEqualr^rlÚ
ValueErrorrmr«)r+Z	subminuter–Úinvalidrrr Útest_constructors&zTestTimeZone.test_constructorcCs | tjt¡| |jt¡dSrX)rvrr rr‰rZrrr Útest_inheritanceszTestTimeZone.test_inheritancec	Cs|j}dD]<}|t}| |t|ƒ |¡¡| |t|ƒ |¡¡q
| t¡|j d¡W5QRX| t¡|j d¡W5QRXdS)N)rgø?r”Úr?)ržÚHOURr*rr^rlrmr‰)r+ÚdummyÚhrVrrr Útest_utcoffsetszTestTimeZone.test_utcoffsetc	Cs\| tj |j¡¡| t¡|j d¡W5QRX| t¡|j d¡W5QRXdS)Nr»r?)ÚassertIsNonerr r`ržrlrmr‰rZrrr Útest_dst%s
zTestTimeZone.test_dstc	Csn| dtj d¡¡| dttƒ d¡¡| dtdtƒ d¡¡| dtdtƒ d¡¡| dttddƒ d¡¡| d	tdtd	ƒ d¡¡| d
ttd
ƒ d¡¡| dttdd
ƒƒ d¡¡| dttdd
ƒƒ d¡¡| dttdd
dƒƒ d¡¡| dttdd
dƒƒ d¡¡| t¡|j	 d¡W5QRX| t¡|j	 d¡W5QRXdS)Nr®z	UTC-05:00éûÿÿÿz	UTC+09:30r›z	UTC-00:01éÿÿÿÿrNZXYZõí €zUTC+01:06:40ré zUTC-01:06:40zUTC+01:06:40.000001r"zUTC-01:06:40.000001r»r?)
r*rr r_r«r¼rrlrmr‰rZrrr Útest_tzname+s*ÿÿÿzTestTimeZone.test_tznamec	Cs¤| t¡tj |j¡W5QRX| t¡tj d¡W5QRX|j|jt	fD]J}|jj
|d}| |¡}| ||| |¡¡| ||jj
tjd¡qTdS)Nznot datetimer)
rlr·rr r•ržrmr‰rœÚEasternÚreplacer*r^)r+r–ZutctimeÚlocalrrr Útest_fromutcAs
ÿzTestTimeZone.test_fromutcc	Cs>| ttƒttƒ¡| ttƒttƒ¡| tdtƒtdtdƒ¡| t¡ttƒttƒkW5QRX| ttƒttƒh¡| ttƒdk¡| 	ttƒdk¡ttƒ}| |t
k¡| 	|t
k¡| |tk¡| 	|tk¡| |tk¡| 	|tk¡| 	|tk¡| |tk¡| 	|tk¡| |tk¡dS)NrÂr‰)
r¶rr«r¼r*rlrmÚassertInrtÚassertFalserrrr£rrr Útest_comparisonMs&zTestTimeZone.test_comparisoncCs€tdddƒ}tjtjtjfD]^}| | |¡|j|d ¡¡| | |¡|j|d ¡¡| | 	|¡|j|d 	¡¡qdS)Nr"r)
rrr¡rpr r*r_rÈr^r`©r+r˜r–rrr Útest_aware_datetimebsÿÿÿz TestTimeZone.test_aware_datetimecCs€|j|jtjtjfD]2}tD](\}}}| | ||¡¡}| ||¡qqtj	}tD](\}}}| | ||¡¡}| 
||¡qRdSrX)rœr‰rr¡rpr~r€rr*r r|)r+r–r‚rƒrÚtz_copyrrr Útest_picklemszTestTimeZone.test_picklecCsP|j|jtjtjfD]}t |¡}| ||¡qtj}t |¡}| ||¡dSrX)	rœr‰rr¡rpÚcopyr*r r|©r+r–rÐrrr Ú	test_copyws

zTestTimeZone.test_copycCsP|j|jtjtjfD]}t |¡}| ||¡qtj}t |¡}| 	||¡dSrX)
rœr‰rr¡rprÒÚdeepcopyr*r r|rÓrrr Ú
test_deepcopys

zTestTimeZone.test_deepcopycCsØtdddtddddtdddddg}| dd„|Dƒ¡|D]&}|jd	|d
t|ƒW5QRXq@tddtdd
dg}| dd„|Dƒ¡|D]<}|jd|d
$| t¡t|ƒW5QRXW5QRXq–dS)Nr¨r©rª©rrOr²é?B©rrOr²r°cSsg|]
}|‘qSrr©rÚdeltarrr r!Žsz7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>Zgood)Z	test_typerÛérŒr")rr°cSsg|]
}|‘qSrrrÚrrr r!™sZbad)rÚextendÚsubTestrrlr·)r+Ztime_deltasrÛZbad_time_deltasrrr Útest_offset_boundaries‡s 
ý
þz#TestTimeZone.test_offset_boundariescCs,| tjtƒ¡| ttddƒtƒ¡dS)Nr"rŒ)r¶rr rrrZrrr Útest_comparison_with_tzinfo sz(TestTimeZone.test_comparison_with_tzinfoN)r4rIrJrŸr¤r§r­r¹rºr¿rÁrÆrÊrÍrÏrÑrÔrÖrßràrrrr ršês"
ršc@seZdZdd„Zdd„ZdS)ÚHarmlessMixedComparisoncCsþ| ddd¡}| |dk¡| |dk¡| d|k¡| d|k¡| |ddg|g¡| g|ddgg¡| |tk¡| |tk¡| |tk¡| |tk¡| |tk¡| |tk¡| |tk¡| |tk¡| |tk¡| |tk¡dS)Nr"ré)ÚtheclassrÌrtrËrrr)r+Úmerrr Útest_harmless_mixed_comparison°s"z6HarmlessMixedComparison.test_harmless_mixed_comparisoncs²| ddd¡‰| t‡fdd„¡| t‡fdd„¡| t‡fdd„¡| t‡fdd„¡| t‡fdd„¡| t‡fdd„¡| t‡fd	d„¡| t‡fd
d„¡dS)Nr"csˆdkS©Nrrr©rärr Ú<lambda>ÐózGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>csˆdkSrærrrçrr rèÑrécsˆdkSrærrrçrr rèÒrécsˆdkSrærrrçrr rèÓrécsdˆkSrærrrçrr rèÕrécsdˆkSrærrrçrr rèÖrécsdˆkSrærrrçrr rè×récsdˆkSrærrrçrr rèØré)rãrlrmrZrrçr Útest_harmful_mixed_comparisonÍsz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r4rIrJrårêrrrr ráªsrác@sôeZdZeZdd„Zdd„Zdd„Zej	dd„ƒZ
d	d
„Zdd„Zd
d„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zej	dd „ƒZd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Z d5d6„Z!d7S)8Ú
TestTimeDeltacCsv|j}t}||ƒ|ddddddddƒ||dƒ|ddƒ||ddƒ|ddƒ||dddƒ|ddƒ||dd|ddƒ||dd|d	d
ƒ||dd
|ddƒ||dd|ddƒ||dd|d
dƒ||dd|d
dƒ||dd|ddƒ||dd|dd
ƒ||dd
|ddƒ||dd|ddƒ||dd|ddƒ||dd|ddƒdS)Nr)ÚweeksÚdaysrrOr²Úmillisecondsr°r"©rír±r¯©rìrArÜrŒé<rNéè©rîg’$I’$IÂ?gUUUUUU¥?g‘?gü©ñÒMbP?)r*r)r+rÚtdrrr r¹ás*ÿ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|dƒƒq¢td(d
ƒD]$}|||d|t|dƒƒqÒ||dd!d)|d%dƒ||d*d	d+ƒ|d*d	d,ƒ|dddƒƒ||d*ddƒ|d*ddƒ|dddƒƒdS)-NrArrñròrFiDQrCrÃéQéX>é€Qi‡“r#éFiXé'r@é rÜr"i@ìi€î6i@çà?ééxr¯r>rBr?r=rÂr±ç¿¶~úÏš¿?é@âg½6+1ã?iS	g@gÀr<g`""K?-ú?éÿÉš;rØé>B)r*rÚ__rsub__ÚabsÚrangeÚround)r+rrôÚaÚbÚcÚusÚirrr Útest_computationsús

""
ÿ
ÿzTestTimeDelta.test_computationscsÜtdƒ‰dD]\‰| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡qd‰| t‡‡fd	d„¡| t‡‡fd
d„¡| t‡‡fdd„¡| t‡fdd„¡| t‡fd
d„¡dS)NrL©r"çð?csˆˆSrXrr©rr
rr rèRréz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>csˆˆSrXrrrrr rèSrécsˆˆSrXrrrrr rèTrécsˆˆSrXrrrrr rèUrércsˆˆSrXrr©rÚzerorr rèZrécsˆˆSrXrrrrr rè[récsˆˆSrXrrrrr rè\récsˆdS)Nçrr©rrr rè]récsˆdS)Nr»rrrrr rè^ré)rrlrmÚZeroDivisionErrorrZr)rr
rr Útest_disallowed_computationsMsz*TestTimeDelta.test_disallowed_computationscCs,tdƒ}| t|jt¡| t|jt¡dS)NrL)rrlr·Ú__mul__ÚNANÚ__truediv__)r+rrrr Útest_disallowed_special`sz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||ƒ}| |j|¡| |j|¡| |j|¡dS)N)r"rAé©rr*rír²r°)r+rír²r	rôrrr Útest_basic_attributesfs

z#TestTimeDelta.test_basic_attributescCsptdd}| | ¡d¡dD]}t|d}| | ¡|¡qdD](}t|d}| | ¡|tdd¡qBdS)	Némrïg8~A)gËŸ$þ@gËŸ$þÀrþrg€„.Ar±)rÃr@i…ÿÿÿr¯r")rr*Ú
total_seconds)r+rôrÚmsrrr Útest_total_secondsms


z TestTimeDelta.test_total_secondscCs.tddddddd}tdd	}| ||¡dS)
NédrCé8ûÿÿr=r”gô¤A©rírìrrOr²r°r"r¯)rr*©r+Út1Út2rrr Útest_carriesysû
zTestTimeDelta.test_carriescCsžtddddddd}tƒ}| t|ƒt|ƒ¡|tdd	7}|td
d7}| ||¡| t|ƒt|ƒ¡|di}d
||<| t|ƒd¡| ||d
¡dS)Nr rCr!r=r”iz
r"rArðé1rïr"rB)rr*ÚhashÚlen)r+r$r%Údrrr Útest_hash_equalityƒs"ûz TestTimeDelta.test_hash_equalitycCsBd}t|Ž}tD],\}}}| ||¡}| |¡}| ||¡qdS)N)r”é"é8)rr~rr€r*©r+rŠrr‚rƒrr„r…rrr Ú
test_pickling—s
zTestTimeDelta.test_picklingcs$tdddƒ‰tdddƒ}| ˆ|¡| ˆ|k¡| ˆ|k¡| ˆ|k¡| ˆ|k¡| ˆ|k¡dD]´}t|Ž}| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡qntD]ö‰| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| t‡‡fdd„¡| t‡‡fd	d„¡| t‡‡fd
d„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fd
d„¡| t‡‡fdd„¡| t‡‡fdd„¡q(dS)NrBr>rD©)r>r>r>)rBrDrD)rBr>r?FTcsˆˆkSrXrr©Zbadargr$rr rè¾réz,TestTimeDelta.test_compare.<locals>.<lambda>csˆˆkSrXrrr1rr rè¿récsˆˆkSrXrrr1rr rèÀrécsˆˆkSrXrrr1rr rèÁrécsˆˆkSrXrrr1rr rèÂrécsˆˆkSrXrrr1rr rèÃrécsˆˆkSrXrrr1rr rèÄrécsˆˆkSrXrrr1rr rèÅré)rr*rtrÌÚ
OTHERSTUFFrlrm©r+r%rŠrr1r Útest_compareŸsFzTestTimeDelta.test_comparec	Csät}|j}|t|dƒƒdƒ|t|dƒƒdƒ|t|dƒƒdƒ|t|dƒƒdƒ|t|d	d
ddƒd
ƒ|t|ddddƒdƒ|t|ddd	ddƒdƒ|t|ddƒdƒ|t|ddƒdƒ|t|ddddddƒdƒdS)Nr"z1 day, 0:00:00rÃz-1 day, 0:00:00rBz2 days, 0:00:00r@z-2 days, 0:00:00r”é:r©r×z12:58:59r>rDz2:03:04iâÿÿÿr¨r,)rìrrOr²z-210 days, 23:12:34róz0:00:00.001000r¯z0:00:00.000003rrØ©rírrOr²r°z999999999 days, 23:59:59.999999)rr*r¢)r+rôrrrr r¤Çs$ÿÿþzTestTimeDelta.test_strcCsðd|jj}| t| d¡ƒd|¡| t| dd¡ƒd|¡| t| ddd¡ƒd	|¡| t|jd
dƒd|¡| t| ¡ƒd
|¡| t|jddƒd|¡| t|jdddƒd|¡| t|jdddƒd|¡dS)Nú	datetime.r"z
%s(days=1)r#rBz%s(days=10, seconds=2)r<é€z,%s(days=-10, seconds=2, microseconds=400000)rñr±z%s(seconds=60)z%s(0)r r¯z%s(microseconds=100))rír°z%s(days=1, microseconds=100))r²r°z%s(seconds=1, microseconds=100)©rãr4r*r¥©r+r0rrr r§Üs2ÿÿÿÿÿÿÿÿzTestTimeDelta.test_reprcCs’tddddddtddtddd	tdd
ddfD]Z}t|ƒ}| | d
¡¡|dd…}t|ƒ}| ||¡t|j|j|jƒ}| ||¡q2dS)Nrr¨r©rØr6é6eÄrïr"©rír²rBr>©rír²r°r7é	)	rr¥rtr.r¦r*rír²r°)r+rôÚsZtd2rrr Útest_roundtripïsÿ
üzTestTimeDelta.test_roundtripcCs~| tjt¡| tjt¡| tjt¡| tjtjk¡| tjtdƒ¡| tjtdddƒ¡| tjtdddƒ¡dS)Nr;rrõg~„.Arr")rvrr¡rpÚ
resolutionrtr*rZrrr Útest_resolution_infosz"TestTimeDelta.test_resolution_infocCsÚtj}tj|}||8}| t|j|¡| t|j|¡tj|}||7}| t|j|¡| t|j|¡| tdd„¡tdƒ}| t|jd¡| t|jd¡| t|j	d¡| t|j	d¡| t|j	d¡dS)	NcSstjSrX)rrprrrr rèréz-TestTimeDelta.test_overflow.<locals>.<lambda>r"éÊš;geÍÍAg#B’¡œÇ;g»½×Ùß|Û=grµÕ{ì>)
rrAr¡rlÚ
OverflowErrorÚ__sub__Ú__add__rprr)r+ÚtinyrôÚdayrrr Ú
test_overflow
s 

zTestTimeDelta.test_overflowcCs.tdƒ}| t|jt¡| t|jt¡dS©Nr")rrlrDrÚINF)r+rHrrr Ú_test_overflow_special sz$TestTimeDelta._test_overflow_specialcCsút}|j}||dd|dƒƒ||dd|dƒƒ||dd|ddƒ||dd|ddƒ||dd|d	dƒ||d
d|ddƒ||dd|d
dƒ||dd|ddƒ||dd|ddƒ||dd|ddƒ||dd|ddƒ||dd|ddƒd}|d}||d|d|dƒƒ||d|d|dƒƒ||d|d|d|d	dƒ||d|d|dƒƒ||d|d|dƒƒ||d|d|d|ddƒ||d dd |d!dƒ||d d|jd |j|jƒdS)"Ng-Cëâ6:?rórg-Cëâ6:¿gü©ñÒMb@?r¯gü©ñÒMb@¿ga2U0*©C?r"ga2U0*©C¿rÃgú~j¼t“X?rBgú~j¼t“X¿r@gíµ ÷Æ >r±gíµ ÷Æ ¾ç€?é„瀿i|áÿÿç€tÒêArÜgš™™™™™Ù?rïgš™™™™™É?rŒ)rírgš™™™™™Ù¿gš™™™™™É¿rûr
)rr*rA)r+rôrZus_per_hourZ
us_per_dayrrr Útest_microsecond_rounding&s0  z'TestTimeDelta.test_microsecond_roundingcCs&tdd}| |j|j|jfd¡dS)NrÃr¯)rÃrõrØr)r+rôrrr Útest_massive_normalizationGs
ÿz(TestTimeDelta.test_massive_normalizationcCsR| tdƒ¡| tddƒ¡| tdddƒ¡| tdd¡| tdƒ¡dS)Nr"rr¯)rtrrÌrZrrr Ú	test_boolLs
zTestTimeDelta.test_boolcsôG‡fdd„dtƒ‰ˆdd}| t|ƒˆ¡| | ¡d¡ˆddd}| t|ƒˆ¡| | ¡d	¡||}| t|ƒt¡ˆ |¡}| t|ƒˆ¡| |j|j¡| |j|j¡| |j|j¡| t	|ƒt	|ƒ¡| | ¡d¡dS)
Ncs$eZdZe‡fdd„ƒZdd„ZdS)z0TestTimeDelta.test_subclass_timedelta.<locals>.Tcsˆ|j|j|jƒSrXr=)rô©ÚTrr Úfrom_tdVsz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdcSs&|jd|jd|jd}t|ƒS)NrÜg ¬@rP)rír²r°r)r+Úsumrrr Úas_hoursZsÿþz9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r4rIrJÚstaticmethodrVrXrrTrr rUUsrUr"rïrÜrÃiðñÿÿr<içÿÿÿ)
rr|r}r*rXrVrír²r°r¢)r+r$r%Út3Út4rrTr Útest_subclass_timedeltaSs 

z%TestTimeDelta.test_subclass_timedeltac	
Cs²Gdd„dtƒ}|dddƒ}tdd}ddd	„|ddd
ƒfddd	„|ddd
ƒfd
dd	„|dddƒfg}|D]B\}}}| |¡(|||ƒ}| ||¡| ||¡W5QRXqjdS)Nc@seZdZdS)z6TestTimeDelta.test_subclass_date.<locals>.DateSubclassN©r4rIrJrrrr ÚDateSubclassssr^éâr"r?rïÚaddcSs||SrXr©r*r˜rrr rèzréz2TestTimeDelta.test_subclass_date.<locals>.<lambda>rFÚraddcSs||SrXrrarrr rè{réÚsubcSs||SrXrrarrr rè|rérD)rrrÞr*rv)	r+r^Úd1rôÚtestsr0ÚfuncÚexpectedÚactrrr Útest_subclass_daters
ý
z TestTimeDelta.test_subclass_datec	
Cs¾Gdd„dtƒ}|dddddƒ}tddd}d	d
d„|dddd
ƒfddd„|dddd
ƒfddd„|ddddƒfg}|D]B\}}}| |¡(|||ƒ}| ||¡| ||¡W5QRXqvdS)Nc@seZdZdS)z>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNr]rrrr ÚDateTimeSubclass†srjr_r"r?r”é)rírOr`cSs||SrXrrarrr rèréz6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rFé
rbcSs||SrXrrarrr rèŽrérccSs||SrXrrarrr rèrérD)rrrÞr*rv)	r+rjrdrôrer0rfrgrhrrr Útest_subclass_datetime…sý
z$TestTimeDelta.test_subclass_datetimecCsštdddd}tdd}| ||d¡| ||d¡tdd	d
}tdd}| ||d¡| ||d¡td
ƒ}| tt||¡| tt||¡dS)Nr"rÜér×r±gó@iÃrBrk©rOr²rNg@r)rr*rlrr	r
)r+r˜ÚsecondÚminuteÚzerotdrrr Ú
test_division˜s

zTestTimeDelta.test_divisioncCs‚tddd}tdd}||}| |tdd¡tddd}||}| |tdd¡tdƒ}| tt||¡| tt|d	¡dS©
NrBrkror"rNr±r@rr#)rr*rlrrrm)r+r˜rqÚrrrrrr Útest_remainder«s
zTestTimeDelta.test_remaindercCs¦tddd}tdd}t||ƒ\}}| |d¡| |tdd¡tddd}t||ƒ\}}| |d¡| |tdd¡tdƒ}| tt||¡| tt|d	¡dSrt)rÚdivmodr*rlrrm)r+r˜rqÚqrurrrrr Útest_divmodºs
zTestTimeDelta.test_divmodc
Cs®dd„}| t¡tƒ|dd>ƒW5QRX| t¡tƒ|dd>ƒW5QRXdD]L}| t¡tƒ||ƒW5QRX| t¡tƒ||ƒW5QRXq\dS)NcsG‡fdd„dtƒ}|ƒS)NcseZdZ‡fdd„ZdS)zFTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatcsˆSrXrrZ©Ú	bad_ratiorr Úas_integer_ratioÐszWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r4rIrJr|rrzrr ÚBadFloatÏsr})Úfloat)r{r}rrzr Ú
get_bad_floatÎsz4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"rò)r)rL)r"rBr>)rlrmrr·)r+rr{rrr Útest_issue31293ËszTestTimeDelta.test_issue31293csfG‡fdd„dtƒ}G‡fdd„dƒ‰G‡fdd„dtƒ‰dD] ‰|jˆdzt|d	ƒd
Wntk
rzYnXzt|d	ƒdWntk
r¢YnXzt|d	ƒdWnttfk
rÎYnXztd	ƒ|d	ƒWnttfk
rüYnXz|d	ƒtd	ƒWntk
r(YnXztd	ƒ|d	ƒWntk
rTYnXW5QRXq>dS)
Ncs<eZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡fdd„Zd	S)
z-TestTimeDelta.test_issue31752.<locals>.BadIntcsˆƒSrXr©r+Úother©ÚProdrr rãsz5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__csˆƒSrXrrrƒrr Ú__rmul__åsz6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__csˆƒSrXrrrƒrr Ú__floordiv__çsz:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__csˆƒSrXrrrƒrr Ú
__rfloordiv__ész;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r4rIrJrr…r†r‡rrƒrr ÚBadIntâsrˆcs$eZdZ‡fdd„Z‡fdd„ZdS)z+TestTimeDelta.test_issue31752.<locals>.ProdcsˆƒSrXrr©ÚSumrr rFísz3TestTimeDelta.test_issue31752.<locals>.Prod.__add__csˆƒSrXrrr‰rr Ú__radd__ïsz4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r4rIrJrFr‹rr‰rr r„ìsr„cseZdZ‡fdd„ZdS)z*TestTimeDelta.test_issue31752.<locals>.SumcsˆSrXrr©Údivmodresultrr Ú
__divmod__ósz5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r4rIrJrŽrrŒrr rŠòsrŠ)Nr)rr"rB)rrÃrŒr"r¯rŒrð)rQrÞrrmr·)r+rˆr)r„rŠrr Útest_issue31752ßs:

zTestTimeDelta.test_issue31752N)"r4rIrJrrãr¹rrrZrequires_IEEE_754rrrr&r+r/r4r¤r§r@rBrIrLrQrRrSr\rirmrsrvryr€rrrrr rëÝs<S

(	
!rëc@seZdZdd„ZdS)ÚTestDateOnlycCsìtdddƒ}tdddddd}t|jƒ}| |tdƒ¡||}| |||¡||}| |||¡||}| |||¡|}t|jƒ}| |tdƒ¡||}| |||¡||}| |||¡||}| |||¡dS)	NéÐr"rBr>rDr?r6r@)rrrír*)r+r]rÛríÚdt2rrr Útest_delta_non_days_ignoreds*
ÿ

z(TestDateOnly.test_delta_non_days_ignoredN)r4rIrJr“rrrr rsrc@seZdZdZdS)ÚSubclassDater"N©r4rIrJZsub_varrrrr r”7sr”c@sXeZdZeZdd„Zdd„Zdd„Zdd„Zd	d
„Z	dd„Z
d
d„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Z d9d:„Z!d;d<„Z"d=d>„Z#d?d@„Z$dAdB„Z%dCdD„Z&dEdF„Z'dGdH„Z(dIdJ„Z)dKdL„Z*dMdN„Z+dOdP„Z,dQdR„Z-dSS)TÚTestDatecCs<| ddd¡}| |jd¡| |jd¡| |jd¡dS)NéÒr>r")rãr*ÚyearÚmonthrHr\rrr r@szTestDate.test_basic_attributescCsz| ddd¡|j ¡fD]\}t|ƒ}| | d¡¡|dd…}t|ƒ}| ||¡| |j|j|j	¡}| ||¡qdS)Nr"rBr>r7r>)
rãÚtodayr¥rtr.r¦r*r˜r™rH©r+r]r?r’rrr r@FsÿzTestDate.test_roundtripc
CsÞdD]„\}}}}| |||¡}| || ¡¡|j |¡}| ||¡t|dƒr| |jd¡| |jd¡| |jd¡| |jd¡qt	t
tddƒD]|}| |dd¡}| ¡}|j |¡}| ||¡|dkrš|j |d¡}| |ddd¡}| ||¡| | ¡|d¡qšdddd	dd	ddd	dd	dg}d
D] \}}	| |dd¡ ¡}tt	ddƒ|ƒD]r\}
}|
dkr‚|	r‚|d7}t	d|dƒD]@}| ||
|¡}| | ¡|¡| ||j |¡¡|d7}qqbq8dS)
N))r"r"r"r")r"r”rr)rBr"r"én)i™rjr”iËÖ
Úhourrr"rAr”rérk))r‘T)r—FrlrB)
rãr*Ú	toordinalÚfromordinalÚhasattrrrqrpÚmicrosecondrrrÚzip)
r+ÚyÚmr*ÚnZfromordr˜Úd2ZdimZisleapr™ZmaxdayrHrrr Útest_ordinal_conversionsTs>
z!TestDate.test_ordinal_conversionscs|jj‰| ˆjˆjˆj¡‰ˆ ¡‰ˆ ˆ¡}| ˆ|¡| t	‡‡fdd„¡ˆt
dd}| | ¡ˆd¡| ||j ˆd¡¡|jj‰| ˆjˆjˆj¡‰ˆ ¡‰ˆ ˆ¡}| ˆ|¡| t	‡‡fdd„¡ˆt
dd}| | ¡ˆd¡| ||j ˆd¡¡dS)Ncsˆ ˆd¡SrJ©r r©rZaordrr rèŠréz0TestDate.test_extreme_ordinals.<locals>.<lambda>r"rïcsˆ ˆd¡SrJr©rrªrr rè–ré)rãr¡r˜r™rHrŸr r*rlr·rrp)r+rrrªr Útest_extreme_ordinalsƒs$

zTestDate.test_extreme_ordinalscCs6| tdd¡| tdd¡| t|jtddd¡| t|jtddd¡| ddd¡| ddd¡| t|jddd¡| t|jddd¡| ddd¡| ddd¡| d	dd¡| t|jddd
¡| t|jddd¡| t|jddd¡| t|jd
dd¡| t|jddd¡| t|jddd¡dS)Nr"r‘r”rrlrBééÔé`	rkéÑé4élrk)rãrrrlr·rZrrr Útest_bad_constructor_argumentsœs"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¡| ||d¡dS)Nr‘r”rr"rBr¯©rãr*r(r)©r+r*ÚeZdicrrr r+²s$zTestDate.test_hash_equalityc	s2| ddd¡‰| ddd¡}| ddd¡}ˆ|}| |jdttdddƒƒ¡| |jd	¡| |jd	¡tdƒ‰td
ƒ}| ddd¡‰| ˆˆ| ddd¡¡| ˆˆ| ddd¡¡| ˆˆ| ddd¡¡| ˆˆ| ddd¡¡| ˆ|| ddd¡¡| ˆ|| ddd
¡¡| ˆd|| ddd¡¡| ˆd|| ddd¡¡| ˆ|ˆ|¡| ˆˆˆˆ¡| ˆ|ˆ|¡| ˆˆˆˆ¡| ˆˆ||¡| ˆˆˆˆ¡| ˆˆ||¡| ˆˆˆˆ¡| ||ˆˆ¡dD]^‰| t	‡‡fdd„¡| t	‡‡fdd„¡| t	‡‡fdd„¡| t	‡‡fdd„¡q$| t	‡‡fdd„¡| t	‡‡fdd„¡| t	‡‡fdd„¡| t	‡‡fdd„¡| t	‡‡fdd„¡| t	‡fdd„¡| t	‡fdd„¡| t	‡fdd„¡dS)Nr—r"ré¤r¯rBé–ArDrrAr>r>r¨é4éÓrcsˆˆSrXrrrrr rèìréz,TestDate.test_computations.<locals>.<lambda>csˆˆSrXrrrrr rèírécsˆˆSrXrrrrr rèîrécsˆˆSrXrrrrr rèïrécsˆˆSrXrr©rrHrr rèòrécsˆˆSrXrrrºrr rèôrécsˆˆSrXrrrºrr rèõrécsˆˆSrXrrrºrr rèörécsˆˆSrXrrrºrr rè÷récsˆˆSrXrrrrr rèørécsˆˆSrXrrrrr rèùrécsˆˆSrXrrrrr rèûré©
rãr*rír)rr²r°rrlrm)r+rrÚdiffÚweekr©rrHr
r rËsPzTestDate.test_computationscCs|jj}|tdƒtdƒfD]p}|jj|}||8}| t|j|¡| t|j|¡|jj|}||7}| t|j|¡| t|j|¡qdS)Nr"rB)	rãrArr¡rlrDrErFrp)r+rGrÛr]rrr rIýszTestDate.test_overflowcCshddl}d\}}}| |||ddddddf	¡}|j |¡}| |j|¡| |j|¡| |j|¡dS)Nr)iÏr>rnrÃ)rÚmktimerãÚ
fromtimestampr*r˜r™rH)r+rr˜r™rHÚtsr*rrr Útest_fromtimestamps
zTestDate.test_fromtimestampcCs dD]}| t|jj|¡qdS©N)gZb××çtégZb××çti©rlrDrãrÀ©r+Zinsanerrr Útest_insane_fromtimestampsÿz"TestDate.test_insane_fromtimestampcCslddl}tdƒD]8}|j ¡}| ¡}|j |¡}||kr>qJ| d¡q||krh|j||tddddS)Nrr>gš™™™™™¹?rûr±)rÛ)rrrãršrÀÚsleepZassertAlmostEqualr)r+rr½ršrÁZ
todayagainrrr Ú
test_todays
ÿzTestDate.test_todayc	Cs’tdƒD]„}| | ddd|¡ ¡|¡| | ddd|¡ ¡|d¡| | ddd|¡ ¡|¡| | ddd|¡ ¡|d¡qdS)NrAr—r>rDr"r¶rB)rr*rãÚweekdayZ
isoweekday)r+r
rrr Útest_weekday<s
"zTestDate.test_weekdaycCs$tdƒD]}| ddd|¡}| | ¡dd|df¡| ddd¡t|ƒ}| | ¡dd|df¡| ddd	|¡}| | ¡dd
|df¡| ddd|¡}| | ¡dd|df¡| ddd
¡t|ƒ}| | ¡dd|df¡| ddd|¡}| | ¡dd|df¡qdS)NrAr¹r”ér¸r"r¬r­r?rBéÙriržé5rrD)rrãr*Úisocalendarr)r+r
r*rrr Útest_isocalendarEszTestDate.test_isocalendarcCsšd}ttt| ¡ƒƒ}g}tdƒD]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
        ir‘r”ri@r"rÍ)	ÚsortedÚmaprQÚsplitrrãr*rÎÚappend)r+ZISO_LONG_YEARS_TABLEZiso_long_yearsÚLr
r*rdrrr Útest_iso_long_yearsVs$zTestDate.test_iso_long_yearscCs"| ddd¡}| | ¡d¡dS)NrBr>z
0002-03-02)rãr*Ú	isoformat©r+r˜rrr Útest_isoformat|szTestDate.test_isoformatcCs"| ddd¡}| | ¡d¡dS)Nr—r>rBzSat Mar  2 00:00:00 2002)rãr*Úctimer×rrr Ú
test_ctime€szTestDate.test_ctimec	Csø| ddd¡}| | d¡d¡| | d¡d¡| | d¡d¡| t|j¡| t|jdd	¡| t|jd
¡| | d¡d¡| | d
¡d¡dD](}z| |¡Wqœtk
rÂYqœXqœz| d¡Wntk
rèYnX| d¡dS)NéÕr>rBúm:%m d:%d y:%yzm:03 d:02 y:05r»AèxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxÚoneZtworLú%mZ03ú	'%z' '%Z'ú'' '')z%eú%z%#u%yí €%mz%f)rãr*Ústrftimerlrmr·ÚUnicodeEncodeError)r+r˜Úfrrr Ú
test_strftime„s&
zTestDate.test_strftimecCs|| ddd¡}zt d¡Wntk
r:| d¡YnX| | d¡t d| ¡¡¡| | d¡t d| ¡¡¡dS)NrÛr>rBráz'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)rãÚ_timerâr·r5r*Ú	timetupler×rrr Útest_strftime_trailing_percent«sþz'TestDate.test_strftime_trailing_percentc	Csú| ddd¡}| | d¡t|ƒ¡| td¡| d¡W5QRXGdd„d|jƒ}|dddƒ}| | d¡d¡Gd	d
„d
|jƒ}|dddƒ}| | d¡t|ƒ¡dD]F}| | |¡| |¡¡| | |¡| |¡¡| | |¡d
¡q®dS)Né×r>r#r»úmust be str, not inté{c@seZdZdd„ZdS)zTestDate.test_format.<locals>.AcSsdS©NÚArrZrrr Ú__str__Äsz'TestDate.test_format.<locals>.A.__str__N©r4rIrJrîrrrr ríÃsríc@seZdZdd„ZdS)zTestDate.test_format.<locals>.BcSsdS©NÚBr©r+Úformat_specrrr râËsz(TestDate.test_format.<locals>.B.strftimeN©r4rIrJrârrrr rñÊsrñ©rÜzm:%m d:%d y:%y H:%H M:%M S:%Sú%z %Z©rãr*Ú
__format__r¢ÚassertRaisesRegexrmrâ©r+r]rírrñrÚfmtrrr Útest_format»szTestDate.test_formatcCs`t|jtƒrt}nt}| |jj|¡| |jj|¡| |jjt¡| 	|jj|jjk¡dSrX)
rurãrrrvr¡rprArrt)r+Zexpected_classrrr rBØszTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|ƒ}| ||¡| |jj||jj¡| |jj||jj¡dS)NrÜéé@Br)rãrpr¡rír²r°rr*)r+Úbigr¦Z	justasbigrrr Útest_extreme_timedeltaãszTestDate.test_extreme_timedeltac
CsrtdƒD]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¡| |jd	|¡| |jd¡qdS)
NrAr¶r"rBrrÃrkr>é=)
rrãrçr*Útm_yearÚtm_monÚtm_mdayÚtm_hourÚtm_minÚtm_secÚtm_wdayÚtm_ydayÚtm_isdst)r+r
r*r˜rrr Útest_timetupleís&&..zTestDate.test_timetuplecCsZd}|j|Ž}tD],\}}}| ||¡}| |¡}| ||¡q| | ¡| d¡¡dS)N©rFrAr¨rB©rãr~rr€r*Ú
__reduce__Ú
__reduce_ex__r.rrr r/s

zTestDate.test_picklingcCsHdddg}d}|j|Ž}|D]&}tD]}||dd}| ||¡q$qdS)Ns'cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.scdatetime
date
(UßtR.s€cdatetime
date
Uß…R.)éßrjéÚlatin1©Úencoding©rãÚpickle_loadsr*©r+rerŠrgÚdatar€r…rrr Útest_compat_unpicklesý
zTestDate.test_compat_unpicklecs| ddd¡‰| ddd¡}| ˆ|¡| ˆ|k¡| ˆ|k¡| ˆ|k¡| ˆ|k¡| ˆ|k¡dD]¶}|j|Ž}| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡qrtD]à‰| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| t‡‡fdd„¡| t‡‡fd	d„¡| t‡‡fd
d„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fd
d„¡| t‡‡fdd„¡q.dS)NrBr>rDr0FTcsˆˆkSrXrrr1rr rè;réz'TestDate.test_compare.<locals>.<lambda>csˆˆkSrXrrr1rr rè<récsˆˆkSrXrrr1rr rè=récsˆˆkSrXrrr1rr rè>récsˆˆkSrXrrr1rr rè?récsˆˆkSrXrrr1rr rè@récsˆˆkSrXrrr1rr rèAré)rãr*rtrÌr2rlrmr3rr1r r4sD
zTestDate.test_comparecsú| ddd¡‰| ˆdkd¡| dˆkd¡| ˆdkd¡| dˆkd¡| t‡fdd„¡| t‡fd	d„¡Gd
d„dƒ}|ƒ‰| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| t‡‡fdd„¡| t‡‡fd
d„¡dS)Nr‘rDr?r"FTcsˆdkSrJrr©Úourrr rèMréz-TestDate.test_mixed_compare.<locals>.<lambda>csdˆkSrJrrrrr rèNréc@seZdZdS)z.TestDate.test_mixed_compare.<locals>.SomeClassNr]rrrr Ú	SomeClassRsrcsˆˆkSrXrr©rZtheirrr rèZrécsˆˆkSrXrrrrr rè[ré)rãr*rlrm)r+rrrr Útest_mixed_compareCszTestDate.test_mixed_comparecCs | |jj¡| |jj¡dSrX)rtrãr¡rprZrrr rS]szTestDate.test_boolcCsZdD]P}| |dd¡}| d¡d|kr| | d¡d|¡| | d¡d|¡qdS)N)r"r'røécr içròé²r"z%Yz%04dú%dz%4Y)rãrâr*)r+r¤r*rrr Útest_strftime_y2kbs
zTestDate.test_strftime_y2kc
Csœ|j}dddg}||Ž}| || ¡¡d}dD]H\}}|dd…}|||<||Ž}|jf||iŽ}	| ||	¡|d7}q0|dddƒ}|jt|jdd	dS)
Nr"rBr>r)©r˜rB©r™r>©rHrDr‘r¬r¯©r˜©rãr*rÈrlr·©
r+ÚclsrŠÚbaser
r0ÚnewvalÚnewargsrgÚgotrrr Útest_replaceos

zTestDate.test_replacecCs:Gdd„d|jƒ}|dddƒ}| t|jddƒ|¡dS)Nc@seZdZdS)z4TestDate.test_subclass_replace.<locals>.DateSubclassNr]rrrr r^…sr^éÜr"iÝr&©rãr|r}rÈ)r+r^r]rrr Útest_subclass_replace„szTestDate.test_subclass_replacecs’G‡fdd„dˆjƒ}d}ˆj|Ž}||ddiŽ}ˆ |j|¡ˆ |jd¡ˆ |jd¡ˆ | ¡| ¡¡ˆ | d¡|j|jd¡dS)Ncs$eZdZdZ‡fdd„Zdd„ZdS)z&TestDate.test_subclass_date.<locals>.CrLcs0| ¡}| d¡}ˆjj|f|ž|Ž}||_|S©Nr´©rÒÚpoprãr{r´©r)rŠÚkwsZtempr´ÚresultrZrr r{s

z.TestDate.test_subclass_date.<locals>.C.__new__cSs||j|jSrX)r˜r™©r+Ústartrrr Únewmeth—sz.TestDate.test_subclass_date.<locals>.C.newmethN©r4rIrJÚ	theAnswerr{r:rrZrr ÚCsr=©r¹rDrür´rArLrC)	rãr*r3r<r´rŸr:r˜r™©r+r=rŠrnr’rrZr ri‹s

zTestDate.test_subclass_datec
sêG‡fdd„dˆjƒ}d}d}d}||Ž}ˆ ||¡ˆ |jd¡t |tdƒ¡ ¡}d|ffd	|ffd
|ffg}|D]l\}}	||fD]Z}
ˆjt	|
ƒ|d>t
|
|ƒ}||	Ž}ˆ ||¡ˆ ||¡ˆ |jd¡W5QRXqˆqxdS)NcseZdZ‡fdd„ZdS)zCTestDate.test_subclass_alternate_constructors.<locals>.DateSubclasscsˆjj|f|ž|Ž}d|_|S©NrA©rãr{r´©r)rŠÚkwargsr7rZrr r{¨szKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N©r4rIrJr{rrZrr r^§sr^r>i·(z
2003-04-14rArr rÀÚ
fromisoformat©Z
base_obj_typeÚconstr_name)rãrvr*r´rÚcombinerÚ	timestamprÞr}Úgetattr)
r+r^rŠZd_ordÚd_isoformatÚbase_drÁÚ
test_casesrGÚconstr_argsÚbase_objÚconstrr]rrZr Ú$test_subclass_alternate_constructors¥s,ý
ÿ
z-TestDate.test_subclass_alternate_constructorscCsRd}t|Ž}tD]<\}}}| ||¡}| |¡}| ||¡| t|tƒ¡qdS)Nr)r”r~rr€r*rtrPr.rrr Útest_pickling_subclass_dateÑs
z$TestDate.test_pickling_subclass_datec	CsÈd}t|jtƒs|dd…}dD],}| t|j|dd…||dd…¡q t|jtƒrŒ| td¡ | tdgt|ƒƒd¡W5QRXtdd	ƒD],}| |dd…t|gƒ|dd…¡q–dS)
Ns
1995-03-25rD)ó9óó
óÿrBr>ú^bad tzinfo state arg$r"r‰rl)	rurãrrlrmrùÚbytesr)r)r+r*Z
month_byteZord_byterrr Útest_backdoor_resistanceÛs	
ÿ$z!TestDate.test_backdoor_resistancec
Csfdddddddg}|D]J}|j|Ž}| ¡}|j|d"|j | ¡¡}| ||¡W5QRXqdS)	N©r"r"r")ròrBrü©r±r"r")r‘rBr¬©r­rjr”)r­rDr>©iár?rk)Údt_str©rãrÖrÞrEr*)r+Ú
base_datesÚdt_tupler]r^Údt_rtrrr Útest_fromisoformatõsù

zTestDate.test_fromisoformatcCs<Gdd„d|jƒ}|dddƒ}| | ¡¡}| ||¡dS)Nc@seZdZdS)z:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNr]rrrr r^
sr^rhr”rü)rãrErÖrv)r+r^r]rbrrr Útest_fromisoformat_subclass	sz$TestDate.test_fromisoformat_subclasscCsJddddddddd	d
dg}|D]&}| t¡|j |¡W5QRXqdS)Nr»rÄz	009-03-04Z	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29Z20090228u2009í €02í €28)rlr·rãrE©r+Zbad_strsÚbad_strrrr Útest_fromisoformat_failssõz!TestDate.test_fromisoformat_failsc
CsHddl}dd| d¡g}|D]&}| t¡|j |¡W5QRXqdS)Nrs
2009-03-01z
2009-03-01©ÚioÚStringIOrlrmrãrE©r+riZ	bad_typesZbad_typerrr Ú"test_fromisoformat_fails_typeerror's
z+TestDate.test_fromisoformat_fails_typeerrorcCs~ddddddddd	d
ddd
tddftddfg}|D]F}|j|d0|j|Ž}| ¡}|jj|Ž}| ||¡W5QRXq2dS)N)éàrDr>)rÛr"rB)iØr”rk)rr"rB)rÌr”rr[)r±r”r)r‘r"r")r‘r”r)r­r"r")r­r”rrZ)r(r”rr"r”r)Ú	datecomps)rrrÞrãrÎÚfromisocalendarr*)r+ZdatesrnZdobjÚisocalZd_roundtriprrr Útest_fromisocalendar0s,ñ
zTestDate.test_fromisocalendarc
Csfddddddddd	d
ddd
g
}|D]>}|j|d(| t¡|jj|ŽW5QRXW5QRXq"dS)N)éãrr")rrrÃr")rré6r")rrr"r)rrr"rÃ)rrr"é)rrrÍr")rùr"r")rr"r")i–˜r"r")ìr"r")rrrur")rrr"ru©rp)rÞrlr·rãro)r+Úisocalsrprrr Ú!test_fromisocalendar_value_errorsNs$óz*TestDate.test_fromisocalendar_value_errorscCsœttdd„g}g}d}tdƒD]4}|D]*}t|ƒ}|||ƒ||<| t|ƒ¡q&q|D]>}|j|d(| t¡|j	j
|ŽW5QRXW5QRXqXdS)NcSsdSrXr)Úxrrr rèhréz;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)rrr"r"r>rv)r¢r~rÚlistrÓÚtuplerÞrlrmrãro)r+Z
err_txformersrwr*r
ZtxformerZerr_valrprrr Ú test_fromisocalendar_type_errorsdsý	z)TestDate.test_fromisocalendar_type_errorsN).r4rIrJrrãrr@r¨r«r²r+rrIrÂrÆrÈrÊrÏrÕrØrÚrårèrürBrrr/rr4rrSr"r.r1rirQrRrYrcrdrgrlrqrxr|rrrr r–:sT/2		&'
	
'
,

	r–c@seZdZdZdS)ÚSubclassDatetimer"Nr•rrrr r}sr}c@sÚeZdZeZdd„Zdd„Zdd„Zdd„Zd	d
„Z	dd„Z
d
d„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Ze d)¡d*d+„ƒZd,d-„Ze d.¡d/d0„ƒZd1d2„Zd3d4„Zd5d6„Z e! "e#j$d7kd8¡d9d:„ƒZ%e! "e#j$d7kd8¡d;d<„ƒZ&d=d>„Z'd?d@„Z(dAdB„Z)dCdD„Z*dEdF„Z+dGdH„Z,dIdJ„Z-dKdL„Z.e dM¡dNdO„ƒZ/dPdQ„Z0dRdS„Z1dTdU„Z2dVdW„Z3dXdY„Z4dZd[„Z5d\d]„Z6d^d_„Z7d`da„Z8dbdc„Z9ddde„Z:dfdg„Z;dhS)iÚTestDateTimecCsx| ddddd¡}| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡dS)Nr—r>r"r”r©	rãr*r˜r™rHrrqrpr¢r\rrr r†sz"TestDateTime.test_basic_attributesc	Cs|| ddddddd¡}| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡dS)Nr—r>r"r”r©é@rr\rrr Útest_basic_attributes_nonzerosz*TestDateTime.test_basic_attributes_nonzeroc
Cs’| ddddddd¡|j ¡fD]l}t|ƒ}| | d¡¡|d	d…}t|ƒ}| ||¡| |j|j|j	|j
|j|j|j
¡}| ||¡q dS)
Nr"rBr>rDr?rFrAr7r>)rãrwr¥rtr.r¦r*r˜r™rHrrqrpr¢r›rrr r@œsÿþzTestDateTime.test_roundtripc
Csb| ddddddd¡}| | ¡d¡| | d¡d¡| | 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"¡| | d¡d"¡| | d	¡d#¡| t|ƒd#¡tt	d$d%d&ƒ}|jddd|d}| | ¡d'¡dS)(Nr"rBr>rDr?rëz0001-02-03T04:05:01.000123rUú z0001-02-03 04:05:01.000123úz0001-02-0304:05:01.000123rÄu0001-02-03í €04:05:01.000123r©Útimespecz
0001-02-03T04rOz0001-02-03T04:05r²z0001-02-03T04:05:01rîz0001-02-03T04:05:01.000r°Úauto)Úsepr…z0001-02-03 04:05ÚfooéL@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:00ér±ZXXXz0002-03-02T00:00:00+00:00:16)
rãr*rÖrlr·r¢rr rKrrÎrrr rجsDÿzTestDateTime.test_isoformatc	Csàdtddfdtddfdtddd	fd
tddd
dfdtdddddfg}ddtjfdttdƒƒfg}|dd„|Dƒ7}| dddddd¡}d}|D]D\}}|j|d}||}|j|d| ¡|ksÐt‚W5QRXq–dS)Nú05:00r?rŒú02:00rBú06:27rFrrªú12:32:30r”rkrkr×ú02:04:09.123456rDr>rÿrÙ©r»Nú+00:00rcSs2g|]*\}}dD]\}}||t||ƒf‘qqS©))ú-rÃ)ú+r"r©rrgrôÚprefixÚsignrrr r!çsþz8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>rmr"é%z2016-04-01T12:37:09r©Útzi©rrr rãrÈrÞrÖÚAssertionError)	r+Ú	tzoffsetsÚtzinfosZdt_baseÚexp_baseÚexp_tzršr]Úexprrr Útest_isoformat_timezoneØs(û	ýþz$TestDateTime.test_isoformat_timezonec	Cs| ddddddd¡}| | d¡t|ƒ¡| td	¡| d¡W5QRXGd
d„d|jƒ}|dddddddƒ}| | d¡d¡Gdd
„d
|jƒ}|dddddddƒ}| | d¡t|ƒ¡dD]F}| | |¡| |¡¡| | |¡| |¡¡| | |¡d
¡qÆdS)Nrér>r#rDr?r"rër»rêc@seZdZdd„ZdS)z#TestDateTime.test_format.<locals>.AcSsdSrìrrZrrr rîÿsz+TestDateTime.test_format.<locals>.A.__str__Nrïrrrr ríþsríc@seZdZdd„ZdS)z#TestDateTime.test_format.<locals>.BcSsdSrðrròrrr râsz,TestDateTime.test_format.<locals>.B.strftimeNrôrrrr rñsrñrõr÷rúrrr rüöszTestDateTime.test_formatc	Cshddl}| ddddddd¡}| | ¡d¡| ddd	dddd¡}| | ¡| | | ¡¡¡¡dS)
Nrr—r>rBér?rëzSat Mar  2 18:03:05 2002rË)rrãr*rÙr¿rç)r+rr˜rrr Útest_more_ctimes
zTestDateTime.test_more_ctimec	Cs | dddddd¡}| dddddd¡}| dddddd¡}| ||¡| ||k¡| tddd	d
d
d¡}tdd}||}| |||¡| ||k¡dS)
Nr—r>r"r>rr#r”rr¨r©rr¯)rãr*rtrr)r+rnr’Údt3r	rrr Útest_tz_independent_comparing#s
z*TestDateTime.test_tz_independent_comparingcCsBGdd„dtƒ}| ddddddd|ddƒ¡}| t|jd¡dS)	Nc@seZdZdd„ZdS)zDTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfocSsGdd„dtƒ}|dƒS)Nc@seZdZdd„ZdS)zZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrcWsdSrXr)r+rŠrrr rÈ:szbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r4rIrJrÈrrrr ÚMyStr9sr§r0)r¢)r+r]r§rrr r_8szKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r4rIrJr_rrrr ÚMyTzInfo7sr¨rÛr>rBrr0ú%Z)rKrãrlrmrâ)r+r¨r˜rrr Ú%test_strftime_with_bad_tzname_replace5sz2TestDateTime.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|jddd¡| 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"r‘r”rrlrBr¬r­r®rkr¯r°r±rkrr¨rÃrÜr©rñrØrþ©Úfold)rãrrrlr·rmrZrrr r²@s
ÿ
þ
ÿ
ÿ
ÿz+TestDateTime.test_bad_constructor_argumentscCs| dddddd¡}| dddddd¡}| ||¡| t|ƒt|ƒ¡|di}d||<| t|ƒd¡| ||d¡| ||d¡| d	ddd
dd¡}| d	ddd
dd¡}| ||¡| t|ƒt|ƒ¡|di}d||<| t|ƒd¡| ||d¡| ||d¡dS)Nr‘r”rr¨rkér"rBr¯rr?r³r´rrr r+us$zTestDateTime.test_hash_equalitycs<| ddd¡‰| ddd¡}ˆ|}| |jdttdddƒƒ¡| |jd¡| |jd¡| ddd	d
d¡‰tdddƒ}tdd
ƒ}tdƒ‰tdƒ}| ˆ|| 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¡¡| ˆ|ˆ|¡| ˆˆˆˆ¡| ˆ|ˆ|¡| ˆ|ˆ|¡| ˆ|ˆ|¡| ˆˆˆˆ¡| ˆ|ˆ|¡| ˆ|ˆ|¡| ˆˆ||¡| ˆˆˆˆ¡| ˆˆ||¡| ˆˆ||¡| ˆˆ||¡| ˆˆˆˆ¡| ˆˆ||¡| ˆˆ||¡| ˆ|ˆ||| ddddddd¡¡| ˆ|ˆ||ˆ|ˆ||¡| ˆ|ˆ||| dd	ddddd¡¡| ˆ|ˆ||ˆ|ˆ||¡dD]^‰| t	‡‡fdd„¡| t	‡‡fd d„¡| t	‡‡fd!d„¡| t	‡‡fd"d„¡q.| t	‡‡fd#d„¡| t	‡‡fd$d„¡| t	‡‡fd%d„¡| t	‡‡fd&d„¡| t	‡‡fd'd„¡| t	‡fd(d„¡| t	‡fd)d„¡| t	‡fd*d„¡dS)+Nr—r"rr¶r·rDrr>rBr­rFròrýrAr£r#rŠrârir>r¨r¸r¹r¯rËr?r©rörcsˆˆSrXrrrrr rè¿réz0TestDateTime.test_computations.<locals>.<lambda>csˆˆSrXrrrrr rèÀrécsˆˆSrXrrrrr rèÁrécsˆˆSrXrrrrr rèÂrécsˆˆSrXrrrºrr rèÅrécsˆˆSrXrrrºrr rèÇrécsˆˆSrXrrrºrr rèÈrécsˆˆSrXrrrºrr rèÉrécsˆˆSrXrrrºrr rèÊrécsˆˆSrXrrrrr rèËrécsˆˆSrXrrrrr rèÌrécsˆˆSrXrrrrr rèÎrér»)r+rr¼Zmillisecrr½rr¾r rŒs‚
" """ÿÿÿÿzTestDateTime.test_computationscCsZd}|j|Ž}tD],\}}}| ||¡}| |¡}| ||¡q| | ¡| d¡¡dS)N©rFrAr¨râr©r"érBr
r.rrr r/Ðs

zTestDateTime.test_picklingc	Csn| ddddddd¡}ttjdƒD]D}t ||¡}t |¡}| |jd¡| |jd¡| |j	d¡q$dS)	Nr¹rBrArŠé0r˜iÔÆr")
rãrrÚHIGHEST_PROTOCOLrr€r*r˜r™rH)r+rrr?rrrr Útest_more_picklingÙs
zTestDateTime.test_more_picklingcCsRd}t|Ž}tD]<\}}}| ||¡}| |¡}| ||¡| t|tƒ¡qdS)Nr®)r}r~rr€r*rtrPr.rrr Útest_pickling_subclass_datetimeâs
z,TestDateTime.test_pickling_subclass_datetimecCsHdddg}d}|j|Ž}|D]&}tD]}||dd}| ||¡q$qdS)Ns@cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x00\x10\x00'
tR.s#cdatetime
datetime
(U
ß;tR.s$€cdatetime
datetime
U
ß;…R.)rrjrrâr©r"r¯rrrrrrr rësù

z!TestDateTime.test_compat_unpicklecCs\dddddddg}|j|Ž}|j|Ž}| ||¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡tt|ƒƒD]Ò}|dd…}||d||<|j|Ž}| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡q„dS)	Nr‘rjr¬râr5rŠrr")rãr*rtrÌrr))r+rŠr$r%r
r,rrr Útest_more_compareýs2


zTestDateTime.test_more_comparecCsd| |j|j¡| |j|j¡| |j|j¡| |j|j¡| |j	|j
¡| |j|j¡dSrX)
r*rr˜rr™rrHrrrrqrrp)r+rgr-rrr Úverify_field_equality	sz"TestDateTime.verify_field_equalitycCs6ddl}| ¡}| |¡}|j |¡}| ||¡dS©Nr)rÚ	localtimerãrÀrµ©r+rrÁrgr-rrr rÂ&	s

zTestDateTime.test_fromtimestampcCs6ddl}| ¡}| |¡}|j |¡}| ||¡dSr¶)rÚgmtimerãÚutcfromtimestamprµr¸rrr Útest_utcfromtimestamp.	s

z"TestDateTime.test_utcfromtimestampúEST+05EDT,M3.2.0,M11.1.0c	Cs.| ddd¡}| | ¡d¡| ddddddd¡}| | ¡d¡| ddd	dd
¡}|jdd}| |j | ¡¡|tdd¡| |j | ¡¡|tdd¡| dd	ddd
¡}| |j | ¡¡|¡| ddd¡| d
dd¡fD]<}z| ¡}Wntk
rYqìX| |j |¡|¡qìdS)Nr r"g”Ñ@rBr>rDçøÆÀ6Õ@r/rjrkr«rŒi'r”)rãr*rIrÈrÀrrD)r+r˜Út0r$r?rrr Útest_timestamp_naive8	s,
ÿÿÿ z!TestDateTime.test_timestamp_naivecCsŠ|jdddtjd}| | ¡d¡|jdddddddtjd}| | ¡d¡|jdddddddttd	d
dƒd}| | ¡d¡dS)
Nr r"rrrBr>rDg½7†­@rÂrŒr‰r½)rãrr r*rIrr×rrr Útest_timestamp_awareT	s
ÿÿ
ÿz!TestDateTime.test_timestamp_awarezMSK-03c	Csz|jj|jjfD]b}|dƒ}| |jd¡| |jd¡|dƒ}z|dƒ}Wntk
rbYn~X| |jd¡| |jd¡|dƒ}| ||¡|dƒ}| ||¡|dƒ}| ||¡|d	ƒ}| |jd¡| |jd
¡|dƒ}| ||¡|dƒ}| ||¡|d
ƒ}| |jd¡| |jd¡|dƒ}| |jd¡| |jd¡|dƒ}| |jd¡| |jd¡qdS)Nrgíµ ÷ư>gíµ ÷ư¾r©rØg:Œ0âŽyE¾g1Eîð2®¾gH¯¼šò×z¾rOi¼#gH¯¼šò×z>g1Eîð2®>g<"2îþÿï?gËPÊÿÿï?r"rMrN)rãrÀrºr*rpr¢ÚOSError)r+ZftsrrÝZ	minus_oner˜rrr rQ_	sFÿ
z&TestDateTime.test_microsecond_roundingc
CsZ|jjjtjd}| ¡}z| |jj|tjd|¡Wn4tt	fk
rl}z| 
t|ƒ¡W5d}~XYnX|jjjtjddd}| ¡}| |jj|tjd|¡d}||}| 
ttf¡|j |¡W5QRX| 
ttf¡|j |¡W5QRX| ¡|}| 
ttf¡|j |¡W5QRX| 
ttf¡|j |¡W5QRXdS)Nr©r–r)rrpr¢iX)rãr¡rÈrr rIr*rÀrDrÁr5r¢rprlr·rº)r+Zmin_dtZmin_tsÚexcZmax_dtZmax_tsrÛrÁrrr Útest_timestamp_limitsˆ	s6ÿ ÿÿz"TestDateTime.test_timestamp_limitscCs dD]}| t|jj|¡qdSrÃrÄrÅrrr rƱ	sÿz&TestDateTime.test_insane_fromtimestampcCs dD]}| t|jj|¡qdSrÃ)rlrDrãrºrÅrrr Útest_insane_utcfromtimestampº	sÿz)TestDateTime.test_insane_utcfromtimestampÚwin32z*Windows doesn't accept negative timestampscCs|j d¡dS)NçÍÌÌÌÌÌð¿)rãrÀrZrrr Ú!test_negative_float_fromtimestampÃ	sz.TestDateTime.test_negative_float_fromtimestampcCs.|j d¡}| || ddddddd¡¡dS)	NrÇi±r”rr¨r©r5ið~)rãrºr*)r+r*rrr Ú$test_negative_float_utcfromtimestampÉ	sz1TestDateTime.test_negative_float_utcfromtimestampcCsfddl}tdd}tdƒD]2}|j ¡}|j | ¡¡}t||ƒ|krqNq| t||ƒ|¡dS)Nrr"r±r>)rrrrãÚutcnowrºrZassertLessEqual)r+rZ	tolerancer½Zfrom_nowÚfrom_timestamprrr Útest_utcnowÎ	s

zTestDateTime.test_utcnowc
CsLd}d}t |j||¡}|j ||¡}| ||¡| t|ƒ|j¡| t|ƒ|j¡dddg}|D]L\}}|j||d0t |j||¡}|j ||¡}| ||¡W5QRXqd|jj}| |ddƒ ¡d	t	¡| |d
dƒ ¡dt	¡| |ddƒ ¡t
d	d
dd¡ddtjtj
dffD]z\}}|dkrFd}	|}
nd}	|}
t|
ddƒ\}}d |	|||¡}
||
dƒ}| | ¡t
|d¡| | 
¡|¡q(d\}
}||
|ƒ}| | ¡dtdt	¡| | 
¡d¡| | |¡|
¡| |ddƒjd¡| t¡|ddƒW5QRX| t¡|ddƒW5QRXdS) Nz2004-12-01 13:02:47.197z%Y-%m-%d %H:%M:%S.%f)u2004-12-01í €13:02:47.197u%Y-%m-%dí €%H:%M:%S.%f)u2004í €12-01 13:02:47.197u%Yí €%m-%d %H:%M:%S.%f)u2004-12-01 13:02í €47.197u%Y-%m-%d %H:%Mí €%S.%f)ÚstringÚformatz+0002ú%zrBz-0002r@z-00:02:01.000003r"r>)rOr²r°)rr®)rZGMTrr“r”rñz{}{:02d}{:02d} {}rör±)z	+1234 UTCrör”r,r®r©z-2400z-000)Ú	_strptimeZ_strptime_datetimerãÚstrptimer*r|r}rÞr^ÚMINUTErrærr_rwrÎr¼rârrlr·)r+rÍrÎrgr-ÚinputsrÑZ	tzsecondsr_r—r²rrOÚdtstrr]rûrrr Ú
test_strptimeÜ	s`ý
ÿþÿ


zTestDateTime.test_strptimec
Cs6|jj}| t¡|ddƒ}W5QRX| dddddd¡}| dddddd¡}| dddd	d	d	¡}| ddd
d	d	d	¡}ddd|fd
dd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg
}|D]L\}}	}
}d"|}|j||	|
|d# ||	|
ƒ}|j|||d$W5QRXqädS)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Sr¹rBr"rDr?rFrér!z
1/02/03 4:5:6rÞz
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 )ÚreasonrÍrÎÚtarget)Úmsg)rãrÑrlr·rÞr*)r+rÑZnewdaternr’r¥Zdt4rÓr×rÍrÎrØrrr Útest_strptime_single_digit
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)
Nr­r”rrFrËé!)	r­r”rrFrËrÛrDrœrÃr"rÃ)rãr*rçr˜r™rHrrqrprÉrŸrrrrrrrrr	r
)r+r˜Úttrrr Útest_more_timetuple8
s4
üÿÿÿz TestDateTime.test_more_timetuplec	Cs˜| ddddddd¡}| | d¡d	¡d
D]B\\}}}ttd||dƒ}|j|d
}| | d¡d|¡q,z| d¡Wntk
r’YnXdS)Nr­r”rrFrËrÛé/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))rÛrëz	33.000123))rÛrZ33rB)rr²r°rrÏz-0200u%yí €%m %Hí €%M)rãr*rârrrÈrã)r+r˜r?r	Úzr–rrr Útest_more_strftimeN
sÿzTestDateTime.test_more_strftimec	CsL| ddddddd¡}| | ¡tdddƒ¡| | ¡tddddƒ¡dS)Nr—r>rDr£é-éÒ)rãr*rrr\rrr Útest_extract^
szTestDateTime.test_extractc	Cs’tdddƒ}tddddƒ}| ddddddd¡}|jj}|||ƒ}| ||¡|||d}| ||¡| || ¡¡| || ¡¡| ||| ¡| ¡ƒ¡| t|¡| t||¡| t|||¡| t|||d¡| t|||dd	¡| t|d
d¡| t||d¡| t|d
|¡|||tjƒ}| 	|j
tj¡|||tjd}| 	|j
tj¡tƒ}|||ƒ}| | ¡|¡| | ¡|¡dS)
Nr—r>rDr£rárâ)rrr"rBrrr)rrrãrHr*rlrmrr r|r)r+r*r˜rgrHr]rrr Útest_combinec
s6

zTestDateTime.test_combinec
Cs¤|j}dddddddg}||Ž}| || ¡¡d}d	D]H\}}|dd…}|||<||Ž}|jf||iŽ}	| ||	¡|d7}q8|d
ddƒ}|jt|jdd
dS)Nr"rBr>rDr?rFrAr)r#r$r%©rr?©rqrF©rprA©r¢rtr‘r¬r¯r&r'r(rrr r.…
s
zTestDateTime.test_replaceZEDT4c	CsF|j ¡}tddƒ}|jttdddƒd}| | ¡|¡| t	|j||¡| t	|j|¡|j|dtddd}| | |¡|¡| |j|d	|¡Gd
d„dt
ƒ}|ƒ}| t|j|¡| |j|d |¡|¡Gdd
„d
t
ƒ}|ƒ}| t|j|¡Gdd„dt
ƒ}	|	ƒ}
|j|
d}| t	¡| ¡W5QRXdS)Né,Z0044rErŒÚEDTrrDrªrÂc@seZdZdd„Zdd„ZdS)z+TestDateTime.test_astimezone.<locals>.BoguscSsdSrXrr\rrr r^«
réz5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetcSstdƒSr¶rr\rrr r`¬
réz/TestDateTime.test_astimezone.<locals>.Bogus.dstN©r4rIrJr^r`rrrr ÚBogusª
srìc@seZdZdd„Zdd„ZdS)z/TestDateTime.test_astimezone.<locals>.AlsoBoguscSstdƒSr¶rr\rrr r^²
réz9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetcSsdSrXrr\rrr r`³
réz3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNrërrrr Ú	AlsoBogus±
sríc@seZdZdd„Zdd„ZdS)z,TestDateTime.test_astimezone.<locals>.BrokencSsdSrJrr\rrr r^¸
réz6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetcSsdSrJrr\rrr r`¹
réz0TestDateTime.test_astimezone.<locals>.Broken.dstNrërrrr ÚBroken·
srî)rãrwrKrÈrrr*Ú
astimezonerlrmrr·)r+r]räÚdt_utcZdt_frìZbogríZalsobogrîÚbrokenZ	dt_brokenrrr Útest_astimezonež
s*

zTestDateTime.test_astimezonecs˜G‡fdd„dˆjƒ}d}ˆj|Ž}||ddiŽ}ˆ |j|¡ˆ |jd¡ˆ |jd¡ˆ | ¡| ¡¡ˆ | d¡|j|j|j	d¡dS)Ncs$eZdZdZ‡fdd„Zdd„ZdS)z.TestDateTime.test_subclass_datetime.<locals>.CrLcs0| ¡}| d¡}ˆjj|f|ž|Ž}||_|Sr2r3r5rZrr r{Ä
s

z6TestDateTime.test_subclass_datetime.<locals>.C.__new__cSs||j|j|jSrX)r˜r™rpr8rrr r:Ë
sz6TestDateTime.test_subclass_datetime.<locals>.C.newmethNr;rrZrr r=Á
sr=)r¹rDrür”rlé)r´rArLrC)
rãr*r3r<r´rŸr:r˜r™rpr?rrZr rm¿
s

ÿÿz#TestDateTime.test_subclass_datetimecs,G‡fdd„dˆjƒ}d}d}d}||Ž}ˆ ||¡ˆ |jd¡| ¡}d|f|fd|tjf| tj¡fd|f|fd	|f|fd
|df|fdt|d
d…Žt	|dd…Žf|fg}|D]n\}}	}
||fD]Z}ˆj
t|ƒ|d>t||ƒ}||	Ž}
ˆ |
|¡ˆ |
|
¡ˆ |
jd¡W5QRXqÊq¸dS)NcseZdZ‡fdd„ZdS)zTTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclasscsˆjj|f|ž|Ž}d|_|Sr@rArBrZrr r{Ý
sz\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__NrDrrZrr rjÜ
srj)r¹rDrür”rkérÿz2003-04-14T12:30:15.123456ghÍëTMÏArArÀrºrErÑz%Y-%m-%dT%H:%M:%S.%frHrr>rF)
rãrvr*r´rIrr rïrrrÞr}rJ)r+rjrŠrKZutc_tsrLrÁrMrGrNrgrOÚconstructorr]rrZr Ú-test_subclass_alternate_constructors_datetimeÚ
s6


ÿ

$ø
ÿ
z:TestDateTime.test_subclass_alternate_constructors_datetimec
s¨G‡fdd„dˆjƒ}ddifddifdddtjifdddttdd	d
ƒifg}|D]N\}}}ˆ |¡4t||ƒ}|f|Ž}ˆ ||¡ˆ |jd¡W5QRXqTdS)NcseZdZ‡fdd„ZdS)z8TestDateTime.test_subclass_now.<locals>.DateTimeSubclasscsˆjj|f|ž|Ž}d|_|Sr@rArBrZrr r{sz@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__NrDrrZrr rj
srjrwrÊZnow_utcr–Z	now_fixedrÂrŒr‰rA)	rãrr rrÞrJrvr*r´)r+rjrMr0Z	meth_namerCrPr]rrZr Útest_subclass_nowsü

zTestDateTime.test_subclass_nowcs¬ddddg}ddddg‰d	d
g}dtjttddƒttd
dƒg‰‡‡‡fdd„|Dƒ}|D]J}|D]@}|j|d}ˆj|dˆj |¡}ˆ ||¡W5QRXqdq\dS)NrZr[r\r]©rrrr)rrrih­)rrréG”)r”rkrárùr‚rUrÂrŒrBcs4g|],}ˆD]"}ˆD]}ˆj||žd|iŽ‘qqqSr)rã)rZ
date_tupleZ
time_tuplerš©Z
base_timesr+ržrr r!9sýz<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>©r‡©rÔ)rr rrÖrÞrãrEr*)r+r`Ú
separatorsÚdtsr]r‡rÔrbrrúr Útest_fromisoformat_datetime#s0üüþÿz(TestDateTime.test_fromisoformat_datetimec
CsÞ| ddddddd¡}tddtddtd	d
dtdddd
tdddddg}|dd„|Dƒ7}dtjttddƒg}|dd„|Dƒ7}|D]L}|j|d}| ¡}|j|d"|j |¡}||ksÎt|ƒ‚W5QRXqŒdS)Nrhr”rkráépQr?rŒrBrFrrªrkr×rDr>rÿrÙcSsg|]}d|‘qS©rÃr©rrôrrr r!Psz<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|ƒ‘qSrrrrrr r!Usr©Útstr©	rãrrr rÈrÖrÞrErœ)r+Zbase_dtrržršr]rÔrbrrr Útest_fromisoformat_timezoneFs$
üÿz(TestDateTime.test_fromisoformat_timezonec
Csvddddddddd	g	}|D]V}| d
ddd
ddd¡}|j|d}|j|d|j |¡}| ||¡W5QRXqdS)Nr‚rUúõ€uÊuᛇu時uðŸrÄr_r"rr¨r©rÞiuçrûrür_©r+rýr‡r]rÔrbrrr Útest_fromisoformat_separators_s ûz*TestDateTime.test_fromisoformat_separatorsc
Csdddg}|D]R}| ddddd¡}|j|d}|j|d	|j |¡}| ||¡W5QRXqdS)
Nr”r“r_r"rr”rôrûrür_r	rrr Útest_fromisoformat_ambiguouspsz)TestDateTime.test_fromisoformat_ambiguouscCsòddg}dtjttddƒttddƒttdddƒg}d	d
ddd
g}t|ƒD]ž\}}|D]}|D]†}|dkrd|dd}|dd…|f}|j|dd|…d|iŽ}	|	j|d}
|j|
d|j |
¡}| |	|¡W5QRXqbqZqNdS)N)rÌr”rDrtr­rárÿ)rÌr”rDrtr­rárrÂrŒrBrFrrªrrOr²rîr°ròrrDrr„rü©	rr rÚ	enumeraterãrÖrÞrEr*)r+Zdatetime_basesržÚ	timespecsÚiprÁršraÚnew_microsecondsr]rÔrbrrr Útest_fromisoformat_timespecs{s.þýÿz)TestDateTime.test_fromisoformat_timespecscCs„ddddddddd	d
ddd
dddddddddddddddg}|D]>}|j|d(| t¡|j |¡W5QRXW5QRXq@dS)Nr»rÄz
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-04í €10T12:15u2009-04-10T12í €15z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:00a©rf©rÞrlr·rãrErerrr Ú!test_fromisoformat_fails_datetime•sBäz.TestDateTime.test_fromisoformat_fails_datetimec	Cs6d}| tt t|ƒ¡¡|j |¡W5QRXdS)Nu2018-01-03í €01:0113)rùr·ÚreÚescaper¥rãrE)r+rÔrrr Ú"test_fromisoformat_fails_surrogate»sz/TestDateTime.test_fromisoformat_fails_surrogatecCs$d}|j |¡}| |jtj¡dS)Nz2014-04-19T13:21:13+00:00)rãrEr|rrr )r+r^r]rrr Útest_fromisoformat_utcÃsz#TestDateTime.test_fromisoformat_utcc
Cs`Gdd„d|jƒ}|ddddddd	ttd
ddƒd}| | ¡¡}| ||¡| ||¡dS)
Nc@seZdZdS)zBTestDateTime.test_fromisoformat_subclass.<locals>.DateTimeSubclassNr]rrrr rjÊsrjrhr”rür>rkrái®úr#rªr)rãrrrErÖr*rv)r+rjr]rbrrr rdÉsÿz(TestDateTime.test_fromisoformat_subclassN)<r4rIrJrrãrrr@rØr¢rür¤r¦rªr²r+rr/r²r³rr´rµrÂr»rÚrun_with_tzr¿rÀrQrÄrÆrÅÚunittestZskipIfr2ÚplatformrÈrÉrÌrÕrÚrÝràrãrär.ròrmrör÷rÿrr
rrrrrrdrrrr r~‚sn
,5D			!


()		

:""
 1#&r~c@s"eZdZeZe d¡dd„ƒZdS)ÚTestSubclassDateTimeznot appropriate for subclassescCsdSrXrrZrrr r@Ùsz#TestSubclassDateTime.test_roundtripN)r4rIrJr}rãrÚskipr@rrrr rÖsrc@seZdZdZdS)ÚSubclassTimer"Nr•rrrr rÝsrc@sÀeZdZeZdd„Zdd„Zdd„Zdd„Zd	d
„Z	dd„Z
d
d„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-S).ÚTestTimecCsH| dd¡}| |jd¡| |jd¡| |jd¡| |jd¡dS)Nr”r©rãr*rrqrpr¢r×rrr räs
zTestTime.test_basic_attributescCsL| dddd¡}| |jd¡| |jd¡| |jd¡| |jd¡dS)Nr”r©r€r r×rrr rës
z&TestTime.test_basic_attributes_nonzerocCsp| dddd¡}t|ƒ}| | d¡¡|dd…}t|ƒ}| ||¡| |j|j|j|j	¡}| ||¡dS)Nr"rBr>rDr7r>)
rãr¥rtr.r¦r*rrqrpr¢)r+r˜r?r%rrr r@ôsÿzTestTime.test_roundtripcsRddddg}|j|މ|j|Ž}| ˆ|¡| ˆ|k¡| ˆ|k¡| ˆ|k¡| ˆ|k¡| ˆ|k¡tt|ƒƒD]Ò}|dd…}||d||<|j|Ž}| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡| ˆ|k¡| |ˆk¡q~tD]ö‰| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| ˆˆkd¡| t‡‡fdd„¡| t‡‡fd	d„¡| t‡‡fd
d„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fd
d„¡| t‡‡fdd„¡| t‡‡fdd„¡qVdS)Nr"rBr>rDFTcsˆˆkSrXrrr1rr rè%réz)TestTime.test_comparing.<locals>.<lambda>csˆˆkSrXrrr1rr rè&récsˆˆkSrXrrr1rr rè'récsˆˆkSrXrrr1rr rè(récsˆˆkSrXrrr1rr rè)récsˆˆkSrXrrr1rr rè*récsˆˆkSrXrrr1rr rè+récsˆˆkSrXrrr1rr rè,ré)	rãr*rtrÌrr)r2rlrm)r+rŠr%r
r,rr1r Ú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|jdddd¡dS)	Nrr¨rÃrÜr©rñrØrþ)rãrlr·rZrrr r².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¡| ||d¡dS)Nr¨rkr­r"rBrr?r³r´rrr r+Ds$zTestTime.test_hash_equalitycCs¦| dddd¡}| | ¡d¡| | ¡t|ƒ¡| ¡}| | ¡d¡| | ¡t|ƒ¡|jdd}| | ¡d¡| | ¡t|ƒ¡|jd	d}| | ¡d
¡| | ¡t|ƒ¡|jdd}| | ¡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#dd¡dS)+NrDr?r"rëz04:05:01.000123z00:00:00©r¢z00:00:00.000001r#z00:00:00.000010r z00:00:00.000100ròz00:00:00.001000rùz00:00:00.010000i †z00:00:00.100000r”r,r-rÿ)rrqrpr¢rr„Z12rOz12:34r²z12:34:56rîz12:34:56.123r°z12:34:56.123456r†ZmonkeyrÄr‰z12:34:56.999rz12:34:56.000z12:34:56.000000)rãr*rÖr¢rlr·r×rrr rØ[sNzTestTime.test_isoformatc	CsÚdtddfdtddfdtddd	fd
tddd
dfdtdddddfg}ddtjfdttdƒƒfg}|dd„|Dƒ7}| ddd¡}d}|D]D\}}|j|d}||}|j|d| ¡|ksÊt‚W5QRXqdS)Nr‹r?rŒrŒrBrrFrrªrŽr”rkrkr×rrDr>rÿrÙrr‘rcSs2g|]*\}}dD]\}}||t||ƒf‘qqSr’rr•rrr r!žsþz4TestTime.test_isoformat_timezone.<locals>.<listcomp>r˜z12:37:09rr™r›)	r+rržZt_baserŸr ršr˜r¡rrr r¢s(û	ýþz TestTime.test_isoformat_timezonecCs"|jdd}|jt|jdddS)Nr"©rpr>)rˆ)rãrlrmrÖr×rrr Útest_1653736­szTestTime.test_1653736cCs\| dddd¡}| | d¡d¡| | d¡d¡z| d	¡Wntk
rVYnXdS)
Nr"rBr>rDz%H %M %S %fz01 02 03 000004rßràu%Hí €%M)rãr*rârãr×rrr rå²szTestTime.test_strftimec	Cs| dddd¡}| | d¡t|ƒ¡| td¡| d¡W5QRXGdd	„d	|jƒ}|ddddƒ}| | d¡d	¡Gd
d„d|jƒ}|ddddƒ}| | d¡t|ƒ¡dD]F}| | |¡| |¡¡| | |¡| |¡¡| | |¡d¡q´dS)
Nr"rBr>rDr»rêrëc@seZdZdd„ZdS)zTestTime.test_format.<locals>.AcSsdSrìrrZrrr rîÇsz'TestTime.test_format.<locals>.A.__str__Nrïrrrr ríÆsríc@seZdZdd„ZdS)zTestTime.test_format.<locals>.BcSsdSrðrròrrr râÎsz(TestTime.test_format.<locals>.B.strftimeNrôrrrr rñÍsrñ)z%H %M %Sr÷)r+r˜rírrñrrûrrr rü¾szTestTime.test_formatc	Cs| t| dddd¡ƒd¡| t| dddd¡ƒd¡| t| d	ddd
¡ƒd¡| t| dddd	¡ƒd
¡| t| ddd	d	¡ƒd¡dS)Nr"rBr>rDz01:02:03.000004r#rÅz10:02:03.004000rr8z00:02:03.400000r”z12:02:03r¨rôz23:15:00)r*r¢rãrZrrr r¤Ùs
zTestTime.test_strc	Cs°d|jj}| t| dddd¡ƒd|¡| t| dddd¡ƒd	|¡| t| d
ddd¡ƒd|¡| t| d
ddd
¡ƒd|¡| t| ddd
d
¡ƒd|¡dS)Nr7r"rBr>rDz%s(1, 2, 3, 4)r#rÅz%s(10, 2, 3, 4000)rr8z%s(0, 2, 3, 400000)r”z%s(12, 2, 3)r¨rôz
%s(23, 15)r9r:rrr r§às ÿÿÿÿÿzTestTime.test_reprcCsN| |jj|j¡| |jj|j¡| |jjt¡| |jj|jjk¡dSrX)rvrãr¡rprArrtrZrrr rBíszTestTime.test_resolution_infocCsZd}|j|Ž}tD],\}}}| ||¡}| |¡}| ||¡q| | ¡| d¡¡dS)N©râr©rŠr¯rBr
r.rrr r/ós

zTestTime.test_picklingcCsRd}t|Ž}tD]<\}}}| ||¡}| |¡}| ||¡| t|tƒ¡qdS)Nr%)rr~rr€r*rtrPr.rrr Útest_pickling_subclass_timeüs
z$TestTime.test_pickling_subclass_timec
Csnddddddg}t|ƒD]P\}\}}|j|d2|j|Ž}tD]}||dd	}| ||¡q@W5QRXqdS)
N)s,cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.r%)scdatetime
time
(U;tR.r%)s€cdatetime
time
U;…R.r%)s,cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.©râr©rÖr¯)scdatetime
time
(U;tR.r')s€cdatetime
time
U;…R.r')r
rr)r
rÞrãrr*)r+rer
rrŠrgr€r…rrr r
sõ
zTestTime.test_compat_unpicklecCsh|j}| |dƒ¡| |ddƒ¡| |dddƒ¡| |ddddƒ¡| |dƒ¡| |ƒ¡dS)Nr"r)rãrt)r+r)rrr rS
szTestTime.test_boolc
CsÐ|j}ddddg}||Ž}| || ¡¡d}dD]H\}}|dd…}|||<||Ž}|jf||iŽ}	| ||	¡|d7}q2|dƒ}|jt|jdd|jt|jd	d
|jt|jdd|jt|jd
ddS)Nr"rBr>rDr)rårærçrèrÜ©rrérqr r#rþr"r'r(rrr r.%
s"
zTestTime.test_replacecCs8Gdd„d|jƒ}|ddƒ}| t|jddƒ|¡dS)Nc@seZdZdS)z4TestTime.test_subclass_replace.<locals>.TimeSubclassNr]rrrr ÚTimeSubclass?
sr*r”rkr#r(r0)r+r*rÙrrr r1>
s
zTestTime.test_subclass_replacecs’G‡fdd„dˆjƒ}d}ˆj|Ž}||ddiŽ}ˆ |j|¡ˆ |jd¡ˆ |jd¡ˆ | ¡| ¡¡ˆ | d¡|j|jd¡dS)Ncs$eZdZdZ‡fdd„Zdd„ZdS)z&TestTime.test_subclass_time.<locals>.CrLcs0| ¡}| d¡}ˆjj|f|ž|Ž}||_|Sr2r3r5rZrr r{J
s

z.TestTime.test_subclass_time.<locals>.C.__new__cSs||j|jSrX©rrpr8rrr r:Q
sz.TestTime.test_subclass_time.<locals>.C.newmethNr;rrZrr r=G
sr=)rDr?rFr´rArLrC)	rãr*r3r<r´rÖr:rrpr?rrZr Útest_subclass_timeE
s

zTestTime.test_subclass_timec	Csld}ddtdƒdfD] }| t|j||dd…¡q| td¡ | tdgt|ƒƒd¡W5QRXdS)	Nz2:59.0r‚Ú9rÜõÿr"rWr‰)ÚchrrlrmrãrùrXr))r+r*Z	hour_byterrr rY_
s
ÿz!TestTime.test_backdoor_resistanceN)r4rIrJrrãrrr@r!r²r+rØr¢r$rårür¤r§rBr/r&rrSr.r1r,rYrrrr ràs.	+4
		
rc@s4eZdZdd„Zdd„Zdd„Zdd„Zd	d
„ZdS)Ú
TZInfoBasecCs‚|j}Gdd„dtƒ}|ddd|ƒd}|tkr4dp6d}| | ¡|¡t|tkrVd	pXd
d}| | ¡|¡| | ¡|¡dS)Nc@s eZdZdd„Zdd„ZeZdS)z7TZInfoBase.test_argument_passing.<locals>.introspectivecSs|rdp
dS)NÚrealÚnonerr\rrr r_r
réz>TZInfoBase.test_argument_passing.<locals>.introspective.tznamecSst|r
dpddS)NrLéÖÿÿÿrNrr\rrr r^s
szATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r4rIrJr_r^r`rrrr Ú
introspectiveq
sr4r"rBr>rr2r1r3rLrN)rãrrr*r_rr^r`)r+r)r4Úobjrgrrr Útest_argument_passingn
sz TZInfoBase.test_argument_passingcCsz|j}|jt|dddddGdd„dtƒ}|jt|ddd|dGdd„dtƒ}|ƒ}|ddd|d}| |j|¡dS)Nr"r”rc@seZdZdd„Zdd„ZdS)z3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTrycSsdSrXrrZrrr rW…
réz<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__cSsdSrXrr\rrr r^†
réz=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN©r4rIrJrWr^rrrr ÚNiceTry„
sr8c@seZdZdd„Zdd„ZdS)z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTrycSsdSrXrrZrrr rWŠ
réz>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__cSsdSrXrr\rrr r^‹
réz?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNr7rrrr Ú	BetterTry‰
sr9)rãrlrmÚobjectrr|)r+r)r8r9rr˜rrr Útest_bad_tzinfo_classes€
sz"TZInfoBase.test_bad_tzinfo_classesc

CsàGdd„dtƒ}|j}dD]À\}}|tkr@|ddd||ƒd}n0|tkrd|dddddd||ƒd}nd	sptd
ƒ‚|rÌt|ƒ}t|dƒ\}}d|d	kr˜d
pšd||f}	t|tƒr¶| ¡}| 	t
|ƒd|	¡q| tt
|¡qdS)Nc@seZdZdd„Zdd„ZdS)z6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.EdgycSst|d|_dSrM©rrV)r+rVrrr rW’
sz?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__cSs|jSrX)rVr\rrr r^”
sz@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNr7rrrr ÚEdgy‘
sr=))é`úÿÿF)éaúÿÿT)éŸT)rúFr"rBr>rrFrZ
impossiblerñz%c%02d:%02dr“r”z01:02:03)
rrãrrrœrrwrPÚtimetzr*r¢rlr·)
r+r=r)rVZlegitr˜Zaofsr¾r¥Útagrrr Útest_utc_offset_out_of_bounds
s 
z(TZInfoBase.test_utc_offset_out_of_boundscCs¬|j}Gdd„dtƒ}|dddƒ|ddddd|ddd|ƒdfD].}| | ¡¡| | ¡¡| | ¡¡qBGdd„dtƒ}|ddd|ƒd}| | ¡tdd¡| | ¡td	d¡| | ¡d
¡Gdd„dtƒ}|ddd|ƒd}| t	|j¡| t	|j¡| t	|j¡Gd
d„dtƒ}|ddd|ƒd}| t
|j¡| t
|j¡Gdd„dtƒ}|ddd|ƒd}| | ¡tdd¡| | ¡tdd¡dS)Nc@s$eZdZdd„Zdd„Zdd„ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C1cSsdSrXrr\rrr r^¯
réz4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetcSsdSrXrr\rrr r`°
réz.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstcSsdSrXrr\rrr r_±
réz1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameN©r4rIrJr^r`r_rrrr ÚC1®
srEr"rc@s$eZdZdd„Zdd„Zdd„ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C3cSs
tddS)Nr?rNrr\rrr r^º
réz4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetcSs
tddS)Nr@rNrr\rrr r`»
réz.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstcSsdS©NÚanamerr\rrr r_¼
réz1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNrDrrrr ÚC3¹
srHr?rNr@rGc@s$eZdZdd„Zdd„Zdd„ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C4cSsdSrFrr\rrr r^Ä
réz4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffsetcSsdSr@rr\rrr r`Å
réz.TZInfoBase.test_tzinfo_classes.<locals>.C4.dstcSsdSr¶rr\rrr r_Æ
réz1TZInfoBase.test_tzinfo_classes.<locals>.C4.tznameNrDrrrr ÚC4Ã
srIc@seZdZdd„Zdd„ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C6cSs
tddS)NièÿÿÿrŒrr\rrr r^Î
réz4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetcSs
tddS)NrÜrŒrr\rrr r`Ï
réz.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNrërrrr ÚC6Í
srJc@seZdZdd„Zdd„ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C7cSs
tddS)Nrr¯rr\rrr r^Ö
réz4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetcSs
tddS)Né¯ÿÿÿr¯rr\rrr r`×
réz.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNrërrrr ÚC7Õ
srLrr¯rK)rãrrÀr^r`r_r*rrlrmr·)r+r)rEr˜rHrIrJrLrrr Útest_tzinfo_classes¬
s6
þzTZInfoBase.test_tzinfo_classescCs’|j}Gdd„dtƒ}|ddd|ƒd}|jdd}|jdd}|jd	d}|||fD]N}|||fD]>}ttttttfD](}	|	||ƒ}
|	|j	|j	ƒ}| 
|
|¡qxqdqV|tk	rŽ|jd|ƒd
}|jd|ƒd
}|jd	|ƒd
}|||fD]¢}|||fD]’}||k||k}
||ks ||kr:||ks4||kr:d}nD||krR|kr\nnd}n"||krld}n||kszt‚d
}| 
|
|¡qøqêdS)Nc@seZdZdd„ZdS)z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetcSs$|jdkrt|jdStddSdS©Nr#rNr©©rqrr×rrr r^â
s
zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNrfrrrr ÚOperandDependentOffsetá
srPrtr>r#rr>r)rj©rqrrrÃr")
rãrrÈrrrrrrrqr*rrœ)r+r)rPr*Úd0rdr§ryr¤Úopr-rgrrr Útest_aware_compareÜ
s8	

(
zTZInfoBase.test_aware_compareN)r4rIrJr6r;rCrMrTrrrr r0l
s
0r0c@sˆeZdZeZdd„Zdd„Zdd„Zdd„Zd	d
„Z	dd„Z
d
d„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS) Ú
TestTimeTZcCsP| ¡}| |jd¡| |jd¡| |jd¡| |jd¡| |j¡dSr¶)rãr*rrqrpr¢rÀrr×rrr Ú
test_emptyszTestTimeTZ.test_emptycs"tdddƒ}tdddƒ}tddd	ƒ}td
d|d}td
d|d}tdd|d}tdd‰td|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|ƒ¡| ||¡| ||¡| ||¡| ˆˆ¡| t‡‡fdd„¡| t‡‡fdd„¡| t
|ƒd¡| t
|ƒd¡| t
|ƒd¡| t
ˆƒd¡| t
ˆƒd¡| | ¡d¡| | ¡d¡| | ¡d¡| ˆ ¡d¡| ˆ ¡d¡d}| 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}
| |
 d1¡d2¡| t|
jd3¡d4|jjkrd5|	_| t|
jd3¡dS)6Nr‡r‰r"rr®r@rñÚMETr>rArÞrr”rlé(r")r¢rrNzno argscsˆˆkSrXrr©r[Zt5rr rèBréz'TestTimeTZ.test_zones.<locals>.<lambda>csˆˆkSrXrrrYrr rèCréz07: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 +0100r?z%z %Z %%z%%Zr¨r©z%H:%M %%Z='%Z' %%z='%z'z"23:59 %Z='%z %Z %%z%%Z' %z='-2359'c@seZdZdZdd„ZdS)z(TestTimeTZ.test_zones.<locals>.BadtznamerLcSs|jSrXrÂr\rrr r_eréz/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r4rIrJr–r_rrrr Ú	BadtznamecsrZrBrDz%H:%M:%Sz02:03:04r©r;rÄ)rKrr*rrÀr^rrlrmr_r`r(r¶r¢rÖr¥râr3r4r–r·)r+Úestr Úmetr$r%rZr*ZyuckrZr˜rrYr Ú
test_zonessŒ
ÿ
ÿzTestTimeTZ.test_zonescCs”|jddddtddƒd}|jddddtddƒd}| t|ƒt|ƒ¡|jd	d
ddtd
dƒd}|jd	dddtddƒd}| t|ƒt|ƒ¡dS)Nrr"rBr>r@r»rižr¨r5rFr iüÿÿr°iüÿÿ)rãrKr*r(r#rrr Útest_hash_edge_casesoszTestTimeTZ.test_hash_edge_casesc	Csòd}|j|Ž}tD],\}}}| ||¡}| |¡}| ||¡q| | ¡| d¡¡tddƒ}|jddd|d}tD]`\}}}| ||¡}| |¡}| ||¡| |j	t¡| | 
¡tdd	¡| | ¡d¡qv| | ¡| d¡¡dS)
Nr%rBr‡rˆr?rFrArrN)
rãr~rr€r*rrrarvrr^rr_©	r+rŠrr‚rƒrr„r…Útinforrr r/ys"



zTestTimeTZ.test_picklingcCs’dddg}tddƒ}|jdddd	|d
}|D]`}tD]V}||dd}| ||t|ƒ¡| |jt¡| | ¡tdd
¡| | 	¡d¡q4q,dS)NsØcdatetime
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.sºcdatetime
time
(Uâ@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
(JÿÿÿÿJ0KtRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.sº€cdatetime
time
Uâ@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
JÿÿÿÿJ0K‡RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieub†R.r‡rˆr?rFrArÿrrrrN)
rarãrr*r¥rvrr^rr_)r+rer`rgrr€r…rrr rsñ
zTestTimeTZ.test_compat_unpicklecCs||j}|dtddƒd}| |¡|dtddƒd}| |¡|dtddƒd}| |¡|ddtd	dƒd}| |¡dS)
Nrr‡r»rr?i,r¨r©r@)rãrKrt)r+r)r˜rrr Útest_more_bool±s


zTestTimeTZ.test_more_boolcCsX|j}tddƒ}ttdddƒ}dddd	|g}||Ž}| || ¡¡d
}ddd
dd|ffD]H\}}|dd…}	||	|<||	Ž}
|jf||iŽ}| |
|¡|d7}q\| | ¡d¡|jdd}| |j¡| | ¡¡|j|d}
| ||
¡| |j|
j¡|dƒ}|j	t
|jdd|j	t
|jdd|j	t
|jdd|j	t
|jdddS)Nr ú+100é8ÿÿÿrNú-200r"rBr>rDrrårærçrèrrrÜr(rÃr)r#rþr"©rãrKrr*rÈr_rÀrr|rlr·©r+r)Zz100Zzm200rŠr*r
r0r+r,rgr-Zbase2Zbase3rrr r.Ás>
ü
zTestTimeTZ.test_replacecCs| ddd¡}| ddd¡}| ||¡|jdd}| ||¡|jtddƒd}| ||¡|jtddƒd}| ||¡Gdd„dtƒ}|ƒ}|j|d}|j|d}| | ¡td	d
¡| | ¡tdd
¡| ||¡|j|ƒd}| ||k¡dS)Nr"rBr>rr»rc@seZdZdd„Zdd„ZdS)z-TestTimeTZ.test_mixed_compare.<locals>.VariescSstdd|_dS©NrËrNr<rZrrr rWõsz6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd7_|jS©Nr"rN©rVrr×rrr r^÷sz7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr7rrrr ÚVariesôsrjr¨rNrÜ)	rãr*rÈrKr¶rr^rrt©r+r$r%rjÚvrrr rès$zTestTimeTZ.test_mixed_comparecCs´ddg}d}d}d}d}|tt ||||¡ƒ7}dtjttddƒttd	d
dƒg}|D]V}|D]L}|j|d|iŽ}	|	 ¡}
|j|
d
|j 	|
¡}| 
|	|¡W5QRXq`qXdS)Nrø)r¨r©r©rØ)r>r”râ)r?rk)rDrá)ri½iõ[
rBrŒrFrrªrr)rzÚ	itertoolsÚproductrr rrãrÖrÞrEr*)r+Z
time_examplesZhhZmmÚssZusecržZttupršr˜rÚt_rtrrr rcs&þþzTestTimeTZ.test_fromisoformatc
CsØ| dddd¡}tddtddtdd	d
tddddtdd
dddg}|dd„|Dƒ7}dtjttddƒg}|dd„|Dƒ7}|D]L}|j|d}| ¡}|j|d"|j |¡}||ksÈt|ƒ‚W5QRXq†dS)Nr”rkrárr?rŒrBrFrrªrkr×rDr>rÿrÙcSsg|]}d|‘qSrrrrrr r!*sz:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|ƒ‘qSrrrrrr r!/srrr)r+Z	base_timerržršr˜rrprrr r s$
üÿz&TestTimeTZ.test_fromisoformat_timezonecCsòddg}dtjttddƒttddƒttdddƒg}d	d
ddd
g}t|ƒD]ž\}}|D]}|D]†}|dkrd|dd}|dd…|f}|j|dd|…d|iŽ}	|	j|d}
|j|
d|j |
¡}| |	|¡W5QRXqbqZqNdS)N)rtr­rárÿ)rtr­rárrÂrŒrBrFrrªrrOr²rîr°ròrÃrr"rr„rr)r+Z
time_basesržrrrÁršZt_tuplerr˜rrprrr r9s.þýÿz'TestTimeTZ.test_fromisoformat_timespecscCsvddddddddd	d
ddd
ddddddddg}|D]>}|j|d(| t¡|j |¡W5QRXW5QRXq2dS)Nr»u12í €00z12: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:30arrrerrr rgTs4ëz#TestTimeTZ.test_fromisoformat_failsc
CsHddl}dd| d¡g}|D]&}| t¡|j |¡W5QRXqdS)Nrs12:30:45z12:30:45rhrkrrr rlrs
z-TestTimeTZ.test_fromisoformat_fails_typeerrorcCsPGdd„d|jƒ}|ddddtjd}| | ¡¡}| ||¡| ||¡dS)Nc@seZdZdS)z<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNr]rrrr r*}sr*r”rüráiár)rãrr rErÖr*rv)r+r*ZtscZtsc_rtrrr rd|s
z&TestTimeTZ.test_fromisoformat_subclasscs¤G‡fdd„dˆjƒ}ddddtddd	ƒf}ˆj|Ž}||d
diŽ}ˆ |j|¡ˆ |jd¡ˆ |jd¡ˆ | ¡| ¡¡ˆ | d
¡|j|j	d¡dS)Ncs$eZdZdZ‡fdd„Zdd„ZdS)z*TestTimeTZ.test_subclass_timetz.<locals>.CrLcs0| ¡}| d¡}ˆjj|f|ž|Ž}||_|Sr2r3r5rZrr r{‹s

z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__cSs||j|jSrXr+r8rrr r:’sz2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNr;rrZrr r=ˆsr=rDr?rFéôr‡r‰r"r´rArLrC)
rãrKr*r3r<r´r^r:rrpr?rrZr Útest_subclass_timetz†s

zTestTimeTZ.test_subclass_timetzN)r4rIrJrrãrVr]r^r/rrar.rrcrrrgrlrdrsrrrr rU
s W
"'

rUc@sîeZdZeZdd„Zdd„Zdd„Zdd„Zd	d
„Z	dd„Z
d
d„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Ze d%¡d&d'„ƒZe d(¡d)d*„ƒZe d(¡d+d,„ƒZd-d.„Zd/d0„Zd1d2„Zd3S)4ÚTestDateTimeTZc	CsŠ| ddddddd¡}| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |jd¡| |j	d¡dS)Nr"rBr>rDr?rFrA)
rãr*r˜r™rHrrqrpr¢rr\rrr Útest_trivial¦szTestDateTimeTZ.test_trivialcsT|jdddtddƒd‰|jtdddddd	td
dƒd‰| ˆˆk¡| ˆˆk¡| ˆˆk¡| ˆˆ¡| ˆˆ¡|jdddddtddƒd‰|jddddd
tddƒd‰| ˆˆ¡|jdddddtddƒd‰| ˆˆk¡|jdddddtddƒd‰| ˆˆk¡|jdddddtddƒdd‰| ˆˆk¡|jdddddtddƒdd‰| ˆˆk¡|jj‰| ˆˆ¡| ˆˆ¡| t¡ˆˆkW5QRXGdd„dt	ƒ}|jddd|ƒd‰| ˆˆ¡| ˆˆ¡| ddd¡‰| ˆˆ¡Gdd„dt	ƒ}|jddd|ƒd‰|jdddtddƒd‰| t
‡‡fdd„¡dS)Nr"r@r»rr”rr¨r©rØr?rBr>rléÃr)rrp)rr¢c@seZdZdd„ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.NaivecSsdSrXrr\rrr r^äréz>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNrfrrrr ÚNaiveãsrwr?rFrAc@seZdZdd„ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.BoguscSs
tddS)NrúrNrr\rrr r^ðsz>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNrfrrrr rìïsrìcsˆˆkSrXrr©r$r%rr rèôréz7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)rãrKrrtr*r¡r¶rlrmrr·)r+rwrìrrxr Útest_even_more_compare±sNÿÿÿz%TestDateTimeTZ.test_even_more_comparec	Cs
d}|j|Ž}tD],\}}}| ||¡}| |¡}| ||¡q| | ¡| d¡¡tddƒ}|j|d|iŽ}|jdddtdddƒd	}tD]`\}}}| ||¡}| |¡}| ||¡| 	|j
t¡| | ¡tdd
¡| | 
¡d¡qŽ| | ¡| d¡¡dS)Nr®rBr‡rˆrr"rr»rrN)rãr~rr€r*rrrarKrvrr^rr_r_rrr r/ös$



zTestDateTimeTZ.test_picklingcCsŒdddg}d}tddƒ}|j|d|iŽ}|D]Z}tD]P}||dd	}| ||¡| |jt¡| | ¡tdd
¡| | ¡d¡q4q,dS)Nsécdatetime
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.sÂcdatetime
datetime
(U
ß;â@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
(JÿÿÿÿJ0KtRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.s€cdatetime
datetime
U
ß;â@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
JÿÿÿÿJ0K‡RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieub†R.)rrjrrâr©r"rÿr‡rˆrrrrN)	rarãrr*rvrr^rr_)r+rerŠr`rgrr€r…rrr r
sï
z#TestDateTimeTZ.test_compat_unpicklecCsr|jdddtddƒd}t|ƒ|jtdddddd	td
dƒd}t|ƒ|jdddtddƒd}| tt|¡dS)
Nr"r@r»rr”rr¨r©rØr?r?r>)rãrKr(rrlr·r×rrr Útest_extreme_hashes2sÿz"TestDateTimeTZ.test_extreme_hashescCsÊtddƒ}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|ƒd¡d}| t	|ƒ|d¡| t	|ƒ|d¡| t	|ƒ|d¡dS)Nr‡r‰rr®rñrWr—r>rnrArÞrr”rlrNz2002-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))
rKrr*rr^rr_r(r¢r¥)r+r[r r\r$r%rZr*rrr r]@s8


zTestDateTimeTZ.test_zonesc
CsXtddƒ}tdddƒ}tdddd|d	}t ||¡}| |tddddddd|d	¡dS©
NrñrWr—r>rDr£rárâr)rKrrrrHr*)r+r\r*r–r]rrr rä^s
ÿzTestDateTimeTZ.test_combinec
Csxtddƒ}|jddddddd|d	}| | ¡tdddƒ¡| | ¡tddddƒ¡| | ¡tdddd|d	¡dSr{)rKrãr*rrrA)r+r\r]rrr rãfs

zTestDateTimeTZ.test_extractc
st|j ¡‰tddƒ}ˆ ¡j|d}|j ˆ ¡|¡‰| ˆj|¡| 	ˆ 
¡|¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡fd	d„¡| 	ˆˆt
d
ƒ¡| 	ˆˆt
d
ƒ¡t
ddd
d‰ˆˆ‰| ˆj|¡ˆˆ}| |j|¡| 	ˆ|¡ˆˆ}| |j|¡| 	ˆ|¡| t‡‡fdd„¡| 	ˆˆˆ¡tt dd¡dƒ}ˆj|d‰| ˆj|¡ˆˆ}ˆ ¡ˆ ¡ˆ}| 	||¡|jdddtddƒd}|jtddddddtddƒd}	|	|}
| 	|
|jj|jjt
dd¡ttdƒ}ttdƒ}|j|d|	j|d‰| 	ˆ|jj|jj¡dS)Ni¶þÿÿz	west 5:30rcsˆˆSrXrr©rwÚnowawarerr rèvréz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>csˆˆSrXrrr|rr rèwrécsˆˆSrXrrr|rr rèzrécsˆˆSrXrrr|rr rè{récsˆˆSrXrr)r}rr rè|rérr"r”i.)rìrOr°csˆˆSrXrr)rÛÚnowawareplusrr rèrér?rúZrandomtimezoner@r¡rr¨r©rØrpi>rNrírñ)rãrwrKrrÈrHrr|rr*rArlrmrreÚ	randranger^rrpr¡rr¼)
r+Ztz55Z	timeawareZ
nowawareplus2r¼Ztzrr-rgr¡rpZmaxdiffZtzaZtzbr)rÛrwr}r~r Útest_tz_aware_arithmeticmsT

ÿÿ

z'TestDateTimeTZ.test_tz_aware_arithmeticcCs.|jj}|ƒ}tddƒ}||ƒ}||d}| |j|j¡| | ¡tdd¡| t	|d¡|jt	|dd|jt	||d| t	|||¡tdd	dƒ}ttd
ddd
dƒt
td
ddd
ƒfD]h}tdƒD]P}t |¡}	| |	j|¡t 
¡j|d}
|
 |¡}t|	|ƒtddkrÌqÀqÌ| d¡qÀdS)NrLÚ42rÂrNrŠr©r`rr rôr5rªÚweirdtzr>rkr±z0utcnow(), now(tz), or astimezone() may be broken)rãrwrKr|rr*r^rrlrmrrrrÊrÈrïrZfail)r+Úmethr*Úoff42ÚanotherÚagainr rƒr½rwrÊZnow2rrr Útest_tzinfo_now®s.

ÿ

zTestDateTimeTZ.test_tzinfo_nowcCs
ddl}|jj}| ¡}||ƒ}tddƒ}|||ƒ}|||d}| |j|j¡| | ¡tdd¡| 	t
||d¡|j	t
||dd|j	t
|||d| 	t
||||¡| 	t
|¡d	}t |¡}	td
dd}
t|
d
dƒ}|	|
}t ||¡}
| ||
j
dd¡dS)NrrLrrÂrNrŠrr‚rCiñÿÿÿé'rªr–)rrãrÀrKr|rr*r^rrlrmrrºrÈ)r+rr„rÁr*r…r†r‡rIZutcdatetimer^r–rgr-rrr Útest_tzinfo_fromtimestampÓs*


z(TestDateTimeTZ.test_tzinfo_fromtimestampcCs:|jj}|ƒ}tddƒ}| t||¡|jt||ddS)NrLrr)rãrÊrKrlrm)r+r„r*r…rrr Útest_tzinfo_utcnowös

z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}| ¡}||ƒ}tddƒ}| t|||¡|jt|||ddS)NrrLrr)rrãrºrKrlrm)r+rr„rÁr*r…rrr Útest_tzinfo_utcfromtimestamps
z+TestDateTimeTZ.test_tzinfo_utcfromtimestampcCshGdd„dtƒ}|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|dƒd	j¡| 
t|ddd|dƒd	j¡dS)Nc@seZdZdd„Zdd„ZdS)z1TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DSTcSst|tƒrt|d}||_dSrM©rPrQrÚdstvalue©r+rŽrrr rWs

z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__cSs|jSrX©rŽr\rrr r`sz5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN©r4rIrJrWr`rrrr ÚDSTsr’))éßÿÿÿr")rÛr")rr)NrÃr"r#rârkrXrrryr@r?rúr>)rrãrçr*rrrrrrrr	r
rlrmr·)r+r’r)rŽÚflagr*r˜rrr Útest_tzinfo_timetuples&""z$TestDateTimeTZ.test_tzinfo_timetuplecsøGdd„dtƒ‰|j}| t|dddˆdƒdj¡G‡fdd„dˆƒ}dD]Ì}|dd	d
ddd
d|d|ƒd}| ¡}| |j|j¡| |j	|j
¡| |j|j¡| d|j
¡| d|j¡| |j|j¡| | ¡|j¡| | ¡tdddƒ ¡d|j¡| d|j¡qL|dd	d
ddd
dƒ}| ¡}| |dd…| ¡dd…¡| d|j¡Gdd„dˆƒ}|dd	d
ddd
d|ƒd}| ¡}| |dd…| ¡dd…¡| d|j¡Gdd„dˆƒ}|dd	d
ddd
d|ƒd}| t|j¡|dddddddƒ}tjtjtjfD]>}|j|d}	| |	 ¡dd…|	 tj¡ ¡dd…¡q |tddddd|dƒd}
| t |
j¡|t!ddd d!dd"|d#ƒd}| t |j¡|jjtt"ƒd}
| t |
j¡|jjtt"ƒd}| t |j¡dS)$Nc@seZdZddd„Zdd„ZdS)z-TestDateTimeTZ.test_utctimetuple.<locals>.DSTrcSst|tƒrt|d}||_dSrMrrrrr rW2s

z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__cSs|jSrXrr\rrr r`6sz1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dstN)rr‘rrrr r’1s
r’r"rrcs"eZdZd‡fdd„	Zdd„ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNcsˆ ||¡t|d|_dSrM)rWrÚuofs)r+r–Zdofs©r’rr rW?sz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__cSs|jSrX)r–r\rrr r^Bsz8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffset)Nr7rr—rr ÚUOFS>sr˜)r“rÛrNrBr>r#rârkrXiËÿÿÿrjrlrÃc@seZdZdd„ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFScSsdSrXrr\rrr r^\sz8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNrfrrrr ÚNOFS[sr™c@seZdZdd„ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFScSsdS)Nr‰rr\rrr r^dsz8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNrfrrrr ÚBOFScsršrrürôrŠi+Ÿr˜r@r”rr¨r©rØr?)#rrãrlrqr^Zutctimetupler*r˜rr™rrHrrrrprrÉrrŸrr	r
rçrmrr¡r rprÈrïrrDrrÒ)r+r)r˜rŽr*r˜r™ršr–ZdtzrGZhugerr—r Útest_utctimetuple0s\ÿÿ  ÿz TestDateTimeTZ.test_utctimetuplecCstddƒ}tddƒ}tddƒ}tddƒ}|j}d}d||||fD]Ì}d	D]Â}|d
ddd
dd||d}	d|rndppd}
|dk	r„|	 ¡p†d}|
|}|	 ¡}
| |
|d|¡| |
|	 d¡¡| |	 d¡|d|¡| |	 d¡|d|¡| t|	ƒ|d|¡qHq@dS)Nrr‘éÜz+03:40iÿÿÿz-03:51r»z
0001-02-03)riyr"rBr>rDr?r©rz04:05:59z.987001rUÚkuሴr‚)rKrãr_rÖr*r¢)r+rZplusZminusÚunknownr)ZdatestrZofsr	r*ZtimestrZofsstrZtailstrZisorrr Útest_tzinfo_isoformat€s$



z$TestDateTimeTZ.test_tzinfo_isoformatc	Cs2|j}tddƒ}ttdddƒ}dddd	d
dd|g}||Ž}| || ¡¡d
}dddddddd|ffD]H\}}|dd…}	||	|<||	Ž}
|jf||iŽ}| |
|¡|d7}qh| | ¡d¡|jdd}| |j¡| | ¡¡|j|d}
| ||
¡| |j|
j¡|dddƒ}|j	t
|jdddS)Nr rbrcrNrdr"rBr>rDr?rFrArr#r$r%rårærçrèrrr‘r¬r¯r&rerfrrr r.•s>
ù
zTestDateTimeTZ.test_replacecCsDtddƒ}tddƒ}ttdddƒ}|jj|d}| |j|¡| t|j|¡| |j¡}| |j|¡| 	| 
¡| 
¡¡| 	| ¡| ¡¡| |¡}| |j|¡| 	| ¡tdd¡|| ¡}|| |¡7}|j
|d	}| 	| 
¡| 
¡¡| 	| ¡| ¡¡| 	| ¡| ¡¡| |j|j¡| 	||¡dS)
NÚNoneréZ44r?rŒZm300rÂrÂr)rKrrãrwr|rrlr·rïr*rrr^rÈrA)r+ZfnoneZf44mZfm5hr]ryr-rgrrr Útest_more_astimezone¼s*


z#TestDateTimeTZ.test_more_astimezoner®cCs4|j tj¡}| | d¡|¡| | ¡|¡dSrX)rãrwrr r*rïr\rrr Útest_astimezone_default_utcÙsz*TestDateTimeTZ.test_astimezone_default_utcr¼cCs€|jdddddtjd}| ¡}| ||¡| | d¡d¡|jdddd	dtjd}| ¡}| ||¡| | d¡d
¡dS)Nr/rjrDrFrkrröz	-0500 ESTr?z	-0400 EDT)rãrr rïr*râ)r+r]rÉrrr Útest_astimezone_default_easternász.TestDateTimeTZ.test_astimezone_default_easterncCs8tddddtjd}| ¡}| ¡}| |j|j¡dS)Nrrjr"r?r)rrr rïr*r)r+r—r˜r?rrr Ú!test_astimezone_default_near_foldìsz0TestDateTimeTZ.test_astimezone_default_near_foldc
Csœ|j}Gdd„dtƒ}|ddddddd	|ƒd
}|jdd}|jdd}|jdd}|||fD]:}|||fD]*}||}	t|j|jd
}
| |	|
¡qlq^|ddddddd	ƒ}|jd|ƒd}|jd|ƒd}|jd|ƒd}|||fD]®}|||fD]ž}||}	||ks||kr4||ks*||kr4tdƒ}
nT||krL|krZnn
tdƒ}
n.||krptdd
}
n||ks~t‚tdd
}
| |	|
¡qöqèdS)Nc@seZdZdd„ZdS)zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetcSs$|jdkrt|jdStddSdSrNrOr×rrr r^ús
zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNrfrrrr rPùsrPrtr>r#rjr”rlrürr>r)rNrQriÐÿÿÿr°)rãrrÈrrqr*rœ)r+r)rPr*rRrdr§ryr¤r-rgrrr Útest_aware_subtractôs6	(



z"TestDateTimeTZ.test_aware_subtractcCstdddddddƒ}tdddddddƒ}| ||¡|jdd}| ||¡|jtdd	ƒd}| ||¡|jtd
d	ƒd}| ||¡Gdd„dtƒ}|ƒ}|j|d}|j|d}| | ¡td
d¡| | ¡tdd¡| ||¡|j|ƒd}| ||k¡dS)Nr"rBr>rDr?rFrArr»rc@seZdZdd„Zdd„ZdS)z1TestDateTimeTZ.test_mixed_compare.<locals>.VariescSstdd|_dSrgr<rZrrr rW-sz:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd7_|jSrhrir×rrr r^/sz;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr7rrrr rj,srjr¨rNrÜ)	rr*rÈrKr¶rr^rrtrkrrr r s$z!TestDateTimeTZ.test_mixed_comparecsªG‡fdd„dˆjƒ}ddddddd	td
ddƒf}ˆj|Ž}||d
diŽ}ˆ |j|¡ˆ |jd¡ˆ |jd¡ˆ | ¡| ¡¡ˆ | d¡|j|j	d¡dS)Ncs$eZdZdZ‡fdd„Zdd„ZdS)z2TestDateTimeTZ.test_subclass_datetimetz.<locals>.CrLcs0| ¡}| d¡}ˆjj|f|ž|Ž}||_|Sr2r3r5rZrr r{Cs

z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__cSs||j|jSrX)rr˜r8rrr r:Jsz:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNr;rrZrr r=@sr=r—r”rrDr?rFrrr‡r‰r"r´rArLrC)
rãrKr*r3r<r´r^r:rr˜r?rrZr Útest_subclass_datetimetz>s

z'TestDateTimeTZ.test_subclass_datetimetzN)r4rIrJrrãruryr/rrzr]rärãr€rˆrŠr‹rŒr•r›rŸr.r¡rrr¢r£r¤r¥rr¦rrrr rt£s8E%A%#
$P'



,rtcCs d| ¡}|r|t|ƒ7}|S)NrF)rÉr)r]Z
days_to_gorrr Úfirst_sunday_on_or_afterZsr§rNrŒrïrDrBrÖc@s4eZdZdd„Zdd„Zdd„Zdd„Zd	d
„ZdS)Ú
USTimeZonecCs"t|d|_||_||_||_dS©NrŒ©rÚ	stdoffsetÚreprnameÚstdnameÚdstname©r+rr¬r­r®rrr rWnszUSTimeZone.__init__cCs|jSrX©r¬rZrrr r[tszUSTimeZone.__repr__cCs| |¡r|jS|jSdSrX©r`r®r­r\rrr r_ws
zUSTimeZone.tznamecCs|j| |¡SrX©r«r`r\rrr r^}szUSTimeZone.utcoffsetcCs¼|dks|jdkrtS|j|ks$t‚ttj|jdƒ}| ¡dkrV|jdkrV|j	dksZt‚tt
j|jdƒ}| ¡dkrŒ|jdkrŒ|j	dkst‚||jddkr¬|kr´nntStSdS©Nr&rFrDrAr#rÖr)rr«rœr§ÚDSTSTARTrÈr˜rÉr™rHÚDSTENDr¼©r+r]r9Úendrrr r`€s$$ zUSTimeZone.dstN©r4rIrJrWr[r_r^r`rrrr r¨ls
r¨rÂrÇr‰rêrGÚCentralZCSTZCDTrCÚMountainZMSTZMDTiøÿÿÿÚPacificZPSTZPDTr®i0ýÿÿZUTCfakec@sdeZdZeddddƒZeddddƒZeZdd	„Zd
d„Zdd
„Z	dd„Z
dd„Zdd„Zdd„Z
dS)ÚTestTimezoneConversionsr—rDrArBr#rr"c
Cs| | ¡t¡| | |¡|¡| |¡}| |¡}| ¡| ¡krŠ|jdkrŠ| |t|¡| | ¡t¡| | |¡| |¡¡n| ||¡|t}| |¡}	| ¡| ¡krþ|jdkrþ| |	|jdd¡|t7}| |¡}	| |	|jdd¡n| |	|t¡dS)NrBrr"r()r*r`r¼rïrrr«rÈ)
r+r]r–r ÚdstonÚdstoffÚasutcÚthere_and_backZnexthour_utcZnexthour_tzrrr Úcheckinside§s&


ÿ


z#TestTimezoneConversions.checkinsidecCsF| | ¡t¡| | |¡|¡| |¡}| |¡}| ||¡dSrX)r*r`r«rï)r+r]r–r r¿rÀrrr ÚcheckoutsideÛs


z$TestTimezoneConversions.checkoutsidec	Cs²|jj|d}|jj|d}tddtttddtddfD]p}| |||||¡||||fD]}| |||||¡qb| |||¡||||fD]}| |||¡q˜q<dS)Nrrlrðr"rNr¯)r½rÈr¾rÚDAYr¼rÁrÂ)r+r–r r½r¾rÛZduringZoutsiderrr Úconvert_between_tz_and_utcæsüz2TestTimezoneConversions.convert_between_tz_and_utccCsL| tt¡| tt¡| tt¡| tt¡| tt¡| tt¡dSrX)rÄrÇÚutc_realr»Úutc_fakerZrrr Ú	test_easyüsz!TestTimezoneConversions.test_easyc	CsH|jtdd}tdddƒ}|j|d}|jjdd}| t¡jdd}| ||¡|jjd	td
}|jjdd}| t¡jdd}| ||¡ttfD]ª}tt	fD]œ}|j
tdd}|| d¡8}|| d¡}	|	j|d}
d
D]Z}|j
j|d}dD]:}
|j|
d}|
j|
d}	|	 |¡}| |jdd|¡qú|
t7}
qäq¤q˜dS)NrDrŒiäýÿÿz-0900rrr>r(rF©rrr"rB)rr"r"rB©rrkr©r))
r½rrKrÈrïrÇr*rÅrÆr»r¾r^r¼)r+ZfourbackZninewestrgr-Zsixutcr r–Zfirst_std_hourr¿Z	asutcbaseZtzhourZexpectedbaserqZastzrrr Útest_trickys0
z#TestTimezoneConversions.test_trickycCsŒGdd„dtƒ}|j ¡jtd}| |ƒ¡Gdd„d|ƒ}| t|j|ƒ¡Gdd„d|ƒ}| dd	d	¡jtd}| t|j|ƒ¡dS)
Nc@seZdZdd„Zdd„ZdS)z2TestTimezoneConversions.test_bogus_dst.<locals>.okcSstSrX©r¼r\rrr r^Iréz<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetcSstSrXrËr\rrr r`Jréz6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNrërrrr ÚokHsrÌrc@seZdZdd„ZdS)z5TestTimezoneConversions.test_bogus_dst.<locals>.notokcSsdSrXrr\rrr r`Rréz9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN©r4rIrJr`rrrr ÚnotokQsrÎc@seZdZdd„ZdS)z<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokcSs|jdkrdSdtSdS)Nr‘r#)r˜r¼r\rrr r`Zs
z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dstNrÍrrrr Útricky_notokYsrÏr¯r")rrãrwrÈrÅrïrlr·)r+rÌrwrÎrÏr]rrr Útest_bogus_dstGsz&TestTimezoneConversions.test_bogus_dstc
CsÞ| ttj¡t ¡jtd}| ttj|¡|jtd}t |¡}| 	|j
t¡| ttj||¡| ttjt ¡¡Gdd„dt
ƒ}|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@seZdZdd„ZdS)z<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonecSs
||jSrX)r«r\rrr r•nszDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN©r4rIrJr•rrrr ÚFauxUSTimeZonemsrÒrÂÚFEasternZFESTZFEDTrDrÈ)r¨rr"r>rDr?r(r¨r"rï)rr"r"rBr>rD)rlrmrÇr•rrÊrÈrÅr·r*rrršr¨r½rr«rïr¼r¾)
r+rwZenowrÒrÓr9ZfstartZwallrgr-rrr rÊbsL







z$TestTimezoneConversions.test_fromutcN)r4rIrJrr½r¾rãrÁrÂrÄrÇrÊrÐrÊrrrr r¼Ÿs43r¼c@s$eZdZdd„Zdd„Zdd„ZdS)ÚOddballscsžt ¡‰t ˆtƒ¡‰| ˆˆk¡| ˆˆk¡| ˆˆk¡| ˆˆk¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fdd„¡| t‡‡fd	d„¡| 	ˆ 
ˆ¡d
¡ˆjddd}ˆj|d
}| 	ˆ 
|¡d¡t
ˆjˆjˆjƒ}| 	ˆ|¡| 	|ˆ¡tˆjˆjˆjdddƒ}| 	ˆ|¡| 	|ˆ¡dS)NcsˆˆkSrXrr©Zas_dateZas_datetimerr rè­réz+Oddballs.test_bug_1028306.<locals>.<lambda>csˆˆkSrXrrrÕrr rè®récsˆˆkSrXrrrÕrr rè¯récsˆˆkSrXrrrÕrr rè°récsˆˆkSrXrrrÕrr rè±récsˆˆkSrXrrrÕrr rè²récsˆˆkSrXrrrÕrr rè³récsˆˆkSrXrrrÕrr rè´réTr"râ)rHFr)rršrrHrrtrÌrlrmr*Ú__eq__rHrÈr”r˜r™r})r+Z
different_dayZas_differentZdate_scZdatetime_scrrÕr Útest_bug_1028306¤s:
ÿzOddballs.test_bug_1028306c
CsJt ¡tƒt ¡tƒtƒttƒƒfD] }| t	¡d|_
W5QRXq$dSrJ)rršrrrÊrrrrlÚAttributeErrorr$)r+ryrrr Útest_extra_attributesÉsûzOddballs.test_extra_attributesc
CsGdd„dƒ}t d¡t d¡|dƒfD]F}| t¡2| tdddddddƒt|||||||ƒ¡W5QRXq(| td¡tdddƒW5QRX|dƒ}| td¡tdd|ƒW5QRXGd	d
„d
tƒ}|dƒ}| td¡tdd|ƒW5QRX| 	t¡tdddƒW5QRX| 	t¡tdddƒW5QRX| 	t¡tdddƒW5QRX| 	t¡tddddƒW5QRX| 	t¡tdddddƒW5QRX| 	t¡tddddddƒW5QRX| 	t¡tdddddddƒW5QRXdS)
Nc@seZdZdd„Zdd„ZdS)z-Oddballs.test_check_arg_types.<locals>.NumbercSs
||_dSrX©Úvalue)r+rÛrrr rWÕsz6Oddballs.test_check_arg_types.<locals>.Number.__init__cSs|jSrXrÚrZrrr Ú__int__×sz5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r4rIrJrWrÜrrrr ÚNumberÔsrÝr#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.<locals>.FloatNr]rrrr ÚFloatêsrÞz&^integer argument expected, got float$g$@)
ÚdecimalZDecimalZassertWarnsÚDeprecationWarningr*rrùrmr~rl)r+rÝZxxZf10rÞZs10rrr Útest_check_arg_typesÓs@þÿzOddballs.test_check_arg_typesN)r4rIrJr×rÙrárrrr rÔ¢s%
rÔc@seZdZdd„ZdS)Útzinfo2cCsÞt|tƒstdƒ‚|j|k	r$tdƒ‚|jdd ¡}|jdd ¡}|dks`|dks`| ¡dkrdt‚||krˆ||}| ¡}||krˆ|S||fD]@}||}| ¡|kr°|S|jdd}| ¡|kr|Sqtdƒ‚dS)ú*datetime in UTC -> datetime in local time.ú&fromutc() requires a datetime argumentúdt.tzinfo is not selfrr«r"NzNo suitable local time found)rPrrmrr·rÈr^r`)r+r]Zoff0Zoff1ÚldtZoffrrr r•s*


ztzinfo2.fromutcNrÑrrrr râsrâc@s4eZdZdd„Zdd„Zdd„Zdd„Zd	d
„ZdS)ÚUSTimeZone2cCs"t|d|_||_||_||_dSr©rªr¯rrr rW)szUSTimeZone2.__init__cCs|jSrXr°rZrrr r[/szUSTimeZone2.__repr__cCs| |¡r|jS|jSdSrXr±r\rrr r_2s
zUSTimeZone2.tznamecCs|j| |¡SrXr²r\rrr r^8szUSTimeZone2.utcoffsetcCs|dks|jdkrtS|j|ks$t‚ttj|jdƒ}| ¡dkrV|jdkrV|j	dksZt‚tt
j|jdƒ}| ¡dkrŒ|jdkrŒ|j	dkst‚|jdd}|t|kr´|kr¼nntS||krÔ|tkrænn|jrâtStS||kr|tkrnn|jrtStStSdSr³)
rr«rœr§r´rÈr˜rÉr™rHrµr¼r¬r¶rrr r`;s$$ zUSTimeZone2.dstNr¸rrrr rç's
rçÚEastern2ÚCentral2Ú	Mountain2ÚPacific2c@s<eZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
S)ÚEurope_Vilnius_1941cCs$tdddd|dtdddd|dgS)Né•rFr¨rirrË©rrZrrr Ú	_utc_foldlsÿzEurope_Vilnius_1941._utc_foldcCs$tdddd|dtdddd|dgS)NrírFr¨rrÜrrîrZrrr Ú	_loc_foldpsÿzEurope_Vilnius_1941._loc_foldcCs>| ¡\}}||krdtS||kr6|jr.dndtSdtS)Nr>rB©rðr¼r¬©r+r]Z
fold_startZ	fold_stoprrr r^tszEurope_Vilnius_1941.utcoffsetcCs>| ¡\}}||krdtS||kr6|jr.dndtSdtS)Nrr"rñròrrr r`}szEurope_Vilnius_1941.dstcCs.| ¡\}}||krdS||kr*d|jSdS)NÚMSK)róÚCESTrô)rðr¬ròrrr r_†s
zEurope_Vilnius_1941.tznamecCsr|jdkst‚|j|kst‚|jdkr*t‚| ¡\}}||krJ|dtS||krf|dtjddS|dtS)Nrrír>rBr"r«)r¬rœrr˜rqrïr¼rÈròrrr r•s
zEurope_Vilnius_1941.fromutcN)	r4rIrJrïrðr^r`r_r•rrrr rìks			rìc@sîeZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	e
 d¡dd„ƒZe
 d¡dd„ƒZ
dd„Ze
 d¡dd„ƒZe
 d¡dd„ƒZe
 d¡dd„ƒZdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/S)0ÚTestLocalTimeDisambiguationc	Csòtƒ}tddddddtjd}| |¡}| | d¡d¡| |jd	¡| | 	¡¡tdddd
tjd}| |¡}| | d¡d¡| |jd¡| 
| 	¡¡tdddd
tjd}| |¡}| | d¡d¡| |jd	¡| 
| 	¡¡dS)NrírFr¨râr©rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rriz"Mon Jun 23 23:00:00 1941 CEST+0200r"rËz"Tue Jun 24 00:00:00 1941 CEST+0200)rìrrr rïr*râr¬rÌr`rt)r+ÚVilniusÚgdtrærrr Útest_vilnius_1941_fromutcŸs,
ÿ
ÿ
ÿz5TestLocalTimeDisambiguation.test_vilnius_1941_fromutcc
CsØtƒ}tdddddd|d}| tj¡}| | d¡d¡tdddddd|d}| tj¡}| | d¡d	¡tdddddd|d
d}| tj¡}| | d¡d¡tddd
d|d}| tj¡}| | d¡d¡dS)NrírFr¨rËr©rz%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr")rr¬zMon Jun 23 21:59:59 1941 UTCrÜrzMon Jun 23 22:00:00 1941 UTC)rìrrïrr r*râ)r+rörær÷rrr Útest_vilnius_1941_toutc·s*ÿÿÿÿz3TestLocalTimeDisambiguation.test_vilnius_1941_toutcc	Csdtddd}tddddd}| |jd¡| |jd¡| t¡tddddddƒW5QRXdS©Nrr"r«)rrr*r¬rlrm©r+r˜r]rrr Útest_constructorsÎsz-TestLocalTimeDisambiguation.test_constructorscCs@tddddd}| ¡}| |jd¡| ¡}| |jd¡dS)Nr"r«)rrr*r¬rA)r+r]r˜rrr Útest_memberÖs
z'TestLocalTimeDisambiguation.test_membercCsTtdƒ}tdddƒ}| |jddjd¡| |jddjd¡| |jddjd¡| |jddjd¡|jdtd}|jdtd}| |jddjd¡| |jddjd¡| t¡|jddW5QRX| t¡|jddW5QRX| t¡| ddddd¡W5QRX| t¡ | ddddddddd¡	W5QRXdS)Nrr"r«)r¬rrrB)	rrr*rÈr¬rÇrlr·rmrûrrr r.Ýs$z(TestLocalTimeDisambiguation.test_replacecCs@tdƒ}tdddƒ}| ||jdd¡| ||jdd¡dSrú)rrr*rÈrûrrr rÍôsz+TestLocalTimeDisambiguation.test_comparisoncCsPtdƒ}tdddƒ}| t|ƒt|jddƒ¡| t|ƒt|jddƒ¡dSrú)rrr*r(rÈrûrrr Ú	test_hashúsz%TestLocalTimeDisambiguation.test_hashr¼cCs<d}t |¡}t |d¡}| |jd¡| |jd¡dS)NiXÁUTrýrr")rrÀr*r¬)r+r?Údt0rnrrr rÂs

z.TestLocalTimeDisambiguation.test_fromtimestampzAustralia/Lord_HowecCslt d¡}t d|¡dkr$| d¡d}t |¡}t |d¡}| ||¡| |jd¡| |jd¡dS)	N瀓ÜÔAú%Z%zú	LHST+1030ú>Australia/Lord_Howe timezone is not supported on this platformiìøUérr")rær·râr5rrÀr*r¬)r+Útmr?r¾r$rrr Útest_fromtimestamp_lord_howes


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs| t d¡jd¡dSr¶)r*rrÀr¬rZrrr Ú%test_fromtimestamp_low_fold_detectionszATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tdddddƒ}|jdd}| | ¡d| ¡¡dS)NrhrjrBr"rkr«rý)rrÈr*rI)r+rÿrnrrr Útest_timestamps
ÿz*TestLocalTimeDisambiguation.test_timestampcCsht d¡}t d|¡dkr$| d¡tddddd	ƒ}|jd
d ¡}|jdd ¡}| |d|¡dS)
NrrrrrrDr?r"rárr«r)rær·râr5rrÈrIr*)r+rr˜Ús0Ús1rrr Útest_timestamp_lord_howe$s

z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tdddddƒ}|jdd}| ¡}| ¡}| | ¡d¡| | ¡d¡| |t|¡| |jd	¡| |jd	¡dS)
NrhrjrBr"rkr«rêr‰r)rrÈrïr*r_r¼r¬)r+rÿrnZadt0Zadt1rrr rò.sz+TestLocalTimeDisambiguation.test_astimezonec	Csztdd}tddddd}tD]V\}}}||fD]B}| ||¡}| |¡}| ||¡| |dkrfdn|j|j¡q0qdS)Nr"r«rDr)rrr~rr€r*r¬)	r+r˜r]r‚rƒrryr?r¤rrr Útest_pickle_fold=s

z,TestLocalTimeDisambiguation.test_pickle_foldcCs>tdd}tddddd}| t|ƒd¡| t|ƒd¡dS)Nr"r«zdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))rrr*r¥rûrrr r§Gs

ÿz%TestLocalTimeDisambiguation.test_reprc	Cs
tddddtdtj}tddddtd}| | ¡t¡| | ¡t¡| |jdd ¡t¡| |jdd ¡t¡dD]@}tdddd|td}| | ¡t¡| |jdd ¡t¡q~dD]@}tdd	d
d|td}| | ¡t¡| |jdd ¡t¡qÄdS)Nr—r#rr"rrBr«rÉrDrA)	rrèrrAr*r`r¼r«rÈ)r+Ú	dt_summerÚ	dt_winterrqr]rrr rÁNsz$TestLocalTimeDisambiguation.test_dstcCsŽtddddtdtj}tddddtd}| | ¡dt¡| | ¡dt¡| |jdd	 ¡dt¡| |jdd	 ¡dt¡dS)
Nr—r#rr"rrBrErÂr«)rrèrrAr*r^r¼rÈ)r+r
rrrr r¿isz*TestLocalTimeDisambiguation.test_utcoffsetc	Csttddddtdtj}tddddtd}t |¡}t |¡}| ||dt¡| ||dt¡| |jd	¡| |jd	¡tddddd
td}t |¡}|t7}t |¡}| ||¡| |jd	¡| |jd¡tddddd
td}t |¡}| |j|j	fd¡tddddd
td}t |¡}| |j|j	fd
¡tddddd	td}t |¡}| |j|j	fd¡dS)Nr—r#rrFrrArDr?rrkr")r“ri)rr"rB)rFri)
rrèrrAr•r*r¼r¬rHr)	r+Zu_summerZu_winterZt_summerZt_winterr—r¾r$r˜rrr rÊss0






z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd}| || tj¡¡tdddtd}| || tj¡¡dS)Nr‘r"rrF)rrèr*rïrr r×rrr Útest_mixed_compare_regular”sz6TestLocalTimeDisambiguation.test_mixed_compare_regularcCs<tdddddtd}| tj¡}| ||¡| ||¡dS)Nr—r#rr"rár©rrèrïrr r¶)r+Út_foldZ
t_fold_utcrrr Útest_mixed_compare_foldšsz3TestLocalTimeDisambiguation.test_mixed_compare_foldcCs<tdddddtd}| tj¡}| ||¡| ||¡dS)Nr—rDrArBrárr)r+Út_gapZ	t_gap_utcrrr Útest_mixed_compare_gap sz2TestLocalTimeDisambiguation.test_mixed_compare_gapcCstdddtd}| t|ƒt|jddƒ¡tdddddtd}tdd	d
ddtd}| t|ƒt|jddƒ¡| t|ƒt|jddƒ¡dS)Nr‘r"rr«r—r#rrárDrArB)rrèr*r(rÈ)r+r˜rrrrr Útest_hash_aware¦sz+TestLocalTimeDisambiguation.test_hash_awareN)r4rIrJrørùrürýr.rÍrþrrrÂrrrrròrr§rÁr¿rÊrrrrrrrr rõs6



	


!rõcCs"t |¡\}}t|dƒt||ƒSrX)rmÚteeÚnextr£)Úiterablerrrrr Úpairs°s
rc@sÆeZdZdZdd„Zedd„ƒZedd„ƒZedd	„ƒZ	e
d
ddƒ ¡Zdd
„Z
dd„Zdd„Zdd„Zdd„Zed(dd„ƒZed)dd„ƒZdd„Zdd„Zed*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)ÚutÚtiÚinvertr)r+rrrrr rW·s	zZoneInfo.__init__cCs¬td|ƒtd|ƒf}|r¨|ddt}|dd|7<|dd|7<tdt|ƒƒD]H}|d|||ddt7<|d|||dt7<q^|S)Nrxrr")rÚSECrr))rrrrVr
rrr rÄs$"zZoneInfo.invertc	CsH| d¡ ¡dkrtdƒ‚| d¡tdƒ}| |d¡tjdkrJ| ¡tdƒ}| ||d¡tjdkrt| ¡td	ƒ}| ||d¡g}t	|d
ƒD]}| 
t d| d¡¡¡qœ| |d
¡}t
|ƒD]:\}\}}	}
||
| d|
¡… ¡}td|ƒ|	|f||<qÐdgt|ƒ}t
|ƒD]\}}
||
||<q"|||ƒ}|S)NrDZTZifznot a zoneinfo filerkr
r>rÿrrñr"z>lbbrFrB)ÚreadÚdecoder·ÚseekrÚfromfiler2Ú	byteorderÚbyteswaprrÓÚstructÚunpackr
Úfindrr))r)ÚfileobjZcountsrZtype_indicesZttisr
ZabbrsZgmtoffÚisdstZabbrindÚabbrrÚidxr+rrr r"Ðs2



zZoneInfo.fromfilec
Cs<tj |j|¡}t|dƒ}| |¡W5QR£SQRXdS)NÚrb)ÚosÚpathÚjoinÚzonerootÚopenr")r)r0r.rärrr ÚfromnameõszZoneInfo.fromnamer r"cCst|tƒstdƒ‚|j|k	r$tdƒ‚| ¡|jd|jd|jd|j	}||j
dkrn|jd}d}n†t 
|j
|¡}|j
|d|ks’t‚|t|j
ƒks²||j
|ks²t‚|j|d|…\}}|d|d}|td||j
|dƒk}||d7}|r|jdd	S|Sd
S)rãrärår÷rýrñr"rrBr«N)rPrrmrr·rŸÚEPOCHORDINALrrqrprrÚbisectÚbisect_rightrœr)rrÈ)r+r]rIZttir¬r+Ztti_prevÚshiftrrr r•ýs0

ÿþý
 zZoneInfo.fromutccCs\| ¡|jd|jd|jd|j}|j|j}t ||¡}|j	t
d|dƒ|S)Nr÷rýrñrr")rŸr3rrqrprr¬r4r5rrp)r+r]r
rIrr+rrr Ú_find_tisÿþýzZoneInfo._find_ticCs| |d¡Sr¶©r7r\rrr r^%szZoneInfo.utcoffsetcCs| |d¡}|rtStSrJ)r7r«r¼)r+r]r)rrr r`(szZoneInfo.dstcCs| |d¡S)NrBr8r\rrr r_0szZoneInfo.tznameNc	cs‚|dkr|j}tj |d¡}zt|ƒ}Wntk
r>YdSX|4|D](}| ¡}|rJ| d¡sJ| ¡dVqJW5QRXdS)Nzzone.tabú#rB)	r0r-r.r/r1rÁÚstripr.rÒ)r)ZzonedirZzone_tabräÚlinerrr Ú	zonenames3szZoneInfo.zonenamescCsÆd}}}}tj}}t}}	tj}
}d}}
tj}}d}}t|ddƒ}| ¡D]ò}|d7}| |¡}| ¡D]Ò\}}||krŠqx|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||
|fƒtd|||
fƒtd|||fƒtd|	||fƒdS)	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)
rrpr«rr¡r<r2ÚtransitionsÚprintrW)r)Ú
start_yearÚcountZ	gap_countZ
fold_countZzeros_countZmin_gapZmin_foldZmax_gapZmax_foldZmin_gap_datetimeZmax_gap_datetimeZmin_gap_zoneZmax_gap_zoneZmin_fold_datetimeZmax_fold_datetimeZ
min_fold_zoneZ
max_fold_zoneZstats_sinceÚzonenamer–r]r6Ztrans_countsrrr ÚstatsBsZ





ÿzZoneInfo.statsccsHtt|j|jƒƒD]0\\}}\}}|d|d}t |¡|fVqdSr¶)rr£rrrrº©r+Ú_Zprev_tir˜rr6rrr r=ss"zZoneInfo.transitionsccsntt|j|jƒƒD]V\\}}\}}|d|d}|tkr|d|dkrt |¡||d|dfVqdS)zLFind all folds with the same value of isdst on both sides of the transition.rr"rBN)rr£rrr«rrºrCrrr Únondst_foldsxs"zZoneInfo.nondst_foldsFc

Csnd}| ¡D]\}| |¡}| ¡D]D\}}}}	|j|ks"|rF||	krFq"|d7}td||||||	fƒq"qdS)Nrr"z%3d) %-30s %s %10s %5s -> %s)r<r2rEr˜r>)
r)Z	same_abbrr?r@rAr–r]r6Z	prev_abbrr*rrr Úprint_all_nondst_foldss
ÿzZoneInfo.print_all_nondst_foldsccs*| ¡D]\}}|tkr||fVqdSrX©r=r«©r+r˜r6rrr Úfolds‹szZoneInfo.foldsccs(| ¡D]\}}|tkr||fVqdSrXrGrHrrr Úgapssz
ZoneInfo.gapsccs | ¡D]\}}|s|VqdSrX)r=rHrrr Úzeros•szZoneInfo.zeros)N)r")Fr")r4rIrJr0rWrYrÚclassmethodr"r2rrŸr3r•r7r^r`r_r<rBr=rErFrIrJrKrrrr rµs2


$

0rc@s8eZdZdZdd„Zdd„Zdd„Zdd	„Zd
d„ZdS)
ÚZoneInfoTestzAmerica/New_Yorkc
Csbtjdkr| d¡zt |j¡|_Wn6tk
r\}z| d|j|f¡W5d}~XYnXdS)NrÆz"Skipping zoneinfo tests on WindowszSkipping %s: %s)r2rr5rr2rAr–ÚFileNotFoundError)r+Úerrrrr rŸžs

zZoneInfoTest.setUpcCs<| |jdd|jt|jƒf|jdd|jt|jƒf¡dS)Nr)r*rÈr¬Úidr)r+rrrrr ÚassertEquivDatetimes¦sÿz!ZoneInfoTest.assertEquivDatetimesc	Csþ|j}| ¡D]ê\}}d|d||tjfD]Š}||}| |j|d¡}| |jd¡|jtj	d 
|¡}| ||¡| ¡}| |jdd||¡| | 
tj	¡|jtj	d¡q.tj|fD]0}||}|j|d}| |¡}| |jd¡qÆqdS)Nrrûrr")
r–rIrrAr•rÈr*r¬rr rïrQr^©	r+r–r]r6ryÚudtræZadtr^rrr Ú
test_foldsªs$ÿ
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¡}| |jd¡qúqdS)Nrrûrr"r«zAt %s.)r–rJrrArÈr•r*r¬rr rïrQr^Z
assertLessrRrrr Ú	test_gapsÀs(
 þzZoneInfoTest.test_gapsc	Cs‚d|jks|j d¡r&| d|j¡|j}tj d¡}|jtjd<zt ¡| 	¡D]ø\}}|j
dkrpqR|tdddƒt}|t}dd	d
d|d|d|d
fD]J}||}t 
|¡}	t 
||¡jdd}
| |	|
¡|	 ¡}| ||¡qª|dkrXt 
|¡|d}| ¡}
|jdd ¡}| |
||d¡| |||d¡qXW5|dkrjtjd=n
|tjd<t ¡XdS)NZRiyadh8zright/zSkipping %sÚTZiõr r"i€ÍýÿiÀæþÿrÃri@i€2rrBr«)rAr.r5r–r-ÚenvironÚgetræÚtzsetr=r˜rrrÀrÈrQrIr*)r+r–rVrSr6r	roryr?ZsdtZtzdtr
r]Zts0Zts1rrr Útest_system_transitions×sF

ù
ÿ



z$ZoneInfoTest.test_system_transitionsN)	r4rIrJrArŸrQrTrUrZrrrr rM›srMcseZdZ‡fdd„Z‡ZS)ÚZoneInfoCompleteTestcshg}tdƒrXt ¡D]B}td|tfiƒ}||_t|ƒD]}| d¡r8| ||ƒ¡q8qt	ƒ 
|¡dS)NZtzdatazZoneInfoTest[%s]Ztest_)r
rr<r}rMrAr7r.rÓÚsuperrW)r+rer0ZTestÚmethod©r3rr rWs
zZoneInfoCompleteTest.__init__)r4rIrJrWÚ
__classcell__rrr^r r[sr[c@seZdZdZdS)ÚIranTestzAsia/TehranN)r4rIrJrArrrr r`sr`c@s”eZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
dd„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#S)$ÚCapiTestcCs$|jj d¡r| d¡t ¡dS)NZPurezNot relevant in pure Python)r3r4r/r5Ú	_testcapiZtest_datetime_capirZrrr rŸs
zCapiTest.setUpc
Cs>dD]4}t |¡}|j|d| |tj¡W5QRXqdS)N©TF)Ú	use_macro)rbZget_timezone_utc_capirÞr|rr )r+rdZcapi_utcrrr Ú
test_utc_capis
zCapiTest.test_utc_capic

Csèt ¡\}}}ttdddƒ}ttddƒ}d||fd||fd||fg}|D]–\}}}	|j|dz| ||	¡tdd	d
|d}
tdd	d
|	d}| |
|¡| |
 ¡| ¡¡tdd	d
dtjd}| |
 	tj¡|¡W5QRXqLdS)
NrÂrŒr‰Úest_capiÚ	est_macroÚest_macro_nn)r0r‘rBrDrr?)
rbZmake_timezones_capirrrÞr*rr_r rï)
r+rfrgrhZ	exp_namedZexp_unnamedÚcasesr0Ztz_actZtz_exprnr’rðrrr Útest_timezones_capi&s ýzCapiTest.test_timezones_capic	Csàt ¡\}}}|jdd| |tj¡W5QRX|jdd| |tj¡W5QRX|jddp| |tj¡ttdddƒ}| ||¡t	dd	d
|d}t	dd	d
|d}| ||¡| | 
¡| 
¡¡W5QRXdS)NÚutc0)ZtestnameÚutc1Únon_utcrrŒr»r‘rBrDr)rbZget_timezones_offset_zerorÞr|rr rµrr*rr_)r+rkrlrmZnon_utc_exprnr’rrr Útest_timezones_offset_zero@sz#CapiTest.test_timezones_offset_zeroc	CsøGdd„dtƒ}tdddƒ}|dddƒ}tdddƒ}tj}| ||ƒ¡| ||ƒ¡| ||ƒ¡| ||dƒ¡| ||dƒ¡| ||dƒ¡tƒtƒddtdƒt	j
tddƒg}|D]8}d	D].}|j||d
| |||ƒ¡W5QRXqÂqºdS)Nc@seZdZdS)z.CapiTest.test_check_date.<locals>.DateSubclassNr]rrrr r^Wsr^éÛr"Tú
2011-01-01r”rrc©ÚargÚexact)
rrrbZdatetime_check_datertrÌr{rzrrr rrÞ)	r+r^r*Zdsr]Zis_daterŠrrrsrrr Útest_check_dateVs(ÿzCapiTest.test_check_datecCsÌGdd„dtƒ}tddƒ}|ddƒ}tj}| ||ƒ¡| ||ƒ¡| ||dƒ¡| ||dƒ¡tƒtƒddtdƒtj	t
dddƒg}|D]8}d	D].}|j||d
| |||ƒ¡W5QRXq–qŽdS)Nc@seZdZdS)z.CapiTest.test_check_time.<locals>.TimeSubclassNr]rrrr r*ssr*r”rkTr"rprorcrq)rrbZdatetime_check_timertrÌr{rzrrr rrÞ)r+r*r˜rÁZis_timerŠrrrsrrr Útest_check_timers"


ÿzCapiTest.test_check_timecCsØGdd„dtƒ}tdddddƒ}|dddddƒ}tj}| ||ƒ¡| ||ƒ¡| ||dƒ¡| ||dƒ¡tƒtƒddtdƒtj	t
dddƒg}|D]8}d	D].}|j||d
| |||ƒ¡W5QRXq¢qšdS)Nc@seZdZdS)z6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNr]rrrr rjsrjror"r”rkTrprcrq)rrbZdatetime_check_datetimertrÌr{rzrrr rrÞ)r+rjr]rþZis_datetimerŠrrrsrrr Útest_check_datetimeŒs"
ÿzCapiTest.test_check_datetimecCsÌGdd„dtƒ}tdƒ}|dƒ}tj}| ||ƒ¡| ||ƒ¡| ||dƒ¡| ||dƒ¡tƒtƒddtjt	dddƒt
dddƒg}|D]8}dD].}|j||d| |||ƒ¡W5QRXq–qŽdS)	Nc@seZdZdS)z4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNr]rrrr ÚTimeDeltaSubclass§srwr"Trprorcrq)rrbZdatetime_check_deltartrÌr{rzrr rrrÞ)r+rwrôZtdsZis_timedeltarŠrrrsrrr Útest_check_delta¦s"

ÿzCapiTest.test_check_deltac	CsðGdd„dtƒ}tƒ}|ƒ}ttddƒ}tj}| ||ƒ¡| ||ƒ¡| ||ƒ¡| ||dƒ¡| ||dƒ¡| ||dƒ¡tƒtƒddt	dddƒt
dddƒg}|D]8}d	D].}|j||d
| |||ƒ¡W5QRXqºq²dS)Nc@seZdZdS)z2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNr]rrrr ÚTZInfoSubclassÁsryrÂrŒTr"rprorcrq)rrrrbZdatetime_check_tzinfortrÌr{rzrrrÞ)	r+ryršZtzisr–Z	is_tzinforŠrrrsrrr Útest_check_tzinfoÀs&

ÿzCapiTest.test_check_tzinfoc
CsTtdddƒ}dD]>}|j|d(t ||j|j|j¡}| ||¡W5QRXqdS)NéÉrtr“©rr"©Úmacro)rrÞrbZget_date_fromdater˜r™rHr*©r+Úexp_dater~Ú
c_api_daterrr Útest_date_from_dateÝsüzCapiTest.test_date_from_datecCsltdddddddƒ}dD]N}|j|d	8t ||j|j|j|j|j|j	|j
¡}| ||¡W5QRXqdS)
Nr{rtr“rËr”é7韆r|r})rrÞrbZget_datetime_fromdateandtimer˜r™rHrrqrpr¢r*rrrr Útest_datetime_from_dateandtimeêsø
z'CapiTest.test_datetime_from_dateandtimecCsŒtdddddddƒ}dD]n}dD]d}|j||d	Lt ||j|j|j|j|j|j	|j
|j¡	}| ||¡| |j|j¡W5QRXq qdS)
Nr{rtr“rËr”rƒr„r|©r~r¬)
rrÞrbZ#get_datetime_fromdateandtimeandfoldr˜r™rHrrqrpr¢r¬r*)r+r€r¬r~rrrr Ú%test_datetime_from_dateandtimeandfoldûs"÷z.CapiTest.test_datetime_from_dateandtimeandfoldc
CsZtddddƒ}dD]B}|j|d,t ||j|j|j|j¡}| ||¡W5QRXqdS)NrËr”rƒr„r|r})	rrÞrbZget_time_fromtimerrqrpr¢r*)r+Úexp_timer~Ú
c_api_timerrr Útest_time_from_timesûzCapiTest.test_time_from_timecCsztddddƒ}dD]b}dD]X}|j||d@t ||j|j|j|j|j¡}| 	||¡| 	|j|j¡W5QRXqqdS)NrËr”rƒr„r|r†)
rrÞrbZget_time_fromtimeandfoldrrqrpr¢r¬r*)r+rˆr¬r~r‰rrr Útest_time_from_timeandfoldsúz#CapiTest.test_time_from_timeandfoldc
CsTtdddƒ}dD]>}|j|d(t ||j|j|j¡}| ||¡W5QRXqdS)Nr“rƒr„r|r})rrÞrbZget_delta_fromdsurír²r°r*)r+Z	exp_deltar~Zc_api_deltarrr Útest_delta_from_dsu.süzCapiTest.test_delta_from_dsuc
CsZtdddƒ ¡}dD]@}|j|d*t t|ƒ|¡}| |tdddƒ¡W5QRXqdS)NéËrDr”r|r})rrIrÞrbZget_date_fromtimestamprQr*r)r+rÁr~r*rrr Útest_date_from_timestamp;s
z!CapiTest.test_date_from_timestampcCs¦dddttddƒdfddd	ttddƒdfg}tj}|D]f}d
D]\}|j||dD|\}}}t|d|iŽ}t| ¡ƒ}	||	|||ƒ}
| ||
¡W5QRXqBq:dS)
N)©rrDr”NF)rNTrr"rŒT)©rrDr”rürkNF)rNTrr|)Úcaser~r)	rrrbZget_datetime_fromtimestamprÞrrQrIr*)r+rirËr‘r~ZdtuprZusetzZdt_origrÁrbrrr Útest_datetime_from_timestampDs ú	
z%CapiTest.test_datetime_from_timestampN)r4rIrJrŸrerjrnrtrurvrxrzr‚r…r‡rŠr‹rŒrŽr’rrrr ras"	

	racCs| tƒ¡|SrX)ZaddTestr[)ÚloaderZstandard_testsÚpatternrrr Ú
load_tests[sr•Ú__main__)mr‘rmr4rÒrßr2r-rrerr%rrÚoperatorrrrrrrr	r
rÚtestrZtest.supportr
rrrrr)rrrrrrrrærbrÐr€Ú_loadsrrr±r~r)rœr2r~rKrZTestCaser'rKrardrgršrárërr”r–r}r~rrrr0rUrtr§r«rÒr¼rÃr´rµr¨rÇr¹rºr»rÅrÆr¼rÔrârçrèrérêrërìrõrrrrMZ	TestSuiter[r`rar•r4Úmainrrrr Ú<module>sø,ÿ2_A3=!K\"<


*c"32
gi
H


Zerion Mini Shell 1.0