Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/datetimetester.cpython-39.pyc

a

XC?hg��@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/dk�slJ�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�r�e�l�dS)xzTTest date/time type.

See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases
�N)�array)	�lt�le�gt�ge�eq�ne�truediv�floordiv�mod)�support)�is_resource_enabled�	ALWAYS_EQ�LARGEST�SMALLEST)�MINYEAR�MAXYEAR��	timedelta��tzinfo)�time��timezone)�date�datetimecCsg|]}tt|f�qS�)�pickle)�.0�protorr�8/opt/alt/python39/lib64/python3.9/test/datetimetester.py�
<listcomp>*s�r!��
g@A@�abcr�inf�nanc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
TestModulecCs$t}|�|jd�|�|jd�dS)Nr"�')�datetime_module�assertEqualrr)�selfrrrr �test_constants=szTestModule.test_constantscCs$tt�}tjD]}|�||�qdS)z2Test that __all__ only points to valid attributes.N)�dirr)�__all__�assertIn)r+Z	all_attrs�attrrrr �test_allBs
zTestModule.test_allcCsTd|jjvr|�d�t}tdd�t|�D��}tgd��}|�||tg��dS)NZ_Purez"Only run for Fast C implementationcss&|]}|�d�s|�d�s|VqdS)�__N)�
startswith�endswith)r�namerrr �	<genexpr>Ms�z/TestModule.test_name_cleanup.<locals>.<genexpr>)
rrrrZ
datetime_CAPIrrrr�sys)�	__class__�__name__�skipTestr)�setr-r*)r+r�namesZallowedrrr �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#��������)r8r9r:r)Z_divide_and_roundr*)r+Zdarrrr �test_divide_and_roundTs"
z TestModule.test_divide_and_roundN)r9�
__module__�__qualname__r,r1r=rKrrrr r';sr'c@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�FixedOffset�*cCs>t|t�rt|d�}t|t�r(t|d�}||_||_||_dS�N��minutes)�
isinstance�intr�_FixedOffset__offset�_FixedOffset__name�_FixedOffset__dstoffset�r+�offsetr5Z	dstoffsetrrr �__init__us



zFixedOffset.__init__cCs
|j��S�N)rV�lower�r+rrr �__repr__}szFixedOffset.__repr__cCs|jSr[)rU�r+�dtrrr �	utcoffsetszFixedOffset.utcoffsetcCs|jSr[)rVr_rrr �tzname�szFixedOffset.tznamecCs|jSr[)rWr_rrr �dst�szFixedOffset.dstN)rO)r9rLrMrZr^rarbrcrrrr rNss

rNc@seZdZddd�Zdd�ZdS)�PicklableFixedOffsetNcCst�||||�dSr[)rNrZrXrrr rZ�szPicklableFixedOffset.__init__cCs|jSr[)�__dict__r]rrr �__getstate__�sz!PicklableFixedOffset.__getstate__)NNN)r9rLrMrZrfrrrr rd�s
rdc@seZdZdd�ZdS)�_TZInfocCst��Sr[)�random)r+r)rrr ra�sz_TZInfo.utcoffsetN�r9rLrMrarrrr rg�srgc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
TestTZInfoc	CsRt�}tddddddd|�}|�t��|��Wd�n1sD0YdS)N��rD��� rAr)rgr�assertRaises�	TypeErrorra)r+Ztz1�dt1rrr �test_refcnt_crash_bug_22044�sz&TestTZInfo.test_refcnt_crash_bug_22044cCs@t�}tj}|�t|j|�|�t|j|�|�t|j|�dSr[)rr�maxro�NotImplementedErrorrbrarc)r+Zuselessr`rrr �test_non_abstractness�s
z TestTZInfo.test_non_abstractnesscCsrGdd�dt�}|�t|t��|dd�}|�|t�t��}|�t|j|�|�t|j	|�|�t|j
|�dS)Nc@seZdZdd�ZdS)z9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughcSs||_||_dSr[)Z_NotEnough__offsetZ_NotEnough__name)r+rYr5rrr rZ�szBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__N)r9rLrMrZrrrr �	NotEnough�srvrAZNotByALongShot)r�
assertTrue�
issubclass�assertIsInstancer�nowrortrbrarc)r+rvrr`rrr �test_subclass_must_override�s
z&TestTZInfo.test_subclass_must_overridecCsntdd�}|�|t�t��dfD]F}|�|�|�tdd��|�|�|�d�|�|�	|�tdd��q"dS)NrAZThreerQrO)
rNryrrrzr*rarrbrc)r+Zfor`rrr �test_normal�s
zTestTZInfo.test_normalcCsTt�t�}|�t|�t�tD]0\}}}|�||�}|�|�}|�t|�t�qdSr[)r�__new__�assertIs�type�pickle_choices�dumps�loads)r+�orig�pickler�	unpicklerr�green�derivedrrr �test_pickling_base�s

zTestTZInfo.test_pickling_basecCs�tdd�}t|dfft|fft|dfffD]�\}}||�}|�d�}|�|t�|�t|�|�|�|�	d�|�|�|�d�|�t
D]`\}}}|�||�}	|�|	�}
|�|
t�|�t|
�|�|�|
�	d�|�|�|
�d�|�q�q*dS)N����rQ�cookie�EST)
rrdrrbryrr~rr*rar�r�r�)r+rYZotype�argsr�Zonamer�r�rr�r�rrr �test_pickling_subclass�s$


�

z!TestTZInfo.test_pickling_subclasscs`tdd���G��fdd�dt�}|�}tddddd|d	�}|�|�}|�||��|�dS)
Nr"��hourscs0eZdZdZ�fdd�Z�fdd�Zdd�ZdS)	z0TestTZInfo.test_issue23600.<locals>.UKSummerTimez~Simple time zone which pretends to always be in summer time, since
                that's what shows the failure.
            cs�Sr[rr_)�	DSTOFFSETrr ra�sz:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffsetcs�Sr[rr_)�DSTDIFFrr rc�sz4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dstcSsdS)N�UKSummerTimerr_rrr rb�sz7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tznameN)r9rLrM�__doc__rarcrbr�r�r�rr r��sr�rkrG��r)rrr�fromutcr*ra)r+r��tz�u�trr�r �test_issue23600�s
zTestTZInfo.test_issue23600N)
r9rLrMrrrur{r|r�r�r�rrrr rj�s
rjc@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��ACDTrBr���r")rrr�r�r�DTr]rrr �setUp�szTestTimeZone.setUpcCs8|j|jtjtjtjfD]}|�t|�|�d��qdSr[)	r�r�r�utc�minrsr*�strrb�r+r�rrr �test_str�s�zTestTimeZone.test_strcCs>t}|j|jtjtjtjfD]}t|�}|�|t	|��qdSr[)
r)r�r�rr�r�rs�reprr*�eval)r+rr�Ztzreprrr �	test_repr�s�zTestTimeZone.test_reprcCsNtddd�}|�tj�d�t�|�tj�d�|�|�tj�d�|�dS)N��;�r�rR)rr*rr�ra�ZEROr�rs)r+�limitrrr �test_class_membersszTestTimeZone.test_class_memberscCs�|�tjttd���|�tjttd�d��|�tjttd�d��tdd�tdd�fD](}t|�}|�|�d�tdd�d�qZtdd�td�fD]"}|�t	t|�|�t	t|�q�|�t
��td�Wd�n1s�0Y|�t
��td�Wd�n1�s0Y|�t
��ttd�Wd�n1�sL0Y|�t
��ttd�Wd�n1�s�0Y|�t
��ttdd	�Wd�n1�s�0YdS)
Nr�UTCr"��microseconds��secondsrQrO�ABC�extra)r~rr�r�assertIsNotr*�assertNotEqualraro�
ValueErrorrpr�)r+Z	subminuter�Zinvalidrrr �test_constructors2466zTestTimeZone.test_constructorcCs |�tjt�|�|jt�dSr[)ryrr�rr�r]rrr �test_inheritanceszTestTimeZone.test_inheritancecCs�|j}dD]<}|t}|�|t|��|��|�|t|��|��q
|�t��|j�d�Wd�n1st0Y|�t��|j�d�Wd�n1s�0YdS)N)rg�?r��rB)r��HOURr*rrarorpr�)r+�dummy�hrYrrr �test_utcoffset!s6zTestTimeZone.test_utcoffsetcCs�|�tj�|j��|�t��|j�d�Wd�n1s@0Y|�t��|j�d�Wd�n1sv0YdS)Nr�rB)�assertIsNonerr�rcr�rorpr�r]rrr �test_dst,s6zTestTimeZone.test_dstcCs�|�dtj�d��|�dtt��d��|�dtdt��d��|�dtdt��d��|�dttdd���d��|�d	tdtd	��d��|�d
ttd
��d��|�dttdd
���d��|�dttdd
���d��|�dttdd
d���d��|�dttdd
d���d��|�t��|j	�d�Wd�n1�sT0Y|�t��|j	�d�Wd�n1�s�0YdS)Nr�z	UTC-05:00���z	UTC+09:30r�z	UTC-00:01���rQZXYZ��zUTC+01:06:40r�zUTC-01:06:40zUTC+01:06:40.000001r"zUTC-01:06:40.000001r�rB)
r*rr�rbr�r�rrorpr�r]rrr �test_tzname2s&���8zTestTimeZone.test_tznamecCs�|�t��tj�|j�Wd�n1s.0Y|�t��tj�d�Wd�n1sd0Y|j|jt	fD]J}|jj
|d�}|�|�}|�|||�|��|�||jj
tjd��q|dS)Nznot datetimer)
ror�rr�r�r�rpr�r��Eastern�replacer*ra)r+r�Zutctime�localrrr �test_fromutcHs,*
�zTestTimeZone.test_fromutccCsR|�tt�tt��|�tt�tt��|�tdt�tdtd��|�t�� tt�tt�kWd�n1sv0Y|�tt�tt�h�|�tt�dk�|�	tt�dk�tt�}|�|t
k�|�	|t
k�|�|tk�|�	|tk�|�|tk�|�	|tk�|�	|tk�|�|tk�|�	|tk�|�|tk�dS)Nr�r�)
r�rr�r�r*rorpr/rw�assertFalserrrr�rrr �test_comparisonTs$:zTestTimeZone.test_comparisoncCs�tddd�}tjtjtjfD]^}|�|�|�|j|d����|�|�|�|j|d����|�|�	|�|j|d��	��qdS)Nr"r)
rrr�rsr�r*rbr�rarc�r+r�r�rrr �test_aware_datetimeis���z TestTimeZone.test_aware_datetimecCs�|j|jtjtjfD]2}tD](\}}}|�|�||��}|�||�qqtj	}tD](\}}}|�|�||��}|�
||�qRdSr[)r�r�rr�rsr�r�r�r*r�r~)r+r�r�r�r�tz_copyrrr �test_pickletszTestTimeZone.test_picklecCsP|j|jtjtjfD]}t�|�}|�||�qtj}t�|�}|�||�dSr[)	r�r�rr�rs�copyr*r�r~�r+r�r�rrr �	test_copy~s

zTestTimeZone.test_copycCsP|j|jtjtjfD]}t�|�}|�||�qtj}t�|�}|�	||�dSr[)
r�r�rr�rsr�Zdeepcopyr*r�r~r�rrr �
test_deepcopy�s

zTestTimeZone.test_deepcopyc
Cstddd�tdddd�tddddd�g}|�dd�|D��|D]:}|jd	|d
��t|�Wd�q@1sp0Yq@tdd�tdd
d�g}|�dd�|D��|D]f}|jd|d
��B|�t��t|�Wd�n1s�0YWd�q�1�s0Yq�dS)Nr�r�r��r�rRr��?B�r�rRr�r�cSsg|]
}|�qSrr�r�deltarrr r!��z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>Zgood)Z	test_typer��r�r")r�r�cSsg|]
}|�qSrrr�rrr r!�r�Zbad)r�extend�subTestrror�)r+Ztime_deltasr�Zbad_time_deltasrrr �test_offset_boundaries�s 
�(
�z#TestTimeZone.test_offset_boundariescCs,|�tjt��|�ttdd��t��dS)Nr"r�)r�rr�rrr]rrr �test_comparison_with_tzinfo�sz(TestTimeZone.test_comparison_with_tzinfoN)r9rLrMr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r��s"
r�c@seZdZdd�Zdd�ZdS)�HarmlessMixedComparisoncCs�|�ddd�}|�|dk�|�|dk�|�d|k�|�d|k�|�|ddg|g�|�g|ddgg�|�|tk�|�|tk�|�|tk�|�|tk�|�|tk�|�|tk�|�|tk�|�|tk�|�|tk�|�|tk�dS)Nr"r�)�theclassr�rwr/rrr)r+�merrr �test_harmless_mixed_comparison�s"z6HarmlessMixedComparison.test_harmless_mixed_comparisoncs�|�ddd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fd	d��|�t�fd
d��dS)Nr"cs�dkS�Nrrr�r�rr �<lambda>�r�zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>cs�dkSr�rrr�rr r��r�cs�dkSr�rrr�rr r��r�cs�dkSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�csd�kSr�rrr�rr r��r�)r�rorpr]rr�r �test_harmful_mixed_comparison�sz5HarmlessMixedComparison.test_harmful_mixed_comparisonN)r9rLrMr�r�rrrr r��sr�c@s�eZdZeZdd�Zdd�Zdd�Zej	dd��Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zej	dd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7S)8�
TestTimeDeltacCsv|j}t}||�|dddddddd��||d�|dd��||dd�|dd��||ddd�|dd��||dd�|dd��||dd�|d	d
��||dd
�|dd��||dd�|dd��||dd�|d
d��||dd�|d
d��||dd�|dd��||dd�|dd
��||dd
�|dd��||dd�|dd��||dd�|dd��||dd�|dd��dS)Nr)�weeks�daysr�rRr��millisecondsr�r"�r�r�r��r�rDr�r��<rQ���r�g�$I�$I�?gUUUUUU�?g�?g����MbP?)r*r)r+r�tdrrr r��s(�zTestTimeDelta.test_constructorcCsb|j}t}|d�}|dd�}|ddd�}|||||ddd��||||dd��||�|�|dd��|||d��||
|d��|||dd��|||dd	d
��|t|�|�|t|�|�||dd�|�||ddd�|�||d
|d��||d
d
|�||d
d
|�||d
|dd��|d
||dd��||d
|dd��||d
|ddd��|d
||ddd��||d
|ddd��||d|�||d||�||d||�||d|dd�||dd|d�||d|dd��|d||dd��||d|d��||d
|dd��||d|ddd��||d
|dd��||d|ddd��||d|d��||d|dd��||d|d��||d
|dd��||d|ddd��||d
|dd��||d|ddd��|dd�}|d|dd|�|d|dd|�|dd|d|�|dd|d|�|d|dd|�|d |dd|�||dd!�d"|d#d��||dd!�d$|d%d��|d|dd|�|d|dd|�|d|d&d|�|d |d&d|�|d|dd|�|d|dd|�|d|d'd|�|d|d'd|�td(d
�D]$}|||d|t|d���q�td(d
�D]$}|||d|t|d���q�||dd!�d)|d%d��||d*d	d+�|d*d	d,�|ddd��||d*dd�|d*dd�|ddd��dS)-NrDrr�r�rIiDQrFr��Q�X>�Qi��r#�FiX�'rC�r�r"i@�i��6i@���?��xr�rArErBr@r�r�翶~�Ϛ�?�@�g�6+1��?i�S	g@g�r?g`""K?-�?�ɚ;r��>B)r*r�__rsub__�abs�range�round)r+rr��a�b�c�us�irrr �test_computationss�

""
�
�zTestTimeDelta.test_computationscs�td��dD]\�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��qd�|�t��fd	d��|�t��fd
d��|�t��fdd��|�t�fdd��|�t�fd
d��dS)NrO�r"��?cs��Sr[rr�rr	rr r�Yr�z<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>cs��Sr[rrr
rr r�Zr�cs��Sr[rrr
rr r�[r�cs��Sr[rrr
rr r�\r�rcs��Sr[rr�r�zerorr r�ar�cs��Sr[rrrrr r�br�cs��Sr[rrrrr r�cr�cs�dS)N�rr�rrr r�dr�cs�dS)Nr�rrrrr r�er�)rrorp�ZeroDivisionErrorr]r)rr	rr �test_disallowed_computationsTsz*TestTimeDelta.test_disallowed_computationscCs,td�}|�t|jt�|�t|jt�dS)NrO)rror��__mul__�NAN�__truediv__)r+rrrr �test_disallowed_specialgsz%TestTimeDelta.test_disallowed_specialcCsDd\}}}t|||�}|�|j|�|�|j|�|�|j|�dS)N)r"rD��rr*r�r�r�)r+r�r�rr�rrr �test_basic_attributesms

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


z TestTimeDelta.test_total_secondscCs.tddddddd�}tdd	�}|�||�dS)
N�drF�8���r@r�g��A�r�r�r�rRr�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)NrrFrr@r�iz
r rDr��1r�r"rE)rr*�hash�len)r+r"r#�drrr �test_hash_equality�s"�z TestTimeDelta.test_hash_equalitycCsBd}t|�}tD],\}}}|�||�}|�|�}|�||�qdS)N)r��"�8)rr�r�r�r*�r+r�r�r�r�rr�r�rrr �
test_pickling�s
zTestTimeDelta.test_picklingcs$tddd��tddd�}|��|�|��|k�|��|k�|��|k�|��|k�|��|k�dD]�}t|�}|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�qntD]��|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fd	d��|�t��fd
d��|�t��fdd��|�t��fdd��|�t��fd
d��|�t��fdd��|�t��fdd���q(dS)NrErArG�)rArArA)rErGrG)rErArBFTcs��kSr[rr�Zbadargr"rr r��r�z,TestTimeDelta.test_compare.<locals>.<lambda>cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�)rr*rwr��
OTHERSTUFFrorp�r+r#r�rr/r �test_compare�sFzTestTimeDelta.test_comparec	Cs�t}|j}|t|d��d�|t|d��d�|t|d��d�|t|d��d�|t|d	d
dd��d
�|t|dddd��d�|t|ddd	dd��d�|t|dd��d�|t|dd��d�|t|dddddd��d�dS)Nr"z1 day, 0:00:00r�z-1 day, 0:00:00rEz2 days, 0:00:00rCz-2 days, 0:00:00r��:r�r�z12:58:59rArGz2:03:04i��r�r*)r�r�rRr�z-210 days, 23:12:34r�z0:00:00.001000r�z0:00:00.000003r�r��r�r�rRr�r�z999999999 days, 23:59:59.999999)rr*r�)r+r�rrrr r��s$���zTestTimeDelta.test_strcCs�d|jj}|�t|�d��d|�|�t|�dd��d|�|�t|�ddd��d	|�|�t|jd
d��d|�|�t|���d
|�|�t|jdd��d|�|�t|jddd��d|�|�t|jddd��d|�dS)N�	datetime.r"z
%s(days=1)r#rEz%s(days=10, seconds=2)r?�z,%s(days=-10, seconds=2, microseconds=400000)r�r�z%s(seconds=60)z%s(0)rr�z%s(microseconds=100))r�r�z%s(days=1, microseconds=100))r�r�z%s(seconds=1, microseconds=100)�r�r9r*r��r+r5rrr r��s2��������zTestTimeDelta.test_reprcCs�tdddddd�tdd�tddd	�tdd
dd�fD]Z}t|�}|�|�d
��|dd�}t|�}|�||�t|j|j|j�}|�||�q2dS)Nr�r�r�r�r4�6e�r�r"�r�r�rErA�r�r�r�r5�	)	rr�rwr3r�r*r�r�r�)r+r��sZtd2rrr �test_roundtrip�s�
�zTestTimeDelta.test_roundtripcCs~|�tjt�|�tjt�|�tjt�|�tjtjk�|�tjtd��|�tjtddd��|�tjtddd��dS)Nr9r�r�g~�.Arr")ryrr�rs�
resolutionrwr*r]rrr �test_resolution_infosz"TestTimeDelta.test_resolution_infocCs�tj}tj|}||8}|�t|j|�|�t|j|�tj|}||7}|�t|j|�|�t|j|�|�tdd��td�}|�t|jd�|�t|jd�|�t|j	d�|�t|j	d�|�t|j	d�dS)	NcSstjSr[)rrsrrrr r�r�z-TestTimeDelta.test_overflow.<locals>.<lambda>r"�ʚ;ge��Ag#B����;g�����|�=gr��{�>)
rr?r�ro�
OverflowError�__sub__�__add__rsrr)r+�tinyr��dayrrr �
test_overflows 

