Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/datetimetester.cpython-310.pyc
o

�9j���@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
m
Z
ddlmZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddlZ ddlm!Z!m"Z"ddlm#Z#dd	lm$Z$dd
lm%Z%ddlm&Z&ddlm'Z'mZddl%Z(ddl)Z)ddl*Z*ej+ej,hZ-d
d�e.ej/d�D�Z0e1e0�ej/dks�J�dddigdfZ2e3d�Z4e3d�Z5Gdd�dej6�Z7Gdd�de$�Z8Gdd�de8�Z9Gdd�de$�Z:Gdd�dej6�Z;Gd d!�d!ej6�Z<Gd"d#�d#�Z=Gd$d%�d%e=ej6�Z>Gd&d'�d'ej6�Z?Gd(d)�d)e'�Z@Gd*d+�d+e=ej6�ZAGd,d-�d-e�ZBGd.d/�d/eA�ZCGd0d1�d1eC�ZDGd2d3�d3e%�ZEGd4d5�d5e=ej6�ZFGd6d7�d7�ZGGd8d9�d9eFeGej6�ZHGd:d;�d;eCeGej6�ZId<d=�ZJe#d�ZKe#dd>�ZLe#dd?�ZMe#dd@�ZNeddAddB�ZOedddCd�ZPGdDdE�dEe$�ZQeQdFdGdHdI�ZReQdJdKdLdM�ZSeQdNdOdPdQ�ZTeQdRdSdTdU�ZUe8ddVd�ZVe8dWdXd�ZWGdYdZ�dZej6�ZXGd[d\�d\ej6�ZYGd]d^�d^e$�ZZGd_d`�d`eZ�Z[e[dFdadHdI�Z\e[dJdbdLdM�Z]e[dNdcdPdQ�Z^e[dRdddTdU�Z_Gdedf�dfe$�Z`Gdgdh�dhej6�Zae#dd�Zbdidj�ZcGdkdl�dle$�ZdGdmdn�dnej6�ZeGdodp�dpejf�ZgGdqdr�dree�ZhGdsdt�dtej6�Zidudv�Zjekdwk�rRe�l�dSdS)xzUTest date/time type.

See https://www.zope.dev/Members/fdrake/DateTimeWiki/TestCases
�N)�array)	�lt�le�gt�ge�eq�ne�truediv�floordiv�mod)�support)�is_resource_enabled�	ALWAYS_EQ�LARGEST�SMALLEST)�MINYEAR�MAXYEAR��	timedelta��tzinfo)�time��timezone)�date�datetimecCsg|]}tt|f�qS�)�pickle)�.0�protorr�*/usr/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)z2Test that __all__ only points to valid attributes.N)�dirr)�__all__�assertIn)r+�	all_attrs�attrrrr �test_allBs
�zTestModule.test_allcCsTd|jjvr|�d�t}tdd�t|�D��}tgd��}|�||tg��dS)N�_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>)
rrrr�
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#��������)r;r<r=r)�_divide_and_roundr*)r+�darrrr �test_divide_and_roundTs"
z TestModule.test_divide_and_roundN)r<�
__module__�__qualname__r,r2rArQrrrr 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+�offsetr7�	dstoffsetrrr �__init__us




zFixedOffset.__init__cCs
|j��S�N)r\�lower�r+rrr �__repr__}�
zFixedOffset.__repr__cC�|jSrb)r[�r+�dtrrr �	utcoffset�zFixedOffset.utcoffsetcCrgrb)r\rhrrr �tzname�rkzFixedOffset.tznamecCrgrb)r]rhrrr �dst�rkzFixedOffset.dstN�rU)r<rRrSrarerjrlrmrrrr rTss
rTc@seZdZddd�Zdd�ZdS)�PicklableFixedOffsetNcCst�||||�dSrb)rTrar^rrr ra�szPicklableFixedOffset.__init__cCrgrb)�__dict__rdrrr �__getstate__�rkz!PicklableFixedOffset.__getstate__)NNN)r<rRrSrarqrrrr ro�s
roc@�eZdZdd�ZdS)�_TZInfocCst��Srb)�random)r+r)rrr rj�sz_TZInfo.utcoffsetN�r<rRrSrjrrrr rs��rsc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
TestTZInfoc	CsTt�}tddddddd|�}|�t��
|��Wd�dS1s#wYdS)N��rH��� rEr)rsr�assertRaises�	TypeErrorrj)r+�tz1�dt1rrr �test_refcnt_crash_bug_22044�s

"�z&TestTZInfo.test_refcnt_crash_bug_22044cCs@t�}tj}|�t|j|�|�t|j|�|�t|j|�dSrb)rr�maxr|�NotImplementedErrorrlrjrm)r+�uselessrirrr �test_non_abstractness�s
z TestTZInfo.test_non_abstractnesscCsrGdd�dt�}|�t|t��|dd�}|�|t�t��}|�t|j|�|�t|j	|�|�t|j
|�dS)Nc@rr)z9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughcSs||_||_dSrb)�_NotEnough__offset�_NotEnough__name)r+r_r7rrr ra�s
zBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r<rRrSrarrrr �	NotEnough�rvr�rE�NotByALongShot)r�
assertTrue�
issubclass�assertIsInstancer�nowr|r�rlrjrm)r+r�rrirrr �test_subclass_must_override�s
z&TestTZInfo.test_subclass_must_overridecCsntdd�}|�|t�t��dfD]#}|�|�|�tdd��|�|�|�d�|�|�	|�tdd��qdS)NrE�ThreerWrU)
rTr�rrr�r*rjrrlrm)r+�forirrr �test_normal�s
�zTestTZInfo.test_normalcCsTt�t�}|�t|�t�tD]\}}}|�||�}|�|�}|�t|�t�qdSrb)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����rW�cookie�EST)
rrorrlr�rr�r�r*rjr�r�r�)r+r_�otype�argsr��onamer�r�rr�r�rrr �test_pickling_subclass�s(


�

��z!TestTZInfo.test_pickling_subclasscs`tdd���G��fdd�dt�}|�}tddddd|d	�}|�|�}|�||��|�dS)
Nr"��hourscs0eZdZdZ�fdd�Z�fdd�Zdd�ZdS)	z0TestTZInfo.test_issue23600.<locals>.UKSummerTimez~Simple time zone which pretends to always be in summer time, since
                that's what shows the failure.
            c��Srbrrh)�	DSTOFFSETrr rj��z:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetcr�rbrrh)�DSTDIFFrr rm�r�z4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstcS�dS)N�UKSummerTimerrhrrr rl�r�z7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN)r<rRrS�__doc__rjrmrlr�r�r�rr r��s
r�rxrK��r)rrr�fromutcr*rj)r+r��tz�u�trr�r �test_issue23600�s
zTestTZInfo.test_issue23600N)
r<rRrSr�r�r�r�r�r�r�rrrr rw�s
rwc@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��ACDTrFr���r")rrr�r�r�DTrdrrr �setUp�szTestTimeZone.setUpcCs8|j|jtjtjtjfD]
}|�t|�|�d��qdSrb)	r�r�r�utc�minr�r*�strrl�r+r�rrr �test_str�s
��zTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|�}|�|t	|��qdSrb)
r)r�r�rr�r�r��reprr*�eval)r+rr��tzreprrr �	test_repr�s��zTestTimeZone.test_reprcCsNtddd�}|�tj�d�t�|�tj�d�|�|�tj�d�|�dS)N��;�r�rX)rr*rr�rj�ZEROr�r�)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��secondsrWrU�ABC�extra)r�rr�r�assertIsNotr*�assertNotEqualrjr|�
ValueErrorr}r�)r+�	subminuter��invalidrrr �test_constructors2244<zTestTimeZone.test_constructorcCs |�tjt�|�|jt�dSrb)r�rr�rr�rdrrr �test_inheritanceszTestTimeZone.test_inheritancecCs�|j}dD]}|t}|�|t|��|��|�|t|��|��q|�t��|j�d�Wd�n1s:wY|�t��|j�d�Wd�dS1sVwYdS)N)rg�?r��rF)r��HOURr*rrjr|r}r�)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�rF)�assertIsNonerr�rmr�r|r}r�rdrrr �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���rW�XYZ��zUTC+01:06:40r�zUTC-01:06:40zUTC+01:06:40.000001r"zUTC-01:06:40.000001r�rF)
r*rr�rlr�r�rr|r}r�rdrrr �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)
r|r�rr�r�r�r}r�r��Eastern�replacer*rj)r+r��utctime�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*r|r}r/r��assertFalserrrr�rrr �test_comparisonTs$:zTestTimeZone.test_comparisoncCs�tddd�}tjtjtjfD]/}|�|�|�|j|d����|�|�|�|j|d����|�|�	|�|j|d��	��qdS)Nr"r)
rrr�r�r�r*rlr�rjrm�r+r�r�rrr �test_aware_datetimeis����z TestTimeZone.test_aware_datetimecCs�|j|jtjtjfD]}tD]\}}}|�|�||��}|�||�qq
tj	}tD]\}}}|�|�||��}|�
||�q)dSrb)r�r�rr�r�r�r�r�r*r�r�)r+r�r�r�r�tz_copyrrr �test_picklets��zTestTimeZone.test_picklecCsP|j|jtjtjfD]
}t�|�}|�||�q
tj}t�|�}|�||�dSrb)	r�r�rr�r��copyr*r�r��r+r�r�rrr �	test_copy~�

zTestTimeZone.test_copycCsP|j|jtjtjfD]
}t�|�}|�||�q
tj}t�|�}|�	||�dSrb)
r�r�rr�r�r��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�rXr��?B�r�rXr�r�cS�g|]}|�qSrr�r�deltarrr r!��z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>�good)�	test_typer��r�r")r�r�cSr�rrr�rrr r!�r��bad)r�extend�subTestrr|r�)r+�time_deltasr��bad_time_deltasrrr �test_offset_boundaries�s.
�
��
�
�����z#TestTimeZone.test_offset_boundariescCs,|�tjt��|�ttdd��t��dS)Nr"r�)r�rr�rrrdrrr �test_comparison_with_tzinfo�sz(TestTimeZone.test_comparison_with_tzinfoN)r<rRrSr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr 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�r/rrr)r+�merrr �test_harmless_mixed_comparison�s"z6HarmlessMixedComparison.test_harmless_mixed_comparisoncs�|�ddd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fd	d��|�t�fd
d��dS)Nr"c��dkS�Nrrr�rrr �<lambda>��zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>cs�dkSrrrrrr r�rcs�dkSrrrrrr r�rcs�dkSrrrrrr r�rc�d�kSrrrrrr r�rcsd�kSrrrrrr r�rcsd�kSrrrrrr r�rcsd�kSrrrrrr r�r)r
r|r}rdrrr �test_harmful_mixed_comparison�sz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r<rRrSrrrrrr r�src@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�rXr��millisecondsr�r"�rr�r��rrHr�r��<rW���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)-NrHrrrrMiDQrJr��Q�X>�Qi��r#�FiX�'rG�r�r"i@�i��6i@���?��xr�rErIrFrDr�r�翶~�Ϛ�?�@�g�6+1��?i�S	g@g�rCg`""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)NrU�r"��?c���Srbrr�r/r3rr rYrz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>c���Srbrrr8rr rZrc���Srbrrr8rr r[rc���Srbrrr8rr r\rrc���Srbrr�r/�zerorr rarc���Srbrrr=rr rbrcs��Srbrrr=rr rcrc��dS)N�rr�r/rr rdrcr@)Nr�rrrBrr rer)rr|r}�ZeroDivisionErrorrdr)r/r3r>r �test_disallowed_computationsTsz*TestTimeDelta.test_disallowed_computationscCs,td�}|�t|jt�|�t|jt�dS)NrU)rr|r��__mul__�NAN�__truediv__)r+r/rrr �test_disallowed_specialgsz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||�}|�|j|�|�|j|�|�|j|�dS)N)r"rH��rr*rr�r�)r+rr�r2rrrr �test_basic_attributesms

