Your IP : 216.73.216.85


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/datetimetester.cpython-38.opt-2.pyc

U

i�f[��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddlm
Z
mZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddlZddlmZm Z ddlm!Z!ddlm"Z"dd	lm#Z#dd
lm$Z$ddlm%Z%mZddl#Z&ddl'Z'ddl(Z(ej)ej*hZ+dd
�e,ej-d�D�Z.dddigdfZ/e0d�Z1e0d�Z2Gdd�de
j3�Z4Gdd�de"�Z5Gdd�de5�Z6Gdd�de"�Z7Gdd�de
j3�Z8Gdd �d e
j3�Z9Gd!d"�d"�Z:Gd#d$�d$e:e
j3�Z;Gd%d&�d&e
j3�Z<Gd'd(�d(e%�Z=Gd)d*�d*e:e
j3�Z>Gd+d,�d,e�Z?Gd-d.�d.e>�Z@Gd/d0�d0e@�ZAGd1d2�d2e#�ZBGd3d4�d4e:e
j3�ZCGd5d6�d6�ZDGd7d8�d8eCeDe
j3�ZEGd9d:�d:e@eDe
j3�ZFd;d<�ZGe!d�ZHe!dd=�ZIe!dd>�ZJe!dd?�ZKedd@ddA�ZLedddBd�ZMGdCdD�dDe"�ZNeNdEdFdGdH�ZOeNdIdJdKdL�ZPeNdMdNdOdP�ZQeNdQdRdSdT�ZRe5ddUd�ZSe5dVdWd�ZTGdXdY�dYe
j3�ZUGdZd[�d[e
j3�ZVGd\d]�d]e"�ZWGd^d_�d_eW�ZXeXdEd`dGdH�ZYeXdIdadKdL�ZZeXdMdbdOdP�Z[eXdQdcdSdT�Z\Gddde�dee"�Z]Gdfdg�dge
j3�Z^e!dd�Z_dhdi�Z`Gdjdk�dke"�ZaGdldm�dme
j3�ZbGdndo�doe
jc�ZdGdpdq�dqeb�ZeGdrds�dse
j3�Zfdtdu�Zgehdvk�r~e
�i�dS)w�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�8/opt/alt/python38/lib64/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�namesZallowedrrr �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,r9rGrrrr 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)rR�lower�r+rrr �__repr__vszFixedOffset.__repr__cCs|jSrW)rQ�r+�dtrrr �	utcoffsetxszFixedOffset.utcoffsetcCs|jSrW)rRr[rrr �tznamezszFixedOffset.tznamecCs|jSrW)rSr[rrr �dst|szFixedOffset.dstN)rK)r4rHrIrVrZr]r^r_rrrr rJls

rJc@seZdZddd�Zdd�ZdS)�PicklableFixedOffsetNcCst�||||�dSrW)rJrVrTrrr rV�szPicklableFixedOffset.__init__cCs|jSrW)�__dict__rYrrr �__getstate__�sz!PicklableFixedOffset.__getstate__)NNN)r4rHrIrVrbrrrr r`s
r`c@seZdZdd�ZdS)�_TZInfocCst��SrW)�random)r+r)rrr r]�sz_TZInfo.utcoffsetN�r4rHrIr]rrrr rc�srcc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
TestTZInfoc	Cs>t�}tddddddd|�}|�t��|��W5QRXdS)N��r@��� r=r)rcr�assertRaises�	TypeErrorr])r+Ztz1�dt1rrr �test_refcnt_crash_bug_22044�sz&TestTZInfo.test_refcnt_crash_bug_22044cCs@t�}tj}|�t|j|�|�t|j|�|�t|j|�dSrW)rr�maxrk�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||_||_dSrW)Z_NotEnough__offsetZ_NotEnough__name)r+rUr0rrr rV�szBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r4rHrIrVrrrr �	NotEnough�srrr=ZNotByALongShot)r�
assertTrue�
issubclass�assertIsInstancer�nowrkrpr^r]r_)r+rrrr\rrr �test_subclass_must_override�s
z&TestTZInfo.test_subclass_must_overridecCsntdd�}|�|t�t��dfD]F}|�|�|�tdd��|�|�|�d�|�|�	|�tdd��q"dS)Nr=ZThreerMrK)
rJrurrrvr*r]rr^r_)r+Zfor\rrr �test_normal�s
zTestTZInfo.test_normalcCsTt�t�}|�t|�t�tD]0\}}}|�||�}|�|�}|�t|�t�qdSrW)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����rM�cookie�EST)
rr`rr^rurrzr{r*r]r|r}r~)r+rUZotype�argsrZonamer�r�rr�r�rrr �test_pickling_subclass�s$


�

z!TestTZInfo.test_pickling_subclasscs`tdd���G��fdd�dt�}|�}tddddd|d	�}|�|�}|�||��|�dS)
Nr"��hourscs,eZdZ�fdd�Z�fdd�Zdd�ZdS)z0TestTZInfo.test_issue23600.<locals>.UKSummerTimecs�SrWrr[)�	DSTOFFSETrr r]�sz:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetcs�SrWrr[)�DSTDIFFrr r_�sz4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstcSsdS)N�UKSummerTimerr[rrr r^�sz7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN�r4rHrIr]r_r^r�r�r�rr r��sr�rgrC��r)rrr�fromutcr*r])r+r��tz�u�trr�r �test_issue23600�s
zTestTZInfo.test_issue23600N)
r4rHrIrnrqrwrxr�r�r�rrrr rf�s
rfc@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)$�TestTimeZonecCs8ttdd�d�|_ttdd�d�|_tddd�|_dS)N�#@r��ACDTr>r���r")rrr�r�r�DTrYrrr �setUp�szTestTimeZone.setUpcCs8|j|jtjtjtjfD]}|�t|�|�d��qdSrW)	r�r�r�utc�minror*�strr^�r+r�rrr �test_str�s
�zTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|�}|�|t	|��qdSrW)
r)r�r�rr�r�ro�reprr*�eval)r+rr�Ztzreprrr �	test_repr�s�zTestTimeZone.test_reprcCsNtddd�}|�tj�d�t�|�tj�d�|�|�tj�d�|�dS)N��;�r�rN)rr*rr�r]�ZEROr�ro)r+�limitrrr �test_class_members�szTestTimeZone.test_class_membersc	Cs\|�tjttd���|�tjttd�d��|�tjttd�d��tdd�tdd�fD](}t|�}|�|�d�tdd�d�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��secondsrMrK�ABC�extra)rzrr�r�assertIsNotr*�assertNotEqualr]rk�
ValueErrorrlr�)r+Z	subminuter�Zinvalidrrr �test_constructors&zTestTimeZone.test_constructorcCs |�tjt�|�|jt�dSrW)rurr�rr�rYrrr �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]rkrlr�)r+�dummy�hrUrrr �test_utcoffsetszTestTimeZone.test_utcoffsetc	Cs\|�tj�|j��|�t��|j�d�W5QRX|�t��|j�d�W5QRXdS)Nr�r>)�assertIsNonerr�r_r�rkrlr�rYrrr �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���rMZXYZ��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�rrkrlr�rYrrr �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)
rkr�rr�r�r�rlr�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*rkrl�assertInrs�assertFalserrrr�rrr �test_comparisonMs&zTestTimeZone.test_comparisoncCs�tddd�}tjtjtjfD]^}|�|�|�|j|d����|�|�|�|j|d����|�|�	|�|j|d��	��qdS)Nr"r)
rrr�ror�r*r^r�r]r_�r+r�r�rrr �test_aware_datetimebs���z TestTimeZone.test_aware_datetimecCs�|j|jtjtjfD]2}tD](\}}}|�|�||��}|�||�qqtj	}tD](\}}}|�|�||��}|�
||�qRdSrW)r�r�rr�ror|r~r}r*r�rz)r+r�r�r�r�tz_copyrrr �test_picklemszTestTimeZone.test_picklecCsP|j|jtjtjfD]}t�|�}|�||�qtj}t�|�}|�||�dSrW)	r�r�rr�ro�copyr*r�rz�r+r�r�rrr �	test_copyws

zTestTimeZone.test_copycCsP|j|jtjtjfD]}t�|�}|�||�qtj}t�|�}|�	||�dSrW)
r�r�rr�ror�Zdeepcopyr*r�rzr�rrr �
test_deepcopys

zTestTimeZone.test_deepcopycCs�tddd�tdddd�tddddd�g}|�dd�|D��|D]&}|jd	|d
��t|�W5QRXq@tdd�tdd
d�g}|�dd�|D��|D]<}|jd|d
��$|�t��t|�W5QRXW5QRXq�dS)Nr�r�r��r�rNr��?B�r�rNr�r�cSsg|]
}|�qSrr�r�deltarrr r!�sz7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>Zgood)Z	test_typer��r�r")r�r�cSsg|]
}|�qSrrr�rrr r!�sZbad)r�extend�subTestrrkr�)r+Ztime_deltasr�Zbad_time_deltasrrr �test_offset_boundaries�s 
�
�z#TestTimeZone.test_offset_boundariescCs,|�tjt��|�ttdd��t��dS)Nr"r�)r�rr�rrrYrrr �test_comparison_with_tzinfo�sz(TestTimeZone.test_comparison_with_tzinfoN)r4rHrIr�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�rsr�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�rkrlrYrr�r �test_harmful_mixed_comparison�sz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r4rHrIr�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�daysr�rNr��millisecondsr�r"�r�r�r��r�r@r�r��<rM���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)-Nr@rr�r�rEiDQrBr��Q�X>�Qi��r#�FiX�'r?�r�r"i@�i��6i@���?��xr�r=rAr>r<r�r�翶~�Ϛ�?�@�g�6+1��?i�S	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)NrK�r"��?cs��SrWrr�rrrr r�Rr�z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>cs��SrWrrr
rr r�Sr�cs��SrWrrr
rr r�Tr�cs��SrWrrr
rr r�Ur�rcs��SrWrr�r�zerorr r�Zr�cs��SrWrrrrr r�[r�cs��SrWrrrrr r�\r�cs�dS)N�rr�rrr r�]r�cs�dS)Nr�rrrrr r�^r�)rrkrl�ZeroDivisionErrorrYr)rrrr �test_disallowed_computationsMsz*TestTimeDelta.test_disallowed_computationscCs,td�}|�t|jt�|�t|jt�dS)NrK)rrkr��__mul__�NAN�__truediv__)r+rrrr �test_disallowed_special`sz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||�}|�|j|�|�|j|�|�|j|�dS)N)r"r@��rr*r�r�r�)r+r�r�rr�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�rZmsrrr �test_total_secondsms