zTestTimeDelta.test_overflowcCs.td�}|�t|jt�|�t|jt�dS�Nr")rrorBr�INF)r+rFrrr �_test_overflow_special'sz$TestTimeDelta._test_overflow_specialcCs�t}|j}||dd�|d��||dd�|d��||dd�|dd��||dd�|dd��||dd�|d	d��||d
d�|dd��||dd�|d
d��||dd�|dd��||dd�|dd��||dd�|dd��||dd�|dd��||dd�|dd��d}|d}||d|d�|d��||d|d�|d��||d|d|d�|d	d��||d|d�|d��||d|d�|d��||d|d|d�|dd��||d d�d |d!d��||d d�|jd |j|j�dS)"Ng-C��6:?r�rg-C��6:�g����Mb@?r�g����Mb@�ga2U0*�C?r"ga2U0*�C�r�g�~j�t�X?rEg�~j�t�X�rCg���Ơ>r�g���Ơ���?����i|���t��Ar�g�������?r�g�������?r��r�r�g������ٿg������ɿr�r)rr*r?)r+r�rZus_per_hourZ
us_per_dayrrr �test_microsecond_rounding-s0  z'TestTimeDelta.test_microsecond_roundingcCs&tdd�}|�|j|j|jfd�dS)Nr�r�)r�r�r�r)r+r�rrr �test_massive_normalizationNs
�z(TestTimeDelta.test_massive_normalizationcCsR|�td��|�tdd��|�tddd��|�tdd��|�td��dS)Nr"rr�)rwrr�r]rrr �	test_boolSs
zTestTimeDelta.test_boolcs�G�fdd�dt���dd�}|�t|���|�|��d��ddd�}|�t|���|�|��d	�||}|�t|�t���|�}|�t|���|�|j|j�|�|j|j�|�|j|j�|�t	|�t	|��|�|��d�dS)
Ncs$eZdZe�fdd��Zdd�ZdS)z0TestTimeDelta.test_subclass_timedelta.<locals>.Tcs�|j|j|j�Sr[r;)r���Trr �from_td]sz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdcSs&|jd|jd|jd}t|�S)Nr�g �@rN)r�r�r�r)r+�sumrrr �as_hoursas��z9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursN)r9rLrM�staticmethodrUrWrrSrr rT\srTr"r�r�r�i��r:i��)
rr~rr*rWrUr�r�r�r�)r+r"r#�t3�t4rrSr �test_subclass_timedeltaZs 

z%TestTimeDelta.test_subclass_timedeltac		Cs�Gdd�dt�}|ddd�}tdd�}ddd	�|ddd
�fddd	�|ddd
�fd
dd	�|ddd�fg}|D]V\}}}|�|��2|||�}|�||�|�||�Wd�qj1s�0YqjdS)Nc@seZdZdS)z6TestTimeDelta.test_subclass_date.<locals>.DateSubclassN�r9rLrMrrrr �DateSubclasszsr]��r"rBr��addcSs||Sr[r�r(r�rrr r��r�z2TestTimeDelta.test_subclass_date.<locals>.<lambda>rI�raddcSs||Sr[rr`rrr r��r��subcSs||Sr[rr`rrr r��r�rG)rrr�r*ry)	r+r]�d1r��testsr5�func�expected�actrrr �test_subclass_dateys
�
z TestTimeDelta.test_subclass_datec		Cs�Gdd�dt�}|ddddd�}tddd�}d	d
d�|dddd
�fddd�|dddd
�fddd�|dddd�fg}|D]V\}}}|�|��2|||�}|�||�|�||�Wd�qv1s�0YqvdS)Nc@seZdZdS)z>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNr\rrrr �DateTimeSubclass�srir^r"rBr��)r�rRr_cSs||Sr[rr`rrr r��r�z6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>rI�
racSs||Sr[rr`rrr r��r�rbcSs||Sr[rr`rrr r��r�rG)rrr�r*ry)	r+rircr�rdr5rerfrgrrr �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�rErj�rRr�rQg@r)rr*rorr	r
)r+r��second�minute�zerotdrrr �
test_division�s

zTestTimeDelta.test_divisioncCs�tddd�}tdd�}||}|�|tdd��tddd�}||}|�|tdd��td�}|�tt||�|�tt|d	�dS�
NrErjrnr"rQr�rCrr#)rr*rorrrp)r+r�rp�rrqrrr �test_remainder�s
zTestTimeDelta.test_remaindercCs�tddd�}tdd�}t||�\}}|�|d�|�|tdd��tddd�}t||�\}}|�|d�|�|tdd��td�}|�tt||�|�tt|d	�dSrs)r�divmodr*rorrp)r+r�rp�qrtrqrrr �test_divmod�s
zTestTimeDelta.test_divmodc	Cs�dd�}|�t��"t�|dd>�Wd�n1s:0Y|�t��"t�|dd>�Wd�n1sv0YdD]t}|�t��t�||�Wd�n1s�0Y|�t��t�||�Wd�q�1s�0Yq�dS)NcsG�fdd�dt�}|�S)NcseZdZ�fdd�ZdS)zFTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatcs�Sr[rr]��	bad_ratiorr �as_integer_ratio�szWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratioN)r9rLrMr{rryrr �BadFloat�sr|)�float)rzr|rryr �
get_bad_float�sz4TestTimeDelta.test_issue31293.<locals>.get_bad_floatr"r�)r)rO�r"rErA)rorprr�)r+r~rzrrr �test_issue31293�s00,zTestTimeDelta.test_issue31293cspG�fdd�dt�}G�fdd�d��G�fdd�dt��dD�]*�|j�d���zt|d	�d
�WntyxYn0zt|d	�d�Wnty�Yn0zt|d	�d�Wnttfy�Yn0ztd	�|d	�Wnttfy�Yn0z|d	�td	�Wnt�yYn0ztd	�|d	�Wnt�yHYn0Wd�q>1�s`0Yq>dS)
Ncs<eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Zd	S)
z-TestTimeDelta.test_issue31752.<locals>.BadIntcs��Sr[r�r+�other��Prodrr r�sz5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__cs��Sr[rr�r�rr �__rmul__�sz6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__cs��Sr[rr�r�rr �__floordiv__�sz:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__cs��Sr[rr�r�rr �
__rfloordiv__�sz;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__N)r9rLrMrr�r�r�rr�rr �BadInt�sr�cs$eZdZ�fdd�Z�fdd�ZdS)z+TestTimeDelta.test_issue31752.<locals>.Prodcs��Sr[rr���Sumrr rD�sz3TestTimeDelta.test_issue31752.<locals>.Prod.__add__cs��Sr[rr�r�rr �__radd__�sz4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__N)r9rLrMrDr�rr�rr r��sr�cseZdZ�fdd�ZdS)z*TestTimeDelta.test_issue31752.<locals>.Sumcs�Sr[rr���divmodresultrr �
__divmod__�sz5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__N)r9rLrMr�rr�rr r��sr�)Nr)rr"rE)rr�r�r"r�r�r�)rTr�rrpr�)r+r�r)r�r�r�r �test_issue31752�s:

zTestTimeDelta.test_issue31752N)"r9rLrMrr�r�r
rrZrequires_IEEE_754rrrr$r)r-r2r�r�r>r@rGrJrPrQrRr[rhrlrrrurxr�r�rrrr r��s<S

(	
!r�c@seZdZdd�ZdS)�TestDateOnlycCs�tddd�}tdddddd�}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�|}t|j�}|�|td��||}|�|||�||}|�|||�||}|�|||�dS)	N��r"rErArGrBr4rC)rrr�r*)r+r`r�r��dt2rrr �test_delta_non_days_ignored!s*
�

z(TestDateOnly.test_delta_non_days_ignoredN)r9rLrMr�rrrr r�sr�c@seZdZdZdS)�SubclassDater"N�r9rLrMZsub_varrrrr r�>sr�c@s`eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!d;d<�Z"d=d>�Z#d?d@�Z$dAdB�Z%dCdD�Z&dEdF�Z'dGdH�Z(dIdJ�Z)dKdL�Z*dMdN�Z+dOdP�Z,dQdR�Z-dSdT�Z.dUS)V�TestDatecCs<|�ddd�}|�|jd�|�|jd�|�|jd�dS)N��rAr")r�r*�year�monthrFr_rrr rGszTestDate.test_basic_attributescCsz|�ddd�|j��fD]\}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j	�}|�||�qdS)Nr"rErAr5r<)
r��todayr�rwr3r�r*r�r�rF�r+r`r=r�rrr r>Ms�zTestDate.test_roundtripc
	Cs�dD]�\}}}}|�|||�}|�||���|j�|�}|�||�t|d�r|�|jd�|�|jd�|�|jd�|�|jd�qt	t
tdd�D]|}|�|dd�}|��}|j�|�}|�||�|dkr�|j�|d�}|�|ddd�}|�||�|�|��|d�q�gd�}d	D]�\}}	|�|dd���}tt	dd
�|�D]r\}
}|
dk�rn|	�rn|d7}t	d|d�D]@}|�||
|�}|�|��|�|�||j�|��|d7}�q|�qN�q$dS)N))r"r"r"r")r"r�rr)rEr"r"�n)i�rmr�i��
�hourrr"rDr�r)r�rrjrrjrrrjrrjr))r�T)r�FrkrE)
r�r*�	toordinal�fromordinal�hasattrr�rpro�microsecondrrr�zip)
r+�y�mr(�nZfromordr��d2ZdimZisleapr�ZmaxdayrFrrr �test_ordinal_conversions[s>
z!TestDate.test_ordinal_conversionscs|jj�|��j�j�j����������}|��|�|�t	��fdd���t
dd�}|�|���d�|�||j��d��|jj�|��j�j�j����������}|��|�|�t	��fdd���t
dd�}|�|���d�|�||j��d��dS)Ncs���d�SrH�r�r�rZaordrr r��r�z0TestDate.test_extreme_ordinals.<locals>.<lambda>r"r�cs���d�SrHr�rr�rr r��r�)r�r�r�r�rFr�r�r*ror�rrs)r+rrr�r �test_extreme_ordinals�s$

zTestDate.test_extreme_ordinalscCs6|�tdd�|�tdd�|�t|jtddd�|�t|jtddd�|�ddd�|�ddd�|�t|jddd�|�t|jddd�|�ddd�|�ddd�|�d	dd�|�t|jddd
�|�t|jddd�|�t|jddd�|�t|jd
dd�|�t|jddd�|�t|jddd�dS)Nr"r�r�rrkrE����`	rj���4�lrn)r�rrror�r]rrr �test_bad_constructor_arguments�s"z'TestDate.test_bad_constructor_argumentscCs�|�ddd�}|�ddd�}|�||�|�t|�t|��|di}d||<|�t|�d�|�||d�|�||d�|�ddd�}|�ddd�}|�||�|�t|�t|��|di}d||<|�t|�d�|�||d�|�||d�dS)Nr�r�rr"rEr��r�r*r&r'�r+r(�eZdicrrr r)�s$zTestDate.test_hash_equalityc	s2|�ddd��|�ddd�}|�ddd�}�|}|�|jdttddd���|�|jd	�|�|jd	�td��td
�}|�ddd��|���|�ddd��|���|�ddd��|���|�ddd��|���|�ddd��|��||�ddd��|��||�ddd
��|��d||�ddd��|��d||�ddd��|��|�|�|������|��|�|�|������|���||�|������|���||�|������|�||���dD]^�|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	��fdd���q$|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	��fdd��|�t	�fdd��|�t	�fdd��|�t	�fdd��dS)Nr�r"r�r�rE�ArGrrDrAr<r��4��rcs��Sr[rrr
rr r��r�z,TestDate.test_computations.<locals>.<lambda>cs��Sr[rrr
rr r��r�cs��Sr[rrr
rr r��r�cs��Sr[rrr
rr r��r�cs��Sr[rr�rrFrr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrrrr r��r�cs��Sr[rrrrr r�r�cs��Sr[rrrrr r�r��
r�r*r�r'rr�r�rrorp)r+rr�diff�weekr�rrFr	r r
�sPzTestDate.test_computationscCs�|jj}|td�td�fD]p}|jj|}||8}|�t|j|�|�t|j|�|jj|}||7}|�t|j|�|�t|j|�qdS)Nr"rE)	r�r?rr�rorBrCrDrs)r+rEr�r`rrr rGszTestDate.test_overflowcCshddl}d\}}}|�|||ddddddf	�}|j�|�}|�|j|�|�|j|�|�|j|�dS)Nr)i�r<rmr�)r�mktimer��
fromtimestampr*r�r�rF)r+rr�r�rF�tsr(rrr �test_fromtimestamps
zTestDate.test_fromtimestampcCs dD]}|�t|jj|�qdS�N)gZb���t�gZb���ti�rorBr�r��r+Zinsanerrr �test_insane_fromtimestamps�z"TestDate.test_insane_fromtimestampcCslddl}td�D]8}|j��}|��}|j�|�}||kr>qJ|�d�q||krh|j||tdd�d�dS)NrrAg�������?r�r�)r�)rrr�r�r��sleepZassertAlmostEqualr)r+rr�r�r�Z
todayagainrrr �
test_today&s
�zTestDate.test_todayc	Cs�td�D]�}|�|�ddd|���|�|�|�ddd|���|d�|�|�ddd|���|�|�|�ddd|���|d�qdS)NrDr�rArGr"r�rE)rr*r��weekdayZ
isoweekday)r+r	rrr �test_weekdayCs
"zTestDate.test_weekdayc	Csgd�}g}|D]T\}}|j|�}td�D]8}|t|�}|dd�|d|f}|�||f�q*q|D]�\}	}
|j|	dd�� |�|	��|
�Wd�n1s�0Y|j|	dd��0|	��}|�|j|j|j	f|
�Wd�qj1s�0YqjdS)N)))r�r��)r�r�r"))r�r�r��r�r"r"))r�r"rB)r�rEr"))��r�rl)r�r�r"))r�r�r�)r��5r"))r�r"rG)r�r"r"rDrrE�tuple)r(Z
comparison�fields)
r�rr�appendr�r*�isocalendarr�r�r�)r+Zweek_mondays�
test_casesZcal_dateZiso_dateZ	base_dater	Znew_dateZnew_isor(Zexp_isor�rrr �test_isocalendarLs	
.zTestDate.test_isocalendarcCsF|�ddd�}t�|���}t�|�}|�t|�t�|�|d�dS)z�Test that the result of datetime.isocalendar() can be pickled.

        The result of a round trip should be a plain tuple.
        ��r")r�r"rEN)r�rr�r�r�r*rr�)r+r(�p�resrrr �test_isocalendar_picklingjs

z"TestDate.test_isocalendar_picklingcCs�d}ttt|����}g}td�D]f}|�d|dd�}|�d|dd�}|�|��dd�|��dd��|��ddkr"|�|�q"|�||�dS)	NaK
              4   32   60   88
              9   37   65   93
             15   43   71   99
             20   48   76
             26   54   82

            105  133  161  189
            111  139  167  195
            116  144  172
            122  150  178
            128  156  184

            201  229  257  285
            207  235  263  291
            212  240  268  296
            218  246  274
            224  252  280

            303  331  359  387
            308  336  364  392
            314  342  370  398
            320  348  376
            325  353  381
        �r�r�ri@r"r�)	�sorted�maprT�splitrr�r*r�r�)r+ZISO_LONG_YEARS_TABLEZiso_long_years�Lr	r(rcrrr �test_iso_long_yearsus$zTestDate.test_iso_long_yearscCs"|�ddd�}|�|��d�dS)NrErAz
