Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/datetimetester.cpython-39.opt-2.pyc

a

��gg��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZddl
mZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddlZddlm Z m!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/dddigdfZ0e1d�Z2e1d�Z3Gdd�dej4�Z5Gdd�de#�Z6Gdd�de6�Z7Gdd�de#�Z8Gdd�dej4�Z9Gdd �d ej4�Z:Gd!d"�d"�Z;Gd#d$�d$e;ej4�Z<Gd%d&�d&ej4�Z=Gd'd(�d(e&�Z>Gd)d*�d*e;ej4�Z?Gd+d,�d,e�Z@Gd-d.�d.e?�ZAGd/d0�d0eA�ZBGd1d2�d2e$�ZCGd3d4�d4e;ej4�ZDGd5d6�d6�ZEGd7d8�d8eDeEej4�ZFGd9d:�d:eAeEej4�ZGd;d<�ZHe"d�ZIe"dd=�ZJe"dd>�ZKe"dd?�ZLedd@ddA�ZMedddBd�ZNGdCdD�dDe#�ZOeOdEdFdGdH�ZPeOdIdJdKdL�ZQeOdMdNdOdP�ZReOdQdRdSdT�ZSe6ddUd�ZTe6dVdWd�ZUGdXdY�dYej4�ZVGdZd[�d[ej4�ZWGd\d]�d]e#�ZXGd^d_�d_eX�ZYeYdEd`dGdH�ZZeYdIdadKdL�Z[eYdMdbdOdP�Z\eYdQdcdSdT�Z]Gddde�dee#�Z^Gdfdg�dgej4�Z_e"dd�Z`dhdi�ZaGdjdk�dke#�ZbGdldm�dmej4�ZcGdndo�doejd�ZeGdpdq�dqec�ZfGdrds�dsej4�Zgdtdu�Zheidvk�r�e�j�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�//usr/local/lib/python3.9/test/datetimetester.py�
<listcomp>*s�r!��
g@A@�abcr�inf�nanc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
TestModulecCs$t}|�|jd�|�|jd�dS)Nr"�')�datetime_module�assertEqualrr)�selfrrrr �test_constants=szTestModule.test_constantscCs$tt�}tjD]}|�||�qdS�N)�dirr)�__all__�assertIn)r+Z	all_attrs�attrrrr �test_allBs
zTestModule.test_allcCsTd|jjvr|�d�t}tdd�t|�D��}tgd��}|�||tg��dS)NZ_Purez"Only run for Fast C implementationcss&|]}|�d�s|�d�s|VqdS)�__N)�
startswith�endswith)r�namerrr �	<genexpr>Ms�z/TestModule.test_name_cleanup.<locals>.<genexpr>)
rrrrZ
datetime_CAPIrrrr�sys)�	__class__�__name__�skipTestr)�setr.r*)r+r�names�allowedrrr �test_name_cleanupHs
zTestModule.test_name_cleanupcCsd|jjvr|�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#��������)r9r:r;r)Z_divide_and_roundr*)r+Zdarrrr �test_divide_and_roundTs"
z TestModule.test_divide_and_roundN)r:�
__module__�__qualname__r,r2r?rMrrrr 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+�offsetr6Z	dstoffsetrrr �__init__us



zFixedOffset.__init__cCs
|j��Sr-)rX�lower�r+rrr �__repr__}szFixedOffset.__repr__cCs|jSr-)rW�r+�dtrrr �	utcoffsetszFixedOffset.utcoffsetcCs|jSr-)rXr`rrr �tzname�szFixedOffset.tznamecCs|jSr-)rYr`rrr �dst�szFixedOffset.dstN)rQ)r:rNrOr\r_rbrcrdrrrr rPss

rPc@seZdZddd�Zdd�ZdS)�PicklableFixedOffsetNcCst�||||�dSr-)rPr\rZrrr r\�szPicklableFixedOffset.__init__cCs|jSr-)�__dict__r^rrr �__getstate__�sz!PicklableFixedOffset.__getstate__)NNN)r:rNrOr\rgrrrr re�s
rec@seZdZdd�ZdS)�_TZInfocCst��Sr-)�random)r+r)rrr rb�sz_TZInfo.utcoffsetN�r:rNrOrbrrrr rh�srhc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
TestTZInfoc	CsRt�}tddddddd|�}|�t��|��Wd�n1sD0YdS)N��rF��� rCr)rhr�assertRaises�	TypeErrorrb)r+Ztz1�dt1rrr �test_refcnt_crash_bug_22044�sz&TestTZInfo.test_refcnt_crash_bug_22044cCs@t�}tj}|�t|j|�|�t|j|�|�t|j|�dSr-)rr�maxrp�NotImplementedErrorrcrbrd)r+Zuselessrarrr �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||_||_dSr-)Z_NotEnough__offsetZ_NotEnough__name)r+r[r6rrr r\�szBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r:rNrOr\rrrr �	NotEnough�srwrCZNotByALongShot)r�
assertTrue�
issubclass�assertIsInstancer�nowrprurcrbrd)r+rwrrarrr �test_subclass_must_override�s
z&TestTZInfo.test_subclass_must_overridecCsntdd�}|�|t�t��dfD]F}|�|�|�tdd��|�|�|�d�|�|�	|�tdd��q"dS)NrCZThreerSrQ)
rPrzrrr{r*rbrrcrd)r+�forarrr �test_normal�s
zTestTZInfo.test_normalcCsTt�t�}|�t|�t�tD]0\}}}|�||�}|�|�}|�t|�t�qdSr-)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����rS�cookie�EST)
rrerrcrzrr�r�r*rbr�r�r�)r+r[Zotype�argsr�Zonamer�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�Sr-rr`)�	DSTOFFSETrr rb�sz:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetcs�Sr-rr`)�DSTDIFFrr rd�sz4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstcSsdS)N�UKSummerTimerr`rrr rc�sz7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN�r:rNrOrbrdrcr�r�r�rr r��sr�rlrI��r)rrr�fromutcr*rb)r+r��tz�u�trr�r �test_issue23600�s
zTestTZInfo.test_issue23600N)
r:rNrOrsrvr|r~r�r�r�rrrr rk�s
rkc@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��ACDTrDr���r")rrr�r�r�DTr^rrr �setUp�szTestTimeZone.setUpcCs8|j|jtjtjtjfD]}|�t|�|�d��qdSr-)	r�r�r�utc�minrtr*�strrc�r+r�rrr �test_str�s�zTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|�}|�|t	|��qdSr-)
r)r�r�rr�r�rt�reprr*�eval)r+rr�Ztzreprrr �	test_repr�s�zTestTimeZone.test_reprcCsNtddd�}|�tj�d�t�|�tj�d�|�|�tj�d�|�dS)N��;�r�rT)rr*rr�rb�ZEROr�rt)r+�limitrrr �test_class_membersszTestTimeZone.test_class_memberscCs�|�tjttd���|�tjttd�d��|�tjttd�d��tdd�tdd�fD](}t|�}|�|�d�tdd�d�qZtdd�td�fD]"}|�t	t|�|�t	t|�q�|�t
��td�Wd�n1s�0Y|�t
��td�Wd�n1�s0Y|�t
��ttd�Wd�n1�sL0Y|�t
��ttd�Wd�n1�s�0Y|�t
��ttdd	�Wd�n1�s�0YdS)
Nr�UTCr"��microseconds��secondsrSrQ�ABC�extra)r�rr�r�assertIsNotr*�assertNotEqualrbrp�
ValueErrorrqr�)r+Z	subminuter��invalidrrr �test_constructors2466zTestTimeZone.test_constructorcCs |�tjt�|�|jt�dSr-)rzrr�rr�r^rrr �test_inheritanceszTestTimeZone.test_inheritancecCs�|j}dD]<}|t}|�|t|��|��|�|t|��|��q
|�t��|j�d�Wd�n1st0Y|�t��|j�d�Wd�n1s�0YdS)N)rg�?r��rD)r��HOURr*rrbrprqr�)r+�dummy�hr[rrr �test_utcoffset!s6zTestTimeZone.test_utcoffsetcCs�|�tj�|j��|�t��|j�d�Wd�n1s@0Y|�t��|j�d�Wd�n1sv0YdS)Nr�rD)�assertIsNonerr�rdr�rprqr�r^rrr �test_dst,s6zTestTimeZone.test_dstcCs�|�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�Wd�n1�sT0Y|�t��|j	�d�Wd�n1�s�0YdS)Nr�z	UTC-05:00���z	UTC+09:30r�z	UTC-00:01���rSZXYZ��zUTC+01:06:40r�zUTC-01:06:40zUTC+01:06:40.000001r"zUTC-01:06:40.000001r�rD)
r*rr�rcr�r�rrprqr�r^rrr �test_tzname2s&���8zTestTimeZone.test_tznamecCs�|�t��tj�|j�Wd�n1s.0Y|�t��tj�d�Wd�n1sd0Y|j|jt	fD]J}|jj
|d�}|�|�}|�|||�|��|�||jj
tjd��q|dS)Nznot datetimer)
rpr�rr�r�r�rqr�r��Eastern�replacer*rb)r+r�Zutctime�localrrr �test_fromutcHs,*
�zTestTimeZone.test_fromutccCsR|�tt�tt��|�tt�tt��|�tdt�tdtd��|�t�� tt�tt�kWd�n1sv0Y|�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*rprqr0rx�assertFalserrrr�rrr �test_comparisonTs$:zTestTimeZone.test_comparisoncCs�tddd�}tjtjtjfD]^}|�|�|�|j|d����|�|�|�|j|d����|�|�	|�|j|d��	��qdS)Nr"r)
rrr�rtr�r*rcr�rbrd�r+r�r�rrr �test_aware_datetimeis���z TestTimeZone.test_aware_datetimecCs�|j|jtjtjfD]2}tD](\}}}|�|�||��}|�||�qqtj	}tD](\}}}|�|�||��}|�
||�qRdSr-)r�r�rr�rtr�r�r�r*r�r�)r+r�r�r�r�tz_copyrrr �test_pickletszTestTimeZone.test_picklecCsP|j|jtjtjfD]}t�|�}|�||�qtj}t�|�}|�||�dSr-)	r�r�rr�rt�copyr*r�r��r+r�r�rrr �	test_copy~s

zTestTimeZone.test_copycCsP|j|jtjtjfD]}t�|�}|�||�qtj}t�|�}|�	||�dSr-)
r�r�rr�rtr��deepcopyr*r�r�r�rrr �
test_deepcopy�s

zTestTimeZone.test_deepcopyc
Cstddd�tdddd�tddddd�g}|�dd�|D��|D]:}|jd	|d
��t|�Wd�q@1sp0Yq@tdd�tdd
d�g}|�dd�|D��|D]f}|jd|d
��B|�t��t|�Wd�n1s�0YWd�q�1�s0Yq�dS)Nr�r�r��r�rTr��?B�r�rTr�r�cSsg|]
}|�qSrr�r�deltarrr r!��z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>Zgood)Z	test_typer��r�r")r�r�cSsg|]
}|�qSrrr�rrr r!�r�Zbad)r�extend�subTestrrpr�)r+Ztime_deltasr�Zbad_time_deltasrrr �test_offset_boundaries�s 
�(
�z#TestTimeZone.test_offset_boundariescCs,|�tjt��|�ttdd��t��dS)Nr"r�)r�rr�rrr^rrr �test_comparison_with_tzinfo�sz(TestTimeZone.test_comparison_with_tzinfoN)r:rNrOr�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�rxr0rrr)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>�r�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�rprqr^rr�r �test_harmful_mixed_comparison�sz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r:rNrOr�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�rTr��millisecondsr�r"�r�r�r��r�rFr�r��<rS���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)-NrFrr�r�rKiDQrHr��Q�X>�Qi��r#�FiX�'rE�r�r"i@�i��6i@���?��xr�rCrGrDrBr�r�翶~�Ϛ�?�@�g�6+1��?i�S	g@g�rAg`""K?-�?�ɚ;r��>B)r*r�__rsub__�abs�range�round)r+rr��a�b�c�us�irrr �test_computationss�

""
�
�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)NrQ�r"��?cs��Sr-rr�r	r
rr r�Yr�z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>cs��Sr-rrrrr r�Zr�cs��Sr-rrrrr r�[r�cs��Sr-rrrrr r�\r�rcs��Sr-rr�r	�zerorr r�ar�cs��Sr-rrrrr r�br�cs��Sr-rrrrr r�cr�cs�dS)N�rr�r	rr r�dr�cs�dS)Nr�rrrrr r�er�)rrprq�ZeroDivisionErrorr^r)r	r
rr �test_disallowed_computationsTsz*TestTimeDelta.test_disallowed_computationscCs,td�}|�t|jt�|�t|jt�dS)NrQ)rrpr��__mul__�NAN�__truediv__)r+r	rrr �test_disallowed_specialgsz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||�}|�|j|�|�|j|�|�|j|�dS)N)r"rF��rr*r�r�r�)r+r�r�rr�rrr �test_basic_attributesms

z#TestTimeDelta.test_basic_attributescCsptdd�}|�|��d�dD]}t|d�}|�|��|�qdD](}t|d�}|�|��|tdd��qBdS)	N�mr�g8~A)g˟$�@g˟$��rrg��.Ar�)r�rEi����r�r")rr*�
total_seconds)r+r�r �msrrr �test_total_secondsts