z#TestTimeDelta.test_basic_attributescCsptdd�}|�|��d�dD]}t|d�}|�|��|�qdD]}t|d�}|�|��|tdd��q!dS)	N�mrg8~A)g˟$�@g˟$��r'rg��.Ar�)r�rGi����r�r")rr*�
total_seconds)r+rrM�msrrr �test_total_secondsts


�z TestTimeDelta.test_total_secondscCs.tddddddd�}tdd	�}|�||�dS)
N�drJ�8���rDr�g��A�rrr�rXr�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)NrPrJrQrDr�iz
rRrHr�1rr"rI)rr*�hash�len)r+rTrU�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)NrIrErK�)rErErE)rIrKrK)rIrErFFTc���kSrbrr��badargrTrr r�rz,TestTimeDelta.test_compare.<locals>.<lambda>c���kSrbrrrbrr r�rc���kSrbrrrbrr r�rc���kSrbrrrbrr r�rc���kSrbrrrbrr r�rc���kSrbrrrbrr r�rc���kSrbrrrbrr r�rc���kSrbrrrbrr r�r)rr*r�r��
OTHERSTUFFr|r}�r+rUr�rrbr �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:00rIz2 days, 0:00:00rGz-2 days, 0:00:00r��:r�r�z12:58:59rErKz2:03:04i��r�r\)rr�rXr�z-210 days, 23:12:34rz0:00:00.001000r�z0:00:00.000003r)r��rr�rXr�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#rIz%s(days=10, seconds=2)rC�z,%s(days=-10, seconds=2, microseconds=400000)rr�z%s(seconds=60)z%s(0)rPr�z%s(microseconds=100))rr�z%s(days=1, microseconds=100))r�r�z%s(seconds=1, microseconds=100)�r
r<r*r��r+r7rrr r��s2��������zTestTimeDelta.test_reprcCs�tdddddd�tdd�tddd	�tdd
dd�fD]-}t|�}|�|�d
��|dd�}t|�}|�||�t|j|j|j�}|�||�qdS)Nr)r�r�r�ro�6e�rr"�rr�rIrE�rr�r�rp�	)	rr�r�r5r�r*rr�r�)r+r�s�td2rrr �test_roundtrip�s�
��zTestTimeDelta.test_roundtripcCs~|�tjt�|�tjt�|�tjt�|�tjtjk�|�tjtd��|�tjtddd��|�tjtddd��dS)Nrtr)rg~�.Arr")r�rr�r��
resolutionr�r*rdrrr �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)	NcSstjSrb)rr�rrrr rrz-TestTimeDelta.test_overflow.<locals>.<lambda>r"�ʚ;ge��Ag#B����;g�����|�=gr��{�>)
rr{r�r|�
OverflowError�__sub__�__add__r�rErG)r+�tinyr�dayrrr �
test_overflows 

zTestTimeDelta.test_overflowcCs.td�}|�t|jt�|�t|jt�dS�Nr")rr|r~rE�INF)r+r�rrr �_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?rIg�~j�t�X�rGg���Ơ>r�g���Ơ���?����i|���t��Ar�g�������?rg�������?r��rr�g������ٿg������ɿr$r6)rr*r{)r+rr�us_per_hour�
us_per_dayrrr �test_microsecond_rounding-s0  &z'TestTimeDelta.test_microsecond_roundingcCs&tdd�}|�|j|j|jfd�dS)Nr�r�)r�rr�rJ)r+rrrr �test_massive_normalizationNs
�z(TestTimeDelta.test_massive_normalizationcCsR|�td��|�tdd��|�tddd��|�tdd��|�td��dS)Nr"rr�)r�rr�rdrrr �	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�Srbrv)r��Trr �from_td]sz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdcSs&|jd|jd|jd}t|�S)Nr�g �@r�)rr�r�r.)r+�sumrrr �as_hoursas��z9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r<rRrS�staticmethodr�r�rr�rr r�\sr�r"rr�r�i��rui��)
rr�r�r*r�r�rr�r�r�)r+rTrU�t3�t4rr�r �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<rRrSrrrr �DateSubclassz�r���r"rFr�addcS�||Srbr�rZr�rrr r�rz2TestTimeDelta.test_subclass_date.<locals>.<lambda>rM�raddcS�||Srbrr�rrr r�r�subcS�||Srbrr�rrr r�rrK)rrrr*r�)	r+r��d1r�testsr7�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"rFr��)rrXr�cSr�rbrr�rrr r�rz6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rM�
r�cSr�rbrr�rrr r�rr�cSr�rbrr�rrr r�rrK)rrrr*r�)	r+r�r�rr�r7r�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�rIr��rXr�rWg@r)rr*r|rCr	r
)r+r��second�minute�zerotdrrr �
test_division�s

zTestTimeDelta.test_divisioncCs�tddd�}tdd�}||}|�|tdd��tddd�}||}|�|tdd��td�}|�tt||�|�tt|d	�dS�
NrIr�r�r"rWr�rGrr#)rr*r|rCrr})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*r|rCr})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�rbrrd��	bad_ratiorr �as_integer_ratio�r�zWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r<rRrSr�rr�rr �BadFloat��r�)�float)r�r�rr�r �
get_bad_float�sz4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"r)rrn�r"rIrE)r|r}rr�)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���Srbr�r+�other��Prodrr rE�rkz5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__cr�rbrr�r�rr �__rmul__�rkz6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__cr�rbrr�r�rr �__floordiv__�rkz:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__cr�rbrr�r�rr �
__rfloordiv__�rkz;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r<rRrSrEr�r�r�rr�rr �BadInt�s
r�cs$eZdZ�fdd�Z�fdd�ZdS)z+TestTimeDelta.test_issue31752.<locals>.Prodcr�rbrr���Sumrr r��rkz3TestTimeDelta.test_issue31752.<locals>.Prod.__add__cr�rbrr�r�rr �__radd__�rkz4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r<rRrSr�r�rr�rr r��sr�cr�)z*TestTimeDelta.test_issue31752.<locals>.Sumcr�rbrr���divmodresultrr �
__divmod__�r�z5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r<rRrSr�rr�rr r��r�r�)Nr)rr"rI)rr�r�r"r�r�r)rZrrr}r�)r+r�r)r�r�r�r �test_issue31752�sN
����������zTestTimeDelta.test_issue31752N)"r<rRrSrr
r�r4rDr�requires_IEEE_754rHrKrOrVr[r_rmr�r�rzr|r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r�s>S

(	
!rc@rr)�TestDateOnlycCs�tddd�}tdddddd�}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�|}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�dS)	N��r"rIrErKrFrorG)rrrr*)r+rir�r�dt2rrr �test_delta_non_days_ignored!s*
�

z(TestDateOnly.test_delta_non_days_ignoredN)r<rRrSr�rrrr r�sr�c@�eZdZdZdS)�SubclassDater"N�r<rRrS�sub_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��rEr")r
r*�year�monthr�rhrrr rKGszTestDate.test_basic_attributescCsz|�ddd�|j��fD].}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j	�}|�||�qdS)Nr"rIrErprw)
r
�todayr�r�r5r�r*r�r�r��r+rirxr�rrr rzMs��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�rIrL)rIr"r"�n)i�rzr�i��
�hourrr"rHr�rI)rI�rIr�rIr�rIrIr�rIr�rI))r�T)r�Fr�rI)
r
r*�	toordinal�fromordinal�hasattrr�r�r��microsecondr-rr�zip)
r+�y�mrZ�n�fromordr��d2�dim�isleapr��maxdayr�rrr �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�Sr��r�r�r/�aordrr r��z0TestDate.test_extreme_ordinals.<locals>.<lambda>r"rcs���d�Sr�r�rr�rr r�r�)r
r�r�r�r�r�r�r*r|r�rr�)r+r0rr�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�rI����`	r����4�lr{)r
rrr|r�rdrrr �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�rIr"rIr��r
r*rXrY�r+rZ�e�dicrrr r[�s$zTestDate.test_hash_equalityc	s2|�ddd��|�ddd�}|�ddd�}�|}|�|jdttddd���|�|jd	�|�|jd	�td��td
�}|�ddd��|���|�ddd��|���|�ddd��|���|�ddd��|���|�ddd��|��||�ddd��|��||�ddd
��|��d||�ddd��|��d||�ddd��|��|�|�|������|��|�|�|������|���||�|������|���||�|������|�||���dD]/�|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	��fdd���q|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	�fdd��|�t	�fdd��|�t	�fdd��dS)Nr�r"rI�r�rI�ArKrrHrErwr��4��r5cr7rbrrr8rr r�rz,TestDate.test_computations.<locals>.<lambda>cr9rbrrr8rr r�rcr:rbrrr8rr r�rcr;rbrrr8rr r�rcr;rbrr�r/r�rr r�rc���Srbrrrrr r�rc���Srbrrrrr r�rcr<rbrrrrr r�rcr?rbrrrrr r�rc���SrbrrrBrr r�rc���SrbrrrBrr rrc���SrbrrrBrr rr�
r
r*rrYr-r�r�rr|r})r+r0r1�diff�weekr�r/r�r3r r4�sPzTestDate.test_computationscCs�|jj}|td�td�fD]8}|jj|}||8}|�t|j|�|�t|j|�|jj|}||7}|�t|j|�|�t|j|�q
dS)Nr"rI)	r
r{rr�r|r~rr�r�)r+r�r�rirrr r�s�zTestDate.test_overflowcCshddl}d\}}}|�|||ddddddf	�}|j�|�}|�|j|�|�|j|�|�|j|�dS)Nr)i�rwr�r�)r�mktimer
�
fromtimestampr*r�r�r�)r+rr�r�r��tsrZrrr �test_fromtimestamps
zTestDate.test_fromtimestampcC� dD]}|�t|jj|�qdS�N)gZb���t�gZb���ti�r|r~r
r�r+�insanerrr �test_insane_fromtimestamp�
��z"TestDate.test_insane_fromtimestampcCspddl}td�D]}|j��}|��}|j�|�}||krn|�d�q||kr6|j||tdd�d�dSdS)NrrEg�������?r$r�)r�)rr-r
r�r�sleep�assertAlmostEqualr)r+rr�r�r�
todayagainrrr �
test_today&s

��zTestDate.test_todayc	Cs�td�D]B}|�|�ddd|���|�|�|�ddd|���|d�|�|�ddd|���|�|�|�ddd|���|d�qdS)NrHr�rErKr"rrI)r-r*r
�weekday�
isoweekday)r+r3rrr �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"rF)r�rIr"))��r�ry)r)r	r"))r)r�r�)r)�5r"))r�r"rK)r�r"r"rHrrI�tuple)rZ�
comparison�fields)
r
r-r�appendrr*�isocalendarr�rr$)r+�week_mondays�
test_cases�cal_date�iso_date�	base_dater3�new_date�new_isorZ�exp_isor�rrr �test_isocalendarLs&	
�����zTestDate.test_isocalendarcCsF|�ddd�}t�|���}t�|�}|�t|�t�|�|d�dS)z�Test that the result of datetime.isocalendar() can be pickled.

        The result of a round trip should be a plain tuple.
        ��r")r9r"rIN)r
rr�r/r�r*r�r+)r+rZ�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�rIi@r"r*)	�sorted�maprZ�splitr-r
r*r/r.)r+�ISO_LONG_YEARS_TABLE�iso_long_years�Lr3rZr�rrr �test_iso_long_yearsus$
�zTestDate.test_iso_long_yearscCs"|�ddd�}|�|��d�dS)NrIrEz
0002-03-02)r
r*�	isoformat�r+r�rrr �test_isoformat��zTestDate.test_isoformatcCs"|�ddd�}|�|��d�dS)Nr�rErIzSat Mar  2 00:00:00 2002)r
r*�ctimerFrrr �
test_ctime�rHzTestDate.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��rErI�m:%m d:%d y:%yzm:03 d:02 y:05r���xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�one�tworU�%m�03�	'%z' '%Z'�'' '')z%e�%z%#u%y�%mz%f)r
r*�strftimer|r}r��UnicodeEncodeError)r+r��frrr �
test_strftime�s*
��zTestDate.test_strftimecCsz|�ddd�}zt�d�Wnty|�d�Ynw|�|�d�t�d|����|�|�d�t�d|����dS)NrKrErIrTz'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r
�_timerUr�r=r*�	timetuplerFrrr �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��rwr#r��must be str, not int�{c@rr)zTestDate.test_format.<locals>.AcSr��N�Arrdrrr �__str__�r�z'TestDate.test_format.<locals>.A.__str__N�r<rRrSrarrrr r`�rvr`c@rr)zTestDate.test_format.<locals>.BcSr��N�Br�r+�format_specrrr rU�r�z(TestDate.test_format.<locals>.B.strftimeN�r<rRrSrUrrrr rd�rvrd�rLzm:%m d:%d y:%y H:%H M:%M S:%S�%z %Z�r
r*�
__format__r��assertRaisesRegexr}rU�r+rir`r/rdr0�fmtrrr �test_format�s ��zTestDate.test_formatcCs`t|jt�r	t}nt}|�|jj|�|�|jj|�|�|jjt�|�	|jj|jjk�dSrb)
r�r
rrr�r�r�r{rr�)r+�expected_classrrr r|�szTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|�}|�||�|�|jj||jj�|�|jj||jj�dS)Nr���@Br)r
r�r�rr�r�rr*)r+�bigr��	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)
NrHrr"rIrr�r{rE�=)
r-r
rZr*�tm_year�tm_mon�tm_mday�tm_hour�tm_min�tm_sec�tm_wday�tm_yday�tm_isdst)r+r3rZr�rrr �test_timetuples(&..�zTestDate.test_timetuplecC�Zd}|j|�}tD]\}}}|�||�}|�|�}|�||�q	|�|��|�d��dS)N�rMrHr�rI�r
r�r�r�r*�
__reduce__�
__reduce_ex__r^rrr r_%�

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.)��rz��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)NrIrErKr`FTcrdrbrrrbrr rZrz'TestDate.test_compare.<locals>.<lambda>crerbrrrbrr r[rcrfrbrrrbrr r\rcrgrbrrrbrr r]rcrhrbrrrbrr r^rcrirbrrrbrr r_rcrjrbrrrbrr r`r)r
r*r�r�rkr|r}rlrrbr rm;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�rKrFr"FTcr
r�rr��ourrr rlrz-TestDate.test_mixed_compare.<locals>.<lambda>crr�rrr�rr rmrc@r�)z.TestDate.test_mixed_compare.<locals>.SomeClassNr�rrrr �	SomeClassqr�r�crhrbrr�r��theirrr ryrcrdrbrrr�rr rzr)r
r*r|r})r+r�rr�r �test_mixed_comparebszTestDate.test_mixed_comparecCs |�|jj�|�|jj�dSrb)r�r
r�r�rdrrr r�|szTestDate.test_boolcCsZdD](}|�|dd�}|�d�d|kr*|�|�d�d|�|�|�d�d|�qdS)N)r"rWr!�crPi�r�r"z%Yz%04d�%dz%4Y)r
rUr*)r+r�rZrrr �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�rI�r�rE�r�rKr"r�rIr�r��r�r�r
r*r�r|r��
r+�clsr��baser3r7�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�r��r
r�r�r�)r+r�rirrr �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>.CrUc�6|��}|�d�}�jj|g|�Ri|��}||_|S�Nr��r��popr
r�r��r�r��kws�tempr��resultrdrr r���

z.TestDate.test_subclass_date.<locals>.C.__new__cS�||j|jSrb)r�r��r+�startrrr �newmeth��z.TestDate.test_subclass_date.<locals>.C.newmethN�r<rRrS�	theAnswerr�r�rrdrr �C��r��r
rKr%r�rHrUrJ)	r
r*r;r�r�r�r�r�r��r+r�r�rr�rrdr 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�NrH�r
r�r��r�r��kwargsr�rdrr r���zKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N�r<rRrSr�rrdrr r��r�r�r�i�(z
2003-04-14rHrr�r�
fromisoformat��
base_obj_type�constr_name)r
r�r*r�r�combiner�	timestamprr��getattr)
r+r�r��d_ord�d_isoformat�base_drr1r��constr_args�base_obj�constrrirrdr �$test_subclass_alternate_constructors�s4�
�
����z-TestDate.test_subclass_alternate_constructorscC�Rd}t|�}tD]\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr�)r�r�r�r�r*r�rYr^rrr �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-25rK)�9��
��rIrE�^bad tzinfo state arg$r"r�r�)	r�r
rr|r}rl�bytesrYr-)r+r��
month_byte�ord_byterrr �test_backdoor_resistance�s	
��*�z!TestDate.test_backdoor_resistancec	Cspgd�}|D]/}|j|�}|��}|j|d��|j�|���}|�||�Wd�n1s0wYqdS)N)�r"r"r")rrIr%�rr"r")r�rIr��r�rzr�)r�rKrE�i�rFr�)�dt_str�r
rErr�r*)r+�
base_dates�dt_tuplerir��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�rxr�r%)r
r�rEr�)r+r�rir�rrr �test_fromisoformat_subclass(sz$TestDate.test_fromisoformat_subclassc	CsLgd�}|D]}|�t��|j�|�Wd�n1swYqdS)N)r�r�z	009-03-04�	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29�20090228u2009�02�28)r|r�r
r��r+�bad_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�StringIOr|r}r
r��r+�	bad_types�bad_typerrr �"test_fromisoformat_fails_typeerrorFs���z+TestDate.test_fromisoformat_fails_typeerrorcCs�ddddddddd	d
ddd
tddftddfg}|D]-}|j|d��|j|�}|��}|jj|�}|�||�Wd�n1sAwYqdS)N)��rKrE)rKr"rI)i�r�r�)r�r"rI)r)r�rIr�)rr�rI)r�r"r")r�r�rIr()r�r�rIr�)r(r�rIr"r�rI)�	datecomps)rrrr
r/�fromisocalendarr*)r+�datesr��dobj�isocal�d_roundtriprrr �test_fromisocalendarMs2�
���zTestDate.test_fromisocalendarc
Csxgd�}|D]3}|j|d��#|�t��|jj|�Wd�n1s%wYWd�n1s4wYqdS)N)
)r9rr")r9r�r")r9�6r")r9r"r)r9r"r�)r9r"�)r9r*r")r"r"r")rr"r")i��r"r")�r"r")r9rr")r9r"r�r)rr|r�r
r�)r+�isocalsrrrr �!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�dSrbr)�xrrr r��z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)r9r"r"rEr)r�r�r-�listr.r+rr|r}r
r�)r+�
err_txformersrr�r3�txformer�err_valrrrr � test_fromisocalendar_type_errors�s*�	������z)TestDate.test_fromisocalendar_type_errorsN)/r<rRrSrr
rKrzr�r�rr[r4r�rrr#r&r8r<rDrGrJrXr[ror|rur�r_r�rmr�r�r�r�r�r�r�r�r�r�r�r�r�rr	rrrrr r�AsX/2		&'
	
'
,

r�c@r�)�SubclassDatetimer"Nr�rrrr r�r�rc@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�rEr"r�r�	r
r*r�r�r�r�r�r�r�rhrrr rK�sz"TestDateTime.test_basic_attributesc	Cs||�ddddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�rEr"r�r��@rrhrrr �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"rIrErKrFrMrHrprw)r
r�r�r�r5r�r*r�r�r�r�r�r�r�r�rrr rz�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"rIrErKrFr^z0001-02-03T04:05:01.000123r�� z0001-02-03 04:05:01.000123�z0001-02-0304:05:01.000123r�u0001-02-03�04:05:01.000123r���timespecz
0001-02-03T04rXz0001-02-03T04:05r�z0001-02-03T04:05:01rz0001-02-03T04:05:01.000r��auto)�seprz0001-02-03 04:05�foo�L@rz0001-02-03T04:05:01.999+00:00z0001-02-03T04:05:01.999z0001-02-03T04:05:01.000000z0002-03-02T00:00:00z0002-03-02 00:00:00�r��XXXz0002-03-02T00:00:00+00:00:16)
r
r*rEr|r�r�rr�rTrr�rrr rG�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��|��|kshJ�Wd�n1srwYqKdS)N�05:00rFr��02:00rI�06:27rMr�r��12:32:30r�r{r�r��02:04:09.123456rKrwr(r��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�rrE)	r+�	tzoffsets�tzinfos�dt_base�exp_base�exp_tzr2ri�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\rwr#rKrFr"r^r�r]c@rr)z#TestDateTime.test_format.<locals>.AcSr�r_rrdrrr rar�z+TestDateTime.test_format.<locals>.A.__str__Nrbrrrr r`rvr`c@rr)z#TestDateTime.test_format.<locals>.BcSr�rcrrerrr rU#r�z,TestDateTime.test_format.<locals>.B.strftimeNrgrrrr rd"rvrdrhrjrmrrr ros ��zTestDateTime.test_formatc	Cshddl}|�ddddddd�}|�|��d�|�ddd	dddd�}|�|��|�|�|�����dS)
Nrr�rErI�rFr^zSat Mar  2 18:03:05 2002r')rr
r*rIrrZ)r+rr�rrr �test_more_ctime0s
$zTestDateTime.test_more_ctimec	Cs�|�dddddd�}|�dddddd�}|�dddddd�}|�||�|�||k�|�tddd	d
d
d�}tdd�}||}|�|||�|�||k�dS)
Nr�rEr"rwrr#r�rIr�r�r*r�)r
r*r�rr)r+rr��dt3r2rrr �test_tz_independent_comparing@s
z*TestDateTime.test_tz_independent_comparingcCsBGdd�dt�}|�ddddddd|dd��}|�t|jd�dS)	Nc@rr)zDTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfocSsGdd�dt�}|d�S)Nc@rr)zZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrcWr
rbr)r+r�rrr r�Wr�zbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r<rRrSr�rrrr �MyStrVrvr?r7)r�)r+rir?rrr rlUszKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r<rRrSrlrrrr �MyTzInfoTrvr@rKrErIrr7�%Z)rTr
r|r}rU)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�rIr�r�r�r�r�rrr{rIr�r�r�r�rr�rr��fold)r
rrr|r�r}rdrrr 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�rIr�r��r"rIr�rrFrrrrr r[�s$zTestDateTime.test_hash_equalitycs<|�ddd��|�ddd�}�|}|�|jdttddd���|�|jd�|�|jd�|�ddd	d
d��tddd�}tdd
�}td��td�}|��||�ddd	dd��|�|�|�ddd	dd��|��d||�ddddd��|��||�ddd	dd��|�|�|�ddd	dd��|��|�|�|��d||�ddddd��|���|�dddd
d��|���|�dddd
d��|��||�dddd
d��|��||�dd	dd
d��|��d||�dddd
d��|��d||�dddd
d��|��|�|�|������|��|�|�|��|�|�|��|�|�|������|��|�|�|��|�|�|���||�|������|���||�|���||�|���||�|������|���||�|���||�|��|�|||�ddddddd��|��|�||�|�||�|��|�|||�dd	ddddd��|��|�||�|�||�dD]/�|�t	��fdd��|�t	��fd d��|�t	��fd!d��|�t	��fd"d���q|�t	��fd#d��|�t	��fd$d��|�t	��fd%d��|�t	��fd&d��|�t	��fd'd��|�t	�fd(d��|�t	�fd)d��|�t	�fd*d��dS)+Nr�r"rIrrrKrrErIrErMrrqrHr;r#rr	ryrwr�r	r
r�r'rFr�rr5cr7rbrrr8rr r�rz0TestDateTime.test_computations.<locals>.<lambda>cr9rbrrr8rr r�rcr:rbrrr8rr r�rcr;rbrrr8rr r�rcr;rbrrrrr r�rcrrbrrrrr r�rcr
rbrrrrr r�rcr<rbrrrrr r�rcr?rbrrrrr r�rcrrbrrrBrr r�rcrrbrrrBrr r�rcrrbrrrBrr r�rr)r+r0r�millisecr�rrrr r4�s�
" """����zTestDateTime.test_computationscCr�)N�rMrHr�r	r�r"�rIr�r^rrr r_�r�zTestDateTime.test_picklingc	Csn|�ddddddd�}ttjd�D]"}t�||�}t�|�}|�|jd�|�|jd�|�|j	d�qdS)	Nr
rIrHr�0r0i��r")
r
r-r�HIGHEST_PROTOCOLr�r�r*r�r�r�)r+r/rrxr0rrr �test_more_pickling�s
�zTestDateTime.test_more_picklingcCr�)NrG)rr�r�r�r*r�rYr^rrr �test_pickling_subclass_datetime��
�z,TestDateTime.test_pickling_subclass_datetimecCr�)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.)r�rzr�r	r�r"rHr�r�r�r�rrr 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�rzr�r	rnrr*r")r
r*r�r�r-rY)r+r�rTrUr3r�rrr �test_more_compare	s4