0002-03-02)r�r*�	isoformat�r+r�rrr �test_isoformat�szTestDate.test_isoformatcCs"|�ddd�}|�|��d�dS)Nr�rArEzSat Mar  2 00:00:00 2002)r�r*�ctimer�rrr �
test_ctime�szTestDate.test_ctimec	Cs�|�ddd�}|�|�d�d�|�|�d�d�|�|�d�d�|�t|j�|�t|jdd	�|�t|jd
�|�|�d�d�|�|�d
�d�dD]&}z|�|�Wq�ty�Yq�0q�z|�d�Wnty�Yn0|�d�dS)N��rArE�m:%m d:%d y:%yzm:03 d:02 y:05r�A�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�oneZtworO�%mZ03�	'%z' '%Z'�'' '')z%e�%z%#u%y�%mz%f)r�r*�strftimerorpr��UnicodeEncodeError)r+r��frrr �
test_strftime�s&
zTestDate.test_strftimecCsz|�ddd�}zt�d�Wnty8|�d�Yn0|�|�d�t�d|����|�|�d�t�d|����dS)Nr�rArEr�z'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r��_timer�r�r:r*�	timetupler�rrr �test_strftime_trailing_percent�s�z'TestDate.test_strftime_trailing_percentcCs|�ddd�}|�|�d�t|��|�td��|�d�Wd�n1sP0YGdd�d|j�}|ddd�}|�|�d�d�Gd	d
�d
|j�}|ddd�}|�|�d�t|��dD]F}|�|�|�|�|��|�|�|�|�|��|�|�|�d
�q�dS)N��r<r#r��must be str, not int�{c@seZdZdd�ZdS)zTestDate.test_format.<locals>.AcSsdS�N�Arr]rrr �__str__�sz'TestDate.test_format.<locals>.A.__str__N�r9rLrMr�rrrr r��sr�c@seZdZdd�ZdS)zTestDate.test_format.<locals>.BcSsdS�N�Br�r+�format_specrrr r��sz(TestDate.test_format.<locals>.B.strftimeN�r9rLrMr�rrrr r��sr��r�zm:%m d:%d y:%y H:%H M:%M S:%S�%z %Z�r�r*�
__format__r��assertRaisesRegexrpr��r+r`r�rr�r�fmtrrr �test_format�s(zTestDate.test_formatcCs`t|jt�rt}nt}|�|jj|�|�|jj|�|�|jjt�|�	|jj|jjk�dSr[)
rxr�rrryr�rsr?rrw)r+Zexpected_classrrr r@�szTestDate.test_resolution_infocCsz|jj|jj}|jdd|jd|j}tdd|�}|�||�|�|jj||jj�|�|jj||jj�dS)Nr���@Br)r�rsr�r�r�r�rr*)r+�bigr�Z	justasbigrrr �test_extreme_timedeltaszTestDate.test_extreme_timedeltac
Csrtd�D�]b}|�ddd|�}|��}|�|ddd|ddd|d|df	�|�ddd|�}|��}|�|ddd|dddd|dd|df	�|�ddd|�}|��}|�|ddd|dddd|dd	|df	�|�|jd�|�|jd�|�|jd|�|�|jd�|�|jd�|�|j	d�|�|j
d|d�|�|jd	|�|�|jd�qdS)
NrDr�r"rErr�rnrA�=)
rr�r�r*�tm_year�tm_mon�tm_mday�tm_hour�tm_min�tm_sec�tm_wday�tm_yday�tm_isdst)r+r	r(r�rrr �test_timetuples&&..zTestDate.test_timetuplecCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�rIrDr�rE�r�r�r�r�r*�
__reduce__�
__reduce_ex__r,rrr r-%s

zTestDate.test_picklingcCsFgd�}d}|j|�}|D]&}tD]}||dd�}|�||�q"qdS)N)s'cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.scdatetime
date
(U�tR.s�cdatetime
date
U��R.)��rm��latin1��encoding�r��pickle_loadsr*�r+rdr�rf�datar�r�rrr �test_compat_unpickle.s
zTestDate.test_compat_unpicklecs|�ddd��|�ddd�}|��|�|��|k�|��|k�|��|k�|��|k�|��|k�dD]�}|j|�}|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�qrtD]�|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fd	d��|�t��fd
d��|�t��fdd��|�t��fdd��|�t��fd
d��|�t��fdd���q.dS)NrErArGr.FTcs��kSr[rrr/rr r�Zr�z'TestDate.test_compare.<locals>.<lambda>cs��kSr[rrr/rr r�[r�cs��kSr[rrr/rr r�\r�cs��kSr[rrr/rr r�]r�cs��kSr[rrr/rr r�^r�cs��kSr[rrr/rr r�_r�cs��kSr[rrr/rr r�`r�)r�r*rwr�r0rorpr1rr/r r2;sD
zTestDate.test_comparecs�|�ddd��|��dkd�|�d�kd�|��dkd�|�d�kd�|�t�fdd��|�t�fd	d��Gd
d�d�}|��|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fd
d��dS)Nr�rGrBr"FTcs�dkSrHrr��ourrr r�lr�z-TestDate.test_mixed_compare.<locals>.<lambda>csd�kSrHrrr#rr r�mr�c@seZdZdS)z.TestDate.test_mixed_compare.<locals>.SomeClassNr\rrrr �	SomeClassqsr%cs��kSr[rr�r$Ztheirrr r�yr�cs��kSr[rrr&rr r�zr�)r�r*rorp)r+r%rr&r �test_mixed_comparebszTestDate.test_mixed_comparecCs |�|jj�|�|jj�dSr[)rwr�r�rsr]rrr rR|szTestDate.test_boolcCsZdD]P}|�|dd�}|�d�d|kr|�|�d�d|�|�|�d�d|�qdS)N)r"r%r��cri�r��r"z%Yz%04d�%dz%4Y)r�r�r*)r+r�r(rrr �test_strftime_y2k�s
zTestDate.test_strftime_y2kc
Cs�|j}gd�}||�}|�||���d}dD]L\}}|dd�}|||<||�}|jfi||i��}	|�||	�|d7}q.|ddd�}|jt|jdd	�dS)
Nrr)�r�rE�r�rA�rFrGr"r�rEr�r��r��r�r*r�ror��
r+�clsr��baser	r5�newval�newargsrf�gotrrr �test_replace�s
zTestDate.test_replacecCs:Gdd�d|j�}|ddd�}|�t|jdd��|�dS)Nc@seZdZdS)z4TestDate.test_subclass_replace.<locals>.DateSubclassNr\rrrr r]�sr]��r"i�r/�r�r~rr�)r+r]r`rrr �test_subclass_replace�szTestDate.test_subclass_replacecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|jd�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z&TestDate.test_subclass_date.<locals>.CrOcs6|��}|�d�}�jj|g|�Ri|��}||_|S�Nr��r��popr�r}r��r2r�ZkwsZtempr��resultr]rr r}�s

z.TestDate.test_subclass_date.<locals>.C.__new__cSs||j|jSr[)r�r��r+�startrrr �newmeth�sz.TestDate.test_subclass_date.<locals>.C.newmethN�r9rLrM�	theAnswerr}rBrr]rr �C�srE�r�rGr�r�rDrOrF)	r�r*r8rDr�r�rBr�r��r+rEr�rqr�rr]r rh�s

zTestDate.test_subclass_datec

s�G�fdd�d�j�}d}d}d}||�}��||���|jd�t�|td����}d|ffd	|ffd
|ffg}|D]�\}}	||fD]n}
�jt	|
�|d��Ht
|
|�}||	�}��||���||���|jd�Wd�q�1s�0Yq�qxdS)NcseZdZ�fdd�ZdS)zCTestDate.test_subclass_alternate_constructors.<locals>.DateSubclasscs$�jj|g|�Ri|��}d|_|S�NrD�r�r}r��r2r��kwargsr?r]rr r}�szKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__N�r9rLrMr}rr]rr r]�sr]rFi�(z
2003-04-14rDrr�r��
fromisoformat�Z
base_obj_type�constr_name)r�ryr*r�r�combiner�	timestampr�r�getattr)
r+r]r�Zd_ord�d_isoformat�base_dr�r�rO�constr_args�base_obj�constrr`rr]r �$test_subclass_alternate_constructors�s,�
�
z-TestDate.test_subclass_alternate_constructorscCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr)r�r�r�r�r*rwrSr,rrr �test_pickling_subclass_date�s
z$TestDate.test_pickling_subclass_datec	Cs�d}t|jt�s|dd�}dD],}|�t|j|dd�||dd��q t|jt�r�|�td��*|�tdgt|��d�Wd�n1s�0Ytdd	�D],}|�|dd�t|g�|dd��q�dS)
Ns
1995-03-25rG)�9��
��rErA�^bad tzinfo state arg$r"r�rk)	rxr�rrorpr�bytesr'r)r+r3Z
month_byteZord_byterrr �test_backdoor_resistance�s	
�8z!TestDate.test_backdoor_resistancec	Cspgd�}|D]^}|j|�}|��}|j|d��,|j�|���}|�||�Wd�q1s`0YqdS)N)�r"r"r")r�rEr��r�r"r")r�rEr��r�rmr�)r�rGrA�i�rBrj)�dt_str�r�r�r�rMr*)r+�
base_dates�dt_tupler`re�dt_rtrrr �test_fromisoformats

zTestDate.test_fromisoformatcCs<Gdd�d|j�}|ddd�}|�|���}|�||�dS)Nc@seZdZdS)z:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNr\rrrr r])sr]rkr�r�)r�rMr�ry)r+r]r`rirrr �test_fromisoformat_subclass(sz$TestDate.test_fromisoformat_subclassc	CsLgd�}|D]:}|�t��|j�|�Wd�q1s<0YqdS)N)r�r�z	009-03-04Z	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29Z20090228u2009�02�28)ror�r�rM�r+Zbad_strs�bad_strrrr �test_fromisoformat_fails2sz!TestDate.test_fromisoformat_failsc	CsTddt�d�g}|D]:}|�t��|j�|�Wd�q1sD0YqdS)Ns
2009-03-01z
2009-03-01��io�StringIOrorpr�rM�r+Z	bad_typesZbad_typerrr �"test_fromisoformat_fails_typeerrorFsz+TestDate.test_fromisoformat_fails_typeerrorcCs�ddddddddd	d
ddd
tddftddfg}|D]Z}|j|d��:|j|�}|��}|jj|�}|�||�Wd�q21s�0Yq2dS)N)��rGrA)r�r"rE)i�r�rj)r�r"rE)r�r�rrb)r�r�r)r�r"r")r�r�rr�)r�r�rra)r(r�rr"r�r)�	datecomps)rrr�r�r��fromisocalendarr*)r+ZdatesruZdobj�isocalZd_roundtriprrr �test_fromisocalendarMs,�
zTestDate.test_fromisocalendarc
Csxgd�}|D]f}|j|d��F|�t��|jj|�Wd�n1sJ0YWd�q1sh0YqdS)N)
)r�rr")r�r�r")r��6r")r�r"r)r�r"r�)r�r"�)r�r�r")r�r"r")rr"r")i��r"r")�r"r")r�r{r")r�r"r{�rw)r�ror�r�rv)r+�isocalsrwrrr �!test_fromisocalendar_value_errorsks
z*TestDate.test_fromisocalendar_value_errorsc
Cs�ttdd�g}g}d}td�D]4}|D]*}t|�}|||�||<|�t|��q&q|D]f}|j|d��F|�t��|j	j
|�Wd�n1s�0YWd�qX1s�0YqXdS)NcSsdSr[r)�xrrr r��r�z;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>)r�r"r"rAr|)r�r}r�listr�r�r�rorpr�rv)r+Z
err_txformersr}r3r	ZtxformerZerr_valrwrrr � test_fromisocalendar_type_errors�s�	z)TestDate.test_fromisocalendar_type_errorsN)/r9rLrMrr�rr>r�r�r�r)r
rGr�r�r�r�r�r�r�r�r�r�r�rr@r	rr-r"r2r'rRr+r7r:rhrXrYr`rjrkrnrsrxr~r�rrrr r�AsV/2		&'
	
'
,

r�c@seZdZdZdS)�SubclassDatetimer"Nr�rrrr r��sr�c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Ze�d)�d*d+��Zd,d-�Ze�d.�d/d0��Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"e#�$e%j&d;kd<�d=d>��Z'e#�$e%j&d;kd<�d?d@��Z(dAdB�Z)dCdD�Z*dEdF�Z+dGdH�Z,dIdJ�Z-dKdL�Z.dMdN�Z/dOdP�Z0e�dQ�dRdS��Z1dTdU�Z2dVdW�Z3dXdY�Z4dZd[�Z5d\d]�Z6d^d_�Z7d`da�Z8dbdc�Z9ddde�Z:dfdg�Z;dhdi�Z<djdk�Z=dlS)m�TestDateTimecCsx|�ddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�rAr"r�r�	r�r*r�r�rFr�rpror�r_rrr r�sz"TestDateTime.test_basic_attributesc	Cs||�ddddddd�}|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�rAr"r�r��@r�r_rrr �test_basic_attributes_nonzero�sz*TestDateTime.test_basic_attributes_nonzeroc
Cs�|�ddddddd�|j��fD]l}t|�}|�|�d��|d	d�}t|�}|�||�|�|j|j|j	|j
|j|j|j
�}|�||�q dS)
Nr"rErArGrBrIrDr5r<)r�rzr�rwr3r�r*r�r�rFr�rpror�r�rrr r>�s��zTestDateTime.test_roundtripc
Csb|�ddddddd�}|�|��d�|�|�d�d�|�|�d	�d
�|�|�d�d�|�|�d
�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jd	dd�d�|jt|jdd�|jt|jd
d�|�t|�d
�|jdddddddtjd�}|�|jdd�d�|�ddddddd�}|�|jdd�d �|�dddddd�}|�|jdd�d�|�|jdd�d�|�|jdd�d!�|�ddd�}|�|��d"�|�|�d�d"�|�|�d	�d#�|�t|�d#�tt	d$d%�d&�}|jddd|d�}|�|��d'�dS)(Nr"rErArGrBr�z0001-02-03T04:05:01.000123rT� z0001-02-03 04:05:01.000123�z0001-02-0304:05:01.000123r�u0001-02-03�04:05:01.000123r���timespecz
0001-02-03T04rRz0001-02-03T04:05r�z0001-02-03T04:05:01r�z0001-02-03T04:05:01.000r��auto)�sepr�z0001-02-03 04:05�foo�L@rz0001-02-03T04:05:01.999+00:00z0001-02-03T04:05:01.999z0001-02-03T04:05:01.000000z0002-03-02T00:00:00z0002-03-02 00:00:00�r�ZXXXz0002-03-02T00:00:00+00:00:16)
r�r*r�ror�r�rr�rNrr�rrr r��sD�zTestDateTime.test_isoformatc	Cs�dtdd�fdtdd�fdtddd	�fd
tddd
d�fdtddddd�fg}ddtjfdttd��fg}|dd�|D�7}|�dddddd�}d}|D]X\}}|j|d�}||}|j|d�� |��|ks�J�Wd�q�1s�0Yq�dS)N�05:00rBr��02:00rE�06:27rIrr��12:32:30r�rnrjr��02:04:09.123456rGr<r�r��r�N�+00:00rcSs2g|]*\}}dD]\}}||t||�f�qqS�))�-r�)�+r"r�rrfr��prefix�signrrr r!s�z8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>rtr"�%z2016-04-01T12:37:09r��tzi�rrr�r�r�r�r�)	r+�	tzoffsets�tzinfosZdt_base�exp_base�exp_tzr�r`�exprrr �test_isoformat_timezone�s(�	��z$TestDateTime.test_isoformat_timezonec	Cs&|�ddddddd�}|�|�d�t|��|�td	��|�d�Wd�n1sX0YGd
d�d|j�}|ddddddd�}|�|�d�d�Gdd
�d
|j�}|ddddddd�}|�|�d�t|��dD]F}|�|�|�|�|��|�|�|�|�|��|�|�|�d
�q�dS)Nr�r<r#rGrBr"r�r�r�c@seZdZdd�ZdS)z#TestDateTime.test_format.<locals>.AcSsdSr�rr]rrr r�sz+TestDateTime.test_format.<locals>.A.__str__Nr�rrrr r�sr�c@seZdZdd�ZdS)z#TestDateTime.test_format.<locals>.BcSsdSr�rr�rrr r�#sz,TestDateTime.test_format.<locals>.B.strftimeNr�rrrr r�"sr�r�rrrrr rs(zTestDateTime.test_formatc	Cshddl}|�ddddddd�}|�|��d�|�ddd	dddd�}|�|��|�|�|�����dS)
Nrr�rArE�rBr�zSat Mar  2 18:03:05 2002r�)rr�r*r�r�r�)r+rr�rrr �test_more_ctime0s
zTestDateTime.test_more_ctimec	Cs�|�dddddd�}|�dddddd�}|�dddddd�}|�||�|�||k�|�tddd	d
d
d�}tdd�}||}|�|||�|�||k�dS)
Nr�rAr"r<rr#r�rr�r�rr�)r�r*rwrr)r+rqr��dt3rrrr �test_tz_independent_comparing@s
z*TestDateTime.test_tz_independent_comparingcCsBGdd�dt�}|�ddddddd|dd��}|�t|jd�dS)	Nc@seZdZdd�ZdS)zDTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfocSsGdd�dt�}|d�S)Nc@seZdZdd�ZdS)zZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrcWsdSr[r)r+r�rrr r�WszbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replaceN)r9rLrMr�rrrr �MyStrVsr�r5)r�)r+r`r�rrr rbUszKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tznameN)r9rLrMrbrrrr �MyTzInfoTsr�r�rArErr5�%Z)rNr�rorpr�)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�rrkrEr�r�r�rjr�r�r�rnrr�r�r�r�r�r�r��fold)r�rrror�rpr]rrr r�]s^
�
�
�
�
�z+TestDateTime.test_bad_constructor_argumentscCs|�dddddd�}|�dddddd�}|�||�|�t|�t|��|di}d||<|�t|�d�|�||d�|�||d�|�d	ddd
dd�}|�d	ddd
dd�}|�||�|�t|�t|��|di}d||<|�t|�d�|�||d�|�||d�dS)Nr�r�rr�rj�r"rEr�rrBr�r�rrr r)�s$zTestDateTime.test_hash_equalitycs<|�ddd��|�ddd�}�|}|�|jdttddd���|�|jd�|�|jd�|�ddd	d
d��tddd�}tdd
�}td��td�}|��||�ddd	dd��|�|�|�ddd	dd��|��d||�ddddd��|��||�ddd	dd��|�|�|�ddd	dd��|��|�|�|��d||�ddddd��|���|�dddd
d��|���|�dddd
d��|��||�dddd
d��|��||�dd	dd
d��|��d||�dddd
d��|��d||�dddd
d��|��|�|�|������|��|�|�|��|�|�|��|�|�|������|��|�|�|��|�|�|���||�|������|���||�|���||�|���||�|������|���||�|���||�|��|�|||�ddddddd��|��|�||�|�||�|��|�|||�dd	ddddd��|��|�||�|�||�dD]^�|�t	��fdd��|�t	��fd d��|�t	��fd!d��|�t	��fd"d���q.|�t	��fd#d��|�t	��fd$d��|�t	��fd%d��|�t	��fd&d��|�t	��fd'd��|�t	�fd(d��|�t	�fd)d��|�t	�fd*d��dS)+Nr�r"rr�r�rGrrArEr�rIr�rrDr�r#r�r�rlr<r�r�r�r�r�rBr�r�rcs��Sr[rrr
rr r��r�z0TestDateTime.test_computations.<locals>.<lambda>cs��Sr[rrr
rr r��r�cs��Sr[rrr
rr r��r�cs��Sr[rrr
rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrrrr r��r�cs��Sr[rrrrr r��r�cs��Sr[rrrrr r��r�r�)r+rr�Zmillisecr�r�rr�r r
�s�
" """����zTestDateTime.test_computationscCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�rIrDr�r�r�r"�rErr,rrr r-�s

zTestDateTime.test_picklingc	Csn|�ddddddd�}ttjd�D]D}t�||�}t�|�}|�|jd�|�|jd�|�|j	d�q$dS)	Nr�rErDr��0r�i��r")
r�rr�HIGHEST_PROTOCOLr�r�r*r�r�rF)r+rrr=rrrr �test_more_pickling�s
zTestDateTime.test_more_picklingcCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr�)r�r�r�r�r*rwrSr,rrr �test_pickling_subclass_datetime�s
z,TestDateTime.test_pickling_subclass_datetimecCsFgd�}d}|j|�}|D]&}tD]}||dd�}|�||�q"qdS)N)s@cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x00\x10\x00'
tR.s#cdatetime
datetime
(U
�;tR.s$�cdatetime
datetime
U
�;�R.)rrmrr�r�r"r�rrrr rrr r"	s

z!TestDateTime.test_compat_unpicklecCsRgd�}|j|�}|j|�}|�||�|�||k�|�||k�|�||k�|�||k�|�||k�tt|��D]�}|dd�}||d||<|j|�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�qzdS)N)r�rmr�r�r3r�rr")r�r*rwr�rr')r+r�r"r#r	r5rrr �test_more_compare	s2


zTestDateTime.test_more_comparecCsd|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j	|j
�|�|j|j�dSr[)
r*rr�rr�r
rFrr�rrprro)r+rfr6rrr �verify_field_equality;	sz"TestDateTime.verify_field_equalitycCs6ddl}|��}|�|�}|j�|�}|�||�dS�Nr)r�	localtimer�r�r��r+rr�rfr6rrr r�C	s

