HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/datetimetester.cpython-310.opt-2.pyc
o

�i���@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�rFe�j�dSdS)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�0/usr/local/lib/python3.10/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�r
t|d�}t|t�rt|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__}�
zFixedOffset.__repr__cC�|jSr-)rW�r+�dtrrr �	utcoffset�zFixedOffset.utcoffsetcCrar-)rXrbrrr �tzname�rezFixedOffset.tznamecCrar-)rYrbrrr �dst�rezFixedOffset.dstN�rQ)r:rNrOr\r_rdrfrgrrrr rPss
rPc@seZdZddd�Zdd�ZdS)�PicklableFixedOffsetNcCst�||||�dSr-)rPr\rZrrr r\�szPicklableFixedOffset.__init__cCrar-)�__dict__r^rrr �__getstate__�rez!PicklableFixedOffset.__getstate__)NNN)r:rNrOr\rkrrrr ri�s
ric@�eZdZdd�ZdS)�_TZInfocCst��Sr-)�random)r+r)rrr rd�sz_TZInfo.utcoffsetN�r:rNrOrdrrrr rm��rmc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
TestTZInfoc	CsTt�}tddddddd|�}|�t��
|��Wd�dS1s#wYdS)N��rF��� rCr)rmr�assertRaises�	TypeErrorrd)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�maxrv�NotImplementedErrorrfrdrg)r+Zuselessrcrrr �test_non_abstractness�s
z TestTZInfo.test_non_abstractnesscCsrGdd�dt�}|�t|t��|dd�}|�|t�t��}|�t|j|�|�t|j	|�|�t|j
|�dS)Nc@rl)z9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughcSs||_||_dSr-)Z_NotEnough__offsetZ_NotEnough__name)r+r[r6rrr r\�s
zBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r:rNrOr\rrrr �	NotEnough�rpr}rCZNotByALongShot)r�
assertTrue�
issubclass�assertIsInstancer�nowrvr{rfrdrg)r+r}rrcrrr �test_subclass_must_override�s
z&TestTZInfo.test_subclass_must_overridecCsntdd�}|�|t�t��dfD]#}|�|�|�tdd��|�|�|�d�|�|�	|�tdd��qdS)NrCZThreerSrQ)
rPr�rrr�r*rdrrfrg)r+�forcrrr �test_normal�s
�zTestTZInfo.test_normalcCsTt�t�}|�t|�t�tD]\}}}|�||�}|�|�}|�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]0\}}}|�||�}	|�|	�}
|�|
t�|�t|
�|�|�|
�	d�|�|�|
�d�|�qDqdS)N����rS�cookie�EST)
rrirrfr�rr�r�r*rdr�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>.UKSummerTimec��Sr-rrb)�	DSTOFFSETrr rd��z:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetcr�r-rrb)�DSTDIFFrr rg�r�z4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstcS�dS)N�UKSummerTimerrbrrr rf�r�z7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN�r:rNrOrdrgrfr�r�r�rr r��s
r�rrrI��r)rrr�fromutcr*rd)r+r��tz�u�trr�r �test_issue23600�s
zTestTZInfo.test_issue23600N)
r:rNrOryr|r�r�r�r�r�rrrr rq�s
rqc@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��qdSr-)	r�r�r�utc�minrzr*�strrf�r+r�rrr �test_str�s
��zTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|�}|�|t	|��qdSr-)
r)r�r�rr�r�rz�reprr*�eval)r+rr�Ztzreprrr �	test_repr�s��zTestTimeZone.test_reprcCsNtddd�}|�tj�d�t�|�tj�d�|�|�tj�d�|�dS)N��;�r�rT)rr*rr�rd�ZEROr�rz)r+�limitrrr �test_class_membersszTestTimeZone.test_class_memberscCs�|�tjttd���|�tjttd�d��|�tjttd�d��tdd�tdd�fD]}t|�}|�|�d�tdd�d�q-tdd�td�fD]}|�t	t|�|�t	t|�qK|�t
��td�Wd�n1sqwY|�t
��td�Wd�n1s�wY|�t
��
ttd�Wd�n1s�wY|�t
��
ttd�Wd�n1s�wY|�t
��ttdd	�Wd�dS1s�wYdS)
Nr�UTCr"��microseconds��secondsrSrQ�ABC�extra)r�rr�r�assertIsNotr*�assertNotEqualrdrv�
ValueErrorrwr�)r+Z	subminuter��invalidrrr �test_constructors2244<zTestTimeZone.test_constructorcCs |�tjt�|�|jt�dSr-)r�rr�rr�r^rrr �test_inheritanceszTestTimeZone.test_inheritancecCs�|j}dD]}|t}|�|t|��|��|�|t|��|��q|�t��|j�d�Wd�n1s:wY|�t��|j�d�Wd�dS1sVwYdS)N)rg�?r��rD)r��HOURr*rrdrvrwr�)r+�dummy�hr[rrr �test_utcoffset!s6<zTestTimeZone.test_utcoffsetcCs�|�tj�|j��|�t��|j�d�Wd�n1s wY|�t��|j�d�Wd�dS1s<wYdS)Nr�rD)�assertIsNonerr�rgr�rvrwr�r^rrr �test_dst,s6<zTestTimeZone.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�n1s�wY|�t��|j	�d�Wd�dS1s�wYdS)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�rfr�r�rrvrwr�r^rrr �test_tzname2s&���6<zTestTimeZone.test_tznamecCs�|�t��tj�|j�Wd�n1swY|�t��tj�d�Wd�n1s2wY|j|jt	fD]%}|jj
|d�}|�|�}|�|||�|��|�||jj
tjd��q>dS)Nznot datetimer)
rvr�rr�r�r�rwr�r��Eastern�replacer*rd)r+r�Zutctime�localrrr �test_fromutcHs��
��zTestTimeZone.test_fromutccCsR|�tt�tt��|�tt�tt��|�tdt�tdtd��|�t��tt�tt�kWd�n1s;wY|�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*rvrwr0r~�assertFalserrrr�rrr �test_comparisonTs$:zTestTimeZone.test_comparisoncCs�tddd�}tjtjtjfD]/}|�|�|�|j|d����|�|�|�|j|d����|�|�	|�|j|d��	��qdS)Nr"r)
rrr�rzr�r*rfr�rdrg�r+r�r�rrr �test_aware_datetimeis����z TestTimeZone.test_aware_datetimecCs�|j|jtjtjfD]}tD]\}}}|�|�||��}|�||�qq
tj	}tD]\}}}|�|�||��}|�
||�q)dSr-)r�r�rr�rzr�r�r�r*r�r�)r+r�r�r�r�tz_copyrrr �test_picklets��zTestTimeZone.test_picklecCsP|j|jtjtjfD]
}t�|�}|�||�q
tj}t�|�}|�||�dSr-)	r�r�rr�rz�copyr*r�r��r+r�r�rrr �	test_copy~�

zTestTimeZone.test_copycCsP|j|jtjtjfD]
}t�|�}|�||�q
tj}t�|�}|�	||�dSr-)
r�r�rr�rzr��deepcopyr*r�r�r�rrr �
test_deepcopy�r�zTestTimeZone.test_deepcopyc
Cstddd�tdddd�tddddd�g}|�dd�|D��|D]}|jd	|d
��t|�Wd�n1s8wYq tdd�tdd
d�g}|�dd�|D��|D]2}|jd|d
��!|�t��t|�Wd�n1sswYWd�n1s�wYqUdS)Nr�r�r��r�rTr��?B�r�rTr�r�cS�g|]}|�qSrr�r�deltarrr r!��z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>Zgood)Z	test_typer��r�r")r�r�cSr�rrr�rrr r!�r�Zbad)r�extend�subTestrrvr�)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@�eZdZdd�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�r~r0rrr)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"c��dkS�Nrrr�r�rr �<lambda>��zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>cs�dkSr�rrr�rr r��r�cs�dkSr�rrr�rr r��r�cs�dkSr�rrr�rr r��r�c�d�kSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�)r�rvrwr^rr�r �test_harmful_mixed_comparison�sz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r:rNrOr�r�rrrr r��sr�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���rg�$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���qQtd(d
�D]}|||d|t|d���qi||dd!�d)|d%d��||d*d	d+�|d*d	d,�|ddd��||d*dd�|d*dd�|ddd��dS)-NrFrrrrKiDQrHr��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��qd�|�t��fd	d��|�t��fd
d��|�t��fdd��|�t�fdd��|�t�fd
d��dS)NrQ�r"��?c���Sr-rr�rrrr r�Yr�z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>c���Sr-rrr!rr r�Zr�c���Sr-rrr!rr r�[r�c���Sr-rrr!rr r�\r�rc���Sr-rr�r�zerorr r�ar�c���Sr-rrr&rr r�br�cs��Sr-rrr&rr r�cr�c��dS)N�rr�rrr r�dr�cr))Nr�rrr+rr r�er�)rrvrw�ZeroDivisionErrorr^r)rrr'r �test_disallowed_computationsTsz*TestTimeDelta.test_disallowed_computationscCs,td�}|�t|jt�|�t|jt�dS)NrQ)rrvr��__mul__�NAN�__truediv__)r+rrrr �test_disallowed_specialgsz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||�}|�|j|�|�|j|�|�|j|�dS)N)r"rF��rr*r�r�r�)r+r�r�rrrrr �test_basic_attributesms

z#TestTimeDelta.test_basic_attributescCsptdd�}|�|��d�dD]}t|d�}|�|��|�qdD]}t|d�}|�|��|tdd��q!dS)	N�mrg8~A)g˟$�@g˟$��rrg��.Ar�)r�rEi����r�r")rr*�
total_seconds)r+rr6�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)Nr9rHr:rBr�iz
r;rFr�1rr"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]Z}t|�}|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�q7tD]z�|���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)rGrCrDFTc���kSr-rr�Zbadargr=rr r��r�z,TestTimeDelta.test_compare.<locals>.<lambda>c���kSr-rrrKrr r��r�c���kSr-rrrKrr r��r�c���kSr-rrrKrr r��r�c���kSr-rrrKrr r��r�c���kSr-rrrKrr r��r�c���kSr-rrrKrr r��r�c���kSr-rrrKrr r��r�)rr*r~r��
OTHERSTUFFrvrw�r+r>r�rrKr �test_compare�sH�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�rE)r�r�rTr�z-210 days, 23:12:34rz0:00:00.001000r�z0:00:00.000003rr��r�r�rTr�r�z999999999 days, 23:59:59.999999)rr*r�)r+rrrrr 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)rr�z%s(seconds=60)z%s(0)r9r�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]-}t|�}|�|�d
��|dd�}t|�}|�||�t|j|j|j�}|�||�qdS)Nrr�r�r�rW�6e�rr"�r�r�rGrC�r�r�r�rX�	)	rr�r~r4r�r*r�r�r�)r+r�sZtd2rrr �test_roundtrip�s�
��zTestTimeDelta.test_roundtripcCs~|�tjt�|�tjt�|�tjt�|�tjtjk�|�tjtd��|�tjtddd��|�tjtddd��dS)Nr\rrg~�.Arr")r�rr�rz�
resolutionr~r*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-)rrzrrrr r�r�z-TestTimeDelta.test_overflow.<locals>.<lambda>r"�ʚ;ge��Ag#B����;g�����|�=gr��{�>)
rrbr�rv�
OverflowError�__sub__�__add__rzr.r0)r+�tinyr�dayrrr �
test_overflows 

zTestTimeDelta.test_overflowcCs.td�}|�t|jt�|�t|jt�dS�Nr")rrvrer.�INF)r+rirrr �_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:?rrg-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�������?rg�������?r��r�r�g������ٿg������ɿr
r)rr*rb)r+rrZus_per_hourZ
us_per_dayrrr �test_microsecond_rounding-s0  &z'TestTimeDelta.test_microsecond_roundingcCs&tdd�}|�|j|j|jfd�dS)Nr�r�)r�rr�r3)r+rrrr �test_massive_normalizationNs
�z(TestTimeDelta.test_massive_normalizationcCsR|�td��|�tdd��|�tddd��|�tdd��|�td��dS)Nr"rr�)r~rr�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 �@rq)r�r�r�r)r+�sumrrr �as_hoursas��z9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r:rNrO�staticmethodrxrzrrvrr rw\srwr"rr�r�i��r]i��)
rr�r�r*rzrxr�r�r�r�)r+r=r>�t3�t4rrvr �test_subclass_timedeltaZs 

z%TestTimeDelta.test_subclass_timedeltac		Cs�Gdd�dt�}|ddd�}tdd�}ddd	�|ddd
�fddd	�|ddd
�fd
dd	�|ddd�fg}|D]+\}}}|�|��|||�}|�||�|�||�Wd�n1s[wYq5dS)Nc@�eZdZdS)z6TestTimeDelta.test_subclass_date.<locals>.DateSubclassN�r:rNrOrrrr �DateSubclassz�r���r"rDr�addcS�||Sr-r�rCr�rrr r��r�z2TestTimeDelta.test_subclass_date.<locals>.<lambda>rK�raddcS�||Sr-rr�rrr r��r��subcS�||Sr-rr�rrr r��r�rI)rrr�r*r�)	r+r��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]+\}}}|�|��|||�}|�||�|�||�Wd�n1sawYq;dS)Nc@r)z>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNr�rrrr �DateTimeSubclass�r�r�r�r"rDr��)r�rTr�cSr�r-rr�rrr r��r�z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rK�
r�cSr�r-rr�rrr r��r�r�cSr�r-rr�rrr r��r�rI)rrr�r*r�)	r+r�r�rr�r6r�r�r�rrr �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�rGr��rTr�rSg@r)rr*rvr,r	r
)r+r��second�minute�zerotdrrr �
test_division�s