�zTestDateTime.test_more_comparecCsd|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j
�|�|j|j�dSrb)
r*rwr�rxr�ryr�rzr�r{r�r|r�)r+r�r�rrr �verify_field_equality;	sz"TestDateTime.verify_field_equalitycC�6ddl}|��}|�|�}|j�|�}|�||�dS�Nr)r�	localtimer
rrO�r+rrr�r�rrr rC	�

zTestDateTime.test_fromtimestampcCrPrQ)r�gmtimer
�utcfromtimestamprOrSrrr �test_utcfromtimestampK	rTz"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)Nr�r"g��@rIrErK���6�@r�rzr�rCr�i'r�)r
r*r�r�rrr~)r+r��t0rTrxrrr �test_timestamp_naiveU	s0
��� ��z!TestDateTime.test_timestamp_naivecCs�|jdddtjd�}|�|��d�|jdddddddtjd�}|�|��d�|jdddddddttd	d
�d�d�}|�|��d�dS)
Nr�r"rrArIrErKg�7��@r�r�r�rY)r
rr�r*r�rrFrrr �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�r�i�#gH�����z>g1E��2�>g<"2��?g�P���?r"r�r�)r
rrVr*r�r��OSError)r+�ftsr>rN�	minus_oner�rrr r�|	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)	rr
r�r�rr�r�r*r�)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�r'r�r��minimum�maximum�rr��Too small by a littler�r��Too small by a lotr=�Too big by a little�Too big by a lot�r)r
rr]r~r=r�rr�r�r�rMrr*r|r�)
r+rarbrcrd�	test_namerr��actualr1rrr �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)Nrfrgrr�r�rrirjrkrlr"rmr=rrnrorp)r
rVr]r~r=r�r�rr�r�r�rr�r*rrMr|r�)r+rarbrcrdrqrr�rr�excr1rrr �test_utcfromtimestamp_limits�	sH������


������z)TestDateTime.test_utcfromtimestamp_limitscCrrrrrrr r
rz&TestDateTime.test_insane_fromtimestampcCrr)r|r~r
rVrrrr �test_insane_utcfromtimestamp
rz)TestDateTime.test_insane_utcfromtimestamp�win32z*Windows doesn't accept negative timestampscCs|j�d�dS)N��������)r
rrdrrr �!test_negative_float_fromtimestamp
sz.TestDateTime.test_negative_float_fromtimestampcCs.|j�d�}|�||�ddddddd��dS)	Nryi�r�rIr�r�rni�~)r
rVr*)r+rZrrr �$test_negative_float_utcfromtimestamp
s"z1TestDateTime.test_negative_float_utcfromtimestampcCsfddl}tdd�}td�D]}|j��}|j�|���}t||�|kr&nq
|�t||�|�dS)Nrr"r�rE)rrr-r
�utcnowrVr,�assertLessEqual)r+r�	tolerancer��from_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�%zrIz-0002rGz-00:02:01.000003r"rE)rXr�r�)rr�)r�GMTrr*r+rz{}{:02d}{:02d} {}rir�)z	+1234 UTCrir�r\r�rAz-2400z-000�z)�	_strptime�_strptime_datetimer
�strptimer*r�r�rrj�MINUTErrYrrlr�r�r�rUrr|r�)r+r�r�r�r��inputsr��	tzsecondsrlr.r�r�rX�dtstrrirnrrr �
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
rIr"rKrFrMr�r�z
1/02/03 4:5:6rPz
01/2/03 4:5:6z%Hz01/02/03 4:05:06z%Mz01/02/03 04:5:06z%Sz01/02/03 04:05:6z%jz2/03 04am:05:06z%j/%y %I%p:%M:%Sz%Iz02/03 4am:05:06z%wz6/04/03z%w/%U/%yz%Wz6/4/2003z%u/%W/%Yz%Vz%u/%V/%Gztest single digit )�reasonr�r��target)�msg)r
r�r|r�rr*)r+r��newdaterr�r=�dt4r�r�r�r�r�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�rIrMr'�!)	r�r�rIrMr'r�rKr�r�r"r�)r
r*rZr�r�r�r�r�r�r$r�rrwrxryrzr{r|r}r~r)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�rIrMr'r��/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))r�r^z	33.000123))r�r�33rI)r�r�r�rr�z-0200u%y�%m %H�%M)r
r*rUrrr�rV)r+r�rxr2r�r�rrr �test_more_strftime�
s��zTestDateTime.test_more_strftimec	CsL|�ddddddd�}|�|��tddd��|�|��tdddd��dS)Nr�rErKr;�-��)r
r*rrrhrrr �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�rErKr;r�r�)rrr"rIrrr)rrr
r�r*r|r}rr�r�r)r+rZr�r�r�rirrr �test_combine�
s6

zTestDateTime.test_combinec
Cr�)N)r"rIrErKrFrMrHr)r�r�r��r�rF�r�rM�r�rH�r�rr"r�rIr�r�r�rr�r�rrr r��
s
zTestDateTime.test_replace�EDT4c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�,�0044rLr��EDTrrKr��r�c@r)z+TestDateTime.test_astimezone.<locals>.BoguscSr
rbrrhrrr rjrz5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetcS�td�SrQrrhrrr rmrz/TestDateTime.test_astimezone.<locals>.Bogus.dstN�r<rRrSrjrmrrrr �Bogus�r�c@r)z/TestDateTime.test_astimezone.<locals>.AlsoBoguscSr�rQrrhrrr rjrz9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetcSr
rbrrhrrr rm	rz3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNr�rrrr �	AlsoBogusr�r�c@r)z,TestDateTime.test_astimezone.<locals>.BrokencSr�r�rrhrrr rjrz6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetcSr�r�rrhrrr rmrz0TestDateTime.test_astimezone.<locals>.Broken.dstNr�rrrr �Broken
r�r�)r
r�rTr�rrr*�
astimezoner|r}rr�)r+rirW�dt_utc�dt_fr��bogr��alsobogr��broken�	dt_brokenrrr �test_astimezone�
s,