z TestTimeDelta.test_total_secondscCs.tddddddd�}tdd	�}|�||�dS)
N�drH�8���rBr�g��A�r�r�r�rTr�r�r"r�)rr*�r+�t1�t2rrr �test_carries�s�
zTestTimeDelta.test_carriescCs�tddddddd�}t�}|�t|�t|��|tdd	�7}|td
d�7}|�||�|�t|�t|��|di}d
||<|�t|�d�|�||d
�dS)Nr#rHr$rBr�iz
r%rFr��1r�r"rG)rr*�hash�len)r+r'r(�drrr �test_hash_equality�s"�z TestTimeDelta.test_hash_equalitycCsBd}t|�}tD],\}}}|�||�}|�|�}|�||�qdS)N)r��"�8)rr�r�r�r*�r+r�r�r�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)NrGrCrI�)rCrCrC)rGrIrI)rGrCrDFTcs��kSr-rr�Zbadargr'rr r��r�z,TestTimeDelta.test_compare.<locals>.<lambda>cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�)rr*rxr��
OTHERSTUFFrprq�r+r(r�rr4r �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:00rGz2 days, 0:00:00rEz-2 days, 0:00:00r��:r�r�z12:58:59rCrIz2:03:04i��r�r/)r�r�rTr�z-210 days, 23:12:34r�z0:00:00.001000r�z0:00:00.000003rr��r�r�rTr�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#rGz%s(days=10, seconds=2)rA�z,%s(days=-10, seconds=2, microseconds=400000)r�r�z%s(seconds=60)z%s(0)r#r�z%s(microseconds=100))r�r�z%s(days=1, microseconds=100))r�r�z%s(seconds=1, microseconds=100)�r�r:r*r��r+r6rrr r��s2��������zTestTimeDelta.test_reprcCs�tdddddd�tdd�tddd	�tdd
dd�fD]Z}t|�}|�|�d
��|dd�}t|�}|�||�t|j|j|j�}|�||�q2dS)Nrr�r�r�r9�6e�r�r"�r�r�rGrC�r�r�r�r:�	)	rr�rxr4r�r*r�r�r�)r+r��sZtd2rrr �test_roundtrip�s�
�zTestTimeDelta.test_roundtripcCs~|�tjt�|�tjt�|�tjt�|�tjtjk�|�tjtd��|�tjtddd��|�tjtddd��dS)Nr>rr�g~�.Arr")rzrr�rt�
resolutionrxr*r^rrr �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)	NcSstjSr-)rrtrrrr r�r�z-TestTimeDelta.test_overflow.<locals>.<lambda>r"�ʚ;ge��Ag#B����;g�����|�=gr��{�>)
rrDr�rp�
OverflowError�__sub__�__add__rtrr)r+�tinyr��dayrrr �
test_overflows 

zTestTimeDelta.test_overflowcCs.td�}|�t|jt�|�t|jt�dS�Nr")rrprGr�INF)r+rKrrr �_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?rGg�~j�t�X�rEg���Ơ>r�g���Ơ���?����i|���t��Ar�g�������?r�g�������?r��r�r�g������ٿg������ɿr�r)rr*rD)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_normalizationNs
�z(TestTimeDelta.test_massive_normalizationcCsR|�td��|�tdd��|�tddd��|�tdd��|�td��dS)Nr"rr�)rxrr�r^rrr �	test_boolSs
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�Sr-r@)r���Trr �from_td]sz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdcSs&|jd|jd|jd}t|�S)Nr�g �@rS)r�r�r�r)r+�sumrrr �as_hoursas��z9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r:rNrO�staticmethodrZr\rrXrr rY\srYr"r�r�r�i��r?i��)
rr�r�r*r\rZr�r�r�r�)r+r'r(�t3�t4rrXr �test_subclass_timedeltaZs 

z%TestTimeDelta.test_subclass_timedeltac		Cs�Gdd�dt�}|ddd�}tdd�}ddd	�|ddd
�fddd	�|ddd
�fd
dd	�|ddd�fg}|D]V\}}}|�|��2|||�}|�||�|�||�Wd�qj1s�0YqjdS)Nc@seZdZdS)z6TestTimeDelta.test_subclass_date.<locals>.DateSubclassN�r:rNrOrrrr �DateSubclasszsrb��r"rDr��addcSs||Sr-r�r-r�rrr r��r�z2TestTimeDelta.test_subclass_date.<locals>.<lambda>rK�raddcSs||Sr-rrerrr r��r��subcSs||Sr-rrerrr r��r�rI)rrr�r*rz)	r+rb�d1r��testsr6�func�expected�actrrr �test_subclass_dateys
�
z TestTimeDelta.test_subclass_datec		Cs�Gdd�dt�}|ddddd�}tddd�}d	d
d�|dddd
�fddd�|dddd
�fddd�|dddd�fg}|D]V\}}}|�|��2|||�}|�||�|�||�Wd�qv1s�0YqvdS)Nc@seZdZdS)z>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNrarrrr �DateTimeSubclass�srnrcr"rDr��)r�rTrdcSs||Sr-rrerrr r��r�z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rK�
rfcSs||Sr-rrerrr r��r�rgcSs||Sr-rrerrr r��r�rI)rrr�r*rz)	r+rnrhr�rir6rjrkrlrrr �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�rGro�rTr�rSg@r)rr*rprr	r
)r+r��second�minute�zerotdrrr �
test_division�s

zTestTimeDelta.test_divisioncCs�tddd�}tdd�}||}|�|tdd��tddd�}||}|�|tdd��td�}|�tt||�|�tt|d	�dS�
NrGrorsr"rSr�rErr#)rr*rprrrq)r+r�ru�rrvrrr �test_remainder�s
zTestTimeDelta.test_remaindercCs�tddd�}tdd�}t||�\}}|�|d�|�|tdd��tddd�}t||�\}}|�|d�|�|tdd��td�}|�tt||�|�tt|d	�dSrx)r�divmodr*rprrq)r+r�ru�qryrvrrr �test_divmod�s
zTestTimeDelta.test_divmodc	Cs�dd�}|�t��"t�|dd>�Wd�n1s:0Y|�t��"t�|dd>�Wd�n1sv0YdD]t}|�t��t�||�Wd�n1s�0Y|�t��t�||�Wd�q�1s�0Yq�dS)NcsG�fdd�dt�}|�S)NcseZdZ�fdd�ZdS)zFTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatcs�Sr-rr^��	bad_ratiorr �as_integer_ratio�szWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r:rNrOr�rr~rr �BadFloat�sr�)�float)rr�rr~r �
get_bad_float�sz4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"r�)r)rQ�r"rGrC)rprqrr�)r+r�rrrr �test_issue31293�s00,zTestTimeDelta.test_issue31293cspG�fdd�dt�}G�fdd�d��G�fdd�dt��dD�]*�|j�d���zt|d	�d
�WntyxYn0zt|d	�d�Wnty�Yn0zt|d	�d�Wnttfy�Yn0ztd	�|d	�Wnttfy�Yn0z|d	�td	�Wnt�yYn0ztd	�|d	�Wnt�yHYn0Wd�q>1�s`0Yq>dS)
Ncs<eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Zd	S)
z-TestTimeDelta.test_issue31752.<locals>.BadIntcs��Sr-r�r+�other��Prodrr r�sz5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__cs��Sr-rr�r�rr �__rmul__�sz6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__cs��Sr-rr�r�rr �__floordiv__�sz:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__cs��Sr-rr�r�rr �
__rfloordiv__�sz;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r:rNrOrr�r�r�rr�rr �BadInt�sr�cs$eZdZ�fdd�Z�fdd�ZdS)z+TestTimeDelta.test_issue31752.<locals>.Prodcs��Sr-rr���Sumrr rI�sz3TestTimeDelta.test_issue31752.<locals>.Prod.__add__cs��Sr-rr�r�rr �__radd__�sz4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r:rNrOrIr�rr�rr r��sr�cseZdZ�fdd�ZdS)z*TestTimeDelta.test_issue31752.<locals>.Sumcs�Sr-rr���divmodresultrr �
__divmod__�sz5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r:rNrOr�rr�rr r��sr�)Nr)rr"rG)rr�r�r"r�r�r�)rVr�rrqr�)r+r�r)r�r�r�r �test_issue31752�s:

zTestTimeDelta.test_issue31752N)"r:rNrOrr�r�rrrZrequires_IEEE_754rrr"r)r.r2r7r�r�rCrErLrOrUrVrWr`rmrqrwrzr}r�r�rrrr r��s<S

(	
!r�c@seZdZdd�ZdS)�TestDateOnlycCs�tddd�}tdddddd�}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�|}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�dS)	N��r"rGrCrIrDr9rE)rrr�r*)r+rar�r��dt2rrr �test_delta_non_days_ignored!s*
�

z(TestDateOnly.test_delta_non_days_ignoredN)r:rNrOr�rrrr r�sr�c@seZdZdZdS)�SubclassDater"N�r:rNrOZsub_varrrrr r�>sr�c@s`eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�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-dSdT�Z.dUS)V�TestDatecCs<|�ddd�}|�|jd�|�|jd�|�|jd�dS)N��rCr")r�r*�year�monthrKr`rrr rGszTestDate.test_basic_attributescCsz|�ddd�|j��fD]\}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j	�}|�||�qdS)Nr"rGrCr:rA)
r��todayr�rxr4r�r*r�r�rK�r+rarBr�rrr rCMs�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�gd�}d	D]�\}}	|�|dd���}tt	dd
�|�D]r\}
}|
dk�rn|	�rn|d7}t	d|d�D]@}|�||
|�}|�|��|�|�||j�|��|d7}�q|�qN�q$dS)N))r"r"r"r")r"r�rr)rGr"r"�n)i�rnr�i��
�hourrr"rFr�r)r�rrorrorrrorror))r�T)r�FrprG)
r�r*�	toordinal�fromordinal�hasattrr�rurt�microsecondrrr�zip)
r+�y�mr-�nZfromordr��d2ZdimZisleapr�ZmaxdayrKrrr �test_ordinal_conversions[s>
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�SrM�r�r�r	Zaordrr r��r�z0TestDate.test_extreme_ordinals.<locals>.<lambda>r"r�cs���d�SrMr�rr�rr r��r�)r�r�r�r�rKr�r�r*rpr�rrt)r+r
rr�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�rrprG����`	ro���4�lro)r�rrrpr�r^rrr �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"rGr��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�rG�ArIrrFrCrAr��4��rcs��Sr-rrrrr r��r�z,TestDate.test_computations.<locals>.<lambda>cs��Sr-rrrrr r��r�cs��Sr-rrrrr r��r�cs��Sr-rrrrr r��r�cs��Sr-rr�r	rKrr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrrrr r��r�cs��Sr-rrrrr r�r�cs��Sr-rrrrr r�r��
r�r*r�r,rr�r�rrprq)r+r
r�diff�weekr�r	rKr
r r�sPzTestDate.test_computationscCs�|jj}|td�td�fD]p}|jj|}||8}|�t|j|�|�t|j|�|jj|}||7}|�t|j|�|�t|j|�qdS)Nr"rG)	r�rDrr�rprGrHrIrt)r+rJr�rarrr rLszTestDate.test_overflowcCshddl}d\}}}|�|||ddddddf	�}|j�|�}|�|j|�|�|j|�|�|j|�dS)Nr)i�rArrr�)r�mktimer��
fromtimestampr*r�r�rK)r+rr�r�rK�tsr-rrr �test_fromtimestamps
zTestDate.test_fromtimestampcCs dD]}|�t|jj|�qdS�N)gZb���t�gZb���ti�rprGr�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)NrrCg�������?r�r�)r�)rrr�r�r��sleepZassertAlmostEqualr)r+rr�r�r�Z
todayagainrrr �
test_today&s
�zTestDate.test_todayc	Cs�td�D]�}|�|�ddd|���|�|�|�ddd|���|d�|�|�ddd|���|�|�|�ddd|���|d�qdS)NrFr�rCrIr"r�rG)rr*r��weekdayZ
isoweekday)r+r
rrr �test_weekdayCs
"zTestDate.test_weekdayc	Csgd�}g}|D]T\}}|j|�}td�D]8}|t|�}|dd�|d|f}|�||f�q*q|D]�\}	}
|j|	dd�� |�|	��|
�Wd�n1s�0Y|j|	dd��0|	��}|�|j|j|j	f|
�Wd�qj1s�0YqjdS)N)))r�r��)r�r�r"))r�r�r��r�r"r"))r�r"rD)r�rGr"))��r�rm)r�r�r"))r�r�r�)r��5r"))r�r"rI)r�r"r"rFrrG�tuple)r-Z
comparison�fields)
r�rr�appendr�r*�isocalendarr�r�r�)r+Zweek_mondays�
test_casesZcal_dateZiso_dateZ	base_dater
Znew_dateZnew_isor-Zexp_isor�rrr �test_isocalendarLs	
.zTestDate.test_isocalendarcCsF|�ddd�}t�|���}t�|�}|�t|�t�|�|d�dS)N��r")r�r"rG)r�rr�r�r�r*r�r�)r+r-�p�resrrr �test_isocalendar_picklingjs

z"TestDate.test_isocalendar_picklingcCs�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
        �r�r�ri@r"r�)	�sorted�maprV�splitrr�r*r�r�)r+ZISO_LONG_YEARS_TABLEZiso_long_years�Lr