zTestTimeDelta.test_divisioncCs�tddd�}tdd�}||}|�|tdd��tddd�}||}|�|tdd��td�}|�tt||�|�tt|d	�dS�
NrGr�r�r"rSr�rErr#)rr*rvr,rrw)r+r�r��rr�rrr �test_remainder�s
zTestTimeDelta.test_remaindercCs�tddd�}tdd�}t||�\}}|�|d�|�|tdd��tddd�}t||�\}}|�|d�|�|tdd��td�}|�tt||�|�tt|d	�dSr�)r�divmodr*rvr,rw)r+r�r��qr�r�rrr �test_divmod�s
zTestTimeDelta.test_divmodc	Cs�dd�}|�t��t�|dd>�Wd�n1swY|�t��t�|dd>�Wd�n1s;wYdD]:}|�t��t�||�Wd�n1s[wY|�t��t�||�Wd�n1swwYqBdS)NcsG�fdd�dt�}|�S)Nc�eZdZ�fdd�ZdS)zFTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatcr�r-rr^��	bad_ratiorr �as_integer_ratio�r�zWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r:rNrOr�rr�rr �BadFloat��r�)�float)r�r�rr�r �
get_bad_float�sz4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"r)rrh�r"rGrC)rvrwrr�)r+r�r�rrr �test_issue31293�s ������zTestTimeDelta.test_issue31293csfG�fdd�dt�}G�fdd�d��G�fdd�dt��dD]��|j�d���z	t|d	�d
�Wn	ty:Ynwz	t|d	�d�Wn	tyMYnwz	t|d	�d�WnttfybYnwz
td	�|d	�WnttfyxYnwz
|d	�td	�Wn	ty�Ynwz
td	�|d	�Wn	ty�YnwWd�n1s�wYqdS)
Ncs<eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Zd	S)
z-TestTimeDelta.test_issue31752.<locals>.BadIntc���Sr-r�r+�other��Prodrr r.�rez5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__cr�r-rr�r�rr �__rmul__�rez6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__cr�r-rr�r�rr �__floordiv__�rez:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__cr�r-rr�r�rr �
__rfloordiv__�rez;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r:rNrOr.r�r�r�rr�rr �BadInt�s
r�cs$eZdZ�fdd�Z�fdd�ZdS)z+TestTimeDelta.test_issue31752.<locals>.Prodcr�r-rr���Sumrr rg�rez3TestTimeDelta.test_issue31752.<locals>.Prod.__add__cr�r-rr�r�rr �__radd__�rez4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r:rNrOrgr�rr�rr r��sr�cr�)z*TestTimeDelta.test_issue31752.<locals>.Sumcr�r-rr���divmodresultrr �
__divmod__�r�z5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r:rNrOr�rr�rr r��r�r�)Nr)rr"rG)rr�r�r"r�r�r)rVr�rrwr�)r+r�r)r�r�r�r �test_issue31752�sN
����������zTestTimeDelta.test_issue31752N)"r:rNrOrr�r�rr-rZrequires_IEEE_754r1r4r8r?rDrHrUr�r�rarcrjrmrsrtrur~r�r�r�r�r�r�r�rrrr r��s>S

(	
!r�c@rl)�TestDateOnlycCs�tddd�}tdddddd�}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�|}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�dS)	N��r"rGrCrIrDrWrE)rrr�r*)r+rcr�r��dt2rrr �test_delta_non_days_ignored!s*
�

z(TestDateOnly.test_delta_non_days_ignoredN)r:rNrOr�rrrr r�sr�c@�eZdZdZdS)�SubclassDater"N�r:rNrOZsub_varrrrr r�>�r�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�monthrirbrrr r4GszTestDate.test_basic_attributescCsz|�ddd�|j��fD].}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j	�}|�||�qdS)Nr"rGrCrXr_)
r��todayr�r~r4r�r*r�r�ri�r+rcr`r�rrr raMs��zTestDate.test_roundtripc
	Cs�dD]B\}}}}|�|||�}|�||���|j�|�}|�||�t|d�rD|�|jd�|�|jd�|�|jd�|�|jd�qt	t
tdd�D]>}|�|dd�}|��}|j�|�}|�||�|dkr�|j�|d�}|�|ddd�}|�||�|�|��|d�qMgd�}d	D]K\}}	|�|dd���}tt	dd
�|�D]5\}
}|
dkr�|	r�|d7}t	d|d�D]}|�||
|�}|�|��|�|�||j�|��|d7}q�q�q�dS)N))r"r"r"r")r"r�r2r5)rGr"r"�n)i�rtr�i��
�hourrr"rFr�r2)r2�r2r�r2r�r2r2r�r2r�r2))r�T)r�Fr�rG)
r�r*�	toordinal�fromordinal�hasattrr�r�r��microsecondrrr�zip)
r+�y�mrC�nZfromordr��d2ZdimZisleapr�Zmaxdayrirrr �test_ordinal_conversions[sH
��
���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�Srk�r�r�rZaordrr r���z0TestDate.test_extreme_ordinals.<locals>.<lambda>r"rcs���d�Srkr�rr�rr r��r�)r�r�r�r�rir�r�r*rvr�rrz)r+rrr�r �test_extreme_ordinals�s$

zTestDate.test_extreme_ordinalscCs6|�tdd�|�tdd�|�t|jtddd�|�t|jtddd�|�ddd�|�ddd�|�t|jddd�|�t|jddd�|�ddd�|�ddd�|�d	dd�|�t|jddd
�|�t|jddd�|�t|jddd�|�t|jd
dd�|�t|jddd�|�t|jddd�dS)Nr"r�r�rr�rG����`	r����4�lru)r�rrrvr�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�r2r"rGr��r�r*rArB�r+rC�eZdicrrr rD�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"r2�r�rG�ArIrrFrCr_r��4��rcr r-rrr!rr r��r�z,TestDate.test_computations.<locals>.<lambda>cr"r-rrr!rr r��r�cr#r-rrr!rr r��r�cr$r-rrr!rr r��r�cr$r-rr�rrirr r��r�c���Sr-rrr�rr r��r�c���Sr-rrr�rr r��r�cr%r-rrr�rr r��r�cr(r-rrr�rr r��r�c���Sr-rrr+rr r��r�c���Sr-rrr+rr r�r�c���Sr-rrr+rr r�r��
r�r*r�rBrr�r�rrvrw)r+rr�diff�weekr�rrirr r�sPzTestDate.test_computationscCs�|jj}|td�td�fD]8}|jj|}||8}|�t|j|�|�t|j|�|jj|}||7}|�t|j|�|�t|j|�q
dS)Nr"rG)	r�rbrr�rvrerfrgrz)r+rhr�rcrrr rjs�zTestDate.test_overflowcCshddl}d\}}}|�|||ddddddf	�}|j�|�}|�|j|�|�|j|�|�|j|�dS)Nr)i�r_r�r�)r�mktimer��
fromtimestampr*r�r�ri)r+rr�r�ri�tsrCrrr �test_fromtimestamps
zTestDate.test_fromtimestampcC� dD]}|�t|jj|�qdS�N)gZb���t�gZb���ti�rvrer�r��r+Zinsanerrr �test_insane_fromtimestamp�
��z"TestDate.test_insane_fromtimestampcCspddl}td�D]}|j��}|��}|j�|�}||krn|�d�q||kr6|j||tdd�d�dSdS)NrrCg�������?r
r�)r�)rrr�r�r��sleepZassertAlmostEqualr)r+rr�r�r�Z
todayagainrrr �
test_today&s

��zTestDate.test_todayc	Cs�td�D]B}|�|�ddd|���|�|�|�ddd|���|d�|�|�ddd|���|�|�|�ddd|���|d�qdS)NrFr�rCrIr"r�rG)rr*r��weekdayZ
isoweekday)r+rrrr �test_weekdayCs"$�zTestDate.test_weekdayc	Csgd�}g}|D]*\}}|j|�}td�D]}|t|�}|dd�|d|f}|�||f�qq|D]J\}	}
|j|	dd��|�|	��|
�Wd�n1sSwY|j|	dd��|	��}|�|j|j|j	f|
�Wd�n1szwYq5dS)N)))r�r��)r�r�r"))r�r�r��r�r"r"))r�r"rD)r�rGr"))��r�rs)rr�r"))rr�r�)r�5r"))r�r"rI)r�r"r"rFrrG�tuple)rCZ
comparison�fields)
r�rr�appendr�r*�isocalendarr�r�r�)r+Zweek_mondays�
test_casesZcal_dateZiso_dateZ	base_daterZnew_dateZnew_isorCZexp_isor�rrr �test_isocalendarLs&	
�����zTestDate.test_isocalendarcCsH	|�ddd�}t�|���}t�|�}|�t|�t�|�|d�dS)N��r")r
r"rG)r�rr�rr�r*r�r)r+rC�p�resrrr �test_isocalendar_picklingjs
z"TestDate.test_isocalendar_picklingcCs�d}ttt|����}g}td�D]3}|�d|dd�}|�d|dd�}|�|��dd�|��dd��|��ddkrD|�|�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�r2i@r"r)	�sorted�maprV�splitrr�r*rr)r+ZISO_LONG_YEARS_TABLEZiso_long_years�LrrCr�rrr �test_iso_long_yearsus$
�zTestDate.test_iso_long_yearscCs"|�ddd�}|�|��d�dS)NrGrCz
0002-03-02)r�r*�	isoformat�r+r�rrr �test_isoformat��zTestDate.test_isoformatcCs"|�ddd�}|�|��d�dS)Nr�rCrGzSat Mar  2 00:00:00 2002)r�r*�ctimerrrr �
test_ctime�rzTestDate.test_ctimec	Cs�|�ddd�}|�|�d�d�|�|�d�d�|�|�d�d�|�t|j�|�t|jdd	�|�t|jd
�|�|�d�d�|�|�d
�d�dD]}z|�|�WqNty`YqNwz|�d�Wn	tyqYnw|�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*�strftimervrwr��UnicodeEncodeError)r+r��frrr �
test_strftime�s*
��zTestDate.test_strftimecCsz|�ddd�}zt�d�Wnty|�d�Ynw|�|�d�t�d|����|�|�d�t�d|����dS)NrrCrGr z'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r��_timer!r�r;r*�	timetuplerrrr �test_strftime_trailing_percent�s��z'TestDate.test_strftime_trailing_percentcCs|�ddd�}|�|�d�t|��|�td��
|�d�Wd�n1s(wYGdd�d|j�}|ddd�}|�|�d�d�Gd	d
�d
|j�}|ddd�}|�|�d�t|��dD]#}|�|�|�|�|��|�|�|�|�|��|�|�|�d
�qadS)N��r_r#r��must be str, not int�{c@rl)zTestDate.test_format.<locals>.AcSr��N�Arr^rrr �__str__�r�z'TestDate.test_format.<locals>.A.__str__N�r:rNrOr-rrrr r,�rpr,c@rl)zTestDate.test_format.<locals>.BcSr��N�Br�r+�format_specrrr r!�r�z(TestDate.test_format.<locals>.B.strftimeN�r:rNrOr!rrrr r0�rpr0�rzm:%m d:%d y:%y H:%H M:%M S:%S�%z %Z�r�r*�
__format__r��assertRaisesRegexrwr!�r+rcr,rr0r�fmtrrr �test_format�s ��zTestDate.test_formatcCs`t|jt�r	t}nt}|�|jj|�|�|jj|�|�|jjt�|�	|jj|jjk�dSr-)
rr�rrr�r�rzrbrr~)r+Zexpected_classrrr rc�szTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|�}|�||�|�|jj||jj�|�|jj||jj�dS)Nr���@Br)r�rzr�r�r�r�rr*)r+�bigr�Z	justasbigrrr �test_extreme_timedeltaszTestDate.test_extreme_timedeltac
Csptd�D]�}|�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�rurC�=)
rr�r&r*�tm_year�tm_mon�tm_mday�tm_hour�tm_min�tm_sec�tm_wday�tm_yday�tm_isdst)r+rrCr�rrr �test_timetuples(&..�zTestDate.test_timetuplecC�Zd}|j|�}tD]\}}}|�||�}|�|�}|�||�q	|�|��|�d��dS)N�rKrFr�rG�r�r�r�r�r*�
__reduce__�
__reduce_ex__rGrrr rH%�

zTestDate.test_picklingcC�Fgd�}d}|j|�}|D]}tD]}||dd�}|�||�qq
dS)N)s'cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.scdatetime
date
(U�tR.s�cdatetime
date
U��R.)��rt��latin1��encoding�r��pickle_loadsr*�r+r�r�r��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�q9tD]o�|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fd	d��|�t��fd
d��|�t��fdd��|�t��fdd��|�t��fd
d��|�t��fdd��q�dS)NrGrCrIrIFTcrLr-rrrKrr r�Zr�z'TestDate.test_compare.<locals>.<lambda>crMr-rrrKrr r�[r�crNr-rrrKrr r�\r�crOr-rrrKrr r�]r�crPr-rrrKrr r�^r�crQr-rrrKrr r�_r�crRr-rrrKrr r�`r�)r�r*r~r�rSrvrwrTrrKr rU;sF
�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"FTcr�rkrr��ourrr r�lr�z-TestDate.test_mixed_compare.<locals>.<lambda>cr�rkrrr\rr r�mr�c@r)z.TestDate.test_mixed_compare.<locals>.SomeClassNr�rrrr �	SomeClassqr�r^crPr-rr�r]Ztheirrr r�yr�crLr-rrr_rr r�zr�)r�r*rvrw)r+r^rr_r �test_mixed_comparebszTestDate.test_mixed_comparecCs |�|jj�|�|jj�dSr-)r~r�r�rzr^rrr ru|szTestDate.test_boolcCsZdD](}|�|dd�}|�d�d|kr*|�|�d�d|�|�|�d�d|�qdS)N)r"r@r
�cr9i�r�r"z%Yz%04d�%dz%4Y)r�r!r*)r+r�rCrrr �test_strftime_y2k�s��zTestDate.test_strftime_y2kc
C�|j}gd�}||�}|�||���d}dD]&\}}|dd�}|||<||�}|jd
i||i��}	|�||	�|d7}q|ddd�}|jt|jdd	�dS)Nr�r)�r�rG�r�rC�rirIr"r�rGr�r��r�r�r�r*r�rvr��
r+�clsr��baserr6�newval�newargsr��gotrrr �test_replace�s
zTestDate.test_replacecCs:Gdd�d|j�}|ddd�}|�t|jdd��|�dS)Nc@r)z4TestDate.test_subclass_replace.<locals>.DateSubclassNr�rrrr r��r�r���r"i�ri�r�r�r�r�)r+r�rcrrr �test_subclass_replace�szTestDate.test_subclass_replacec�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|jd�dS)Nc�$eZdZdZ�fdd�Zdd�ZdS)z&TestDate.test_subclass_date.<locals>.CrQc�6|��}|�d�}�jj|g|�Ri|��}||_|S�Nr��r��popr�r�r��rlr��kwsZtempr��resultr^rr r���

z.TestDate.test_subclass_date.<locals>.C.__new__cS�||j|jSr-)r�r��r+�startrrr �newmeth��z.TestDate.test_subclass_date.<locals>.C.newmethN�r:rNrO�	theAnswerr�r�rr^rr �C��r��r�rIrr�rFrQrH)	r�r*r9r�r�r�r�r�r��r+r�r�rxr�rr^r r���
"zTestDate.test_subclass_datec

s�G�fdd�d�j�}d}d}d}||�}��||���|jd�t�|td����}d|ffd	|ffd
|ffg}|D]@\}}	||fD]7}
�jt	|
�|d��$t
|
|�}||	�}��||���||���|jd�Wd�n1svwYqDq<dS)Ncr�)zCTestDate.test_subclass_alternate_constructors.<locals>.DateSubclassc�$�jj|g|�Ri|��}d|_|S�NrF�r�r�r��rlr��kwargsr}r^rr r���zKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N�r:rNrOr�rr^rr r��r�r�r�i�(z
2003-04-14rFrr�r��
fromisoformat�Z
base_obj_type�constr_name)r�r�r*r�r�combiner�	timestampr�r��getattr)
r+r�r�Zd_ord�d_isoformat�base_dr�rr��constr_args�base_obj�constrrcrr^r �$test_subclass_alternate_constructors�s4�
�
����z-TestDate.test_subclass_alternate_constructorscC�Rd}t|�}tD]\}}}|�||�}|�|�}|�||�|�t|t��qdS)NrL)r�r�r�r�r*r~rUrGrrr �test_pickling_subclass_date�s
�z$TestDate.test_pickling_subclass_datec	Cs�d}t|jt�s|dd�}dD]}|�t|j|dd�||dd��qt|jt�rP|�td��|�tdgt|��d�Wd�n1sKwYtdd	�D]}|�|dd�t|g�|dd��qUdS)
Ns
1995-03-25rI)�9��
��rGrC�^bad tzinfo state arg$r"r�r�)	rr�rrvrwr8�bytesrBr)r+rmZ
month_byteZord_byterrr �test_backdoor_resistance�s	
��*�z!TestDate.test_backdoor_resistancec	Cspgd�}|D]/}|j|�}|��}|j|d��|j�|���}|�||�Wd�n1s0wYqdS)N)�r"r"r")rrGr�r�r"r")r�rGr��r�rtr�)r�rIrC�i�rDr�)�dt_str�r�rr�r�r*)r+�
base_dates�dt_tuplercr��dt_rtrrr �test_fromisoformats

���zTestDate.test_fromisoformatcCs<Gdd�d|j�}|ddd�}|�|���}|�||�dS)Nc@r)z:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNr�rrrr r�)r�r�rrr�r)r�r�rr�)r+r�rcr�rrr �test_fromisoformat_subclass(sz$TestDate.test_fromisoformat_subclassc	CsLgd�}|D]}|�t��|j�|�Wd�n1swYqdS)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)rvr�r�r��r+Zbad_strs�bad_strrrr �test_fromisoformat_fails2s���z!TestDate.test_fromisoformat_failsc	C�Tddt�d�g}|D]}|�t��|j�|�Wd�n1s"wYq
dS)Ns
2009-03-01z
2009-03-01��io�StringIOrvrwr�r��r+Z	bad_typesZbad_typerrr �"test_fromisoformat_fails_typeerrorFs���z+TestDate.test_fromisoformat_fails_typeerrorcCs�ddddddddd	d
ddd
tddftddfg}|D]-}|j|d��|j|�}|��}|jj|�}|�||�Wd�n1sAwYqdS)N)��rIrC)rr"rG)i�r�r�)r�r"rG)rr�r2r�)r�r�r2)r�r"r")r�r�r2r)r�r�r2r�)r(r�r2r"r�r2)�	datecomps)rrr�r�r�fromisocalendarr*)r+Zdatesr�Zdobj�isocalZd_roundtriprrr �test_fromisocalendarMs2�
���zTestDate.test_fromisocalendarc
Csxgd�}|D]3}|j|d��#|�t��|jj|�Wd�n1s%wYWd�n1s4wYqdS)N)
)r
rr")r
r�r")r
�6r")r
r"r)r
r"r�)r
r"�)r
rr")rr"r")rr"r")i��r"r")�r"r")r
r�r")r
r"r��r�)r�rvr�r�r�)r+�isocalsr�rrr �!test_fromisocalendar_value_errorsks�����z*TestDate.test_fromisocalendar_value_errorsc
Cs�ttdd�g}g}d}td�D]}|D]}t|�}|||�||<|�t|��qq|D]3}|j|d��#|�t��|j	j
|�Wd�n1sKwYWd�n1sZwYq,dS)NcS�dSr-r)�xrrr r���z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)r
r"r"rCr�)r�r�r�listrrr�rvrwr�r�)r+Z
err_txformersr�rmrZtxformerZerr_valr�rrr � test_fromisocalendar_type_errors�s*�	������z)TestDate.test_fromisocalendar_type_errorsN)/r:rNrOrr�r4rar�r�r�rDrrjr�r�r�r�r	r
rrrr$r'r;rcr?rJrHr[rUr`rurdrqrtr�r�r�r�r�r�r�r�r�r�r�rrrr r�AsX/2		&'
	
'
,

r�c@r�)�SubclassDatetimer"Nr�rrrr r��r�r�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�rir�r�r�r�rbrrr r4�sz"TestDateTime.test_basic_attributesc	Cs||�ddddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�rCr"r�r��@r�rbrrr �test_basic_attributes_nonzero�sz*TestDateTime.test_basic_attributes_nonzeroc
Cs�|�ddddddd�|j��fD]6}t|�}|�|�d��|d	d�}t|�}|�||�|�|j|j|j	|j
|j|j|j
�}|�||�qdS)
Nr"rGrCrIrDrKrFrXr_)r�r�r�r~r4r�r*r�r�rir�r�r�r�r�rrr ra�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.000123rw� 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:01rz0001-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*rrvr�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]$\}}|j|d�}||}|j|d��Wd�n1sjwYqKdS)N�05:00rDr��02:00rG�06:27rKrSr��12:32:30r�rur�r��02:04:09.123456rIr_rr��r�N�+00:00rcS�2g|]\}}dD]\}}||t||�f�qqS�))�-r�)�+r"r�rr�r�prefix�signrrr r!����z8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>r�r"�%z2016-04-01T12:37:09r��tzi�rrr�r�r�r�)	r+�	tzoffsets�tzinfosZdt_base�exp_base�exp_tzr�rc�exprrr �test_isoformat_timezone�s*�	��,��z$TestDateTime.test_isoformat_timezonec	Cs&|�ddddddd�}|�|�d�t|��|�td	��
|�d�Wd�n1s,wYGd
d�d|j�}|ddddddd�}|�|�d�d�Gdd
�d
|j�}|ddddddd�}|�|�d�t|��dD]#}|�|�|�|�|��|�|�|�|�|��|�|�|�d
�qmdS)Nr(r_r#rIrDr"r*r�r)c@rl)z#TestDateTime.test_format.<locals>.AcSr�r+rr^rrr r-r�z+TestDateTime.test_format.<locals>.A.__str__Nr.rrrr r,rpr,c@rl)z#TestDateTime.test_format.<locals>.BcSr�r/rr1rrr r!#r�z,TestDateTime.test_format.<locals>.B.strftimeNr3rrrr r0"rpr0r4r6r9rrr r;s ��zTestDateTime.test_formatc	Cshddl}|�ddddddd�}|�|��d�|�ddd	dddd�}|�|��|�|�|�����dS)
Nrr�rCrG�rDr*zSat Mar  2 18:03:05 2002r)rr�r*rr�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"r_rr#r�r2r�r�rr�)r�r*r~rr)r+rxr��dt3rrrr �test_tz_independent_comparing@s
z*TestDateTime.test_tz_independent_comparingcCsBGdd�dt�}|�ddddddd|dd��}|�t|jd�dS)	Nc@rl)zDTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfocSsGdd�dt�}|d�S)Nc@rl)zZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrcWr�r-r)r+r�rrr r�Wr�zbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r:rNrOr�rrrr �MyStrVrpr�r6)r�)r+rcr�rrr rfUszKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r:rNrOrfrrrr �MyTzInfoTrpr�rrCrGrr6�%Z)rPr�rvrwr!)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�rr�rGr�r�r�r�r�r�r�rur2r�r�r�r�rr�r=��fold)r�rrrvr�rwr^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�r2r�r��r"rGr�rrDr�r�rrr rD�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"r2r�r�rIrrCrGr�rKrr<rFr�r#r�r�rsr_r�r�r�r�rrDr�rrcr r-rrr!rr r��r�z0TestDateTime.test_computations.<locals>.<lambda>cr"r-rrr!rr r��r�cr#r-rrr!rr r��r�cr$r-rrr!rr r��r�cr$r-rrr�rr r��r�cr�r-rrr�rr r��r�cr�r-rrr�rr r��r�cr%r-rrr�rr r��r�cr(r-rrr�rr r��r�cr�r-rrr+rr r��r�cr�r-rrr+rr r��r�cr�r-rrr+rr r��r�r�)r+rr�Zmillisecr�r�rr�r r�s�
" """����zTestDateTime.test_computationscCrK)N�rKrFr�r�r�r"�rGrMrGrrr rH�rPzTestDateTime.test_picklingc	Csn|�ddddddd�}ttjd�D]"}t�||�}t�|�}|�|jd�|�|jd�|�|j	d�qdS)	Nr�rGrFr��0r�i��r")
r�rr�HIGHEST_PROTOCOLr�r�r*r�r�ri)r+rrr`rrrr �test_more_pickling�s
�zTestDateTime.test_more_picklingcCr�)Nr�)r�r�r�r�r*r~rUrGrrr �test_pickling_subclass_datetime��
�z,TestDateTime.test_pickling_subclass_datetimecCrQ)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.)rRrtrSr�r�r"r�rTrUrWrYrrr r[	s

��z!TestDateTime.test_compat_unpicklecCsRgd�}|j|�}|j|�}|�||�|�||k�|�||k�|�||k�|�||k�|�||k�tt|��D]i}|dd�}||d||<|j|�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�q=dS)N)r�rtr�r�rVr�rr")r�r*r~r�rrB)r+r�r=r>rrorrr �test_more_compare	s4


�zTestDateTime.test_more_comparecCsd|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j
�|�|j|j�dSr-)
r*rAr�rBr�rCrirDr�rEr�rFr�)r+r�rprrr �verify_field_equality;	sz"TestDateTime.verify_field_equalitycC�6ddl}|��}|�|�}|j�|�}|�||�dS�Nr)r�	localtimer�r�r�r+rr�r�rprrr r�C	�

zTestDateTime.test_fromtimestampcCrr)r�gmtimer��utcfromtimestamprr	rrr �test_utcfromtimestampK	r
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|��}Wn	ty�Yqvw|�|j�|�|�qvdS)Nrbr"g��@rGrCrI���6�@rrrtr�r�r�i'r�)r�r*r�r�r�rre)r+r��t0r=r`rrr �test_timestamp_naiveU	s0
��� ��z!TestDateTime.test_timestamp_naivecCs�|jdddtjd�}|�|��d�|jdddddddtjd�}|�|��d�|jdddddddttd	d
�d�d�}|�|��d�dS)
Nrbr"rr*rGrCrIg�7��@r�r�r�r)r�rr�r*r�rrrrr �test_timestamp_awareq	s
��
�z!TestDateTime.test_timestamp_awarezMSK-03c	Csv|jj|jjfD]�}|d�}|�|jd�|�|jd�|d�}z|d�}Wn	ty/Yn?w|�|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�rpi�#gH�����z>g1E��2�>g<"2��?g�P���?r"rnro)r�r�rr*r�r��OSError)r+Zftsr'rZ	minus_oner�rrr rs|	sJ���z&TestDateTime.test_microsecond_roundingcCs�|�d��|jjjtjd�}|��}|�|d�Wd�n1s#wY|�d��|jjjtjdd�}|��}|�|d�Wd�dS1sMwYdS)Nzminimum UTCrl����w#o9zmaximum UTCr�rr�g�� �MB)	r�r�r�r�rr�r�r*rz)r+�min_dt�min_ts�max_dt�max_tsrrr �test_timestamp_limits�	s��"�z"TestDateTime.test_timestamp_limitsc

Cs�z|j�d�Wnttfy|�d�Ynw|jjtdd�}|��}|jjj	dd�}|jjtdd���td	d
d
d��
�}d||fd
||ffD])\}}}|j|||d��|j�|�}|�||�Wd�n1spwYqLd|tddd��
�fd|tdd��
�fd|tdd��
�fd|tdd��
�fg}	|	D]8\}}|j||d��%|�
ttf��|j�|�Wd�n1s�wYWd�n1s�wYq�dS)N����Test not valid on this platformr"rr�r�r�r�rr�r��minimum�maximum�r�r��Too small by a littler�rr�Too small by a lotr�Too big by a little�Too big by a lot�r�)r�r�rrer;r�rr�rzr�r6r�r*rvr�)
r+rrrr�	test_namer�r��actualrrrr �test_fromtimestamp_limits�	sB�����������z&TestDateTime.test_fromtimestamp_limitscCs�z|j�d�Wnttfy|�d�Ynw|jjjtjd�}|�	�}|jj
jdtjd�}|�	�}d||jdd�fd||jdd�ffD]G\}}}|j|||d��2z|j�|�}Wnttfyw}	z
|�t|	��WYd}	~	nd}	~	ww|�
||�Wd�n1s�wYqFd	|d
fd|tdd
���fd|d
fd|tdd
���fg}
|
D]8\}}|j||d��%|�ttf��|j�|�Wd�n1s�wYWd�n1s�wYq�dS)Nrrrr�r�rrrrr r"r!rrr"r#r$)r�rrrer;r�r�rr�r�rzr�r�r*rr6rvr�)r+rrrrr%r�r�r&�excrrrr �test_utcfromtimestamp_limits�	sH������


������z)TestDateTime.test_utcfromtimestamp_limitscCr�r�r�r�rrr r�
r�z&TestDateTime.test_insane_fromtimestampcCr�r�)rvrer�rr�rrr �test_insane_utcfromtimestamp
r�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�r2r�r�rVi�~)r�rr*)r+rCrrr �$test_negative_float_utcfromtimestamp
s"z1TestDateTime.test_negative_float_utcfromtimestampcCsfddl}tdd�}td�D]}|j��}|j�|���}t||�|kr&nq
|�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]0\}}|j||d��t�|j||�}|j�||�}|�||�Wd�n1s\wYq1|jj}|�|dd���dt	�|�|dd���d	t	�|�|d
d���t
dddd
��ddtjtj
dffD];\}}|dkr�d}	|}
nd}	|}
t|
dd�\}}d�|	|||�}
||
d�}|�|��t
|d��|�|�
�|�q�d\}
}||
|�}|�|��dtdt	�|�|�
�d�|�|�|�|
�|�|dd�jd�|�t��
|dd�Wd�n	1�s!wY|�t��
|dd�Wd�n	1�s<wY|�t��|dd�Wd�dS1�sXwYdS)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�rz{}{:02d}{:02d} {}r5r�)z	+1234 UTCr5r�rEr�r�z-2400z-000�z)�	_strptimeZ_strptime_datetimer��strptimer*r�r�r�rd�MINUTErr%rrfr�r4r�r!rrvr�)r+r3r4r�rp�inputsr8Z	tzsecondsrfr�r�r�rT�dtstrrcr:rrr �
test_strptime1
s\
�����

66<zTestDateTime.test_strptimec
Cs^|jj}|�t��
|dd�}Wd�n1swY|�dddddd�}|�dddddd�}|�dddd	d	d	�}|�ddd
d	d	d	�}ddd|fd
dd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg
}|D]0\}}	}
}d"|}|j||	|
|d#��||	|
�}|j|||d$�Wd�n1s�wYq|dS)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Sr�rGr"rIrDrKr�rcz
1/02/03 4:5:6rz
01/2/03 4:5:6z%Hz01/02/03 4:05:06z%Mz01/02/03 04:5:06z%Sz01/02/03 04:05:6z%jz2/03 04am:05:06z%j/%y %I%p:%M:%Sz%Iz02/03 4am:05:06z%wz6/04/03z%w/%U/%yz%Wz6/4/2003z%u/%W/%Yz%Vz%u/%V/%Gztest single digit )�reasonr3r4�target)�msg)r�r8rvr�r�r*)r+r8Znewdaterxr�r�Zdt4r:r>r3r4r?rrr �test_strptime_single_digitl
s>�









�
�
���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�r2rKr�!)	r�r�r2rKrrBrIr�r�r"r�)r�r*r&r�r�rir�r�r�r�r�rrArBrCrDrErFrGrHrI)r+r��ttrrr �test_more_timetuple�
s0
����z TestDateTime.test_more_timetuplec	Cs�|�ddddddd�}|�|�d�d	�d
D]!\\}}}ttd||d��}|j|d
�}|�|�d�d|�qz|�d�WdStyJYdSw)Nr�r�r2rKrrB�/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))rBr*z	33.000123))rBrZ33rG)r�r�r�rr5z-0200u%y�%m %H�%M)r�r*r!rrr�r")r+r�r`rr6r�rrr �test_more_strftime�
s��zTestDateTime.test_more_strftimec	CsL|�ddddddd�}|�|��tddd��|�|��tdddd��dS)Nr�rCrIr��-��)r�r*rrrbrrr �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�rGrH)rrr"rGrrr)rrr�r�r*rvrwrr�r�r)r+rCr�r�r�rcrrr �test_combine�
s6

zTestDateTime.test_combinec
Cre)N)r"rGrCrIrDrKrFr)rfrgrh�r�rD�r�rK�r�rF�r�r�r"r�rGr�r�rirrjrkrrr rq�
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�dS1s�wYdS)N�,Z0044rJr��EDTrrIr��r�c@r�)z+TestDateTime.test_astimezone.<locals>.BoguscSr�r-rrbrrr rdr�z5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetcS�td�Srrrbrrr rgr�z/TestDateTime.test_astimezone.<locals>.Bogus.dstN�r:rNrOrdrgrrrr �Bogus�rTc@r�)z/TestDateTime.test_astimezone.<locals>.AlsoBoguscSrRrrrbrrr rdr�z9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetcSr�r-rrbrrr rg	r�z3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNrSrrrr �	AlsoBogusrUrVc@r�)z,TestDateTime.test_astimezone.<locals>.BrokencSr�rkrrbrrr rdr�z6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetcSr�rkrrbrrr rgr�z0TestDateTime.test_astimezone.<locals>.Broken.dstNrSrrrr �Broken
rUrW)r�r�rPr�rrr*�
astimezonervrwrr�)r+rcr#�dt_utcZdt_frTZbogrVZalsobogrW�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)Ncrv)z.TestDateTime.test_subclass_datetime.<locals>.CrQcrwrxryr{r^rr r�r~z6TestDateTime.test_subclass_datetime.<locals>.C.__new__cSs||j|j|jSr-)r�r�r�r�rrr r�!sz6TestDateTime.test_subclass_datetime.<locals>.C.newmethNr�rr^rr r�r�r�)r�rIrr�r��)r�rFrQrH)
r�r*r9r�r�r�r�r�r�r�r�rr^r r�s
�
�z#TestDateTime.test_subclass_datetimecs@G�fdd�d�j�}d}d}d}||�}��||���|jd�|��}d|f|fd|tjf|�tj�fd|f|fd	|f|fd
|df|fdt|d
d��t	|dd��f|fg}|D]A\}}	}
||fD]7}�j
t|�|d��$t||�}||	�}
��|
|���|
|
���|
jd�Wd�n1s�wYqeq\dS)Ncr�)zTTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclasscr�r�r�r�r^rr r�3r�z\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__Nr�rr^rr r�2r�r�)r�rIrr�r��rz2003-04-14T12:30:15.123456gh͏�TM�ArFr�rr�r8z%Y-%m-%dT%H:%M:%S.%fr�rrCr�)
r�r�r*r�r�rr�rXrrr�r�r�)r+r�r�r�Zutc_tsr�r�rr�r�r�r��constructorrcrr^r �-test_subclass_alternate_constructors_datetime0s>


�

$�
�
����z:TestDateTime.test_subclass_alternate_constructors_datetimec
s�G�fdd�d�j�}ddifddifdddtjifdddttdd	�d
�ifg}|D]3\}}}��|��!t||�}|di|��}��||���|jd�Wd�n1sXwYq*dS)
Ncr�)z8TestDateTime.test_subclass_now.<locals>.DateTimeSubclasscr�r�r�r�r^rr r�dr�z@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__Nr�rr^rr r�cr�r�r�r0Znow_utcr�Z	now_fixedr�r�r�rFr)	r�rr�rr�r�r�r*r�)r+r�rr6Z	meth_namer�r�rcrr^r �test_subclass_nowas�
���zTestDateTime.test_subclass_nowc
s�gd�}gd��ddg}dtjttdd��ttdd��g����fdd	�|D�}|D]/}|D]*}|j|d
�}�j|d���j�|�}��||�Wd�n1sSwYq.q*dS)N)r�r�r�r�)�rrrr)rrrih�)rrr�G�)r�r�rGrbr�rwr�r�rGcs:g|]}�D]}�D]}�jg|�|�Rd|i��q
qqSr)r�)rZ
date_tupleZ
time_tupler��Z
base_timesr+r�rr r!�s��"�z<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>�r��r;)rr�rrr�r�r�r*)r+r��
separators�dtsrcr�r;r�rrcr �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](}|j|d�}|��}|j|d��|j�|�}Wd�n1siwYqFdS)Nrrr�r�rG�pQrDr�rGrKrSr�rur�rIr_rr�cS�g|]}d|�qS�r�r�rrrrr r!��z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>rcS�g|]}t|��qSrrrlrrr r!�rmr��tstr�r�rrr�r�rr�r�)r+Zbase_dtr�r�r�rcr;r�rrr �test_fromisoformat_timezone�s&
�����z(TestDateTime.test_fromisoformat_timezonec
Cs|gd�}|D]5}|�ddddddd�}|j|d	�}|j|d
��|j�|�}|�||�Wd�n1s6wYqdS)N)	r�rw��€uʁuᛇu時u🐍r�r�r"r2r�r�rEiu�rdrer��r+rfr�rcr;r�rrr �test_fromisoformat_separators�s���z*TestDateTime.test_fromisoformat_separatorsc	Csxddg}|D]3}|�ddddd�}|j|d�}|j|d	��|j�|�}|�||�Wd�n1s4wYqdS)
Nr�r�r�r"r2r�r]rdrer�rurrr �test_fromisoformat_ambiguous�s���z)TestDateTime.test_fromisoformat_ambiguouscCsddg}dtjttdd��ttdd��ttddd��g}gd	�}t|�D]Y\}}|D]R}|D]M}|d
krEd|dd}|dd�|f}|j|dd
|�d|i�}	|	j|d�}
|j|
d��|j�|
�}|�|	|�Wd�n1svwYq.q*q$dS)N)rr�rIr�r�rGr)rr�rIr�r�rGrr�r�rGrKrSr��r�rTr�rr�rrrrIrr�re�	rr�r�	enumerater�rr�r�r*)r+Zdatetime_basesr��	timespecs�ipr�r�r��new_microsecondsrcr;r�rrr �test_fromisoformat_timespecs�s2�������z)TestDateTime.test_fromisoformat_timespecsc
C�xgd�}|D]3}|j|d��#|�t��|j�|�Wd�n1s%wYWd�n1s4wYqdS)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�r��r�rvr�r�r�r�rrr �!test_fromisoformat_fails_datetime�s�����z.TestDateTime.test_fromisoformat_fails_datetimecCsLd}|�tt�t|����|j�|�Wd�dS1swYdS)Nu2018-01-03�01:0113)r8r��re�escaper�r�r�)r+r;rrr �"test_fromisoformat_fails_surrogates"�z/TestDateTime.test_fromisoformat_fails_surrogatecCs$d}|j�|�}|�|jtj�dS)Nz2014-04-19T13:21:13+00:00)r�r�r�rrr�)r+r�rcrrr �test_fromisoformat_utcsz#TestDateTime.test_fromisoformat_utcc
Cs`Gdd�d|j�}|ddddddd	ttd
dd��d�}|�|���}|�||�|�||�dS)
Nc@r)zBTestDateTime.test_fromisoformat_subclass.<locals>.DateTimeSubclassNr�rrrr r� r�r�rrr�rr_r�rGi��r#r�r)r�rrr�rr*r�)r+r�rcr�rrr r�s�z(TestDateTime.test_fromisoformat_subclassN)>r:rNrOrr�r4r�rarr�r;r�r�r�r�rDrrHrrr[rrr�r
r�run_with_tzrrrsrr'r*r�r+�unittestZskipIfr8�platformr.r/r2r<rArDrFrIrJrqr[r�r_r`rhrrrvrwr~r�r�r�r�rrrr r��st
,5D			!


(''		

;""
 1#&r�c@s"eZdZeZe�d�dd��ZdS)�TestSubclassDateTimeznot appropriate for subclassescCr�r-rr^rrr ra/sz#TestSubclassDateTime.test_roundtripN)r:rNrOr�r�r��skiprarrrr r�,sr�c@r�)�SubclassTimer"Nr�rrrr r�3r�r�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�r�r�r�rrrr r4:s
zTestTime.test_basic_attributescCsL|�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r�r�r�rrrr r�As
z&TestTime.test_basic_attributes_nonzerocCsp|�dddd�}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j|j	�}|�||�dS)Nr"rGrCrIrXr_)
r�r�r~r4r�r*r�r�r�r�)r+r�r`r>rrr raJs�zTestTime.test_roundtripcsLgd�}|j|��|j|�}|��|�|��|k�|��|k�|��|k�|��|k�|��|k�tt|��D]i}|dd�}||d||<|j|�}|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�q=tD]z�|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fd	d��|�t��fd
d��|�t��fdd��|�t��fdd��|�t��fd
d��q�dS)N�r"rGrCrIr"FTcrJr-rrrKrr r�{r�z)TestTime.test_comparing.<locals>.<lambda>crLr-rrrKrr r�|r�crMr-rrrKrr r�}r�crNr-rrrKrr r�~r�crOr-rrrKrr r�r�crPr-rrrKrr r��r�crQr-rrrKrr r��r�crRr-rrrKrr r��r�)	r�r*r~r�rrBrSrvrw)r+r�r>rrorrKr �test_comparingYsN


�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�rr�r=)r�rvr�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�r�r�r"rGrrDr�r�rrr rD�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:00rz00:00:00.000001r#z00:00:00.000010r9z00:00:00.000100rz00:00:00.001000rz00:00:00.010000i��z00:00:00.100000r�rErFr)r�r�r�r�r�r�Z12rTz12:34r�z12:34:56rz12:34:56.123r�z12:34:56.123456r�Zmonkeyr�r�z12:34:56.999rz12:34:56.000z12:34:56.000000)r�r*rr�rvr�rrrr r�sNzTestTime.test_isoformatc	Cs�dtdd�fdtdd�fdtddd	�fd
tddd
d�fdtddddd�fg}ddtjfdttd��fg}|dd�|D�7}|�ddd�}d}|D]$\}}|j|d�}||}|j|d��Wd�n1sgwYqHdS)Nr�rDr�r�rGr�rKrSr�r�r�rur�r�r�rIr_rr�r�r�rcSr�r�rr�rrr r!�r�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"�r�rC)r�)r�rvrwrrrrr �test_1653736
szTestTime.test_1653736cCsZ|�dddd�}|�|�d�d�|�|�d�d�z|�d	�WdSty,YdSw)
Nr"rGrCrIz%H %M %S %fz01 02 03 000004rru%H�%M)r�r*r!r"rrrr r$
s�zTestTime.test_strftimecCs|�dddd�}|�|�d�t|��|�td��
|�d�Wd�n1s)wYGdd	�d	|j�}|dddd�}|�|�d�d	�Gd
d�d|j�}|dddd�}|�|�d�t|��dD]#}|�|�|�|�|��|�|�|�|�|��|�|�|�d�qddS)
Nr"rGrCrIr�r)r*c@rl)zTestTime.test_format.<locals>.AcSr�r+rr^rrr r-
r�z'TestTime.test_format.<locals>.A.__str__Nr.rrrr r,
rpr,c@rl)zTestTime.test_format.<locals>.BcSr�r/rr1rrr r!$
r�z(TestTime.test_format.<locals>.B.strftimeNr3rrrr r0#
rpr0)z%H %M %Sr6)r+r�r,rr0rr: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.004000rrYz00:02:03.400000r�z12:02:03r�r]z23: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)NrXr"rGrCrIz%s(1, 2, 3, 4)r#r�z%s(10, 2, 3, 4000)rrYz%s(0, 2, 3, 400000)r�z%s(12, 2, 3)r�r]z
%s(23, 15)rZr[rrr r�6
s �����zTestTime.test_reprcCsN|�|jj|j�|�|jj|j�|�|jjt�|�|jj|jjk�dSr-)r�r�r�rzrbrr~r^rrr rcC
szTestTime.test_resolution_infocCrK)N�r�r�r�r�rGrMrGrrr rHI
rPzTestTime.test_picklingcCr�)Nr�)r�r�r�r�r*r~rUrGrrr �test_pickling_subclass_timeR
rz$TestTime.test_pickling_subclass_timec	Cszgd�}t|�D]2\}\}}|j|d��|j|�}tD]}||dd�}|�||�qWd�n1s5wYqdS)N))s,cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.r�)scdatetime
time
(U;tR.r�)s�cdatetime
time
U;�R.r�)s,cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.�r�r�r=r�)scdatetime
time
(U;tR.r�)s�cdatetime
time
U;�R.r�)rrTrU)rzr�r�rXr*)r+r�rrZr�r�r�r�rrr r[[
s
����zTestTime.test_compat_unpicklecCsh|j}|�|d��|�|dd��|�|ddd��|�|dddd��|�|d��|�|��dS)Nr"r)r�r~)r+rlrrr ruq
szTestTime.test_boolc
Cs�|j}gd�}||�}|�||���d}dD]&\}}|dd�}|||<||�}|jd
i||i��}	|�||	�|d7}q|d�}|jt|jdd�|jt|jdd�|jt|jd	d
�|jt|jdd�dS)Nr�r)rKrLrMrNr"r��r�r��r�r9r�r=rrrjrkrrr rq{
s"
zTestTime.test_replacecCs8Gdd�d|j�}|dd�}|�t|jdd��|�dS)Nc@r)z4TestTime.test_subclass_replace.<locals>.TimeSubclassNr�rrrr �TimeSubclass�
r�r�r�r�r#r�rs)r+r�rrrr rt�
s
zTestTime.test_subclass_replacecru)Ncrv)z&TestTime.test_subclass_time.<locals>.CrQcrwrxryr{r^rr r��
r~z.TestTime.test_subclass_time.<locals>.C.__new__cSrr-�r�r�r�rrr r��
r�z.TestTime.test_subclass_time.<locals>.C.newmethNr�rr^rr r��
r�r�)rIrDrKr�rFrQrH)	r�r*r9r�r�rr�r�r�r�rr^r �test_subclass_time�
r�zTestTime.test_subclass_timec	Cs�d}ddtd�dfD]}|�t|j||dd��q
|�td��|�tdgt|��d�Wd�dS1s:wYdS)	Nz2:59.0r��9r��ÿr"r�r�)�chrrvrwr�r8r�rB)r+rmZ	hour_byterrr r��
s
�"�z!TestTime.test_backdoor_resistanceN)r:rNrOrr�r4r�rar�r�rDrr�r�r$r;r�r�rcrHr�r[rurqrtr�r�rrrr r�6s0	+4
		
r�c@�4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TZInfoBasecCs�|j}Gdd�dt�}|ddd|�d�}|turdpd}|�|��|�t|tur+d	p,d
d�}|�|��|�|�|��|�dS)Nc@s eZdZdd�Zdd�ZeZdS)z7TZInfoBase.test_argument_passing.<locals>.introspectivecSs|rdpdS)N�real�nonerrbrrr rf�
sz>TZInfoBase.test_argument_passing.<locals>.introspective.tznamecSst|rdpdd�S)NrQ����rSrrbrrr rd�
szATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r:rNrOrfrdrgrrrr �
introspective�
sr�r"rGrCrr�r�r�rQrS)r�rrr*rfrrdrg)r+rlr��objr�rrr �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@r�)z3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTrycSr�r-rr^rrr r\�
r�z<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__cSr�r-rrbrrr rd�
r�z=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN�r:rNrOr\rdrrrr �NiceTry�
rUr�c@r�)z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTrycSr�r-rr^rrr r\�
r�z>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__cSr�r-rrbrrr rd�
r�z?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNr�rrrr �	BetterTry�
rUr�)r�rvrw�objectrr�)r+rlr�r�rr�rrr �test_bad_tzinfo_classes�
sz"TZInfoBase.test_bad_tzinfo_classesc

Cs�Gdd�dt�}|j}dD]Y\}}|tur |ddd||�d�}n|tur1|dddddd||�d�}|r_t|�}t|d	�\}}d
|dkrEdpFd
||f}	t|t�rT|��}|�t	|�d|	�q
|�
tt	|�q
dS)Nc@r�)z6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.EdgycSst|d�|_dSrR�rr[)r+r[rrr r\�
r�z?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__cSrar-)r[rbrrr rd�
rez@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNr�rrrr �Edgy�
�r�))�`���F)�a���T)�T)rFr"rGrCrrKrz%c%02d:%02drr�r�z01:02:03)rr�rrrr�rU�timetzr*r�rvr�)
r+r�rlr[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]}|�|���|�|���|�|���q!Gdd�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@�$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C1cSr�r-rrbrrr rdr�z4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetcSr�r-rrbrrr rgr�z.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstcSr�r-rrbrrr rfr�z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameNr�rrrr �C1�r�r"rc@r�)z*TZInfoBase.test_tzinfo_classes.<locals>.C3cS�
tdd�S)Nr�rSrrbrrr rd�
z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetcSr�)Nr�rSrrbrrr rgr�z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstcSr��N�anamerrbrrr rfr�z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNr�rrrr �C3r�r�r�rSr�r�c@r�)z*TZInfoBase.test_tzinfo_classes.<locals>.C4cSr�r�rrbrrr rdr�z4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffsetcSr�r�rrbrrr rgr�z.TZInfoBase.test_tzinfo_classes.<locals>.C4.dstcSr�rrrbrrr rfr�z1TZInfoBase.test_tzinfo_classes.<locals>.C4.tznameNr�rrrr �C4r�r�c@r�)z*TZInfoBase.test_tzinfo_classes.<locals>.C6cSr�)Ni��r�rrbrrr rd$r�z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetcSr�)Nr�r�rrbrrr rg%r�z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNrSrrrr �C6#rUr�c@r�)z*TZInfoBase.test_tzinfo_classes.<locals>.C7cSr�)Nr@r�rrbrrr rd,r�z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetcSr�)N���r�rrbrrr rg-r�z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNrSrrrr �C7+rUr�r@r�r�)r�rr�rdrgrfr*rrvrwr�)r+rlr�r�r�r�r�r�rrr �test_tzinfo_classess6
�zTZInfoBase.test_tzinfo_classescCsx|j}Gdd�dt�}|ddd|�d�}|jdd�}|jdd�}|jd	d�}|||fD]'}|||fD]}ttttttfD]}	|	||�}
|	|j	|j	�}|�
|
|�q<q2q+|tur�|jd|�d
�}|jd|�d
�}|jd	|�d
�}|||fD]E}|||fD];}||k||k}
||us�||ur�||us�||ur�d}n||ur�|ur�nnd}n	||ur�d}nd
}|�
|
|�q{qtdSdS)Nc@rl)z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetcS� |jdkrt|jd�Stdd�S�Nr#rSr��r�rrrrr rd8�

zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNrorrrr �OperandDependentOffset7rpr�r�r_r#rrCr�rt�r�rrr�r")r�rr�rrrrrrr�r*r)r+rlr�rm�d0r�r�r�r��oprpr�rrr �test_aware_compare2s@	
��
 ��zTZInfoBase.test_aware_compareN)r:rNrOr�r�r�r�r�rrrr r��
s0r�c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �
TestTimeTZcCsP|��}|�|jd�|�|jd�|�|jd�|�|jd�|�|j�dSr)r�r*r�r�r�r�r�rrrrr �
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�dSdS)6Nr�r�r"rr�rEr�METrCrFrErr�r��(rr(rSzno argscrPr-rr�r}Zt5rr r��r�z'TestTimeTZ.test_zones.<locals>.<lambda>crLr-rrr�rr 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>.BadtznamerQcSrar-rQrbrrr rf�sz/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r:rNrOr�rfrrrr �	Badtzname�sr�rGrIz%H:%M:%Sz02:03:04r�r@r�)rPrr*rr�rdrrvrwrfrgrAr�r�rr�r!r9r:r�r�)r+�estr��metr=r>r|rCZyuckr�r�rr�r �
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�rVrKr9i���r�i���)r�rPr*rAr<rrr �test_hash_edge_cases�szTestTimeTZ.test_hash_edge_casesc	Cs�d}|j|�}tD]\}}}|�||�}|�|�}|�||�q	|�|��|�d��tdd�}|jddd|d�}tD]0\}}}|�||�}|�|�}|�||�|�|j	t�|�|�
�tdd	��|�|��d�q;|�|��|�d��dS)
Nr�rGr�r�rDrKrFrrS)
r�r�r�r�r*rNrOrir�rrdrrf�	r+r�r�r�r�rr�r��tinforrr rH�s"



zTestTimeTZ.test_picklingcCs�gd�}tdd�}|jdddd|d�}|D]0}tD]+}||d	d
�}|�||t|��|�|jt�|�|��tdd��|�|�	�d�qqdS)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�rDrKrFrrrTrUrS)
rir�rXr*r�r�rrdrrf)r+r�r�r�rZr�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�rPr~)r+rlr�rrr �test_more_bools


zTestTimeTZ.test_more_boolcCs\|j}tdd�}ttdd�d�}dddd	|g}||�}|�||���d
}ddd
dd|ffD]&\}}|dd�}	||	|<||	�}
|jdi||i��}|�|
|�|d7}q.|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|d�}|j	t
|jdd�|j	t
|jdd�|j	t
|jdd�|j	t
|jdd�dS)Nr9�+100�8���rS�-200r"rGrCrIrrKrLrMrNrrr�r�r�r�r�r=rr�r�rPrr*r�rfr�rr�rvr��r+rlZz100Zzm200r�rmrr6rnror�rpZbase2Zbase3rrr rqs>
�
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@r�)z-TestTimeTZ.test_mixed_compare.<locals>.VariescS�tdd�|_dS�NrrSr�r^rrr r\Kr�z6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__cS�|jtdd�7_|jS�Nr"rS�r[rrrrr rdM�z7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr�rrrr �VariesJr�r�r�rSr�)	r�r*r�rPr�rrdrr~�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]5}|D]0}|j|d|i�}	|	��}
|j|
d
��|j�	|
�}|�
|	|�Wd�n1s[wYq0q,dS)Nra)r�r�r�r�)r_r�r�)rDr�)rIrG)ri�i�[
rGr�rKrSr�rro)r��	itertools�productrr�rr�rr�r�r*)r+Z
time_examplesZhhZmm�ssZusecr�Zttupr�r�rp�t_rtrrr r�\s.������zTestTimeTZ.test_fromisoformatc
Cs�|�dddd�}tdd�tdd�tdd	d
�tdddd�tdd
ddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D](}|j|d�}|��}|j|d��|j�|�}Wd�n1sfwYqCdS)Nr�r�rGrirDr�rGrKrSr�rur�rIr_rr�cSrjrkrrlrrr r!�rmz:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>rcSrnrrrlrrr r!�rmrrorq)r+Z	base_timer�r�r�r�rpr�rrr rrvs&
�����z&TestTimeTZ.test_fromisoformat_timezonecCsddg}dtjttdd��ttdd��ttddd��g}gd	�}t|�D]Y\}}|D]R}|D]M}|d
krEd|dd}|d
d�|f}|j|d
d|�d|i�}	|	j|d�}
|j|
d��|j�|
�}|�|	|�Wd�n1svwYq.q*q$dS)N)r�r�rGr)r�r�rGrr�r�rGrKrSr�rxrrr�rr"rr�rory)r+Z
time_basesr�r{r|r�r�Zt_tupler}r�rpr�rrr r~�s2�������z'TestTimeTZ.test_fromisoformat_timespecsc
Cr)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:30ar�r�r�rrr r��s�����z#TestTimeTZ.test_fromisoformat_failsc	Cr�)Ns12:30:45z12:30:45r�r�rrr r��s���z-TestTimeTZ.test_fromisoformat_fails_typeerrorcCsPGdd�d|j�}|ddddtjd�}|�|���}|�||�|�||�dS)Nc@r)z<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNr�rrrr r��r�r�r�rrGi�r)r�rr�r�rr*r�)r+r�ZtscZtsc_rtrrr r��s
z&TestTimeTZ.test_fromisoformat_subclasscs�G�fdd�d�j�}ddddtddd	�f}�j|�}||id
di��}��|j|���|jd���|jd���|��|�����|�d
�|j|j	d�dS)Ncrv)z*TestTimeTZ.test_subclass_timetz.<locals>.CrQcrwrxryr{r^rr r��r~z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__cSrr-r�r�rrr r��r�z2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNr�rr^rr r��r�r�rIrDrK��r�r�r"r�rFrQrH)
r�rPr*r9r�r�rdr�r�r�r�rr^r �test_subclass_timetz�s
"zTestTimeTZ.test_subclass_timetzN)r:rNrOrr�r�r�r�rHr[r�rqr`r�rrr~r�r�r�r�rrrr r�cs"W
"'
r�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$�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�rir�r�r�r�rrbrrr �test_trivial�szTestDateTimeTZ.test_trivialcsh|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�n1s�wYGdd�dt	�}|jddd|�d��|����|����|�ddd��|����Gdd�dt	�}|jddd|�d��|jdddtdd�d��|�t
��fdd��dS)Nr"r�r�rr�r2r�r�r�r�rGrCr���r)rr�rc@rl)z4TestDateTimeTZ.test_even_more_compare.<locals>.NaivecSr�r-rrbrrr rd8r�z>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNrorrrr �Naive7rpr�rDrKrFc@rl)z4TestDateTimeTZ.test_even_more_compare.<locals>.BoguscSr�)NrrSrrbrrr rdDr`z>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNrorrrr rTCrprTcs��kSr-rr�r=r>rr r�Hr�z7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)r�rPrr~r*r�r�rvrwrr�)r+r�rTrr�r �test_even_more_comparesP���
�z%TestDateTimeTZ.test_even_more_comparec	Csd}|j|�}tD]\}}}|�||�}|�|�}|�||�q	|�|��|�d��tdd�}|j|id|i��}|jdddtddd�d	�}tD]0\}}}|�||�}|�|�}|�||�|�	|j
t�|�|��tdd
��|�|�
�d�qI|�|��|�d��dS)Nr�rGr�r�rr"rr�rrS)r�r�r�r�r*rNrOrirPr�rrdrrfr�rrr rHJs$



zTestDateTimeTZ.test_picklingcCs�gd�}d}tdd�}|j|id|i��}|D]-}tD](}||dd�}|�||�|�|jt�|�|��tdd��|�|��d�qqdS)	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.)rRrtrSr�r�r"rr�r�rrTrUrS)	rir�rXr*r�rrdrrf)r+r�r�r�r�rZr�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�r2r�r�r�r�rDr�)r�rPrArrvr�rrrr �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�rr�r�rCr�rFrErr�r�rSz2002-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*rrdrrfrAr�r�)r+r�r�r�r=r>r|rCrrr r��s8


zTestDateTimeTZ.test_zonesc
CsXtdd�}tddd�}tdddd|d	�}t�||�}|�|tddddddd|d	��dS�
Nrr�r�rCrIr�rGrHr)rPrrrr�r*)r+r�rCr�rcrrr rJ�s
�zTestDateTimeTZ.test_combinec
Csxtdd�}|jddddddd|d	�}|�|��tddd��|�|��tdddd��|�|��tdddd|d	��dSr�)rPr�r*rrr�)r+r�rcrrr rI�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:30rcr"r-rr�r��nowawarerr r��r�z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>cr$r-rrr�rr r��r�cr r-rrr�rr r��r�cr#r-rrr�rr r��r�cr�r-rr)r�rr r��r�rr"r�i.)r�rTr�cr"r-rr)r��nowawareplusrr r��r�r�rZrandomtimezoner�r�r2r�r�r�rzi>rSr,r0)r�r�rPrr�r�rr�rr*r�rvrwrrn�	randrangerdrrzr�rr�)
r+Ztz55Z	timeawareZ
nowawareplus2r�Ztzrrpr�r�rzZmaxdiffZtzaZtzbr)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]4}td�D](}t�|�}	|�|	j|�t�
�j|d�}
|
�|�}t|	|�tdd�kr�nqf|�d�q`dS)NrQ�42rQrSr�r�r�rr�r]rVr��weirdtzrCr�r�z0utcnow(), now(tz), or astimezone() may be broken)r�r�rPr�rr*rdrrvrwrrrr0r�rXrZfail)r+�methrm�off42�another�againr�r�r�r�r0Znow2rrr �test_tzinfo_nows4

�

�
��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�rQrSr�rr�rdi��'r�r�)rr�r�rPr�rr*rdrrvrwrrr�)r+rr�r�rmr�r�r�r�Zutcdatetimerdr�r�rprrr �test_tzinfo_fromtimestamp's*

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

z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}|��}||�}tdd�}|�t|||�|jt|||d�dS)NrrQr�r)rr�rrPrvrw)r+rr�r�rmr�rrr �test_tzinfo_utcfromtimestampTs
z+TestDateTimeTZ.test_tzinfo_utcfromtimestampcCshGdd�dt�}|j}dD]U\}}|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@r�)z1TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DSTcS�t|t�r
t|d�}||_dSrR�rUrVr�dstvalue�r+rrrr r\d�


z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__cSrar-�rrbrrr rghrez5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN�r:rNrOr\rgrrrr �DSTcsr))����r")rBr")rr)Nr�r"r#r�r�r�rrr�r�r�rr�)rr�r&r*rArBrCrDrErFrGrHrIrvrwr�)r+rrlr�flagrCr�rrr �test_tzinfo_timetuple`s&"""z$TestDateTimeTZ.test_tzinfo_timetuplecs�Gdd�dt��|j}|�t|ddd�d�d�j�G�fdd�d��}dD]f}|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�q&|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>.DSTrcSrrRrrrrr r\�r	z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__cSrar-r
rbrrr rg�rez1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dstN)rrrrrr r�s
rr"rrcs"eZdZd�fdd�	Zdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNcs��||�t|d�|_dSrR)r\r�uofs)r+rZdofs�rrr r\�sz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__cSrar-)rrbrrr rd�rez8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffsetr-r�rrrr �UOFS�sr)r
rBrNrGrCr#r�r�r�i���rtr�r�c@rl)z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFScSr�r-rrbrrr rd�r�z8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNrorrrr �NOFS�rprc@rl)z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFScSr�)Nr�rrbrrr rd�r�z8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNrorrrr �BOFS�rprr�rr]r�i+�r�r�r�r2r�r�r�r�)#rr�rvr{rdZutctimetupler*r�rAr�rBrirCrDrEr�rFr�rGr�rrHrIr&rwrr�r�rzr�rXrrerr9)r+rlrrrCr�rrr�ZdtzrhZhugerrr �test_utctimetuple�s\��  �z TestDateTimeTZ.test_utctimetuplecCstdd�}tdd�}tdd�}tdd�}|j}d}d||||fD]f}d	D]a}|d
ddd
dd||d�}	d|r7dp8d}
|durB|	��pCd}|
|}|	��}
|�|
|d|�|�|
|	�d��|�|	�d�|d|�|�|	�d�|d|�|�t|	�|d|�q$q dS)Nrr���z+03:40i���z-03:51r�z
0001-02-03)riyr"rGrCrIrDr�rz04:05:59z.987001rw�kuሴr�)rPr�rfrr*r�)r+r'ZplusZminus�unknownrlZdatestrZofsrrCZtimestrZofsstrZtailstrZisorrr �test_tzinfo_isoformat�s(



��z$TestDateTimeTZ.test_tzinfo_isoformatc	Cs6|j}tdd�}ttdd�d�}dddd	d
dd|g}||�}|�||���d
}dddddddd|ffD]&\}}|dd�}	||	|<||	�}
|jdi||i��}|�|
|�|d7}q4|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|ddd�}|j	t
|jdd�dS)Nr9r�r�rSr�r"rGrCrIrDrKrFrrfrgrhrKrLrMrNrrr�r�r�rirr�r�rrr rq�s>
�
zTestDateTimeTZ.test_replacecCsDtdd�}tdd�}ttdd�d�}|jj|d�}|�|j|�|�t|j|�|�|j�}|�|j|�|�	|�
�|�
��|�	|��|���|�|�}|�|j|�|�	|��tdd��||��}||�|�7}|j
|d	�}|�	|�
�|�
��|�	|��|���|�	|��|���|�|j|j�|�	||�dS)
N�NonerOZ44rDr�Zm300rQr�r)rPrr�r�r�rrvr�rXr*rrrdr�r�)r+ZfnoneZf44mZfm5hrcr�rpr�rrr �test_more_astimezones*


z#TestDateTimeTZ.test_more_astimezoner�cCs4|j�tj�}|�|�d�|�|�|��|�dSr-)r�r�rr�r*rXrbrrr �test_astimezone_default_utc-sz*TestDateTimeTZ.test_astimezone_default_utcrcCs�|jdddddtjd�}|��}|�||�|�|�d�d�|jdddd	dtjd�}|��}|�||�|�|�d�d
�dS)NrrrtrIrKr�rr5z	-0500 ESTrDz	-0400 EDT)r�rr�rXr*r!)r+rcr�rrr �test_astimezone_default_eastern5sz.TestDateTimeTZ.test_astimezone_default_easterncCs8tddddtjd�}|��}|��}|�|j|j�dS)NrRrtr"rDr)rrr�rXr*r)r+r�r�r`rrr �!test_astimezone_default_near_fold@sz0TestDateTimeTZ.test_astimezone_default_near_foldc
Cs�|j}Gdd�dt�}|ddddddd	|�d
�}|jdd�}|jdd�}|jdd�}|||fD]}|||fD]}||}	t|j|jd
�}
|�|	|
�q6q/|ddddddd	�}|jd|�d�}|jd|�d�}|jd|�d�}|||fD]I}|||fD]A}||}	||us�||ur�||us�||ur�td�}
n ||ur�|ur�nntd�}
n||ur�tdd
�}
ntdd
�}
|�|	|
�q{qtdS)Nc@rl)zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetcSr�r�r�rrrr rdNr�zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNrorrrr r�Mrpr�r�r_r#rtr�r�rrrCr�rSr�ri���r�)r�rr�rr�r*)r+rlr�rmr�r�r�r�r�rpr�rrr �test_aware_subtractHs:	� 


��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@r�)z1TestDateTimeTZ.test_mixed_compare.<locals>.VariescSr�r�r�r^rrr r\�r�z:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSr�r�r�rrrr rd�r�z;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNr�rrrr r��r�r�r�rSr�)	rr*r�rPr�rrdrr~r�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)Ncrv)z2TestDateTimeTZ.test_subclass_datetimetz.<locals>.CrQcrwrxryr{r^rr r��r~z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__cSrr-)r�r�r�rrr r��r�z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNr�rr^rr r��r�r�r�r�r2rIrDrKr�r�r�r"r�rFrQrH)
r�rPr*r9r�r�rdr�r�r�r�rr^r �test_subclass_datetimetz�s
"z'TestDateTimeTZ.test_subclass_datetimetzN)r:rNrOrr�r�r�rHr[r�r�rJrIr�rrrrrrrrqrrr�rrrrr`r rrrr r��s:E%A%#
$P'



,r�cCs d|��}|r|t|�7}|S)NrK)r�r)rcZ
days_to_gorrr �first_sunday_on_or_after�sr!rSr�rrIrGr=c@r�)�
USTimeZonecC�"t|d�|_||_||_||_dS�Nr��r�	stdoffset�reprname�stdname�dstname�r+r�r'r(r)rrr r\��
zUSTimeZone.__init__cCrar-�r'r^rrr r_�rezUSTimeZone.__repr__cC�|�|�r|jS|jSr-�rgr)r(rbrrr rf��
zUSTimeZone.tznamecC�|j|�|�Sr-�r&rgrbrrr rd�r�zUSTimeZone.utcoffsetcCsb|dus	|jdurtSttj|jd��}ttj|jd��}||jdd�kr,|kr/tStStS�Nrir)rr�r!�DSTSTARTr�r��DSTENDr��r+rcr��endrrr rg�s�zUSTimeZone.dstN�r:rNrOr\r_rfrdrgrrrr r"��r"r�r�r�rPrL�CentralZCSTZCDTrH�MountainZMSTZMDTi�����PacificZPSTZPDTr�i0���ZUTCfakec@sdeZdZedddd�Zedddd�ZeZdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestTimezoneConversionsr�rIrFrGr#rSr"c
Cs|�|��t�|�|�|�|�|�|�}|�|�}|��|��krE|jdkrE|�|t|�|�|��t�|�|�|�|�|��n|�||�|t}|�|�}	|��|��kr�|jdkr�|�|	|jdd��|t7}|�|�}	|�|	|jdd��dS|�|	|t�dS)NrGrr"r�)r*rgr�rXrr�r�r�)
r+rcr�r��dston�dstoff�asutc�there_and_backZnexthour_utcZnexthour_tzrrr �checkinside�s&


�


z#TestTimezoneConversions.checkinsidecCsF|�|��t�|�|�|�|�|�|�}|�|�}|�||�dSr-)r*rgr�rX)r+rcr�r�r?r@rrr �checkoutside/s


z$TestTimezoneConversions.checkoutsidec	Cs�|jj|d�}|jj|d�}tdd�tttdd�tdd�fD]8}|�|||||�||||fD]}|�|||||�q1|�|||�||||fD]	}|�|||�qLqdS)Nrr�rr"rSr�)r=r�r>r�DAYr�rArB)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-)rDr��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]U}tt	fD]N}|j
tdd�}||�d�8}||�d�}	|	j|d�}
d
D]-}|j
j|d�}dD]}
|j|
d�}|
j|
d�}	|	�|�}|�|jdd�|�q}|
t7}
qrqRqLdS)NrIr�i��z-0900rrrCr�rK�r�rr"rG)rr"r"rG�rr�r�r�)
r=rrPr�rXr�r*rErFr;r>rdr�)r+ZfourbackZninewestr�rpZsixutcr�r�Zfirst_std_hourr?Z	asutcbaseZtzhourZexpectedbaser�Zastzrrr �test_trickyhs6

���z#TestTimezoneConversions.test_trickycCs�Gdd�dt�}|j��jtd�}|�|��Gdd�d|�}|�t|j|��Gdd�d|�}|�dd	d	�jtd�}|�t|j|��dS)
Nc@r�)z2TestTimezoneConversions.test_bogus_dst.<locals>.okcS�tSr-�r�rbrrr rd�r�z<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetcSrKr-rLrbrrr rg�r�z6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNrSrrrr �ok�rUrMrc@rl)z5TestTimezoneConversions.test_bogus_dst.<locals>.notokcSr�r-rrbrrr rg�r�z9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN�r:rNrOrgrrrr �notok�rprOc@rl)z<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokcSs|jdkrdSdtS)Nr�r#)r�r�rbrrr rg�s
z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dstNrNrrrr �tricky_notok�rprPr�r")rr�r�r�rErXrvr�)r+rMr�rOrPrcrrr �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]E}|j|d�}|dkrn|td
d�8}t�|�}	|�	||	�||j}|�|�}	|�	||	�|jtd��|�}	|�	||	�|t7}|t7}q[|jjdtd	�}|j|d�}dD]:}|j|d�}t�|�}	|�	||	�||j}|�|�}	|�	||	�|jtd��|�}	|�	||	�|t7}|t7}q�dS)Nrc@rl)z<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonecSs
||jSr-)r&rbrrr r��r`zDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN�r:rNrOr�rrrr �FauxUSTimeZone�rprSr��FEasternZFESTZFEDTrIrH)r�rr"rCrIrDr�r�r"r)rr"r"rGrCrI)rvrwr�r�rr0r�rEr�r*rrr�r"r=rr&rXr�r>)
r+r�ZenowrSrTr�ZfstartZwallr�rprrr r��sN








�z$TestTimezoneConversions.test_fromutcN)r:rNrOrr=r>r�rArBrDrGrJrQr�rrrr r<�s43r<c@r�)�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)NcrPr-rr�Zas_dateZas_datetimerr r�r�z+Oddballs.test_bug_1028306.<locals>.<lambda>crLr-rrrVrr r�r�crOr-rrrVrr r�r�crJr-rrrVrr r�r�crQr-rrrVrr r�r�crMr-rrrVrr r�r�crRr-rrrVrr r�r�crNr-rrrVrr r�r�Tr"r�)riFr)rr�rr�rr~r�rvrwr*�__eq__rir�r�r�r�r�)r+Z
different_dayZas_differentZdate_scZdatetime_scrrVr �test_bug_1028306�s4

�zOddballs.test_bug_1028306c	Cs^t��t�t��t�t�tt��fD]}|�t	��d|_
Wd�n1s'wYqdSrk)rr�rrr0rrrrv�AttributeErrorr$)r+r�rrr �test_extra_attributess����zOddballs.test_extra_attributescCsGdd�d�}Gdd�dt�}d|d�t�d�t�d�|d�|d�d	fD]]}|�tt|dddddd�	|�ttd|ddddd�	|�ttdd|dddd�	|�ttddd|ddd�	|�ttdddd|dd�	|�ttddddd|d�	|�ttdddddd|�	q$dS)
Nc@r�)z-Oddballs.test_check_arg_types.<locals>.NumbercSs
||_dSr-��value)r+r\rrr r\)r`z6Oddballs.test_check_arg_types.<locals>.Number.__init__cSrar-r[r^rrr �__int__+rez5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r:rNrOr\r]rrrr �Number(r�r^c@r)z,Oddballs.test_check_arg_types.<locals>.FloatNr�rrrr �Float.r�r_g$@g������%@r#z10.9Z10)r��decimalZDecimalrvrwr)r+r^r_�xxrrr �test_check_arg_types's��zOddballs.test_check_arg_typesN)r:rNrOrXrZrbrrrr rU�s%
rUc@rl)�tzinfo2cCs�	t|t�s
td��|j|urtd��|jdd���}|jdd���}|dus1|dus1|��dur3t�||krE||}|��}||krE|S||fD] }||}|��|krY|S|jdd�}|��|kri|SqItd��)N�&fromutc() requires a datetime argument�dt.tzinfo is not selfrr�r"zNo suitable local time found)rUrrwrr�r�rdrg)r+rcZoff0Zoff1�ldtZoffrrr r�Es.

�ztzinfo2.fromutcNrRrrrr rcCsrcc@r�)�USTimeZone2cCr#r$r%r*rrr r\gr+zUSTimeZone2.__init__cCrar-r,r^rrr r_mrezUSTimeZone2.__repr__cCr-r-r.rbrrr rfpr/zUSTimeZone2.tznamecCr0r-r1rbrrr rdvr�zUSTimeZone2.utcoffsetcCs�|dus	|jdurtSttj|jd��}ttj|jd��}|jdd�}|t|kr0|kr1tS||kr=|tkrFnn|jrDtStS||krR|tkr\ntS|jrZtStStSr2)	rr�r!r3r�r�r4r�r�r5rrr rgys��zUSTimeZone2.dstNr7rrrr rger8rg�Eastern2�Central2�	Mountain2�Pacific2c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�Europe_Vilnius_1941cCs$tdddd|d�tdddd|d�gS)N�rKr�rsrr�rr^rrr �	_utc_fold���zEurope_Vilnius_1941._utc_foldcCs$tdddd|d�tdddd|d�gS)NrmrKr�rr�rrnr^rrr �	_loc_fold�rpzEurope_Vilnius_1941._loc_foldcC�B|��\}}||krdtS||kr|jrdtSdtSdtS)NrCrG�rqr�r��r+rcZ
fold_startZ	fold_stoprrr rd��zEurope_Vilnius_1941.utcoffsetcCrr)Nrr"rsrtrrr rg�ruzEurope_Vilnius_1941.dstcCs.|��\}}||krdS||krd|jSdS)N�MSK)rv�CESTrw)rqr�rtrrr rf�s
zEurope_Vilnius_1941.tznamecCsV|jdkrt�|��\}}||kr|dtS||kr%|dtjdd�S|dtS)NrmrCrGr"r�)r�r{ror�r�rtrrr r��s
zEurope_Vilnius_1941.fromutcN)	r:rNrOrorqrdrgrfr�rrrr rl�s			rlc@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)NrmrKr�r�r�rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rrsz"Mon Jun 23 23:00:00 1941 CEST+0200r"rz"Tue Jun 24 00:00:00 1941 CEST+0200)rlrrr�rXr*r!r�r�rgr~)r+�Vilnius�gdtrfrrr �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)NrmrKr�rr�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)rlrrXrr�r*r!)r+ryrfrzrrr �test_vilnius_1941_toutc�s*����z3TestLocalTimeDisambiguation.test_vilnius_1941_toutccCsztddd�}tddddd�}|�|jd�|�|jd�|�t��tdddddd�Wd�dS1s6wYdS�Nrr"r�)rrr*r�rvrw�r+r�rcrrr �test_constructorss"�z-TestLocalTimeDisambiguation.test_constructorscCs@tddddd�}|��}|�|jd�|��}|�|jd�dS)Nr"r�)rrr*r�r�)r+rcr�rrr �test_members
z'TestLocalTimeDisambiguation.test_membercCs�td�}tddd�}|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|jdtd�}|jdtd�}|�|jdd�jd�|�|jdd�jd�|�t��|jdd�Wd�n1spwY|�t��|jdd�Wd�n1s�wY|�t��|�ddddd�Wd�n1s�wY|�t��|�ddddddddd�	Wd�dS1s�wYdS)Nrr"r�)r�rrrG)	rrr*r�r�r�rvr�rwr~rrr rqs,���"�z(TestLocalTimeDisambiguation.test_replacecCs@td�}tddd�}|�||jdd��|�||jdd��dSr})rrr*r�r~rrr r�2sz+TestLocalTimeDisambiguation.test_comparisoncCsPtd�}tddd�}|�t|�t|jdd���|�t|�t|jdd���dSr})rrr*rAr�r~rrr �	test_hash8s z%TestLocalTimeDisambiguation.test_hashrcCs<d}t�|�}t�|d�}|�|jd�|�|jd�dS)NiX�UTr<rr")rr�r*r�)r+r`�dt0rxrrr r�>s

z.TestLocalTimeDisambiguation.test_fromtimestampzAustralia/Lord_HowecCslt�d�}t�d|�dkr|�d�d}t�|�}t�|d�}|�||�|�|jd�|�|jd�dS)	N�����A�%Z%z�	LHST+1030�>Australia/Lord_Howe timezone is not supported on this platformi�U�rr")r%rr!r;rr�r*r�)r+�tmr`rr=rrr �test_fromtimestamp_lord_howeFs


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs|�t�d�jd�dSr)r*rr�r�r^rrr �%test_fromtimestamp_low_fold_detectionVszATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tddddd�}|jdd�}|�|��d|���dS)NrrrtrGr"r�r�r<)rr�r*r�)r+r�rxrrr �test_timestamp[s
�z*TestLocalTimeDisambiguation.test_timestampcCsht�d�}t�d|�dkr|�d�tddddd	�}|jd
d���}|jdd���}|�|d|�dS)
Nr�r�r�r�rRrIrDr"rGrr�r�)r%rr!r;rr�r�r*)r+r�r��s0�s1rrr �test_timestamp_lord_howebs

z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tddddd�}|jdd�}|��}|��}|�|��d�|�|��d�|�|t|�|�|jd	�|�|jd	�dS)
NrrrtrGr"r�r�rPr�r)rr�rXr*rfr�r�)r+r�rxZadt0Zadt1rrr r[lsz+TestLocalTimeDisambiguation.test_astimezonec	Csztdd�}tddddd�}tD]+\}}}||fD]!}|�||�}|�|�}|�||�|�|dkr3dn|j|j�qqdS)Nr"r�rIr)rrr�r�r�r*r�)	r+r�rcr�r�rr�r`r�rrr �test_pickle_fold{s

��z,TestLocalTimeDisambiguation.test_pickle_foldcCs>tdd�}tddddd�}|�t|�d�|�t|�d�dS)Nr"r�zdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))rrr*r�r~rrr r��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�qbdS)Nr�r#rSr"rrGr�rIrIrF)	rrhrrbr*rgr�r�r�)r+�	dt_summer�	dt_winterr�rcrrr r��s�z$TestLocalTimeDisambiguation.test_dstcCs�tddddtd�tj}tddddtd�}|�|��dt�|�|��dt�|�|jdd	���dt�|�|jdd	���dt�dS)
Nr�r#rSr"rrGrJr�r�)rrhrrbr*rdr�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#rSrKrrFrIrDrr�r")r�rs)rSr"rG)rKrs)
rrhrrbr�r*r�r�rir�)	r+Zu_summerZu_winterZt_summerZt_winterr�rr=r�rrr r��s0






z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd�}|�||�tj��tdddtd�}|�||�tj��dS)Nr�r"rrK)rrhr*rXrr�rrrr �test_mixed_compare_regular�sz6TestLocalTimeDisambiguation.test_mixed_compare_regularcC�<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�r#rSr"rGr�rrhrXrr�r�)r+�t_foldZ
t_fold_utcrrr �test_mixed_compare_fold��z3TestLocalTimeDisambiguation.test_mixed_compare_foldcCr�)Nr�rIrFrGrGrr�)r+�t_gapZ	t_gap_utcrrr �test_mixed_compare_gap�r�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#rSrGrIrFrG)rrhr*rAr�)r+r�r�r�rrr �test_hash_aware�s z+TestLocalTimeDisambiguation.test_hash_awareN)r:rNrOr{r|rr�rqr�r�rr�r�r�r�r�r�r[r�r�r�r�r�r�r�r�r�rrrr rx�s8



	


!rxcCs"t�|�\}}t|d�t||�Sr-)r��tee�nextr�)�iterablerrrrr �pairs�s

r�c@s�eZdZdZdd�Zedd��Zedd��Zedd	��Z	e
d
dd���Zdd
�Z
dd�Zdd�Zdd�Zdd�Zed(dd��Zed)dd��Zdd�Zdd�Zed*d d!��Zd"d#�Zd$d%�Zd&d'�ZdS)+�ZoneInfoz/usr/share/zoneinfocCs 	||_||_|�||�|_dSr-)�ut�ti�invertr)r+r�r�rrr r\�szZoneInfo.__init__cCs�td|�td|�f}|rT|ddt}|dd|7<|dd|7<tdt|��D]$}|d|||ddt7<|d|||dt7<q/|S)Nr�rr")r�SECrrB)r�r�rr[rrrr r�s$"zZoneInfo.invertc	CsF|�d���dkr
td��|�d�td�}|�|d�tjdkr%|��td�}|�||d�tjdkr:|��td	�}|�||d�g}t	|d
�D]}|�
t�d|�d���qN|�|d
�}t
|�D]\}\}}	}
||
|�d|
����}td|�|	|f||<qhdgt|�}t
|�D]
\}}
||
||<q�|||�}|S)NrIZTZifznot a zoneinfo filerurrCr>rr0r"z>lbbrKrG)�read�decoder��seekr�fromfiler8�	byteorder�byteswaprr�struct�unpackrz�findrrB)rl�fileobj�countsr�Ztype_indicesZttisrZabbrsZgmtoff�isdstZabbrind�abbrr��idxr+rrr r�s2



zZoneInfo.fromfilecCsHtj�|j|�}t|d��
}|�|�Wd�S1swYdS)N�rb)�os�path�join�zoneroot�openr�)rlr6r�r#rrr �fromname3s$�zZoneInfo.fromnamerbr"cCs�	t|t�s
td��|j|urtd��|��|jd|jd|jd|j	}||j
dkr8|jd}d}n(t�
|j
|�}|j|d|�\}}|d|d}|td||j
|d�k}||d7}|rn|jdd	�S|S)
Nrdrer	r<rr"rrGr�)rUrrwrr�r��EPOCHORDINALr�r�r�r�r��bisect�bisect_rightrr�)r+rcr�Zttir�r�Ztti_prev�shiftrrr r�;s.

���
zZoneInfo.fromutccCs\|��|jd|jd|jd|j}|j|j}t�||�}|j	t
d|d�|S)Nr	r<rrr")r�r�r�r�r�rr�r�r�r�rz)r+rcrr�rr�rrr �_find_tiYs���zZoneInfo._find_ticC�|�|d�Sr�r�rbrrr rdc�zZoneInfo.utcoffsetcCs|�|d�}|r
tStSrk)r�r�r�)r+rcr�rrr rgfszZoneInfo.dstcCr�)NrGr�rbrrr rfnr�zZoneInfo.tznameNccs��|dur|j}tj�|d�}zt|�}Wn
tyYdSw|� |D]}|��}|r9|�d�s9|��dVq%Wd�dS1sEwYdS)Nzzone.tab�#rG)	r�r�r�r�r�r�stripr4r)rlZzonedirZzone_tabr#�linerrr �	zonenamesqs"����"�zZoneInfo.zonenamescCs�d}}}}tj}}t}}	tj}
}d}}
tj}}d}}t|dd�}|��D]v}|d7}|�|�}|��D]f\}}||krEq<|tkrp|d7}||f||fkr[|}|}
|}|tj|f|tj|
fkro|}|}|}
q<|tkr�|d7}|}||f|	|fkr�|}	|}|}|tj|f|tj|fkr�|}|}|}q<|d7}q<q-|||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)
rrzr�rr�r�r��transitions�printry)rl�
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�rcr�Ztrans_countsrrr �stats�s`



��
�
�zZoneInfo.statsccsJ�tt|j|j��D]\\}}\}}|d|d}t�|�|fVq
dSr)r�r�r�r�rr�r+�_Zprev_tir�r�r�rrr r��s
�"�zZoneInfo.transitionsccsr�	tt|j|j��D]+\\}}\}}|d|d}|tkr6|d|dkr6t�|�||d|dfVqdS)Nrr"rG)r�r�r�r�r�rrr�rrr �nondst_folds�s�"��zZoneInfo.nondst_foldsFc

Csnd}|��D].}|�|�}|��D]"\}}}}	|j|ks"|r#||	kr#q|d7}td||||||	f�qqdS)Nrr"z%3d) %-30s %s %10s %5s -> %s)r�r�r�r�r�)
rlZ	same_abbrr�r�r�r�rcr�Z	prev_abbrr�rrr �print_all_nondst_folds�s
���zZoneInfo.print_all_nondst_foldsccs,�|��D]\}}|tkr||fVqdSr-�r�r��r+r�r�rrr �folds�s���zZoneInfo.foldsccs*�|��D]
\}}|tkr||fVqdSr-r�r�rrr �gaps�s�
��z
ZoneInfo.gapsccs"�|��D]	\}}|s|VqdSr-)r�r�rrr �zeros�s���zZoneInfo.zerosr-)r")Fr")r:rNrOr�r\r{r��classmethodr�r�rr�r�r�r�rdrgrfr�r�r�r�r�r�r�r�rrrr r��s4

$

0r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�ZoneInfoTestzAmerica/New_Yorkc
Csxtjdkr
|�d�tjdkr|�d�z
t�|j�|_WdSty;}z|�d|j|f�WYd}~dSd}~ww)N�vxworksz"Skipping zoneinfo tests on VxWorksr,z"Skipping zoneinfo tests on WindowszSkipping %s: %s)r8r�r;r�r�r�r��FileNotFoundError)r+�errrrr r��s



"��zZoneInfoTest.setUpcCs<|�|jdd�|jt|j�f|jdd�|jt|j�f�dS)Nr)r*r�r��idr)r+rrrrr �assertEquivDatetimes�s�z!ZoneInfoTest.assertEquivDatetimesc	Cs�|j}|��D]u\}}d|d||tjfD]E}||}|�|j|d��}|�|jd�|jtj	d��
|�}|�||�|��}|�|jdd�||�|�|�
tj	�|jtj	d��qtj|fD]}||}|j|d�}|�|�}|�|jd�qcqdS)Nrr
rr")
r�r�rrbr�r�r*r�rr�rXr�rd�	r+r�rcr�r��udtrfZadtrdrrr �
test_folds�s(�
��zZoneInfoTest.test_foldsc	Cs,|j}|��D]�\}}d|d||tjfD]^}||}|j|d�}|�|�}|�|jd�|jtj	d��
|�}|�||�|��}|�|jdd�|jdd�|�|�|j|d��||}|�
|jdd���|jdd���d|�qtj|fD]}||}|�|j|d��}|�|jd�q|qdS)Nrr
rr"r�zAt %s.)r�r�rrbr�r�r*r�rr�rXr�rdZ
assertLessr�rrr �	test_gapss,
 ���zZoneInfoTest.test_gapsc	Cs�d|jvs|j�d�r|�d|j�|j}tj�d�}|jtjd<z�t��|�	�D]{\}}|j
dkr6nq|tddd�t}|t}dd	d
d|d|d|d
fD]%}||}t�
|�}	t�
||�jdd�}
|�|	|
�|	��}|�||�qS|dkr�t�
|�|d}|��}
|jdd���}|�|
||d�|�|||d�q+W|dur�tjd=n|tjd<t��dS|dur�tjd=n|tjd<t��w)NZRiyadh8zright/zSkipping %s�TZi�rbr"i���i��r�ri@i�2rrGr�)r�r4r;r�r��environ�getr%�tzsetr�r�rr�r�r�r�r�r*)r+r�r�r�r�r�r�r�r`ZsdtZtzdtr�rcZts0Zts1rrr �test_system_transitionssL

�
�
�

�


z$ZoneInfoTest.test_system_transitionsN)	r:rNrOr�r�r�r�r�r�rrrr r��s
r�cseZdZ�fdd�Z�ZS)�ZoneInfoCompleteTestcshg}td�r,t��D]!}td|tfi�}||_t|�D]}|�d�r*|�||��qq
t	��
|�dS)NZtzdatazZoneInfoTest[%s]Ztest_)r
r�r�r�r�r�r.r4r�superr\)r+r�r6ZTest�method�r9rr r\Es
��zZoneInfoCompleteTest.__init__)r:rNrOr\�
__classcell__rrr�r r�Dsr�c@r�)�IranTestzAsia/TehranN)r:rNrOr�rrrr r�Qr�r�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�Vs
zCapiTest.setUpc	CsRdD]$}t�|�}|j|d��|�|tj�Wd�n1s!wYqdS)N�TF)�	use_macro)r�Zget_timezone_utc_capir�r�rr�)r+r�Zcapi_utcrrr �
test_utc_capi_s
���zCapiTest.test_utc_capic
	Cs�t��\}}}ttdd�d�}ttdd��}d||fd||fd||fg}|D]U\}}}	|j|d��B|�||	�tdd	d
|d�}
tdd	d
|	d�}|�|
|�|�|
��|���tdd	d
dtjd�}|�|
�	tj�|�Wd�n1svwYq&dS)
Nr�r�r��est_capi�	est_macro�est_macro_nn)r6r�rGrIrrD)
r�Zmake_timezones_capirrr�r*rrfr�rX)
r+r�r�r�Z	exp_namedZexp_unnamed�casesr6Ztz_actZtz_exprxr�rYrrr �test_timezones_capifs&����zCapiTest.test_timezones_capic
C�Gdd�dt�}t|fD]?}dD]:}||�}|j||d��%t�|�\}}}|�||j�|�||j�|�||j�Wd�n1sEwYqqdS)Nc@r)z=CapiTest.test_PyDateTime_DELTA_GET.<locals>.TimeDeltaSubclassNr�rrrr �TimeDeltaSubclass�r�r�)�r��7韆r��rlr)rr�r�ZPyDateTime_DELTA_GETr*r�r�r�)r+r��klassr�rCr�r�r�rrr �test_PyDateTime_DELTA_GET������z"CapiTest.test_PyDateTime_DELTA_GETc
Cr�)Nc@r)z2CapiTest.test_PyDateTime_GET.<locals>.DateSubclassNr�rrrr r��r�r�))r�r"rG)rrrGr�r�)rr�r�ZPyDateTime_GETr*r�r�ri)r+r�r�r�rCr�r�rirrr �test_PyDateTime_GET�r�zCapiTest.test_PyDateTime_GETc

Cs�Gdd�dt�}t|fD]Z}ddddddd	d
tjffD]J}||�}|j||d��5t�|�\}}}}}	|�||j�|�||j�|�||j	�|�||j
�|�|	|j�Wd�n1s`wYqqdS)Nc@r)z;CapiTest.test_PyDateTime_DATE_GET.<locals>.DateTimeSubclassNr�rrrr r��r�r�)��r�r�rr�r�r�r�r�r�rr�r�r�r�)
rrr�r�r�ZPyDateTime_DATE_GETr*r�r�r�r�r�r)
r+r�r�r�rCr�r�r�r�rrrr �test_PyDateTime_DATE_GET�s(�������z!CapiTest.test_PyDateTime_DATE_GETc

Cs�Gdd�dt�}t|fD]W}dddddtjffD]J}||�}|j||d��5t�|�\}}}}}	|�||j�|�||j�|�||j	�|�||j
�|�|	|j�Wd�n1s]wYqqdS)	Nc@r)z7CapiTest.test_PyDateTime_TIME_GET.<locals>.TimeSubclassNr�rrrr r��r�r�)r�r�r�r#r�r�r�r#r�)
rrr�r�r�ZPyDateTime_TIME_GETr*r�r�r�r�r�r)
r+r�r�r�rCr�r�r�r�rrrr �test_PyDateTime_TIME_GET�s$������z!CapiTest.test_PyDateTime_TIME_GETcCst��\}}}|jdd��|�|tj�Wd�n1swY|jdd��|�|tj�Wd�n1s<wY|jdd��>|�|tj�ttdd�d�}|�||�t	dd	d
|d�}t	dd	d
|d�}|�||�|�|�
�|�
��Wd�dS1s�wYdS)N�utc0)Ztestname�utc1�non_utcrr�r�r�rGrIr)r�Zget_timezones_offset_zeror�r�rr�r�rr*rrf)r+rrrZnon_utc_exprxr�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]&}d	D]!}|j||d
��|�|||��Wd�n1s}wYqaq]dS)Nc@r)z.CapiTest.test_check_date.<locals>.DateSubclassNr�rrrr r��r�r���r"T�
2011-01-01r�rr���arg�exact)
rrr�Zdatetime_check_dater~r�rr�rrr�rr�)	r+r�rCZdsrcZis_dater�rr	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]&}d	D]!}|j||d
��|�|||��Wd�n1sgwYqKqGdS)Nc@r)z.CapiTest.test_check_time.<locals>.TimeSubclassNr�rrrr r��r�r�r�r�Tr"rrr�r)rr�Zdatetime_check_timer~r�rr�rrr�rr�)r+r�r�r�Zis_timer�rr	rrr �test_check_time�s&

�����zCapiTest.test_check_timec
Cs�Gdd�dt�}tddddd�}|ddddd�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtd�tj	t
ddd�g}|D]&}d	D]!}|j||d
��|�|||��Wd�n1smwYqQqMdS)Nc@r)z6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNr�rrrr r�r�r�rr"r�r�Trr�r)rr�Zdatetime_check_datetimer~r�rr�rrr�rr�)r+r�rcrgZis_datetimer�rr	rrr �test_check_datetime
s&�����zCapiTest.test_check_datetimec
Cs�Gdd�dt�}td�}|d�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtjt	ddd�t
ddd�g}|D]&}dD]!}|j||d��|�|||��Wd�n1sgwYqKqGdS)	Nc@r)z4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNr�rrrr r�(r�r�r"Trrr�r)rr�Zdatetime_check_deltar~r�rr�rr�rrr�)r+r�rZtdsZis_timedeltar�rr	rrr �test_check_delta's&�����zCapiTest.test_check_deltac	
CsGdd�dt�}t�}|�}ttdd��}tj}|�||��|�||��|�||��|�||d��|�||d��|�||d��t�t�ddt	ddd�t
ddd�g}|D]&}d	D]!}|j||d
��|�|||��Wd�n1sywYq]qYdS)Nc@r)z2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNr�rrrr �TZInfoSubclassBr�rr�r�Tr"rrr�r)rrrr�Zdatetime_check_tzinfor~r�rr�rrr�)	r+rr�Ztzisr�Z	is_tzinfor�rr	rrr �test_check_tzinfoAs,�����zCapiTest.test_check_tzinfoc	C�htddd�}dD])}|j|d��t�||j|j|j�}|�||�Wd�n1s,wYqdS)Nr�r�r��FT��macro)rr�r�Zget_date_fromdater�r�rir*�r+�exp_dater�
c_api_daterrr �test_date_from_date^�����zCapiTest.test_date_from_datecCs�tddddddd�}dD]1}|j|d	��!t�||j|j|j|j|j|j	|j
�}|�||�Wd�n1s8wYqdS)
Nr�r�r�rr�r�r�rr)rr�r�Zget_datetime_fromdateandtimer�r�rir�r�r�r�r*rrrr �test_datetime_from_dateandtimeks"�
���z'CapiTest.test_datetime_from_dateandtimecCs�tddddddd�}dD]A}d	D]<}|j||d
��+t�||j|j|j|j|j|j	|j
|j�	}|�||�|�|j|j�Wd�n1sGwYqqdS)Nr�r�r�rr�r�r��rr"r�rr�)
rr�r�Z#get_datetime_fromdateandtimeandfoldr�r�rir�r�r�r�r�r*)r+rr�rrrrr �%test_datetime_from_dateandtimeandfold|s*�����z.CapiTest.test_datetime_from_dateandtimeandfoldc	Csntdddd�}dD]+}|j|d��t�||j|j|j|j�}|�||�Wd�n1s/wYq	dS)Nrr�r�r�rr)	rr�r�Zget_time_fromtimer�r�r�r�r*)r+�exp_timer�
c_api_timerrr �test_time_from_time�s����zCapiTest.test_time_from_timecCs�tdddd�}dD];}dD]6}|j||d��%t�||j|j|j|j|j�}|�	||�|�	|j|j�Wd�n1s>wYq
q	dS)Nrr�r�r�rrr)
rr�r�Zget_time_fromtimeandfoldr�r�r�r�r�r*)r+rr�rrrrr �test_time_from_timeandfold�s$�����z#CapiTest.test_time_from_timeandfoldc	Cr)Nr�r�r�rr)rr�r�Zget_delta_fromdsur�r�r�r*)r+Z	exp_deltarZc_api_deltarrr �test_delta_from_dsu�rzCapiTest.test_delta_from_dsuc	Csntddd���}dD]*}|j|d��t�t|�|�}|�|tddd��Wd�n1s/wYq
dS)N��rIr�rr)rr�r�r�Zget_date_fromtimestamprVr*r)r+r�rrCrrr �test_date_from_timestamp�s���z!CapiTest.test_date_from_timestampc
Cs�dddttdd��dfddd	ttdd��dfg}tj}|D]=}d
D]8}|j||d��'|\}}}t|d|i�}t|���}	||	|||�}
|�||
�Wd�n1sTwYq!qdS)
N)�r"rIr�NF)r$NTr$r"r�T)�r"rIr�rr�NF)r%NTr%r)�caserr)	rrr�Zget_datetime_fromtimestampr�rrVr�r*)r+r�r1r&rZdtuprZusetzZdt_origr�r�rrr �test_datetime_from_timestamp�s(�	
����z%CapiTest.test_datetime_from_timestampN)r:rNrOr�r�r�r�r�r�rrr
rrr
rrrrrr r!r#r'rrrr r�Us,	

	r�cCs|�t��|Sr-)ZaddTestr�)�loaderZstandard_tests�patternrrr �
load_tests�sr*�__main__)kr�r�r�r�r`r8r�rrnr�r�r�r�operatorrrrrrrr	r
r�testrZtest.supportr
rrrrr)rrrrrrrr%r�r7r��_loadsrXrrr�rSr�rlr/ZTestCaser'rPrirmrqr�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r�r9r�rCr3r4r"r�r9r:r;rErFr<rUrcrgrhrirjrkrlrxr�r�r�r�Z	TestSuiter�r�r�r*r:�mainrrrr �<module>s,�8_A3=!a"<


*M"32
gk