"�zTestDateTime.test_astimezonecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|j|j	d�dS)Ncr�)z.TestDateTime.test_subclass_datetime.<locals>.CrUcr�r�r�r�rdrr r�r�z6TestDateTime.test_subclass_datetime.<locals>.C.__new__cSs||j|j|jSrb)r�r�r�r�rrr r�!sz6TestDateTime.test_subclass_datetime.<locals>.C.newmethNr�rrdrr r�r�r�)r
rKr%r�r��)r�rHrUrJ)
r
r*r;r�r�r�r�r�r�r�r�rrdr 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�rdrr r�3r�z\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__Nr�rrdrr r�2r�r�)r
rKr%r�r��r(z2003-04-14T12:30:15.123456gh͏�TM�ArHrrVr�r�z%Y-%m-%dT%H:%M:%S.%fr�rrEr�)
r
r�r*r�r�rr�r�rrrr�r�)r+r�r�r��utc_tsr�rr1r�r�r�r��constructorrirrdr �-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�rdrr r�dr�z@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__Nr�rrdrr r�cr�r�r�r|�now_utcr��	now_fixedr�r�r�rHr)	r
rr�rrr�r�r*r�)r+r�r1r7�	meth_namer�r�rirrdr �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�r�r�rr�r�r�rIcs:g|]}�D]}�D]}�jg|�|�Rd|i��q
qqSr)r
)r�
date_tuple�
time_tupler2��
base_timesr+r5rr r!�s��"�z<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>�r�r�)rr�rrErr
r�r*)r+r��
separators�dtsrirr�r�rr�r �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]0}|j|d�}|��}|j|d��|j�|�}||ksgJ|��Wd�n1sqwYqFdS)Nrxr�r�r��pQrFr�rIrMr�r�r{r�rKrwr(r�cS�g|]}d|�qS�r�r�rrrrr r!��z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>rcS�g|]}t|��qSrrr�rrr r!�r�r��tstr�r
rrr�r�rErr�)r+�base_dtr4r5r2rir�r�rrr �test_fromisoformat_timezone�s(
�����z(TestDateTime.test_fromisoformat_timezonec
Cs|gd�}|D]5}|�ddddddd�}|j|d	�}|j|d
��|j�|�}|�||�Wd�n1s6wYqdS)N)	rr���€uʁuᛇu時u🐍r�r�r"rIr�r�r�iu�r�r�r��r+r�rrir�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"rIr�r�r�r�r�r�rrr �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)r)r�rKrrEr�r()r)r�rKrrEr�rr�r�rIrMr�r��r�rXr�rr�rrrrKrrr��	rr�r�	enumerater
rErr�r*)r+�datetime_basesr5�	timespecs�iprr2r��new_microsecondsrir�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��rr|r�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)rlr��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�rirrr �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�rxr�r%rwr�r�i��r#r�r)r
rrr�rEr*r�)r+r�rir�rrr r�s�z(TestDateTime.test_fromisoformat_subclassN)>r<rRrSrr
rKrrzrGr:ror<r>rBrr[r4r_rKrLr�rNrOrrWr�run_with_tzr[r\r�rersrvrrw�unittest�skipIfr:�platformrzr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r�st
,5D			!


(''		

;""
 1#&rc@s"eZdZeZe�d�dd��ZdS)�TestSubclassDateTimeznot appropriate for subclassescCr
rbrrdrrr rz/sz#TestSubclassDateTime.test_roundtripN)r<rRrSrr
r��skiprzrrrr 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�rFrrr rK:s
zTestTime.test_basic_attributescCsL|�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r�rr�rFrrr rAs
z&TestTime.test_basic_attributes_nonzerocCsp|�dddd�}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j|j	�}|�||�dS)Nr"rIrErKrprw)
r
r�r�r5r�r*r�r�r�r�)r+r�rxrUrrr rzJ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"rIrErKr"FTcrarbrrrbrr r{rz)TestTime.test_comparing.<locals>.<lambda>crdrbrrrbrr r|rcrerbrrrbrr r}rcrfrbrrrbrr r~rcrgrbrrrbrr rrcrhrbrrrbrr r�rcrirbrrrbrr r�rcrjrbrrrbrr r�r)	r
r*r�r�r-rYrkr|r})r+r�rUr3r�rrbr �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�rr)r
r|r�rdrrr 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�rEr"rIrrFrrrrr r[�s$zTestTime.test_hash_equalitycCs�|�dddd�}|�|��d�|�|��t|��|��}|�|��d�|�|��t|��|jdd�}|�|��d�|�|��t|��|jd	d�}|�|��d
�|�|��t|��|jdd�}|�|��d�|�|��t|��|jd
d�}|�|��d�|�|��t|��|jdd�}|�|��d�|�|��t|��|jdd�}|�|��d�|�|��t|��|jddddd�}|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d �|�|jd!d�d"�|�|jd#d�d"�|jt|jd$d�|jt|jd%d�|jdddd&d�}|�|jdd�d'�|jdddd(d�}|�|jdd�d)�|�|jd!d�d*�|�|jd#d�d�dS)+NrKrFr"r^z04:05:01.000123z00:00:00rhz00:00:00.000001r#z00:00:00.000010rPz00:00:00.000100rz00:00:00.001000r"z00:00:00.010000i��z00:00:00.100000r�r\r]r()r�r�r�r�r�r�12rXz12:34r�z12:34:56rz12:34:56.123r�z12:34:56.123456r�monkeyr�rz12:34:56.999rz12:34:56.000z12:34:56.000000)r
r*rEr�r|r�rFrrr rG�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��|��|kseJ�Wd�n1sowYqHdS)Nr!rFr�r"rIr#rMr�r�r$r�r{r�r�r%rKrwr(r�r&r'rcSr(r)rr,rrr r!�r/z4TestTime.test_isoformat_timezone.<locals>.<listcomp>r0z12:37:09rr1r3)	r+r4r5�t_baser7r8r2r�r9rrr r:�s.�	�����z TestTime.test_isoformat_timezonecCs"|jdd�}|jt|jdd�dS)Nr"�r�rE)r)r
r|r}rErFrrr �test_1653736
szTestTime.test_1653736cCsZ|�dddd�}|�|�d�d�|�|�d�d�z|�d	�WdSty,YdSw)
Nr"rIrErKz%H %M %S %fz01 02 03 000004rRrSu%H�%M)r
r*rUrVrFrrr rX
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"rIrErKr�r]r^c@rr)zTestTime.test_format.<locals>.AcSr�r_rrdrrr ra
r�z'TestTime.test_format.<locals>.A.__str__Nrbrrrr r`
rvr`c@rr)zTestTime.test_format.<locals>.BcSr�rcrrerrr rU$
r�z(TestTime.test_format.<locals>.B.strftimeNrgrrrr rd#
rvrd)z%H %M %Srj)r+r�r`r/rdr0rnrrr ro
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"rIrErKz01:02:03.000004r#r�z10:02:03.004000rrqz00:02:03.400000r�z12:02:03r�r�z23:15:00)r*r�r
rdrrr 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)Nrpr"rIrErKz%s(1, 2, 3, 4)r#r�z%s(10, 2, 3, 4000)rrqz%s(0, 2, 3, 400000)r�z%s(12, 2, 3)r�r�z
%s(23, 15)rrrsrrr r�6
s �����zTestTime.test_reprcCsN|�|jj|j�|�|jj|j�|�|jjt�|�|jj|jjk�dSrb)r�r
r�r�r{rr�rdrrr r|C
szTestTime.test_resolution_infocCr�)N�r	r�rrHrIr�r^rrr r_I
r�zTestTime.test_picklingcCr�)Nr�)r�r�r�r�r*r�rYr^rrr �test_pickling_subclass_timeR
rMz$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�rH)scdatetime
time
(U;tR.r�)s�cdatetime
time
U;�R.r�)r3r�r�)r�rr
r�r*)r+r�r3r�r�r�r�r�rrr r�[
s
����zTestTime.test_compat_unpicklecCsh|j}|�|d��|�|dd��|�|ddd��|�|dddd��|�|d��|�|��dS)Nr"r)r
r�)r+r�rrr r�q
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)r�r�r�r�r"r��r�r��r�rPr�rrrhrr�r�rrr r�{
s"
zTestTime.test_replacecCs8Gdd�d|j�}|dd�}|�t|jdd��|�dS)Nc@r�)z4TestTime.test_subclass_replace.<locals>.TimeSubclassNr�rrrr �TimeSubclass�
r�rr�r�r#r�r�)r+rrIrrr r��
s
zTestTime.test_subclass_replacecr�)Ncr�)z&TestTime.test_subclass_time.<locals>.CrUcr�r�r�r�rdrr r��
r�z.TestTime.test_subclass_time.<locals>.C.__new__cSr�rb�r�r�r�rrr r��
r�z.TestTime.test_subclass_time.<locals>.C.newmethNr�rrdrr r��
r�r�)rKrFrMr�rHrUrJ)	r
r*r;r�r�rEr�r�r�r�rrdr �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�)�chrr|r}r
rlr�rY)r+r��	hour_byterrr r��
s
�"�z!TestTime.test_backdoor_resistanceN)r<rRrSrr
rKrrzr�rr[rGr:r�rXror�r�r|r_r�r�r�r�r�rr�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�nonerrhrrr rl�
sz>TZInfoBase.test_argument_passing.<locals>.introspective.tznamecSst|rdpdd�S)NrU����rWrrhrrr rj�
szATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r<rRrSrlrjrmrrrr �
introspective�
srr"rIrErr
r	rrUrW)r
rrr*rlrrjrm)r+r�r�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
rbrrdrrr ra�
rz<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__cSr
rbrrhrrr rj�
rz=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN�r<rRrSrarjrrrr �NiceTry�
r�rc@r)z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTrycSr
rbrrdrrr ra�
rz>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__cSr
rbrrhrrr rj�
rz?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNrrrrr �	BetterTry�
r�r)r
r|r}�objectrr�)r+r�rrr0r�rrr �test_bad_tzinfo_classes�
sz"TZInfoBase.test_bad_tzinfo_classesc

Cs�Gdd�dt�}|j}dD]^\}}|tur |ddd||�d�}n|tur2|dddddd||�d�}nJd
��|rdt|�}t|d�\}}d|d	krJd
pKd||f}	t|t�rY|��}|�t	|�d|	�q
|�
tt	|�q
dS)Nc@r)z6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.EdgycSst|d�|_dSrV�rr_)r+r_rrr ra�
r�z?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__cSrgrb)r_rhrrr rj�
rkz@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNrrrrr �Edgy�
�r))�`���F)�a���T)�T)r#Fr"rIrErrMr�
impossiblerz%c%02d:%02dr*r+z01:02:03)rr
rrr,r�rY�timetzr*r�r|r�)
r+rr�r_�legitr��aofsr�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
rbrrhrrr rjrz4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetcSr
rbrrhrrr rmrz.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstcSr
rbrrhrrr rlrz1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameN�r<rRrSrjrmrlrrrr �C1�r"r"rc@r )z*TZInfoBase.test_tzinfo_classes.<locals>.C3cS�
tdd�S)NrrWrrhrrr rj�
z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetcSr$)NrrWrrhrrr rmr%z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstcSr��N�anamerrhrrr rlrz1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNr!rrrr �C3r#r(rrWrr'c@r )z*TZInfoBase.test_tzinfo_classes.<locals>.C4cSr�r&rrhrrr rjrz4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffsetcSr�r�rrhrrr rmrz.TZInfoBase.test_tzinfo_classes.<locals>.C4.dstcSr�rQrrhrrr rlrz1TZInfoBase.test_tzinfo_classes.<locals>.C4.tznameNr!rrrr �C4r#r)c@r)z*TZInfoBase.test_tzinfo_classes.<locals>.C6cSr$)Ni��r�rrhrrr rj$r%z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetcSr$)Nr�r�rrhrrr rm%r%z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNr�rrrr �C6#r�r*c@r)z*TZInfoBase.test_tzinfo_classes.<locals>.C7cSr$)Nrvr�rrhrrr rj,r%z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetcSr$)N���r�rrhrrr rm-r%z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNr�rrrr �C7+r�r,rvr�r+)r
rr�rjrmrlr*rr|r}r�)r+r�r"r�r(r)r*r,rrr �test_tzinfo_classess6
�zTZInfoBase.test_tzinfo_classescCs�|j}Gdd�dt�}|ddd|�d�}|jdd�}|jdd�}|jd	d�}|||fD]'}|||fD]}ttttttfD]}	|	||�}
|	|j	|j	�}|�
|
|�q<q2q+|tur�|jd|�d
�}|jd|�d
�}|jd	|�d
�}|||fD]K}|||fD]A}||k||k}
||us�||ur�||us�||ur�d}n||ur�|ur�nnd}n||ur�d}n||us�J�d
}|�
|
|�q{qtdSdS)Nc@rr)z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetcS� |jdkrt|jd�Stdd�S�Nr#rWr��r�rrFrrr rj8�

zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNrurrrr �OperandDependentOffset7rvr2rrwr#rrEr�rz�r�rrr�r")r
rr�rrrrrrr�r*r)r+r�r2r��d0r�r�rr��opr�r�rrr �test_aware_compare2sB	
��
 ��zTZInfoBase.test_aware_compareN)r<rRrSrrrr-r6rrrr r�
s0rc@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�dSrQ)r
r*r�r�r�r�r�rrFrrr �
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�rGr�METrErHr�rr�r��(rhrtrWzno argscrhrbrr�r��t5rr r�rz'TestTimeTZ.test_zones.<locals>.<lambda>crdrbrrr;rr r�rz07: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 +0100rz%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>.BadtznamerUcSrgrbr�rhrrr rl�sz/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r<rRrSr�rlrrrr �	Badtzname�sr=rIrKz%H:%M:%Sz02:03:04rArBr�)rTrr*rr�rjrr|r}rlrmrXr�r�rEr�rUr;r<r�r�)r+�estr��metrTrUr�rZ�yuckr=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"rIrErr�ri�r�rnrMrPi���rIi���)r
rTr*rXrSrrr �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�rIr�r�rFrMrHrrW)
r
r�r�r�r*r�r�ror�rrjrrl�	r+r�r�r�r�rr�r��tinforrr r_�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�rFrMrHr(rr�r�rW)
ror
r�r*r�r�rrjrrl)r+r�rDr�r�r�r�rrr r��s
��zTestTimeTZ.test_compat_unpicklecCs||j}|dtdd�d�}|�|�|dtdd�d�}|�|�|dtdd�d�}|�|�|ddtd	d�d�}|�|�dS)
Nrr�r�rrFi,r�r�r)r
rTr�)r+r�r�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)NrP�+100�8���rW�-200r"rIrErKrr�r�r�r�rrr�r�r�r�r�rrrhr�r
rTrr*r�rlr�rr�r|r��r+r��z100�zm200r�r�r3r7r�r�r�r��base2�base3rrr r�s>
�
zTestTimeTZ.test_replacecCs|�ddd�}|�ddd�}|�||�|jdd�}|�||�|jtdd�d�}|�||�|jtdd�d�}|�||�Gdd�dt�}|�}|j|d�}|j|d�}|�|��td	d
��|�|��tdd
��|�||�|j|�d�}|�||k�dS)Nr"rIrErr�rc@r)z-TestTimeTZ.test_mixed_compare.<locals>.VariescS�tdd�|_dS�Nr'rWrrdrrr raKr�z6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__cS�|jtdd�7_|jS�Nr"rW�r_rrFrrr rjM�z7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNrrrrr �VariesJrrUr�rWr�)	r
r*r�rTr�rrjrr��r+rTrUrU�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)Nr�)r�r�r�r�)rwr�r	)rFr�)rKr�)ri�i�[
rIr�rMr�r�rr�)r
�	itertools�productrr�rr
rErr�r*)r+�
time_examples�hh�mm�ss�usecr5�ttupr2r�r��t_rtrrr r�\s.������zTestTimeTZ.test_fromisoformatc
Cs�|�dddd�}tdd�tdd�tdd	d
�tdddd�tdd
ddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D]0}|j|d�}|��}|j|d��|j�|�}||ksdJ|��Wd�n1snwYqCdS)Nr�r�r�r�rFr�rIrMr�r�r{r�rKrwr(r�cSr�r�rr�rrr r!�r�z:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>rcSr�rrr�rrr r!�r�rr�r�)r+�	base_timer4r5r2r�r�r`rrr r�vs(
�����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)rrEr�r()rrEr�rr�r�rIrMr�r�r�rrr�rr"rrr�r�)r+�
time_basesr5r�r�rr2�t_tupler�r�r�r`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�rr�r%r�i�r)r
rr�r�rEr*r�)r+r�tsc�tsc_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)Ncr�)z*TestTimeTZ.test_subclass_timetz.<locals>.CrUcr�r�r�r�rdrr r��r�z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__cSr�rbrr�rrr r��r�z2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNr�rrdrr r��r�r�rKrFrM��r�r�r"r�rHrUrJ)
r
rTr*r;r�r�rjr�r�r�r�rrdr �test_subclass_timetz�s
"zTestTimeTZ.test_subclass_timetzN)r<rRrSrr
r8rArBr_r�rEr�r�r�r�r�r�r�r�rhrrrr r7cs"W
"'
r7c@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"rIrErKrFrMrH)
r
r*r�r�r�r�r�r�r�rrhrrr �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"rr�rr�rIr�r�r�rrIrEr���r)rr�r`c@rr)z4TestDateTimeTZ.test_even_more_compare.<locals>.NaivecSr
rbrrhrrr rj8rz>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNrurrrr �Naive7rvrlrFrMrHc@rr)z4TestDateTimeTZ.test_even_more_compare.<locals>.BoguscSr$)Nr#rWrrhrrr rjDrfz>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNrurrrr r�Crvr�cs��kSrbrr�rTrUrr rHrz7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)r
rTrr�r*r�r�r|r}rr�)r+rlr�rrmr �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)NrGrIr�r�rr"rr�rrW)r
r�r�r�r*r�r�rorTr�rrjrrlrCrrr r_Js$



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.)r�rzr�r	r�r"r(r�r�rr�r�rW)	ror
r�r*r�rrjrrl)r+r�r�rDr�r�r�r�rrr r�as
��z#TestDateTimeTZ.test_compat_unpicklecCsr|jdddtdd�d�}t|�|jtdddddd	td
d�d�}t|�|jdddtdd�d�}|�tt|�dS)
Nr"rr�rr�rIr�r�r�rrFr)r
rTrXrr|r�rFrrr �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�rr9r�rEr�rHr�rr�r�rWz2002-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))
rTrr*rrjrrlrXr�r�)r+r>r�r?rTrUr�rZrrr rA�s8