zTestDateTime.test_fromtimestampcCs6ddl}|��}|�|�}|j�|�}|�||�dSr�)r�gmtimer��utcfromtimestampr�r�rrr �test_utcfromtimestampK	s

z"TestDateTime.test_utcfromtimestamp�EST+05EDT,M3.2.0,M11.1.0c	Cs,|�ddd�}|�|��d�|�ddddddd�}|�|��d�|�ddd	dd
�}|jdd�}|�|j�|���|tdd��|�|j�|���|tdd��|�dd	ddd
�}|�|j�|���|�|�ddd�|�d
dd�fD]:}z|��}Wnt�yYq�0|�|j�|�|�q�dS)Nr)r"g��@rErArG���6�@r8rmrjr�r�i'r�)r�r*rQr�r�rrB)r+r��t0r"r=rrr �test_timestamp_naiveU	s,
��� z!TestDateTime.test_timestamp_naivecCs�|jdddtjd�}|�|��d�|jdddddddtjd�}|�|��d�|jdddddddttd	d
�d�d�}|�|��d�dS)
Nr)r"rrrErArGg�7��@r�r�r�r�)r�rr�r*rQrr�rrr �test_timestamp_awareq	s
��
�z!TestDateTime.test_timestamp_awarezMSK-03c	Csx|jj|jjfD�]`}|d�}|�|jd�|�|jd�|d�}z|d�}Wnty`Yn~0|�|jd�|�|jd�|d�}|�||�|d�}|�||�|d�}|�||�|d	�}|�|jd�|�|jd
�|d�}|�||�|d�}|�||�|d
�}|�|jd�|�|jd�|d�}|�|jd�|�|jd�|d�}|�|jd�|�|jd�qdS)Nrg���ư>g���ư�r�r�g:�0�yE�g1E��2��gH�����z�rMi�#gH�����z>g1E��2�>g<"2��?g�P���?r"rKrL)r�r�r�r*ror��OSError)r+Zftsrr�Z	minus_oner�rrr rP|	sF�
z&TestDateTime.test_microsecond_roundingcCs�|�d��6|jjjtjd�}|��}|�|d�Wd�n1sF0Y|�d��8|jjjtjdd�}|��}|�|d�Wd�n1s�0YdS)Nzminimum UTCrl����w#o9zmaximum UTCr�rr�g�� �MB)	r�r�r�r�rr�rQr*rs)r+�min_dt�min_ts�max_dt�max_tsrrr �test_timestamp_limits�	s*�z"TestDateTime.test_timestamp_limitsc

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

�z)TestDateTime.test_utcfromtimestamp_limitscCs dD]}|�t|jj|�qdSr�r�r�rrr r�
s�z&TestDateTime.test_insane_fromtimestampcCs dD]}|�t|jj|�qdSr�)rorBr�r�r�rrr �test_insane_utcfromtimestamp
s�z)TestDateTime.test_insane_utcfromtimestamp�win32z*Windows doesn't accept negative timestampscCs|j�d�dS)N��������)r�r�r]rrr �!test_negative_float_fromtimestamp
sz.TestDateTime.test_negative_float_fromtimestampcCs.|j�d�}|�||�ddddddd��dS)	Nr�i�r�rr�r�r3i�~)r�r�r*)r+r(rrr �$test_negative_float_utcfromtimestamp
sz1TestDateTime.test_negative_float_utcfromtimestampcCsfddl}tdd�}td�D]2}|j��}|j�|���}t||�|krqNq|�t||�|�dS)Nrr"r�rA)rrrr��utcnowr�rZassertLessEqual)r+rZ	tolerancer�Zfrom_now�from_timestamprrr �test_utcnow#
s

zTestDateTime.test_utcnowc	Cs�d}d}t�|j||�}|j�||�}|�||�|�t|�|j�|�t|�|j�gd�}|D]`\}}|j||d��:t�|j||�}|j�||�}|�||�Wd�qb1s�0Yqb|jj}|�|dd���dt	�|�|dd���d	t	�|�|d
d���t
dddd
��ddtjtj
dffD]z\}}|dk�rXd}	|}
nd}	|}
t|
dd�\}}d�|	|||�}
||
d�}|�|��t
|d��|�|�
�|��q:d\}
}||
|�}|�|��dtdt	�|�|�
�d�|�|�|�|
�|�|dd�jd�|�t��|dd�Wd�n1�sF0Y|�t��|dd�Wd�n1�s|0Y|�t��|dd�Wd�n1�s�0YdS)Nz2004-12-01 13:02:47.197z%Y-%m-%d %H:%M:%S.%f))u2004-12-01�13:02:47.197u%Y-%m-%d�%H:%M:%S.%f)u2004�12-01 13:02:47.197u%Y�%m-%d %H:%M:%S.%f)u2004-12-01 13:02�47.197u%Y-%m-%d %H:%M�%S.%f)�string�formatz+0002�%zrEz-0002rCz-00:02:01.000003r"rA)rRr�r�)rr�)rZGMTrr�r�r�z{}{:02d}{:02d} {}r�r�)z	+1234 UTCr�r�r*r�r�z-2400z-000�z)�	_strptimeZ_strptime_datetimer��strptimer*r~rr�ra�MINUTErr�rrbrvr�r�r�rror�)r+r�r�rfr6�inputsr�Z	tzsecondsrbr�r�r�rR�dtstrr`rrrr �
test_strptime1
sX
�,��


66zTestDateTime.test_strptimec
Cs`|jj}|�t��|dd�}Wd�n1s20Y|�dddddd�}|�dddddd�}|�dddd	d	d	�}|�ddd
d	d	d	�}ddd|fd
dd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg
}|D]b\}}	}
}d"|}|j||	|
|d#��*||	|
�}|j|||d$�Wd�q�1�sP0Yq�dS)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Sr�rEr"rGrBrIr�r*z
1/02/03 4:5:6r�z
01/2/03 4:5:6z%Hz01/02/03 4:05:06z%Mz01/02/03 04:5:06z%Sz01/02/03 04:05:6z%jz2/03 04am:05:06z%j/%y %I%p:%M:%Sz%Iz02/03 4am:05:06z%wz6/04/03z%w/%U/%yz%Wz6/4/2003z%u/%W/%Yz%Vz%u/%V/%Gztest single digit )�reasonr�r��target)�msg)r�r�ror�r�r*)r+r�Znewdaterqr�r�Zdt4r�r�r�r�r�rrr �test_strptime_single_digitl
s6(









�
�
z'TestDateTime.test_strptime_single_digitcCs$|�dddddd�}|�|��d�|�|��|j|j|j|j|j|j|�	�|�
�t|jdd��
�dd	f	�|��}|�|j|j�|�|j
|j�|�|j|j�|�|j|j�|�|j|j�|�|j|j�|�|j|�	��|�|j|�
�t|jdd��
�d�|�|jd	�dS)
Nr�r�rrIr��!)	r�r�rrIr�r�rGr�r�r"r�)r�r*r�r�r�rFr�rpror�r�rrrr
rrrrrr)r+r�Zttrrr �test_more_timetuple�
s0
����z TestDateTime.test_more_timetuplec	Cs�|�ddddddd�}|�|�d�d	�d
D]B\\}}}ttd||d��}|j|d
�}|�|�d�d|�q,z|�d�Wnty�Yn0dS)Nr�r�rrIr�r��/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))r�r�z	33.000123))r�rZ33rE)r�r�r�rr�z-0200u%y�%m %H�%M)r�r*r�rrr�r�)r+r�r=rr�r�rrr �test_more_strftime�
s�zTestDateTime.test_more_strftimec	CsL|�ddddddd�}|�|��tddd��|�|��tdddd��dS)Nr�rArGr��-��)r�r*rrr_rrr �test_extract�
szTestDateTime.test_extractc	Cs�tddd�}tdddd�}|�ddddddd�}|jj}|||�}|�||�|||d�}|�||�|�||���|�||���|�|||��|����|�t|�|�t||�|�t|||�|�t|||d�|�t|||dd	�|�t|d
d�|�t||d�|�t|d
|�|||tj�}|�	|j
tj�|||tjd�}|�	|j
tj�t�}|||�}|�|��|�|�|��|�dS)
Nr�rArGr�r�r�)rrr"rErrr)rrr�rPr*rorprr�r~r)r+r(r�rfrPr`rrr �test_combine�
s6

zTestDateTime.test_combinec
Cs�|j}gd�}||�}|�||���d}dD]L\}}|dd�}|||<||�}|jfi||i��}	|�||	�|d7}q.|ddd�}|jt|jdd	�dS)
N)r"rErArGrBrIrDr)r,r-r.�r�rB�rprI�rorD�r�rzr"r�rEr�r�r/r0r1rrr r7�
s
zTestDateTime.test_replaceZEDT4cCs\|j��}tdd�}|jttdd�d�d�}|�|��|�|�t	|j||�|�t	|j|�|j|d�tddd�}|�|�|�|�|�|j|d	�|�Gd
d�dt
�}|�}|�t|j|�|�|j|d��|�|�Gdd
�d
t
�}|�}|�t|j|�Gdd�dt
�}	|	�}
|j|
d�}|�t	��|��Wd�n1�sN0YdS)N�,Z0044rHr��EDTrrGr��r�c@seZdZdd�Zdd�ZdS)z+TestDateTime.test_astimezone.<locals>.BoguscSsdSr[rr_rrr rar�z5TestDateTime.test_astimezone.<locals>.Bogus.utcoffsetcSstd�Sr�rr_rrr rcr�z/TestDateTime.test_astimezone.<locals>.Bogus.dstN�r9rLrMrarcrrrr �Bogussrc@seZdZdd�Zdd�ZdS)z/TestDateTime.test_astimezone.<locals>.AlsoBoguscSstd�Sr�rr_rrr rar�z9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffsetcSsdSr[rr_rrr rc	r�z3TestDateTime.test_astimezone.<locals>.AlsoBogus.dstNrrrrr �	AlsoBogussrc@seZdZdd�Zdd�ZdS)z,TestDateTime.test_astimezone.<locals>.BrokencSsdSrHrr_rrr rar�z6TestDateTime.test_astimezone.<locals>.Broken.utcoffsetcSsdSrHrr_rrr rcr�z0TestDateTime.test_astimezone.<locals>.Broken.dstNrrrrr �Broken
sr)r�rzrNr�rrr*�
astimezonerorprr�)r+r`r��dt_utcZdt_frZbogrZalsobogrZbrokenZ	dt_brokenrrr �test_astimezone�
s*

zTestDateTime.test_astimezonecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|j|j	d�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z.TestDateTime.test_subclass_datetime.<locals>.CrOcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr;r<r>r]rr r}s

z6TestDateTime.test_subclass_datetime.<locals>.C.__new__cSs||j|j|jSr[)r�r�ror@rrr rB!sz6TestDateTime.test_subclass_datetime.<locals>.C.newmethNrCrr]rr rEsrE)r�rGr�r�rk�)r�rDrOrF)
r�r*r8rDr�r�rBr�r�rorGrr]r rls

��z#TestDateTime.test_subclass_datetimecsBG�fdd�d�j�}d}d}d}||�}��||���|jd�|��}d|f|fd|tjf|�tj�fd|f|fd	|f|fd
|df|fdt|d
d��t	|dd��f|fg}|D]�\}}	}
||fD]p}�j
t|�|d��Ht||�}||	�}
��|
|���|
|
���|
jd�Wd�q�1�s00Yq�q�dS)NcseZdZ�fdd�ZdS)zTTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclasscs$�jj|g|�Ri|��}d|_|SrHrIrJr]rr r}3sz\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__NrLrr]rr ri2sri)r�rGr�r�rj�r�z2003-04-14T12:30:15.123456gh͏�TM�ArDr�r�rMr�z%Y-%m-%dT%H:%M:%S.%frPrrArN)
r�ryr*r�rQrr�rrrr�rrR)r+rir�rSZutc_tsrTr�r�rOrUrfrV�constructorr`rr]r �-test_subclass_alternate_constructors_datetime0s6


�

$�
�
z:TestDateTime.test_subclass_alternate_constructors_datetimec
s�G�fdd�d�j�}ddifddifdddtjifdddttdd	�d
�ifg}|D]f\}}}��|��Bt||�}|fi|��}��||���|jd�Wd�qT1s�0YqTdS)NcseZdZ�fdd�ZdS)z8TestDateTime.test_subclass_now.<locals>.DateTimeSubclasscs$�jj|g|�Ri|��}d|_|SrHrIrJr]rr r}dsz@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__NrLrr]rr ricsrirzr�Znow_utcr�Z	now_fixedr�r�r�rD)	r�rr�rr�rRryr*r�)r+rir�r5Z	meth_namerKrWr`rr]r �test_subclass_nowas�
zTestDateTime.test_subclass_nowc
s�gd�}gd��ddg}dtjttdd��ttdd��g����fdd	�|D�}|D]^}|D]T}|j|d
�}�j|d��(�j�|�}��||�Wd�q\1s�0Yq\qTdS)N)rarbrcrd)�rrrr)rrrih�)rrr�G�)r�rjr�rr�rTr�r�rEcs:g|]2}�D](}�D]}�jg|�|�Rd|i��qqqSr)r�)rZ
date_tupleZ
time_tupler��Z
base_timesr+r�rr r!�s�z<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>�r��r�)rr�rr�r�r�rMr*)r+rg�
separators�dtsr`r�r�rirrr �test_fromisoformat_datetimeys ��z(TestDateTime.test_fromisoformat_datetimec
Cs�|�ddddddd�}tdd�tdd�td	d
d�tdddd
�tddddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D]`}|j|d�}|��}|j|d��,|j�|�}||ks�J|��Wd�q�1s�0Yq�dS)Nrkr�rjr��pQrBr�rErIrr�rnr�rGr<r�r�cSsg|]}d|�qS�r�r�rr�rrr r!�r�z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|��qSrrrrrr r!�r�r��tstr�r�rrr�r�r�r�rM)r+Zbase_dtr�r�r�r`r�rirrr �test_fromisoformat_timezone�s"
��z(TestDateTime.test_fromisoformat_timezonec
Cs|gd�}|D]j}|�ddddddd�}|j|d	�}|j|d
��(|j�|�}|�||�Wd�q1sl0YqdS)N)	r�rT��€uʁuᛇu時u🐍r�r^r"rr�r�r�iu�rrrf�r+rr�r`r�rirrr �test_fromisoformat_separators�sz*TestDateTime.test_fromisoformat_separatorsc	Csxddg}|D]f}|�ddddd�}|j|d�}|j|d	��(|j�|�}|�||�Wd�q1sh0YqdS)
Nr�r�r^r"rr�rrrrfr rrr �test_fromisoformat_ambiguous�sz)TestDateTime.test_fromisoformat_ambiguouscCsddg}dtjttdd��ttdd��ttddd��g}gd	�}t|�D]�\}}|D]�}|D]�}|d
kr�d|dd}|dd�|f}|j|dd
|�d|i�}	|	j|d�}
|j|
d��(|j�|
�}|�|	|�Wd�q\1s�0Yq\qTqHdS)N)r�r�rGrzr�r�r�)r�r�rGrzr�r�rr�r�rErIrr��r�rRr�r�r�r�r�rrGrr�r�	rr�r�	enumerater�r�r�rMr*)r+Zdatetime_basesr��	timespecs�ipr�r�rh�new_microsecondsr`r�rirrr �test_fromisoformat_timespecs�s(��z)TestDateTime.test_fromisoformat_timespecsc
Csxgd�}|D]f}|j|d��F|�t��|j�|�Wd�n1sJ0YWd�q1sh0YqdS)N)r�r�z
2009.04-19T03z
2009-04.19T03z
2009-04-19T0az2009-04-19T03:1a:45z2009-04-19T03:15:4az2009-04-19T03;15:45z2009-04-19T03:15;45z2009-04-19T03:15:4500:00z2009-04-19T03:15:45.2345z2009-04-19T03:15:45.1234567z 2009-04-19T03:15:45.123456+24:30z 2009-04-19T03:15:45.123456-24:30u2009-04-10ᛇᛇᛇᛇᛇ12:15u2009-04�10T12:15u2009-04-10T12�15z2009-04-19T1z2009-04-19T12:3z2009-04-19T12:30:4z2009-04-19T12:z2009-04-19T12:30:z2009-04-19T12:30:45.z2009-04-19T12:30:45.123456+z2009-04-19T12:30:45.123456-z!2009-04-19T12:30:45.123456-05:00az2009-04-19T12:30:45.123-05:00az2009-04-19T12:30:45-05:00a�rm�r�ror�r�rMrlrrr �!test_fromisoformat_fails_datetime�s
z.TestDateTime.test_fromisoformat_fails_datetimecCsJd}|�tt�t|����|j�|�Wd�n1s<0YdS)Nu2018-01-03�01:0113)rr��re�escaper�r�rM)r+r�rrr �"test_fromisoformat_fails_surrogatesz/TestDateTime.test_fromisoformat_fails_surrogatecCs$d}|j�|�}|�|jtj�dS)Nz2014-04-19T13:21:13+00:00)r�rMr~rrr�)r+rer`rrr �test_fromisoformat_utcsz#TestDateTime.test_fromisoformat_utcc
Cs`Gdd�d|j�}|ddddddd	ttd
dd��d�}|�|���}|�||�|�||�dS)
Nc@seZdZdS)zBTestDateTime.test_fromisoformat_subclass.<locals>.DateTimeSubclassNr\rrrr ri srirkr�r�r<rjr�i��r#r�r)r�rrrMr�r*ry)r+rir`rirrr rks�z(TestDateTime.test_fromisoformat_subclassN)>r9rLrMrr�rr�r>r�r�rr�r�r�r�r)r
r-r�r�r"r�r�r�r�r�run_with_tzr�r�rPr�r�r�r�r��unittestZskipIfr7�platformr�r�r�r�r�r�r�r�r�r7r	rlr
rrrr!r"r)r,r/r0rkrrrr r��sr
,5D			!