z TestTimeDelta.test_total_secondscCs.tddddddd�}tdd	�}|�||�dS)
N�drB�8���r<r�g��A�r�r�r�rNr�r�r"r�)rr*�r+�t1�t2rrr �test_carriesys�
zTestTimeDelta.test_carriescCs�tddddddd�}t�}|�t|�t|��|tdd	�7}|td
d�7}|�||�|�t|�t|��|di}d
||<|�t|�d�|�||d
�dS)NrrBrr<r�iz
rr@r��1r�r"rA)rr*�hash�len)r+rr �drrr �test_hash_equality�s"�z TestTimeDelta.test_hash_equalitycCsBd}t|�}tD],\}}}|�||�}|�|�}|�||�qdS)N)r��"�8)rr|r}r~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)NrAr=rC�)r=r=r=)rArCrC)rAr=r>FTcs��kSrWrr�Zbadargrrr r��r�z,TestTimeDelta.test_compare.<locals>.<lambda>cs��kSrWrrr,rr r��r�cs��kSrWrrr,rr r��r�cs��kSrWrrr,rr r��r�cs��kSrWrrr,rr r��r�cs��kSrWrrr,rr r��r�cs��kSrWrrr,rr r��r�cs��kSrWrrr,rr r��r�)rr*rsr��
OTHERSTUFFrkrl�r+r r�rr,r �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:00rAz2 days, 0:00:00r?z-2 days, 0:00:00r��:r�r�z12:58:59r=rCz2:03:04i��r�r')r�r�rNr�z-210 days, 23:12:34r�z0:00:00.001000r�z0:00:00.000003r�r��r�r�rNr�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#rAz%s(days=10, seconds=2)r;�z,%s(days=-10, seconds=2, microseconds=400000)r�r�z%s(seconds=60)z%s(0)rr�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�tdddddd�tdd�tddd	�tdd
dd�fD]Z}t|�}|�|�d
��|dd�}t|�}|�||�t|j|j|j�}|�||�q2dS)Nr�r�r�r�r1�6e�r�r"�r�r�rAr=�r�r�r�r2�	)	rr�rsr.r�r*r�r�r�)r+r��sZtd2rrr �test_roundtrip�s�
�zTestTimeDelta.test_roundtripcCs~|�tjt�|�tjt�|�tjt�|�tjtjk�|�tjtd��|�tjtddd��|�tjtddd��dS)Nr6r�r�g~�.Arr")rurr�ro�
resolutionrsr*rYrrr �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)	NcSstjSrW)rrorrrr r�r�z-TestTimeDelta.test_overflow.<locals>.<lambda>r"�ʚ;ge��Ag#B����;g�����|�=gr��{�>)
rr<r�rk�
OverflowError�__sub__�__add__rorr)r+�tinyr��dayrrr �
test_overflow
s 

zTestTimeDelta.test_overflowcCs.td�}|�t|jt�|�t|jt�dS�Nr")rrkr?r�INF)r+rCrrr �_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 d�d |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?rAg�~j�t�X�r?g���Ơ>r�g���Ơ���?����i|���t��Ar�g�������?r�g�������?r�)r�r�g������ٿg������ɿr�r	)rr*r<)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�)rsrr�rYrrr �	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�SrWr8)r���Trr �from_tdVsz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdcSs&|jd|jd|jd}t|�S)Nr�g �@rK)r�r�r�r)r+�sumrrr �as_hoursZs��z9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r4rHrI�staticmethodrQrSrrOrr rPUsrPr"r�r�r�i��r7i��)
rrzr{r*rSrQr�r�r�r�)r+rr �t3�t4rrOr �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�r4rHrIrrrr �DateSubclassssrY��r"r>r��addcSs||SrWr�r%r�rrr r�zr�z2TestTimeDelta.test_subclass_date.<locals>.<lambda>rE�raddcSs||SrWrr\rrr r�{r��subcSs||SrWrr\rrr r�|r�rC)rrr�r*ru)	r+rY�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>.DateTimeSubclassNrXrrrr �DateTimeSubclass�srerZr"r>r��)r�rNr[cSs||SrWrr\rrr r��r�z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rE�
r]cSs||SrWrr\rrr r��r�r^cSs||SrWrr\rrr r��r�rC)rrr�r*ru)	r+rer_r�r`r0rarbrcrrr �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�rArf�rNr�rMg@r)rr*rkrr	r
)r+r��second�minute�zerotdrrr �
test_division�s

zTestTimeDelta.test_divisioncCs�tddd�}tdd�}||}|�|tdd��tddd�}||}|�|tdd��td�}|�tt||�|�tt|d	�dS�
NrArfrjr"rMr�r?rr#)rr*rkrrrl)r+r�rl�rrmrrr �test_remainder�s
zTestTimeDelta.test_remaindercCs�tddd�}tdd�}t||�\}}|�|d�|�|tdd��tddd�}t||�\}}|�|d�|�|tdd��td�}|�tt||�|�tt|d	�dSro)r�divmodr*rkrrl)r+r�rl�qrprmrrr �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�SrWrrY��	bad_ratiorr �as_integer_ratio�szWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r4rHrIrwrrurr �BadFloat�srx)�float)rvrxrrur �
get_bad_float�sz4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"r�)r)rK)r"rAr=)rkrlrr�)r+rzrvrrr �test_issue31293�szTestTimeDelta.test_issue31293csfG�fdd�dt�}G�fdd�d��G�fdd�dt��dD�] �|j�d���zt|d	�d
�Wntk
rzYnXzt|d	�d�Wntk
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��SrWr�r+�other��Prodrr r�sz5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__cs��SrWrr|r~rr �__rmul__�sz6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__cs��SrWrr|r~rr �__floordiv__�sz:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__cs��SrWrr|r~rr �
__rfloordiv__�sz;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r4rHrIrr�r�r�rr~rr �BadInt�sr�cs$eZdZ�fdd�Z�fdd�ZdS)z+TestTimeDelta.test_issue31752.<locals>.Prodcs��SrWrr|��Sumrr rA�sz3TestTimeDelta.test_issue31752.<locals>.Prod.__add__cs��SrWrr|r�rr �__radd__�sz4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r4rHrIrAr�rr�rr r�srcseZdZ�fdd�ZdS)z*TestTimeDelta.test_issue31752.<locals>.Sumcs�SrWrr|��divmodresultrr �
__divmod__�sz5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r4rHrIr�rr�rr r��sr�)Nr)rr"rA)rr�r�r"r�r�r�)rPr�rrlr�)r+r�r)rr�r�r �test_issue31752�s:

zTestTimeDelta.test_issue31752N)"r4rHrIrr�r�rrrZrequires_IEEE_754rrrr!r&r*r/r�r�r;r=rDrGrLrMrNrWrdrhrnrqrtr{r�rrrr r��s<S

(	
!r�c@seZdZdd�ZdS)�TestDateOnlycCs�tddd�}tdddddd�}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�|}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�dS)	N��r"rAr=rCr>r1r?)rrr�r*)r+r\r�r��dt2rrr �test_delta_non_days_ignoreds*
�

z(TestDateOnly.test_delta_non_days_ignoredN)r4rHrIr�rrrr r�sr�c@seZdZdZdS)�SubclassDater"N�r4rHrIZsub_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�monthrCr[rrr r@szTestDate.test_basic_attributescCsz|�ddd�|j��fD]\}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j	�}|�||�qdS)Nr"rAr=r2r9)
r��todayr�rsr.r�r*r�r�rC�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k�r�|	�r�|d7}t	d|d�D]@}|�||
|�}|�|��|�|�||j�|��|d7}�q��qb�q8dS)
N))r"r"r"r")r"r�rr)rAr"r"�n)i�rir�i��
�hourrr"r@r�r�rf))r�T)r�FrgrA)
r�r*�	toordinal�fromordinal�hasattrr�rlrk�microsecondrrr�zip)
r+�y�mr%�nZfromordr��d2ZdimZisleapr�ZmaxdayrCrrr �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�SrE�r�r�rZaordrr r��r�z0TestDate.test_extreme_ordinals.<locals>.<lambda>r"r�cs���d�SrEr�rr�rr r��r�)r�r�r�r�rCr�r�r*rkr�rro)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�rrgrA����`	rf���4�lrj)r�rrrkr�rYrrr �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"rAr��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�rA�ArCrr@r=r9r��4��rcs��SrWrrr
rr r��r�z,TestDate.test_computations.<locals>.<lambda>cs��SrWrrr
rr r��r�cs��SrWrrr
rr r��r�cs��SrWrrr
rr r��r�cs��SrWrr�rrCrr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrrrr r��r�cs��SrWrrrrr r��r�cs��SrWrrrrr r��r��
r�r*r�r$rr�r�rrkrl)r+rr�diff�weekr�rrCrr r�sPzTestDate.test_computationscCs�|jj}|td�td�fD]p}|jj|}||8}|�t|j|�|�t|j|�|jj|}||7}|�t|j|�|�t|j|�qdS)Nr"rA)	r�r<rr�rkr?r@rAro)r+rBr�r\rrr rD�szTestDate.test_overflowcCshddl}d\}}}|�|||ddddddf	�}|j�|�}|�|j|�|�|j|�|�|j|�dS)Nr)i�r9rir�)r�mktimer��
fromtimestampr*r�r�rC)r+rr�r�rC�tsr%rrr �test_fromtimestamps
zTestDate.test_fromtimestampcCs dD]}|�t|jj|�qdS�N)gZb���t�gZb���ti�rkr?r�r��r+Zinsanerrr �test_insane_fromtimestamps�z"TestDate.test_insane_fromtimestampcCslddl}td�D]8}|j��}|��}|j�|�}||kr>qJ|�d�q||krh|j||tdd�d�dS)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)Nr@r�r=rCr"r�rA)rr*r��weekdayZ
isoweekday)r+rrrr �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)Nr@r�r��r�r"r�r�r>rA��rhr��5r�rC)rr�r*�isocalendarr)r+rr%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
        i�r�r�ri@r"r�)	�sorted�maprP�splitrr�r*r��append)r+ZISO_LONG_YEARS_TABLEZiso_long_years�Lrr%r_rrr �test_iso_long_yearsVs$zTestDate.test_iso_long_yearscCs"|�ddd�}|�|��d�dS)NrAr=z