zTestDateTimeTZ.test_zonesc
CsXtdd�}tddd�}tdddd|d	�}t�||�}|�|tddddddd|d	��dS�
Nrr9r�rErKr;r�r�r)rTrrrr�r*)r+r?rZr�rirrr r��s
�zTestDateTimeTZ.test_combinec
Csxtdd�}|jddddddd|d	�}|�|��tddd��|�|��tdddd��|�|��tdddd|d	��dSrp)rTr
r*rrr)r+r?rirrr r��s

"zTestDateTimeTZ.test_extractc
st|j���tdd�}���j|d�}|j����|��|��j|�|�	��
�|�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��|�t�fd	d��|�	��t
d
��|�	��t
d
��t
ddd
d�����|��j|���}|�|j|�|�	�|���}|�|j|�|�	�|�|�t��fdd��|�	����tt�dd�d�}�j|d��|��j|���}�������}|�	||�|jdddtdd�d�}|jtddddddtdd�d�}	|	|}
|�	|
|jj|jjt
dd��ttd�}ttd�}|j|d�|	j|d��|�	�|jj|jj�dS)Ni����z	west 5:30rcr9rbrr�r��nowawarerr r�rz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>cr;rbrrrqrr r�rcr7rbrrrqrr r�rcr:rbrrrqrr r�rcrrbrr)rrrr r�rrr"r�i.)rrXr�cr9rbrr)r��nowawareplusrr r�rrr#�randomtimezonerr�rIr�r�r�r�i>rWr`rd)r
r�rTrr�r�rr�rr*rr|r}rrt�	randrangerjrr�r�rr�)
r+�tz55�	timeaware�
nowawareplus2r�tzrr�r�r�r��maxdiff�tza�tzbr)r�r�rrrsr �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)NrU�42r�rWrr�rDrr�r�rnr��weirdtzrEr�r�z0utcnow(), now(tz), or astimezone() may be broken)r
r�rTr�rr*rjrr|r}rr-rr|r�r�r,�fail)r+�methr��off42�another�againr�r�r�r�r|�now2rrr �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)NrrUr~r�rWrrrr}i��'r�r�)rr
rrTr�rr*rjrr|r}rrVr�)r+rr�rr�r�r�r�r��utcdatetimerjr�r�r�rrr �test_tzinfo_fromtimestamp's*


z(TestDateTimeTZ.test_tzinfo_fromtimestampcCs:|jj}|�}tdd�}|�t||�|jt||d�dS)NrUr~r)r
r|rTr|r})r+r�r�r�rrr �test_tzinfo_utcnowJs

z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}|��}||�}tdd�}|�t|||�|jt|||d�dS)NrrUr~r)rr
rVrTr|r})r+rr�rr�r�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�}||_dSrV�rYrZr�dstvalue�r+r�rrr rad�


z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__cSrgrb�r�rhrrr rmhrkz5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN�r<rRrSrarmrrrr �DSTcsr�))����r")r�r")rr)Nr�r"r#r	r�r:rrrrrr#r)rr
rZr*rwrxryrzr{r|r}r~rr|r}r�)r+r�r�r��flagrZr�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>.DSTrcSr�rVr�r�rrr ra�r�z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__cSrgrbr�rhrrr rm�rkz1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dstN)rr�rrrr r��s
r�r"rrcs"eZdZd�fdd�	Zdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNcs��||�t|d�|_dSrV)rar�uofs)r+r��dofs�r�rr ra�sz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__cSrgrb)r�rhrrr rj�rkz8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffsetrbrrr�rr �UOFS�sr�)r�r�rNrIrEr#r	r�r:i���rzr�r�c@rr)z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFScSr
rbrrhrrr rj�r�z8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNrurrrr �NOFS�rvr�c@rr)z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFScSr�)Nr�rrhrrr rj�r�z8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNrurrrr �BOFS�rvr�r�r%r�ri+�r0rr�rIr�r�r�r)#rr
r|r�rj�utctimetupler*r�rwr�rxr�ryrzr{r�r|r$r}r�rr~rrZr}rr�r�r�r�r�rr~rr�)r+r�r�r�rZr�r�r�r��dtzr��hugerr�r �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"rIrErKrFr�rz04:05:59z.987001r��kuሴr)rTr
rlrEr*r�)r+r>�plus�minus�unknownr��datestr�ofsr2rZ�timestr�ofsstr�tailstr�isorrr �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)NrPrFrGrWrHr"rIrErKrFrMrHrr�r�r�r�r�r�r�rrr�r�r�r�rrIrJrrr r��s>
�
zTestDateTimeTZ.test_replacecCsDtdd�}tdd�}ttdd�d�}|jj|d�}|�|j|�|�t|j|�|�|j�}|�|j|�|�	|�
�|�
��|�	|��|���|�|�}|�|j|�|�	|��tdd��||��}||�|�7}|j
|d	�}|�	|�
�|�
��|�	|��|���|�	|��|���|�|j|j�|�	||�dS)
N�Noner��44rFr��m300r�r�r)rTrr
r�r�rr|r�r�r*rrrjr�r)r+�fnone�f44m�fm5hrirr�r�rrr �test_more_astimezones*


z#TestDateTimeTZ.test_more_astimezoner�cCs4|j�tj�}|�|�d�|�|�|��|�dSrb)r
r�rr�r*r�rhrrr �test_astimezone_default_utc-sz*TestDateTimeTZ.test_astimezone_default_utcrXcCs�|jdddddtjd�}|��}|�||�|�|�d�d�|jdddd	dtjd�}|��}|�||�|�|�d�d
�dS)Nr�rzrKrMr�rriz	-0500 ESTrFz	-0400 EDT)r
rr�r�r*rU)r+rir�rrr �test_astimezone_default_eastern5sz.TestDateTimeTZ.test_astimezone_default_easterncCs8tddddtjd�}|��}|��}|�|j|j�dS)Nr�rzr"rFr)rrr�r�r*r)r+r�r�rxrrr �!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]O}|||fD]G}||}	||us�||ur�||us�||ur�td�}
n&||ur�|ur�nntd�}
n||ur�tdd
�}
n||us�J�tdd
�}
|�|	|
�q{qtdS)Nc@rr)zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetcSr.r/r0rFrrr rjNr1zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNrurrrr r2Mrvr2rrwr#rzr�r�r%rrEr�rWr3ri���rI)r
rr�rr�r*)r+r�r2r�r4r�r�rr�r�r�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"rIrErKrFrMrHrr�rc@r)z1TestDateTimeTZ.test_mixed_compare.<locals>.VariescSrOrPrrdrrr ra�r�z:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSrQrRrSrFrrr rj�rTz;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNrrrrr rU�rrUr�rWr�)	rr*r�rTr�rrjrr�rVrrr 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)Ncr�)z2TestDateTimeTZ.test_subclass_datetimetz.<locals>.CrUcr�r�r�r�rdrr r��r�z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__cSr�rb)r�r�r�rrr r��r�z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNr�rrdrr r��r�r�r�r�rIrKrFrMrgr�r�r"r�rHrUrJ)
r
rTr*r;r�r�rjr�r�r�r�rrdr �test_subclass_datetimetz�s
"z'TestDateTimeTZ.test_subclass_datetimetzN)r<rRrSrr
rjrnr_r�rorAr�r�r}r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�rrrr ri�s:E%A%#
$P'