r-rhrrr �test_iso_long_yearsus$zTestDate.test_iso_long_yearscCs"|�ddd�}|�|��d�dS)NrGrCz
0002-03-02)r�r*�	isoformat�r+r�rrr �test_isoformat�szTestDate.test_isoformatcCs"|�ddd�}|�|��d�dS)Nr�rCrGzSat 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�ty�Yq�0q�z|�d�Wnty�Yn0|�d�dS)N��rCrG�m:%m d:%d y:%yzm:03 d:02 y:05r�A�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�oneZtworQ�%mZ03�	'%z' '%Z'�'' '')z%e�%z%#u%y�%mz%f)r�r*�strftimerprqr��UnicodeEncodeError)r+r��frrr �
test_strftime�s&
zTestDate.test_strftimecCsz|�ddd�}zt�d�Wnty8|�d�Yn0|�|�d�t�d|����|�|�d�t�d|����dS)Nr�rCrGr�z'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r��_timer�r�r;r*�	timetupler�rrr �test_strftime_trailing_percent�s�z'TestDate.test_strftime_trailing_percentcCs|�ddd�}|�|�d�t|��|�td��|�d�Wd�n1sP0YGdd�d|j�}|ddd�}|�|�d�d�Gd	d
�d
|j�}|ddd�}|�|�d�t|��dD]F}|�|�|�|�|��|�|�|�|�|��|�|�|�d
�q�dS)N��rAr#r��must be str, not int�{c@seZdZdd�ZdS)zTestDate.test_format.<locals>.AcSsdS�N�Arr^rrr �__str__�sz'TestDate.test_format.<locals>.A.__str__N�r:rNrOr�rrrr r��sr�c@seZdZdd�ZdS)zTestDate.test_format.<locals>.BcSsdS�N�Br�r+�format_specrrr r��sz(TestDate.test_format.<locals>.B.strftimeN�r:rNrOr�rrrr r��sr��r�zm:%m d:%d y:%y H:%H M:%M S:%S�%z %Z�r�r*�
__format__r��assertRaisesRegexrqr��r+rar�r	r�r
�fmtrrr �test_format�s(zTestDate.test_formatcCs`t|jt�rt}nt}|�|jj|�|�|jj|�|�|jjt�|�	|jj|jjk�dSr-)
ryr�rrrzr�rtrDrrx)r+Zexpected_classrrr rE�szTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|�}|�||�|�|jj||jj�|�|jj||jj�dS)Nr���@Br)r�rtr�r�r�r�rr*)r+�bigr�Z	justasbigrrr �test_extreme_timedeltas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)
NrFr�r"rGrr�rorC�=)
rr�r�r*�tm_year�tm_mon�tm_mday�tm_hour�tm_min�tm_sec�tm_wday�tm_yday�tm_isdst)r+r
r-r�rrr �test_timetuples&&..zTestDate.test_timetuplecCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�rKrFr�rG�r�r�r�r�r*�
__reduce__�
__reduce_ex__r1rrr r2%s

zTestDate.test_picklingcCsFgd�}d}|j|�}|D]&}tD]}||dd�}|�||�q"qdS)N)s'cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.scdatetime
date
(U�tR.s�cdatetime
date
U��R.)��rn��latin1��encoding�r��pickle_loadsr*�r+rir�rk�datar�r�rrr �test_compat_unpickle.s
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)NrGrCrIr3FTcs��kSr-rrr4rr r�Zr�z'TestDate.test_compare.<locals>.<lambda>cs��kSr-rrr4rr r�[r�cs��kSr-rrr4rr r�\r�cs��kSr-rrr4rr r�]r�cs��kSr-rrr4rr r�^r�cs��kSr-rrr4rr r�_r�cs��kSr-rrr4rr r�`r�)r�r*rxr�r5rprqr6rr4r r7;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�rIrDr"FTcs�dkSrMrr��ourrr r�lr�z-TestDate.test_mixed_compare.<locals>.<lambda>csd�kSrMrrr(rr r�mr�c@seZdZdS)z.TestDate.test_mixed_compare.<locals>.SomeClassNrarrrr �	SomeClassqsr*cs��kSr-rr�r)Ztheirrr r�yr�cs��kSr-rrr+rr r�zr�)r�r*rprq)r+r*rr+r �test_mixed_comparebszTestDate.test_mixed_comparecCs |�|jj�|�|jj�dSr-)rxr�r�rtr^rrr rW|szTestDate.test_boolcCsZdD]P}|�|dd�}|�d�d|kr|�|�d�d|�|�|�d�d|�qdS)N)r"r*r��cr#i�r��r"z%Yz%04d�%dz%4Y)r�r�r*)r+r�r-rrr �test_strftime_y2k�s
zTestDate.test_strftime_y2kc
Cs�|j}gd�}||�}|�||���d}dD]L\}}|dd�}|||<||�}|jfi||i��}	|�||	�|d7}q.|ddd�}|jt|jdd	�dS)
Nr�r)�r�rG�r�rC�rKrIr"r�rGr�r��r��r�r*r�rpr��
r+�clsr��baser
r6�newval�newargsrk�gotrrr �test_replace�s
zTestDate.test_replacecCs:Gdd�d|j�}|ddd�}|�t|jdd��|�dS)Nc@seZdZdS)z4TestDate.test_subclass_replace.<locals>.DateSubclassNrarrrr rb�srb��r"i�r4�r�r�r�r�)r+rbrarrr �test_subclass_replace�szTestDate.test_subclass_replacecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|jd�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z&TestDate.test_subclass_date.<locals>.CrQcs6|��}|�d�}�jj|g|�Ri|��}||_|S�Nr��r��popr�rr��r7r��kwsZtempr��resultr^rr r�s

z.TestDate.test_subclass_date.<locals>.C.__new__cSs||j|jSr-)r�r��r+�startrrr �newmeth�sz.TestDate.test_subclass_date.<locals>.C.newmethN�r:rNrO�	theAnswerrrHrr^rr �C�srK�r�rIr�r�rFrQrH)	r�r*r9rJr�r�rHr�r��r+rKr�rrr�rr^r rm�s

zTestDate.test_subclass_datec

s�G�fdd�d�j�}d}d}d}||�}��||���|jd�t�|td����}d|ffd	|ffd
|ffg}|D]�\}}	||fD]n}
�jt	|
�|d��Ht
|
|�}||	�}��||���||���|jd�Wd�q�1s�0Yq�qxdS)NcseZdZ�fdd�ZdS)zCTestDate.test_subclass_alternate_constructors.<locals>.DateSubclasscs$�jj|g|�Ri|��}d|_|S�NrF�r�rr��r7r��kwargsrEr^rr r�szKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N�r:rNrOrrr^rr rb�srbrLi�(z
2003-04-14rFrr�r��
fromisoformat�Z
base_obj_type�constr_name)r�rzr*r�r�combiner�	timestampr�r��getattr)
r+rbr�Zd_ord�d_isoformat�base_dr�r�rU�constr_args�base_obj�constrrarr^r �$test_subclass_alternate_constructors�s,�
�
z-TestDate.test_subclass_alternate_constructorscCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr)r�r�r�r�r*rxrUr1rrr �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�Wd�n1s�0Ytdd	�D],}|�|dd�t|g�|dd��q�dS)
Ns
1995-03-25rI)�9��
��rGrC�^bad tzinfo state arg$r"r�rp)	ryr�rrprqr�bytesr,r)r+r8Z
month_byteZord_byterrr �test_backdoor_resistance�s	
�8z!TestDate.test_backdoor_resistancec	Cspgd�}|D]^}|j|�}|��}|j|d��,|j�|���}|�||�Wd�q1s`0YqdS)N)�r"r"r")r�rGr��r�r"r")r�rGr��r�rnr�)r�rIrC�i�rDro)�dt_str�r�r�r�rSr*)r+�
base_dates�dt_tuplerark�dt_rtrrr �test_fromisoformats

zTestDate.test_fromisoformatcCs<Gdd�d|j�}|ddd�}|�|���}|�||�dS)Nc@seZdZdS)z:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNrarrrr rb)srbrlr�r�)r�rSr�rz)r+rbrarorrr �test_fromisoformat_subclass(sz$TestDate.test_fromisoformat_subclassc	CsLgd�}|D]:}|�t��|j�|�Wd�q1s<0YqdS)N)r�r�z	009-03-04Z	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29Z20090228u2009�02�28)rpr�r�rS�r+Zbad_strs�bad_strrrr �test_fromisoformat_fails2sz!TestDate.test_fromisoformat_failsc	CsTddt�d�g}|D]:}|�t��|j�|�Wd�q1sD0YqdS)Ns
2009-03-01z
2009-03-01��io�StringIOrprqr�rS�r+Z	bad_typesZbad_typerrr �"test_fromisoformat_fails_typeerrorFsz+TestDate.test_fromisoformat_fails_typeerrorcCs�ddddddddd	d
ddd
tddftddfg}|D]Z}|j|d��:|j|�}|��}|jj|�}|�||�Wd�q21s�0Yq2dS)N)��rIrC)r�r"rG)i�r�ro)r�r"rG)r�r�rrh)r�r�r)r�r"r")r�r�rr�)r�r�rrg)r(r�rr"r�r)�	datecomps)rrr�r�r��fromisocalendarr*)r+Zdatesr{Zdobj�isocalZd_roundtriprrr �test_fromisocalendarMs,�
zTestDate.test_fromisocalendarc
Csxgd�}|D]f}|j|d��F|�t��|jj|�Wd�n1sJ0YWd�q1sh0YqdS)N)
)r�rr")r�r�r")r��6r")r�r"r)r�r"r�)r�r"�)r�r�r")r�r"r")rr"r")i��r"r")�r"r")r�r�r")r�r"r��r})r�rpr�r�r|)r+�isocalsr}rrr �!test_fromisocalendar_value_errorsks
z*TestDate.test_fromisocalendar_value_errorsc
Cs�ttdd�g}g}d}td�D]4}|D]*}t|�}|||�||<|�t|��q&q|D]f}|j|d��F|�t��|j	j
|�Wd�n1s�0YWd�qX1s�0YqXdS)NcSsdSr-r)�xrrr r��r�z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)r�r"r"rCr�)r�r�r�listr�r�r�rprqr�r|)r+Z
err_txformersr�r8r
ZtxformerZerr_valr}rrr � test_fromisocalendar_type_errors�s�	z)TestDate.test_fromisocalendar_type_errorsN)/r:rNrOrr�rrCr�r�r�r.rrLr�r�r�r�r�r�r�r�r�r�r�r
rErrr2r'r7r,rWr0r<r?rmr^r_rfrprqrtryr~r�r�rrrr r�AsV/2		&'
	
'
,

r�c@seZdZdZdS)�SubclassDatetimer"Nr�rrrr r��sr�c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Ze�d)�d*d+��Zd,d-�Ze�d.�d/d0��Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"e#�$e%j&d;kd<�d=d>��Z'e#�$e%j&d;kd<�d?d@��Z(dAdB�Z)dCdD�Z*dEdF�Z+dGdH�Z,dIdJ�Z-dKdL�Z.dMdN�Z/dOdP�Z0e�dQ�dRdS��Z1dTdU�Z2dVdW�Z3dXdY�Z4dZd[�Z5d\d]�Z6d^d_�Z7d`da�Z8dbdc�Z9ddde�Z:dfdg�Z;dhdi�Z<djdk�Z=dlS)m�TestDateTimecCsx|�ddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�rCr"r�r�	r�r*r�r�rKr�rurtr�r`rrr r�sz"TestDateTime.test_basic_attributesc	Cs||�ddddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�rCr"r�r��@r�r`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"rGrCrIrDrKrFr:rA)r�r{r�rxr4r�r*r�r�rKr�rurtr�r�rrr rC�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"rGrCrIrDr�z0001-02-03T04:05:01.000123rY� z0001-02-03 04:05:01.000123�z0001-02-0304:05:01.000123r�u0001-02-03�04:05:01.000123r���timespecz
0001-02-03T04rTz0001-02-03T04:05r�z0001-02-03T04:05:01r�z0001-02-03T04:05:01.000r��auto)�sepr�z0001-02-03 04:05�foo�L@rz0001-02-03T04:05:01.999+00:00z0001-02-03T04:05:01.999z0001-02-03T04:05:01.000000z0002-03-02T00:00:00z0002-03-02 00:00:00�r�ZXXXz0002-03-02T00:00:00+00:00:16)
r�r*r�rpr�r�rr�rPrr�rrr r��sD�zTestDateTime.test_isoformatc	Cs�dtdd�fdtdd�fdtddd	�fd
tddd
d�fdtddddd�fg}ddtjfdttd��fg}|dd�|D�7}|�dddddd�}d}|D]H\}}|j|d�}||}|j|d��Wd�q�1s�0Yq�dS)N�05:00rDr��02:00rG�06:27rKrr��12:32:30r�roror��02:04:09.123456rIrArr��r�N�+00:00rcSs2g|]*\}}dD]\}}||t||�f�qqS�))�-r�)�+r"r�rrkr��prefix�signrrr r!s�z8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>rzr"�%z2016-04-01T12:37:09r��tzi�rrr�r�r�r�)	r+�	tzoffsets�tzinfosZdt_base�exp_base�exp_tzr�ra�exprrr �test_isoformat_timezone�s(�	��z$TestDateTime.test_isoformat_timezonec	Cs&|�ddddddd�}|�|�d�t|��|�td	��|�d�Wd�n1sX0YGd
d�d|j�}|ddddddd�}|�|�d�d�Gdd
�d
|j�}|ddddddd�}|�|�d�t|��dD]F}|�|�|�|�|��|�|�|�|�|��|�|�|�d
�q�dS)Nr�rAr#rIrDr"r�r�r�c@seZdZdd�ZdS)z#TestDateTime.test_format.<locals>.AcSsdSr�rr^rrr r�sz+TestDateTime.test_format.<locals>.A.__str__Nr�rrrr r�sr�c@seZdZdd�ZdS)z#TestDateTime.test_format.<locals>.BcSsdSr�rrrrr r�#sz,TestDateTime.test_format.<locals>.B.strftimeNrrrrr r�"sr�rrrrrr r
s(zTestDateTime.test_formatc	Cshddl}|�ddddddd�}|�|��d�|�ddd	dddd�}|�|��|�|�|�����dS)
Nrr�rCrG�rDr�zSat Mar  2 18:03:05 2002r�)rr�r*r�r�r�)r+rr�rrr �test_more_ctime0s
zTestDateTime.test_more_ctimec	Cs�|�dddddd�}|�dddddd�}|�dddddd�}|�||�|�||k�|�tddd	d
d
d�}tdd�}||}|�|||�|�||k�dS)
Nr�rCr"rArr#r�rr�r�rr�)r�r*rxrr)r+rrr��dt3rrrr �test_tz_independent_comparing@s
z*TestDateTime.test_tz_independent_comparingcCsBGdd�dt�}|�ddddddd|dd��}|�t|jd�dS)	Nc@seZdZdd�ZdS)zDTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfocSsGdd�dt�}|d�S)Nc@seZdZdd�ZdS)zZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrcWsdSr-r)r+r�rrr r�WszbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r:rNrOr�rrrr �MyStrVsr�r6)r�)r+rar�rrr rcUszKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r:rNrOrcrrrr �MyTzInfoTsr�r�rCrGrr6�%Z)rPr�rprqr�)r+r�r�rrr �%test_strftime_with_bad_tzname_replaceRsz2TestDateTime.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�rrprGr�r�r�ror�r�r�rorr�r�r�r�r�r�r��fold)r�rrrpr�rqr^rrr 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�ro�r"rGr�rrDr�r�rrr r.�s$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�rIrrCrGr�rKr�rrFr�r#r�r�rmrAr�r�r�r�r�rDr�r�rcs��Sr-rrrrr r��r�z0TestDateTime.test_computations.<locals>.<lambda>cs��Sr-rrrrr r��r�cs��Sr-rrrrr r��r�cs��Sr-rrrrr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrrrr r��r�cs��Sr-rrrrr r��r�cs��Sr-rrrrr r��r�r�)r+r
r�Zmillisecr�r�rr�r r�s�
" """����zTestDateTime.test_computationscCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�rKrFr�r�r�r"�rGrr1rrr r2�s

zTestDateTime.test_picklingc	Csn|�ddddddd�}ttjd�D]D}t�||�}t�|�}|�|jd�|�|jd�|�|j	d�q$dS)	Nr�rGrFr��0r�i��r")
r�rr�HIGHEST_PROTOCOLr�r�r*r�r�rK)r+r	rrBr
rrr �test_more_pickling�s
zTestDateTime.test_more_picklingcCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr�)r�r�r�r�r*rxrUr1rrr �test_pickling_subclass_datetime�s
z,TestDateTime.test_pickling_subclass_datetimecCsFgd�}d}|j|�}|D]&}tD]}||dd�}|�||�q"qdS)N)s@cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x00\x10\x00'
tR.s#cdatetime
datetime
(U
�;tR.s$�cdatetime
datetime
U
�;�R.)rrnrr�r�r"r�r r!r#r%rrr r'	s

z!TestDateTime.test_compat_unpicklecCsRgd�}|j|�}|j|�}|�||�|�||k�|�||k�|�||k�|�||k�|�||k�tt|��D]�}|dd�}||d||<|j|�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�qzdS)N)r�rnr�r�r8r�rr")r�r*rxr�rr,)r+r�r'r(r
r:rrr �test_more_compare	s2