(''		

;""
 1#&r�c@s"eZdZeZe�d�dd��ZdS)�TestSubclassDateTimeznot appropriate for subclassescCsdSr[rr]rrr r>/sz#TestSubclassDateTime.test_roundtripN)r9rLrMr�r�r2�skipr>rrrr r4,sr4c@seZdZdZdS)�SubclassTimer"Nr�rrrr r63sr6c@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�rpror�r�rrr r:s
zTestTime.test_basic_attributescCsL|�dddd�}|�|jd�|�|jd�|�|jd�|�|jd�dS)Nr�r�r�r8r�rrr r�As
z&TestTime.test_basic_attributes_nonzerocCsp|�dddd�}t|�}|�|�d��|dd�}t|�}|�||�|�|j|j|j|j	�}|�||�dS)Nr"rErArGr5r<)
r�r�rwr3r�r*r�rpror�)r+r�r=r#rrr r>Js�zTestTime.test_roundtripcsNgd�}|j|��|j|�}|��|�|��|k�|��|k�|��|k�|��|k�|��|k�tt|��D]�}|dd�}||d||<|j|�}|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�|��|k�|�|�k�qztD]��|���kd�|���kd�|���kd�|���kd�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fd	d��|�t��fd
d��|�t��fdd��|�t��fdd��|�t��fd
d���qRdS)N�r"rErArGr"FTcs��kSr[rrr/rr r�{r�z)TestTime.test_comparing.<locals>.<lambda>cs��kSr[rrr/rr r�|r�cs��kSr[rrr/rr r�}r�cs��kSr[rrr/rr r�~r�cs��kSr[rrr/rr r�r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�cs��kSr[rrr/rr r��r�)	r�r*rwr�rr'r0rorp)r+r�r#r	r5rr/r �test_comparingYsL


zTestTime.test_comparingcCs|�dd�|�dd�|�t|jdd�|�t|jdd�|�dd�|�dd�|�t|jdd�|�t|jdd�|�ddd�|�ddd�|�t|jddd�|�t|jddd�|�dddd�|�dddd�|�t|jdddd�|�t|jdddd�dS)	Nrr�r�r�r�r�r�r)r�ror�r]rrr r��s z'TestTime.test_bad_constructor_argumentscCs�|�ddd�}|�ddd�}|�||�|�t|�t|��|di}d||<|�t|�d�|�||d�|�||d�|�ddd�}|�ddd�}|�||�|�t|�t|��|di}d||<|�t|�d�|�||d�|�||d�dS)Nr�rjr�r"rErrBr�r�rrr r)�s$zTestTime.test_hash_equalitycCs�|�dddd�}|�|��d�|�|��t|��|��}|�|��d�|�|��t|��|jdd�}|�|��d�|�|��t|��|jd	d�}|�|��d
�|�|��t|��|jdd�}|�|��d�|�|��t|��|jd
d�}|�|��d�|�|��t|��|jdd�}|�|��d�|�|��t|��|jdd�}|�|��d�|�|��t|��|jddddd�}|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|jdd�d �|�|jd!d�d"�|�|jd#d�d"�|jt|jd$d�|jt|jd%d�|jdddd&d�}|�|jdd�d'�|jdddd(d�}|�|jdd�d)�|�|jd!d�d*�|�|jd#d�d�dS)+NrGrBr"r�z04:05:01.000123z00:00:00r�z00:00:00.000001r#z00:00:00.000010rz00:00:00.000100r�z00:00:00.001000r�z00:00:00.010000i��z00:00:00.100000r�r*r+r�)r�rpror�r�r�Z12rRz12:34r�z12:34:56r�z12:34:56.123r�z12:34:56.123456r�Zmonkeyr�r�z12:34:56.999rz12:34:56.000z12:34:56.000000)r�r*r�r�ror�r�rrr r��sNzTestTime.test_isoformatc	Cs�dtdd�fdtdd�fdtddd	�fd
tddd
d�fdtddddd�fg}ddtjfdttd��fg}|dd�|D�7}|�ddd�}d}|D]X\}}|j|d�}||}|j|d�� |��|ks�J�Wd�q�1s�0Yq�dS)Nr�rBr�r�rEr�rIrr�r�r�rnrjr�r�rGr<r�r�r�r�rcSs2g|]*\}}dD]\}}||t||�f�qqSr�rr�rrr r!�s�z4TestTime.test_isoformat_timezone.<locals>.<listcomp>r�z12:37:09rr�r�)	r+r�r�Zt_baser�r�r�r�r�rrr r��s(�	��z TestTime.test_isoformat_timezonecCs"|jdd�}|jt|jdd�dS)Nr"�rorA)r�)r�rorpr�r�rrr �test_1653736
szTestTime.test_1653736cCsZ|�dddd�}|�|�d�d�|�|�d�d�z|�d	�WntyTYn0dS)
Nr"rErArGz%H %M %S %fz01 02 03 000004r�r�u%H�%M)r�r*r�r�r�rrr r�
szTestTime.test_strftimecCs|�dddd�}|�|�d�t|��|�td��|�d�Wd�n1sR0YGdd	�d	|j�}|dddd�}|�|�d�d	�Gd
d�d|j�}|dddd�}|�|�d�t|��dD]F}|�|�|�|�|��|�|�|�|�|��|�|�|�d�q�dS)
Nr"rErArGr�r�r�c@seZdZdd�ZdS)zTestTime.test_format.<locals>.AcSsdSr�rr]rrr r�
sz'TestTime.test_format.<locals>.A.__str__Nr�rrrr r�
sr�c@seZdZdd�ZdS)zTestTime.test_format.<locals>.BcSsdSr�rr�rrr r�$
sz(TestTime.test_format.<locals>.B.strftimeNr�rrrr r�#
sr�)z%H %M %Sr)r+r�r�rr�rrrrr r
s(zTestTime.test_formatc	Cs�|�t|�dddd��d�|�t|�dddd��d�|�t|�d	ddd
��d�|�t|�dddd	��d
�|�t|�ddd	d	��d�dS)Nr"rErArGz01:02:03.000004r#r�z10:02:03.004000rr6z00:02:03.400000r�z12:02:03r�rz23:15:00)r*r�r�r]rrr r�/
s
zTestTime.test_strc	Cs�d|jj}|�t|�dddd��d|�|�t|�dddd��d	|�|�t|�d
ddd��d|�|�t|�d
ddd
��d|�|�t|�ddd
d
��d|�dS)Nr5r"rErArGz%s(1, 2, 3, 4)r#r�z%s(10, 2, 3, 4000)rr6z%s(0, 2, 3, 400000)r�z%s(12, 2, 3)r�rz
%s(23, 15)r7r8rrr r�6
s �����zTestTime.test_reprcCsN|�|jj|j�|�|jj|j�|�|jjt�|�|jj|jjk�dSr[)ryr�r�rsr?rrwr]rrr r@C
szTestTime.test_resolution_infocCsZd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��dS)N�r�r�r�r�rErr,rrr r-I
s

zTestTime.test_picklingcCsRd}t|�}tD]<\}}}|�||�}|�|�}|�||�|�t|t��qdS)Nr=)r6r�r�r�r*rwrSr,rrr �test_pickling_subclass_timeR
s
z$TestTime.test_pickling_subclass_timec	Cszgd�}t|�D]d\}\}}|j|d��<|j|�}tD]}||dd�}|�||�q8Wd�q1sj0YqdS)N))s,cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.r=)scdatetime
time
(U;tR.r=)s�cdatetime
time
U;�R.r=)s,cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.�r�r�r�r�)scdatetime
time
(U;tR.r?)s�cdatetime
time
U;�R.r?)r	rr)r%r�r�rr*)r+rdr	r!r�rfr�r�rrr r"[
s
zTestTime.test_compat_unpicklecCsh|j}|�|d��|�|dd��|�|ddd��|�|dddd��|�|d��|�|��dS)Nr"r)r�rw)r+r2rrr rRq
szTestTime.test_boolc
Cs�|j}gd�}||�}|�||���d}dD]L\}}|dd�}|||<||�}|jfi||i��}	|�||	�|d7}q.|d�}|jt|jdd�|jt|jdd�|jt|jd	d
�|jt|jdd�dS)
Nr9r)r�r�r�r�r"r��r�r��rprr;rr�r0r1rrr r7{
s"
zTestTime.test_replacecCs8Gdd�d|j�}|dd�}|�t|jdd��|�dS)Nc@seZdZdS)z4TestTime.test_subclass_replace.<locals>.TimeSubclassNr\rrrr �TimeSubclass�
srBr�rjr#r@r9)r+rBr�rrr r:�
s
zTestTime.test_subclass_replacecs�G�fdd�d�j�}d}�j|�}||iddi��}��|j|���|jd���|jd���|��|�����|�d�|j|jd�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z&TestTime.test_subclass_time.<locals>.CrOcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr;r<r>r]rr r}�
s

z.TestTime.test_subclass_time.<locals>.C.__new__cSs||j|jSr[�r�ror@rrr rB�
sz.TestTime.test_subclass_time.<locals>.C.newmethNrCrr]rr rE�
srE)rGrBrIr�rDrOrF)	r�r*r8rDr�r�rBr�rorGrr]r �test_subclass_time�
s

zTestTime.test_subclass_timec	Cs�d}ddtd�dfD] }|�t|j||dd��q|�td��*|�tdgt|��d�Wd�n1sr0YdS)	Nz2:59.0r��9r��ÿr"r^r�)�chrrorpr�rr_r')r+r3Z	hour_byterrr r`�
s
�z!TestTime.test_backdoor_resistanceN)r9rLrMrr�rr�r>r:r�r)r�r�r<r�rr�r�r@r-r>r"rRr7r:rDr`rrrr r76s.	+4
		
r7c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TZInfoBasecCs�|j}Gdd�dt�}|ddd|�d�}|tur4dp6d}|�|��|�t|turVd	pXd
d�}|�|��|�|�|��|�dS)Nc@s eZdZdd�Zdd�ZeZdS)z7TZInfoBase.test_argument_passing.<locals>.introspectivecSs|rdp
dS)N�real�nonerr_rrr rb�
r�z>TZInfoBase.test_argument_passing.<locals>.introspective.tznamecSst|r
dpdd�S)NrO����rQrr_rrr ra�
szATZInfoBase.test_argument_passing.<locals>.introspective.utcoffsetN)r9rLrMrbrarcrrrr �
introspective�
srLr"rErArrJrIrKrOrQ)r�rrr*rbrrarc)r+r2rL�objrfrrr �test_argument_passing�
sz TZInfoBase.test_argument_passingcCsz|j}|jt|ddddd�Gdd�dt�}|jt|ddd|d�Gdd�dt�}|�}|ddd|d�}|�|j|�dS)Nr"r�rc@seZdZdd�Zdd�ZdS)z3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTrycSsdSr[rr]rrr rZ�
r�z<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__cSsdSr[rr_rrr ra�
r�z=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffsetN�r9rLrMrZrarrrr �NiceTry�
srPc@seZdZdd�Zdd�ZdS)z5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTrycSsdSr[rr]rrr rZ�
r�z>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__cSsdSr[rr_rrr ra�
r�z?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffsetNrOrrrr �	BetterTry�
srQ)r�rorp�objectrr~)r+r2rPrQrr�rrr �test_bad_tzinfo_classes�
sz"TZInfoBase.test_bad_tzinfo_classesc

Cs�Gdd�dt�}|j}dD]�\}}|tur@|ddd||�d�}n0|turd|dddddd||�d�}nd	spJd
��|r�t|�}t|d�\}}d|d	kr�d
p�d||f}	t|t�r�|��}|�t	|�d|	�q|�
tt	|�qdS)Nc@seZdZdd�Zdd�ZdS)z6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.EdgycSst|d�|_dSrP�rrY)r+rYrrr rZ�
sz?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__cSs|jSr[)rYr_rrr ra�
sz@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffsetNrOrrrr �Edgy�
srU))�`���F)�a���T)�T)r�Fr"rErArrIrZ
impossibler�z%c%02d:%02dr�r�z01:02:03)rr�rrrrvrS�timetzr*r�ror�)
r+rUr2rYZlegitr�Zaofsr�r��tagrrr �test_utc_offset_out_of_bounds�
s 
z(TZInfoBase.test_utc_offset_out_of_boundscCs�|j}Gdd�dt�}|ddd�|ddddd�|ddd|�d�fD].}|�|���|�|���|�|���qBGdd�dt�}|ddd|�d�}|�|��tdd��|�|��td	d��|�|��d
�Gdd�dt�}|ddd|�d�}|�t	|j�|�t	|j�|�t	|j�Gd
d�dt�}|ddd|�d�}|�t
|j�|�t
|j�Gdd�dt�}|ddd|�d�}|�|��tdd��|�|��tdd��dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C1cSsdSr[rr_rrr rar�z4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffsetcSsdSr[rr_rrr rcr�z.TZInfoBase.test_tzinfo_classes.<locals>.C1.dstcSsdSr[rr_rrr rbr�z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tznameN�r9rLrMrarcrbrrrr �C1sr]r"rc@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C3cSs
tdd�S)NrWrQrr_rrr rar�z4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffsetcSs
tdd�S)NrXrQrr_rrr rcr�z.TZInfoBase.test_tzinfo_classes.<locals>.C3.dstcSsdS�N�anamerr_rrr rbr�z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tznameNr\rrrr �C3sr`rWrQrXr_c@s$eZdZdd�Zdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C4cSsdSr^rr_rrr rar�z4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffsetcSsdSrHrr_rrr rcr�z.TZInfoBase.test_tzinfo_classes.<locals>.C4.dstcSsdSr�rr_rrr rbr�z1TZInfoBase.test_tzinfo_classes.<locals>.C4.tznameNr\rrrr �C4srac@seZdZdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C6cSs
tdd�S)Ni��r�rr_rrr ra$r�z4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffsetcSs
tdd�S)Nr�r�rr_rrr rc%r�z.TZInfoBase.test_tzinfo_classes.<locals>.C6.dstNrrrrr �C6#srbc@seZdZdd�Zdd�ZdS)z*TZInfoBase.test_tzinfo_classes.<locals>.C7cSs
tdd�S)Nr
r�rr_rrr ra,r�z4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffsetcSs
tdd�S)N���r�rr_rrr rc-r�z.TZInfoBase.test_tzinfo_classes.<locals>.C7.dstNrrrrr �C7+srdr
r�rc)r�rr�rarcrbr*rrorpr�)r+r2r]r�r`rarbrdrrr �test_tzinfo_classess6
�zTZInfoBase.test_tzinfo_classescCs�|j}Gdd�dt�}|ddd|�d�}|jdd�}|jdd�}|jd	d�}|||fD]N}|||fD]>}ttttttfD](}	|	||�}
|	|j	|j	�}|�
|
|�qxqdqV|tu�r�|jd|�d
�}|jd|�d
�}|jd	|�d
�}|||fD]�}|||fD]�}||k||k}
||u�s ||u�r:||u�s4||u�r:d}nD||u�rR|u�r\nnd}n"||u�rld}n||u�szJ�d
}|�
|
|�q�q�dS)Nc@seZdZdd�ZdS)z=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetcSs$|jdkrt|jd�Stdd�SdS�Nr#rQr��rprr�rrr ra8s
zGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffsetNrirrrr �OperandDependentOffset7srhrzr<r#rrArArm�rprrr�r")r�rr�rrrrrrrpr*r)r+r2rhr3�d0rcr�rr��opr6rfrrr �test_aware_compare2s8	

(
zTZInfoBase.test_aware_compareN)r9rLrMrNrSr[rerlrrrr rH�
s
0rHc@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �
TestTimeTZcCsP|��}|�|jd�|�|jd�|�|jd�|�|jd�|�|j�dSr�)r�r*r�rpror�r�rr�rrr �
test_emptyfszTestTimeTZ.test_emptycs"tddd�}tddd�}tddd	�}td
d|d�}td
d|d�}tdd|d�}tdd��td|d��|�|j|�|�|j|�|�|j|�|��j�|��j|�|�|��tdd��|�|��tdd��|�|��tdd��|�����|�t|jd�|�|�	�d�|�|�	�d�|�|�	�d�|���	��|�t|j	d�|�|�
�tdd��|�|�
�tdd��|�|�
�td	d��|���
��|�t|j
d�|�t|�t|��|�t|�t|��|�t|�t|��|�||�|�||�|�||�|����|�t��fdd��|�t��fdd��|�t
|�d�|�t
|�d�|�t
|�d�|�t
��d�|�t
��d�|�|��d�|�|��d�|�|��d�|����d�|����d�d}|�t|�|d�|�t|�|d�|�t|�|d�|�t��|d �|�t��|d!�|�|�d"�d#�|�|�d$�d%�|�|�d$�d&�td'd(�}td)d*|d�}|�|�d+�d,�Gd-d.�d.t�}	td/d	d0|	�d�}
|�|
�d1�d2�|�t|
jd3�d4|jjv�rd5|	_|�t|
jd3�dS)6Nr�r�r"rr�rCr��METrArDr�rr�rk�(r�r�rQzno argscs��kSr[rr�rZZt5rr r��r�z'TestTimeTZ.test_zones.<locals>.<lambda>cs��kSr[rrrqrr r��r�z07:47:00-05:00z12:47:00+00:00z13:47:00+01:00z00:00:00.000040z00:00:00.000040+00:00z
datetime.timez(7, 47, tzinfo=est)z(12, 47, tzinfo=utc)z(13, 47, tzinfo=met)z
(0, 0, 0, 40)z(0, 0, 0, 40, tzinfo=utc)z%H:%M:%S %%Z=%Z %%z=%zz07:47:00 %Z=EST %z=-0500z%H:%M:%S %Z %zz12:47:00 UTC +0000z13:47:00 MET +0100rWz%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>.BadtznamerOcSs|jSr[rr_rrr rb�r�z/TestTimeTZ.test_zones.<locals>.Badtzname.tznameN)r9rLrMr�rbrrrr �	Badtzname�srrrErGz%H:%M:%Sz02:03:04r�r>r�)rNrr*rr�rarrorprbrcr&r�r�r�r�r�r8r9r�r�)r+�estr��metr"r#rYr(Zyuckrrr�rrqr �
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"rErArXr�ri�r�r3rIri���r�i���)r�rNr*r&r!rrr �test_hash_edge_cases�szTestTimeTZ.test_hash_edge_casesc	Cs�d}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��tdd�}|jddd|d�}tD]`\}}}|�||�}|�|�}|�||�|�|j	t�|�|�
�tdd	��|�|��d�qv|�|��|�d��dS)
Nr=rEr�r�rBrIrDrrQ)
r�r�r�r�r*rrrdryrrarrb�	r+r�r�r�r�rr�r��tinforrr r-�s"