,ricCs d|��}|r|t|�7}|S)NrM)r$r)ri�
days_to_gorrr �first_sunday_on_or_after�sr�rWr�rrKrIr�c@r)�
USTimeZonecC�"t|d�|_||_||_||_dS�Nr��r�	stdoffset�reprname�stdname�dstname�r+r�r�r�r�rrr ra��
zUSTimeZone.__init__cCrgrb�r�rdrrr re�rkzUSTimeZone.__repr__cC�|�|�r|jS|jSrb�rmr�r�rhrrr rl��
zUSTimeZone.tznamecC�|j|�|�Srb�r�rmrhrrr rj�r�zUSTimeZone.utcoffsetcCs�|dus	|jdurtS|j|usJ�ttj|jd��}|��dkr+|jdkr+|jdks-J�tt	j|jd��}|��dkrF|jdkrF|jdksHJ�||jdd�krW|krZt
StStS�Nr�rMrKrHr#r�r)rr�r��DSTSTARTr�r�r$r�r��DSTENDr��r+rir��endrrr rm�s$$�zUSTimeZone.dstN�r<rRrSrarerlrjrmrrrr r���r�r�r�r�r�rN�Central�CST�CDTrJ�Mountain�MST�MDTi�����Pacific�PST�PDTr�i0����UTCfakec@sdeZdZedddd�Zedddd�ZeZdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestTimezoneConversionsr�rKrHrIr#r�r"c
Cs|�|��t�|�|�|�|�|�|�}|�|�}|��|��krE|jdkrE|�|t|�|�|��t�|�|�|�|�|��n|�||�|t}|�|�}	|��|��kr�|jdkr�|�|	|jdd��|t7}|�|�}	|�|	|jdd��dS|�|	|t�dS)NrIrr"r�)r*rmr�r�rr�r�r�)
r+rir�r��dston�dstoff�asutc�there_and_back�nexthour_utc�nexthour_tzrrr �checkinside�s&


�


z#TestTimezoneConversions.checkinsidecCsF|�|��t�|�|�|�|�|�|�}|�|�}|�||�dSrb)r*rmr�r�)r+rir�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"rWr�)r�r�r�r�DAYr�r�r�)r+r�r�r�r�r��during�outsiderrr �convert_between_tz_and_utc:s ���z2TestTimezoneConversions.convert_between_tz_and_utccCsL|�tt�|�tt�|�tt�|�tt�|�tt�|�tt�dSrb)r�r��utc_realr��utc_fakerdrrr �	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)NrKr�i��z-0900rrrEr�rM�r�rr"rI)rr"r"rI�rr�r�r�)
r�rrTr�r�r�r*r�r�r�r�rjr�)r+�fourback�ninewestr�r��sixutcr�r��first_std_hourr��	asutcbase�tzhour�expectedbaser��astzrrr �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�tSrb�r�rhrrr rj�rz<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetcSr�rbr�rhrrr rm�rz6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNr�rrrr �ok�r�r�rc@rr)z5TestTimezoneConversions.test_bogus_dst.<locals>.notokcSr
rbrrhrrr rm�rz9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN�r<rRrSrmrrrr �notok�rvr�c@rr)z<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokcSs|jdkrdSdtS)Nr�r#)r�r�rhrrr rm�s
z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dstNr�rrrr �tricky_notok�rvr�r�r")rr
r�r�r�r�r|r�)r+r�r�r�r�rirrr �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@rr)z<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonecSs
||jSrb)r�rhrrr r��rfzDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN�r<rRrSr�rrrr �FauxUSTimeZone�rvrr��FEastern�FEST�FEDTrKr�)r�rr"rErKrFr�r�r"r)rr"r"rIrErK)r|r}r�r�rr|r�r�r�r*rrr�r�r�rr�r�r�r�)
r+r��enowrrr��fstart�wallr�r�rrr r��sN








�z$TestTimezoneConversions.test_fromutcN)r<rRrSrr�r�r
r�r�r�r�r�r�r�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)Ncrhrbrr��as_date�as_datetimerr rrz+Oddballs.test_bug_1028306.<locals>.<lambda>crdrbrrrrr rrcrgrbrrrrr rrcrarbrrrrr rrcrirbrrrrr rrcrerbrrrrr rrcrjrbrrrrr rrcrfrbrrrrr rrTr"r	)r�Fr)rr�rr�rr�r�r|r}r*�__eq__r�r�r�r�r�r)r+�
different_day�as_different�date_sc�datetime_scrrr �test_bug_1028306�s4

�zOddballs.test_bug_1028306c	Cs^t��t�t��t�t�tt��fD]}|�t	��d|_
Wd�n1s'wYqdSr�)rr�rrr|rrrr|�AttributeErrorr$)r+rrrr �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
||_dSrb��value)r+rrrr ra)rfz6Oddballs.test_check_arg_types.<locals>.Number.__init__cSrgrbrrdrrr �__int__+rkz5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r<rRrSrarrrrr �Number(rrc@r�)z,Oddballs.test_check_arg_types.<locals>.FloatNr�rrrr �Float.r�rg$@g������%@r#z10.9�10)r��decimal�Decimalr|r}r)r+rr�xxrrr �test_check_arg_types's��zOddballs.test_check_arg_typesN)r<rRrSrrrrrrr r�s%
rc@rr)�tzinfo2cCs�t|t�s	td��|j|urtd��|jdd���}|jdd���}|dus0|dus0|��dur2t�||krD||}|��}||krD|S||fD] }||}|��|krX|S|jdd�}|��|krh|SqHtd��)�*datetime in UTC -> datetime in local time.�&fromutc() requires a datetime argument�dt.tzinfo is not selfrrCr"NzNo suitable local time found)rYrr}rr�r�rjrm)r+ri�off0�off1�ldt�offrrr r�Es,

�ztzinfo2.fromutcNr�rrrr rCsrc@r)�USTimeZone2cCr�r�r�r�rrr ragr�zUSTimeZone2.__init__cCrgrbr�rdrrr remrkzUSTimeZone2.__repr__cCr�rbr�rhrrr rlpr�zUSTimeZone2.tznamecCr�rbr�rhrrr rjvr�zUSTimeZone2.utcoffsetcCs|dus	|jdurtS|j|usJ�ttj|jd��}|��dkr+|jdkr+|jdks-J�tt	j|jd��}|��dkrF|jdkrF|jdksHJ�|jdd�}|t
|kr[|kr\t
S||krh|t
krqnn|jrotSt
S||kr}|t
kr�ntS|jr�t
StStSr�)rr�r�r�r�r�r$r�r�r�r�rDr�rrr rmys"$$��zUSTimeZone2.dstNr�rrrr r%er�r%�Eastern2�Central2�	Mountain2�Pacific2c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�Europe_Vilnius_1941cCs$tdddd|d�tdddd|d�gS)N�rMr�ryrr'�rrdrrr �	_utc_fold���zEurope_Vilnius_1941._utc_foldcCs$tdddd|d�tdddd|d�gS)Nr+rMr�rr�rr,rdrrr �	_loc_fold�r.zEurope_Vilnius_1941._loc_foldcC�B|��\}}||krdtS||kr|jrdtSdtSdtS)NrErI�r/r�rD�r+ri�
fold_start�	fold_stoprrr rj��zEurope_Vilnius_1941.utcoffsetcCr0)Nrr"r1r2rrr rm�r5zEurope_Vilnius_1941.dstcCs.|��\}}||krdS||krd|jSdS)N�MSK)r6�CESTr7)r/rDr2rrr rl�s
zEurope_Vilnius_1941.tznamecCsr|jdksJ�|j|usJ�|jdkrt�|��\}}||kr%|dtS||kr3|dtjdd�S|dtS)Nrr+rErIr"rC)rDrr�r�r-r�r�r2rrr r��s
zEurope_Vilnius_1941.fromutcN)	r<rRrSr-r/rjrmrlr�rrrr r*�s			r*c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
�d�dd��Ze
�d�dd��Z
dd�Ze
�d�dd��Ze
�d�dd��Ze
�d�dd��Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0�TestLocalTimeDisambiguationc	Cs�t�}tddddddtjd�}|�|�}|�|�d�d�|�|jd	�|�|�	��tdddd
tjd�}|�|�}|�|�d�d�|�|jd�|�
|�	��tdddd
tjd�}|�|�}|�|�d�d�|�|jd	�|�
|�	��dS)Nr+rMr�r	r�rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rryz"Mon Jun 23 23:00:00 1941 CEST+0200r"r'z"Tue Jun 24 00:00:00 1941 CEST+0200)r*rrr�r�r*rUrDr�rmr�)r+�Vilnius�gdtr#rrr �test_vilnius_1941_fromutc�s,
�
�
�z5TestLocalTimeDisambiguation.test_vilnius_1941_fromutcc
Cs�t�}tdddddd|d�}|�tj�}|�|�d�d�tdddddd|d�}|�tj�}|�|�d�d	�tdddddd|d
d�}|�tj�}|�|�d�d�tddd
d|d�}|�tj�}|�|�d�d�dS)Nr+rMr�r'r�rz%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr")rrDzMon Jun 23 21:59:59 1941 UTCr�rzMon Jun 23 22:00:00 1941 UTC)r*rr�rr�r*rU)r+r9r#r:rrr �test_vilnius_1941_toutc�s*����z3TestLocalTimeDisambiguation.test_vilnius_1941_toutccCsztddd�}tddddd�}|�|jd�|�|jd�|�t��tdddddd�Wd�dS1s6wYdS�Nrr"rC)rrr*rDr|r}�r+r�rirrr �test_constructorss"�z-TestLocalTimeDisambiguation.test_constructorscCs@tddddd�}|��}|�|jd�|��}|�|jd�dS)Nr"rC)rrr*rDr)r+rir�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"rC)rDrrrI)	rrr*r�rDr�r|r�r}r>rrr r�s,���"�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*rXr�r>rrr �	test_hash8s z%TestLocalTimeDisambiguation.test_hashrXcCs<d}t�|�}t�|d�}|�|jd�|�|jd�dS)NiX�UTrqrr")rrr*rD)r+rx�dt0rrrr 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")rYrRrUr=rrr*rD)r+�tmrxrZrTrrr �test_fromtimestamp_lord_howeFs


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs|�t�d�jd�dSrQ)r*rrrDrdrrr �%test_fromtimestamp_low_fold_detectionVszATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tddddd�}|jdd�}|�|��d|���dS)NrxrzrIr"r�rCrq)rr�r*r�)r+rBrrrr �test_timestamp[s
�z*TestLocalTimeDisambiguation.test_timestampcCsht�d�}t�d|�dkr|�d�tddddd	�}|jd
d���}|jdd���}|�|d|�dS)
NrCrDrErFr�rKrFr"r�rrCrG)rYrRrUr=rr�r�r*)r+rHr��s0�s1rrr �test_timestamp_lord_howebs

z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tddddd�}|jdd�}|��}|��}|�|��d�|�|��d�|�|t|�|�|jd	�|�|jd	�dS)
NrxrzrIr"r�rCr�r�r)rr�r�r*rlr�rD)r+rBr�adt0�adt1rrr r�lsz+TestLocalTimeDisambiguation.test_astimezonec	Csztdd�}tddddd�}tD]+\}}}||fD]!}|�||�}|�|�}|�||�|�|dkr3dn|j|j�qqdS)Nr"rCrKr)rrr�r�r�r*rD)	r+r�rir�r�rrrxr�rrr �test_pickle_fold{s

��z,TestLocalTimeDisambiguation.test_pickle_foldcCs>tdd�}tddddd�}|�t|�d�|�t|�d�dS)Nr"rCzdatetime.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#r�r"rrIrCr�rKrH)	rr&rr{r*rmr�r�r�)r+�	dt_summer�	dt_winterr�rirrr r��s�z$TestLocalTimeDisambiguation.test_dstcCs�tddddtd�tj}tddddtd�}|�|��dt�|�|��dt�|�|jdd	���dt�|�|jdd	���dt�dS)
Nr�r#r�r"rrIrLr�rC)rr&rr{r*rjr�r�)r+rRrSrrr 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#r�rMrrHrKrFrr�r")r�ry)r�r"rI)rMry)
rr&rr{r�r*r�rDr�r�)	r+�u_summer�u_winter�t_summer�t_winterr�rZrTr�rrr r��s0