zTestDateTime.test_more_comparecCsd|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j
�|�|j|j�dSr-)
r*rr�rr�rrKrr�rrurrt)r+rkr;rrr �verify_field_equality;	sz"TestDateTime.verify_field_equalitycCs6ddl}|��}|�|�}|j�|�}|�||�dS�Nr)r�	localtimer�r�r��r+rr�rkr;rrr r�C	s

zTestDateTime.test_fromtimestampcCs6ddl}|��}|�|�}|j�|�}|�||�dSr�)r�gmtimer��utcfromtimestampr�r�rrr �test_utcfromtimestampK	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|��}Wnt�yYq�0|�|j�|�|�q�dS)Nr.r"g��@rGrCrI���6�@r=rnror�r�i'r�)r�r*rWr�r�rrG)r+r��t0r'rBrrr �test_timestamp_naiveU	s,
��� z!TestDateTime.test_timestamp_naivecCs�|jdddtjd�}|�|��d�|jdddddddtjd�}|�|��d�|jdddddddttd	d
�d�d�}|�|��d�dS)
Nr.r"rrrGrCrIg�7��@r�r�r�r�)r�rr�r*rWrr�rrr �test_timestamp_awareq	s
��
�z!TestDateTime.test_timestamp_awarezMSK-03c	Csx|jj|jjfD�]`}|d�}|�|jd�|�|jd�|d�}z|d�}Wnty`Yn~0|�|jd�|�|jd�|d�}|�||�|d�}|�||�|d�}|�||�|d	�}|�|jd�|�|jd
�|d�}|�||�|d�}|�||�|d
�}|�|jd�|�|jd�|d�}|�|jd�|�|jd�|d�}|�|jd�|�|jd�qdS)Nrg���ư>g���ư�r�r�g:�0�yE�g1E��2��gH�����z�rRi�#gH�����z>g1E��2�>g<"2��?g�P���?r"rPrQ)r�r�r�r*rtr��OSError)r+Zftsrr�Z	minus_oner�rrr rU|	sF�
z&TestDateTime.test_microsecond_roundingcCs�|�d��6|jjjtjd�}|��}|�|d�Wd�n1sF0Y|�d��8|jjjtjdd�}|��}|�|d�Wd�n1s�0YdS)Nzminimum UTCrl����w#o9zmaximum UTCr�rr�g�� �MB)	r�r�r�r�rr�rWr*rt)r+�min_dt�min_ts�max_dt�max_tsrrr �test_timestamp_limits�	s*�z"TestDateTime.test_timestamp_limitsc

Cs�z|j�d�Wn ttfy0|�d�Yn0|jjtdd�}|��}|jjj	dd�}|jjtdd���td	d
d
d��
�}d||fd
||ffD]R\}}}|j|||d��(|j�|�}|�||�Wd�q�1s�0Yq�d|tddd��
�fd|tdd��
�fd|tdd��
�fd|tdd��
�fg}	|	D]v\}}|j||d��L|�
ttf��|j�|�Wd�n1�s�0YWd�n1�s�0Y�qFdS)N����Test not valid on this platformr"r�r�r�r�r�r�r�r��minimum�maximum�r�rk�Too small by a littler�rT�Too small by a lotr��Too big by a little�Too big by a lot�r�)r�r�r�rGr;r�rrWrtr�r r�r*rpr�)
r+r�r�r�r��	test_namer�rk�actualr�rrr �test_fromtimestamp_limits�	s2��,�z&TestDateTime.test_fromtimestamp_limitscCs�z|j�d�Wn ttfy0|�d�Yn0|jjjtjd�}|�	�}|jj
jdtjd�}|�	�}d||jdd�fd||jdd�ffD]�\}}}|j|||d��dz|j�|�}Wn6ttfy�}	z|�t|	��WYd}	~	n
d}	~	00|�
||�Wd�q�1�s0Yq�d	|d
fd|tdd
���fd|d
fd|tdd
���fg}
|
D]v\}}|j||d��L|�ttf��|j�|�Wd�n1�s�0YWd�n1�s�0Y�qbdS)Nr�r�rr�r�rr�r�r�r�r"r�r�r�r�r�r�)r�r�r�rGr;r�r�rr�rWrtr�r�r*rr rpr�)r+r�r�r�r�r�r�rkr��excr�rrr �test_utcfromtimestamp_limits�	s4�$.

�z)TestDateTime.test_utcfromtimestamp_limitscCs dD]}|�t|jj|�qdSr�r�r�rrr r�
s�z&TestDateTime.test_insane_fromtimestampcCs dD]}|�t|jj|�qdSr�)rprGr�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�r^rrr �!test_negative_float_fromtimestamp
sz.TestDateTime.test_negative_float_fromtimestampcCs.|j�d�}|�||�ddddddd��dS)	Nr�i�r�rr�r�r8i�~)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�rC)rrrr��utcnowr�rZassertLessEqual)r+rZ	tolerancer�Zfrom_now�from_timestamprrr �test_utcnow#
s

zTestDateTime.test_utcnowc	Cs�d}d}t�|j||�}|j�||�}|�||�|�t|�|j�|�t|�|j�gd�}|D]`\}}|j||d��:t�|j||�}|j�||�}|�||�Wd�qb1s�0Yqb|jj}|�|dd���dt	�|�|dd���d	t	�|�|d
d���t
dddd
��ddtjtj
dffD]z\}}|dk�rXd}	|}
nd}	|}
t|
dd�\}}d�|	|||�}
||
d�}|�|��t
|d��|�|�
�|��q:d\}
}||
|�}|�|��dtdt	�|�|�
�d�|�|�|�|
�|�|dd�jd�|�t��|dd�Wd�n1�sF0Y|�t��|dd�Wd�n1�s|0Y|�t��|dd�Wd�n1�s�0YdS)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�%zrGz-0002rEz-00:02:01.000003r"rC)rTr�r�)rr�)rZGMTrr�r�r�z{}{:02d}{:02d} {}rr�)z	+1234 UTCrr�r/r�r�z-2400z-000�z)�	_strptimeZ_strptime_datetimer��strptimer*r�r�r�rb�MINUTErr�rrcr{r�r�r�rrpr�)r+r�r�rkr;�inputsr�Z	tzsecondsrcr�r�r�rT�dtstrrar	rrr �
test_strptime1
sX
�,��


66zTestDateTime.test_strptimec
Cs`|jj}|�t��|dd�}Wd�n1s20Y|�dddddd�}|�dddddd�}|�dddd	d	d	�}|�ddd
d	d	d	�}ddd|fd
dd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg
}|D]b\}}	}
}d"|}|j||	|
|d#��*||	|
�}|j|||d$�Wd�q�1�sP0Yq�dS)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Sr�rGr"rIrDrKr�r/z
1/02/03 4:5:6r�z
01/2/03 4:5:6z%Hz01/02/03 4:05:06z%Mz01/02/03 04:5:06z%Sz01/02/03 04:05:6z%jz2/03 04am:05:06z%j/%y %I%p:%M:%Sz%Iz02/03 4am:05:06z%wz6/04/03z%w/%U/%yz%Wz6/4/2003z%u/%W/%Yz%Vz%u/%V/%Gztest single digit )�reasonr�r��target)�msg)r�r�rpr�r�r*)r+r�Znewdaterrr�r�Zdt4r�r�r�r�r�rrr �test_strptime_single_digitl
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�rrKr��!)	r�r�rrKr�r�rIr�r�r"r�)r�r*r�r�r�rKr�rurtr�r�rrrrrrrrrr)r+r��ttrrr �test_more_timetuple�
s0
����z TestDateTime.test_more_timetuplec	Cs�|�ddddddd�}|�|�d�d	�d
D]B\\}}}ttd||d��}|j|d
�}|�|�d�d|�q,z|�d�Wnty�Yn0dS)Nr�r�rrKr�r��/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))r�r�z	33.000123))r�rZ33rG)r�r�r�rr�z-0200u%y�%m %H�%M)r�r*r�rrr�r�)r+r�rBrr�r�rrr �test_more_strftime�
s�zTestDateTime.test_more_strftimec	CsL|�ddddddd�}|�|��tddd��|�|��tdddd��dS)Nr�rCrIr��-��)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�rCrIr�r�r)rrr"rGrrr)rrr�rVr*rprqrr�r�r)r+r-r�rkrVrarrr �test_combine�
s6

zTestDateTime.test_combinec
Cs�|j}gd�}||�}|�||���d}dD]L\}}|dd�}|||<||�}|jfi||i��}	|�||	�|d7}q.|ddd�}|jt|jdd	�dS)
N)r"rGrCrIrDrKrFr)r1r2r3�r�rD�rurK�rtrF�r�r�r"r�rGr�r�r4r5r6rrr r<�
s
zTestDateTime.test_replaceZEDT4cCs\|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	��|��Wd�n1�sN0YdS)N�,Z0044rJr��EDTrrIr��r�c@seZdZdd�Zdd�ZdS)z+TestDateTime.test_astimezone.<locals>.BoguscSsdSr-rr`rrr rbr�z5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetcSstd�Sr�rr`rrr rdr�z/TestDateTime.test_astimezone.<locals>.Bogus.dstN�r:rNrOrbrdrrrr �Bogussrc@seZdZdd�Zdd�ZdS)z/TestDateTime.test_astimezone.<locals>.AlsoBoguscSstd�Sr�rr`rrr rbr�z9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetcSsdSr-rr`rrr rd	r�z3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNr
rrrr �	AlsoBogussrc@seZdZdd�Zdd�ZdS)z,TestDateTime.test_astimezone.<locals>.BrokencSsdSrMrr`rrr rbr�z6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetcSsdSrMrr`rrr rdr�z0TestDateTime.test_astimezone.<locals>.Broken.dstNr
rrrr �Broken
sr
)r�r{rPr�rrr*�
astimezonerprqrr�)r+rar��dt_utcZdt_frZbogrZalsobogr
�brokenZ	dt_brokenrrr �test_astimezone�
s*

zTestDateTime.test_astimezonecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|j|j	d�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z.TestDateTime.test_subclass_datetime.<locals>.CrQcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr@rArCr^rr rs

z6TestDateTime.test_subclass_datetime.<locals>.C.__new__cSs||j|j|jSr-)r�r�rtrFrrr rH!sz6TestDateTime.test_subclass_datetime.<locals>.C.newmethNrIrr^rr rKsrK)r�rIr�r�rp�)r�rFrQrH)
r�r*r9rJr�r�rHr�r�rtrMrr^r rqs

��z#TestDateTime.test_subclass_datetimecsBG�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]�\}}	}
||fD]p}�j
t|�|d��Ht||�}||	�}
��|
|���|
|
���|
jd�Wd�q�1�s00Yq�q�dS)NcseZdZ�fdd�ZdS)zTTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclasscs$�jj|g|�Ri|��}d|_|SrNrOrPr^rr r3sz\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__NrRrr^rr rn2srn)r�rIr�r�ro�rz2003-04-14T12:30:15.123456gh͏�TM�ArFr�r�rSr�z%Y-%m-%dT%H:%M:%S.%frVrrCrT)
r�rzr*r�rWrr�rrrr�r�rX)r+rnr�rYZutc_tsrZr�r�rUr[rkr\�constructorrarr^r �-test_subclass_alternate_constructors_datetime0s6


�

$�
�
z:TestDateTime.test_subclass_alternate_constructors_datetimec
s�G�fdd�d�j�}ddifddifdddtjifdddttdd	�d
�ifg}|D]f\}}}��|��Bt||�}|fi|��}��||���|jd�Wd�qT1s�0YqTdS)NcseZdZ�fdd�ZdS)z8TestDateTime.test_subclass_now.<locals>.DateTimeSubclasscs$�jj|g|�Ri|��}d|_|SrNrOrPr^rr rdsz@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__NrRrr^rr rncsrnr{r�Znow_utcr�Z	now_fixedr�r�r�rF)	r�rr�rr�rXrzr*r�)r+rnr�r6Z	meth_namerQr]rarr^r �test_subclass_nowas�
zTestDateTime.test_subclass_nowc
s�gd�}gd��ddg}dtjttdd��ttdd��g����fdd	�|D�}|D]^}|D]T}|j|d
�}�j|d��(�j�|�}��||�Wd�q\1s�0Yq\qTdS)N)rgrhrirj)�rrrr)rrrih�)rrr�G�)r�ror�rr�rYr�r�rGcs:g|]2}�D](}�D]}�jg|�|�Rd|i��qqqSr)r�)rZ
date_tupleZ
time_tupler��Z
base_timesr+r�rr r!�s�z<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>�r��r�)rr�rr�r�r�rSr*)r+rm�
separators�dtsrar�r�rorrr �test_fromisoformat_datetimeys ��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]P}|j|d�}|��}|j|d��|j�|�}Wd�q�1s�0Yq�dS)Nrlr�ror��pQrDr�rGrKrr�ror�rIrArr�cSsg|]}d|�qS�r�r�rr�rrr r!�r�z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|��qSrrr!rrr r!�r�r��tstr�r�rrr�r�r�r�rS)r+Zbase_dtr�r�r�rar�rorrr �test_fromisoformat_timezone�s"
��z(TestDateTime.test_fromisoformat_timezonec
Cs|gd�}|D]j}|�ddddddd�}|j|d	�}|j|d
��(|j�|�}|�||�Wd�q1sl0YqdS)N)	r�rY��€uʁuᛇu時u🐍r�rcr"rr�r�r�iu�rrrl�r+rr�rar�rorrr �test_fromisoformat_separators�sz*TestDateTime.test_fromisoformat_separatorsc	Csxddg}|D]f}|�ddddd�}|j|d�}|j|d	��(|j�|�}|�||�Wd�q1sh0YqdS)
Nr�r�rcr"rr�rrrrlr(rrr �test_fromisoformat_ambiguous�sz)TestDateTime.test_fromisoformat_ambiguouscCsddg}dtjttdd��ttdd��ttddd��g}gd	�}t|�D]�\}}|D]�}|D]�}|d
kr�d|dd}|dd�|f}|j|dd
|�d|i�}	|	j|d�}
|j|
d��(|j�|
�}|�|	|�Wd�q\1s�0Yq\qTqHdS)N)r�r�rIr�r�r�r)r�r�rIr�r�r�rr�r�rGrKrr��r�rTr�r�r�r�r�rrIrr�r�	rr�r�	enumerater�r�r�rSr*)r+Zdatetime_basesr��	timespecs�ipr�r�rn�new_microsecondsrar�rorrr �test_fromisoformat_timespecs�s(��z)TestDateTime.test_fromisoformat_timespecsc
Csxgd�}|D]f}|j|d��F|�t��|j�|�Wd�n1sJ0YWd�q1sh0YqdS)N)r�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�rs�r�rpr�r�rSrrrrr �!test_fromisoformat_fails_datetime�s
z.TestDateTime.test_fromisoformat_fails_datetimecCsJd}|�tt�t|����|j�|�Wd�n1s<0YdS)Nu2018-01-03�01:0113)rr��re�escaper�r�rS)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�rSr�rrr�)r+rkrarrr �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>.DateTimeSubclassNrarrrr rn srnrlr�r�rAror�i��r#r�r)r�rrrSr�r*rz)r+rnrarorrr rqs�z(TestDateTime.test_fromisoformat_subclassN)>r:rNrOrr�rr�rCr�r�r
r�r�r�r�r.rr2r�r�r'r�r�r�r�r�run_with_tzr�r�rUr�r�r�r�r��unittestZskipIfr8�platformr�r�r�r�r�r�r�rrr<rrqrrrr%r)r*r1r4r7r8rqrrrr r��sr
,5D			!