0002-03-02)r�r*�	isoformat�r+r�rrr �test_isoformat|szTestDate.test_isoformatcCs"|�ddd�}|�|��d�dS)Nr�r=rAzSat 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=rA�m:%m d:%d y:%yzm:03 d:02 y:05r�A�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�oneZtworK�%mZ03�	'%z' '%Z'�'' '')z%e�%z%#u%y�%mz%f)r�r*�strftimerkrlr��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=rAr�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��r9r#r��must be str, not int�{c@seZdZdd�ZdS)zTestDate.test_format.<locals>.AcSsdS�N�ArrYrrr �__str__�sz'TestDate.test_format.<locals>.A.__str__N�r4rHrIr�rrrr r��sr�c@seZdZdd�ZdS)zTestDate.test_format.<locals>.BcSsdS�N�Br�r+�format_specrrr r��sz(TestDate.test_format.<locals>.B.strftimeN�r4rHrIr�rrrr r��sr��r�zm:%m d:%d y:%y H:%H M:%M S:%S�%z %Z�r�r*�
__format__r��assertRaisesRegexrlr��r+r\r�rr�r�fmtrrr �test_format�szTestDate.test_formatcCs`t|jt�rt}nt}|�|jj|�|�|jj|�|�|jjt�|�	|jj|jjk�dSrW)
rtr�rrrur�ror<rrs)r+Zexpected_classrrr r=�szTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|�}|�||�|�|jj||jj�|�|jj||jj�dS)Nr���@Br)r�ror�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)
Nr@r�r"rArr�rjr=�=)
rr�r�r*�tm_year�tm_mon�tm_mday�tm_hour�tm_min�tm_sec�tm_wday�tm_yday�tm_isdst)r+rr%r�rrr �test_timetuple�s&&..zTestDate.test_timetuplecCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�rEr@r�rA�r�r|r}r~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.)��ri��latin1��encoding�r��pickle_loadsr*�r+r`r�rb�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)NrAr=rCr+FTcs��kSrWrrr,rr r�;r�z'TestDate.test_compare.<locals>.<lambda>cs��kSrWrrr,rr r�<r�cs��kSrWrrr,rr r�=r�cs��kSrWrrr,rr r�>r�cs��kSrWrrr,rr r�?r�cs��kSrWrrr,rr r�@r�cs��kSrWrrr,rr r�Ar�)r�r*rsr�r-rkrlr.rr,r r/sD
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�rCr>r"FTcs�dkSrErr��ourrr r�Mr�z-TestDate.test_mixed_compare.<locals>.<lambda>csd�kSrErrrrr r�Nr�c@seZdZdS)z.TestDate.test_mixed_compare.<locals>.SomeClassNrXrrrr �	SomeClassRsrcs��kSrWrr�rZtheirrr r�Zr�cs��kSrWrrrrr r�[r�)r�r*rkrl)r+rrrr �test_mixed_compareCszTestDate.test_mixed_comparecCs |�|jj�|�|jj�dSrW)rsr�r�rorYrrr rN]szTestDate.test_boolcCsZdD]P}|�|dd�}|�d�d|kr|�|�d�d|�|�|�d�d|�qdS)N)r"r"r��cri�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"rAr=r)�r�rA�r�r=�rCrCr�r�r��r��r�r*r�rkr��
r+�clsr��baserr0�newval�newargsrb�gotrrr �test_replaceos

zTestDate.test_replacecCs:Gdd�d|j�}|ddd�}|�t|jdd��|�dS)Nc@seZdZdS)z4TestDate.test_subclass_replace.<locals>.DateSubclassNrXrrrr rY�srY��r"i�r!�r�rzr{r�)r+rYr\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>.CrKcs0|��}|�d�}�jj|f|�|�}||_|S�Nr��r��popr�ryr��r$r�ZkwsZtempr��resultrYrr ry�s

z.TestDate.test_subclass_date.<locals>.C.__new__cSs||j|jSrW)r�r��r+�startrrr �newmeth�sz.TestDate.test_subclass_date.<locals>.C.newmethN�r4rHrI�	theAnswerryr4rrYrr �C�sr7�r�rCr�r�r@rKrB)	r�r*r3r6r�r�r4r�r��r+r7r�rmr�rrYr rd�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�Nr@�r�ryr��r$r��kwargsr1rYrr ry�szKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N�r4rHrIryrrYrr rY�srYr8i�(z
2003-04-14r@rr�r��
fromisoformat�Z
base_obj_type�constr_name)r�rur*r�r�combiner�	timestampr�r{�getattr)
r+rYr�Zd_ord�d_isoformat�base_dr��
test_casesrA�constr_args�base_obj�constrr\rrYr �$test_subclass_alternate_constructors�s,�
�
z-TestDate.test_subclass_alternate_constructorscCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr)r�r|r}r~r*rsrOr)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-25rC)�9��
��rAr=�^bad tzinfo state arg$r"r�rg)	rtr�rrkrlr��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�rAr��r�r"r")r�rAr��r�rir�)r�rCr=�i�r>rf)�dt_str�r�r�r�r?r*)r+�
base_dates�dt_tupler\rX�dt_rtrrr �test_fromisoformat�s�

zTestDate.test_fromisoformatcCs<Gdd�d|j�}|ddd�}|�|���}|�||�dS)Nc@seZdZdS)z:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNrXrrrr rY
srYrgr�r�)r�r?r�ru)r+rYr\r\rrr �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)rkr�r�r?�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�StringIOrkrlr�r?�r+rcZ	bad_typesZbad_typerrr �"test_fromisoformat_fails_typeerror's
z+TestDate.test_fromisoformat_fails_typeerrorcCs~ddddddddd	d
ddd
tddftddfg}|D]F}|j|d��0|j|�}|��}|jj|�}|�||�W5QRXq2dS)N)��rCr=)r�r"rA)i�r�rf)r�r"rA)r�r�rrU)r�r�r)r�r"r")r�r�r)r�r"r")r�r�rrT)r(r�rr"r�r)�	datecomps)rrr�r�r��fromisocalendarr*)r+ZdatesrhZdobj�isocalZd_roundtriprrr �test_fromisocalendar0s,�
zTestDate.test_fromisocalendarc
Csfddddddddd	d
ddd
g
}|D]>}|j|d��(|�t��|jj|�W5QRXW5QRXq"dS)N)��rr")rlr�r")rl�6r")rlr"r)rlr"r�)rlr"�)rlr�r")r�r"r")rr"r")i��r"r")�r"r")rlror")rlr"ro�rj)r�rkr�r�ri)r+�isocalsrjrrr �!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)NcSsdSrWr)�xrrr r�hr�z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)rlr"r"r=rp)r�ryr�listr��tupler�rkrlr�ri)r+Z
err_txformersrqr%rZtxformerZerr_valrjrrr � test_fromisocalendar_type_errorsds�	z)TestDate.test_fromisocalendar_type_errorsN).r4rHrIrr�rr;r�r�r�r&rrDr�r�r�r�r�r�r�r�r�r�r�r=r�rr*rr/rrNrr)r,rdrKrLrSr]r^rarfrkrrrvrrrr r�:sT/2		&'
	
'
,

	r�c@seZdZdZdS)�SubclassDatetimer"Nr�rrrr rwsrwc@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�rCr�rlrkr�r[rrr r�sz"TestDateTime.test_basic_attributesc	Cs||�ddddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r=r"r�r��@ryr[rrr �test_basic_attributes_nonzero�sz*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"rAr=rCr>rEr@r2r9)r�rvr�rsr.r�r*r�r�rCr�rlrkr�r�rrr r;�s��zTestDateTime.test_roundtripc
Csb|�ddddddd�}|�|��d�|�|�d�d�|�|�d	�d
�|�|�d�d�|�|�d
�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jd	dd�d�|jt|jdd�|jt|jd
d�|�t|�d
�|jdddddddtjd�}|�|jdd�d�|�ddddddd�}|�|jdd�d �|�dddddd�}|�|jdd�d�|�|jdd�d�|�|jdd�d!�|�ddd�}|�|��d"�|�|�d�d"�|�|�d	�d#�|�t|�d#�tt	d$d%�d&�}|jddd|d�}|�|��d'�dS)(Nr"rAr=rCr>r�z0001-02-03T04:05:01.000123rP� z0001-02-03 04:05:01.000123�z0001-02-0304:05:01.000123r�u0001-02-03�04:05:01.000123r���timespecz
0001-02-03T04rNz0001-02-03T04:05r�z0001-02-03T04:05:01r�z0001-02-03T04:05:01.000r��auto)�seprz0001-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�rkr�r�rr�rJrr�rrr r��sD�zTestDateTime.test_isoformatc	Cs�dtdd�fdtdd�fdtddd	�fd
tddd
d�fdtddddd�fg}ddtjfdttd��fg}|dd�|D�7}|�dddddd�}d}|D]4\}}|j|d�}||}|j|d��W5QRXq�dS)N�05:00r>r��02:00rA�06:27rErr��12:32:30r�rjrfr��02:04:09.123456rCr9r�r��r�N�+00:00rcSs2g|]*\}}dD]\}}||t||�f�qqS�))�-r�)�+r"r�rrbr��prefix�signrrr r!�s�z8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>rgr"�%z2016-04-01T12:37:09r��tzi�rrr�r�r�r�)	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�r9r#rCr>r"r�r�r�c@seZdZdd�ZdS)z#TestDateTime.test_format.<locals>.AcSsdSr�rrYrrr 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=rA�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"r9rr#r�rr�r�r�r�)r�r*rsrr)r+rmr��dt3rrrr �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>.MyStrcWsdSrWr)r+r�rrr r�:szbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r4rHrIr�rrrr �MyStr9sr�r0)r�)r+r\r�rrr r^8szKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r4rHrIr^rrrr �MyTzInfo7sr�r�r=rArr0�%Z)rJr�rkrlr�)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�rrgrAr�r�r�rfr�r�r�rjrr�r�r�r�r�r�r���fold)r�rrrkr�rlrYrrr 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�rf�r"rAr�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�rCrr=rAr�rEr�r�r@r�r#r�r�rhr9r�r�r�r�r�r>r�r�rcs��SrWrrr
rr r��r�z0TestDateTime.test_computations.<locals>.<lambda>cs��SrWrrr
rr r��r�cs��SrWrrr
rr r��r�cs��SrWrrr
rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrr�rr r��r�cs��SrWrrrrr r��r�cs��SrWrrrrr r��r�cs��SrWrrrrr r��r�r�)r+rr�Zmillisecr�r�rr�r r�s�
" """����zTestDateTime.test_computationscCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�rEr@r�r�r�r"�rArr)rrr r*�s