z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd�}|�||�tj��tdddtd�}|�||�tj��dS)Nr�r"rrM)rr&r*r�rr�rFrrr �test_mixed_compare_regular�sz6TestLocalTimeDisambiguation.test_mixed_compare_regularcC�<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�r#r�r"r�r�rr&r�rr�r�)r+�t_fold�
t_fold_utcrrr �test_mixed_compare_fold��z3TestLocalTimeDisambiguation.test_mixed_compare_foldcCrY)Nr�rKrHrIr�rrZ)r+�t_gap�	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"rrCr�r#r�r�rKrHrI)rr&r*rXr�)r+r�r[r_rrr �test_hash_aware�s z+TestLocalTimeDisambiguation.test_hash_awareN)r<rRrSr;r<r?r@r�r�rArr�rrIrJrKrNr�rQr�r�r�r�rXr]rarbrrrr r8�s8



	


!r8cCs"t�|�\}}t|d�t||�Srb)rX�tee�nextr�)�iterabler/r0rrr �pairs�s

rfc@s�eZdZdZdd�Zedd��Zedd��Zedd	��Z	e
d
dd���Zdd
�Z
dd�Zdd�Zdd�Zdd�Zed(dd��Zed)dd��Zdd�Zdd�Zed*d d!��Zd"d#�Zd$d%�Zd&d'�ZdS)+�ZoneInfoz/usr/share/zoneinfocCs||_||_|�||�|_dS)z�

        :param ut: array
            Array of transition point timestamps
        :param ti: list
            A list of (offset, isdst, abbr) tuples
        :return: None
        N)�ut�ti�invertr)r+rhrirrr ra�s	zZoneInfo.__init__cCs�td|�td|�f}|rT|ddt}|dd|7<|dd|7<tdt|��D]$}|d|||ddt7<|d|||dt7<q/|S)Nr�rr")r�SECr-rY)rhrirr_r3rrr rjs$"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)NrK�TZifznot a zoneinfo filer{r3rErsrrdr"z>lbbrMrI)�read�decoder��seekr�fromfiler:�	byteorder�byteswapr-r.�struct�unpackr��findrrY)r��fileobj�countsrh�type_indices�ttisr3�abbrs�gmtoff�isdst�abbrind�abbrri�idxr+rrr rps2



zZoneInfo.fromfilecCsHtj�|j|�}t|d��
}|�|�Wd�S1swYdS)N�rb)�os�path�join�zoneroot�openrp)r�r7r�rWrrr �fromname3s$�zZoneInfo.fromnamer�r"cCst|t�s	td��|j|urtd��|��|jd|jd|jd|j	}||j
dkr7|jd}d}nCt�
|j
|�}|j
|d|ksIJ�|t|j
�ksY||j
|ksYJ�|j|d|�\}}|d|d}|td||j
|d�k}||d7}|r�|jdd	�S|S)
rrr r rqrr"rrIrC)rYrr}rr�r��EPOCHORDINALr�r�r�rhri�bisect�bisect_rightrYrr�)r+rir��ttirDr�tti_prev�shiftrrr r�;s0

���
 zZoneInfo.fromutccCs\|��|jd|jd|jd|j}|j|j}t�||�}|j	t
d|d�|S)Nr rqrrr")r�r�r�r�r�rrDr�r�rir�)r+rir3r�rrrrr �_find_tiYs���zZoneInfo._find_ticC�|�|d�SrQ�r�rhrrr rjc�zZoneInfo.utcoffsetcCs|�|d�}|r
tStSr�)r�r�r�)r+rir|rrr rmfszZoneInfo.dstcCr�)NrIr�rhrrr rlnr�zZoneInfo.tznameNccs��|dur|j}tj�|d�}zt|�}Wn
tyYdSw|� |D]}|��}|r9|�d�s9|��dVq%Wd�dS1sEwYdS)Nzzone.tab�#rI)	r�r�r�r�r�r]�stripr5r@)r��zonedir�zone_tabrW�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)
rr�r�rr�r�r��transitions�printr�)r��
start_year�count�	gap_count�
fold_count�zeros_count�min_gap�min_fold�max_gap�max_fold�min_gap_datetime�max_gap_datetime�min_gap_zone�max_gap_zone�min_fold_datetime�max_fold_datetime�
min_fold_zone�
max_fold_zone�stats_since�zonenamer�rir��trans_countsrrr �stats�s`



��
�
�zZoneInfo.statsccsJ�tt|j|j��D]\\}}\}}|d|d}t�|�|fVq
dSrQ)rfr�rhrirrV�r+�_�prev_tir�rir�rrr r��s
�"�zZoneInfo.transitionsccsp�tt|j|j��D]+\\}}\}}|d|d}|tkr5|d|dkr5t�|�||d|dfVq
dS)zLFind all folds with the same value of isdst on both sides of the transition.rr"rIN)rfr�rhrir�rrVr�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�)
r��	same_abbrr�r�r�r�rir��	prev_abbrr~rrr �print_all_nondst_folds�s
���zZoneInfo.print_all_nondst_foldsccs,�|��D]\}}|tkr||fVqdSrb�r�r��r+r�r�rrr �folds�s���zZoneInfo.foldsccs*�|��D]
\}}|tkr||fVqdSrbr�r�rrr �gaps�s�
��z
ZoneInfo.gapsccs"�|��D]	\}}|s|VqdSrb)r�r�rrr �zeros�s���zZoneInfo.zerosrb)r")Fr")r<rRrSr�rar�rj�classmethodrpr�rr�r�r�r�rjrmrlr�r�r�r�r�r�r�r�rrrr rg�s4

$

0rgc@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 VxWorksrxz"Skipping zoneinfo tests on WindowszSkipping %s: %s)r:r�r=rgr�r�r��FileNotFoundError)r+�errrrr r��s



"��zZoneInfoTest.setUpcCs<|�|jdd�|jt|j�f|jdd�|jt|j�f�dS)Nr)r*r�rD�idr)r+r/r0rrr �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�rr{r�r�r*rDrr�r�r�rj�	r+r�rir�r�udtr#�adtrjrrr �
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"rCzAt %s.)r�r�rr{r�r�r*rDrr�r�r�rj�
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)N�Riyadh8zright/zSkipping %s�TZi�r�r"i���i��r�ri@i�2rrIrC)r�r5r=r�r��environ�getrY�tzsetr�r�rrkrr�r�r�r*)r+r�r�r�r�rLr]rrx�sdt�tzdtrMri�ts0�ts1rrr �test_system_transitionssL

�
�
�

�


z$ZoneInfoTest.test_system_transitionsN)	r<rRrSr�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)N�tzdatazZoneInfoTest[%s]�test_)r
rgr�r�r�r�r-r5r.�superra)r+r�r7�Test�method�r;rr raEs
��zZoneInfoCompleteTest.__init__)r<rRrSra�
__classcell__rrr�r r�Dsr�c@r�)�IranTestzAsia/TehranN)r<rRrSr�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)N�PurezNot relevant in pure Python)r;r<r6r=�	_testcapi�test_datetime_capirdrrr r�Vs
zCapiTest.setUpc	CsRdD]$}t�|�}|j|d��|�|tj�Wd�n1s!wYqdS)N�TF)�	use_macro)r��get_timezone_utc_capirr�rr�)r+r��capi_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)r7r�rIrKrrF)
r��make_timezones_capirrrr*rrlr�r�)
r+r�r�r��	exp_named�exp_unnamed�casesr7�tz_act�tz_exprr�r�rrr �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��r�r)rrr��PyDateTime_DELTA_GETr*rr�r�)r+r��klassr�rZrr�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"rI)r�rIr�r�)rrr��PyDateTime_GETr*r�r�r�)r+r�r�r�rZr�r�r�rrr �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�)��rr�r'r�r�r�r�rr�r'r�r�r�r�)
rrr�rr��PyDateTime_DATE_GETr*r�r�r�r�r�r)
r+r�r�r�rZr�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�rr��PyDateTime_TIME_GETr*r�r�r�r�r�r)
r+rr�r�rZr�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)�testname�utc1�non_utcrr�r�r�rIrKr)r��get_timezones_offset_zerorr�rr�r�rr*rrl)r+r�rr�non_utc_exprr�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��datetime_check_dater�r�r+r
rrr�rr)	r+r�rZ�dsri�is_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�rr�r�Tr"rrr�r)rr��datetime_check_timer�r�r+r
rrr�rr)r+rr�r�is_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��datetime_check_datetimer�r�r+r
rrr�rr)r+r�rir��is_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��datetime_check_deltar�r�r+r
rr�rrr)r+r�r�tds�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��datetime_check_tzinfor�r�r+r
rrr)	r+rr2�tzisr��	is_tzinfor�rr	rrr �test_check_tzinfoAs,�����zCapiTest.test_check_tzinfoc	C�htddd�}dD])}|j|d��t�||j|j|j�}|�||�Wd�n1s,wYqdS)Nr�rr��FT��macro)rrr��get_date_fromdater�r�r�r*�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�rr�r'r�r�r�rr)rrr��get_datetime_fromdateandtimer�r�r�r�r�r�r�r*r"rrr �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�rr�r'r�r�r��rr"r�r rD)
rrr��#get_datetime_fromdateandtimeandfoldr�r�r�r�r�r�r�rDr*)r+r#rDr r$rrr �%test_datetime_from_dateandtimeandfold|s*�����z.CapiTest.test_datetime_from_dateandtimeandfoldc	Csntdddd�}dD]+}|j|d��t�||j|j|j|j�}|�||�Wd�n1s/wYq	dS)Nr'r�r�r�rr)	rrr��get_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)Nr'r�r�r�r)rr*)
rrr��get_time_fromtimeandfoldr�r�r�r�rDr*)r+r.rDr r/rrr �test_time_from_timeandfold�s$�����z#CapiTest.test_time_from_timeandfoldc	Cr)Nr�r�r�rr)rrr��get_delta_fromdsurr�r�r*)r+�	exp_deltar �c_api_deltarrr �test_delta_from_dsu�r&zCapiTest.test_delta_from_dsuc	Csntddd���}dD]*}|j|d��t�t|�|�}|�|tddd��Wd�n1s/wYq
dS)N��rKr�rr)rr�rr��get_date_fromtimestamprZr*r)r+rr rZrrr �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)�r7rKr�NF)r:NTr:r"r�T)�r7rKr�r%r�NF)r;NTr;r)�caser r)	rrr��get_datetime_fromtimestamprrrZr�r*)r+r�r�r<r �dtupr�usetz�dt_origrr�rrr �test_datetime_from_timestamp�s(�	
����z%CapiTest.test_datetime_from_timestampN)r<rRrSr�r�r�r�r�r�r�rr
rrrrr%r(r,r0r2r6r9rArrrr r�Us,	

	r�cCs|�t��|Srb)�addTestr�)�loader�standard_tests�patternrrr �
load_tests�srF�__main__)mr�r�rXr�r�rr:r�rrtr�rsr�r�operatorrrrrrrr	r
r�testr�test.supportr
rrrrr)rrrrrrrrYr�r�r��_loadsr�r-rJr�rYrkr�r�rF�TestCaser'rTrorsrwr�rrr�r�r�rrr�r�r�rr7rir�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr%r&r'r(r)r*r8rkrfrgr��	TestSuiter�r�r�rFr<�mainrrrr �<module>s,�8_A3=!a"<


*M"32
gk


�

Youez - 2016 - github.com/yon3zu
LinuXploit