(''		

;""
 1#&r�c@s"eZdZeZe�d�dd��ZdS)�TestSubclassDateTimeznot appropriate for subclassescCsdSr-rr^rrr rC/sz#TestSubclassDateTime.test_roundtripN)r:rNrOr�r�r:�skiprCrrrr r<,sr<c@seZdZdZdS)�SubclassTimer"Nr�rrrr r>3sr>c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�TestTimecCsH|�dd�}|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r�r�r*r�rurtr�r�rrr r:s
zTestTime.test_basic_attributescCsL|�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r�r�r@r�rrr r�As
z&TestTime.test_basic_attributes_nonzerocCsp|�dddd�}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j|j	�}|�||�dS)Nr"rGrCrIr:rA)
r�r�rxr4r�r*r�rurtr�)r+r�rBr(rrr rCJs�zTestTime.test_roundtripcsNgd�}|j|��|j|�}|��|�|��|k�|��|k�|��|k�|��|k�|��|k�tt|��D]�}|dd�}||d||<|j|�}|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�qztD]��|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fd	d��|�t��fd
d��|�t��fdd��|�t��fdd��|�t��fd
d���qRdS)N�r"rGrCrIr"FTcs��kSr-rrr4rr r�{r�z)TestTime.test_comparing.<locals>.<lambda>cs��kSr-rrr4rr r�|r�cs��kSr-rrr4rr r�}r�cs��kSr-rrr4rr r�~r�cs��kSr-rrr4rr r�r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�cs��kSr-rrr4rr r��r�)	r�r*rxr�rr,r5rprq)r+r�r(r
r:rr4r �test_comparingY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�rpr�r^rrr 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�ror�r"rGrrDr�r�rrr r.�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)+NrIrDr"r�z04:05:01.000123z00:00:00r�z00:00:00.000001r#z00:00:00.000010r#z00:00:00.000100r�z00:00:00.001000r�z00:00:00.010000i��z00:00:00.100000r�r/r0r)r�rurtr�r�r�Z12rTz12: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�rpr�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]H\}}|j|d�}||}|j|d��Wd�q�1s�0Yq�dS)Nr�rDr�r�rGr�rKrr�r�r�roror�r�rIrArr�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"�rtrC)r�)r�rprqr�r�rrr �test_1653736
szTestTime.test_1653736cCsZ|�dddd�}|�|�d�d�|�|�d�d�z|�d	�WntyTYn0dS)
Nr"rGrCrIz%H %M %S %fz01 02 03 000004r�r�u%H�%M)r�r*r�r�r�rrr r�
szTestTime.test_strftimecCs|�dddd�}|�|�d�t|��|�td��|�d�Wd�n1sR0YGdd	�d	|j�}|dddd�}|�|�d�d	�Gd
d�d|j�}|dddd�}|�|�d�t|��dD]F}|�|�|�|�|��|�|�|�|�|��|�|�|�d�q�dS)
Nr"rGrCrIr�r�r�c@seZdZdd�ZdS)zTestTime.test_format.<locals>.AcSsdSr�rr^rrr r�
sz'TestTime.test_format.<locals>.A.__str__Nr�rrrr r�
sr�c@seZdZdd�ZdS)zTestTime.test_format.<locals>.BcSsdSr�rrrrr r�$
sz(TestTime.test_format.<locals>.B.strftimeNrrrrr r�#
sr�)z%H %M %Sr)r+r�r�r	r�r
r	rrr r

s(zTestTime.test_formatc	Cs�|�t|�dddd��d�|�t|�dddd��d�|�t|�d	ddd
��d�|�t|�dddd	��d
�|�t|�ddd	d	��d�dS)Nr"rGrCrIz01:02:03.000004r#r�z10:02:03.004000rr;z00:02:03.400000r�z12:02:03r�rz23:15:00)r*r�r�r^rrr 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)Nr:r"rGrCrIz%s(1, 2, 3, 4)r#r�z%s(10, 2, 3, 4000)rr;z%s(0, 2, 3, 400000)r�z%s(12, 2, 3)r�rz
%s(23, 15)r<r=rrr r�6
s �����zTestTime.test_reprcCsN|�|jj|j�|�|jj|j�|�|jjt�|�|jj|jjk�dSr-)rzr�r�rtrDrrxr^rrr rEC
szTestTime.test_resolution_infocCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�r�r�r�r�rGrr1rrr r2I
s

zTestTime.test_picklingcCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)NrE)r>r�r�r�r*rxrUr1rrr �test_pickling_subclass_timeR
s
z$TestTime.test_pickling_subclass_timec	Cszgd�}t|�D]d\}\}}|j|d��<|j|�}tD]}||dd�}|�||�q8Wd�q1sj0YqdS)N))s,cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.rE)scdatetime
time
(U;tR.rE)s�cdatetime
time
U;�R.rE)s,cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.�r�r�r�r�)scdatetime
time
(U;tR.rG)s�cdatetime
time
U;�R.rG)r
r r!)r-r�r�r$r*)r+rir
r&r�rkr�r�rrr r'[
s
zTestTime.test_compat_unpicklecCsh|j}|�|d��|�|dd��|�|ddd��|�|dddd��|�|d��|�|��dS)Nr"r)r�rx)r+r7rrr rWq
szTestTime.test_boolc
Cs�|j}gd�}||�}|�||���d}dD]L\}}|dd�}|||<||�}|jfi||i��}	|�||	�|d7}q.|d�}|jt|jdd�|jt|jdd�|jt|jd	d
�|jt|jdd�dS)
NrAr)rrrrr"r��r�r��rur#rCrr�r5r6rrr r<{
s"
zTestTime.test_replacecCs8Gdd�d|j�}|dd�}|�t|jdd��|�dS)Nc@seZdZdS)z4TestTime.test_subclass_replace.<locals>.TimeSubclassNrarrrr �TimeSubclass�
srJr�ror#rHr>)r+rJr�rrr r?�
s
zTestTime.test_subclass_replacecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|jd�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z&TestTime.test_subclass_time.<locals>.CrQcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr@rArCr^rr r�
s

z.TestTime.test_subclass_time.<locals>.C.__new__cSs||j|jSr-�r�rtrFrrr rH�
sz.TestTime.test_subclass_time.<locals>.C.newmethNrIrr^rr rK�
srK)rIrDrKr�rFrQrH)	r�r*r9rJr�r�rHr�rtrMrr^r �test_subclass_time�
s

zTestTime.test_subclass_timec	Cs�d}ddtd�dfD] }|�t|j||dd��q|�td��*|�tdgt|��d�Wd�n1sr0YdS)	Nz2:59.0r��9r��ÿr"rdr�)�chrrprqr�rrer,)r+r8Z	hour_byterrr rf�
s
�z!TestTime.test_backdoor_resistanceN)r:rNrOrr�rr�rCrBr�r.r�r�rDr�r
r�r�rEr2rFr'rWr<r?rLrfrrrr r?6s.	+4
		
r?c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TZInfoBasecCs�|j}Gdd�dt�}|ddd|�d�}|tur4dp6d}|�|��|�t|turVd	pXd
d�}|�|��|�|�|��|�dS)Nc@s eZdZdd�Zdd�ZeZdS)z7TZInfoBase.test_argument_passing.<locals>.introspectivecSs|rdp
dS)N�real�nonerr`rrr rc�
r�z>TZInfoBase.test_argument_passing.<locals>.introspective.tznamecSst|r
dpdd�S)NrQ����rSrr`rrr rb�
szATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r:rNrOrcrbrdrrrr �
introspective�
srTr"rGrCrrRrQrSrQrS)r�rrr*rcrrbrd)r+r7rT�objrkrrr �test_argument_passing�
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>.NiceTrycSsdSr-rr^rrr r\�
r�z<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__cSsdSr-rr`rrr rb�
r�z=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN�r:rNrOr\rbrrrr �NiceTry�
srXc@seZdZdd�Zdd�ZdS)z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTrycSsdSr-rr^rrr r\�
r�z>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__cSsdSr-rr`rrr rb�
r�z?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNrWrrrr �	BetterTry�
srY)r�rprq�objectrr�)r+r7rXrYr
r�rrr �test_bad_tzinfo_classes�
sz"TZInfoBase.test_bad_tzinfo_classesc

Cs�Gdd�dt�}|j}dD]�\}}|tur@|ddd||�d�}n$|turd|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�|_dSrR�rr[)r+r[rrr r\�
sz?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__cSs|jSr-)r[r`rrr rb�
sz@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNrWrrrr �Edgy�
sr]))�`���F)�a���T)�T)r�Fr"rGrCrrKr�z%c%02d:%02drr�r�z01:02:03)rr�rrrr{rU�timetzr*r�rpr�)
r+r]r7r[Zlegitr�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>.C1cSsdSr-rr`rrr rbr�z4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetcSsdSr-rr`rrr rdr�z.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstcSsdSr-rr`rrr rcr�z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameNr�rrrr �C1srdr"rc@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C3cSs
tdd�S)Nr_rSrr`rrr rbr�z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetcSs
tdd�S)Nr`rSrr`rrr rdr�z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstcSsdS�N�anamerr`rrr rcr�z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNr�rrrr �C3srgr_rSr`rfc@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C4cSsdSrerr`rrr rbr�z4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffsetcSsdSrNrr`rrr rdr�z.TZInfoBase.test_tzinfo_classes.<locals>.C4.dstcSsdSr�rr`rrr rcr�z1TZInfoBase.test_tzinfo_classes.<locals>.C4.tznameNr�rrrr �C4srhc@seZdZdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C6cSs
tdd�S)Ni��r�rr`rrr rb$r�z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetcSs
tdd�S)Nr�r�rr`rrr rd%r�z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNr
rrrr �C6#sric@seZdZdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C7cSs
tdd�S)Nrr�rr`rrr rb,r�z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetcSs
tdd�S)N���r�rr`rrr rd-r�z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNr
rrrr �C7+srkrr�rj)r�rr�rbrdrcr*rrprqr�)r+r7rdr�rgrhrirkrrr �test_tzinfo_classess6
�zTZInfoBase.test_tzinfo_classescCs�|j}Gdd�dt�}|ddd|�d�}|jdd�}|jdd�}|jd	d�}|||fD]N}|||fD]>}ttttttfD](}	|	||�}
|	|j	|j	�}|�
|
|�qxqdqV|tu�r�|jd|�d
�}|jd|�d
�}|jd	|�d
�}|||fD]�}|||fD]�}||k||k}
||u�s ||u�r:||u�s4||u�r:d}n6||u�rR|u�r\nnd}n||u�rld}nd
}|�
|
|�q�q�dS)Nc@seZdZdd�ZdS)z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetcSs$|jdkrt|jd�Stdd�SdS�Nr#rSr��rurr�rrr rb8s
zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNrjrrrr �OperandDependentOffset7sror�rAr#rrCrIrn�rurrr�r")r�rr�rrrrrrrur*r)r+r7ror8�d0rhr�r�r��opr;rkrrr �test_aware_compare2s6	

(
zTZInfoBase.test_aware_compareN)r:rNrOrVr[rcrlrsrrrr rP�
s
0rPc@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�rurtr�r�rr�rrr �
test_emptyfs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|jjv�rd5|	_|�t|
jd3�dS)6Nr�r�r"rr�rEr��METrCrFr�rr�rp�(r�r�rSzno argscs��kSr-rr�r_Zt5rr r��r�z'TestTimeTZ.test_zones.<locals>.<lambda>cs��kSr-rrrxrr r��r�z07:47:00-05:00z12:47:00+00:00z13:47:00+01:00z00:00:00.000040z00:00:00.000040+00:00z
datetime.timez(7, 47, tzinfo=est)z(12, 47, tzinfo=utc)z(13, 47, tzinfo=met)z
(0, 0, 0, 40)z(0, 0, 0, 40, tzinfo=utc)z%H:%M:%S %%Z=%Z %%z=%zz07:47:00 %Z=EST %z=-0500z%H:%M:%S %Z %zz12:47:00 UTC +0000z13:47:00 MET +0100r_z%z %Z %%z%%Zr�r�z%H:%M %%Z='%Z' %%z='%z'z"23:59 %Z='%z %Z %%z%%Z' %z='-2359'c@seZdZdZdd�ZdS)z(TestTimeTZ.test_zones.<locals>.BadtznamerQcSs|jSr-r	r`rrr rc�r�z/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r:rNrOr�rcrrrr �	Badtzname�sryrGrIz%H:%M:%Sz02:03:04r�r@r�)rPrr*rr�rbrrprqrcrdr+r�r�r�r�r�r9r:r�r�)r+�estr��metr'r(r^r-Zyuckryr�rrxr �
test_zonesns�
�
�zTestTimeTZ.test_zonescCs�|jddddtdd�d�}|jddddtdd�d�}|�t|�t|��|jd	d
ddtd
d�d�}|jd	dddtdd�d�}|�t|�t|��dS)Nrr"rGrCr`r�ri�r�r8rKr#i���r�i���)r�rPr*r+r&rrr �test_hash_edge_cases�szTestTimeTZ.test_hash_edge_casesc	Cs�d}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��tdd�}|jddd|d�}tD]`\}}}|�||�}|�|�}|�||�|�|j	t�|�|�
�tdd	��|�|��d�qv|�|��|�d��dS)
NrErGr�r�rDrKrFrrS)
r�r�r�r�r*rrrerzrrbrrc�	r+r�r�r�r�rr�r��tinforrr r2�s"