zTestDateTime.test_picklingc	Csn|�ddddddd�}ttjd�D]D}t�||�}t�|�}|�|jd�|�|jd�|�|j	d�q$dS)	Nr�rAr@r��0r�i��r")
r�rr�HIGHEST_PROTOCOLr}r~r*r�r�rC)r+rrr:rrrr �test_more_pickling�s
zTestDateTime.test_more_picklingcCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr�)rwr|r}r~r*rsrOr)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.)rrirr�r�r"r�r
rrrrrr 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�rir�r�r0r�r�r")r�r*rsr�rr$)r+r�rr rr'rrr �test_more_compare�s2


zTestDateTime.test_more_comparecCsd|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j
�|�|j|j�dSrW)
r*r�r�r�r�r�rCrr�rrlrrk)r+rbr(rrr �verify_field_equality	sz"TestDateTime.verify_field_equalitycCs6ddl}|��}|�|�}|j�|�}|�||�dS�Nr)r�	localtimer�r�r��r+rr�rbr(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)Nrr"g��@rAr=rC���6�@r*rirfr�r�i'r�)r�r*rCr�r�rr?)r+r��t0rr:rrr �test_timestamp_naive8	s,
��� z!TestDateTime.test_timestamp_naivecCs�|jdddtjd�}|�|��d�|jdddddddtjd�}|�|��d�|jdddddddttd	d
�d�d�}|�|��d�dS)
Nrr"rr
rAr=rCg�7��@r�r�r�r�)r�rr�r*rCrr�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�rJi�#gH�����z>g1E��2�>g<"2��?g�P���?r"rHrI)r�r�r�r*rkr��OSError)r+Zftsrr�Z	minus_oner�rrr rL_	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)rrkr�iX)r�r�r�rr�rCr*r�r?r�r5r�rorkr�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�)rkr?r�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�rYrrr �!test_negative_float_fromtimestamp�	sz.TestDateTime.test_negative_float_fromtimestampcCs.|j�d�}|�||�ddddddd��dS)	Nr�i�r�rr�r�r0i�~)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�r�ZassertLessEqual)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||d��0t�|j||�}|j�||�}|�||�W5QRXqd|jj}|�|dd���d	t	�|�|d
d���dt	�|�|dd���t
d	d
dd��ddtjtj
dffD]z\}}|dk�rFd}	|}
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�%zrAz-0002r?z-00:02:01.000003r"r=)rNr�r�)rr�)rZGMTrr�r�r�z{}{:02d}{:02d} {}r�r�)z	+1234 UTCr�r�r'r�r�z-2400z-000)�	_strptimeZ_strptime_datetimer��strptimer*rzr{r�r]�MINUTErr�rr^rrr�r�r�rrkr�)r+r�r�rbr(�inputsr�Z	tzsecondsr^r�r�r�rN�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�rAr"rCr>rEr�rz
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�rkr�r�r*)r+r�Znewdatermr�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�rrEr��!)	r�r�rrEr�r�rCr�r�r"r�)r�r*r�r�r�rCr�rlrkr�r�rr�r�r�rrrrrr)r+r�Zttrrr �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�rrEr�r��/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))r�r�z	33.000123))r�rZ33rA)r�r�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=rCr��-��)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=rCr�r�r�)rrr"rArrr)rrr�rBr*rkrlrr�rzr)r+r%r�rbrBr\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"rAr=rCr>rEr@r)rrr �r�r>�rlrE�rkr@�r�rnr�r�r�r!r"r#rrr r)�
s
zTestDateTime.test_replaceZEDT4c	CsF|j��}tdd�}|jttdd�d�d�}|�|��|�|�t	|j||�|�t	|j|�|j|d�tddd�}|�|�|�|�|�|j|d	�|�Gd
d�dt
�}|�}|�t|j|�|�|j|d��|�|�Gdd
�d
t
�}|�}|�t|j|�Gdd�dt
�}	|	�}
|j|
d�}|�t	��|��W5QRXdS)N�,Z0044rDr��EDTrrCr�r�c@seZdZdd�Zdd�ZdS)z+TestDateTime.test_astimezone.<locals>.BoguscSsdSrWrr[rrr r]�
r�z5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetcSstd�Sr�rr[rrr r_�
r�z/TestDateTime.test_astimezone.<locals>.Bogus.dstN�r4rHrIr]r_rrrr �Bogus�
sr�c@seZdZdd�Zdd�ZdS)z/TestDateTime.test_astimezone.<locals>.AlsoBoguscSstd�Sr�rr[rrr r]�
r�z9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetcSsdSrWrr[rrr r_�
r�z3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNr�rrrr �	AlsoBogus�
sr�c@seZdZdd�Zdd�ZdS)z,TestDateTime.test_astimezone.<locals>.BrokencSsdSrErr[rrr r]�
r�z6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetcSsdSrErr[rrr r_�
r�z0TestDateTime.test_astimezone.<locals>.Broken.dstNr�rrrr �Broken�
sr�)r�rvrJr�rrr*�
astimezonerkrlrr�)r+r\r��dt_utcZdt_fr�Zbogr�Zalsobogr�ZbrokenZ	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>.CrKcs0|��}|�d�}�jj|f|�|�}||_|Sr-r.r0rYrr ry�
s

z6TestDateTime.test_subclass_datetime.<locals>.C.__new__cSs||j|j|jSrW)r�r�rkr2rrr r4�
sz6TestDateTime.test_subclass_datetime.<locals>.C.newmethNr5rrYrr r7�
sr7)r�rCr�r�rg�)r�r@rKrB)
r�r*r3r6r�r�r4r�r�rkr9rrYr rh�
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:r;r<rYrr ry�
sz\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__Nr>rrYrr re�
sre)r�rCr�r�rf�r�z2003-04-14T12:30:15.123456gh͏�TM�Ar@r�r�r?r�z%Y-%m-%dT%H:%M:%S.%frBrr=r@)
r�rur*r�rCrr�r�rrr�r{rD)r+rer�rEZutc_tsrFr�rGrArHrbrI�constructorr\rrYr �-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:r;r<rYrr rysz@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__Nr>rrYrr re
srervr�Znow_utcr�Z	now_fixedr�r�r�r@)	r�rr�rr�rDrur*r�)r+rerGr0Z	meth_namer=rJr\rrYr �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)NrTrUrVrW�rrrr)rrrih�)rrr�G�)r�rfr�r�r|rPr�r�rAcs4g|],}�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�r?r*)r+rZ�
separators�dtsr\r�r�r\rr�r �test_fromisoformat_datetime#s0����z(TestDateTime.test_fromisoformat_datetimec
Cs�|�ddddddd�}tdd�tdd�td	d
d�tdddd
�tddddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D]<}|j|d�}|��}|j|d��|j�|�}W5QRXq�dS)Nrgr�rfr��pQr>r�rArErr�rjr�rCr9r�r�cSsg|]}d|�qS�r�r�rr�rrr r!Psz<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|��qSrrr�rrr r!Usr��tstr�r�rrr�r�r�r�r?)r+Zbase_dtr�r�r�r\r�r\rrr �test_fromisoformat_timezoneFs$
��z(TestDateTime.test_fromisoformat_timezonec
Csvddddddddd	g	}|D]V}|�d
ddd
ddd�}|j|d�}|j|d��|j�|�}|�||�W5QRXqdS)Nr|rP��€uʁuᛇu時u🐍r�rZr"rr�r�r�iu�r�r�rY�r+r�r�r\r�r\rrr �test_fromisoformat_separators_s �z*TestDateTime.test_fromisoformat_separatorsc
Csdddg}|D]R}|�ddddd�}|j|d�}|j|d	��|j�|�}|�||�W5QRXqdS)
Nr�r�rZr"rr�r�r�r�rYrrrr �test_fromisoformat_ambiguouspsz)TestDateTime.test_fromisoformat_ambiguouscCs�ddg}dtjttdd��ttdd��ttddd��g}d	d
ddd
g}t|�D]�\}}|D]�}|D]�}|dkr�d|dd}|dd�|f}|j|dd|�d|i�}	|	j|d�}
|j|
d��|j�|
�}|�|	|�W5QRXqbqZqNdS)N)r�r�rCrnr�r�r�)r�r�rCrnr�r�rr�r�rArErr�r�rNr�r�r�r�rrCrr~r��	rr�r�	enumerater�r�r�r?r*)r+Zdatetime_basesr��	timespecs�ipr�r�r[�new_microsecondsr\r�r\rrr �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�r`�r�rkr�r�r?r_rrr �!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�r?)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�r?rzrrr�)r+rXr\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>.DateTimeSubclassNrXrrrr re�srergr�r�r9rfr�i��r#r�r)r�rrr?r�r*ru)r+rer\r\rrr r^�s�z(TestDateTime.test_fromisoformat_subclassN)<r4rHrIrr�rr{r;r�r�r�r�r�r�r�r&rr*r�r�rr�r�r�r�r�run_with_tzr�r�rLr�r�r��unittestZskipIfr2�platformr�r�r�r�r�r�r�r�r�r)r�rhr�r�r�r�rrrrrrr^rrrr rx�sn
,5D			!


()		

:""
 1#&rxc@s"eZdZeZe�d�dd��ZdS)�TestSubclassDateTimeznot appropriate for subclassescCsdSrWrrYrrr r;�sz#TestSubclassDateTime.test_roundtripN)r4rHrIrwr�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*r�rlrkr�r�rrr r�s
zTestTime.test_basic_attributescCsL|�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r�rzrr�rrr r{�s
z&TestTime.test_basic_attributes_nonzerocCsp|�dddd�}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j|j	�}|�||�dS)Nr"rAr=rCr2r9)
r�r�rsr.r�r*r�rlrkr�)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"rAr=rCFTcs��kSrWrrr,rr r�%r�z)TestTime.test_comparing.<locals>.<lambda>cs��kSrWrrr,rr r�&r�cs��kSrWrrr,rr r�'r�cs��kSrWrrr,rr r�(r�cs��kSrWrrr,rr r�)r�cs��kSrWrrr,rr r�*r�cs��kSrWrrr,rr r�+r�cs��kSrWrrr,rr r�,r�)	r�r*rsr�rr$r-rkrl)r+r�r rr'rr,r �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�rkr�rYrrr 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�rfr�r"rArr>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�}|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d �|�|jd!d�d"�|�|jd#d�d"�|jt|jd$d�|jt|jd%d�|jdddd&d�}|�|jdd�d'�|jdddd(d�}|�|jdd�d)�|�|jd!d�d*�|�|jd#d�d�dS)+NrCr>r"r�z04:05:01.000123z00:00:00�r�z00:00:00.000001r#z00:00:00.000010rz00:00:00.000100r�z00:00:00.001000r�z00:00:00.010000i��z00:00:00.100000r�r'r(r�)r�rlrkr�r�r~Z12rNz12: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�rkr�r�rrr r�[sNzTestTime.test_isoformatc	Cs�dtdd�fdtdd�fdtddd	�fd
tddd
d�fdtddddd�fg}ddtjfdttd��fg}|dd�|D�7}|�ddd�}d}|D]4\}}|j|d�}||}|j|d��W5QRXq�dS)Nr�r>r�r�rAr�rErr�r�r�rjrfr�r�rCr9r�r�r�r�rcSs2g|]*\}}dD]\}}||t||�f�qqSr�rr�rrr r!�s�z4TestTime.test_isoformat_timezone.<locals>.<listcomp>r�z12:37:09rr�r�)	r+r�r�Zt_baser�r�r�r�r�rrr r��s(�	��z TestTime.test_isoformat_timezonecCs"|jdd�}|jt|jdd�dS)Nr"�rkr=)r�)r�rkrlr�r�rrr �test_1653736�szTestTime.test_1653736cCs\|�dddd�}|�|�d�d�|�|�d�d�z|�d	�Wntk
rVYnXdS)
Nr"rAr=rCz%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"rAr=rCr�r�r�c@seZdZdd�ZdS)zTestTime.test_format.<locals>.AcSsdSr�rrYrrr 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"rAr=rCz01:02:03.000004r#r�z10:02:03.004000rr3z00:02:03.400000r�z12:02:03r�r�z23:15:00)r*r�r�rYrrr 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)Nr2r"rAr=rCz%s(1, 2, 3, 4)r#r�z%s(10, 2, 3, 4000)rr3z%s(0, 2, 3, 400000)r�z%s(12, 2, 3)r�r�z
%s(23, 15)r4r5rrr r��s �����zTestTime.test_reprcCsN|�|jj|j�|�|jj|j�|�|jjt�|�|jj|jjk�dSrW)rur�r�ror<rrsrYrrr r=�szTestTime.test_resolution_infocCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�r�r�r�r�rArr)rrr r*�s

zTestTime.test_picklingcCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr)rr|r}r~r*rsrOr)rrr �test_pickling_subclass_time�s
z$TestTime.test_pickling_subclass_timec
Csnddddddg}t|�D]P\}\}}|j|d��2|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)rr
r)rr�r�rr*)r+r`rrr�rbr~r�rrr r
s�
zTestTime.test_compat_unpicklecCsh|j}|�|d��|�|dd��|�|ddd��|�|dddd��|�|d��|�|��dS)Nr"r)r�rs)r+r$rrr rN
szTestTime.test_boolc
Cs�|j}ddddg}||�}|�||���d}dD]H\}}|dd�}|||<||�}|jf||i�}	|�||	�|d7}q2|d�}|jt|jdd�|jt|jd	d
�|jt|jdd�|jt|jd
d�dS)Nr"rAr=rCr)r�r�r�r�r��r�r��rlrrr�rr"r#rrr r)%
s"
zTestTime.test_replacecCs8Gdd�d|j�}|dd�}|�t|jdd��|�dS)Nc@seZdZdS)z4TestTime.test_subclass_replace.<locals>.TimeSubclassNrXrrrr �TimeSubclass?
sr!r�rfr#rr+)r+r!r�rrr r,>
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>.CrKcs0|��}|�d�}�jj|f|�|�}||_|Sr-r.r0rYrr ryJ
s

z.TestTime.test_subclass_time.<locals>.C.__new__cSs||j|jSrW�r�rkr2rrr r4Q
sz.TestTime.test_subclass_time.<locals>.C.newmethNr5rrYrr r7G
sr7)rCr>rEr�r@rKrB)	r�r*r3r6r�r�r4r�rkr9rrYr �test_subclass_timeE
s

zTestTime.test_subclass_timec	Csld}ddtd�dfD] }|�t|j||dd��q|�td�� |�tdgt|��d�W5QRXdS)	Nz2:59.0r|�9r��ÿr"rQr�)�chrrkrlr�r�rRr$)r+r%Z	hour_byterrr rS_
s
�z!TestTime.test_backdoor_resistanceN)r4rHrIrr�rr{r;rr�r&r�r�rr�r�r�r�r=r*rrrNr)r,r#rSrrrr 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dd�S)NrK����rMrr[rrr r]s
szATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r4rHrIr^r]r_rrrr �
introspectiveq
sr+r"rAr=rr)r(r*rKrM)r�rrr*r^rr]r_)r+r$r+�objrbrrr �test_argument_passingn
sz TZInfoBase.test_argument_passingcCsz|j}|jt|ddddd�Gdd�dt�}|jt|ddd|d�Gdd�dt�}|�}|ddd|d�}|�|j|�dS)Nr"r�rc@seZdZdd�Zdd�ZdS)z3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTrycSsdSrWrrYrrr rV�
r�z<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__cSsdSrWrr[rrr r]�
r�z=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN�r4rHrIrVr]rrrr �NiceTry�
sr/c@seZdZdd�Zdd�ZdS)z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTrycSsdSrWrrYrrr rV�
r�z>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__cSsdSrWrr[rrr r]�
r�z?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNr.rrrr �	BetterTry�
sr0)r�rkrl�objectrrz)r+r$r/r0rr�rrr �test_bad_tzinfo_classes�
sz"TZInfoBase.test_bad_tzinfo_classesc

Cs�Gdd�dt�}|j}dD]�\}}|tkr@|ddd||�d�}n$|tkrd|dddddd||�d�}n|r�t|�}t|d	�\}}d
|dkr�dp�d
||f}	t|t�r�|��}|�t	|�d|	�q|�
tt	|�qdS)Nc@seZdZdd�Zdd�ZdS)z6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.EdgycSst|d�|_dSrL�rrU)r+rUrrr rV�
sz?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__cSs|jSrW)rUr[rrr r]�
sz@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNr.rrrr �Edgy�
sr4))�`���F)�a���T)�T)r�Fr"rAr=rrEr�z%c%02d:%02drr�r�z01:02:03)rr�rrr�rrrO�timetzr*r�rkr�)
r+r4r$rUZlegitr�Zaofsr�r��tagrrr �test_utc_offset_out_of_bounds�
s
z(TZInfoBase.test_utc_offset_out_of_boundscCs�|j}Gdd�dt�}|ddd�|ddddd�|ddd|�d�fD].}|�|���|�|���|�|���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>.C1cSsdSrWrr[rrr r]�
r�z4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetcSsdSrWrr[rrr r_�
r�z.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstcSsdSrWrr[rrr r^�
r�z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameNr�rrrr �C1�
sr;r"rc@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C3cSs
tdd�S)Nr6rMrr[rrr r]�
r�z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetcSs
tdd�S)Nr7rMrr[rrr r_�
r�z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstcSsdS�N�anamerr[rrr r^�
r�z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNr�rrrr �C3�
sr>r6rMr7r=c@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C4cSsdSr<rr[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.tznameNr�rrrr �C4�
sr?c@seZdZdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C6cSs
tdd�S)Ni��r�rr[rrr r]�
r�z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetcSs
tdd�S)Nr�r�rr[rrr r_�
r�z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNr�rrrr �C6�
sr@c@seZdZdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C7cSs
tdd�S)Nr�r�rr[rrr r]�
r�z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetcSs
tdd�S)N���r�rr[rrr r_�
r�z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNr�rrrr �C7�
srBr�r�rA)r�rr�r]r_r^r*rrkrlr�)r+r$r;r�r>r?r@rBrrr �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}
||k�s ||k�r:||k�s4||k�r:d}n6||k�rR|k�r\nnd}n||k�rld}nd
}|�
|
|�q�q�dS)Nc@seZdZdd�ZdS)z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetcSs$|jdkrt|jd�Stdd�SdS�Nr#rMr��rlrr�rrr r]�
s
zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNrerrrr �OperandDependentOffset�
srFrnr9r#rr=r ri�rlrrr�r")r�rr�rrrrrrrlr*r)r+r$rFr%�d0r_r�rsr��opr(rbrrr �test_aware_compare�
s6	

(
zTZInfoBase.test_aware_compareN)r4rHrIr-r2r:rCrJrrrr r'l
s
0r'c@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*r�rlrkr�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|jjk�rd5|	_|�t|
jd3�dS)6Nr�r�r"rr�r?r��METr=r@r�rr�rg�(r)r�rrMzno argscs��kSrWrr�rVZt5rr r�Br�z'TestTimeTZ.test_zones.<locals>.<lambda>cs��kSrWrrrOrr 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 +0100r6z%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>.BadtznamerKcSs|jSrWr�r[rrr r^er�z/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r4rHrIr�r^rrrr �	BadtznamecsrPrArCz%H:%M:%Sz02:03:04r�r:r�)rJrr*rr�r]rrkrlr^r_r#r�r�r�r�r�r3r4r�r�)r+�estr��metrr rUr%ZyuckrPr�rrOr �
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"rAr=r7r�ri�r�r0rEri���r�i���)r�rJr*r#rrrr �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)
NrrAr�r�r>rEr@rrM)
r�r|r}r~r*r	r
r`rurr]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>rEr@r�rr
rrM)
r`r�rr*r�rurr]rr^)r+r`rVrbrr~r�rrr r�s�
zTestTimeTZ.test_compat_unpicklecCs||j}|dtdd�d�}|�|�|dtdd�d�}|�|�|dtdd�d�}|�|�|ddtd	d�d�}|�|�dS)
Nrr�r�rr>i,r�r�r7)r�rJrs)r+r$r�rrr �test_more_bool�s


zTestTimeTZ.test_more_boolcCsX|j}tdd�}ttdd�d�}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
|jdd�dS)Nr�+100�8���rM�-200r"rAr=rCrr�r�r�r�rrr�rr�r rr�r�r�rJrr*r�r^r�rrzrkr��r+r$Zz100Zzm200r�r%rr0r&r'rbr(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"rAr=rr�rc@seZdZdd�Zdd�ZdS)z-TestTimeTZ.test_mixed_compare.<locals>.VariescSstdd�|_dS�Nr�rMr3rYrrr rV�sz6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd�7_|jS�Nr"rM�rUrr�rrr r]�sz7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr.rrrr �Varies�sr`r�rMr�)	r�r*r�rJr�rr]rrs�r+rr r`�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�)r9r�r�)r>rf)rCr�)ri�i�[
rAr�rErr�rr�)rt�	itertools�productrr�rr�r�r�r?r*)r+Z
time_examplesZhhZmm�ssZusecr�Zttupr�r�r��t_rtrrr r]s&��zTestTimeTZ.test_fromisoformatc
Cs�|�dddd�}tdd�tdd�tdd	d
�tdddd�tdd
ddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D]<}|j|d�}|��}|j|d��|j�|�}W5QRXq�dS)Nr�rfr�r�r>r�rArErr�rjr�rCr9r�r�cSsg|]}d|�qSr�rr�rrr r!*sz:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|��qSrrr�rrr r!/srr�r�)r+Z	base_timer�r�r�r�r�rfrrr r� s$
��z&TestTimeTZ.test_fromisoformat_timezonecCs�ddg}dtjttdd��ttdd��ttddd��g}d	d
ddd
g}t|�D]�\}}|D]�}|D]�}|dkr�d|dd}|dd�|f}|j|dd|�d|i�}	|	j|d�}
|j|
d��|j�|
�}|�|	|�W5QRXqbqZqNdS)N)rnr�r�r�)rnr�r�rr�r�rArErr�r�rNr�r�r�r�r�rr"rr~r�r)r+Z
time_basesr�rrr�r�Zt_tuplerr�r�rfrrr 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:30ar	r
r_rrr raTs4�z#TestTimeTZ.test_fromisoformat_failsc
CsHddl}dd|�d�g}|D]&}|�t��|j�|�W5QRXqdS)Nrs12:30:45z12:30:45rbrerrr rfrs
z-TestTimeTZ.test_fromisoformat_fails_typeerrorcCsPGdd�d|j�}|ddddtjd�}|�|���}|�||�|�||�dS)Nc@seZdZdS)z<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNrXrrrr r!}sr!r�r�r�i�r)r�rr�r?r�r*ru)r+r!ZtscZtsc_rtrrr r^|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>.CrKcs0|��}|�d�}�jj|f|�|�}||_|Sr-r.r0rYrr ry�s

z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__cSs||j|jSrWr"r2rrr r4�sz2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNr5rrYrr r7�sr7rCr>rE��r�r�r"r�r@rKrB)
r�rJr*r3r6r�r]r4r�rkr9rrYr �test_subclass_timetz�s

zTestTimeTZ.test_subclass_timetzN)r4rHrIrr�rLrSrTr*rrWr)rr]r�rrarfr^rirrrr rK
s W
"'

rKc@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"rAr=rCr>rEr@)
r�r*r�r�rCr�rlrkr�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"r7r�rr�rr�r�r�r6rAr=rg��r)rrk)rr�c@seZdZdd�ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.NaivecSsdSrWrr[rrr r]�r�z>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNrerrrr �Naive�srmr>rEr@c@seZdZdd�ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.BoguscSs
tdd�S)Nr�rMrr[rrr r]�sz>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNrerrrr r��sr�cs��kSrWrr�rr rr r��r�z7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)r�rJrrsr*r�r�rkrlrr�)r+rmr�rrnr �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�rAr�r�rr"rr�rrM)r�r|r}r~r*r	r
r`rJrurr]rr^rUrrr 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.)rrirr�r�r"r�r�r�rr
rrM)	r`r�rr*rurr]rr^)r+r`r�rVrbrr~r�rrr r
s�
z#TestDateTimeTZ.test_compat_unpicklecCsr|jdddtdd�d�}t|�|jtdddddd	td
d�d�}t|�|jdddtdd�d�}|�tt|�dS)
Nr"r7r�rr�rr�r�r�r6r>r5)r�rJr#rrkr�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�rMr�r=rir@r�rr�rgrMz2002-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))
rJrr*rr]rr^r#r�r�)r+rQr�rRrr rUr%rrr rS@s8


zTestDateTimeTZ.test_zonesc
CsXtdd�}tddd�}tdddd|d	�}t�||�}|�|tddddddd|d	��dS�
Nr�rMr�r=rCr�r�r�r)rJrrrrBr*)r+rRr%r�r\rrr r�^s
�zTestDateTimeTZ.test_combinec
Csxtdd�}|jddddddd|d	�}|�|��tddd��|�|��tdddd��|�|��tdddd|d	��dSrq)rJr�r*rrr8)r+rRr\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��SrWrr�rv�nowawarerr r�vr�z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>cs��SrWrrrrrr r�wr�cs��SrWrrrrrr r�zr�cs��SrWrrrrrr r�{r�cs��SrWrr)rsrr r�|r�rr"r�i.)r�rNr�cs��SrWrr)r��nowawareplusrr r��r�r6r�Zrandomtimezoner7r�rr�r�r�roi>rMr�r�)r�rvrJrr�rBrrzrr*r8rkrlrrdZ	randranger]rror�rr�)
r+Ztz55Z	timeawareZ
nowawareplus2r�Ztzrr(rbr�roZmaxdiffZtzaZtzbr)r�rvrsrtr �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|	|�tdd�kr�q�q�|�d�q�dS)NrK�42r�rMr�r�rVrr�r�r0r��weirdtzr=rfr�z0utcnow(), now(tz), or astimezone() may be broken)r�rvrJrzrr*r]rrkrlrrrr�r�r�r�Zfail)r+�methr%�off42�another�againr�rxr�rvr�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)NrrKrvr�rMr�rrwr>i��'r�r�)rr�r�rJrzrr*r]rrkrlrr�r�)r+rryr�r%rzr{r|rCZutcdatetimer]r�rbr(rrr �test_tzinfo_fromtimestamp�s*


z(TestDateTimeTZ.test_tzinfo_fromtimestampcCs:|jj}|�}tdd�}|�t||�|jt||d�dS)NrKrvr)r�r�rJrkrl)r+ryr%rzrrr �test_tzinfo_utcnow�s

z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}|��}||�}tdd�}|�t|||�|jt|||d�dS)NrrKrvr)rr�r�rJrkrl)r+rryr�r%rzrrr �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�}||_dSrL�rOrPr�dstvalue�r+r�rrr rVs

z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__cSs|jSrW�r�r[rrr r_sz5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN�r4rHrIrVr_rrrr �DSTsr�))����r")r�r")rr)Nr�r"r#r�rfrNrrrsr7r6r�r5)rr�r�r*r�r�r�rrrrrrrkrlr�)r+r�r$r��flagr%r�rrr �test_tzinfo_timetuples&""z$TestDateTimeTZ.test_tzinfo_timetuplecs�Gdd�dt��|j}|�t|ddd�d�d�j�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�}||_dSrLr�r�rrr rV2s

z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__cSs|jSrWr�r[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�|_dSrL)rVr�uofs)r+r�Zdofs�r�rr rV?sz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__cSs|jSrW)r�r[rrr r]Bsz8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffset)Nr.rr�rr �UOFS>sr�)r�r�rNrAr=r#r�rfrNi���rirgr�c@seZdZdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFScSsdSrWrr[rrr r]\sz8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNrerrrr �NOFS[sr�c@seZdZdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFScSsdS)Nr�rr[rrr r]dsz8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNrerrrr �BOFScsr�r�r�r�r�i+�r�r7r�rr�r�r�r6)#rr�rkrpr]Zutctimetupler*r�r�r�r�rCr�rrrkrr�rr�rrrr�rlrr�r�ror�r�rr?rr�)r+r$r�r�r%r�r�r�r�ZdtzrBZhugerr�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"rAr=rCr>r�rz04:05:59z.987001rP�kuሴr|)rJr�r^r�r*r�)r+rZplusZminus�unknownr$ZdatestrZofsrr%ZtimestrZofsstrZtailstrZisorrr �test_tzinfo_isoformat�s$



z$TestDateTimeTZ.test_tzinfo_isoformatc	Cs2|j}tdd�}ttdd�d�}dddd	d
dd|g}||�}|�||���d
}dddddddd|ffD]H\}}|dd�}	||	|<||	�}
|jf||i�}|�|
|�|d7}qh|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|ddd�}|j	t
|jdd�dS)NrrXrYrMrZr"rAr=rCr>rEr@rrrr r�r�r�r�rrr�r�r�r!r[r\rrr r)�s>
�
zTestDateTimeTZ.test_replacecCsDtdd�}tdd�}ttdd�d�}|jj|d�}|�|j|�|�t|j|�|�|j�}|�|j|�|�	|�
�|�
��|�	|��|���|�|�}|�|j|�|�	|��tdd��||��}||�|�7}|j
|d	�}|�	|�
�|�
��|�	|��|���|�	|��|���|�|j|j�|�	||�dS)
N�Noner�Z44r>r�Zm300r�r�r)rJrr�rvrzrrkr�r�r*rrr]r�r8)r+ZfnoneZf44mZfm5hr\rsr(rbrrr �test_more_astimezone�s*


z#TestDateTimeTZ.test_more_astimezoner�cCs4|j�tj�}|�|�d�|�|�|��|�dSrW)r�rvrr�r*r�r[rrr �test_astimezone_default_utc�sz*TestDateTimeTZ.test_astimezone_default_utcr�cCs�|jdddddtjd�}|��}|�||�|�|�d�d�|jdddd	dtjd�}|��}|�||�|�|�d�d
�dS)Nr*rirCrErfrr�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)Nrrir"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]�}||}	||k�s||k�r4||k�s*||k�r4td�}
nF||k�rL|k�rZnn
td�}
n ||k�rptdd
�}
n
tdd
�}
|�|	|
�q�q�dS)Nc@seZdZdd�ZdS)zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetcSs$|jdkrt|jd�Stdd�SdSrDrEr�rrr r]�s
zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNrerrrr rF�srFrnr9r#rir�rgr�rr=r rMrGri���r�)r�rr�rrlr*)r+r$rFr%rHr_r�rsr�r(rbrrr �test_aware_subtract�s4	(



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"rAr=rCr>rEr@rr�rc@seZdZdd�Zdd�ZdS)z1TestDateTimeTZ.test_mixed_compare.<locals>.VariescSstdd�|_dSr]r3rYrrr rV-sz:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd�7_|jSr^r_r�rrr r]/sz;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr.rrrr r`,sr`r�rMr�)	rr*r�rJr�rr]rrsrarrr 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>.CrKcs0|��}|�d�}�jj|f|�|�}||_|Sr-r.r0rYrr ryCs

z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__cSs||j|jSrW)r�r�r2rrr r4Jsz:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNr5rrYrr r7@sr7r�r�rrCr>rErhr�r�r"r�r@rKrB)
r�rJr*r3r6r�r]r4r�r�r9rrYr �test_subclass_datetimetz>s

z'TestDateTimeTZ.test_subclass_datetimetzN)r4rHrIrr�rkror*rrprSr�r�rur}rr�r�r�r�r�r)r�rrr�r�r�r�rr�rrrr rj�s8E%A%#
$P'



,rjcCs d|��}|r|t|�7}|S)NrE)r�r)r\Z
days_to_gorrr �first_sunday_on_or_afterZsr�rMr�r�rCrAr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
USTimeZonecCs"t|d�|_||_||_||_dS�Nr��r�	stdoffset�reprname�stdname�dstname�r+r�r�r�r�rrr rVnszUSTimeZone.__init__cCs|jSrW�r�rYrrr rZtszUSTimeZone.__repr__cCs|�|�r|jS|jSdSrW�r_r�r�r[rrr r^ws
zUSTimeZone.tznamecCs|j|�|�SrW�r�r_r[rrr r]}szUSTimeZone.utcoffsetcCsf|dks|jdkrtSttj|jd��}ttj|jd��}||jdd�krV|kr^nntStSdS�Nr!r)rr�r��DSTSTARTr�r��DSTENDr��r+r\r3�endrrr r_�s zUSTimeZone.dstN�r4rHrIrVrZr^r]r_rrrr r�ls
r�r�r�r�r�rF�CentralZCSTZCDTrB�MountainZMSTZMDTi�����PacificZPSTZPDTr�i0���ZUTCfakec@sdeZdZedddd�Zedddd�ZeZdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestTimezoneConversionsr�rCr@rAr#rr"c
Cs|�|��t�|�|�|�|�|�|�}|�|�}|��|��kr�|jdkr�|�|t|�|�|��t�|�|�|�|�|��n|�||�|t}|�|�}	|��|��kr�|jdkr�|�|	|jdd��|t7}|�|�}	|�|	|jdd��n|�|	|t�dS)NrArr"r)r*r_r�r�rr�r�r�)
r+r\r�r��dston�dstoff�asutc�there_and_backZnexthour_utcZnexthour_tzrrr �checkinside�s&


�


z#TestTimezoneConversions.checkinsidecCsF|�|��t�|�|�|�|�|�|�}|�|�}|�||�dSrW)r*r_r�r�)r+r\r�r�r�r�rrr �checkoutside�s


z$TestTimezoneConversions.checkoutsidec	Cs�|jj|d�}|jj|d�}tdd�tttdd�tdd�fD]p}|�|||||�||||fD]}|�|||||�qb|�|||�||||fD]}|�|||�q�q<dS)Nrrgr�r"rMr�)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�dSrW)r�r��utc_realr��utc_fakerYrrr �	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)NrCr�i��z-0900rrr=rrE�r�rr"rA)rr"r"rA�rrfr�r )
r�rrJr�r�r�r*r�r�r�r�r]r�)r+ZfourbackZninewestrbr(Zsixutcr�r�Zfirst_std_hourr�Z	asutcbaseZtzhourZexpectedbaserlZastzrrr �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>.okcSstSrW�r�r[rrr r]Ir�z<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetcSstSrWr�r[rrr r_Jr�z6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNr�rrrr �okHsr�rc@seZdZdd�ZdS)z5TestTimezoneConversions.test_bogus_dst.<locals>.notokcSsdSrWrr[rrr r_Rr�z9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN�r4rHrIr_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�rvr�r�r�rkr�)r+r�rvr�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
d�8}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
||jSrW)r�r[rrr r�nszDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN�r4rHrIr�rrrr �FauxUSTimeZonemsr�r��FEasternZFESTZFEDTrCr�)r�rr"r=rCr>rr�r"r�)rr"r"rAr=rC)rkrlr�r�rr�r�r�r�r*rrr�r�r�rr�r�r�r�)
r+rvZenowr�r�r3ZfstartZwallrbr(rrr r�bsL







z$TestTimezoneConversions.test_fromutcN)r4rHrIrr�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��kSrWrr�Zas_dateZas_datetimerr r��r�z+Oddballs.test_bug_1028306.<locals>.<lambda>cs��kSrWrrr�rr r��r�cs��kSrWrrr�rr r��r�cs��kSrWrrr�rr r��r�cs��kSrWrrr�rr r��r�cs��kSrWrrr�rr r��r�cs��kSrWrrr�rr r��r�cs��kSrWrrr�rr r��r�Tr"r�)rCFr)rr�rrBrrsr�rkrlr*�__eq__rCr�r�r�r�rw)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$dSrE)rr�rrr�rrrrk�AttributeErrorr$)r+rsrrr �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
||_dSrW��value)r+r�rrr rV�sz6Oddballs.test_check_arg_types.<locals>.Number.__init__cSs|jSrWr�rYrrr �__int__�sz5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r4rHrIrVr�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>.FloatNrXrrrr �Float�sr�z&^integer argument expected, got float$g$@)
�decimalZDecimalZassertWarns�DeprecationWarningr*rr�rlryrk)r+r�ZxxZf10r�Zs10rrr �test_check_arg_types�s@��zOddballs.test_check_arg_typesN)r4rHrIr�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�|Sq�td��dS)N�&fromutc() requires a datetime argument�dt.tzinfo is not selfrr�r"zNo suitable local time found)rOrrlrr�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 rV)szUSTimeZone2.__init__cCs|jSrWr�rYrrr rZ/szUSTimeZone2.__repr__cCs|�|�r|jS|jSdSrWr�r[rrr r^2s
zUSTimeZone2.tznamecCs|j|�|�SrWr�r[rrr r]8szUSTimeZone2.utcoffsetcCs�|dks|jdkrtSttj|jd��}ttj|jd��}|jdd�}|t|kr^|krfnntS||kr~|tkr�nn|jr�tStS||kr�|tkr�nn|jr�tStStSdSr�)	rr�r�r�r�r�r�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|d�tdddd|d�gS)N�rEr�rhrr��rrYrrr �	_utc_foldls�zEurope_Vilnius_1941._utc_foldcCs$tdddd|d�tdddd|d�gS)Nr�rEr�rr�rr�rYrrr �	_loc_foldps�zEurope_Vilnius_1941._loc_foldcCs>|��\}}||krdtS||kr6|jr.dndtSdtS)Nr=rA�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.tznamecCsV|jdkrt�|��\}}||kr.|dtS||krJ|dtjdd�S|dtS)Nr�r=rAr"r�)r�rpr�r�r�r�rrr r��s
zEurope_Vilnius_1941.fromutcN)	r4rHrIr�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�rEr�r�r�rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rrhz"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_rs)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�rEr�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�rkrl�r+r�r\rrr �test_constructors�sz-TestLocalTimeDisambiguation.test_constructorscCs@tddddd�}|��}|�|jd�|��}|�|jd�dS)Nr"r�)rrr*r�r8)r+r\r�rrr �test_member�s
z'TestLocalTimeDisambiguation.test_membercCsTtd�}tddd�}|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|jdtd�}|jdtd�}|�|jdd�jd�|�|jdd�jd�|�t��|jdd�W5QRX|�t��|jdd�W5QRX|�t��|�ddddd�W5QRX|�t�� |�ddddddddd�	W5QRXdS)Nrr"r�)r�rrrA)	rrr*r�r�r�rkr�rlr�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:�dt0rmrrr 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�rrrr �test_fromtimestamp_lord_howes


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs|�t�d�jd�dSr�)r*rr�r�rYrrr �%test_fromtimestamp_low_fold_detectionszATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tddddd�}|jdd�}|�|��d|���dS)NrgrirAr"rfr�r�)rr�r*rC)r+r�rmrrr �test_timestamps
�z*TestLocalTimeDisambiguation.test_timestampcCsht�d�}t�d|�dkr$|�d�tddddd	�}|jd
d���}|jdd���}|�|d|�dS)
Nr�r�r�r�rrCr>r"r�rr�r�)r�r�r�r5rr�rCr*)r+r�r��s0�s1rrr �test_timestamp_lord_howe$s

z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tddddd�}|jdd�}|��}|��}|�|��d�|�|��d�|�|t|�|�|jd	�|�|jd	�dS)
NrgrirAr"rfr�r�r�r)rr�r�r*r^r�r�)r+r�rmZadt0Zadt1rrr r�.sz+TestLocalTimeDisambiguation.test_astimezonec	Csztdd�}tddddd�}tD]V\}}}||fD]B}|�||�}|�|�}|�||�|�|dkrfdn|j|j�q0qdS)Nr"r�rCr)rrr|r}r~r*r�)	r+r�r\r�r�rrsr: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
tddddtd�tj}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#rr"rrAr�r�rCr@)	rr�rr<r*r_r�r�r�)r+�	dt_summer�	dt_winterrlr\rrr r�Nsz$TestLocalTimeDisambiguation.test_dstcCs�tddddtd�tj}tddddtd�}|�|��dt�|�|��dt�|�|jdd	���dt�|�|jdd	���dt�dS)
Nr�r#rr"rrArDr�r�)rr�rr<r*r]r�r�)r+rrrrr r�isz*TestLocalTimeDisambiguation.test_utcoffsetc	Csttddddtd�tj}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#rrErr@rCr>rrfr")r�rh)rr"rA)rErh)
rr�rr<r�r*r�r�rCr�)	r+Zu_summerZu_winterZt_summerZt_winterr�r�rr�rrr r�ss0






z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd�}|�||�tj��tdddtd�}|�||�tj��dS)Nr�r"rrE)rr�r*r�rr�r�rrr �test_mixed_compare_regular�sz6TestLocalTimeDisambiguation.test_mixed_compare_regularcCs<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�r#rr"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�rCr@rAr�rr)r+�t_gapZ	t_gap_utcrrr �test_mixed_compare_gap�sz2TestLocalTimeDisambiguation.test_mixed_compare_gapcCs�tdddtd�}|�t|�t|jdd���tdddddtd�}tdd	d
ddtd�}|�t|�t|jdd���|�t|�t|jdd���dS)Nr�r"rr�r�r#rr�rCr@rA)rr�r*r#r�)r+r�rrrrr �test_hash_aware�sz+TestLocalTimeDisambiguation.test_hash_awareN)r4rHrIr�r�r�r�r)r�r�rrr�r�r�r�r�r�rr�r�r�r�rrrr	rrrr r��s6



	


!r�cCs"t�|�\}}t|d�t||�SrW)rc�tee�nextr�)�iterablerrrrr �pairs�s
r
c@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||_||_|�||�|_dSrW)�ut�ti�invertr)r+rrrrr rV�s	zZoneInfo.__init__cCs�td|�td|�f}|r�|ddt}|dd|7<|dd|7<tdt|��D]H}|d|||ddt7<|d|||dt7<q^|S)Nrsrr")r�SECrr$)rrrrUrrrr 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)NrCZTZifznot a zoneinfo filerjrr=r�rr�r"z>lbbrErA)�read�decoder��seekr�fromfiler2�	byteorderZbyteswaprr��structZunpackr�findrr$)r$ZfileobjZcountsrZtype_indicesZttisrZabbrsZgmtoff�isdstZabbrind�abbrr�idxr+rrr r�s2



zZoneInfo.fromfilec
Cs<tj�|j|�}t|d��}|�|�W5QR�SQRXdS)N�rb)�os�path�join�zoneroot�openr)r$r0rr�rrr �fromname�szZoneInfo.fromnamerr"cCs�t|t�std��|j|k	r$td��|��|jd|jd|jd|j	}||j
dkrn|jd}d}nPt�
|j
|�}|j|d|�\}}|d|d}|td||j
|d�k}||d7}|r�|jdd	�S|SdS)
Nr�r�r�r�r�r"rrAr�)rOrrlrr�r��EPOCHORDINALr�rlrkrr�bisect�bisect_rightrr�)r+r\rCZttir�rZtti_prev�shiftrrr r��s,

���
zZoneInfo.fromutccCs\|��|jd|jd|jd|j}|j|j}t�||�}|j	t
d|d�|S)Nr�r�r�rr")r�r$r�rlrkrr�r%r&rro)r+r\rrCrrrrr �_find_tis���zZoneInfo._find_ticCs|�|d�Sr��r(r[rrr r]%szZoneInfo.utcoffsetcCs|�|d�}|rtStSrE)r(r�r�)r+r\rrrr r_(szZoneInfo.dstcCs|�|d�S)NrAr)r[rrr r^0szZoneInfo.tznameNc	cs�|dkr|j}tj�|d�}zt|�}Wntk
r>YdSX|�4|D](}|��}|rJ|�d�sJ|��dVqJW5QRXdS)Nzzone.tab�#rA)	r!rrr r"r��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|tk�rB|d7}|}||f|	|fk�r|}	|}|}|tj|f|tj|fk�rJ|}|}|}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)
rror�rr�r-r#�transitions�printrR)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\r'Ztrans_countsrrr �statsBsZ





�zZoneInfo.statsccsHtt|j|j��D]0\\}}\}}|d|d}t�|�|fVqdSr�)r
r�rrrr��r+�_Zprev_tir�rr'rrr r.ss"zZoneInfo.transitionsccsntt|j|j��D]V\\}}\}}|d|d}|tkr|d|dkrt�|�||d|dfVqdS)Nrr"rA)r
r�rrr�rr�r4rrr �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-r#r6r�r/)
r$Z	same_abbrr0r1r2r�r\r'Z	prev_abbrrrrr �print_all_nondst_foldss
�zZoneInfo.print_all_nondst_foldsccs*|��D]\}}|tkr||fVqdSrW�r.r��r+r�r'rrr �folds�szZoneInfo.foldsccs(|��D]\}}|tkr||fVqdSrWr8r9rrr �gaps�sz
ZoneInfo.gapsccs |��D]\}}|s|VqdSrW)r.r9rrr �zeros�szZoneInfo.zeros)N)r")Fr")r4rHrIr!rVrTr�classmethodrr#rr�r$r�r(r]r_r^r-r3r.r6r7r:r;r<rrrr 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)r2rr5rr#r2r��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�r:rr<r�r�r*r�rr�r�rBr]�	r+r�r\r'rs�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�r;rr<r�r�r*r�rr�r�rBr]Z
assertLessrCrrr �	test_gaps�s(
 �zZoneInfoTest.test_gapsc	Cs�d|jks|j�d�r&|�d|j�|j}tj�d�}|jtjd<�zt��|�	�D]�\}}|j
dkrp�qR|tddd�t}|t}dd	d
d|d|d|d
fD]J}||}t�
|�}	t�
||�jdd�}
|�|	|
�|	��}|�||�q�|dkrXt�
|�|d}|��}
|jdd���}|�|
||d�|�|||d�qXW5|dk�rjtjd=n
|tjd<t��XdS)NZRiyadh8zright/zSkipping %s�TZi�rr"i���i��r�ri@i�2rrAr�)r2r.r5r�r�environ�getr��tzsetr.r�rrr�r�rBrCr*)r+r�rGrDr'r�rersr:ZsdtZtzdtr�r\Zts0Zts1rrr �test_system_transitions�sF

�
�



z$ZoneInfoTest.test_system_transitionsN)	r4rHrIr2r�rBrErFrKrrrr r>�sr>cseZdZ�fdd�Z�ZS)�ZoneInfoCompleteTestcshg}td�rXt��D]B}td|tfi�}||_t|�D]}|�d�r8|�||��q8qt	��
|�dS)NZtzdatazZoneInfoTest[%s]Ztest_)r
rr-r{r>r2r7r.r��superrV)r+r`r0ZTest�method�r3rr rVs
zZoneInfoCompleteTest.__init__)r4rHrIrV�
__classcell__rrrOr rLsrLc@seZdZdZdS)�IranTestzAsia/TehranN)r4rHrIr2rrrr rQsrQc@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_capirYrrr r�s
zCapiTest.setUpc
Cs>dD]4}t�|�}|j|d��|�|tj�W5QRXqdS)N�TF)�	use_macro)rSZget_timezone_utc_capir�rzrr�)r+rUZcapi_utcrrr �
test_utc_capis
zCapiTest.test_utc_capic

Cs�t��\}}}ttdd�d�}ttdd��}d||fd||fd||fg}|D]�\}}}	|j|d��z|�||	�tdd	d
|d�}
tdd	d
|	d�}|�|
|�|�|
��|���tdd	d
dtjd�}|�|
�	tj�|�W5QRXqLdS)
Nr�r�r��est_capi�	est_macro�est_macro_nn)r0r�rArCrr>)
rSZmake_timezones_capirrr�r*rr^r�r�)
r+rWrXrYZ	exp_namedZexp_unnamed�casesr0Ztz_actZtz_exprmr�r�rrr �test_timezones_capi&s �zCapiTest.test_timezones_capic	Cs�t��\}}}|jdd��|�|tj�W5QRX|jdd��|�|tj�W5QRX|jdd��p|�|tj�ttdd�d�}|�||�t	dd	d
|d�}t	dd	d
|d�}|�||�|�|�
�|�
��W5QRXdS)N�utc0)Ztestname�utc1�non_utcrr�r�r�rArCr)rSZget_timezones_offset_zeror�rzrr�r�rr*rr^)r+r\r]r^Znon_utc_exprmr�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>.DateSubclassNrXrrrr rYWsrY��r"T�
2011-01-01r�rrT��arg�exact)
rrrSZdatetime_check_datersr�rurtrrr�rr�)	r+rYr%Zdsr\Zis_dater�rcrdrrr �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>.TimeSubclassNrXrrrr r!ssr!r�rfTr"rar`rTrb)rrSZdatetime_check_timersr�rurtrrr�rr�)r+r!r�r�Zis_timer�rcrdrrr �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>.DateTimeSubclassNrXrrrr re�srer`r"r�rfTrarTrb)rrSZdatetime_check_datetimersr�rurtrrr�rr�)r+rer\r�Zis_datetimer�rcrdrrr �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>.TimeDeltaSubclassNrXrrrr �TimeDeltaSubclass�srhr"Trar`rTrb)rrSZdatetime_check_deltarsr�rurtrr�rrr�)r+rhr�ZtdsZis_timedeltar�rcrdrrr �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>.TZInfoSubclassNrXrrrr �TZInfoSubclass�srjr�r�Tr"rar`rTrb)rrrrSZdatetime_check_tzinforsr�rurtrrr�)	r+rjr�Ztzisr�Z	is_tzinfor�rcrdrrr �test_check_tzinfo�s&

�zCapiTest.test_check_tzinfoc
CsTtddd�}dD]>}|j|d��(t�||j|j|j�}|�||�W5QRXqdS)N��rnr��rr"��macro)rr�rSZget_date_fromdater�r�rCr*�r+�exp_datero�
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)
Nrlrnr�r�r��7韆rmrn)rr�rSZget_datetime_fromdateandtimer�r�rCr�rlrkr�r*rprrr �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)
Nrlrnr�r�r�rtrurm�ror�)
rr�rSZ#get_datetime_fromdateandtimeandfoldr�r�rCr�rlrkr�r�r*)r+rqr�rorrrrr �%test_datetime_from_dateandtimeandfold�s"�z.CapiTest.test_datetime_from_dateandtimeandfoldc
CsZtdddd�}dD]B}|j|d��,t�||j|j|j|j�}|�||�W5QRXqdS)Nr�r�rtrurmrn)	rr�rSZget_time_fromtimer�rlrkr�r*)r+�exp_timero�
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�rtrurmrw)
rr�rSZget_time_fromtimeandfoldr�rlrkr�r�r*)r+ryr�rorzrrr �test_time_from_timeandfolds�z#CapiTest.test_time_from_timeandfoldc
CsTtddd�}dD]>}|j|d��(t�||j|j|j�}|�||�W5QRXqdS)Nr�rtrurmrn)rr�rSZget_delta_fromdsur�r�r�r*)r+Z	exp_deltaroZc_api_deltarrr �test_delta_from_dsu.s�zCapiTest.test_delta_from_dsuc
CsZtddd���}dD]@}|j|d��*t�t|�|�}|�|tddd��W5QRXqdS)N��rCr�rmrn)rrCr�rSZget_date_fromtimestamprPr*r)r+r�ror%rrr �test_date_from_timestamp;s
z!CapiTest.test_date_from_timestampcCs�dddttdd��dfddd	ttdd��dfg}tj}|D]f}d
D]\}|j||d��D|\}}}t|d|i�}t|���}	||	|||�}
|�||
�W5QRXqBq:dS)
N)�r~rCr�NF)r�NTr�r"r�T)�r~rCr�r�rfNF)r�NTr�rm)�caseror)	rrrSZget_datetime_fromtimestampr�rrPrCr*)r+rZr�r�roZdtuprZusetzZdt_origr�r\rrr �test_datetime_from_timestampDs �	
z%CapiTest.test_datetime_from_timestampN)r4rHrIr�rVr[r_rerfrgrirkrsrvrxr{r|r}rr�rrrr rRs"	

	rRcCs|�t��|SrW)ZaddTestrL)�loaderZstandard_tests�patternrrr �
load_tests[sr��__main__)jrcr%r�r�r2rrrdrrrr�operatorrrrrrrr	r
rZtestrZtest.supportr
rrrrr)rrrrrrrr�rSr�r~Z_loadsrrr�r|r-ryrFrZTestCaser'rJr`rcrfr�r�r�r�r�r�rwrxrrrr'rKrjr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rr>Z	TestSuiterLrQrRr�r4�mainrrrr �<module>s�,�2_A3=!K\"<


*c"32
gi
H