zTestTimeTZ.test_picklingcCs�gd�}tdd�}|jdddd|d�}|D]`}tD]V}||d	d
�}|�||t|��|�|jt�|�|��tdd��|�|�	�d�q2q*dS)N)s�cdatetime
time
(S'\x05\x06\x07\x01\xe2@'
ctest.datetimetester
PicklableFixedOffset
(tR(dS'_FixedOffset__offset'
cdatetime
timedelta
(I-1
I68400
I0
tRsS'_FixedOffset__dstoffset'
NsS'_FixedOffset__name'
S'cookie'
sbtR.s�cdatetime
time
(U�@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
(J����J0KtRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.s��cdatetime
time
U�@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
J����J0K�RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieub�R.r�r�rBrIrDr�rrrrQ)
rdr�rr*r�ryrrarrb)r+rdrxrfr!r�r�rrr r"�s
zTestTimeTZ.test_compat_unpicklecCs||j}|dtdd�d�}|�|�|dtdd�d�}|�|�|dtdd�d�}|�|�|ddtd	d�d�}|�|�dS)
Nrr�r�rrBi,r�r�rX)r�rNrw)r+r2r�rrr �test_more_bools


zTestTimeTZ.test_more_boolcCs\|j}tdd�}ttdd�d�}dddd	|g}||�}|�||���d
}ddd
dd|ffD]L\}}|dd�}	||	|<||	�}
|jfi||i��}|�|
|�|d7}q\|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|d�}|j	t
|jdd�|j	t
|jdd�|j	t
|jdd�|j	t
|jdd�dS)Nr�+100�8���rQ�-200r"rErArGrr�r�r�r�rrr�r@r�rAr;rr��r�rNrr*r�rbr�rr~ror��r+r2Zz100Zzm200r�r3r	r5r4r5rfr6Zbase2Zbase3rrr r7s>
�
zTestTimeTZ.test_replacecCs|�ddd�}|�ddd�}|�||�|jdd�}|�||�|jtdd�d�}|�||�|jtdd�d�}|�||�Gdd�dt�}|�}|j|d�}|j|d�}|�|��td	d
��|�|��tdd
��|�||�|j|�d�}|�||k�dS)Nr"rErArr�rc@seZdZdd�Zdd�ZdS)z-TestTimeTZ.test_mixed_compare.<locals>.VariescSstdd�|_dS�Nr�rQrTr]rrr rZKsz6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd�7_|jS�Nr"rQ�rYrr�rrr raMsz7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNrOrrrr �VariesJsr�r�rQr�)	r�r*r�rNr�rrarrw�r+r"r#r��vrrr r'>s$zTestTimeTZ.test_mixed_comparec
Cs�ddg}d}d}d}d}|tt�||||��7}dtjttdd��ttd	d
d��g}|D]j}|D]`}|j|d|i�}	|	��}
|j|
d
��(|j�	|
�}|�
|	|�Wd�q`1s�0Yq`qXdS)Nr)r�r�r�r�)r<r�r�)rBrj)rGr�)ri�i�[
rEr�rIrr�rr)r��	itertools�productrr�rr�r�r�rMr*)r+Z
time_examplesZhhZmm�ssZusecr�Zttupr�r�r�t_rtrrr rj\s&��zTestTimeTZ.test_fromisoformatc
Cs�|�dddd�}tdd�tdd�tdd	d
�tdddd�tdd
ddd�g}|dd�|D�7}dtjttdd��g}|dd�|D�7}|D]`}|j|d�}|��}|j|d��,|j�|�}||ks�J|��Wd�q�1s�0Yq�dS)Nr�rjr�rrBr�rErIrr�rnr�rGr<r�r�cSsg|]}d|�qSrrrrrr r!�r�z:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>rcSsg|]}t|��qSrrrrrr r!�r�rrr)r+Z	base_timer�r�r�r�rr�rrr rvs"
��z&TestTimeTZ.test_fromisoformat_timezonecCsddg}dtjttdd��ttdd��ttddd��g}gd	�}t|�D]�\}}|D]�}|D]�}|d
kr�d|dd}|d
d�|f}|j|d
d|�d|i�}	|	j|d�}
|j|
d��(|j�|
�}|�|	|�Wd�q\1s�0Yq\qTqHdS)N)rzr�r�r�)rzr�r�rr�r�rErIrr�r#r�r�r�rr"rr�rr$)r+Z
time_basesr�r&r'r�r�Zt_tupler(r�rr�rrr r)�s(��z'TestTimeTZ.test_fromisoformat_timespecsc
Csxgd�}|D]f}|j|d��F|�t��|j�|�Wd�n1sJ0YWd�q1sh0YqdS)N)r�u12�00z12:z12:30:z	12:30:15.�1z12:3z12:30:1z1a:30:45.334034z12:a0:45.334034z12:30:a5.334034z
12:30:45.1234z12:30:45.1234567z12:30:45.123456+24:30z12:30:45.123456-24:30u12:30:45u12:30:45․123456z	12:30:45az
12:30:45.123az12:30:45.123456az12:30:45.123456+12:00:30ar*r+rlrrr rn�s
z#TestTimeTZ.test_fromisoformat_failsc	CsTddt�d�g}|D]:}|�t��|j�|�Wd�q1sD0YqdS)Ns12:30:45z12:30:45rorrrrr rs�sz-TestTimeTZ.test_fromisoformat_fails_typeerrorcCsPGdd�d|j�}|ddddtjd�}|�|���}|�||�|�||�dS)Nc@seZdZdS)z<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNr\rrrr rB�srBr�r�r�i�r)r�rr�rMr�r*ry)r+rBZtscZtsc_rtrrr rk�s
z&TestTimeTZ.test_fromisoformat_subclasscs�G�fdd�d�j�}ddddtddd	�f}�j|�}||id
di��}��|j|���|jd���|jd���|��|�����|�d
�|j|j	d�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z*TestTimeTZ.test_subclass_timetz.<locals>.CrOcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr;r<r>r]rr r}�s

z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__cSs||j|jSr[rCr@rrr rB�sz2TestTimeTZ.test_subclass_timetz.<locals>.C.newmethNrCrr]rr rE�srErGrBrI��r�r�r"r�rDrOrF)
r�rNr*r8rDr�rarBr�rorGrr]r �test_subclass_timetz�s

zTestTimeTZ.test_subclass_timetzN)r9rLrMrr�rnrurvr-r"ryr7r'rjrr)rnrsrkr�rrrr rmcs W
"'
rmc@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"rErArGrBrIrD)
r�r*r�r�rFr�rpror�rr_rrr �test_trivial�szTestDateTimeTZ.test_trivialcsj|jdddtdd�d��|jtdddddd	td
d�d��|���k�|���k�|���k�|����|����|jdddddtdd�d��|jddddd
tdd�d��|����|jdddddtdd�d��|���k�|jdddddtdd�d��|���k�|jdddddtdd�dd��|���k�|jdddddtdd�dd��|���k�|jj�|����|����|�t����kWd�n1�s�0YGdd�dt	�}|jddd|�d��|����|����|�ddd��|����Gdd�dt	�}|jddd|�d��|jdddtdd�d��|�t
��fdd��dS)Nr"rXr�rr�rr�r�r�rWrErArk��r)rror�c@seZdZdd�ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.NaivecSsdSr[rr_rrr ra8r�z>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffsetNrirrrr �Naive7sr�rBrIrDc@seZdZdd�ZdS)z4TestDateTimeTZ.test_even_more_compare.<locals>.BoguscSs
tdd�S)Nr�rQrr_rrr raDsz>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffsetNrirrrr rCsrcs��kSr[rr�r"r#rr r�Hr�z7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>)r�rNrrwr*r�r�rorprr�)r+r�rrr�r �test_even_more_comparesN���(z%TestDateTimeTZ.test_even_more_comparec	Csd}|j|�}tD],\}}}|�||�}|�|�}|�||�q|�|��|�d��tdd�}|j|id|i��}|jdddtddd�d	�}tD]`\}}}|�||�}|�|�}|�||�|�	|j
t�|�|��tdd
��|�|�
�d�q�|�|��|�d��dS)Nr�rEr�r�rr"rr�rrQ)r�r�r�r�r*rrrdrNryrrarrbrwrrr r-Js$



zTestDateTimeTZ.test_picklingcCs�gd�}d}tdd�}|j|id|i��}|D]Z}tD]P}||dd�}|�||�|�|jt�|�|��tdd��|�|��d�q6q.dS)	N)s�cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x01\xe2@'
ctest.datetimetester
PicklableFixedOffset
(tR(dS'_FixedOffset__offset'
cdatetime
timedelta
(I-1
I68400
I0
tRsS'_FixedOffset__dstoffset'
NsS'_FixedOffset__name'
S'cookie'
sbtR.s�cdatetime
datetime
(U
�;�@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
(J����J0KtRU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieubtR.s��cdatetime
datetime
U
�;�@ctest.datetimetester
PicklableFixedOffset
)R}(U_FixedOffset__offsetcdatetime
timedelta
J����J0K�RU_FixedOffset__dstoffsetNU_FixedOffset__nameUcookieub�R.)rrmrr�r�r"r�r�r�rrrrQ)	rdr�rr*ryrrarrb)r+rdr�rxrfr!r�r�rrr r"as
z#TestDateTimeTZ.test_compat_unpicklecCsr|jdddtdd�d�}t|�|jtdddddd	td
d�d�}t|�|jdddtdd�d�}|�tt|�dS)
Nr"rXr�rr�rr�r�r�rWrBrV)r�rNr&rror�r�rrr �test_extreme_hashes�s�z"TestDateTimeTZ.test_extreme_hashescCs�tdd�}tdd�}tdd�}tddd	d
d|d�}tddd	d
d|d�}tddd	dd|d�}|�|j|�|�|j|�|�|j|�|�|��tdd��|�|��tdd��|�|��tdd��|�|��d�|�|��d�|�|��d�|�t|�t|��|�t|�t|��|�t|�t|��|�||�|�||�|�||�|�t|�d�|�t|�d�|�t|�d�d}|�t	|�|d�|�t	|�|d�|�t	|�|d�dS)Nr�r�rr�r�ror�rArmrDr�rr�rkrQz2002-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))
rNrr*rrarrbr&r�r�)r+rsr�rtr"r#rYr(rrr ru�s8


zTestDateTimeTZ.test_zonesc
CsXtdd�}tddd�}tdddd|d	�}t�||�}|�|tddddddd|d	��dS�
Nr�ror�rArGr�r�r�r)rNrrrrPr*)r+rtr(r�r`rrr r��s
�zTestDateTimeTZ.test_combinec
Csxtdd�}|jddddddd|d	�}|�|��tddd��|�|��tdddd��|�|��tdddd|d	��dSr�)rNr�r*rrrY)r+rtr`rrr r��s

zTestDateTimeTZ.test_extractc
st|j���tdd�}���j|d�}|j����|��|��j|�|�	��
�|�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��|�t�fd	d��|�	��t
d
��|�	��t
d
��t
ddd
d�����|��j|���}|�|j|�|�	�|���}|�|j|�|�	�|�|�t��fdd��|�	����tt�dd�d�}�j|d��|��j|���}�������}|�	||�|jdddtdd�d�}|jtddddddtdd�d�}	|	|}
|�	|
|jj|jjt
dd��ttd�}ttd�}|j|d�|	j|d��|�	�|jj|jj�dS)Ni����z	west 5:30rcs��Sr[rr�rz�nowawarerr r��r�z9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rrr�rr r��r�cs��Sr[rr)r�rr r��r�rr"r�i.)r�rRr�cs��Sr[rr)r��nowawareplusrr r��r�rWr�ZrandomtimezonerXr�rr�r�r�rsi>rQr�r�)r�rzrNrr�rPrr~rr*rYrorprrhZ	randrangerarrsr�rr�)
r+Ztz55Z	timeawareZ
nowawareplus2r�Ztzrr6rfr�rsZmaxdiffZtzaZtzbr)r�rzr�r�r �test_tz_aware_arithmetic�sT

��

z'TestDateTimeTZ.test_tz_aware_arithmeticcCs.|jj}|�}tdd�}||�}||d�}|�|j|j�|�|��tdd��|�t	|d�|jt	|dd�|jt	||d�|�t	|||�tdd	d�}ttd
dd�d
d�t
td
dd�d
�fD]h}td�D]P}t�|�}	|�|	j|�t�
�j|d�}
|
�|�}t|	|�tdd�kr�q�q�|�d�q�dS)NrO�42rrQr�r�rxrr�rr3r��weirdtzrArjr�z0utcnow(), now(tz), or astimezone() may be broken)r�rzrNr~rr*rarrorprrrr�r�rrZfail)r+�methr3�off42�another�againr�r�r�rzr�Znow2rrr �test_tzinfo_nows.

�

zTestDateTimeTZ.test_tzinfo_nowcCs
ddl}|jj}|��}||�}tdd�}|||�}|||d�}|�|j|j�|�|��tdd��|�	t
||d�|j	t
||dd�|j	t
|||d�|�	t
||||�|�	t
|�d	}t�|�}	td
dd�}
t|
d
d�}|	|
}t�||�}
|�||
j
dd��dS)NrrOr�rrQr�rr�rAi��'r�r�)rr�r�rNr~rr*rarrorprr�r�)r+rr�r�r3r�r�r�rQZutcdatetimerar�rfr6rrr �test_tzinfo_fromtimestamp's*


z(TestDateTimeTZ.test_tzinfo_fromtimestampcCs:|jj}|�}tdd�}|�t||�|jt||d�dS)NrOr�r)r�r�rNrorp)r+r�r3r�rrr �test_tzinfo_utcnowJs

z!TestDateTimeTZ.test_tzinfo_utcnowcCsPddl}|jj}|��}||�}tdd�}|�t|||�|jt|||d�dS)NrrOr�r)rr�r�rNrorp)r+rr�r�r3r�rrr �test_tzinfo_utcfromtimestampTs
z+TestDateTimeTZ.test_tzinfo_utcfromtimestampcCshGdd�dt�}|j}dD]�\}}|ddddddd||�d	�}|��}|�d|j�|�d|j�|�d|j�|�d|j�|�d|j�|�d|j	�|�d
|j
�|�d|j�|�||j�q|�
t|ddd|d�d	�j�|�|ddd|d�d	���jd�|�|ddd|d
�d	���jd�|�
t|ddd|d�d	�j�|�
t|ddd|d�d	�j�dS)Nc@seZdZdd�Zdd�ZdS)z1TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DSTcSst|t�rt|d�}||_dSrP�rSrTr�dstvalue�r+r�rrr rZds

z:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__cSs|jSr[�r�r_rrr rchsz5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstN�r9rLrMrZrcrrrr �DSTcsr�))����r")r�r")rr)Nr�r"r#r�rjrprrrrXrWr�rV)rr�r�r*rrr
rrrrrrrorpr�)r+r�r2r��flagr(r�rrr �test_tzinfo_timetuple`s&""z$TestDateTimeTZ.test_tzinfo_timetuplecs�Gdd�dt��|j}|�t|ddd�d�d�j�G�fdd�d��}dD]�}|dd	d
ddd
d|d|�d�}|��}|�|j|j�|�|j	|j
�|�|j|j�|�d|j
�|�d|j�|�|j|j�|�|��|j�|�|��tddd���d|j�|�d|j�qL|dd	d
ddd
d�}|��}|�|dd�|��dd��|�d|j�Gdd�d��}|dd	d
ddd
d|�d�}|��}|�|dd�|��dd��|�d|j�Gdd�d��}|dd	d
ddd
d|�d�}|�t|j�|ddddddd�}tjtjtjfD]>}|j|d�}	|�|	��dd�|	�tj���dd���q |tddddd|d�d�}
|�t |
j�|t!ddd d!dd"|d#�d�}|�t |j�|jjtt"�d�}
|�t |
j�|jjtt"�d�}|�t |j�dS)$Nc@seZdZddd�Zdd�ZdS)z-TestDateTimeTZ.test_utctimetuple.<locals>.DSTrcSst|t�rt|d�}||_dSrPr�r�rrr rZ�s

z6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__cSs|jSr[r�r_rrr rc�sz1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dstN)rr�rrrr r��s
r�r"rrcs"eZdZd�fdd�	Zdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNcs��||�t|d�|_dSrP)rZr�uofs)r+r�Zdofs�r�rr rZ�sz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__cSs|jSr[)r�r_rrr ra�sz8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffset)NrOrr�rr �UOFS�sr�)r�r�rNrErAr#r�rjrpi���rmrkr�c@seZdZdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.NOFScSsdSr[rr_rrr ra�sz8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffsetNrirrrr �NOFS�sr�c@seZdZdd�ZdS)z.TestDateTimeTZ.test_utctimetuple.<locals>.BOFScSsdS)Nr�rr_rrr ra�sz8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffsetNrirrrr �BOFS�sr�r�r�rr�i+�r�rXr�rr�r�r�rW)#rr�rortraZutctimetupler*r�rr�rrFr
rrrorr�rr�rrrr�rprr�r�rsr�rrrBrr�)r+r2r�r�r(r�r�r�r�ZdtzrEZhugerr�r �test_utctimetuple�s\��  �z TestDateTimeTZ.test_utctimetuplecCstdd�}tdd�}tdd�}tdd�}|j}d}d||||fD]�}d	D]�}|d
ddd
dd||d�}	d|rndppd}
|dur�|	��p�d}|
|}|	��}
|�|
|d|�|�|
|	�d��|�|	�d�|d|�|�|	�d�|d|�|�t|	�|d|�qHq@dS)Nrr���z+03:40i���z-03:51r�z
0001-02-03)riyr"rErArGrBr�rz04:05:59z.987001rT�kuሴr�)rNr�rbr�r*r�)r+rZplusZminus�unknownr2ZdatestrZofsrr(ZtimestrZofsstrZtailstrZisorrr �test_tzinfo_isoformat�s$



z$TestDateTimeTZ.test_tzinfo_isoformatc	Cs6|j}tdd�}ttdd�d�}dddd	d
dd|g}||�}|�||���d
}dddddddd|ffD]L\}}|dd�}	||	|<||	�}
|jfi||i��}|�|
|�|d7}qh|�|��d�|jdd�}|�|j�|�|���|j|d�}
|�||
�|�|j|
j�|ddd�}|j	t
|jdd�dS)Nrrzr{rQr|r"rErArGrBrIrDrr,r-r.r�r�r�r�rrr�r�r�r/r}r~rrr r7�s>
�
zTestDateTimeTZ.test_replacecCsDtdd�}tdd�}ttdd�d�}|jj|d�}|�|j|�|�t|j|�|�|j�}|�|j|�|�	|�
�|�
��|�	|��|���|�|�}|�|j|�|�	|��tdd��||��}||�|�7}|j
|d	�}|�	|�
�|�
��|�	|��|���|�	|��|���|�|j|j�|�	||�dS)
N�NonerZ44rBr�Zm300rr�r)rNrr�rzr~rror�rr*rrrar�rY)r+ZfnoneZf44mZfm5hr`rr6rfrrr �test_more_astimezones*


z#TestDateTimeTZ.test_more_astimezoner�cCs4|j�tj�}|�|�d�|�|�|��|�dSr[)r�rzrr�r*rr_rrr �test_astimezone_default_utc-sz*TestDateTimeTZ.test_astimezone_default_utcr�cCs�|jdddddtjd�}|��}|�||�|�|�d�d�|jdddd	dtjd�}|��}|�||�|�|�d�d
�dS)Nr8rmrGrIrjrr�z	-0500 ESTrBz	-0400 EDT)r�rr�rr*r�)r+r`r�rrr �test_astimezone_default_eastern5sz.TestDateTimeTZ.test_astimezone_default_easterncCs8tddddtjd�}|��}|��}|�|j|j�dS)Nrrmr"rBr)rrr�rr*r)r+r�r�r=rrr �!test_astimezone_default_near_fold@sz0TestDateTimeTZ.test_astimezone_default_near_foldc
Cs�|j}Gdd�dt�}|ddddddd	|�d
�}|jdd�}|jdd�}|jdd�}|||fD]:}|||fD]*}||}	t|j|jd
�}
|�|	|
�qlq^|ddddddd	�}|jd|�d�}|jd|�d�}|jd|�d�}|||fD]�}|||fD]�}||}	||u�s||u�r4||u�s*||u�r4td�}
nT||u�rL|u�rZnn
td�}
n.||u�rptdd
�}
n||u�s~J�tdd
�}
|�|	|
�q�q�dS)Nc@seZdZdd�ZdS)zBTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetcSs$|jdkrt|jd�Stdd�SdSrfrgr�rrr raNs
zLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetNrirrrr rhMsrhrzr<r#rmr�rkr�rrArArQriri���r�)r�rr�rrpr*)r+r2rhr3rjrcr�rr�r6rfrrr �test_aware_subtractHs6	(



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"rErArGrBrIrDrr�rc@seZdZdd�Zdd�ZdS)z1TestDateTimeTZ.test_mixed_compare.<locals>.VariescSstdd�|_dSrrTr]rrr rZ�sz:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__cSs|jtdd�7_|jSr�r�r�rrr ra�sz;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetNrOrrrr r��sr�r�rQr�)	rr*r�rNr�rrarrwr�rrr r'ts$z!TestDateTimeTZ.test_mixed_comparecs�G�fdd�d�j�}ddddddd	td
dd�f}�j|�}||id
di��}��|j|���|jd���|jd���|��|�����|�d�|j|j	d�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z2TestDateTimeTZ.test_subclass_datetimetz.<locals>.CrOcs6|��}|�d�}�jj|g|�Ri|��}||_|Sr;r<r>r]rr r}�s

z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__cSs||j|jSr[)r�r�r@rrr rB�sz:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmethNrCrr]rr rE�srEr�r�rrGrBrIr�r�r�r"r�rDrOrF)
r�rNr*r8rDr�rarBr�r�rGrr]r �test_subclass_datetimetz�s

z'TestDateTimeTZ.test_subclass_datetimetzN)r9rLrMrr�r�r�r-r"r�rur�r�r�r�r�r�r�r�r�r�r7r�rr1r�r�r�r�r'r�rrrr r��s8E%A%#
$P'



,r�cCs d|��}|r|t|�7}|S)NrI)r�r)r`Z
days_to_gorrr �first_sunday_on_or_after�sr�rQr�r�rGrEr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
USTimeZonecCs"t|d�|_||_||_||_dS�Nr��r�	stdoffset�reprname�stdname�dstname�r+r�r�r�r�rrr rZ�szUSTimeZone.__init__cCs|jSr[�r�r]rrr r^�szUSTimeZone.__repr__cCs|�|�r|jS|jSdSr[�rcr�r�r_rrr rb�s
zUSTimeZone.tznamecCs|j|�|�Sr[�r�rcr_rrr ra�szUSTimeZone.utcoffsetcCs�|dus|jdurtS|j|us$J�ttj|jd��}|��dkrV|jdkrV|jdksZJ�tt	j|jd��}|��dkr�|jdkr�|jdks�J�||jdd�kr�|kr�nnt
StSdS�Nr/rIrGrDr#r�r)rr�r��DSTSTARTr�r�r�r�rF�DSTENDr��r+r`rA�endrrr rc�s$$ zUSTimeZone.dstN�r9rLrMrZr^rbrarcrrrr r��s
r�r�r�r�rrJ�CentralZCSTZCDTrF�MountainZMSTZMDTi�����PacificZPSTZPDTr�i0���ZUTCfakec@sdeZdZedddd�Zedddd�ZeZdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestTimezoneConversionsr�rGrDrEr#rr"c
Cs|�|��t�|�|�|�|�|�|�}|�|�}|��|��kr�|jdkr�|�|t|�|�|��t�|�|�|�|�|��n|�||�|t}|�|�}	|��|��kr�|jdkr�|�|	|jdd��|t7}|�|�}	|�|	|jdd��n|�|	|t�dS)NrErr"r@)r*rcr�rrr�r�r�)
r+r`r�r��dston�dstoff�asutc�there_and_backZnexthour_utcZnexthour_tzrrr �checkinside�s&


�


z#TestTimezoneConversions.checkinsidecCsF|�|��t�|�|�|�|�|�|�}|�|�}|�||�dSr[)r*rcr�r)r+r`r�r�r�r�rrr �checkoutside/s