zTestTimeTZ.test_picklingcCs�gd�}tdd�}|jdddd|d�}|D]`}tD]V}||d	d
�}|�||t|��|�|jt�|�|��tdd��|�|�	�d�q2q*dS)N)s�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�rDrKrFrrr r!rS)
rer�r$r*r�rzrrbrrc)r+rirrkr&r�r�rrr r'�s
zTestTimeTZ.test_compat_unpicklecCs||j}|dtdd�d�}|�|�|dtdd�d�}|�|�|dtdd�d�}|�|�|ddtd	d�d�}|�|�dS)
Nrr�r�rrDi,r�r�r`)r�rPrx)r+r7r�rrr �test_more_bools


zTestTimeTZ.test_more_boolcCs\|j}tdd�}ttdd�d�}dddd	|g}||�}|�||���d
}ddd
dd|ffD]L\}}|dd�}	||	|<||	�}
|jfi||i��}|�|
|�|d7}q\|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|d�}|j	t
|jdd�|j	t
|jdd�|j	t
|jdd�|j	t
|jdd�dS)Nr#�+100�8���rS�-200r"rGrCrIrrrrrrrr�rHr�rIrCrr��r�rPrr*r�rcr�rr�rpr��r+r7Zz100Zzm200r�r8r
r6r9r:rkr;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"rGrCrr�rc@seZdZdd�Zdd�ZdS)z-TestTimeTZ.test_mixed_compare.<locals>.VariescSstdd�|_dS�Nr�rSr\r^rrr r\Ksz6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd�7_|jS�Nr"rS�r[rr�rrr rbMsz7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNrWrrrr �VariesJsr�r�rSr�)	r�r*r�rPr�rrbrrx�r+r'r(r��vrrr r,>s$zTestTimeTZ.test_mixed_comparec
Cs�ddg}d}d}d}d}|tt�||||��7}dtjttdd��ttd	d
d��g}|D]j}|D]`}|j|d|i�}	|	��}
|j|
d
��(|j�	|
�}|�
|	|�Wd�q`1s�0Yq`qXdS)Nr)r�r�r�r�)rAr�r�)rDro)rIr�)ri�i�[
rGr�rKrr�rr")r��	itertools�productrr�rr�r�r�rSr*)r+Z
time_examplesZhhZmm�ssZusecr�Zttupr�r�r#�t_rtrrr rp\s&��zTestTimeTZ.test_fromisoformatc
Cs�|�dddd�}tdd�tdd�tdd	d
�tdddd�tdd
ddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D]P}|j|d�}|��}|j|d��|j�|�}Wd�q�1s�0Yq�dS)Nr�ror�rrDr�rGrKrr�ror�rIrArr�cSsg|]}d|�qSr rr!rrr r!�r�z:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|��qSrrr!rrr r!�r�rr"r$)r+Z	base_timer�r�r�r�r#r�rrr r%vs"
��z&TestTimeTZ.test_fromisoformat_timezonecCsddg}dtjttdd��ttdd��ttddd��g}gd	�}t|�D]�\}}|D]�}|D]�}|d
kr�d|dd}|d
d�|f}|j|d
d|�d|i�}	|	j|d�}
|j|
d��(|j�|
�}|�|	|�Wd�q\1s�0Yq\qTqHdS)N)r�r�r�r)r�r�r�rr�r�rGrKrr�r+r�r�r�rr"rr�r"r,)r+Z
time_basesr�r.r/r�r�Zt_tupler0r�r#r�rrr r1�s(��z'TestTimeTZ.test_fromisoformat_timespecsc
Csxgd�}|D]f}|j|d��F|�t��|j�|�Wd�n1sJ0YWd�q1sh0YqdS)N)r�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:30ar2r3rrrrr rt�s
z#TestTimeTZ.test_fromisoformat_failsc	CsTddt�d�g}|D]:}|�t��|j�|�Wd�q1sD0YqdS)Ns12:30:45z12:30:45rurxrrr ry�sz-TestTimeTZ.test_fromisoformat_fails_typeerrorcCsPGdd�d|j�}|ddddtjd�}|�|���}|�||�|�||�dS)Nc@seZdZdS)z<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNrarrrr rJ�srJr�r�r�i�r)r�rr�rSr�r*rz)r+rJZtscZtsc_rtrrr rq�s
z&TestTimeTZ.test_fromisoformat_subclasscs�G�fdd�d�j�}ddddtddd	�f}�j|�}||id
di��}��|j|���|jd���|jd���|��|�����|�d
�|j|j	d�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z*TestTimeTZ.test_subclass_timetz.<locals>.CrQcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr@rArCr^rr r�s

z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__cSs||j|jSr-rKrFrrr rH�sz2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNrIrr^rr rK�srKrIrDrK��r�r�r"r�rFrQrH)
r�rPr*r9rJr�rbrHr�rtrMrr^r �test_subclass_timetz�s

zTestTimeTZ.test_subclass_timetzN)r:rNrOrr�rur|r}r2r'r�r<r,rpr%r1rtryrqr�rrrr rtcs W
"'
rtc@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"rGrCrIrDrKrF)
r�r*r�r�rKr�rurtr�rr`rrr �test_trivial�szTestDateTimeTZ.test_trivialcsj|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����kWd�n1�s�0YGdd�dt	�}|jddd|�d��|����|����|�ddd��|����Gdd�dt	�}|jddd|�d��|jdddtdd�d��|�t
��fdd��dS)Nr"r`r�rr�rr�r�r�r_rGrCrp��r)rrtr�c@seZdZdd�ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.NaivecSsdSr-rr`rrr rb8r�z>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNrjrrrr �Naive7sr�rDrKrFc@seZdZdd�ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.BoguscSs
tdd�S)Nr�rSrr`rrr rbDsz>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNrjrrrr rCsrcs��kSr-rr�r'r(rr r�Hr�z7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)r�rPrrxr*r�r�rprqrr�)r+r�rrr�r �test_even_more_comparesN���(z%TestDateTimeTZ.test_even_more_comparec	Csd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��tdd�}|j|id|i��}|jdddtddd�d	�}tD]`\}}}|�||�}|�|�}|�||�|�	|j
t�|�|��tdd
��|�|�
�d�q�|�|��|�d��dS)Nr�rGr�r�rr"rr�rrS)r�r�r�r�r*rrrerPrzrrbrrcr~rrr r2Js$



zTestDateTimeTZ.test_picklingcCs�gd�}d}tdd�}|j|id|i��}|D]Z}tD]P}||dd�}|�||�|�|jt�|�|��tdd��|�|��d�q6q.dS)	N)s�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.)rrnrr�r�r"rr�r�rr r!rS)	rer�r$r*rzrrbrrc)r+rir�rrkr&r�r�rrr r'as
z#TestDateTimeTZ.test_compat_unpicklecCsr|jdddtdd�d�}t|�|jtdddddd	td
d�d�}t|�|jdddtdd�d�}|�tt|�dS)
Nr"r`r�rr�rr�r�r�r_rDr^)r�rPr+rrpr�r�rrr �test_extreme_hashes�s�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�rvr�rCrrrFr�rr�rprSz2002-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))
rPrr*rrbrrcr+r�r�)r+rzr�r{r'r(r^r-rrr r|�s8


zTestDateTimeTZ.test_zonesc
CsXtdd�}tddd�}tdddd|d	�}t�||�}|�|tddddddd|d	��dS�
Nr�rvr�rCrIr�r�rr)rPrrrrVr*)r+r{r-r�rarrr r�s
�zTestDateTimeTZ.test_combinec
Csxtdd�}|jddddddd|d	�}|�|��tddd��|�|��tdddd��|�|��tdddd|d	��dSr�)rPr�r*rrra)r+r{rarrr r�s

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��Sr-rr�r{�nowawarerr r��r�z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rrr�rr r��r�cs��Sr-rr)r�rr r��r�rr"r�i.)r�rTr�cs��Sr-rr)r��nowawareplusrr r��r�r_r�Zrandomtimezoner`r�rr�r�r�rti>rSr�r�)r�r{rPrr�rVrr�rr*rarprqrri�	randrangerbrrtr�rr�)
r+Ztz55Z	timeawareZ
nowawareplus2r�Ztzrr;rkr�rtZmaxdiffZtzaZtzbr)r�r{r�r�r �test_tz_aware_arithmetic�sT

��

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)NrQ�42r	rSr�r�rrr�rr8r��weirdtzrCror�z0utcnow(), now(tz), or astimezone() may be broken)r�r{rPr�rr*rbrrprqrrrr�r�rrZfail)r+�methr8�off42�another�againr�r�r�r{r�Znow2rrr �test_tzinfo_nows.

�

zTestDateTimeTZ.test_tzinfo_nowcCs
ddl}|jj}|��}||�}tdd�}|||�}|||d�}|�|j|j�|�|��tdd��|�	t
||d�|j	t
||dd�|j	t
|||d�|�	t
||||�|�	t
|�d	}t�|�}	td
dd�}
t|
d
d�}|	|
}t�||�}
|�||
j
dd��dS)NrrQr�r	rSr�rr�rFi��'r�r�)rr�r�rPr�rr*rbrrprqrr�r�)r+rr�r�r8r�r�r�rWZutcdatetimerbr�rkr;rrr �test_tzinfo_fromtimestamp's*


z(TestDateTimeTZ.test_tzinfo_fromtimestampcCs:|jj}|�}tdd�}|�t||�|jt||d�dS)NrQr�r)r�r�rPrprq)r+r�r8r�rrr �test_tzinfo_utcnowJs

z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}|��}||�}tdd�}|�t|||�|jt|||d�dS)NrrQr�r)rr�r�rPrprq)r+rr�r�r8r�rrr �test_tzinfo_utcfromtimestampTs
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�}||_dSrR�rUrVr�dstvalue�r+r�rrr r\ds

z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__cSs|jSr-�r�r`rrr rdhsz5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN�r:rNrOr\rdrrrr �DSTcsr�))����r")r�r")rr)Nr�r"r#r�rorwrrr�r`r_r�r^)rr�r�r*rrrrrrrrrrprqr�)r+r�r7r��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�}||_dSrRr�r�rrr r\�s

z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__cSs|jSr-r�r`rrr rd�sz1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dstN)rr�rrrr r��s
r�r"rrcs"eZdZd�fdd�	Zdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNcs��||�t|d�|_dSrR)r\r�uofs)r+r�Zdofs�r�rr r\�sz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__cSs|jSr-)r�r`rrr rb�sz8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffset)NrWrr�rr �UOFS�sr�)r�r�rNrGrCr#r�rorwi���rnrpr�c@seZdZdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFScSsdSr-rr`rrr rb�sz8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNrjrrrr �NOFS�sr�c@seZdZdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFScSsdS)Nr�rr`rrr rb�sz8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNrjrrrr �BOFS�sr�r�r�rr�i+�r�r`r�rr�r�r�r_)#rr�rprurbZutctimetupler*r�rr�rrKrrrrtrr�rr�rrrr�rqrr�r�rtr�rrrGrr�)r+r7r�r�r-r�r�r�r�ZdtzrJZhugerr�r �test_utctimetuple�s\��  �z TestDateTimeTZ.test_utctimetuplecCstdd�}tdd�}tdd�}tdd�}|j}d}d||||fD]�}d	D]�}|d
ddd
dd||d�}	d|rndppd}
|dur�|	��p�d}|
|}|	��}
|�|
|d|�|�|
|	�d��|�|	�d�|d|�|�|	�d�|d|�|�t|	�|d|�qHq@dS)Nrr���z+03:40i���z-03:51r�z
0001-02-03)riyr"rGrCrIrDr�rz04:05:59z.987001rY�kuሴr�)rPr�rcr�r*r�)r+rZplusZminus�unknownr7ZdatestrZofsrr-ZtimestrZofsstrZtailstrZisorrr �test_tzinfo_isoformat�s$



z$TestDateTimeTZ.test_tzinfo_isoformatc	Cs6|j}tdd�}ttdd�d�}dddd	d
dd|g}||�}|�||���d
}dddddddd|ffD]L\}}|dd�}	||	|<||	�}
|jfi||i��}|�|
|�|d7}qh|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|ddd�}|j	t
|jdd�dS)Nr#r�r�rSr�r"rGrCrIrDrKrFrr1r2r3rrrrrrr�r�r�r4r�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�NonerZ44rDr�Zm300r	r�r)rPrr�r{r�rrpr�rr*rrrbr�ra)r+ZfnoneZf44mZfm5hrar�r;rkrrr �test_more_astimezones*


z#TestDateTimeTZ.test_more_astimezoner�cCs4|j�tj�}|�|�d�|�|�|��|�dSr-)r�r{rr�r*rr`rrr �test_astimezone_default_utc-sz*TestDateTimeTZ.test_astimezone_default_utcr�cCs�|jdddddtjd�}|��}|�||�|�|�d�d�|jdddd	dtjd�}|��}|�||�|�|�d�d
�dS)Nr=rnrIrKrorrz	-0500 ESTrDz	-0400 EDT)r�rr�rr*r�)r+rar�rrr �test_astimezone_default_eastern5sz.TestDateTimeTZ.test_astimezone_default_easterncCs8tddddtjd�}|��}|��}|�|j|j�dS)Nrrnr"rDr)rrr�rr*r)r+r�r�rBrrr �!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]�}||}	||u�s||u�r4||u�s*||u�r4td�}
nF||u�rL|u�rZnn
td�}
n ||u�rptdd
�}
n
tdd
�}
|�|	|
�q�q�dS)Nc@seZdZdd�ZdS)zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetcSs$|jdkrt|jd�Stdd�SdSrmrnr�rrr rbNs
zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNrjrrrr roMsror�rAr#rnr�rpr�rrCrIrSrpri���r�)r�rr�rrur*)r+r7ror8rqrhr�r�r�r;rkrrr �test_aware_subtractHs4	(



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"rGrCrIrDrKrFrr�rc@seZdZdd�Zdd�ZdS)z1TestDateTimeTZ.test_mixed_compare.<locals>.VariescSstdd�|_dSr�r\r^rrr r\�sz:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd�7_|jSr�r�r�rrr rb�sz;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNrWrrrr r��sr�r�rSr�)	rr*r�rPr�rrbrrxr�rrr r,ts$z!TestDateTimeTZ.test_mixed_comparecs�G�fdd�d�j�}ddddddd	td
dd�f}�j|�}||id
di��}��|j|���|jd���|jd���|��|�����|�d�|j|j	d�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z2TestDateTimeTZ.test_subclass_datetimetz.<locals>.CrQcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr@rArCr^rr r�s

z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__cSs||j|jSr-)r�r�rFrrr rH�sz:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNrIrr^rr rK�srKr�r�rrIrDrKr�r�r�r"r�rFrQrH)
r�rPr*r9rJr�rbrHr�r�rMrr^r �test_subclass_datetimetz�s

z'TestDateTimeTZ.test_subclass_datetimetzN)r:rNrOrr�r�r�r2r'r�r|rrr�r�r�r�r�r�r�r�r<r�rr9r�r�r�r�r,r�rrrr r��s8E%A%#
$P'



,r�cCs d|��}|r|t|�7}|S)NrK)r�r)raZ
days_to_gorrr �first_sunday_on_or_after�sr�rSr�r�rIrGr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
USTimeZonecCs"t|d�|_||_||_||_dS�Nr��r�	stdoffset�reprname�stdname�dstname�r+r�r�r�r�rrr r\�szUSTimeZone.__init__cCs|jSr-�r�r^rrr r_�szUSTimeZone.__repr__cCs|�|�r|jS|jSdSr-�rdr�r�r`rrr rc�s
zUSTimeZone.tznamecCs|j|�|�Sr-�r�rdr`rrr rb�szUSTimeZone.utcoffsetcCsf|dus|jdurtSttj|jd��}ttj|jd��}||jdd�krV|kr^nntStSdS�Nr4r)rr�r��DSTSTARTr�r��DSTENDr��r+rarG�endrrr rd�s zUSTimeZone.dstN�r:rNrOr\r_rcrbrdrrrr r��s
r�r�r�r�rrL�CentralZCSTZCDTrH�MountainZMSTZMDTi�����PacificZPSTZPDTr�i0���ZUTCfakec@sdeZdZedddd�Zedddd�ZeZdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestTimezoneConversionsr�rIrFrGr#rr"c
Cs|�|��t�|�|�|�|�|�|�}|�|�}|��|��kr�|jdkr�|�|t|�|�|��t�|�|�|�|�|��n|�||�|t}|�|�}	|��|��kr�|jdkr�|�|	|jdd��|t7}|�|�}	|�|	|jdd��n|�|	|t�dS)NrGrr"rH)r*rdr�rrr�r�r�)
r+rar�r��dston�dstoff�asutc�there_and_backZnexthour_utcZnexthour_tzrrr �checkinside�s&


�


z#TestTimezoneConversions.checkinsidecCsF|�|��t�|�|�|�|�|�|�}|�|�}|�||�dSr-)r*rdr�r)r+rar�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)Nrrpr�r"rSr�)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�dSr-)r�r��utc_realr��utc_faker^rrr �	test_easyPs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)NrIr�i��z-0900rrrCrHrK�r�rr"rG)rr"r"rG�rror�rI)
r�rrPr�rr�r*r�r�r�r�rbr�)r+ZfourbackZninewestrkr;Zsixutcr�r�Zfirst_std_hourr�Z	asutcbaseZtzhourZexpectedbaseruZastzrrr �test_trickyhs0
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>.okcSstSr-�r�r`rrr rb�r�z<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetcSstSr-r�r`rrr rd�r�z6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNr
rrrr �ok�sr�rc@seZdZdd�ZdS)z5TestTimezoneConversions.test_bogus_dst.<locals>.notokcSsdSr-rr`rrr rd�r�z9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN�r:rNrOrdrrrr �notok�sr�c@seZdZdd�ZdS)z<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokcSs|jdkrdSdtSdS)Nr�r#)r�r�r`rrr rd�s
z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dstNr�rrrr �tricky_notok�sr�r�r")rr�r{r�r�rrpr�)r+r�r{r�r�rarrr �test_bogus_dst�s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
||jSr-)r�r`rrr r��szDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN�r:rNrOr�rrrr �FauxUSTimeZone�sr�r��FEasternZFESTZFEDTrIr�)r�rr"rCrIrDrHr�r"r�)rr"r"rGrCrI)rprqr�r�rr�r�r�r�r*rrr�r�r�rr�rr�r�)
r+r{Zenowr�r�rGZfstartZwallrkr;rrr r��sL







z$TestTimezoneConversions.test_fromutcN)r:rNrOrr�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��kSr-rr�Zas_dateZas_datetimerr r�r�z+Oddballs.test_bug_1028306.<locals>.<lambda>cs��kSr-rrr�rr r�r�cs��kSr-rrr�rr r�r�cs��kSr-rrr�rr r�r�cs��kSr-rrr�rr r�r�cs��kSr-rrr�rr r�r�cs��kSr-rrr�rr r�r�cs��kSr-rrr�rr r�r�Tr"r�)rKFr)rr�rrVrrxr�rprqr*�__eq__rKr�r�r�r�r�)r+Z
different_dayZas_differentZdate_scZdatetime_scrr�r �test_bug_1028306�s4

�zOddballs.test_bug_1028306c	Cs^t��t�t��t�t�tt��fD]4}|�t	��d|_
Wd�q$1sN0Yq$dSrM)rr�rrr�rrrrp�AttributeErrorr$)r+r�rrr �test_extra_attributess�zOddballs.test_extra_attributesc
Cs�Gdd�d�}t�d�t�d�|d�fD]Z}|�t��<|�tddddddd�t|||||||��Wd�q(1sx0Yq(|�td��tddd�Wd�n1s�0Y|d�}|�td��tdd|�Wd�n1s�0YGd	d
�d
t�}|d�}|�td��tdd|�Wd�n1�sD0Y|�	t��tddd�Wd�n1�s|0Y|�	t��tddd�Wd�n1�s�0Y|�	t��tddd�Wd�n1�s�0Y|�	t��tdddd�Wd�n1�s&0Y|�	t�� tddddd�Wd�n1�sb0Y|�	t��"tdddddd�Wd�n1�s�0Y|�	t��$tddddddd�Wd�n1�s�0YdS)
Nc@seZdZdd�Zdd�ZdS)z-Oddballs.test_check_arg_types.<locals>.NumbercSs
||_dSr-��value)r+r�rrr r\)sz6Oddballs.test_check_arg_types.<locals>.Number.__init__cSs|jSr-r�r^rrr �__int__+sz5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r:rNrOr\r�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>.FloatNrarrrr �Float>sr�z&^integer argument expected, got float$g$@)
�decimalZDecimalZassertWarns�DeprecationWarningr*rrrqr�rp)r+r��xxZf10r�Zs10rrr �test_check_arg_types's@��$**,,,,.02zOddballs.test_check_arg_typesN)r:rNrOr�r�rrrrr r��s%
r�c@seZdZdd�ZdS)�tzinfo2cCs�t|t�std��|j|ur$td��|jdd���}|jdd���}|dus`|dus`|��durdt�||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)rUrrqrr�r�rbrd)r+raZoff0Zoff1�ldtZoffrrr r�[s*


ztzinfo2.fromutcNr�rrrr rYsrc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�USTimeZone2cCs"t|d�|_||_||_||_dSr�r�r�rrr r\}szUSTimeZone2.__init__cCs|jSr-r�r^rrr r_�szUSTimeZone2.__repr__cCs|�|�r|jS|jSdSr-r�r`rrr rc�s
zUSTimeZone2.tznamecCs|j|�|�Sr-r�r`rrr rb�szUSTimeZone2.utcoffsetcCs�|dus|jdurtSttj|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 rd�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�rKr�rmrr��rr^rrr �	_utc_fold�s�zEurope_Vilnius_1941._utc_foldcCs$tdddd|d�tdddd|d�gS)NrrKr�rr�rr
r^rrr �	_loc_fold�s�zEurope_Vilnius_1941._loc_foldcCs>|��\}}||krdtS||kr6|jr.dndtSdtS)NrCrG�rr�r��r+raZ
fold_startZ	fold_stoprrr rb�szEurope_Vilnius_1941.utcoffsetcCs>|��\}}||krdtS||kr6|jr.dndtSdtS)Nrr"rrrrr rd�szEurope_Vilnius_1941.dstcCs.|��\}}||krdS||kr*d|jSdS)N�MSK)r�CESTr)rr�rrrr rc�s
zEurope_Vilnius_1941.tznamecCsV|jdkrt�|��\}}||kr.|dtS||krJ|dtjdd�S|dtS)NrrCrGr"r�)r�rurr�r�rrrr r��s
zEurope_Vilnius_1941.fromutcN)	r:rNrOrrrbrdrcr�rrrr r�s			rc@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rKr�r�r�rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rrmz"Mon Jun 23 23:00:00 1941 CEST+0200r"r�z"Tue Jun 24 00:00:00 1941 CEST+0200)rrrr�rr*r�r�r�rdrx)r+�Vilnius�gdtrrrr �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rKr�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)rrrrr�r*r�)r+rrrrrr �test_vilnius_1941_toutcs*����z3TestLocalTimeDisambiguation.test_vilnius_1941_toutccCsxtddd�}tddddd�}|�|jd�|�|jd�|�t��"tdddddd�Wd�n1sj0YdS�Nrr"r�)rrr*r�rprq�r+r�rarrr �test_constructors"sz-TestLocalTimeDisambiguation.test_constructorscCs@tddddd�}|��}|�|jd�|��}|�|jd�dS)Nr"r�)rrr*r�ra)r+rar�rrr �test_member*s
z'TestLocalTimeDisambiguation.test_membercCs�td�}tddd�}|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|jdtd�}|jdtd�}|�|jdd�jd�|�|jdd�jd�|�t��|jdd�Wd�n1s�0Y|�t��|jdd�Wd�n1�s0Y|�t��"|�ddddd�Wd�n1�sV0Y|�t��*|�ddddddddd�	Wd�n1�s�0YdS)Nrr"r�)r�rrrG)	rrr*r�r�r�rpr�rqrrrr r<1s$*,2z(TestLocalTimeDisambiguation.test_replacecCs@td�}tddd�}|�||jdd��|�||jdd��dSr)rrr*r�rrrr r�Hsz+TestLocalTimeDisambiguation.test_comparisoncCsPtd�}tddd�}|�t|�t|jdd���|�t|�t|jdd���dSr)rrr*r+r�rrrr �	test_hashNsz%TestLocalTimeDisambiguation.test_hashr�cCs<d}t�|�}t�|d�}|�|jd�|�|jd�dS)NiX�UTrrr")rr�r*r�)r+rB�dt0rrrrr r�Ts

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�r;rr�r*r�)r+�tmrBr�r'rrr �test_fromtimestamp_lord_howe\s


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs|�t�d�jd�dSr�)r*rr�r�r^rrr �%test_fromtimestamp_low_fold_detectionlszATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tddddd�}|jdd�}|�|��d|���dS)NrlrnrGr"ror�r)rr�r*rW)r+rrrrrr �test_timestampqs
�z*TestLocalTimeDisambiguation.test_timestampcCsht�d�}t�d|�dkr$|�d�tddddd	�}|jd
d���}|jdd���}|�|d|�dS)
Nrr r!r"rrIrDr"r�rr�r#)r�r�r�r;rr�rWr*)r+r$r��s0�s1rrr �test_timestamp_lord_howexs

z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tddddd�}|jdd�}|��}|��}|�|��d�|�|��d�|�|t|�|�|jd	�|�|jd	�dS)
NrlrnrGr"ror�rr�r)rr�rr*rcr�r�)r+rrrZadt0Zadt1rrr r�sz+TestLocalTimeDisambiguation.test_astimezonec	Csztdd�}tddddd�}tD]V\}}}||fD]B}|�||�}|�|�}|�||�|�|dkrfdn|j|j�q0qdS)Nr"r�rIr)rrr�r�r�r*r�)	r+r�rar�r�rr�rBr�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�rrrr r��s

�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#rr"rrGr�r�rIrF)	rrrrDr*rdr�r�r�)r+�	dt_summer�	dt_winterrurarrr r��sz$TestLocalTimeDisambiguation.test_dstcCs�tddddtd�tj}tddddtd�}|�|��dt�|�|��dt�|�|jdd	���dt�|�|jdd	���dt�dS)
Nr�r#rr"rrGrJr�r�)rrrrDr*rbr�r�)r+r,r-rrr r��s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#rrKrrFrIrDrror")r�rm)rr"rG)rKrm)
rrrrDr�r*r�r�rKr�)	r+Zu_summerZu_winterZt_summerZt_winterr�r�r'r�rrr r��s0






z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd�}|�||�tj��tdddtd�}|�||�tj��dS)Nr�r"rrK)rrr*rrr�r�rrr �test_mixed_compare_regular�sz6TestLocalTimeDisambiguation.test_mixed_compare_regularcCs<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�r#rr"r�r�rrrrr�r�)r+�t_foldZ
t_fold_utcrrr �test_mixed_compare_fold�sz3TestLocalTimeDisambiguation.test_mixed_compare_foldcCs<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�rIrFrGr�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#rr�rIrFrG)rrr*r+r�)r+r�r0r2rrr �test_hash_aware�sz+TestLocalTimeDisambiguation.test_hash_awareN)r:rNrOrrrrr<r�rrr9r�r%r&r'r*rr+r�r�r�r�r.r1r3r4rrrr r�s6



	


!rcCs"t�|�\}}t|d�t||�Sr-)r��tee�nextr�)�iterabler	r
rrr �pairss
r8c@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||_||_|�||�|_dSr-)�ut�ti�invertr)r+r:r;rrr r\s	zZoneInfo.__init__cCs�td|�td|�f}|r�|ddt}|dd|7<|dd|7<tdt|��D]H}|d|||ddt7<|d|||dt7<q^|S)Nr|rr")r�SECrr,)r:r;rr[r
rrr r<s$"zZoneInfo.invertc	CsH|�d���dkrtd��|�d�td�}|�|d�tjdkrJ|��td�}|�||d�tjdkrt|��td	�}|�||d�g}t	|d
�D]}|�
t�d|�d���q�|�|d
�}t
|�D]:\}\}}	}
||
|�d|
����}td|�|	|f||<q�dgt|�}t
|�D]\}}
||
||<�q"|||�}|S)NrIZTZifznot a zoneinfo fileror
rCr
rr�r"z>lbbrKrG)�read�decoder��seekr�fromfiler8�	byteorder�byteswaprr��struct�unpackr-�findrr,)r7�fileobj�countsr:Ztype_indicesZttisr
ZabbrsZgmtoff�isdstZabbrind�abbrr;�idxr+rrr rA$s2



zZoneInfo.fromfilecCsHtj�|j|�}t|d��}|�|�Wd�S1s:0YdS)N�rb)�os�path�join�zoneroot�openrA)r7r6rNr�rrr �fromnameIszZoneInfo.fromnamer.r"cCs�t|t�std��|j|ur$td��|��|jd|jd|jd|j	}||j
dkrn|jd}d}nPt�
|j
|�}|j|d|�\}}|d|d}|td||j
|d�k}||d7}|r�|jdd	�S|SdS)
Nrrr�rr�r"rrGr�)rUrrqrr�r��EPOCHORDINALr�rurtr:r;�bisect�bisect_rightrr�)r+rarWZttir�rKZtti_prev�shiftrrr r�Qs,

���
zZoneInfo.fromutccCs\|��|jd|jd|jd|j}|j|j}t�||�}|j	t
d|d�|S)Nr�rr�rr")r�rSr�rurtrr�rTrUr;rt)r+rar
rWrrKrrr �_find_tios���zZoneInfo._find_ticCs|�|d�Sr��rWr`rrr rbyszZoneInfo.utcoffsetcCs|�|d�}|rtStSrM)rWr�r�)r+rarIrrr rd|szZoneInfo.dstcCs|�|d�S)NrGrXr`rrr rc�szZoneInfo.tznameNccs�|dur|j}tj�|d�}zt|�}Wnty<YdS0|�>|D](}|��}|rH|�d�sH|��dVqHWd�n1s�0YdS)Nzzone.tab�#rG)	rPrMrNrOrQr��stripr4r�)r7ZzonedirZzone_tabr��linerrr �	zonenames�s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)
rrtr�rr�r\rR�transitions�printr[)r7�
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�rarVZtrans_countsrrr �stats�sZ





�zZoneInfo.statsccsHtt|j|j��D]0\\}}\}}|d|d}t�|�|fVqdSr�)r8r�r:r;rr��r+�_Zprev_tir�r;rVrrr r]�s"zZoneInfo.transitionsccsntt|j|j��D]V\\}}\}}|d|d}|tkr|d|dkrt�|�||d|dfVqdS)Nrr"rG)r8r�r:r;r�rr�rcrrr �nondst_folds�s"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\rRrer�r^)
r7Z	same_abbrr_r`rar�rarVZ	prev_abbrrJrrr �print_all_nondst_folds�s
�zZoneInfo.print_all_nondst_foldsccs*|��D]\}}|tkr||fVqdSr-�r]r��r+r�rVrrr �folds�szZoneInfo.foldsccs(|��D]\}}|tkr||fVqdSr-rgrhrrr �gaps�sz
ZoneInfo.gapsccs |��D]\}}|s|VqdSr-)r]rhrrr �zeros�szZoneInfo.zeros)N)r")Fr")r:rNrOrPr\r]r<�classmethodrArRrr�rSr�rWrbrdrcr\rbr]rerfrirjrkrrrr r9	s2