z$TestTimezoneConversions.checkoutsidec	Cs�|jj|d�}|jj|d�}tdd�tttdd�tdd�fD]p}|�|||||�||||fD]}|�|||||�qb|�|||�||||fD]}|�|||�q�q<dS)Nrrkr�r"rQr�)r�r�r�r�DAYr�r�r�)r+r�r�r�r�r�ZduringZoutsiderrr �convert_between_tz_and_utc:s�z2TestTimezoneConversions.convert_between_tz_and_utccCsL|�tt�|�tt�|�tt�|�tt�|�tt�|�tt�dSr[)r�r��utc_realr��utc_faker]rrr �	test_easyPsz!TestTimezoneConversions.test_easyc	CsH|jtdd�}tddd�}|j|d�}|jjdd�}|�t�jdd�}|�||�|jjd	td
�}|jjdd�}|�t�jdd�}|�||�ttfD]�}tt	fD]�}|j
tdd�}||�d�8}||�d�}	|	j|d�}
d
D]Z}|j
j|d�}dD]:}
|j|
d�}|
j|
d�}	|	�|�}|�|jdd�|�q�|
t7}
q�q�q�dS)NrGr�i��z-0900rrrAr@rI�r�rr"rE)rr"r"rE�rrjr�rA)
r�rrNr�rr�r*r�r�r�r�rar�)r+ZfourbackZninewestrfr6Zsixutcr�r�Zfirst_std_hourr�Z	asutcbaseZtzhourZexpectedbaserpZastzrrr �test_trickyhs0
z#TestTimezoneConversions.test_trickycCs�Gdd�dt�}|j��jtd�}|�|��Gdd�d|�}|�t|j|��Gdd�d|�}|�dd	d	�jtd�}|�t|j|��dS)
Nc@seZdZdd�Zdd�ZdS)z2TestTimezoneConversions.test_bogus_dst.<locals>.okcSstSr[�r�r_rrr ra�r�z<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffsetcSstSr[r�r_rrr rc�r�z6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dstNrrrrr �ok�sr�rc@seZdZdd�ZdS)z5TestTimezoneConversions.test_bogus_dst.<locals>.notokcSsdSr[rr_rrr rc�r�z9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dstN�r9rLrMrcrrrr �notok�sr�c@seZdZdd�ZdS)z<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokcSs|jdkrdSdtSdS)Nr�r#)r�r�r_rrr rc�s
z@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dstNr�rrrr �tricky_notok�sr�r�r")rr�rzr�r�rror�)r+r�rzr�r�r`rrr �test_bogus_dst�sz&TestTimezoneConversions.test_bogus_dstc
Cs�|�ttj�t��jtd�}|�ttj|�|jtd�}t�|�}|�	|j
t�|�ttj||�|�ttjt���Gdd�dt
�}|dddd�}|jjdtd	�}|j|d�}d
D]�}|j|d�}|dkr�|td
d�8}t�|�}	|�	||	�||j}|�|�}	|�	||	�|jtd��|�}	|�	||	�|t7}|t7}q�|jjdtd	�}|j|d�}dD]v}|j|d�}t�|�}	|�	||	�||j}|�|�}	|�	||	�|jtd��|�}	|�	||	�|t7}|t7}�qbdS)Nrc@seZdZdd�ZdS)z<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonecSs
||jSr[)r�r_rrr r��szDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutcN�r9rLrMr�rrrr �FauxUSTimeZone�sr�r��FEasternZFESTZFEDTrGr�)r�rr"rArGrBr@r�r"r�)rr"r"rErArG)rorpr�r�rr�r�r�r�r*rrr�r�r�rr�rr�r�)
r+rzZenowr�r�rAZfstartZwallrfr6rrr r��sL







z$TestTimezoneConversions.test_fromutcN)r9rLrMrr�r�r�r�r�r�r�r�r�r�rrrr r��s43r�c@s$eZdZdd�Zdd�Zdd�ZdS)�Oddballscs�t���t��t���|���k�|���k�|���k�|���k�|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��|�t��fdd��|�t��fd	d��|�	��
��d
��jddd}�j|d
�}|�	��
|�d�t
�j�j�j�}|�	�|�|�	|��t�j�j�jddd�}|�	�|�|�	|��dS)Ncs��kSr[rr�Zas_dateZas_datetimerr r�r�z+Oddballs.test_bug_1028306.<locals>.<lambda>cs��kSr[rrr�rr r�r�cs��kSr[rrr�rr r�r�cs��kSr[rrr�rr r�r�cs��kSr[rrr�rr r�r�cs��kSr[rrr�rr r�r�cs��kSr[rrr�rr r�r�cs��kSr[rrr�rr r�r�Tr"r�)rFFr)rr�rrPrrwr�rorpr*�__eq__rFr�r�r�r�r�)r+Z
different_dayZas_differentZdate_scZdatetime_scrr�r �test_bug_1028306�s4

�zOddballs.test_bug_1028306c	Cs^t��t�t��t�t�tt��fD]4}|�t	��d|_
Wd�q$1sN0Yq$dSrH)rr�rrr�rrrro�AttributeErrorr$)r+rrrr �test_extra_attributess�zOddballs.test_extra_attributesc
Cs�Gdd�d�}t�d�t�d�|d�fD]Z}|�t��<|�tddddddd�t|||||||��Wd�q(1sx0Yq(|�td��tddd�Wd�n1s�0Y|d�}|�td��tdd|�Wd�n1s�0YGd	d
�d
t�}|d�}|�td��tdd|�Wd�n1�sD0Y|�	t��tddd�Wd�n1�s|0Y|�	t��tddd�Wd�n1�s�0Y|�	t��tddd�Wd�n1�s�0Y|�	t��tdddd�Wd�n1�s&0Y|�	t�� tddddd�Wd�n1�sb0Y|�	t��"tdddddd�Wd�n1�s�0Y|�	t��$tddddddd�Wd�n1�s�0YdS)
Nc@seZdZdd�Zdd�ZdS)z-Oddballs.test_check_arg_types.<locals>.NumbercSs
||_dSr[��value)r+r�rrr rZ)sz6Oddballs.test_check_arg_types.<locals>.Number.__init__cSs|jSr[r�r]rrr �__int__+sz5Oddballs.test_check_arg_types.<locals>.Number.__int__N)r9rLrMrZr�rrrr �Number(sr�r#z10.9z)^an integer is required \(got type str\)$Z10g������%@z)^__int__ returned non-int \(type float\)$c@seZdZdS)z,Oddballs.test_check_arg_types.<locals>.FloatNr\rrrr �Float>sr�z&^integer argument expected, got float$g$@)
�decimalZDecimalZassertWarns�DeprecationWarningr*rrrpr}ro)r+r�ZxxZf10r�Zs10rrr �test_check_arg_types's@��$**,,,,.02zOddballs.test_check_arg_typesN)r9rLrMr�r�r�rrrr r��s%
r�c@seZdZdd�ZdS)�tzinfo2cCs�t|t�std��|j|ur$td��|jdd���}|jdd���}|dus`|dus`|��durdt�||kr�||}|��}||kr�|S||fD]@}||}|��|kr�|S|jdd�}|��|kr�|Sq�td��dS)�*datetime in UTC -> datetime in local time.�&fromutc() requires a datetime argument�dt.tzinfo is not selfrr�r"NzNo suitable local time found)rSrrprr�r�rarc)r+r`Zoff0Zoff1�ldtZoffrrr r�[s*


ztzinfo2.fromutcNr�rrrr r�Ysr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�USTimeZone2cCs"t|d�|_||_||_||_dSr�r�r�rrr rZ}szUSTimeZone2.__init__cCs|jSr[r�r]rrr r^�szUSTimeZone2.__repr__cCs|�|�r|jS|jSdSr[r�r_rrr rb�s
zUSTimeZone2.tznamecCs|j|�|�Sr[r�r_rrr ra�szUSTimeZone2.utcoffsetcCs|dus|jdurtS|j|us$J�ttj|jd��}|��dkrV|jdkrV|jdksZJ�tt	j|jd��}|��dkr�|jdkr�|jdks�J�|jdd�}|t
|kr�|kr�nnt
S||kr�|t
kr�nn|jr�tSt
S||k�r|t
k�rnn|j�rt
StStSdSr�)rr�r�r�r�r�r�r�rFr�r�r�r�rrr rc�s$$ zUSTimeZone2.dstNr�rrrr r�{s
r��Eastern2�Central2�	Mountain2�Pacific2c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�Europe_Vilnius_1941cCs$tdddd|d�tdddd|d�gS)N�rIr�rlrr��rr]rrr �	_utc_fold�s�zEurope_Vilnius_1941._utc_foldcCs$tdddd|d�tdddd|d�gS)NrrIr�rr�rrr]rrr �	_loc_fold�s�zEurope_Vilnius_1941._loc_foldcCs>|��\}}||krdtS||kr6|jr.dndtSdtS)NrArE�rr�r��r+r`Z
fold_startZ	fold_stoprrr ra�szEurope_Vilnius_1941.utcoffsetcCs>|��\}}||krdtS||kr6|jr.dndtSdtS)Nrr"rr	rrr rc�szEurope_Vilnius_1941.dstcCs.|��\}}||krdS||kr*d|jSdS)N�MSK)r
�CESTr)rr�r	rrr rb�s
zEurope_Vilnius_1941.tznamecCsr|jdksJ�|j|usJ�|jdkr*t�|��\}}||krJ|dtS||krf|dtjdd�S|dtS)NrrrArEr"r�)r�rr�rtrr�r�r	rrr r��s
zEurope_Vilnius_1941.fromutcN)	r9rLrMrrrarcrbr�rrrr r�s			rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
�d�dd��Ze
�d�dd��Z
dd�Ze
�d�dd��Ze
�d�dd��Ze
�d�dd��Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0�TestLocalTimeDisambiguationc	Cs�t�}tddddddtjd�}|�|�}|�|�d�d�|�|jd	�|�|�	��tdddd
tjd�}|�|�}|�|�d�d�|�|jd�|�
|�	��tdddd
tjd�}|�|�}|�|�d�d�|�|jd	�|�
|�	��dS)NrrIr�r�r�rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rrlz"Mon Jun 23 23:00:00 1941 CEST+0200r"r�z"Tue Jun 24 00:00:00 1941 CEST+0200)rrrr�rr*r�r�r�rcrw)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)NrrIr�r�r�rz%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr")rr�zMon Jun 23 21:59:59 1941 UTCr�rzMon Jun 23 22:00:00 1941 UTC)rrrrr�r*r�)r+r
r�rrrr �test_vilnius_1941_toutcs*����z3TestLocalTimeDisambiguation.test_vilnius_1941_toutccCsxtddd�}tddddd�}|�|jd�|�|jd�|�t��"tdddddd�Wd�n1sj0YdS�Nrr"r�)rrr*r�rorp�r+r�r`rrr �test_constructors"sz-TestLocalTimeDisambiguation.test_constructorscCs@tddddd�}|��}|�|jd�|��}|�|jd�dS)Nr"r�)rrr*r�rY)r+r`r�rrr �test_member*s
z'TestLocalTimeDisambiguation.test_membercCs�td�}tddd�}|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|�|jdd�jd�|jdtd�}|jdtd�}|�|jdd�jd�|�|jdd�jd�|�t��|jdd�Wd�n1s�0Y|�t��|jdd�Wd�n1�s0Y|�t��"|�ddddd�Wd�n1�sV0Y|�t��*|�ddddddddd�	Wd�n1�s�0YdS)Nrr"r�)r�rrrE)	rrr*r�r�r�ror�rprrrr r71s$*,2z(TestLocalTimeDisambiguation.test_replacecCs@td�}tddd�}|�||jdd��|�||jdd��dSr)rrr*r�rrrr r�Hsz+TestLocalTimeDisambiguation.test_comparisoncCsPtd�}tddd�}|�t|�t|jdd���|�t|�t|jdd���dSr)rrr*r&r�rrrr �	test_hashNsz%TestLocalTimeDisambiguation.test_hashr�cCs<d}t�|�}t�|d�}|�|jd�|�|jd�dS)NiX�UTrrr")rr�r*r�)r+r=�dt0rqrrr r�Ts

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


z8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howecCs|�t�d�jd�dSr�)r*rr�r�r]rrr �%test_fromtimestamp_low_fold_detectionlszATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectioncCs8tddddd�}|jdd�}|�|��d|���dS)NrkrmrEr"rjr�r)rr�r*rQ)r+rrqrrr �test_timestampqs
�z*TestLocalTimeDisambiguation.test_timestampcCsht�d�}t�d|�dkr$|�d�tddddd	�}|jd
d���}|jdd���}|�|d|�dS)
NrrrrrrGrBr"r�rr�r)r�r�r�r:rr�rQr*)r+rr��s0�s1rrr �test_timestamp_lord_howexs

z4TestLocalTimeDisambiguation.test_timestamp_lord_howecCs|tddddd�}|jdd�}|��}|��}|�|��d�|�|��d�|�|t|�|�|jd	�|�|jd	�dS)
NrkrmrEr"rjr�rr�r)rr�rr*rbr�r�)r+rrqZadt0Zadt1rrr r	�sz+TestLocalTimeDisambiguation.test_astimezonec	Csztdd�}tddddd�}tD]V\}}}||fD]B}|�||�}|�|�}|�||�|�|dkrfdn|j|j�q0qdS)Nr"r�rGr)rrr�r�r�r*r�)	r+r�r`r�r�rrr=r�rrr �test_pickle_fold�s

z,TestLocalTimeDisambiguation.test_pickle_foldcCs>tdd�}tddddd�}|�t|�d�|�t|�d�dS)Nr"r�zdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))rrr*r�rrrr r��s

�z%TestLocalTimeDisambiguation.test_reprc	Cs
tddddtd�tj}tddddtd�}|�|��t�|�|��t�|�|jdd���t�|�|jdd���t�dD]@}tdddd|td�}|�|��t�|�|jdd���t�q~dD]@}tdd	d
d|td�}|�|��t�|�|jdd���t�q�dS)Nr�r#rr"rrEr�r�rGrD)	rr�rr?r*rcr�r�r�)r+�	dt_summer�	dt_winterrpr`rrr r��sz$TestLocalTimeDisambiguation.test_dstcCs�tddddtd�tj}tddddtd�}|�|��dt�|�|��dt�|�|jdd	���dt�|�|jdd	���dt�dS)
Nr�r#rr"rrErHr�r�)rr�rr?r*rar�r�)r+r$r%rrr r��sz*TestLocalTimeDisambiguation.test_utcoffsetc	Csttddddtd�tj}tddddtd�}t�|�}t�|�}|�||dt�|�||dt�|�|jd	�|�|jd	�tddddd
td�}t�|�}|t7}t�|�}|�||�|�|jd	�|�|jd�tddddd
td�}t�|�}|�|j|j	fd�tddddd
td�}t�|�}|�|j|j	fd
�tddddd	td�}t�|�}|�|j|j	fd�dS)Nr�r#rrIrrDrGrBrrjr")r�rl)rr"rE)rIrl)
rr�rr?r�r*r�r�rFr�)	r+Zu_summerZu_winterZt_summerZt_winterr�r�r"r�rrr r��s0






z(TestLocalTimeDisambiguation.test_fromutccCsLtdddtd�}|�||�tj��tdddtd�}|�||�tj��dS)Nr�r"rrI)rr�r*rrr�r�rrr �test_mixed_compare_regular�sz6TestLocalTimeDisambiguation.test_mixed_compare_regularcCs<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�r#rr"r�r�rr�rrr�r�)r+�t_foldZ
t_fold_utcrrr �test_mixed_compare_fold�sz3TestLocalTimeDisambiguation.test_mixed_compare_foldcCs<tdddddtd�}|�tj�}|�||�|�||�dS)Nr�rGrDrEr�rr')r+�t_gapZ	t_gap_utcrrr �test_mixed_compare_gap�sz2TestLocalTimeDisambiguation.test_mixed_compare_gapcCs�tdddtd�}|�t|�t|jdd���tdddddtd�}tdd	d
ddtd�}|�t|�t|jdd���|�t|�t|jdd���dS)Nr�r"rr�r�r#rr�rGrDrE)rr�r*r&r�)r+r�r(r*rrr �test_hash_aware�sz+TestLocalTimeDisambiguation.test_hash_awareN)r9rLrMrrrrr7r�rrr1r�rrrr"r	r#r�r�r�r�r&r)r+r,rrrr r�s6



	


!rcCs"t�|�\}}t|d�t||�Sr[)r��tee�nextr�)�iterablerrrrr �pairss
r0c@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+r2r3rrr rZs	zZoneInfo.__init__cCs�td|�td|�f}|r�|ddt}|dd|7<|dd|7<tdt|��D]H}|d|||ddt7<|d|||dt7<q^|S)Nrwrr")r�SECrr')r2r3rrYr	rrr r4s$"zZoneInfo.invertc	CsH|�d���dkrtd��|�d�td�}|�|d�tjdkrJ|��td�}|�||d�tjdkrt|��td	�}|�||d�g}t	|d
�D]}|�
t�d|�d���q�|�|d
�}t
|�D]:\}\}}	}
||
|�d|
����}td|�|	|f||<q�dgt|�}t
|�D]\}}
||
||<�q"|||�}|S)NrGZTZifznot a zoneinfo filernr	rArrr�r"z>lbbrIrE)�read�decoder��seekr�fromfiler7�	byteorderZbyteswaprr��structZunpackr%�findrr')r2ZfileobjZcountsr2Ztype_indicesZttisr	ZabbrsZgmtoff�isdstZabbrind�abbrr3�idxr+rrr r9$s2



zZoneInfo.fromfilecCsHtj�|j|�}t|d��}|�|�Wd�S1s:0YdS)N�rb)�os�path�join�zoneroot�openr9)r2r5rBr�rrr �fromnameIszZoneInfo.fromnamer)r"cCst|t�std��|j|ur$td��|��|jd|jd|jd|j	}||j
dkrn|jd}d}n�t�
|j
|�}|j
|d|ks�J�|t|j
�ks�||j
|ks�J�|j|d|�\}}|d|d}|td||j
|d�k}||d7}|�r|jdd	�S|Sd
S)r�r�r�r�rr�r"rrEr�N)rSrrprr�r��EPOCHORDINALr�rpror2r3�bisect�bisect_rightr'rr�)r+r`rQZttir�r?Ztti_prev�shiftrrr r�Qs0

���
 zZoneInfo.fromutccCs\|��|jd|jd|jd|j}|j|j}t�||�}|j	t
d|d�|S)Nr�rr�rr")r�rGr�rprorr�rHrIr3rs)r+r`r	rQrr?rrr �_find_tios���zZoneInfo._find_ticCs|�|d�Sr��rKr_rrr rayszZoneInfo.utcoffsetcCs|�|d�}|rtStSrH)rKr�r�)r+r`r=rrr rc|szZoneInfo.dstcCs|�|d�S)NrErLr_rrr rb�szZoneInfo.tznameNccs�|dur|j}tj�|d�}zt|�}Wnty<YdS0|�>|D](}|��}|rH|�d�sH|��dVqHWd�n1s�0YdS)Nzzone.tab�#rE)	rDrArBrCrEr��stripr3r�)r2ZzonedirZzone_tabr��linerrr �	zonenames�szZoneInfo.zonenamescCs�d}}}}tj}}t}}	tj}
}d}}
tj}}d}}t|dd�}|��D]�}|d7}|�|�}|��D]�\}}||kr�qx|tkr�|d7}||f||fkr�|}|}
|}|tj|f|tj|
fkr�|}|}|}
qx|tk�rB|d7}|}||f|	|fk�r|}	|}|}|tj|f|tj|fk�rJ|}|}|}qx|d7}qxqZ|||f}td|�tdt	|�f|�td||
|f�td|||
f�td|||f�td|	||f�dS)	Nrr"zNumber of zones:       %5dz@Number of transitions: %5d = %d (gaps) + %d (folds) + %d (zeros)z!Min gap:         %16s at %s in %sz!Max gap:         %16s at %s in %sz!Min fold:        %16s at %s in %sz!Max fold:        %16s at %s in %s)
rrsr�rr�rPrF�transitions�printrV)r2�
start_year�countZ	gap_countZ
fold_countZzeros_countZmin_gapZmin_foldZmax_gapZmax_foldZmin_gap_datetimeZmax_gap_datetimeZmin_gap_zoneZmax_gap_zoneZmin_fold_datetimeZmax_fold_datetimeZ
min_fold_zoneZ
max_fold_zoneZstats_since�zonenamer�r`rJZtrans_countsrrr �stats�sZ





�zZoneInfo.statsccsHtt|j|j��D]0\\}}\}}|d|d}t�|�|fVqdSr�)r0r�r2r3rr��r+�_Zprev_tir�r3rJrrr rQ�s"zZoneInfo.transitionsccsntt|j|j��D]V\\}}\}}|d|d}|tkr|d|dkrt�|�||d|dfVqdS)zLFind all folds with the same value of isdst on both sides of the transition.rr"rEN)r0r�r2r3r�rr�rWrrr �nondst_folds�s"zZoneInfo.nondst_foldsFc

Csnd}|��D]\}|�|�}|��D]D\}}}}	|j|ks"|rF||	krFq"|d7}td||||||	f�q"qdS)Nrr"z%3d) %-30s %s %10s %5s -> %s)rPrFrYr�rR)
r2Z	same_abbrrSrTrUr�r`rJZ	prev_abbrr>rrr �print_all_nondst_folds�s
�zZoneInfo.print_all_nondst_foldsccs*|��D]\}}|tkr||fVqdSr[�rQr��r+r�rJrrr �folds�szZoneInfo.foldsccs(|��D]\}}|tkr||fVqdSr[r[r\rrr �gaps�sz
ZoneInfo.gapsccs |��D]\}}|s|VqdSr[)rQr\rrr �zeros�szZoneInfo.zeros)N)r")Fr")r9rLrMrDrZrXr4�classmethodr9rFrr�rGr�rKrarcrbrPrVrQrYrZr]r^r_rrrr r1	s2


$

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



zZoneInfoTest.setUpcCs<|�|jdd�|jt|j�f|jdd�|jt|j�f�dS)Nr)r*r�r��idr)r+rrrrr �assertEquivDatetimes�s�z!ZoneInfoTest.assertEquivDatetimesc	Cs�|j}|��D]�\}}d|d||tjfD]�}||}|�|j|d��}|�|jd�|jtj	d��
|�}|�||�|��}|�|jdd�||�|�|�
tj	�|jtj	d��q.tj|fD]0}||}|j|d�}|�|�}|�|jd�q�qdS)Nrr�rr")
r�r]rr?r�r�r*r�rr�rrera�	r+r�r`rJr�udtr�Zadtrarrr �
test_foldss$�
zZoneInfoTest.test_foldsc	Cs.|j}|��D�]\}}d|d||tjfD]�}||}|j|d�}|�|�}|�|jd�|jtj	d��
|�}|�||�|��}|�|jdd�|jdd�|�|�|j|d��||}|�
|jdd���|jdd���d|�q0tj|fD],}||}|�|j|d��}|�|jd�q�qdS)Nrr�rr"r�zAt %s.)r�r^rr?r�r�r*r�rr�rreraZ
assertLessrfrrr �	test_gapss(
 �zZoneInfoTest.test_gapsc	Cs�d|jvs|j�d�r&|�d|j�|j}tj�d�}|jtjd<�z4t��|�	�D]�\}}|j
dkrp�qR|tddd�t}|t}dd	d
d|d|d|d
fD]J}||}t�
|�}	t�
||�jdd�}
|�|	|
�|	��}|�||�q�|dkrXt�
|�|d}|��}
|jdd���}|�|
||d�|�|||d�qXW|du�rhtjd=n
|tjd<t��n(|du�r�tjd=n
|tjd<t��0dS)NZRiyadh8zright/zSkipping %s�TZi�r)r"i���i��r�ri@i�2rrEr�)rUr3r:r�rA�environ�getr��tzsetrQr�rr5r�r�rerQr*)r+r�rjrgrJr r�rr=ZsdtZtzdtr!r`Zts0Zts1rrr �test_system_transitions-sJ

�
�




�


z$ZoneInfoTest.test_system_transitionsN)	r9rLrMrUr�rerhrirnrrrr ra�s
racseZdZ�fdd�Z�ZS)�ZoneInfoCompleteTestcshg}td�rXt��D]B}td|tfi�}||_t|�D]}|�d�r8|�||��q8qt	��
|�dS)NZtzdatazZoneInfoTest[%s]Ztest_)r
r1rPrrarUr-r3r��superrZ)r+rdr5ZTest�method�r8rr rZ[s
zZoneInfoCompleteTest.__init__)r9rLrMrZ�
__classcell__rrrrr roZsroc@seZdZdZdS)�IranTestzAsia/TehranN)r9rLrMrUrrrr rtgsrtc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�CapiTestcCs$|jj�d�r|�d�t��dS)NZPurezNot relevant in pure Python)r8r9r4r:�	_testcapiZtest_datetime_capir]rrr r�ls
zCapiTest.setUpc	CsRdD]H}t�|�}|j|d��|�|tj�Wd�q1sB0YqdS)N�TF)�	use_macro)rvZget_timezone_utc_capir�r~rr�)r+rxZcapi_utcrrr �
test_utc_capius
zCapiTest.test_utc_capic
	Cs�t��\}}}ttdd�d�}ttdd��}d||fd||fd||fg}|D]�\}}}	|j|d���|�||	�tdd	d
|d�}
tdd	d
|	d�}|�|
|�|�|
��|���tdd	d
dtjd�}|�|
�	tj�|�Wd�qL1s�0YqLdS)
Nr�r�r��est_capi�	est_macro�est_macro_nn)r5r�rErGrrB)
rvZmake_timezones_capirrr�r*rrbr�r)
r+rzr{r|Z	exp_namedZexp_unnamed�casesr5Ztz_actZtz_exprqr�rrrr �test_timezones_capi|s �zCapiTest.test_timezones_capic
Cs�Gdd�dt�}t|fD]~}dD]t}||�}|j||d��Jt�|�\}}}|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z=CapiTest.test_PyDateTime_DELTA_GET.<locals>.TimeDeltaSubclassNr\rrrr �TimeDeltaSubclass�sr)�r��7韆r��r2r)rr�rvZPyDateTime_DELTA_GETr*r�r�r�)r+r�klassr�r(r�r�r�rrr �test_PyDateTime_DELTA_GET�sz"CapiTest.test_PyDateTime_DELTA_GETc
Cs�Gdd�dt�}t|fD]~}dD]t}||�}|j||d��Jt�|�\}}}|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z2CapiTest.test_PyDateTime_GET.<locals>.DateSubclassNr\rrrr r]�sr]))r�r"rE)r8rEr�r�)rr�rvZPyDateTime_GETr*r�r�rF)r+r]r�r�r(r�r�rFrrr �test_PyDateTime_GET�szCapiTest.test_PyDateTime_GETc	
Cs�Gdd�dt�}t|fD]�}dD]�}||�}|j||d��Zt�|�\}}}}|�||j�|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z;CapiTest.test_PyDateTime_DATE_GET.<locals>.DateTimeSubclassNr\rrrr ri�sri)���rzr�r�r�r�r�r�r�)	rr�rvZPyDateTime_DATE_GETr*r�rpror�)	r+rir�r�r(r�rpror�rrr �test_PyDateTime_DATE_GET�sz!CapiTest.test_PyDateTime_DATE_GETc	
Cs�Gdd�dt�}t|fD]�}dD]�}||�}|j||d��Zt�|�\}}}}|�||j�|�||j�|�||j�|�||j�Wd�q 1s�0Yq qdS)Nc@seZdZdS)z7CapiTest.test_PyDateTime_TIME_GET.<locals>.TimeSubclassNr\rrrr rB�srB)�r�rjr�r#r�r�)	rr�rvZPyDateTime_TIME_GETr*r�rpror�)	r+rBr�r�r(r�rpror�rrr �test_PyDateTime_TIME_GET�sz!CapiTest.test_PyDateTime_TIME_GETcCst��\}}}|jdd��|�|tj�Wd�n1s>0Y|jdd��|�|tj�Wd�n1sx0Y|jdd��z|�|tj�ttdd�d�}|�||�t	dd	d
|d�}t	dd	d
|d�}|�||�|�|�
�|�
��Wd�n1�s0YdS)N�utc0)Ztestname�utc1�non_utcrr�r�r�rErGr)rvZget_timezones_offset_zeror�r~rr�r�rr*rrb)r+r�r�r�Znon_utc_exprqr�rrr �test_timezones_offset_zero�s,,z#CapiTest.test_timezones_offset_zeroc	
CsGdd�dt�}tddd�}|ddd�}tddd�}tj}|�||��|�||��|�||��|�||d��|�||d��|�||d��t�t�ddtd�t	j
tdd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z.CapiTest.test_check_date.<locals>.DateSubclassNr\rrrr r]�sr]��r"T�
2011-01-01r�rrw��arg�exact)
rrrvZdatetime_check_daterwr�r�r�rrr�rr�)	r+r]r(Zdsr`Zis_dater�r�r�rrr �test_check_date�s$�zCapiTest.test_check_datec
Cs�Gdd�dt�}tdd�}|dd�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtd�tj	t
ddd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z.CapiTest.test_check_time.<locals>.TimeSubclassNr\rrrr rBsrBr�rjTr"r�r�rwr�)rrvZdatetime_check_timerwr�r�r�rrr�rr�)r+rBr�r�Zis_timer�r�r�rrr �test_check_times

�zCapiTest.test_check_timec
Cs�Gdd�dt�}tddddd�}|ddddd�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtd�tj	t
ddd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNr\rrrr risrir�r"r�rjTr�rwr�)rrvZdatetime_check_datetimerwr�r�r�rrr�rr�)r+rir`rZis_datetimer�r�r�rrr �test_check_datetimes�zCapiTest.test_check_datetimec
Cs�Gdd�dt�}td�}|d�}tj}|�||��|�||��|�||d��|�||d��t�t�ddtjt	ddd�t
ddd�g}|D]L}dD]B}|j||d�� |�|||��Wd�q�1s�0Yq�q�dS)	Nc@seZdZdS)z4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNr\rrrr r8srr"Tr�r�rwr�)rrvZdatetime_check_deltarwr�r�r�rr�rrr�)r+rr�ZtdsZis_timedeltar�r�r�rrr �test_check_delta7s�zCapiTest.test_check_deltac	
CsGdd�dt�}t�}|�}ttdd��}tj}|�||��|�||��|�||��|�||d��|�||d��|�||d��t�t�ddt	ddd�t
ddd�g}|D]L}d	D]B}|j||d
�� |�|||��Wd�q�1s�0Yq�q�dS)Nc@seZdZdS)z2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNr\rrrr �TZInfoSubclassRsr�r�r�Tr"r�r�rwr�)rrrrvZdatetime_check_tzinforwr�r�r�rrr�)	r+r�r�Ztzisr�Z	is_tzinfor�r�r�rrr �test_check_tzinfoQs$�zCapiTest.test_check_tzinfoc	Cshtddd�}dD]R}|j|d��2t�||j|j|j�}|�||�Wd�q1sX0YqdS)Nr�rzr��FT��macro)rr�rvZget_date_fromdater�r�rFr*�r+�exp_dater��
c_api_daterrr �test_date_from_datens�zCapiTest.test_date_from_datecCs�tddddddd�}dD]b}|j|d	��Bt�||j|j|j|j|j|j	|j
�}|�||�Wd�q1sp0YqdS)
Nr�rzr�r�r�r�r�r�r�)rr�rvZget_datetime_fromdateandtimer�r�rFr�rpror�r*r�rrr �test_datetime_from_dateandtime{s�
z'CapiTest.test_datetime_from_dateandtimecCs�tddddddd�}dD]�}d	D]x}|j||d
��Vt�||j|j|j|j|j|j	|j
|j�	}|�||�|�|j|j�Wd�q 1s�0Yq qdS)Nr�rzr�r�r�r�r��rr"r��r�r�)
rr�rvZ#get_datetime_fromdateandtimeandfoldr�r�rFr�rpror�r�r*)r+r�r�r�r�rrr �%test_datetime_from_dateandtimeandfold�s"�z.CapiTest.test_datetime_from_dateandtimeandfoldc	Csntdddd�}dD]V}|j|d��6t�||j|j|j|j�}|�||�Wd�q1s^0YqdS)Nr�r�r�r�r�r�)	rr�rvZget_time_fromtimer�rpror�r*)r+�exp_timer��
c_api_timerrr �test_time_from_time�s�zCapiTest.test_time_from_timecCs�tdddd�}dD]v}dD]l}|j||d��Jt�||j|j|j|j|j�}|�	||�|�	|j|j�Wd�q1s|0YqqdS)Nr�r�r�r�r�r�r�)
rr�rvZget_time_fromtimeandfoldr�rpror�r�r*)r+r�r�r�r�rrr �test_time_from_timeandfold�s�z#CapiTest.test_time_from_timeandfoldc	Cshtddd�}dD]R}|j|d��2t�||j|j|j�}|�||�Wd�q1sX0YqdS)Nr�r�r�r�r�)rr�rvZget_delta_fromdsur�r�r�r*)r+Z	exp_deltar�Zc_api_deltarrr �test_delta_from_dsu�s�zCapiTest.test_delta_from_dsuc	Csntddd���}dD]T}|j|d��4t�t|�|�}|�|tddd��Wd�q1s^0YqdS)N��rGr�r�r�)rrQr�rvZget_date_fromtimestamprTr*r)r+r�r�r(rrr �test_date_from_timestamp�s
z!CapiTest.test_date_from_timestampc
Cs�dddttdd��dfddd	ttdd��dfg}tj}|D]z}d
D]p}|j||d��N|\}}}t|d|i�}t|���}	||	|||�}
|�||
�Wd�qB1s�0YqBq:dS)
N)�r�rGr�NF)r�NTr�r"r�T)�r�rGr�r�rjNF)r�NTr�r�)�caser�r)	rrrvZget_datetime_fromtimestampr�rrTrQr*)r+r}r�r�r�ZdtuprZusetzZdt_origr�rirrr �test_datetime_from_timestamp�s �	
z%CapiTest.test_datetime_from_timestampN)r9rLrMr�ryr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr ruks*	

	rucCs|�t��|Sr[)ZaddTestro)�loaderZstandard_tests�patternrrr �
load_tests�sr��__main__)mr�rpr�rHr�r�r7rArrhr-r;r2r�operatorrrrrrrr	r
r�testrZtest.supportr
rrrrr)rrrrrrrr�rvr�r�Z_loadsrrr�r�r'r0r}rIrZTestCaser'rNrdrgrjr�r�r�r�r�r�r�r�r4r6r7rHrmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr5r0r1raZ	TestSuiterortrur�r9�mainrrrr �<module>s�,�8_A3=!a"<


*c"32
gk