$

0r9c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�ZoneInfoTestzAmerica/New_Yorkc
Csxtjdkr|�d�tjdkr(|�d�zt�|j�|_Wn8tyr}z |�d|j|f�WYd}~n
d}~00dS)NZvxworksz"Skipping zoneinfo tests on VxWorksr�z"Skipping zoneinfo tests on WindowszSkipping %s: %s)r8r;r;r9rRrar��FileNotFoundError)r+�errrrr r��s



zZoneInfoTest.setUpcCs<|�|jdd�|jt|j�f|jdd�|jt|j�f�dS)Nr)r*r�r��idr)r+r	r
rrr �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�rirrDr�r�r*r�rr�rrqrb�	r+r�rarVr��udtrZadtrbrrr �
test_foldss$�
zZoneInfoTest.test_foldsc	Cs.|j}|��D�]\}}d|d||tjfD]�}||}|j|d�}|�|�}|�|jd�|jtj	d��
|�}|�||�|��}|�|jdd�|jdd�|�|�|j|d��||}|�
|jdd���|jdd���d|�q0tj|fD],}||}|�|j|d��}|�|jd�q�qdS)Nrr�rr"r�zAt %s.)r�rjrrDr�r�r*r�rr�rrqrbZ
assertLessrrrrr �	test_gapss(
 �zZoneInfoTest.test_gapsc	Cs�d|jvs|j�d�r&|�d|j�|j}tj�d�}|jtjd<�z4t��|�	�D]�\}}|j
dkrp�qR|tddd�t}|t}dd	d
d|d|d|d
fD]J}||}t�
|�}	t�
||�jdd�}
|�|	|
�|	��}|�||�q�|dkrXt�
|�|d}|��}
|jdd���}|�|
||d�|�|||d�qXW|du�rhtjd=n
|tjd<t��n(|du�r�tjd=n
|tjd<t��0dS)NZRiyadh8zright/zSkipping %s�TZi�r.r"i���i��r�ri@i�2rrGr�)rar4r;r�rM�environ�getr��tzsetr]r�rr=r�r�rqrWr*)r+r�rvrsrVr(r�r�rBZsdtZtzdtr)raZts0Zts1rrr �test_system_transitions-sJ

�
�




�


z$ZoneInfoTest.test_system_transitionsN)	r:rNrOrar�rqrtrurzrrrr rm�s
rmcseZdZ�fdd�Z�ZS)�ZoneInfoCompleteTestcshg}td�rXt��D]B}td|tfi�}||_t|�D]}|�d�r8|�||��q8qt	��
|�dS)NZtzdatazZoneInfoTest[%s]Ztest_)r
r9r\r�rmrar.r4r��superr\)r+rir6ZTest�method�r9rr r\[s
zZoneInfoCompleteTest.__init__)r:rNrOr\�
__classcell__rrr~r r{Zsr{c@seZdZdZdS)�IranTestzAsia/TehranN)r:rNrOrarrrr r�gsr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�CapiTestcCs$|jj�d�r|�d�t��dS)NZPurezNot relevant in pure Python)r9r:r5r;�	_testcapiZtest_datetime_capir^rrr r�ls
zCapiTest.setUpc	CsRdD]H}t�|�}|j|d��|�|tj�Wd�q1sB0YqdS)N�TF)�	use_macro)r�Zget_timezone_utc_capir�r�rr�)r+r�Zcapi_utcrrr �
test_utc_capius
zCapiTest.test_utc_capic
	Cs�t��\}}}ttdd�d�}ttdd��}d||fd||fd||fg}|D]�\}}}	|j|d���|�||	�tdd	d
|d�}
tdd	d
|	d�}|�|
|�|�|
��|���tdd	d
dtjd�}|�|
�	tj�|�Wd�qL1s�0YqLdS)
Nr�r�r��est_capi�	est_macro�est_macro_nn)r6r�rGrIrrD)
r�Zmake_timezones_capirrr�r*rrcr�r)
r+r�r�r�Z	exp_namedZexp_unnamed�casesr6Ztz_actZtz_exprrr�rrrr �test_timezones_capi|s �zCapiTest.test_timezones_capic
Cs�Gdd�dt�}t|fD]~}dD]t}||�}|j||d��Jt�|�\}}}|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z=CapiTest.test_PyDateTime_DELTA_GET.<locals>.TimeDeltaSubclassNrarrrr �TimeDeltaSubclass�sr�)�r��7韆r��r7r)rr�r�ZPyDateTime_DELTA_GETr*r�r�r�)r+r��klassr�r-r�r�r�rrr �test_PyDateTime_DELTA_GET�sz"CapiTest.test_PyDateTime_DELTA_GETc
Cs�Gdd�dt�}t|fD]~}dD]t}||�}|j||d��Jt�|�\}}}|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z2CapiTest.test_PyDateTime_GET.<locals>.DateSubclassNrarrrr rb�srb))r�r"rG)r=rGr�r�)rr�r�ZPyDateTime_GETr*r�r�rK)r+rbr�r�r-r�r�rKrrr �test_PyDateTime_GET�szCapiTest.test_PyDateTime_GETc	
Cs�Gdd�dt�}t|fD]�}dD]�}||�}|j||d��Zt�|�\}}}}|�||j�|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z;CapiTest.test_PyDateTime_DATE_GET.<locals>.DateTimeSubclassNrarrrr rn�srn)���r�r�r�r�r�r�r�r�)	rr�r�ZPyDateTime_DATE_GETr*r�rurtr�)	r+rnr�r�r-r�rurtr�rrr �test_PyDateTime_DATE_GET�sz!CapiTest.test_PyDateTime_DATE_GETc	
Cs�Gdd�dt�}t|fD]�}dD]�}||�}|j||d��Zt�|�\}}}}|�||j�|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z7CapiTest.test_PyDateTime_TIME_GET.<locals>.TimeSubclassNrarrrr rJ�srJ)�r�ror�r#r�r�)	rr�r�ZPyDateTime_TIME_GETr*r�rurtr�)	r+rJr�r�r-r�rurtr�rrr �test_PyDateTime_TIME_GET�sz!CapiTest.test_PyDateTime_TIME_GETcCst��\}}}|jdd��|�|tj�Wd�n1s>0Y|jdd��|�|tj�Wd�n1sx0Y|jdd��z|�|tj�ttdd�d�}|�||�t	dd	d
|d�}t	dd	d
|d�}|�||�|�|�
�|�
��Wd�n1�s0YdS)N�utc0)Ztestname�utc1�non_utcrr�r�r�rGrIr)r�Zget_timezones_offset_zeror�r�rr�r�rr*rrc)r+r�r�r�Znon_utc_exprrr�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]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z.CapiTest.test_check_date.<locals>.DateSubclassNrarrrr rb�srb��r"T�
2011-01-01r�rr���arg�exact)
rrr�Zdatetime_check_daterxr�r�r�rrr�rr�)	r+rbr-ZdsraZis_dater�r�r�rrr �test_check_date�s$�zCapiTest.test_check_datec
Cs�Gdd�dt�}tdd�}|dd�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtd�tj	t
ddd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z.CapiTest.test_check_time.<locals>.TimeSubclassNrarrrr rJsrJr�roTr"r�r�r�r�)rr�Zdatetime_check_timerxr�r�r�rrr�rr�)r+rJr�r�Zis_timer�r�r�rrr �test_check_times

�zCapiTest.test_check_timec
Cs�Gdd�dt�}tddddd�}|ddddd�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtd�tj	t
ddd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNrarrrr rnsrnr�r"r�roTr�r�r�)rr�Zdatetime_check_datetimerxr�r�r�rrr�rr�)r+rnrarZis_datetimer�r�r�rrr �test_check_datetimes�zCapiTest.test_check_datetimec
Cs�Gdd�dt�}td�}|d�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtjt	ddd�t
ddd�g}|D]L}dD]B}|j||d�� |�|||��Wd�q�1s�0Yq�q�dS)	Nc@seZdZdS)z4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNrarrrr r�8sr�r"Tr�r�r�r�)rr�Zdatetime_check_deltarxr�r�r�rr�rrr�)r+r�r�ZtdsZis_timedeltar�r�r�rrr �test_check_delta7s�zCapiTest.test_check_deltac	
CsGdd�dt�}t�}|�}ttdd��}tj}|�||��|�||��|�||��|�||d��|�||d��|�||d��t�t�ddt	ddd�t
ddd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNrarrrr �TZInfoSubclassRsr�r�r�Tr"r�r�r�r�)rrrr�Zdatetime_check_tzinforxr�r�r�rrr�)	r+r�r�Ztzisr�Z	is_tzinfor�r�r�rrr �test_check_tzinfoQs$�zCapiTest.test_check_tzinfoc	Cshtddd�}dD]R}|j|d��2t�||j|j|j�}|�||�Wd�q1sX0YqdS)Nr�r�r��FT��macro)rr�r�Zget_date_fromdater�r�rKr*�r+�exp_dater��
c_api_daterrr �test_date_from_datens�zCapiTest.test_date_from_datecCs�tddddddd�}dD]b}|j|d	��Bt�||j|j|j|j|j|j	|j
�}|�||�Wd�q1sp0YqdS)
Nr�r�r�r�r�r�r�r�r�)rr�r�Zget_datetime_fromdateandtimer�r�rKr�rurtr�r*r�rrr �test_datetime_from_dateandtime{s�
z'CapiTest.test_datetime_from_dateandtimecCs�tddddddd�}dD]�}d	D]x}|j||d
��Vt�||j|j|j|j|j|j	|j
|j�	}|�||�|�|j|j�Wd�q 1s�0Yq qdS)Nr�r�r�r�r�r�r��rr"r��r�r�)
rr�r�Z#get_datetime_fromdateandtimeandfoldr�r�rKr�rurtr�r�r*)r+r�r�r�r�rrr �%test_datetime_from_dateandtimeandfold�s"�z.CapiTest.test_datetime_from_dateandtimeandfoldc	Csntdddd�}dD]V}|j|d��6t�||j|j|j|j�}|�||�Wd�q1s^0YqdS)Nr�r�r�r�r�r�)	rr�r�Zget_time_fromtimer�rurtr�r*)r+�exp_timer��
c_api_timerrr �test_time_from_time�s�zCapiTest.test_time_from_timecCs�tdddd�}dD]v}dD]l}|j||d��Jt�||j|j|j|j|j�}|�	||�|�	|j|j�Wd�q1s|0YqqdS)Nr�r�r�r�r�r�r�)
rr�r�Zget_time_fromtimeandfoldr�rurtr�r�r*)r+r�r�r�r�rrr �test_time_from_timeandfold�s�z#CapiTest.test_time_from_timeandfoldc	Cshtddd�}dD]R}|j|d��2t�||j|j|j�}|�||�Wd�q1sX0YqdS)Nr�r�r�r�r�)rr�r�Zget_delta_fromdsur�r�r�r*)r+Z	exp_deltar�Zc_api_deltarrr �test_delta_from_dsu�s�zCapiTest.test_delta_from_dsuc	Csntddd���}dD]T}|j|d��4t�t|�|�}|�|tddd��Wd�q1s^0YqdS)N��rIr�r�r�)rrWr�r�Zget_date_fromtimestamprVr*r)r+r�r�r-rrr �test_date_from_timestamp�s
z!CapiTest.test_date_from_timestampc
Cs�dddttdd��dfddd	ttdd��dfg}tj}|D]z}d
D]p}|j||d��N|\}}}t|d|i�}t|���}	||	|||�}
|�||
�Wd�qB1s�0YqBq:dS)
N)�r�rIr�NF)r�NTr�r"r�T)�r�rIr�r�roNF)r�NTr�r�)�caser�r)	rrr�Zget_datetime_fromtimestampr�rrVrWr*)r+r�r�r�r�ZdtuprZusetzZdt_origr�rorrr �test_datetime_from_timestamp�s �	
z%CapiTest.test_datetime_from_timestampN)r:rNrOr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r�ks*	

	r�cCs|�t��|Sr-)ZaddTestr{)�loaderZstandard_tests�patternrrr �
load_tests�sr��__main__)krvr�rTr�r�r8rMrrir5rDr:r�operatorrrrrrrr	r
r�testrZtest.supportr
rrrrr)rrrrrrrr�r�r�r��_loadsr$rr�r�r5r�rNrZTestCaser'rPrerhrkr�r�r�r�r�r�r�r�r<r>r?rPrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr	r
rrr=r8r9rmZ	TestSuiter{r�r�r�r:�mainrrrr �<module>s�,�8_A3=!a"<


*c"32
gk



Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists