Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/datetimetester.cpython-311.pyc
�

�Ke����dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddl Z!ddl m"Z"m#Z#ddl m$Z$dd	l m%Z%dd
l m&Z&ddl m'Z'ddl m(Z(dd
l m)Z)m Z ddl&Z*	ddl+Z+n
#e,$rdZ+YnwxYwddl-Z-e	j.e	j/hZ0d�e1e	j2dz��D��Z3e4e3��e	j2dzksJ�dddigdfZ5e6d��Z7e6d��Z8Gd�de
j9��Z:Gd�de%��Z;Gd�de;��Z<Gd�de<��Z=Gd�de%��Z>Gd �d!e
j9��Z?Gd"�d#e
j9��Z@Gd$�d%��ZAGd&�d'eAe
j9��ZBGd(�d)e
j9��ZCGd*�d+e)��ZDGd,�d-eAe
j9��ZEGd.�d/e ��ZFGd0�d1eE��ZGGd2�d3eG��ZHGd4�d5e&��ZIGd6�d7eAe
j9��ZJGd8�d9��ZKGd:�d;eJeKe
j9��ZLGd<�d=eGeKe
j9��ZMd>�ZNe$d��ZOe$d�?��ZPe$d�@��ZQe$d�A��ZRe ddBddC��ZSe dddDd��ZTGdE�dFe%��ZUeUdGdHdIdJ��ZVeUdKdLdMdN��ZWeUdOdPdQdR��ZXeUdSdTdUdV��ZYe;ddWd��ZZe;dXdYd��Z[GdZ�d[e
j9��Z\Gd\�d]e
j9��Z]Gd^�d_e%��Z^Gd`�dae^��Z_e_dGdbdIdJ��Z`e_dKdcdMdN��Zae_dOdddQdR��Zbe_dSdedUdV��ZcGdf�dge%��ZdGdh�die
j9��Zee$dd��Zfdj�ZgGdk�dle%��ZhGdm�dne
j9��ZiGdo�dpe
jj��ZkGdq�drei��Zle
jme+duds��Gdt�due
j9����Zndv�Zoepdwkre
jq��dSdS)xzUTest date/time type.

See https://www.zope.dev/Members/fdrake/DateTimeWiki/TestCases
�N)�array)	�lt�le�gt�ge�eq�ne�truediv�floordiv�mod)�support)�is_resource_enabled�	ALWAYS_EQ�LARGEST�SMALLEST)�MINYEAR�MAXYEAR��	timedelta��tzinfo)�time��timezone)�UTC)�date�datetimec�,�g|]}tt|f��S�)�pickle)�.0�protos  �=/usr/local/apps/python3/lib/python3.11/test/datetimetester.py�
<listcomp>r$/s5��C�C�C���6�5�)�C�C�C���
g@A@�abcr�inf�nanc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�
TestModulec��t}|�|jd��|�|jd��dS)Nr&�')�datetime_module�assertEqualrr)�selfrs  r#�test_constantszTestModule.test_constantsBs?��"������)�1�-�-�-�����)�4�0�0�0�0�0r%c�P�|�ttj��dS�N)�assertIsrr�utc�r1s r#�test_utc_aliaszTestModule.test_utc_aliasGs���
�
�c�8�<�(�(�(�(�(r%c�x�tt��}tjD]}|�||���dS)z2Test that __all__ only points to valid attributes.N)�dirr/�__all__�assertIn)r1�	all_attrs�attrs   r#�test_allzTestModule.test_allJsB����(�(�	�#�+�	+�	+�D��M�M�$�	�*�*�*�*�	+�	+r%c��d|jjvr|�d��t}t	d�t|��D����}t	gd���}|�||z
t	g����dS)N�_Purez"Only run for Fast C implementationc3�nK�|]0}|�d���|�d���,|V��1dS)�__N)�
startswith�endswith)r!�names  r#�	<genexpr>z/TestModule.test_name_cleanup.<locals>.<genexpr>Usd����N�N�T��?�?�4�0�0�N�9=���t�9L�9L�N�D�N�N�N�N�N�Nr%)rrrr�
datetime_CAPIrrrrr�sys)�	__class__�__name__�skipTestr/�setr:r0)r1r�names�alloweds    r#�test_name_cleanupzTestModule.test_name_cleanupPs����d�n�-�-�-��M�M�>�?�?�?�"���N�N�S��]�]�N�N�N�N�N���/�/�/�0�0��	
������#�b�'�'�2�2�2�2�2r%c���d|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'��������)rJrKrLr/�_divide_and_roundr0)r1�dars  r#�test_divide_and_roundz TestModule.test_divide_and_round\s����d�n�-�-�-��M�M�C�D�D�D��/�������S�"���q�)�)�)������Q����R�(�(�(�	
�����Q����A�&�&�&������R����R�(�(�(������Q����R�(�(�(������R����a�(�(�(�	
�����R����Q�'�'�'������S�!���b�)�)�)������R����b�)�)�)������S�"���q�)�)�)������Q����A�&�&�&������R����R�(�(�(������Q����R�(�(�(������R����a�(�(�(�(�(r%N)rK�
__module__�__qualname__r2r8r?rPrarr%r#r,r,@s_������1�1�1�
)�)�)�+�+�+�
3�
3�
3�)�)�)�)�)r%r,c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�FixedOffset�*c���t|t��rt|���}t|t��rt|���}||_||_||_dS�N��minutes)�
isinstance�intr�_FixedOffset__offset�_FixedOffset__name�_FixedOffset__dstoffset�r1�offsetrF�	dstoffsets    r#�__init__zFixedOffset.__init__}sb���f�c�"�"�	/��v�.�.�.�F��i��%�%�	5�!�)�4�4�4�I���
����$����r%c�4�|j���Sr4)rn�lowerr7s r#�__repr__zFixedOffset.__repr__�s���{� � �"�"�"r%c��|jSr4)rm�r1�dts  r#�	utcoffsetzFixedOffset.utcoffset��
���}�r%c��|jSr4)rnrxs  r#�tznamezFixedOffset.tzname�s
���{�r%c��|jSr4)rorxs  r#�dstzFixedOffset.dst�s����r%N�rf)rKrbrcrsrvrzr}rrr%r#rere{sd������%�%�%�%�#�#�#������� � � � � r%rec��eZdZdd�ZdS)�PicklableFixedOffsetNc�@�t�||||��dSr4)rersrps    r#rszPicklableFixedOffset.__init__�s"�����T�6�4��;�;�;�;�;r%)NNN�rKrbrcrsrr%r#r�r��s(������<�<�<�<�<�<r%r�c��eZdZdZdS)�PicklableFixedOffsetWithSlots)rmrn�spamN)rKrbrc�	__slots__rr%r#r�r��s������D�I�I�Ir%r�c��eZdZd�ZdS)�_TZInfoc�(�tj��Sr4)�random)r1r/s  r#rzz_TZInfo.utcoffset�s���}���r%N�rKrbrcrzrr%r#r�r��s#����������r%r�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�
TestTZInfoc
���t��}tddddddd|��}|�t��5|���ddd��dS#1swxYwYdS)N��rX��� rUr)r�r�assertRaises�	TypeErrorrz)r1�tz1�dt1s   r#�test_refcnt_crash_bug_22044z&TestTZInfo.test_refcnt_crash_bug_22044�s����i�i���t�Q��B��A�q�#�6�6��
�
�
�y�
)�
)�	�	��M�M�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A!�!A%�(A%c��t��}tj}|�t|j|��|�t|j|��|�t|j|��dSr4)rr�maxr��NotImplementedErrorr}rzr)r1�uselessrys   r#�test_non_abstractnessz TestTZInfo.test_non_abstractness�sl���(�(��
�\�����-�w�~�r�B�B�B����-�w�/@�"�E�E�E����-�w�{�B�?�?�?�?�?r%c��Gd�dt��}|�t|t����|dd��}|�|t��t	j��}|�t|j|��|�t|j	|��|�t|j
|��dS)Nc��eZdZd�ZdS)�9TestTZInfo.test_subclass_must_override.<locals>.NotEnoughc�"�||_||_dSr4)�_NotEnough__offset�_NotEnough__name)r1rqrFs   r#rszBTestTZInfo.test_subclass_must_override.<locals>.NotEnough.__init__�s�� &��
�"����r%Nr�rr%r#�	NotEnoughr��s#������
#�
#�
#�
#�
#r%r�rU�NotByALongShot)r�
assertTrue�
issubclass�assertIsInstancer�nowr�r�r}rzr)r1r�r	rys    r#�test_subclass_must_overridez&TestTZInfo.test_subclass_must_override�s���	#�	#�	#�	#�	#��	#�	#�	#�	
���
�9�f�5�5�6�6�6�
�Y�q�*�
+�
+�����b�&�)�)�)�
�\�^�^�����-�r�y�"�=�=�=����-�r�|�R�@�@�@����-�r�v�r�:�:�:�:�:r%c��tdd��}|�|t��tj��dfD]�}|�|�|��td�����|�|�|��d��|�|�	|��td�������dS)NrU�Threerirf)
rer�rrr�r0rzrr}r)r1�forys   r#�test_normalzTestTZInfo.test_normal�s���
��G�
$�
$�����b�&�)�)�)��,�.�.�$�&�	@�	@�B����R�\�\�"�-�-�y��/C�/C�/C�D�D�D����R�Y�Y�r�]�]�G�4�4�4����R�V�V�B�Z�Z��2�)>�)>�)>�?�?�?�?�	@�	@r%c�J�tjt��}|�t|��t��tD]Y\}}}|�||��}|�|��}|�t|��t���ZdSr4)r�__new__r5�type�pickle_choices�dumps�loads)r1�orig�pickler�	unpicklerr"�green�deriveds       r#�test_pickling_basezTestTZInfo.test_pickling_base�s����~�f�%�%���
�
�d�4�j�j�&�)�)�)�)7�	1�	1�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G��M�M�$�w�-�-��0�0�0�0�	1�	1r%c��td���}t|dfft|dfft|fft|dfffD�]�\}}||�}|�d��}|�|t��|�t|��|��|�	|�
d��|��|�	|�d��|��tD]�\}}}|�||��}	|�
|	��}
|�|
t��|�t|
��|��|�	|
�
d��|��|�	|
�d��|��|�t|
d��������dS)N����ri�cookie�ESTr�)rr�r�rr}r�rr5r�r0rzr�r�r��assertFalse�hasattr)r1rq�otype�argsr��onamer�r�r"r�r�s           r#�test_pickling_subclassz!TestTZInfo.test_pickling_subclass�s����4�(�(�(��
!�F�H�#5�6�
*�V�X�,>�?�
��y�!�
����'�	)�	;�	;�K�E�4�
�5�$�<�D��K�K��%�%�E��!�!�$��/�/�/��M�M�$�t�*�*�e�,�,�,����T�^�^�D�1�1�6�:�:�:����T�[�[��.�.��6�6�6�-;�
;�
;�)���E��
�
�d�E�2�2��#�/�/�%�0�0���%�%�g�v�6�6�6��
�
�d�7�m�m�U�3�3�3�� � ��!2�!2�4�!8�!8�&�A�A�A�� � �����!5�!5�u�=�=�=�� � ���&�!9�!9�:�:�:�:�
;�	;�	;r%c����td���x��G��fd�dt��}|��}tddddd|�	��}|�|��}|�||���z
|��dS)
Nr&��hoursc�.��eZdZdZ�fd�Z�fd�Zd�ZdS)�0TestTZInfo.test_issue23600.<locals>.UKSummerTimez~Simple time zone which pretends to always be in summer time, since
                that's what shows the failure.
            c����Sr4r)r1ry�	DSTOFFSETs  �r#rzz:TestTZInfo.test_issue23600.<locals>.UKSummerTime.utcoffset�s	��� � r%c����Sr4r)r1ry�DSTDIFFs  �r#rz4TestTZInfo.test_issue23600.<locals>.UKSummerTime.dst�s����r%c��dS)N�UKSummerTimerrxs  r#r}z7TestTZInfo.test_issue23600.<locals>.UKSummerTime.tzname�s��%�~r%N)rKrbrc�__doc__rzrr})r�r�s��r#r�r��s`�������
�
�
!�
!�
!�
!�
!�
�
�
�
�
�
&�
&�
&�
&�
&r%r�r�r[��r)rrr�fromutcr0rz)r1r��tz�u�tr�r�s     @@r#�test_issue23600zTestTZInfo.test_issue23600�s�����'�a�0�0�0�0��)�	&�	&�	&�	&�	&�	&�	&�	&�6�	&�	&�	&��\�^�^���T�1�b�"�a��3�3�3���J�J�q�M�M������Q�[�[�]�]�*�A�.�.�.�.�.r%N)
rKrbrcr�r�r�r�r�r�r�rr%r#r�r��s����������@�@�@�;�;�;�@�@�@�	1�	1�	1�;�;�;�./�/�/�/�/r%r�c�t�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�ZdS)�TestTimeZonec��ttd���d��|_ttd���d��|_t	ddd��|_dS)N�#@r��ACDTrVr���r&)rrr�r�r�DTr7s r#�setUpzTestTimeZone.setUp�sT���Y�S�1�1�1�6�:�:��	��Y�Q�/�/�/�/��7�7����4��A�&�&����r%c���|j|jtjtjtjfD]8}|�t|��|�d�����9dSr4)	r�r�rr6�minr�r0�strr}�r1r�s  r#�test_strzTestTimeZone.test_strs\���9�d�h����<���/�	7�	7�B����S��W�W�b�i�i��o�o�6�6�6�6�	7�	7r%c���t}|j|jtjtjtjfD]4}t|��}|�|t|�����5dSr4)
r/r�r�rr6r�r��reprr0�eval)r1rr��tzreps    r#�	test_reprzTestTimeZone.test_reprsd��"���9�d�h����<���/�	.�	.�B���H�H�E����R��e���-�-�-�-�		.�	.r%c�f�tdd���}|�tj�d��t
��|�tj�d��|��|�tj�d��|��dS)N��;�r�rj)rr0rr6rz�ZEROr�r�)r1�limits  r#�test_class_memberszTestTimeZone.test_class_memberss�����B�/�/�/�������/�/��5�5�t�<�<�<������/�/��5�5��v�>�>�>������/�/��5�5�u�=�=�=�=�=r%c��|�tjttd������|�tjttd��d����|�tjttd��d����td���td���fD]K}t|��}|�|�d��td���zd���Ltdd��td��fD]E}|�tt|��|�tt|���F|�t��5td��ddd��n#1swxYwY|�t��5td��ddd��n#1swxYwY|�t��5ttd��ddd��n#1swxYwY|�t��5ttd��ddd��n#1swxYwY|�t��5ttdd	��ddd��dS#1swxYwYdS)
Nrrr&��microseconds��secondsrirf�ABC�extra)r5rr6r�assertIsNotr0�assertNotEqualrzr��
ValueErrorr�r�)r1�	subminuter��invalids    r#�test_constructorzTestTimeZone.test_constructors����
�
�h�l�H�Y�q�\�\�$:�$:�;�;�;������x�	�!���e�'D�'D�E�E�E������x�	�!���e�'D�'D�E�E�E�#��3�3�3�Y�q�5I�5I�5I�J�	N�	N�I��)�$�$�B�������T� 2� 2�Y�q�5I�5I�5I� I�1�M�M�M�M�!�!�Q����1���6�	>�	>�G����j�(�G�<�<�<����j�(�W�H�=�=�=�=�
�
�
�y�
)�
)�9�9�8�D�>�>�>�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9�
�
�
�y�
)�
)�7�7�8�B�<�<�<�7�7�7�7�7�7�7�7�7�7�7����7�7�7�7�
�
�
�y�
)�
)�?�?�8�D�$�+?�+?�+?�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?�
�
�
�y�
)�
)�=�=�8�D�"�+=�+=�+=�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�
�
�
�y�
)�
)�I�I�8�D�%��+I�+I�+I�I�I�I�I�I�I�I�I�I�I�I�I����I�I�I�I�I�IsZ�F8�8F<�?F<�G9�9G=�G=�I�I�I�%J�J�J�,K�K�Kc��|�tjt��|�|jt��dSr4)r�rr6rr�r7s r#�test_inheritancezTestTimeZone.test_inheritance's8�����h�l�F�3�3�3����d�h��/�/�/�/�/r%c�@�|j}dD]z}|tz}|�|t|���|����|�|t|���|�����{|�t��5|j�d��ddd��n#1swxYwY|�t��5|j�d��ddd��dS#1swxYwYdS)N)rg�?r��rV)r��HOURr0rrzr�r�r�)r1�dummy�hrqs    r#�test_utcoffsetzTestTimeZone.test_utcoffset+sC������	J�	J�A���X�F����V�X�f�%5�%5�%?�%?��%F�%F�G�G�G����f�W�h��w�&7�&7�&A�&A�%�&H�&H�I�I�I�I�
�
�
�y�
)�
)�A�A�4�8�+=�+=�b�+A�+A�+A�A�A�A�A�A�A�A�A�A�A�A����A�A�A�A�
�
�
�y�
)�
)�@�@�4�8�+=�+=�a�+@�+@�+@�@�@�@�@�@�@�@�@�@�@�@�@����@�@�@�@�@�@s$�C�C
�
C
�+D�D�Dc��|�tj�|j����|�t��5|j�d��ddd��n#1swxYwY|�t��5|j�d��ddd��dS#1swxYwYdS)NrrV)�assertIsNonerr6rr�r�r�r�r7s r#�test_dstzTestTimeZone.test_dst6s������(�,�*�*�4�7�3�3�4�4�4�
�
�
�y�
)�
)�;�;�4�8�<�<��+;�+;�+;�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�
�
�
�y�
)�
)�:�:�4�8�<�<��?�?�?�:�:�:�:�:�:�:�:�:�:�:�:����:�:�:�:�:�:s$�A9�9A=�A=�C�C
�
C
c
��|�dtj�d����|�dt	jd����|�dtt
���d����|�dtdtz���d����|�dtdtz���d����|�dttd������d����|�d	tdtzd	���d����|�d
tt
d
���d����|�dttdd
�����d����|�dttdd
�����d����|�dttdd
d�����d����|�dttdd
d�����d����|�t��5|j
�d��ddd��n#1swxYwY|�t��5|j
�d��ddd��dS#1swxYwYdS)Nrz	UTC-05:00���z	UTC+09:30r�z	UTC-00:01���ri�XYZ��zUTC+01:06:40r�zUTC-01:06:40zUTC+01:06:40.000001r&zUTC-01:06:40.000001rrV)r0rr6r}rr�rrr�r�r�r7s r#�test_tznamezTestTimeZone.test_tzname<s,�������� 3� 3�D� 9� 9�:�:�:������
�4� 0� 0�1�1�1��������� 5� 5�d� ;� ;�<�<�<�����h�r�D�y�&9�&9�&@�&@��&F�&F�G�G�G�����h�s�T�z�&:�&:�&A�&A�$�&G�&G�H�H�H�����h�y��/D�/D�/D�&E�&E�&L�&L�T�&R�&R�S�S�S�������d��E� :� :� A� A�$� G� G�H�H�H�����8�D�(�#;�#;�#B�#B�4�#H�#H�I�I�I�	
�����)�A�t�2D�2D�)E�)E�)L�)L�T�)R�)R�S�S�S�����!�9�Q��#5�#5�"5�6�6�=�=�d�C�C�	E�	E�	E����.�!�)�A�t�Q�"7�"7�8�8�?�?��E�E�	G�	G�	G����.�!�9�Q��a�#8�#8�"8�9�9�@�@��F�F�	H�	H�	H��
�
�y�
)�
)�>�>�4�8�?�?�2�+>�+>�+>�>�>�>�>�>�>�>�>�>�>�>����>�>�>�>�
�
�
�y�
)�
)�=�=�4�8�?�?�1�+=�+=�+=�=�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�=�=s$�L'�'L+�.L+�M4�4M8�;M8c��|�t��5tj�|j��ddd��n#1swxYwY|�t��5tj�d��ddd��n#1swxYwY|j|jtfD]�}|j�
|���}|�|��}|�||z
|�|����|�||j�
tj�������dS)Nznot datetimer)
r�r�rr6r�r�r�r�r��Eastern�replacer0rz)r1r��utctime�locals    r#�test_fromutczTestTimeZone.test_fromutcSs���
�
�
�z�
*�
*�	*�	*��L� � ���)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
�
�y�
)�
)�	1�	1��L� � ��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��8�T�Y��0�	C�	C�B��g�o�o�R�o�0�0�G��J�J�w�'�'�E����U�W�_�b�l�l�5�.A�.A�B�B�B����U�!�W�_�_�H�L�_�A�A�
C�
C�
C�
C�		C�	Cs#�%A�A�A�1 B�B!�$B!c���|�tt��tt����|�tt��tt����|�tdtz��tdtzd����|�t��5tt��tt��kddd��n#1swxYwY|�tt��tt��h��|�tt��dk��|�	tt��dk��tt��}|�|tk��|�	|tk��|�|tk��|�	|tk��|�|tk��|�	|tk��|�	|tk��|�|tk��|�	|tk��|�|tk��dS)Nrr�)
r�rr�rr0r�r�r<r�r�rrrr�s  r#�test_comparisonzTestTimeZone.test_comparison_s)�����H�T�N�N�H�T�N�N�;�;�;�����$����$���8�8�8�����"�t�)�,�,�h�r�D�y�%�.H�.H�I�I�I�
�
�
�y�
)�
)�J�J�8�D�>�>�H�T�N�N�+J�+J�J�J�J�J�J�J�J�J�J�J�J����J�J�J�J��
�
�h�t�n�n�x��~�~�&6�7�7�7��������$�.�/�/�/�����$���4�/�0�0�0�
�d�^�^������i��(�(�(�����y��)�)�)�����W��%�%�%�����g��&�&�&�����g�
�&�&�&�����w��'�'�'�����h��'�'�'�����X�
�&�&�&�����x��(�(�(�����h��'�'�'�'�'s�+D�D�Dc�N�tddd��}tjtjtjfD]�}|�|�|��|�|��������|�|�|��|�|��������|�|�	|��|�|����	������dS)Nr&r)
rrr�r�r6r0r}rrzr�r1r�r�s   r#�test_aware_datetimez TestTimeZone.test_aware_datetimets���Q��1�����<���x�|�<�	9�	9�B����R�Y�Y�q�\�\��Y�Y�b�Y�1�1�8�8�:�:�
<�
<�
<����R�\�\�!�_�_��Y�Y�b�Y�1�1�;�;�=�=�
?�
?�
?����R�V�V�A�Y�Y��Y�Y�b�Y�1�1�5�5�7�7�
9�
9�
9�
9�	9�	9r%c��|j|jtjtjfD]O}t
D]E\}}}|�|�||����}|�||���F�Ptj	}t
D]E\}}}|�|�||����}|�
||���FdSr4)r�r�rr�r�r�r�r�r0r6r5)r1r�r�r�r"�tz_copys      r#�test_picklezTestTimeZone.test_pickles����)�T�X�x�|�X�\�A�	.�	.�B�-;�
.�
.�)���E�#�/�/�'�-�-��E�*B�*B�C�C��� � ��"�-�-�-�-�
.��\��)7�	'�	'�%�G�Y���o�o�g�m�m�B��&>�&>�?�?�G��M�M�'�2�&�&�&�&�	'�	'r%c��|j|jtjtjfD],}tj|��}|�||���-tj}tj|��}|�||��dSr4)	r�r�rr�r��copyr0r6r5�r1r�rs   r#�	test_copyzTestTimeZone.test_copy�sv���)�T�X�x�|�X�\�A�	*�	*�B��i��m�m�G����W�b�)�)�)�)�
�\���)�B�-�-���
�
�g�r�"�"�"�"�"r%c��|j|jtjtjfD],}tj|��}|�||���-tj}tj|��}|�	||��dSr4)
r�r�rr�r�r �deepcopyr0r6r5r!s   r#�
test_deepcopyzTestTimeZone.test_deepcopy�sz���)�T�X�x�|�X�\�A�	*�	*�B��m�B�'�'�G����W�b�)�)�)�)�
�\���-��#�#���
�
�g�r�"�"�"�"�"r%c��tdd���tddd���tdddd���g}|�d�|D����|D]@}|�d|�	��5t|��ddd��n#1swxYwY�Atd
���td
d�
��g}|�d�|D����|D]r}|�d|�	��5|�t
��5t|��ddd��n#1swxYwYddd��n#1swxYwY�sdS)Nr�r�r��r�rjr��?B�r�rjr�r�c��g|]}|��Srr�r!�deltas  r#r$z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>�s��<�<�<�u�U�F�<�<�<r%�good)�	test_typer,�r�r&)r�r�c��g|]}|��Srrr+s  r#r$z7TestTimeZone.test_offset_boundaries.<locals>.<listcomp>�s��D�D�D�5���D�D�Dr%�bad)r�extend�subTestrr�r�)r1�time_deltasr,�bad_time_deltass    r#�test_offset_boundariesz#TestTimeZone.test_offset_boundaries�s1��
�B��+�+�+��B��B�7�7�7��B��B�V�L�L�L�
��
	���<�<��<�<�<�=�=�=� �	 �	 �E�����e��<�<�
 �
 ������
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ��

�B�����B�Q�/�/�/�
��	���D�D�O�D�D�D�E�E�E�$�	$�	$�E�����U��;�;�
$�
$��&�&�z�2�2�$�$��U�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$��	$�	$sH�0B�B	�B	�3E�D*�E�*D.�.E�1D.�2E�E	�E	c���|�tjt����|�tt	d�����t����dS)Nr&r�)r�rr6rrr7s r#�test_comparison_with_tzinfoz(TestTimeZone.test_comparison_with_tzinfo�sS��	
���H�L�&�(�(�3�3�3����H�Y�Q�%7�%7�%7�8�8�&�(�(�C�C�C�C�Cr%N)rKrbrcr�r�r�r�r�rrr	rrrrrr"r%r6r8rr%r#r�r��s!������'�'�'�
7�7�7�
.�.�.�>�>�>�J�J�J�$0�0�0�A�A�A�;�;�;�>�>�>�.
C�
C�
C�(�(�(�*	9�	9�	9�'�'�'�#�#�#�#�#�#�$�$�$�2D�D�D�D�Dr%r�c��eZdZd�Zd�ZdS)�HarmlessMixedComparisonc��|�ddd��}|�|dk��|�|dk��|�d|k��|�d|k��|�|ddg|g��|�g|ddgg��|�|tk��|�|tk��|�|t
k��|�|t
k��|�|t
k��|�|t
k��|�|tk��|�|tk��|�|tk��|�|tk��dS)Nr&r�)�theclassr�r�r<rrr�r1�mes  r#�test_harmless_mixed_comparisonz6HarmlessMixedComparison.test_harmless_mixed_comparison�s���
�]�]�1�a��
#�
#������r��"�"�"�����b��!�!�!�����r��"�"�"�����b��!�!�!��
�
�b�1�b�"�b�/�*�*�*��
�
�b�2�q�"�b�/�*�*�*�	
����i��(�(�(�����y��)�)�)�	
����W��%�%�%�����g��&�&�&�����g�
�&�&�&�����w��'�'�'�����h��'�'�'�����X�
�&�&�&�����x��(�(�(�����h��'�'�'�'�'r%c���|�ddd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd	���dS)
Nr&c����dkS�Nrr�r?s�r#�<lambda>zGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�����R�"�W�r%c����dkSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�����R�2�X�r%c����dkSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�rFr%c����dkSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�rHr%c���d�kSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�rFr%c���d�kSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�rHr%c���d�kSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�rFr%c���d�kSrCrrDs�r#rEzGHarmlessMixedComparison.test_harmful_mixed_comparison.<locals>.<lambda>�rHr%)r=r�r�r>s @r#�test_harmful_mixed_comparisonz5HarmlessMixedComparison.test_harmful_mixed_comparison�s���
�]�]�1�a��
#�
#�����)�_�_�_�_�5�5�5����)�%5�%5�%5�%5�6�6�6����)�_�_�_�_�5�5�5����)�%5�%5�%5�%5�6�6�6����)�_�_�_�_�5�5�5����)�%5�%5�%5�%5�6�6�6����)�_�_�_�_�5�5�5����)�%5�%5�%5�%5�6�6�6�6�6r%N)rKrbrcr@rOrr%r#r:r:�s2������(�(�(�:7�7�7�7�7r%r:c���eZdZeZd�Zd�Zd�Zej	d���Z
d�Zd�Zd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zej	d���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!dS)�
TestTimeDeltac�*�|j}t}||��|ddddddd�����||d��|d�����||dd��|d�����||ddd��|d�����||d���|d�����||d���|d	�
����||d�
��|d�����||d���|d�����||d���|d
�����||d���|d
�����||d���|d�����||d���|d�
����||d�
��|d�����||d���|d�����||d���|d�����||d���|d�����dS)Nr)�weeks�daysr�rjr��millisecondsr�r&�rTr�r��rSrXr/r��<ri���rUg�$I�$I�?gUUUUUU�?g�?g����MbP?)r0r)r1r�tds   r#r�zTestTimeDelta.test_constructor�s���
�
��
��	��2�2�4�4���!�!�1�a��!"��4�4�4�	5�	5�	5�
��2�2�a�5�5�"�"�!�*�*�*����
��2�2�a��8�8�R�R��]�]�]�#�#�#�
��2�2�a��A�;�;����*�*�*�+�+�+�
��2�2�A�;�;�;����
�
�
�#�#�#�
��2�2�1�:�:�:�r�r��|�|�|�$�$�$�
��2�2�A�;�;�;���2����'�'�'�
��2�2�a�=�=�=�"�"�R�.�.�.�)�)�)�
��2�2�a�=�=�=�"�"�$�/�/�/�0�0�0�
��2�2�1����r�r�t�4�4�4�5�5�5�	��2�2�E�?�?�?�B�B�A�J�J�J�'�'�'�
��2�2�6�?�?�?�B�B�Q�K�K�K�(�(�(�
��2�2�F����R�R��]�]�]�+�+�+�
��2�2�f����r�r�!�}�}�}�-�-�-�
��2�2�e����b�b�a�0�0�0�1�1�1�
��2�2�5�!�!�!�2�2�1�#5�#5�#5�6�6�6�6�6r%c��|j}t}|d��}|dd��}|ddd��}|||z|z|ddd����|||z
|dd����||�|��|dd����|||d����||
|d����|||dd����|||dd	d
����|t|��|��|t|��|��||dd��|��||ddd��|��||d
z|d����||d
zd
|z��||d
zd
|z��||d
z|dd����|d
|z|dd����||d
z|dd����||d
z|ddd����|d
|z|ddd����||d
z|ddd����||dz|��||dz||z
��||dz||z��||dz|dzdz��||dzd|zdz��||dz|dd����|d|z|dd����||dz|d����||d
z|dd����||dz|ddd����||d
z|dd����||dz|ddd����||dz|d����||dz|dd����||dz|d����||d
z|dd����||dz|ddd����||d
z|dd����||dz|ddd����|d���}|d|zdzd|z��|d|zdzd|z��|dd|zzd|z��|dd|zzd|z��|d|zdzd|z��|d |zdzd|z��||d�!��d"z|d#�����||d�!��d$z|d%�����|d|zdzd|z��|d|zdzd|z��|d|zd&zd|z��|d |zd&zd|z��|d|zdzd|z��|d|zdzd|z��|d|zd'zd|z��|d|zd'zd|z��t	d(d
��D]'}|||zdz|zt|dz�����(t	d(d
��D]'}|||zdz|zt|dz�����(||d�!��d)z|d%�����||d*d	d+��|d*d	d,��z
|ddd����||d*dd��|d*dd��z
|ddd����dS)-NrXrrXrYr]iDQrZr�Q�X>�Qi��r'�FiX�'rW�r/r&i@�i��6i@���?��xr�rUrYrVrTrr�翶~�Ϛ�?�@�g�6+1��?i�S	g@g�rSg`""K?-�?�ɚ;r(�>B)r0r�__rsub__�abs�range�round)r1rr[�a�b�c�us�is        r#�test_computationszTestTimeDelta.test_computationssC��
�
��
���B�q�E�E���B�q�"�I�I���B�q�!�T�N�N��
��1�Q�3�q�5�"�"�Q��D�/�/�"�"�"�
��1�Q�3���1�l�#�#�$�$�$�
��1�:�:�a�=�=�"�"�Q��-�-�.�.�.�
��A�2�r�r�"�v�v����
��A�2�r�r�!�u�u�
�
�
�
��A�2�r�r�"�l�#�#�$�$�$�
��A�2�r�r�"�k�6�*�*�+�+�+�
��3�q�6�6�1�
�
�
�
��3��r�7�7�A����
��2�2�a��>�>�1����
��2�2�a��J����#�#�#�
��1�R�4���B������
��1�R�4��A�����
��1�R�4��A�����
��1�R�4���A�s������
��2�a�4���A�s������
��1�R�4���A�s������
��1�R�4���A�q�%���!�!�!�
��2�a�4���A�q�%���!�!�!�
��1�R�4���A�q�%���!�!�!�
��1�R�4�!�����
��1�R�4�!��A�����
��1�R�4�!��Q�B�����
��1�e�9�q��t�R�i� � � �
��1�e�9�r�!�t�R�i� � � �
��1�T�6�2�2�a��8�8����
��4��6�2�2�a��8�8����
��1�a�4���A������
��1�b�5�"�"�Q��(�(����
��1�d�7�B�B�q�!�Q�K�K� � � �
��1�b�5�"�"�Q��/�/�"�"�"�
��1�g�:�r�r�!�Q�	�*�*�+�+�+�
��1�S�5�"�"�R�&�&����
��1�S�5�"�"�Q��*�*����
��1�Q�3���1������
��1�R�4���A�q������
��1�T�6�2�2�a��A�;�;����
��1�R�4���A�x���!�!�!�
��1�W�9�b�b��A�y�)�)�*�*�*��R�Q�
�
�
��
��A�b�D�C�<��2�����
��A�b�D�C�<��2�����
��3�!�B�$�<��2�����
��3�!�B�$�<��2�����
��B�r�E�S�=�"�R�%� � � �
��B�r�E�S�=�"�R�%� � � �	��2�2�a�=�=�=�8�#�R�R�V�%<�%<�%<�=�=�=�
��2�2�a�=�=�=�9�$�b�b�f�&=�&=�&=�>�>�>�	��A�b�D�A�:�q��t����
��A�b�D�A�:�q��t����
��B�r�E�S�=�"�R�%� � � �
��B�r�E�S�=�"�R�%� � � �
��A�b�D�B�;��2�����
��A�b�D�B�;��2�����
��A�b�D�D�=�"�R�%� � � �
��A�b�D�D�=�"�R�%� � � ��s�B���	)�	)�A��B��"��Q���|�U�1�Q�3�Z�Z�(�(�(�(��s�B���	+�	+�A��B��"��R��"�}�e�A�b�D�k�k�*�*�*�*�	��2�2�a�=�=�=�M�*�B�B�F�,C�,C�,C�D�D�D�	��2�2�i���'�'�"�"�Y��v�*F�*F�F�
�2�a��A�;�;�	�	�	�
��2�2�i��A�����I�q�!�!4�!4�4�
�2�a��A�;�;�	�	�	�	�	r%c�b����td���dD]~�|�t��fd���|�t��fd���|�t��fd���|�t��fd����d�|�t��fd���|�t��fd	���|�t��fd
���|�t�fd���|�t�fd���dS)
Nrf�r&��?c�����zSr4r�rnrrs��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>d�����1��r%c�����z
Sr4rrxs��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>eryr%c�����zSr4rrxs��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>fryr%c�����z
Sr4rrxs��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>gryr%rc�����zSr4r�rn�zeros��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>ls���T�Q�Y�r%c�����zSr4rr~s��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>ms���Q�$�Y�r%c�����zSr4rr~s��r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>ns���Q��X�r%c����dzS)N�r�rns�r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>os���Q��W�r%c����dzS)Nrrr�s�r#rEz<TestTimeDelta.test_disallowed_computations.<locals>.<lambda>ps���Q��V�r%)rr�r��ZeroDivisionError)r1rnrrrs @@@r#�test_disallowed_computationsz*TestTimeDelta.test_disallowed_computations_sM������b�M�M���	6�	6�A����i������5�5�5����i������5�5�5����i������5�5�5����i������5�5�5�5������)�%6�%6�%6�%6�%6�7�7�7����+�->�->�->�->�->�?�?�?����+�-=�-=�-=�-=�-=�>�>�>����+�_�_�_�_�=�=�=����)�^�^�^�^�4�4�4�4�4r%c��td��}|�t|jt��|�t|jt��dS)Nrf)rr�r��__mul__�NAN�__truediv__)r1rns  r#�test_disallowed_specialz%TestTimeDelta.test_disallowed_specialrsG���b�M�M�����*�a�i��5�5�5����*�a�m�S�9�9�9�9�9r%c���d\}}}t|||��}|�|j|��|�|j|��|�|j|��dS)N)r&rX��rr0rTr�r�)r1rTr�rqr[s     r#�test_basic_attributesz#TestTimeDelta.test_basic_attributesxsm��$���g�r�
�t�W�b�
)�
)�������$�'�'�'������W�-�-�-������"�-�-�-�-�-r%c��td���}|�|���d��dD]:}t|���}|�|���|���;dD]K}t|���}|�|���|td���z���LdS)	N�mrVg8~A)g˟$�@g˟$��rfrg��.Ar�)rrWi����r�r&)rr0�
total_seconds)r1r[r��mss    r#�test_total_secondsz TestTimeDelta.test_total_secondss���
�C�
 �
 �
 ������)�)�+�+�Z�8�8�8�N�	@�	@�M��=�1�1�1�B����R�-�-�/�/��?�?�?�?�!�	L�	L�B���+�+�+�B����R�-�-�/�/��i��6J�6J�6J�1J�K�K�K�K�	L�	Lr%c�|�tdddddd���}td�	��}|�||��dS)
N�drZ�8���rTr�g��A�rTrSr�rjr�r�r&r�)rr0�r1�t1�t2s   r#�test_carrieszTestTimeDelta.test_carries�sU��
�C��)�!�!�$9�;�;�;���A�
&�
&�
&������R� � � � � r%c��tdddddd���}t��}|�t|��t|����|td�	��z
}|td
���z
}|�||��|�t|��t|����|di}d
||<|�t|��d��|�||d
��dS)Nr�rZr�rTr�iz
r�rXrW�1rVr&rY)rr0�hash�len)r1r�r��ds    r#�test_hash_equalityz TestTimeDelta.test_hash_equality�s��
�C��)�!�!�$9�;�;�;���[�[������b���4��8�8�,�,�,�
�i�a� � � � ��
�i�S�!�!�!�!������R� � � �����b���4��8�8�,�,�,�
��G����"������Q����#�#�#�����2���"�"�"�"�"r%c��d}t|�}tD]G\}}}|�||��}|�|��}|�||���HdS)N)r��"�8)rr�r�r�r0�r1r�r�r�r�r"r�r�s        r#�
test_picklingzTestTimeDelta.test_pickling�sn�����$���)7�	,�	,�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+�+�	,�	,r%c�����tddd���tddd��}|��|��|��|k��|��|k��|��|k��|��|k��|��|k��dD�]8}t|�}|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k����:tD�]c�|���kd��|���kd��|���kd��|���kd��|�t��fd���|�t��fd���|�t��fd	���|�t��fd
���|�t��fd���|�t��fd���|�t��fd
���|�t��fd�����edS)NrYrUr[�)rUrUrU)rYr[r[)rYrUrVFTc�����kSr4r��badargr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>������v��r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>������f��r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>�r�r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>�r�r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>������2��r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>������"��r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>�r�r%c�����kSr4rr�s��r#rEz,TestTimeDelta.test_compare.<locals>.<lambda>�r�r%)rr0r�r��
OTHERSTUFFr�r��r1r�r�r�r�s   @@r#�test_comparezTestTimeDelta.test_compare�s|����
�q�!�Q�
�
��
�q�!�Q�
�
������R� � � �����b��!�!�!�����b��!�!�!�����r��"�"�"�����b��!�!�!�����b��!�!�!�3�
	'�
	'�D��D�!�B��O�O�B��G�$�$�$��O�O�B��G�$�$�$��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&����R�"�W�%�%�%����R�"�W�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&�&� �
	?�
	?�F����R�6�\�5�1�1�1����R�6�\�4�0�0�0����V�r�\�5�1�1�1����V�r�\�4�0�0�0����i�)=�)=�)=�)=�)=�>�>�>����i�)<�)<�)<�)<�)<�=�=�=����i�)<�)<�)<�)<�)<�=�=�=����i�)=�)=�)=�)=�)=�>�>�>����i�)=�)=�)=�)=�)=�>�>�>����i�)<�)<�)<�)<�)<�=�=�=����i�)<�)<�)<�)<�)<�=�=�=����i�)=�)=�)=�)=�)=�>�>�>�>�
	?�
	?r%c���t}|j}|t|d����d��|t|d����d��|t|d����d��|t|d����d��|t|d	d
d�����d
��|t|ddd�����d��|t|ddd	d�����d��|t|d�����d��|t|d�����d��|t|ddddd�����d��dS)Nr&z1 day, 0:00:00rz-1 day, 0:00:00rYz2 days, 0:00:00rWz-2 days, 0:00:00r��:r�r'z12:58:59rUr[z2:03:04i��r�r�)rSr�rjr�z-210 days, 23:12:34rZz0:00:00.001000r�z0:00:00.000003rhr(�rTr�rjr�r�z999999999 days, 23:59:59.999999)rr0r�)r1r[rs   r#r�zTestTimeDelta.test_str�s���
��
�
��
��3�r�r�!�u�u�:�:�'�(�(�(�
��3�r�r�"�v�v�;�;�)�*�*�*�
��3�r�r�!�u�u�:�:�(�)�)�)�
��3�r�r�"�v�v�;�;�*�+�+�+�
��3�r�r��B��3�3�3�4�4�j�A�A�A�
��3�r�r��1�a�0�0�0�1�1�9�=�=�=�
��3�r�r��2�r�2�>�>�>�?�?� �	"�	"�	"�	��3�r�r�q�!�!�!�"�"�$4�5�5�5�
��3�r�r�q�!�!�!�"�"�$4�5�5�5�
��3�r�r�y��B�� &�(�(�(�)�)�,�	.�	.�	.�	.�	.r%c	���d|jjz}|�t|�d����d|z��|�t|�dd����d|z��|�t|�ddd����d	|z��|�t|�d
�����d|z��|�t|�����d
|z��|�t|�d�����d|z��|�t|�dd�����d|z��|�t|�dd�����d|z��dS)N�	datetime.r&z
%s(days=1)r'rYz%s(days=10, seconds=2)rS�z,%s(days=-10, seconds=2, microseconds=400000)rXr�z%s(seconds=60)z%s(0)r�r�z%s(microseconds=100))rTr�z%s(days=1, microseconds=100))r�r�z%s(seconds=1, microseconds=100)�r=rKr0r��r1rFs  r#r�zTestTimeDelta.test_repr�s����T�]�3�3������d�m�m�A�.�.�/�/�%��,�	.�	.�	.�����d�m�m�B��2�2�3�3�1�D�8�	:�	:�	:�����d�m�m�C��F�;�;�<�<�G�$�N�	P�	P�	P�����d�m�m�B�m�7�7�8�8�)�D�0�	2�	2�	2�����d�m�m�o�o�.�.� �4��	)�	)�	)�����d�m�m��m�=�=�>�>�/�$�6�	8�	8�	8�����d�m�m���m�E�E�F�F�7�$�>�	@�	@�	@�����d�m�m�A�C�m�H�H�I�I�:�T�A�	C�	C�	C�	C�	Cr%c���tddddd���td���tdd�	��tdd
d���fD]�}t|��}|�|�d
����|dd�}t	|��}|�||��t|j|j|j��}|�||����dS)Nrhr�r�r(r��6e�rVr&�rTr�rYrU�rTr�r�r��	)	rr�r�rDr�r0rTr�r�)r1r[�s�td2s    r#�test_roundtripzTestTimeDelta.test_roundtrips����)�2�r�%'�f�>�>�>��*�-�-�-��*�a�8�8�8��!�Q�Q�?�?�?�	A�	&�	&�B��R���A��O�O�A�L�L��5�5�6�6�6��!�"�"��A��q�'�'�C����R��%�%�%��B�G�R�Z���A�A�C����R��%�%�%�%�	&�	&r%c�T�|�tjt��|�tjt��|�tjt��|�tjtjk��|�tjtd����|�tjtddd����|�tjtddd����dS)Nr�rhr]g~�.Arr&)r�rr�r��
resolutionr�r0r7s r#�test_resolution_infoz"TestTimeDelta.test_resolution_infos������i�m�Y�7�7�7����i�m�Y�7�7�7����i�2�I�>�>�>����	�
�	�
�5�6�6�6������	�*�(=�(=�>�>�>������	�)�Y��(N�(N�O�O�O�����-�y��A�q�/A�/A�B�B�B�B�Br%c��tj}tj|z}||z}|�t|j|��|�t|j|��tj|z
}||z
}|�t|j|��|�t|j|��|�td���td��}|�t|jd��|�t|jd��|�t|j	d��|�t|j	d��|�t|j	d��dS)Nc��tjSr4)rr�rr%r#rEz-TestTimeDelta.test_overflow.<locals>.<lambda>)s
��)�-��r%r&�ʚ;ge��Ag#B����;g�����|�=gr��{�>)
rr�r�r��
OverflowError�__sub__�__add__r�r�r�)r1�tinyr[�days    r#�
test_overflowzTestTimeDelta.test_overflowsM���#��
�]�T�
!��
�d�
�����-���T�:�:�:����-���d�U�;�;�;�
�]�T�
!��
�d�
�����-���T�:�:�:����-���d�U�;�;�;����-�)?�)?�@�@�@���l�l�����-���e�<�<�<����-���c�:�:�:����-���%�@�@�@����-���%�@�@�@����-���%�@�@�@�@�@r%c��td��}|�t|jt��|�t|jt��dS�Nr&)rr�r�r��INF)r1r�s  r#�_test_overflow_specialz$TestTimeDelta._test_overflow_special2sI����l�l�����-���c�:�:�:����-���s�d�;�;�;�;�;r%c�z�t}|j}||d���|d����||d���|d����||d���|d�����||d���|d�����||d���|d	�����||d
���|d�����||d���|d
�����||d���|d�����||d���|d�����||d���|d�����||d���|d�����||d���|d�����d}|dz}||d|z���|d����||d|z���|d����||d|zd|z���|d	�����||d|z���|d����||d|z���|d����||d|zd|z���|d�����||d ���d |d!���z��||d ���|jzd |jz|jz��dS)"Ng-C��6:?rZrg-C��6:�g����Mb@?r�g����Mb@�ga2U0*�C?r&ga2U0*�C�rg�~j�t�X?rYg�~j�t�X�rWg���Ơ>r�g���Ơ���?����i|���t��Ar/g�������?rVg�������?r��rTr�g������ٿg������ɿrcrv)rr0r�)r1r[r�us_per_hour�
us_per_days     r#�test_microsecond_roundingz'TestTimeDelta.test_microsecond_rounding8s���
��
�
��	��2�2�8�$�$�$�b�b��e�e�,�,�,�
��2�2�9�%�%�%�r�r�!�u�u�-�-�-�
��2�2�8�$�$�$�b�b�a�&8�&8�&8�9�9�9�
��2�2�9�%�%�%�r�r�r�':�':�':�;�;�;�
��2�2�8�$�$�$�b�b�a�&8�&8�&8�9�9�9�
��2�2�9�%�%�%�r�r�r�':�':�':�;�;�;�
��2�2�8�$�$�$�b�b�a�&8�&8�&8�9�9�9�
��2�2�9�%�%�%�r�r�r�':�':�':�;�;�;�
��2�2�i� � � �"�"�!�"4�"4�"4�5�5�5�
��2�2�j�!�!�!�2�2�2�#6�#6�#6�7�7�7�
��2�2�f����r�r�t�4�4�4�5�5�5�
��2�2�g������� 6� 6� 6�7�7�7��� �2�%�
�
��2�2�2�j�=�!�!�!�2�2�a�5�5�)�)�)�
��2�2�B�{�N�#�#�#�R�R��U�U�+�+�+�
��2�2�2�j�=��;��7�7�7����9K�9K�9K�L�L�L�
��2�2�3�z�>�"�"�"�B�B�q�E�E�*�*�*�
��2�2�C��O�$�$�$�b�b��e�e�,�,�,�
��2�2�3�z�>��[��9�9�9�2�2�2�;N�;N�;N�O�O�O�	��2�2�3�����R�R�S�%9�%9�%9�!9�:�:�:�
��2�2�3������.��B�M�0A�2�=�0P�Q�Q�Q�Q�Qr%c�v�td���}|�|j|j|jfd��dS)Nrr�)rr]r(r�)r1r[s  r#�test_massive_normalizationz(TestTimeDelta.test_massive_normalizationYsF��
�B�
'�
'�
'�����"�'�2�:�r��?�0�	2�	2�	2�	2�	2r%c�b�|�td����|�tdd����|�tddd����|�td�����|�td����dS)Nr&rr�)r�rr�r7s r#�	test_boolzTestTimeDelta.test_bool^s������	�!���%�%�%����	�!�Q���(�(�(����	�!�Q��*�*�+�+�+����	�q�1�1�1�2�2�2�����1���&�&�&�&�&r%c����G�fd�dt����d���}|�t|�����|�|���d���dd���}|�t|�����|�|���d	��||z}|�t|��t����|��}|�t|�����|�|j|j��|�|j|j��|�|j|j��|�t|��t|����|�|���d��dS)
Nc�0��eZdZe�fd���Zd�ZdS)�0TestTimeDelta.test_subclass_timedelta.<locals>.Tc�<���|j|j|j��Sr4r�)r[�Ts �r#�from_tdz8TestTimeDelta.test_subclass_timedelta.<locals>.T.from_tdhs����q���"�*�b�o�>�>�>r%c�`�|jdz|jdzz|jdzz}t|��S)Nr/g �@r�)rTr�r�rm)r1�sums  r#�as_hoursz9TestTimeDelta.test_subclass_timedelta.<locals>.T.as_hoursls:���y�2�~��|�f�,�-��(�6�1�2���S�z�z�!r%N)rKrbrc�staticmethodr�r�)r�s�r#r�r�gsG�������
�
?�
?�
?�
?��\�
?�
"�
"�
"�
"�
"r%r�r&rVr/ri��r�i��)
rr5r�r0r�r�rTr�r�r�)r1r�r��t3�t4r�s     @r#�test_subclass_timedeltaz%TestTimeDelta.test_subclass_timedeltaes����		"�		"�		"�		"�		"�		"�		"�	�		"�		"�		"��Q�A�Y�Y�Y���
�
�d�2�h�h��"�"�"����������+�+�+�
�Q�B��
&�
&�
&���
�
�d�2�h�h��"�"�"����������,�,�,�
�"�W���
�
�d�2�h�h�	�*�*�*�
�Y�Y�r�]�]���
�
�d�2�h�h��"�"�"������"�'�*�*�*������R�Z�0�0�0������"�/�:�:�:�����R���#�b�'�'�*�*�*����������+�+�+�+�+r%c	��Gd�dt��}|ddd��}td���}dd�|ddd	��fd
d�|ddd	��fdd
�|ddd��fg}|D]k\}}}|�|��5|||��}|�||��|�||��ddd��n#1swxYwY�ldS)Nc��eZdZdS)�6TestTimeDelta.test_subclass_date.<locals>.DateSubclassN�rKrbrcrr%r#�DateSubclassr����������Dr%r���r&rVrV�addc��||zSr4r�r�r�s  r#rEz2TestTimeDelta.test_subclass_date.<locals>.<lambda>��
���Q��r%r]�raddc��||zSr4rr�s  r#rEz2TestTimeDelta.test_subclass_date.<locals>.<lambda>��
��!�a�%�r%�subc��||z
Sr4rr�s  r#rEz2TestTimeDelta.test_subclass_date.<locals>.<lambda>�rr%r[)rrr3r0r�)	r1r��d1r[�testsrF�func�expected�acts	         r#�test_subclass_datez TestTimeDelta.test_subclass_date�ss��	�	�	�	�	�4�	�	�	��\�$��1�
%�
%��
�A�
�
�
���&�&���T�1�a�(@�(@�A�
�'�'���d�A�q�)A�)A�B�
�&�&���T�1�a�(@�(@�A�
��%*�	9�	9� �D�$�����d�#�#�
9�
9��d�2�r�l�l��� � ��h�/�/�/��%�%�c�<�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��	9�	9s�9C�C		�C		c
��Gd�dt��}|ddddd��}tdd���}d	d
�|dddd��fd
d�|dddd��fdd�|dddd��fg}|D]k\}}}|�|��5|||��}|�||��|�||��ddd��n#1swxYwY�ldS)Nc��eZdZdS)�>TestTimeDelta.test_subclass_datetime.<locals>.DateTimeSubclassNr�rr%r#�DateTimeSubclassr�r�r%rr�r&rVr��)rTrjr�c��||zSr4rr�s  r#rEz6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>�rr%r]�
rc��||zSr4rr�s  r#rEz6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>�rr%rc��||z
Sr4rr�s  r#rEz6TestTimeDelta.test_subclass_datetime.<locals>.<lambda>�rr%r[)rrr3r0r�)	r1rrr[rrFrr	r
s	         r#�test_subclass_datetimez$TestTimeDelta.test_subclass_datetime�s���	�	�	�	�	�x�	�	�	��
�d�A�q�"�b�
1�
1��
�A�r�
*�
*�
*���&�&�(8�(8��q�!�R�(H�(H�I�
�'�'�)9�)9�$��1�b�)I�)I�J�
�&�&�(8�(8��q�!�R�(H�(H�I�
��%*�	=�	=� �D�$�����d�#�#�
=�
=��d�2�r�l�l��� � ��h�/�/�/��%�%�c�+;�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��	=�	=s�9C�C	�C	c��tddd���}td���}|�||zd��|�||zd��tdd	�
��}td���}|�||zd��|�||zd��td
��}|�tt||��|�tt
||��dS)Nr&r/�r'r�gó@i�rYr�rjr�rig@r)rr0r�r�r
r)r1r��second�minute�zerotds     r#�
test_divisionzTestTimeDelta.test_division�s����A�r�2�6�6�6���1�%�%�%������V��V�,�,�,�����f��d�+�+�+��a��,�,�,���1�%�%�%������V��S�)�)�)�����f��a�(�(�(��1�������+�W�a��@�@�@����+�X�q�&�A�A�A�A�Ar%c��tdd���}td���}||z}|�|td�����tdd���}||z}|�|td�����td��}|�tt||��|�t
t|d	��dS�
NrYrrr&rir�rWrr')rr0r�r�rr�)r1r�r�rrs     r#�test_remainderzTestTimeDelta.test_remainder�s����a��,�,�,���1�%�%�%��
��J������I�b�1�1�1�2�2�2��b�"�-�-�-��
��K������I�b�1�1�1�2�2�2��1�������+�S�!�V�<�<�<����)�S�!�R�0�0�0�0�0r%c�D�tdd���}td���}t||��\}}|�|d��|�|td�����tdd���}t||��\}}|�|d��|�|td�����td��}|�tt||��|�t
t|d	��dSr)r�divmodr0r�r�r�)r1r�r�qrrs      r#�test_divmodzTestTimeDelta.test_divmod�s���a��,�,�,���1�%�%�%���a�� � ���1�����A��������I�b�1�1�1�2�2�2��b�"�-�-�-���a�� � ���1�����B��������I�b�1�1�1�2�2�2��1�������+�V�Q��?�?�?����)�V�Q��3�3�3�3�3r%c��d�}|�t��5t��|ddz��zddd��n#1swxYwY|�t��5t��|ddz��zddd��n#1swxYwYdD]�}|�t��5t��||��zddd��n#1swxYwY|�t��5t��||��zddd��n#1swxYwY��dS)Nc�B��G�fd�dt��}|��S)Nc���eZdZ�fd�ZdS)�FTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloatc����Sr4r)r1�	bad_ratios �r#�as_integer_ratiozWTestTimeDelta.test_issue31293.<locals>.get_bad_float.<locals>.BadFloat.as_integer_ratio�s	���$�$r%N)rKrbrcr+)r*s�r#�BadFloatr(�s.�������%�%�%�%�%�%�%r%r,)�float)r*r,s` r#�
get_bad_floatz4TestTimeDelta.test_issue31293.<locals>.get_bad_float�sE���
%�
%�
%�
%�
%�
%�
%�5�
%�
%�
%��8�:�:�r%r&rY)rr��r&rYrU)r�r�rr�)r1r.r*s   r#�test_issue31293zTestTimeDelta.test_issue31293�s?��	�	�	��
�
�y�
)�
)�	3�	3��K�K�-�-��T�	�2�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
�
�
�y�
)�
)�	3�	3��K�K�-�-��T�	�2�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�1�	7�	7�I��"�"�:�.�.�
7�
7����m�m�I�6�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��"�"�:�.�.�
7�
7����m�m�I�6�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7sG�A�A�A�-B�B�B�C'�'C+	�.C+	�D3�3D7	�:D7	c�����G�fd�dt��}G�fd�d���G�fd�dt���dD�]G�|�����5	t|d	���
��n#t$rYnwxYw	t|d	�����n#t$rYnwxYw	t|d	�����n#ttf$rYnwxYw	td	��|d	��zn#ttf$rYnwxYw	|d	��td	��zn#t$rYnwxYw	td	��|d	��zn#t$rYnwxYwddd��n#1swxYwY��IdS)
Nc�8��eZdZ�fd�Z�fd�Z�fd�Z�fd�ZdS)�-TestTimeDelta.test_issue31752.<locals>.BadIntc������Sr4r�r1�other�Prods  �r#r�z5TestTimeDelta.test_issue31752.<locals>.BadInt.__mul__������t�v�v�
r%c������Sr4rr5s  �r#�__rmul__z6TestTimeDelta.test_issue31752.<locals>.BadInt.__rmul__�r8r%c������Sr4rr5s  �r#�__floordiv__z:TestTimeDelta.test_issue31752.<locals>.BadInt.__floordiv__�r8r%c������Sr4rr5s  �r#�
__rfloordiv__z;TestTimeDelta.test_issue31752.<locals>.BadInt.__rfloordiv__�r8r%N)rKrbrcr�r:r<r>)r7s�r#�BadIntr3�sy�������
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
r%r?c�$��eZdZ�fd�Z�fd�ZdS)�+TestTimeDelta.test_issue31752.<locals>.Prodc������Sr4r�r1r6�Sums  �r#r�z3TestTimeDelta.test_issue31752.<locals>.Prod.__add__������s�u�u�r%c������Sr4rrCs  �r#�__radd__z4TestTimeDelta.test_issue31752.<locals>.Prod.__radd__rEr%N)rKrbrcr�rG)rDs�r#r7rA�sG�������
�
�
�
�
�
�
�
�
�
�
�
r%r7c���eZdZ�fd�ZdS)�*TestTimeDelta.test_issue31752.<locals>.Sumc����Sr4r)r1r6�divmodresults  �r#�
__divmod__z5TestTimeDelta.test_issue31752.<locals>.Sum.__divmod__s	���#�#r%N)rKrbrcrL�rKs�r#rDrIs.�������
$�
$�
$�
$�
$�
$�
$r%rD)Nr)rr&rY)rrrMr&r�r�rW)rlr3rr�r�)r1r?r7rDrKs  @@@r#�test_issue31752zTestTimeDelta.test_issue31752�s������	�	�	�	�	�	�	�S�	�	�	�	�	�	�	�	�	�	�	�	�	�	$�	$�	$�	$�	$�	$�	$�#�	$�	$�	$�;�	�	�L����<��8�8�
�
���6�6�!�9�9�5�5�5�5�5�� �����D�������F�F�1�I�I�.�.�.�.�.�� �����D�������F�F�1�I�I�.�.�.�.�.��!�:�.�����D�������a�L�L�6�6�!�9�9�,�,�,��!�:�.�����D�������F�1�I�I�	�!���,�,�,�� �����D�������a�L�L�F�F�1�I�I�-�-�-�� �����D�����1
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s��E;�A4�3E;�4
B�>E;�B�E;�B�E;�
B,�)E;�+B,�,E;�0C
�	E;�
C�E;�C�E;�"C>�=E;�>D�E;�D�E;�D2�1E;�2
D?�<E;�>D?�?E;�E�E;�
E,�)E;�+E,�,E;�;E?	�E?	N)"rKrbrcrr=r�rsr�r
�requires_IEEE_754r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r$r0rNrr%r#rQrQ�s��������H�7�7�7�2Q�Q�Q�f5�5�5�&
��:�:���:�
.�.�.�
L�
L�
L�!�!�!�#�#�#�(,�,�,�&?�&?�&?�P.�.�.�*C�C�C�&&�&�&�$C�C�C�A�A�A�,
��<�<���<�
R�R�R�B2�2�2�
'�'�'�,�,�,�>9�9�9�&=�=�=�&
B�
B�
B�&
1�
1�
1�4�4�4�"7�7�7�(1�1�1�1�1r%rQc��eZdZd�ZdS)�TestDateOnlyc��tddd��}tddddd���}t|j��}|�|td����||z}|�|||z��||z}|�|||z��||z
}|�|||z
��|}t|j��}|�|td����||z}|�|||z��||z}|�|||z��||z
}|�|||z
��dS)	N��r&rYrUr[rVr�rW)rrrTr0)r1ryr,rT�dt2s     r#�test_delta_non_days_ignoredz(TestDateOnly.test_delta_non_days_ignored,sg��
�$��1�
�
���q��1�a�'(�*�*�*�����$�$������y��|�|�,�,�,��5�j������b�4�i�(�(�(��b�j������b�4�i�(�(�(��5�j������b�4�i�(�(�(�������$�$������y��}�}�-�-�-��5�j������b�4�i�(�(�(��b�j������b�4�i�(�(�(��5�j������b�4�i�(�(�(�(�(r%N)rKrbrcrUrr%r#rQrQ(s#������)�)�)�)�)r%rQc��eZdZdZdS)�SubclassDater&N�rKrbrc�sub_varrr%r#rWrWI��������G�G�Gr%rWc��eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.d+�Z/d,S)-�TestDatec���|�ddd��}|�|jd��|�|jd��|�|jd��dS)N��rUr&)r=r0�year�monthr�rxs  r#r�zTestDate.test_basic_attributesRse��
�]�]�4��A�
&�
&�������$�'�'�'������1�%�%�%�������#�#�#�#�#r%c��|�ddd��|j���fD]�}t|��}|�|�d����|dd�}t|��}|�||��|�|j|j|j	��}|�||����dS)Nr&rYrUr�r�)
r=�todayr�r�rDr�r0r_r`r��r1ryr�rTs    r#r�zTestDate.test_roundtripXs����=�=��A�q�)�)��=�&�&�(�(�*�	&�	&�B��R���A��O�O�A�L�L��5�5�6�6�6��!�"�"��A��q�'�'�C����R��%�%�%��-�-�����2�6�:�:�C����R��%�%�%�%�	&�	&r%c	��dD]�\}}}}|�|||��}|�||�����|j�|��}|�||��t	|d��rl|�|jd��|�|jd��|�|jd��|�|jd����tttdzd��D]�}|�|dd��}|���}|j�|��}|�||��|dkrx|j�|dz
��}|�|dz
dd��}|�||��|�|���|dz
����gd�}d	D]�\}}	|�|dd�����}ttdd
��|��D]�\}
}|
dkr|	r|dz
}td|dz��D]t}|�||
|��}|�|���|��|�||j�|����|dz
}�u����dS)N))r&r&r&r&)r&r�r�r�)rYr&r&�n)i�r�r�i��
�hourrr&rXr�r�)r��r�rr�rr�r�rr�rr�))rST)r^FrrY)
r=r0�	toordinal�fromordinalr�rfrr�microsecondrlrr�zip)
r1�y�mr��n�fromordr_�d2�dim�isleapr`�maxdayr�s
             r#�test_ordinal_conversionsz!TestDate.test_ordinal_conversionsfs���3�	9�	9�J�A�q�!�Q�
�
�
�a��A�&�&�A����Q����
�
�.�.�.��m�/�/��2�2�G����Q��(�(�(��w��'�'�
9�� � ���q�1�1�1�� � ����3�3�3�� � ����3�3�3�� � ��!4�a�8�8�8���'�7�1�9�a�0�0�	6�	6�D��
�
�d�A�q�)�)�A����
�
�A���*�*�1�-�-�B����Q��#�#�#��a�x�x��M�-�-�a��c�2�2���]�]�4��6�2�r�2�2��� � ��B�'�'�'�� � �������1��5�5�5��?�>�>��7�		�		�L�D�&��
�
�d�A�q�)�)�3�3�5�5�A�!$�U�1�b�\�\�3�!7�!7�
�
�
��v��A�:�:�&�:��a�K�F� ��F�1�H�-�-���C��
�
�d�E�3�7�7�A��$�$�Q�[�[�]�]�A�6�6�6��$�$�Q��
�(A�(A�!�(D�(D�E�E�E���F�A�A�	�
�		�		r%c����|jj�|��j�j�j�������������}|��|��|�t��fd����td���z}|�|����dz��|�||j��dz����|jj�|��j�j�j�������������}|��|��|�t��fd����td���z
}|�|����dz
��|�||j��dz
����dS)Nc�4�����dz
��Sr��ri�rn�aords��r#rEz0TestDate.test_extreme_ordinals.<locals>.<lambda>�����a�m�m�D�1�H�.E�.E�r%r&rVc�4�����dz��Sr�rwrxs��r#rEz0TestDate.test_extreme_ordinals.<locals>.<lambda>�rzr%)r=r�r_r`r�rhrir0r�r�rr�)r1rornrys  @@r#�test_extreme_ordinalszTestDate.test_extreme_ordinals�s������M����M�M�!�&�!�'�1�5�1�1���{�{�}�}��
�M�M�$��������A�������*�&E�&E�&E�&E�&E�F�F�F�
�	�q�!�!�!�!�����������q��1�1�1�����D�M�5�5�d�Q�h�?�?�@�@�@��M����M�M�!�&�!�'�1�5�1�1���{�{�}�}��
�M�M�$��������A�������*�&E�&E�&E�&E�&E�F�F�F�
�	�q�!�!�!�!�����������q��1�1�1�����D�M�5�5�d�Q�h�?�?�@�@�@�@�@r%c�8�|�tdd��|�tdd��|�t|jtdz
dd��|�t|jtdzdd��|�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&rSr�rrrY����`	r���4�lr�)r=rrr�r�r7s r#�test_bad_constructor_argumentsz'TestDate.test_bad_constructor_arguments�s����
�
�g�q�!�$�$�$��
�
�g�q�!�$�$�$����*�d�m�W�Q�Y��1�E�E�E����*�d�m�W�Q�Y��1�E�E�E��
�
�d�A�q�!�!�!��
�
�d�B��"�"�"����*�d�m�T�1�a�@�@�@����*�d�m�T�2�q�A�A�A��
�
�d�A�r�"�"�"��
�
�d�A�r�"�"�"��
�
�d�A�r�"�"�"����*�d�m�T�1�b�A�A�A����*�d�m�T�1�b�A�A�A����*�d�m�T�1�b�A�A�A����*�d�m�T�1�b�A�A�A����*�d�m�T�1�a�@�@�@����*�d�m�T�1�b�A�A�A�A�Ar%c�f�|�ddd��}|�ddd��}|�||��|�t|��t|����|di}d||<|�t|��d��|�||d��|�||d��|�ddd��}|�ddd��}|�||��|�t|��t|����|di}d||<|�t|��d��|�||d��|�||d��dS)NrSr�r�r&rYr��r=r0r�r��r1r��e�dics    r#r�zTestDate.test_hash_equality�s����M�M�$��B�'�'���M�M�$��B�'�'������A��������a���$�q�'�'�*�*�*��!�f����A������S���1�%�%�%�����Q���#�#�#�����Q���#�#�#��M�M�$��Q�'�'���M�M�$��Q�'�'������A��������a���$�q�'�'�*�*�*��!�f����A������S���1�%�%�%�����Q���#�#�#�����Q���#�#�#�#�#r%c��	����|�ddd���|�ddd��}|�ddd��}�|z
}|�|jdtt	ddd����z��|�|jd	��|�|jd	��td���td
��}|�ddd���|���z|�ddd����|���z|�ddd����|���z
|�ddd����|���z|�ddd����|��|z|�ddd����|��|z
|�ddd
����|��d|zz|�ddd����|��d|zz
|�ddd����|��|z�z
|��|���z�z
���|��|z
�z
|��|���z
�z
���|���|zz
|��|����zz
���|���|z
z
|��|����z
z
���|�||�z
z
���dD]~�|�t��fd���|�t��fd���|�t��fd���|�t��fd����|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t�fd���|�t�fd���|�t�fd���dS)Nr^r&r��r�rY�Ar[rrXrUr�r��4��ruc�����zSr4rrxs��r#rEz,TestDate.test_computations.<locals>.<lambda>�ryr%c�����z
Sr4rrxs��r#rEz,TestDate.test_computations.<locals>.<lambda>�ryr%c�����zSr4rrxs��r#rEz,TestDate.test_computations.<locals>.<lambda>ryr%c�����z
Sr4rrxs��r#rEz,TestDate.test_computations.<locals>.<lambda>ryr%c�����z
Sr4r�rnr�s��r#rEz,TestDate.test_computations.<locals>.<lambda>����S�1�W�r%c�����zSr4rr�s��r#rEz,TestDate.test_computations.<locals>.<lambda>r�r%c�����zSr4rr�s��r#rEz,TestDate.test_computations.<locals>.<lambda>����Q��W�r%c�����zSr4rr�s��r#rEz,TestDate.test_computations.<locals>.<lambda>����S�A�X�r%c�����zSr4rr�s��r#rEz,TestDate.test_computations.<locals>.<lambda>	����Q�#�X�r%c�����zSr4rr�s�r#rEz,TestDate.test_computations.<locals>.<lambda>
����Q��U�r%c�����zSr4rr�s�r#rEz,TestDate.test_computations.<locals>.<lambda>����Q�!�V�r%c�����zSr4rr�s�r#rEz,TestDate.test_computations.<locals>.<lambda>
r�r%�
r=r0rTr�rlr�r�rr�r�)r1rorp�diff�weekrnr�rrs     @@@r#rszTestDate.test_computations�s�������M�M�$��2�&�&���M�M�$��2�&�&���M�M�$�q��#�#����s�������F�S��t�T�1�1E�1E�-F�-F�$F�G�G�G������q�)�)�)�����*�A�.�.�.���l�l����|�|���M�M�$��1�%�%������S��$�-�-��a��";�";�<�<�<�����q��$�-�-��a��";�";�<�<�<�����S��$�-�-��a��";�";�<�<�<����#����4�=�=��q�!�#<�#<�=�=�=�����T��4�=�=��q�!�#<�#<�=�=�=�����T��4�=�=��q�"�#=�#=�>�>�>�����R��W��d�m�m�D�!�Q�&?�&?�@�@�@�����R��W��d�m�m�D�!�Q�&?�&?�@�@�@����!�d�(�a���.�.�.����!�c�'�Q���,�,�,����!�d�(�a��$��/�/�/����!�c�'�Q����-�-�-�����a�$�h��$��/�/�/�����a�#�g����-�-�-�����a�$�h���.�.�.�����a�#�g���,�,�,�����a�#�g���,�,�,��	6�	6�A����i������5�5�5����i������5�5�5����i������5�5�5����i������5�5�5�5�	
���)�_�_�_�_�_�5�5�5����)�_�_�_�_�_�5�5�5����)�_�_�_�_�_�5�5�5����)�%5�%5�%5�%5�%5�6�6�6����)�%5�%5�%5�%5�%5�6�6�6����)�]�]�]�]�3�3�3����)�^�^�^�^�4�4�4����)�]�]�]�]�3�3�3�3�3r%c��|jj}|td��td��fD]�}|jj|z}||z}|�t
|j|��|�t
|j|��|jj|z
}||z
}|�t
|j|��|�t
|j|����dS)Nr&rY)	r=r�rr�r�r�r�r�r�)r1r�r,rys    r#r�zTestDate.test_overflows����}�'���I�a�L�L�)�A�,�,�7�		A�		A�E���"�U�*�B��%�K�B����m�R�Z��?�?�?����m�R�Z�%��@�@�@���"�U�*�B��%�K�B����m�R�Z��?�?�?����m�R�Z�%��@�@�@�@�		A�		Ar%c�"�ddl}d\}}}|j|||ddddddf	��}|j�|��}|�|j|��|�|j|��|�|j|��dS)Nr)i�r�rr)r�mktimer=�
fromtimestampr0r_r`r�)r1rr_r`r��tsr�s       r#�test_fromtimestampzTestDate.test_fromtimestamps�������'���e�S�
�T�[�$��s�A�q�!�Q��2�>�
?�
?���M�'�'��+�+��������&�&�&������%�(�(�(�������$�$�$�$�$r%c�\�dD](}|�t|jj|���)dS�N)gZb���t�gZb���ti�r�r�r=r��r1�insanes  r#�test_insane_fromtimestampz"TestDate.test_insane_fromtimestamp(�F��
$�	&�	&�F����m�T�]�-H�$�
&�
&�
&�
&�	&�	&r%c�B�ddl}td��D]\}|j���}|j��}|j�|��}||krn|jd���]||kr(|�||td������dSdS)NrrUg�������?rcr�)r,)rrlr=rbr��sleep�assertAlmostEqualr)r1rrrbr��
todayagains      r#�
test_todayzTestDate.test_today1s��������1�X�X�	�	�E��M�'�'�)�)�E������B���4�4�R�8�8�J��
�"�"���
�D�J�s�O�O�O�O��J����"�"�:�u�)2�3�)?�)?�)?�
#�
A�
A�
A�
A�
A��r%c	�:�td��D�]	}|�|�ddd|z�����|��|�|�ddd|z�����|dz��|�|�ddd|z�����|��|�|�ddd|z�����|dz����dS)NrXr^rUr[r&r�rY)rlr0r=�weekday�
isoweekday)r1rrs  r#�test_weekdayzTestDate.test_weekdayNs���q���	L�	L�A����T�]�]�4��A�a�C�8�8�@�@�B�B�A�F�F�F����T�]�]�4��A�a�C�8�8�C�C�E�E�q��s�K�K�K����T�]�]�4��A�a�C�8�8�@�@�B�B�A�F�F�F����T�]�]�4��A�a�C�8�8�C�C�E�E�q��s�K�K�K�K�
	L�	Lr%c�n�gd�}g}|D]a\}}|j|�}td��D]B}|t|��z}|dd�|d|zfz}|�||f���C�b|D]�\}	}
|�|	d���5|�|	���|
��ddd��n#1swxYwY|�|	d���5|	���}|�|j|j|j	f|
��ddd��n#1swxYwY��dS)N)))r�r��)r�r�r&))r�r�r~�rr&r&))rr&rV)rrYr&))��r�r�)r�r�r&))r�r�rg)r��5r&))r�r&r[)r�r&r&rXrrY�tuple)r��
comparison�fields)
r=rlr�appendr3r0�isocalendarr_r�r�)r1�week_mondays�
test_cases�cal_date�iso_date�	base_daterr�new_date�new_isor��exp_isor�s            r#�test_isocalendarzTestDate.test_isocalendarWs���
�
�
���
�".�	7�	7��H�h�%��
�x�0�I��1�X�X�
7�
7��$�y��|�|�3��"�1�Q�3�-�8�A�;��?�*<�<���!�!�8�W�"5�6�6�6�6�
7�
%�	G�	G�J�A�w�����g��6�6�
;�
;�� � ������'�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�����h��7�7�
G�
G��M�M�O�O��� � �!�&�!�&�!�)�!<�g�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	Gs$�	)B>�>C	�C	� =D)�)D-	�0D-	c�$�|�ddd��}tj|�����}tj|��}|�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&rYN)r=r r�r�r�r0r�r�)r1r��p�ress    r#�test_isocalendar_picklingz"TestDate.test_isocalendar_picklingusu��

�M�M�$��1�%�%���L������)�)���l�1�o�o������c���E�*�*�*�����l�+�+�+�+�+r%c�(�d}ttt|�������}g}t	d��D]�}|�d|zdd��}|�d|zdd��}|�|���dd�|���dd���|���ddkr|�|����|�||��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
        �rSr�r�i@r&r�)	�sorted�maprl�splitrlr=r0r�r�)r1�ISO_LONG_YEARS_TABLE�iso_long_years�Lrrr�rs       r#�test_iso_long_yearszTestDate.test_iso_long_years�s��� ��2 ��C�)=�)C�)C�)E�)E� F� F�G�G�����s���	�	�A��
�
�d�1�f�b�"�-�-�A����t�A�v�r�2�.�.�B����Q�]�]�_�_�Q�R�R�0�"�.�.�2B�2B�1�2�2�2F�G�G�G��}�}���q�!�R�'�'�������������N�+�+�+�+�+r%c��|�ddd��}|�|���d��dS)NrYrUz
0002-03-02)r=r0�	isoformat�r1r�s  r#�test_isoformatzTestDate.test_isoformat�s;���M�M�!�Q��"�"�����������5�5�5�5�5r%c��|�ddd��}|�|���d��dS)Nr^rUrYzSat Mar  2 00:00:00 2002)r=r0�ctimer�s  r#�
test_ctimezTestDate.test_ctime�s<���M�M�$��1�%�%����������$>�?�?�?�?�?r%c�b�|�ddd��}|�|�d��d��|�|�d��d��|�|�d��d��|�t|j��|�t|jdd	��|�t|jd
��|�|�d��d��|�|�d
��d��dD](}	|�|���#t
$rY�%wxYw	|�d��n#t$rYnwxYw|�d��dS)N��rUrY�m:%m d:%d y:%yzm:03 d:02 y:05r��xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx�one�tworf�%m�03�	'%z' '%Z'�'' '')z%e�%z%#u%y�%mz%f)r=r0�strftimer�r�r��UnicodeEncodeError)r1r��fs   r#�
test_strftimezTestDate.test_strftime�s����M�M�$��1�%�%��������$4�5�5�7G�H�H�H�������B����,�,�,�������H�-�-�x�8�8�8����)�Q�Z�0�0�0����)�Q�Z���>�>�>����)�Q�Z��4�4�4�	
������D�)�)�4�0�0�0�	
������K�0�0�'�:�:�:�#�	�	�A�
��
�
�1�
�
�
�
���
�
�
���
����	�
�J�J�|�$�$�$�$��!�	�	�	��D�	����	
�
�
�4�����s$�
E#�#
E0�/E0�4F
�

F�Fc���|�ddd��}	tjd��n%#t$r|�d��YnwxYw|�|�d��tjd|�������|�|�d��tjd|�������dS)Nr�rUrYr�z'time module does not support trailing %zm:%m d:%d y:%y %zm:03 d:02 y:05 %)r=�_timer�r�rLr0�	timetupler�s  r#�test_strftime_trailing_percentz'TestDate.test_strftime_trailing_percent�s���

�M�M�$��1�%�%��	E��N�3�������	E�	E�	E��M�M�C�D�D�D�D�D�	E����������C���%�.��a�k�k�m�m�*L�*L�M�M�M����
�J�J�)�*�*��N�-�q�{�{�}�}�=�=�	
�	
�	
�	
�	
s�.�A�Ac��|�ddd��}|�|�d��t|����|�t
d��5|�d��ddd��n#1swxYwYGd�d|j��}|ddd��}|�|�d��d��Gd	�d
|j��}|ddd��}|�|�d��t|����dD]�}|�|�|��|�|����|�|�|��|�|����|�|�|��d
����dS)N��r�r'r�must be str, not int�{c��eZdZd�ZdS)�TestDate.test_format.<locals>.Ac��dS�N�Arr7s r#�__str__z'TestDate.test_format.<locals>.A.__str__�����sr%N�rKrbrcr�rr%r#r�r���#������
�
�
�
�
r%r�c��eZdZd�ZdS)�TestDate.test_format.<locals>.Bc��dS�N�Br�r1�format_specs  r#r�z(TestDate.test_format.<locals>.B.strftime�rr%N�rKrbrcr�rr%r#rr�rr%r�r�zm:%m d:%d y:%y H:%H M:%M S:%S�%z %Z�r=r0�
__format__r��assertRaisesRegexr�r��r1ryr�rnrro�fmts       r#�test_formatzTestDate.test_format�s#��
�]�]�4��B�
'�
'��������r�*�*�C��G�G�4�4�4�
�
#�
#�I�/E�
F�
F�	�	��M�M�#����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�	�	�	��
�	�	�	�
�A�d�A�r�N�N��������b�)�)�3�/�/�/�	�	�	�	�	��
�	�	�	�
�A�d�A�r�N�N��������b�)�)�3�r�7�7�3�3�3��	5�	5�C�
���R�]�]�3�/�/����S�1A�1A�B�B�B����Q�\�\�#�.�.����C�0@�0@�A�A�A����Q�\�\�#�.�.��4�4�4�4�
	5�	5s�)B�B�Bc�|�t|jt��rt}nt}|�|jj|��|�|jj|��|�|jjt��|�	|jj|jjk��dSr4)
r�r=rrr�r�r�r�rr�)r1�expected_classs  r#r�zTestDate.test_resolution_infos����d�m�X�.�.�	"�%�N�N�!�N����d�m�/��@�@�@����d�m�/��@�@�@����d�m�6�	�B�B�B�����
�)�D�M�,=�=�>�>�>�>�>r%c�z�|jj|jjz
}|jdzdz|jzdz|jz}t
dd|��}|�||��|�|jj|z|jj��|�|jj|z
|jj��dS)Nr/��@Br)r=r�r�rTr�r�rr0)r1�bigrn�	justasbigs    r#�test_extreme_timedeltazTestDate.test_extreme_timedelta
s����m��$�-�"3�3��
�X�b�[��
���
+�W�4�s�7G�G���a��A�&�&�	�����i�(�(�(������*�S�0�$�-�2C�D�D�D������*�S�0�$�-�2C�D�D�D�D�Dr%c
�6�td��D�]}|�ddd|z��}|���}|�|ddd|zddd|d|zdf	��|�ddd|z��}|���}|�|ddd|zdddd|zdzd|zdf	��|�ddd|z��}|���}|�|ddd|zdddd|zdzd	|zdf	��|�|jd��|�|jd��|�|jd|z��|�|jd��|�|jd��|�|j	d��|�|j
d|zdz��|�|jd	|z��|�|jd����	dS)
NrXr�r&rYrrr�rU�=)
rlr=r�r0�tm_year�tm_mon�tm_mday�tm_hour�tm_min�tm_sec�tm_wday�tm_yday�tm_isdst)r1rrr�r�s    r#�test_timetuplezTestDate.test_timetuples#���q���	-�	-�A��
�
�d�A�q��s�+�+�A����
�
�A����Q��q�!�A�#�q�!�Q��1�Q�3�� C�D�D�D��
�
�d�A�q��s�+�+�A����
�
�A����Q��q�!�A�#�q�!�Q��1��a���A��r� J�K�K�K��
�
�d�A�q��s�+�+�A����
�
�A����Q��q�!�A�#�q�!�Q��1��a���A��r� J�K�K�K����Q�Y��-�-�-����Q�X�q�)�)�)����Q�Y��!��,�,�,����Q�Y��*�*�*����Q�X�q�)�)�)����Q�X�q�)�)�)����Q�Y��1��a��0�0�0����Q�Y��1��-�-�-����Q�Z��,�,�,�,�-	-�	-r%c�2�d}|j|�}tD]G\}}}|�||��}|�|��}|�||���H|�|���|�d����dS)N�r]rXr�rY�r=r�r�r�r0�
__reduce__�
__reduce_ex__r�s        r#r�zTestDate.test_pickling0s������t�}�d�#��)7�	,�	,�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+�+�������*�*�D�,>�,>�q�,A�,A�B�B�B�B�Br%c��gd�}d}|j|�}|D]/}tD]%}||d���}|�||���&�0dS)N)s'cdatetime
date
(S'\x07\xdf\x0b\x1b'
tR.scdatetime
date
(U�tR.s�cdatetime
date
U��R.)��r���latin1��encoding�r=�pickle_loadsr0�r1rr�r	�datar�r�s       r#�test_compat_unpicklezTestDate.test_compat_unpickle9s���
�
�
��
�� �4�=�$�'���	4�	4�D�%�
4�
4���%��x�8�8�8��� � ��(�3�3�3�3�
4�	4�	4r%c����|�ddd���|�ddd��}|��|��|��|k��|��|k��|��|k��|��|k��|��|k��dD�]9}|j|�}|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k����;tD�]D�|���kd��|���kd��|���kd��|���kd��|�t��fd���|�t��fd���|�t��fd	���|�t��fd
���|�t��fd���|�t��fd���|�t��fd
�����FdS)NrYrUr[r�FTc�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>er�r%c�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>fr�r%c�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>gr�r%c�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>hr�r%c�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>ir�r%c�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>jr�r%c�����kSr4rr�s��r#rEz'TestDate.test_compare.<locals>.<lambda>kr�r%)r=r0r�r�r�r�r�r�s   @@r#r�zTestDate.test_compareFse����
�]�]�1�a��
#�
#��
�]�]�1�a��
#�
#������R� � � �����b��!�!�!�����b��!�!�!�����r��"�"�"�����b��!�!�!�����b��!�!�!�3�
	'�
	'�D�����%�B��O�O�B��G�$�$�$��O�O�B��G�$�$�$��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&����R�"�W�%�%�%����R�"�W�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&�&� �	?�	?�F����R�6�\�5�1�1�1����R�6�\�4�0�0�0����V�r�\�5�1�1�1����V�r�\�4�0�0�0����i�)<�)<�)<�)<�)<�=�=�=����i�)<�)<�)<�)<�)<�=�=�=����i�)=�)=�)=�)=�)=�>�>�>����i�)=�)=�)=�)=�)=�>�>�>����i�)<�)<�)<�)<�)<�=�=�=����i�)<�)<�)<�)<�)<�=�=�=����i�)=�)=�)=�)=�)=�>�>�>�>�	?�	?r%c����|�ddd���|��dkd��|�d�kd��|��dkd��|�d�kd��|�t�fd���|�t�fd���Gd	�d
��}|���|���kd��|���kd��|���kd��|���kd��|�t��fd���|�t��fd���dS)
NrSr[rVr&FTc����dkSr�r��ours�r#rEz-TestDate.test_mixed_compare.<locals>.<lambda>ws���S�1�W�r%c���d�kSr�rrAs�r#rEz-TestDate.test_mixed_compare.<locals>.<lambda>xs���Q��W�r%c��eZdZdS)�.TestDate.test_mixed_compare.<locals>.SomeClassNr�rr%r#�	SomeClassrE|r�r%rFc�����kSr4r�rB�theirs��r#rEz-TestDate.test_mixed_compare.<locals>.<lambda>�s���S�5�[�r%c�����kSr4rrHs��r#rEz-TestDate.test_mixed_compare.<locals>.<lambda>�s���U�S�[�r%)r=r0r�r�)r1rFrBrIs  @@r#�test_mixed_comparezTestDate.test_mixed_comparems������m�m�D�!�Q�'�'��	
������5�)�)�)�����c��5�)�)�)�������4�(�(�(�����c��4�(�(�(�	
���)�_�_�_�_�5�5�5����)�_�_�_�_�5�5�5�	�	�	�	�	�	�	�	��	����������u�-�-�-�����#��u�-�-�-�������t�,�,�,�����#��t�,�,�,����)�%8�%8�%8�%8�%8�9�9�9����)�%8�%8�%8�%8�%8�9�9�9�9�9r%c��|�|jj��|�|jj��dSr4)r�r=r�r�r7s r#r�zTestDate.test_bool�s6������
�)�*�*�*�����
�)�*�*�*�*�*r%c�>�dD]�}|�|dd��}|�d��d|zkrd|�|�d��d|z��tjr,|�|�d��d|z����dS)N)r&r�r`�cr�i�rY�r&z%Yz%04d�%dz%4Y)r=r�r0r
�has_strftime_extensions)r1rlr�s   r#�test_strftime_y2kzTestDate.test_strftime_y2k�s���6�	D�	D�A��
�
�a��A�&�&�A�
�z�z�$���6�A�:�-�-�� � ����D�!1�!1�4�!�8�<�<�<��2�D��$�$�Q�Z�Z��%6�%6���
�C�C�C��	D�	Dr%c�d�|j}gd�}||�}|�||�����d}dD]C\}}|dd�}|||<||�}|jd
i||i��}	|�||	��|dz
}�D|ddd��}|�t|jd�	��dS)Nr/r)�r_rY�r`rU�r�r[r&rSrYr~r��r_r�r=r0rr�r��
r1�clsr��baserrrF�newval�newargsr	�gots
          r#�test_replacezTestDate.test_replace�s����m���y�y���s�D�z������t�|�|�~�~�.�.�.�
��)�	�	�L�D�&��1�1�1�g�G��G�A�J��s�G�}�H��$�,�0�0�$���0�0�C����X�s�+�+�+�
��F�A�A��s�4��B�������*�d�l���>�>�>�>�>r%c��Gd�d|j��}|ddd��}|�t|�d�����|��dS)Nc��eZdZdS)�4TestDate.test_subclass_replace.<locals>.DateSubclassNr�rr%r#r�rb�r�r%r���r&i�rW�r=r5r�r)r1r�rys   r#�test_subclass_replacezTestDate.test_subclass_replace�ss��	�	�	�	�	�4�=�	�	�	��\�$��1�
%�
%���
�
�d�2�:�:�4�:�0�0�1�1�<�@�@�@�@�@r%c����G�fd�d�j��}d}�j|�}||iddi��}��|j|����|jd����|jd����|���|�������|�d��|j|jzdz
��dS)Nc�$��eZdZdZ�fd�Zd�ZdS)�&TestDate.test_subclass_date.<locals>.Crfc���|���}|�d��}�jj|g|�Ri|��}||_|S�Nr��r �popr=r�r��rZr��kws�tempr��resultr1s      �r#r�z.TestDate.test_subclass_date.<locals>.C.__new__��Q����x�x�z�z������)�)��.���.�s�B�T�B�B�B�T�B�B��$����
r%c�&�||jz|jzSr4)r_r`�r1�starts  r#�newmethz.TestDate.test_subclass_date.<locals>.C.newmeth�s���t�y�(�4�:�5�5r%N�rKrbrc�	theAnswerr�rur7s�r#�Crh�sB��������I�
�
�
�
�
�
6�
6�
6�
6�
6r%rx�r�r[rdr�rXrfrZ)	r=r0rJrwr�rhrur_r`�r1rxr�r�rTs`    r#rzTestDate.test_subclass_date�s���	6�	6�	6�	6�	6�	6�	6��
�	6�	6�	6����d�m�T�"���a��&�'�1��&�&��������*�*�*�������+�+�+������A�&�&�&���������#�-�-�/�/�:�:�:�������R���#�(�S�Y�*>��*B�C�C�C�C�Cr%c�|��G�fd�d�j��}d}d}d}||�}��||����|jd��t	j|t
d�������}d|ffd	|ffd
|ffg}|D]�\}}	||fD]�}
��t|
��|���5t|
|��}||	�}��||����||����|jd��ddd��n#1swxYwY����dS)Nc���eZdZ�fd�ZdS)�CTestDate.test_subclass_alternate_constructors.<locals>.DateSubclassc�B���jj|g|�Ri|��}d|_|S�NrX�r=r�r��rZr��kwargsrpr1s    �r#r�zKTestDate.test_subclass_alternate_constructors.<locals>.DateSubclass.__new__��3���.���.�s�D�T�D�D�D�V�D�D�� ����
r%N�rKrbrcr�r7s�r#r�r}��.�������
�
�
�
�
�
�
r%r�ryi�(z
2003-04-14rXrrir��
fromisoformat��
base_obj_type�constr_name)r=r�r0r�r�combiner�	timestampr3r��getattr)
r1r�r��d_ord�d_isoformat�base_dr�r�r��constr_args�base_obj�constrrys
`            r#�$test_subclass_alternate_constructorsz-TestDate.test_subclass_alternate_constructors�s����	�	�	�	�	�	�	�4�=�	�	�	�����"����t�$�����f�l�3�3�3������q�)�)�)��
�f�d�1�g�g�
.�
.�
8�
8�
:�
:���U�H�%�
�r�e�$�
�{�n�-�
�
�)3�	2�	2�$�K��)�6�2�
2�
2���\�\��X���.9�"�;�;�
2�
2�$�X�{�;�;�F����-�B��)�)�"�l�;�;�;��$�$�R��0�0�0��$�$�R�X�q�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��
2�	2�	2s�AD/�/D3�6D3c�
�d}t|�}tD]o\}}}|�||��}|�|��}|�||��|�t
|t�����pdS)Nr()rWr�r�r�r0r�rkr�s        r#�test_pickling_subclass_datez$TestDate.test_pickling_subclass_date�s������T�"��)7�	?�	?�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+��O�O�J�w��=�=�>�>�>�>�		?�	?r%c	�d�d}t|jt��s
|dd�}dD]9}|�t|j|dd�|z|dd�z���:t|jt��rg|�td��5|�t
dgt|��z��d��ddd��n#1swxYwYtdd	��D];}|�|dd�t
|g��z|dd�z���<dS)
Ns
1995-03-25r[)�9��
��rYrU�^bad tzinfo state arg$r&r�r)	r�r=rr�r�r�bytesr�rl)r1r[�
month_byte�ord_bytes    r#�test_backdoor_resistancez!TestDate.test_backdoor_resistances������$�-��2�2�	�����8�D�5�	K�	K�J����i���)-�b�q�b��J�)>��a�b�b��)I�
K�
K�
K�
K��d�m�X�.�.�	=��'�'�	�3K�L�L�
=�
=��
�
�e�Q�C�#�d�)�)�O�4�4�e�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��a����	C�	C�H�
�M�M�$�r��r�(�U�H�:�%6�%6�6��a�b�b��A�B�B�B�B�		C�	Cs�5C�C� Cc�4�gd�}|D]�}|j|�}|���}|�|���5|j�|�����}|�||��ddd��n#1swxYwY��dS)N)�r&r&r&)rYrYrd�r�r&r&)rSrYr~�rr�r�)rr[rU�i�rVr)�dt_str�r=r�r3r�r0)r1�
base_dates�dt_tupleryr��dt_rts      r#�test_fromisoformatzTestDate.test_fromisoformat s���
�
�
�
�#�	,�	,�H�����)�B��\�\�^�^�F����V��,�,�
,�
,��
�3�3�B�L�L�N�N�C�C��� � ��U�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,s�AB�B	�B	c��d|�ddd��fd|�ddd��fd|�ddd��fd|�d	d
d��fd|�ddd��fd
|�ddd��fd|�ddd��fd|�d	d
d��fd|�dd
d��fd|�dd
d��fd|�ddd��fd|�ddd��fd|�dd
d��fd|�dd
d��fd|�dd
d��fd|�dd
d��fd|�dd
d��fd|�dd
d��fd|�d dd��fd!|�d dd��fd"|�d#d
d��fd$|�d#d
d��fd%|�d&dd��fd'|�d(d
d)��fd*|�d(d
d)��fd+|�d,dd��fg}|D]c\}}|�|�-��5|j�|��}|�||��ddd��n#1swxYwY�ddS).N�00010101r&�20000101rS�20250102��rY�99991231r.r�r�z
0001-01-01z
2000-01-01�
2025-01-02z
9999-12-31�2025W01��rz2025-W01�2025W014z
2025-W01-4�2026W01r~z2026-W01�2026W013z
2026-W01-3�2022W52��r�z2022-W52�2022W527��z
2022-W52-7�2015W534r-z
2015-W53-4z
2015-W53-5���2020W531��rgz
2020-W53-1z
2020-W53-6����	input_str)r=r3r�r0�r1�examplesr�r	�actuals     r#� test_fromisoformat_date_examplesz)TestDate.test_fromisoformat_date_examples4s.��
����q�!�Q�/�/�0�
����t�Q��2�2�3�
����t�Q��2�2�3�
����t�R��4�4�5�
�4�=�=��A�q�1�1�2�
�4�=�=��q�!�4�4�5�
�4�=�=��q�!�4�4�5�
�4�=�=��r�2�6�6�7�
��
�
�d�B��3�3�4�
����t�R��4�4�5�
����t�Q��2�2�3�
�4�=�=��q�!�4�4�5�
��
�
�d�B��3�3�4�
����t�R��4�4�5�
����t�R��4�4�5�
�4�=�=��r�2�6�6�7�
��
�
�d�B��3�3�4�
����t�R��4�4�5�
����t�Q��2�2�3�
�4�=�=��q�!�4�4�5�
����t�R��4�4�5�
�4�=�=��r�2�6�6�7�
�4�=�=��q�!�4�4�5�
����t�R��4�4�5�
�4�=�=��r�2�6�6�7�
�4�=�=��q�!�4�4�5�5
��:$,�	3�	3��I�x����	��2�2�
3�
3���4�4�Y�?�?��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��	3�	3s�1K
�
K	�K	c��Gd�d|j��}|ddd��}|�|�����}|�||��dS)Nc��eZdZdS)�:TestDate.test_fromisoformat_subclass.<locals>.DateSubclassNr�rr%r#r�r�Xr�r%r�r�r�rd)r=r�r�r�)r1r�ryr�s    r#�test_fromisoformat_subclassz$TestDate.test_fromisoformat_subclassWsz��	�	�	�	�	�4�=�	�	�	��\�$��B�
'�
'���*�*�2�<�<�>�>�:�:�����e�\�2�2�2�2�2r%c��gd�}|D]N}|�t��5|j�|��ddd��n#1swxYwY�OdS)N)rrz	009-03-04�	123456789z
200a-12-04z
2009-1a-04z
2009-12-0az
2009-01-32z
2009-02-29z
2019-W53-1z
2020-W54-1u2009�02�28)r�r�r=r��r1�bad_strs�bad_strs   r#�test_fromisoformat_failsz!TestDate.test_fromisoformat_failsas���

�

�

�� �	5�	5�G��"�"�:�.�.�
5�
5��
�+�+�G�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��	5�	5s�A
�
A	�A	c���ddtjd��g}|D]N}|�t��5|j�|��ddd��n#1swxYwY�OdS)Ns
2009-03-01z
2009-03-01��io�StringIOr�r�r=r��r1�	bad_types�bad_types   r#�"test_fromisoformat_fails_typeerrorz+TestDate.test_fromisoformat_fails_typeerrorvs���"�D�"�+�l�*C�*C�D�	�!�	6�	6�H��"�"�9�-�-�
6�
6��
�+�+�H�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6��A�A!	�$A!	c�4�ddddddddd	d
ddd
tddftddfg}|D]s}|�|���5|j|�}|���}|jj|�}|�||��ddd��n#1swxYwY�tdS)N)r�r[rU)r�r&rY)i�r�r)r�r&rY)r�r�r�r�)r�r�r�)rSr&r&)rSr�r�r�)rr�r�r�)r.r�r�r&r�r�)�	datecomps)rrr3r=r��fromisocalendarr0)r1�datesr��dobj�isocal�d_roundtrips      r#�test_fromisocalendarzTestDate.test_fromisocalendar}s��
�������������
�a��O�
�b�"��
��$�	4�	4�I����	��2�2�
4�
4�$�t�}�i�0���)�)�+�+��;�d�m�;�V�D��� � ��{�3�3�3�

4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4s�AB�B	�B	c��gd�}|D]q}|�|���5|�t��5|jj|�ddd��n#1swxYwYddd��n#1swxYwY�rdS)N)
)r�rr&)r�rr&)r��6r&)r�r&r)r�r&r)r�r&�)r�r�r&)rar&r&)rr&r&)i��r&r&)�r&r&)r�r�r&)r�r&r��r�)r3r�r�r=r�)r1�isocalsr�s   r#�!test_fromisocalendar_value_errorsz*TestDate.test_fromisocalendar_value_errors�s��
�
�
�� �	;�	;�F����V��,�,�
;�
;��&�&�z�2�2�;�;�1�D�M�1�6�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��	;�	;s4�A-�A�
A-�A�A-�A�A-�-A1	�4A1	c���ttd�g}g}d}td��D]L}|D]G}t|��}|||��||<|�t|�����H�M|D]q}|�|���5|�t��5|j	j
|�ddd��n#1swxYwYddd��n#1swxYwY�rdS)Nc��dSr4r)�xs r#rEz;TestDate.test_fromisocalendar_type_errors.<locals>.<lambda>�s��d�r%)r�r&r&rUr�)r�r-rl�listr�r�r3r�r�r=r�)r1�
err_txformersr�r[rr�txformer�err_valr�s        r#� test_fromisocalendar_type_errorsz)TestDate.test_fromisocalendar_type_errors�s������N�
�
������q���	/�	/�A�)�
/�
/���t�*�*��%�X�g�a�j�1�1���
����u�W�~�~�.�.�.�.�
/�
�	;�	;�F����V��,�,�
;�
;��&�&�y�1�1�;�;�1�D�M�1�6�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��	;�	;s6�C�&C�6C�C�C�	C�
C�C	� C	N)0rKrbrcrr=r�r�rtr|r�r�rsr�r�r�r�r�r�r�r�r�r�r�r�rr�rr&r�r6r�rKr�rRr_rerr�r�r�r�r�r�r�r�r�r�r�rr%r#r\r\Ls��������H�$�$�$�&�&�&�-�-�-�^A�A�A�2B�B�B�,$�$�$�204�04�04�dA�A�A�	%�	%�	%�&�&�&�A�A�A�:L�L�L�G�G�G�<	,�	,�	,�$,�$,�$,�L6�6�6�@�@�@�%�%�%�N
�
�
� 5�5�5�:	?�	?�	?�E�E�E�-�-�-�2C�C�C�4�4�4�%?�%?�%?�N:�:�:�4+�+�+�
D�D�D�?�?�?�*A�A�A�D�D�D�4*2�*2�*2�X?�?�?�C�C�C�4,�,�,�(!3�!3�!3�F3�3�3�5�5�5�*6�6�6�4�4�4�<;�;�;�,;�;�;�;�;r%r\c��eZdZdZdS)�SubclassDatetimer&NrXrr%r#r�r��rZr%r�c�N�eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejd��d���Zd�Zejd��d���Zd�Zd�Zd�Z d�Z!d�Z"e#j$e%j&dkd ��d!���Z'e#j$e%j&dkd ��d"���Z(d#�Z)d$�Z*d%�Z+d&�Z,d'�Z-d(�Z.d)�Z/d*�Z0ejd+��d,���Z1d-�Z2d.�Z3d/�Z4d0�Z5d1�Z6d2�Z7d3�Z8d4�Z9d5�Z:d6�Z;d7�Z<d8�Z=d9�Z>d:S);�TestDateTimec��|�ddddd��}|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��dS)Nr^rUr&r�r�	r=r0r_r`r�rfrrrjrxs  r#r�z"TestDateTime.test_basic_attributes�s���
�]�]�4��A�r�1�
-�
-�������$�'�'�'������1�%�%�%�������#�#�#������"�%�%�%������A�&�&�&������A�&�&�&�������+�+�+�+�+r%c	��|�ddddddd��}|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��dS)Nr^rUr&r�r��@r�rxs  r#�test_basic_attributes_nonzeroz*TestDateTime.test_basic_attributes_nonzero�s����]�]�4��A�r�2�r�4�
8�
8�������$�'�'�'������1�%�%�%�������#�#�#������"�%�%�%������B�'�'�'������B�'�'�'�������.�.�.�.�.r%c
���|�ddddddd��|j���fD]�}t|��}|�|�d����|d	d�}t|��}|�||��|�|j|j|j	|j
|j|j|j
��}|�||����dS)
Nr&rYrUr[rVr]rXr�r�)r=r�r�r�rDr�r0r_r`r�rfrrrjrcs    r#r�zTestDateTime.test_roundtrip�s����=�=��A�q�!�Q��1�5�5��=�$�$�&�&�(�
	&�
	&�B��R���A��O�O�A�L�L��5�5�6�6�6��!�"�"��A��q�'�'�C����R��%�%�%��-�-�����2�6� "����B�I� "��0�0�C�
���R��%�%�%�%�
	&�
	&r%c
�r	�|�ddddddd��}|�|���d��|�|�d��d��|�|�d	��d
��|�|�d��d��|�|�d
��d��|�|�d���d��|�|�d���d��|�|�d���d��|�|�d���d��|�|�d���d��|�|�d���d��|�|�d	d���d��|�t|jd���|�t|jd
���|�t|��d
��|�dddddddtj���}|�|�d���d��|�ddddddd��}|�|�d���d ��|�dddddd��}|�|�d���d��|�|�d���d��|�|�d���d!��|�ddd��}|�|���d"��|�|�d��d"��|�|�d	��d#��|�t|��d#��ttd$�%��d&��}|�ddd|���}|�|���d'��dS)(Nr&rYrUr[rVr�z0001-02-03T04:05:01.000123r�� z0001-02-03 04:05:01.000123�z0001-02-0304:05:01.000123ru0001-02-03�04:05:01.000123r���timespecz
0001-02-03T04rjz0001-02-03T04:05r�z0001-02-03T04:05:01rUz0001-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��XXXz0002-03-02T00:00:00+00:00:16)
r=r0r�r�r�r�rr6rerrs   r#r�zTestDateTime.test_isoformat�s.���M�M�!�Q��1�a��C�0�0����������+G�H�H�H�������S�)�)�+G�H�H�H�������S�)�)�+G�H�H�H�������V�,�,�.M�N�N�N�������X�.�.�:�	<�	<�	<�������g��6�6��H�H�H�������i��8�8�:L�M�M�M�������i��8�8�:O�P�P�P�������n��=�=�?X�Y�Y�Y�������n��=�=�?[�\�\�\�������f��5�5�7S�T�T�T��������y��A�A�CU�V�V�V����*�a�k�E��B�B�B����*�a�k�H��E�E�E�����Q���!=�>�>�>��M�M�!�Q��1�a��F�8�<�M�H�H��������n��=�=�?^�_�_�_��M�M�!�Q��1�a��F�3�3��������n��=�=�?X�Y�Y�Y��M�M�!�Q��1�a��+�+��������f��5�5�7L�M�M�M�������n��=�=�?X�Y�Y�Y�������n��=�=�?[�\�\�\��M�M�!�Q��"�"����������+@�A�A�A�������S�)�)�+@�A�A�A�������S�)�)�+@�A�A�A�����Q���!6�7�7�7�
��2�.�.�.��
6�
6���M�M�!�Q��"�M�-�-����������(F�G�G�G�G�Gr%c�H�dtd���fdtd���fdtdd�	��fd
tddd
���fdtdddd���fg}ddtjfdttd����fg}|d�|D��z
}|�dddddd��}d}|D]i\}}|�|���}||z}|�|���5|���|ksJ�	ddd��n#1swxYwY�jdS)N�05:00rVr��02:00rY�06:27r]r.r��12:32:30r�r�rr'�02:04:09.123456r[r�rgr)�rN�+00:00rc�R�g|]$\}}dD]\}}||zt||z��f���%S�))�-r)�+r&r�r!r	r[�prefix�signs     r#r$z8TestDateTime.test_isoformat_timezone.<locals>.<listcomp>4�]��
�
�
���"� 5�
�
�����h�
����� 3� 3�4�
�
�
�
r%r�r&�%z2016-04-01T12:37:09r��tzi�rrr6r=rr3r�)	r1�	tzoffsets�tzinfos�dt_base�exp_base�exp_tzrry�exps	         r#�test_isoformat_timezonez$TestDateTime.test_isoformat_timezone%s���
�i�a�(�(�(�)�
�i�a�(�(�(�)�
�i�a��4�4�4�5�
���R��D�D�D�E�
�	��1�a�V\� ]� ]� ]�^�
�	�
�
�x�|�$�
�x�	�!���-�-�.�
��	�
�
� )�
�
�
�	
���-�-��a��B��A�6�6��(��"�	-�	-�K�F�C������,�,�B��V�#�C����#��&�&�
-�
-��|�|�~�~��,�,�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��	-�	-s�.D�D	�D	c	���|�ddddddd��}|�|�d��t|����|�t
d	��5|�d��ddd��n#1swxYwYGd
�d|j��}|ddddddd��}|�|�d��d��Gd�d
|j��}|ddddddd��}|�|�d��t|����dD]�}|�|�|��|�|����|�|�|��|�|����|�|�|��d
����dS)Nr�r�r'r[rVr&r�rr�c��eZdZd�ZdS)�#TestDateTime.test_format.<locals>.Ac��dSr�rr7s r#r�z+TestDateTime.test_format.<locals>.A.__str__Lrr%Nrrr%r#r�r"Krr%r�c��eZdZd�ZdS)�#TestDateTime.test_format.<locals>.Bc��dSrrrs  r#r�z,TestDateTime.test_format.<locals>.B.strftimeSrr%Nr
rr%r#rr%Rrr%rrr
rs       r#rzTestDateTime.test_formatCs?��
�]�]�4��B��1�a��
5�
5��������r�*�*�C��G�G�4�4�4�
�
#�
#�I�/E�
F�
F�	�	��M�M�#����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�	�	�	��
�	�	�	�
�A�d�A�r�1�a��C�(�(��������b�)�)�3�/�/�/�	�	�	�	�	��
�	�	�	�
�A�d�A�r�1�a��C�(�(��������b�)�)�3�r�7�7�3�3�3��	5�	5�C�
���R�]�]�3�/�/����S�1A�1A�B�B�B����Q�\�\�#�.�.����C�0@�0@�A�A�A����Q�\�\�#�.�.��4�4�4�4�
	5�	5s�-B�B�Bc	�v�ddl}|�ddddddd��}|�|���d��|�ddd	dddd��}|�|���|j|j|���������dS)
Nrr^rUrY�rVr�zSat Mar  2 18:03:05 2002r�)rr=r0r�r�r�)r1rr�s   r#�test_more_ctimezTestDateTime.test_more_ctime`s��������M�M�$��1�b�!�Q��4�4����������$>�?�?�?�
�M�M�$��2�r�1�a��5�5����������J�D�J�{�t�{�1�;�;�=�=�/I�/I�$J�$J�K�K�K�K�Kr%c	���|�dddddd��}|�dddddd��}|�dddddd��}|�||��|�||k��|�tddd	d
d
d��}t	d���}||z}|�||z
|��|�||k��dS)
Nr^rUr&r�rr'r�r�r�r�rir�)r=r0r�rr)r1r�rT�dt3rqs     r#�test_tz_independent_comparingz*TestDateTime.test_tz_independent_comparingps����m�m�D�!�Q��1�a�0�0���m�m�D�!�Q��A�q�1�1���m�m�D�!�Q��1�a�0�0������c�"�"�"�����c�	�"�"�"��m�m�G�R��R��R��@�@��
�A�
&�
&�
&���B�h������s��B�'�'�'�����c�	�"�"�"�"�"r%c
��Gd�dt��}|�ddddddd|dd����}|�t|jd��dS)	Nc��eZdZd�ZdS)�DTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfoc�>�Gd�dt��}|d��S)Nc��eZdZd�ZdS)�ZTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStrc��dSr4r)r1r�s  r#rzbTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname.<locals>.MyStr.replace�s��#�tr%N)rKrbrcrrr%r#�MyStrr2�s#������$�$�$�$�$r%r4rF)r�)r1ryr4s   r#r}zKTestDateTime.test_strftime_with_bad_tzname_replace.<locals>.MyTzInfo.tzname�s<��$�$�$�$�$�C�$�$�$��u�V�}�}�$r%N)rKrbrcr}rr%r#�MyTzInfor/�s#������
%�
%�
%�
%�
%r%r5r�rUrYrrF�%Z)rer=r�r�r�)r1r5r�s   r#�%test_strftime_with_bad_tzname_replacez2TestDateTime.test_strftime_with_bad_tzname_replace�sy��	%�	%�	%�	%�	%�{�	%�	%�	%�
�M�M�$��1�a��A�q�(�(�1�f�2E�2E�F�F�����)�Q�Z��6�6�6�6�6r%c
�	�|�tdd��|�tdd��|�t|jtdz
dd��|�t|jtdzdd��|�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�	�	|�t|jdddd���|�t|jdddd���|�t
|jddddddddd��dS)Nr&rSr�rrrYr~rr�rr�r�r�r�r�r�rr/r�rXr(r��fold)r=rrr�r�r�r7s r#r�z+TestDateTime.test_bad_constructor_arguments�sf���
�
�g�q�!�$�$�$��
�
�g�q�!�$�$�$����*�d�m�W�Q�Y��1�E�E�E����*�d�m�W�Q�Y��1�E�E�E��
�
�d�A�q�!�!�!��
�
�d�B��"�"�"����*�d�m�T�1�a�@�@�@����*�d�m�T�2�q�A�A�A��
�
�d�A�r�"�"�"��
�
�d�A�r�"�"�"��
�
�d�A�r�"�"�"����*�d�m�T�1�b�A�A�A����*�d�m�T�1�b�A�A�A����*�d�m�T�1�b�A�A�A����*�d�m�T�1�b�A�A�A����*�d�m�T�1�a�@�@�@����*�d�m�T�1�b�A�A�A��
�
�d�A�r�1�%�%�%��
�
�d�A�r�2�&�&�&����*�d�m�T�1�b�"�E�E�E����*�d�m�T�1�b�"�E�E�E��
�
�d�A�r�2�q�)�)�)��
�
�d�A�r�2�r�*�*�*����*�d�m�T�1�b�"�b�I�I�I����*�d�m�T�1�b�"�b�I�I�I��
�
�d�A�r�2�r�1�-�-�-��
�
�d�A�r�2�r�2�.�.�.����*�d�m�T�1�b�"�b�"�M�M�M����*�d�m�T�1�b�"�b�"�M�M�M��
�
�d�A�r�2�r�2�q�1�1�1��
�
�d�A�r�2�r�2�v�6�6�6����*�d�m���2�r�2�r�2�	7�	7�	7����*�d�m���2�r�2�r�!�	#�	#�	#�	
���*�d�m���2�B�	�	0�	0�	0����*�d�m���2�A�	�	/�	/�	/�	
���)�T�]���2�r�2�r�1�d�A�	?�	?�	?�	?�	?r%c�~�|�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)NrSr�r�r�r�r&rYr�rrVr�r�s    r#r�zTestDateTime.test_hash_equality�s����M�M�$��B��B��3�3���M�M�$��B��B��3�3������A��������a���$�q�'�'�*�*�*��!�f����A������S���1�%�%�%�����Q���#�#�#�����Q���#�#�#��M�M�$��Q��Q��3�3���M�M�$��Q��Q��3�3������A��������a���$�q�'�'�*�*�*��!�f����A������S���1�%�%�%�����Q���#�#�#�����Q���#�#�#�#�#r%c�����|�ddd���|�ddd��}�|z
}|�|jdtt	ddd����z��|�|jd��|�|jd��|�ddd	d
d���tddd��}tdd
��}td���td��}|��|z|�ddd	dd����|�|�z|�ddd	dd����|��d|zz|�ddddd����|��|z
|�ddd	dd����|�|�z|�ddd	dd����|��|z
�|z��|��d|zz
|�ddddd����|���z|�dddd
d����|���z
|�dddd
d����|��|z|�dddd
d����|��|z
|�dd	dd
d����|��d|zz|�dddd
d����|��d|zz
|�dddd
d����|��|z�z
|��|���z�z
���|��|z�z
|��|��|z�z
|��|��|z
�z
|��|���z
�z
���|��|z
�z
|��|��|z
�z
|��|���|zz
|��|����zz
���|���|zz
|��|���|zz
|��|���|z
z
|��|����z
z
���|���|z
z
|��|���|z
z
|��|��|�z|z|zz|�ddddddd����|��|�z|z|zz�|z�z|z|z��|��|�z|z|zz
|�dd	ddddd����|��|�z|z|zz
�|z
�z
|z
|z
��dD]~�|�t��fd���|�t��fd���|�t��fd ���|�t��fd!����|�t��fd"���|�t��fd#���|�t��fd$���|�t��fd%���|�t��fd&���|�t�fd'���|�t�fd(���|�t�fd)���dS)*Nr^r&r�r�r�r[rrUrYr<r]rYrrXr(r'rr<r�r�r�r�r�r�r�rVr�r^ruc�����zSr4rrxs��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	ryr%c�����z
Sr4rrxs��r#rEz0TestDateTime.test_computations.<locals>.<lambda>
	ryr%c�����zSr4rrxs��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	ryr%c�����z
Sr4rrxs��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	ryr%c�����z
Sr4rr�s��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s��r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s�r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s�r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%c�����zSr4rr�s�r#rEz0TestDateTime.test_computations.<locals>.<lambda>	r�r%r�)	r1ror��millisecrfr�rnr�rrs	      @@@r#rszTestDateTime.test_computations�s�������M�M�$��2�&�&���M�M�$��2�&�&����s�������F�S��t�T�1�1E�1E�-F�-F�$F�G�G�G������q�)�)�)�����*�A�.�.�.��M�M�$��1�b�!�,�,���Q��4�(�(����D�!�!����l�l����|�|������T��4�=�=��q�!�R��#C�#C�D�D�D�������4�=�=��q�!�R��#C�#C�D�D�D�����R��W��d�m�m�D�!�Q��1�&E�&E�F�F�F�����T��4�=�=��q�!�R��#C�#C�D�D�D����$����D�M�M�$��1�b�!�$D�$D�E�E�E�����T��1��u�9�-�-�-�����R��W��d�m�m�D�!�Q��A�&F�&F�G�G�G�����S��$�-�-��a��B��"B�"B�C�C�C�����S��$�-�-��a��B��"B�"B�C�C�C�����T��4�=�=��q�!�R��#C�#C�D�D�D�����T��4�=�=��q�"�b�!�#D�#D�E�E�E�����R��W��d�m�m�D�!�Q��A�&F�&F�G�G�G�����R��W��d�m�m�D�!�Q��A�&F�&F�G�G�G����!�d�(�a���.�.�.����!�c�'�Q���,�,�,����!�d�(�a���.�.�.����!�h�,�!�+�X�6�6�6����!�d�(�a��$��/�/�/����!�c�'�Q����-�-�-����!�d�(�a��$��/�/�/����!�h�,�!�+�h�Y�7�7�7�����a�$�h��$��/�/�/�����a�#�g����-�-�-�����a�$�h��$��/�/�/�����a�(�l�+�h�Y�7�7�7�����a�$�h���.�.�.�����a�#�g���,�,�,�����a�$�h���.�.�.�����a�(�l�+�X�6�6�6�����d�S�j�4�/�(�:�;����t�Q��B��1�d�C�C�	E�	E�	E�����d�S�j�4�/�(�:�;���H��+�t�3�x�?�	A�	A�	A�����d�S�j�4�/�(�:�;����t�Q��B��2�v�F�F�	H�	H�	H�����d�S�j�4�/�(�:�;���H��+�t�3�x�?�	A�	A�	A��	6�	6�A����i������5�5�5����i������5�5�5����i������5�5�5����i������5�5�5�5�	
���)�_�_�_�_�_�5�5�5����)�_�_�_�_�_�5�5�5����)�_�_�_�_�_�5�5�5����)�%5�%5�%5�%5�%5�6�6�6����)�%5�%5�%5�%5�%5�6�6�6����)�]�]�]�]�3�3�3����)�^�^�^�^�4�4�4����)�]�]�]�]�3�3�3�3�3r%c�2�d}|j|�}tD]G\}}}|�||��}|�|��}|�||���H|�|���|�d����dS)N�r]rXr�r<r�r&�rYr)r�s        r#r�zTestDateTime.test_pickling	s���)���t�}�d�#��)7�	,�	,�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+�+�������*�*�D�,>�,>�q�,A�,A�B�B�B�B�Br%c	�n�|�ddddddd��}ttjdz��D]|}tj||��}tj|��}|�|jd��|�|jd��|�|j	d���}dS)	Nr�rYrXr�0ri��r&)
r=rlr �HIGHEST_PROTOCOLr�r�r0r_r`r�)r1rnr"r�ros     r#�test_more_picklingzTestDateTime.test_more_pickling&	s����M�M�$��1�b�"�b�&�9�9���6�2�Q�6�7�7�	'�	'�E���Q��&�&�A���Q���A����Q�V�T�*�*�*����Q�W�a�(�(�(����Q�U�A�&�&�&�&�	'�	'r%c�
�d}t|�}tD]o\}}}|�||��}|�|��}|�||��|�t
|t�����pdS)NrL)r�r�r�r�r0r�rkr�s        r#�test_pickling_subclass_datetimez,TestDateTime.test_pickling_subclass_datetime/	s���)����&��)7�	C�	C�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+��O�O�J�w�0@�A�A�B�B�B�B�		C�	Cr%c��gd�}d}|j|�}|D]/}tD]%}||d���}|�||���&�0dS)N)s@cdatetime
datetime
(S'\x07\xdf\x0b\x1b\x14;\x01\x00\x10\x00'
tR.s#cdatetime
datetime
(U
�;tR.s$�cdatetime
datetime
U
�;�R.)r-r�r.r<r�r&rMr/r0r2r4s       r#r6z!TestDateTime.test_compat_unpickle8	s���	
�	
�	
��.�� �4�=�$�'���	4�	4�D�%�
4�
4���%��x�8�8�8��� � ��(�3�3�3�3�
4�	4�	4r%c�:�gd�}|j|�}|j|�}|�||��|�||k��|�||k��|�||k��|�||k��|�||k��t	t|����D�]Q}|dd�}||dz||<|j|�}|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k����SdS)N)rSr�r~r<r�rrir&)r=r0r�r�rlr�)r1r�r�r�rrr]s      r#�test_more_comparezTestDateTime.test_more_compareJ	s��2�1�1��
�T�]�D�
!��
�T�]�D�
!������R� � � �����b��!�!�!�����b��!�!�!�����r��"�"�"�����b��!�!�!�����b��!�!�!��s�4�y�y�!�!�	'�	'�A��1�1�1�g�G��a��1��G�A�J�����(�B��O�O�B��G�$�$�$��O�O�B��G�$�$�$��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&����R�"�W�%�%�%����R�"�W�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&�&�	'�	'r%c��|�|j|j��|�|j|j��|�|j|j��|�|j|j��|�|j	|j
��|�|j|j��dSr4)
r0rr_rr`rr�r rfr!rr"r)r1r	r^s   r#�verify_field_equalityz"TestDateTime.verify_field_equalityk	s�������)�3�8�4�4�4������#�)�4�4�4�����)�3�7�3�3�3�����)�3�8�4�4�4������#�*�5�5�5������#�*�5�5�5�5�5r%c��ddl}|j��}|j|��}|j�|��}|�||��dS�Nr)r�	localtimer=r�rX�r1rr�r	r^s     r#r�zTestDateTime.test_fromtimestamps	sZ������
�T�Y�[�[��!�4�>�"�%�%���m�)�)�"�-�-���"�"�8�S�1�1�1�1�1r%c��ddl}|j��}|j|��}|j�|��}|�||��dSrZ)r�gmtimer=�utcfromtimestamprXr\s     r#�test_utcfromtimestampz"TestDateTime.test_utcfromtimestamp{	sX������
�T�Y�[�[���4�;�r�?�?���m�,�,�R�0�0���"�"�8�S�1�1�1�1�1r%�EST+05EDT,M3.2.0,M11.1.0c	�f�|�ddd��}|�|���d��|�ddddddd��}|�|���d��|�ddd	dd
��}|�d���}|�|j�|�����|td���z
��|�|j�|�����|td���z��|�dd	ddd
��}|�|j�|�����|��|�ddd��|�d
dd��fD]U}	|���}|�|j�|��|���F#t$rY�RwxYwdS)NrOr&g��@rYrUr[���6�@rcr�rr9r�i'r�)r=r0r�rr�rr�)r1r��t0r�r�s     r#�test_timestamp_naivez!TestDateTime.test_timestamp_naive�	s���M�M�$��1�%�%�����������0�0�0��M�M�$��1�a��A�q�1�1����������;�	=�	=�	=��]�]�4��B��2�
.�
.��
�Z�Z�Q�Z�
�
�������4�4�R�\�\�^�^�D�D��i�a�0�0�0�0�	2�	2�	2������4�4�R�\�\�^�^�D�D��i�a�0�0�0�0�	2�	2�	2�
�M�M�$��A�q�"�-�-�������4�4�Q�[�[�]�]�C�C�Q�G�G�G��-�-��!�A�&�&��
�
�d�2�b�(A�(A�B�	D�	D�A�
D��K�K�M�M��� � ���!<�!<�Q�!?�!?��C�C�C�C��!�
�
�
���
����	D�	Ds�H!�!
H.�-H.c��|�dddtj���}|�|���d��|�dddddddtj���}|�|���d��|�dddddddttd	�
��d�����}|�|���d��dS)
NrOr&rr�rYrUr[g�7��@rr�r�rc)r=rr6r0r�rr�s  r#�test_timestamp_awarez!TestDateTime.test_timestamp_aware�	s����M�M�$��1�X�\�M�:�:�����������,�,�,��M�M�$��1�a��A�q���M�F�F����������1�	3�	3�	3��M�M�$��1�a��A�q�!)�)�"�*=�*=�*=�u�!E�!E�
�
G�
G����������9�	;�	;�	;�	;�	;r%zMSK-03c���|jj|jjfD�]K}|d��}|�|jd��|�|jd��|d��}	|d��}|�|jd��|�|jd��|d��}|�||��|d��}|�||��|d��}|�||��|d	��}|�|jd��|�|jd
��n#t$rYnwxYw|d��}|�||��|d��}|�||��|d
��}|�|jd��|�|jd��|d��}|�|jd��|�|jd��|d��}|�|jd��|�|jd����MdS)Nrg���ư>g���ư�r�r(g:�0�yE�g1E��2��gH�����z�r�i�#gH�����z>g1E��2�>g<"2��?g�P���?r&r�r�)r=r�r_r0rrj�OSError)r1�ftsrr��	minus_oner�s      r#r�z&TestDateTime.test_microsecond_rounding�	s����M�/��M�2�4�%	2�%	2�C��3�q�6�6�D����T�[�!�,�,�,����T�-�q�1�1�1��#�d�)�)�C�
8��C��J�J�	�
� � ��!1�2�6�6�6�� � ��!6��?�?�?��C��J�J��� � ��D�)�)�)��C��J�J��� � ��I�.�.�.��C��J�J��� � ��D�)�)�)��C��L�L��� � ���2�.�.�.�� � ����7�7�7�7���
�
�
���
����"��D�	�	�A����Q��%�%�%���D�	�	�A����Q��$�$�$���J���A����Q�X�q�)�)�)����Q�]�F�3�3�3���I���A����Q�X�q�)�)�)����Q�]�A�.�.�.���F���A����Q�X�q�)�)�)����Q�]�D�1�1�1�1�K%	2�%	2s�)E�
E�Ec��|�d��5|jj�tj���}|���}|�|d��ddd��n#1swxYwY|�d��5|jj�tjd���}|���}|�|d��ddd��dS#1swxYwYdS)Nzminimum UTCrl����w#o9zmaximum UTCr�rrjg�� �MB)	r3r=r�rrr6r�r0r�)r1�min_dt�min_ts�max_dt�max_tss     r#�test_timestamp_limitsz"TestDateTime.test_timestamp_limits�	sv��
�\�\�-�
(�
(�	3�	3��]�&�.�.�h�l�.�C�C�F��%�%�'�'�F�
���V�\�2�2�2�
	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��\�\�-�
(�
(�	5�	5��]�&�.�.�h�l�;<�/�>�>�F��%�%�'�'�F�
���V�^�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s%�AA7�7A;�>A;�AC:�:C>�C>c��	|j�d��n,#ttf$r|�d��YnwxYw|jjt
d���z}|���}|jj�	d���}|jjt
d���z
���t
d	d
d
����
��z}d||fd
||ffD]f\}}}|�|||���5|j�|��}|�||��ddd��n#1swxYwY�gd|t
dd����
��z
fd|t
d����
��z
fd|t
d����
��zfd|t
d����
��zfg}	|	D]�\}}|�||���5|�
ttf��5|j�|��ddd��n#1swxYwYddd��n#1swxYwY��dS)N����Test not valid on this platformr&rVr�rjr�r�r�r�r'�minimum�maximum�r�r	�Too small by a littler�r��Too small by a lotr��Too big by a little�Too big by a lot�r�)r=r�rir�rLr�rr�r�rr�r3r0r�r�)
r1rnrorprq�	test_namer�r	r�r�s
          r#�test_fromtimestamp_limitsz&TestDateTime.test_fromtimestamp_limits�	s`��	=��M�'�'�
�3�3�3�3����'�	=�	=�	=��M�M�;�<�<�<�<�<�	=����
��"�Y�A�%6�%6�%6�6���!�!�#�#����"�*�*�q�*�9�9���=�$�y�r�':�':�':�:�E�E�G�G��"�b�"�=�=�=�K�K�M�M�N���F�F�+��F�F�+�*
�	3�	3�%�Y��H����i�B���B�B�
3�
3���4�4�R�8�8��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��%�f�y�a�r�/J�/J�/J�/X�/X�/Z�/Z�&Z�[�
!�6�I�3�,?�,?�,?�,M�,M�,O�,O�#O�P�
"�F�Y�A�->�->�->�-L�-L�-N�-N�$N�O�
��)��*=�*=�*=�*K�*K�*M�*M�!M�N�	
�
�(�	4�	4�M�I�r����i�B��/�/�
4�
4��&�&�
�M�'B�C�C�4�4��M�/�/��3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4sW��&A�A�1E�E	�E	�"I8�:I!�I8�!I%�%I8�(I%�)I8�8I<	�?I<	c��	|j�d��n,#ttf$r|�d��YnwxYw|jj�tj���}|�	��}|jj
�dtj���}|�	��}d||�d���fd||�d���ffD]�\}}}|�|||���5	|j�|��}n@#ttf$r,}	|�t|	����Yd}	~	nd}	~	wwxYw|�
||��ddd��n#1swxYwY��d	|d
z
fd|td�
�����z
fd|d
zfd|td�
�����zfg}
|
D]�\}}|�||���5|�t"tf��5|j�|��ddd��n#1swxYwYddd��n#1swxYwY��dS)Nrtrurr�rjrrwrxryrzr&r{r�rVr|r}r~)r=r_rir�rLr�rrr6r�r�r3r�r0rr�r�r�)r1rnrorprqrr�r	r��excr�s           r#�test_utcfromtimestamp_limitsz)TestDateTime.test_utcfromtimestamp_limits
sl��	=��M�*�*�:�6�6�6�6����'�	=�	=�	=��M�M�;�<�<�<�<�<�	=������"�*�*�(�,�*�?�?���!�!�#�#����"�*�*�q���*�N�N���!�!�#�#���F�F�N�N�$�N�$?�$?�@��F�F�N�N�$�N�$?�$?�@�*
�
	3�
	3�%�Y��H����i�B���B�B�
3�
3�,�!�]�;�;�B�?�?�F�F����/�,�,�,��M�M�#�c�(�(�+�+�+�+�+�+�+�+�����,����� � ���2�2�2�

3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��%�f�q�j�1�
!�6�I�3�,?�,?�,?�,M�,M�,O�,O�#O�P�
"�F�Q�J�/�
��)��*=�*=�*=�*K�*K�*M�*M�!M�N�	
�
�(�	7�	7�M�I�r����i�B��/�/�
7�
7��&�&�
�M�'B�C�C�7�7��M�2�2�2�6�6�6�7�7�7�7�7�7�7�7�7�7�7����7�7�7�7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s���&A�A�F�D3�2F�3E0�"E+�&F�+E0�0F�F	�F	�"I9�;I"�I9�"I&�&I9�)I&�*I9�9I=	�I=	c�\�dD](}|�t|jj|���)dSr�r�r�s  r#r�z&TestDateTime.test_insane_fromtimestamp6
r�r%c�\�dD](}|�t|jj|���)dSr�)r�r�r=r_r�s  r#�test_insane_utcfromtimestampz)TestDateTime.test_insane_utcfromtimestamp?
sF��
$�	&�	&�F����m�T�]�-K�$�
&�
&�
&�
&�	&�	&r%�win32z*Windows doesn't accept negative timestampsc�:�|j�d��dS)N��������)r=r�r7s r#�!test_negative_float_fromtimestampz.TestDateTime.test_negative_float_fromtimestampH
s ��	
�
�#�#�E�*�*�*�*�*r%c��|j�d��}|�||�ddddddd����dS)	Nr�i�r�r�r�r�r�i�~)r=r_r0)r1r�s  r#�$test_negative_float_utcfromtimestampz1TestDateTime.test_negative_float_utcfromtimestampN
sK���M�*�*�5�1�1������D�M�M�$��B��B��F�K�K�L�L�L�L�Lr%c�N�ddl}td���}td��D]Z}|j���}|j�|j����}t
||z
��|krn�[|�t
||z
��|��dS)Nrr&r�rU)rrrlr=�utcnowr_rk�assertLessEqual)r1r�	tolerancer�from_now�from_timestamps      r#�test_utcnowzTestDateTime.test_utcnowS
s��������a�(�(�(�	��1�X�X�	�	�E��}�+�+�-�-�H�!�]�;�;�I�D�I�K�K�H�H�N��>�H�,�-�-��:�:���;�	
���S��(�!:�;�;�Y�G�G�G�G�Gr%c�t�d}d}tj|j||��}|j�||��}|�||��|�t
|��|j��|�t
|��|j��gd�}|D]�\}}|�||���5tj|j||��}|j�||��}|�||��ddd��n#1swxYwY��|jj}|�|dd�����dtz��|�|dd�����d	tz��|�|d
d�����tddd�
����ddtjtj
dffD]�\}}|dkrd}	|}
nd}	|}
t|
dzd��\}}d�|	|||��}
||
d��}|�|���t|�����|�|�
��|����d\}
}||
|��}|�|���dt zdtzz��|�|�
��d��|�|�|��|
��|�|dd��jd��|�t(��5|dd��ddd��n#1swxYwY|�t(��5|dd��ddd��n#1swxYwY|�t(��5|dd��ddd��dS#1swxYwYdS)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�%zrYz-0002rWz-00:02:01.000003r&rU)rjr�r�)rr)r�GMTrrrrXz{}{:02d}{:02d} {}rr�)z	+1234 UTCrr�r�rr6z-2400z-000�z)�	_strptime�_strptime_datetimer=�strptimer0r5r�r3rz�MINUTErr�rr}r"r�rr�rr�r�)r1r�r�r	r^�inputsr��	tzsecondsr}rr�r�rj�dtstrryrs                r#�
test_strptimezTestDateTime.test_strptimea
s���*��'���/��
�v�v�N�N���m�$�$�V�V�4�4������3�'�'�'��
�
�d�8�n�n�d�m�4�4�4��
�
�d�3�i�i���/�/�/�
�
�
��
%�	0�	0�N�F�F����V�F��;�;�
0�
0�$�7��
�v�8>�@�@���m�,�,�V�V�<�<��� � ��3�/�/�/�	
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0���=�)�������'�4�0�0�:�:�<�<�a�&�j�I�I�I������'�4�0�0�:�:�<�<�b�6�k�J�J�J�����H�'��.�.�8�8�:�:�
�q�!�!�
<�
<�
<�<�	
�	
�	
�
#-�j�#(�>�/�5�<��?�!C�"E�	2�	2��I�v��1�}�}���$�*�����#��#�G�R�K��4�4�N�E�7�'�.�.�t�U�G�V�L�L�E���%��)�)�B����R�\�\�^�^�Y�y�-I�-I�-I�J�J�J����R�Y�Y�[�[�&�1�1�1�1�)�
��s�
�X�e�S�
!�
!�����������d��R�&�[�)@�A�A�A���������e�,�,�,�������S�)�)�5�1�1�1�	
�����%��.�.�5�t�<�<�<�
�
�
�z�
*�
*�C�C�H�H�W�d�,C�,C�,C�C�C�C�C�C�C�C�C�C�C�C����C�C�C�C�
�
�
�z�
*�
*�B�B�H�H�V�T�,B�,B�,B�B�B�B�B�B�B�B�B�B�B�B����B�B�B�B�
�
�
�z�
*�
*�?�?�H�H�S�$�,?�,?�,?�?�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?�?�?sI�A
D�D 	�#D 	�
N0�0N4�7N4�
O.�.O2�5O2�
P-�-P1�4P1c
��|jj}|�t��5|dd��}ddd��n#1swxYwY|�dddddd��}|�dddddd��}|�dddd	d	d	��}|�ddd
d	d	d	��}ddd|fd
dd|fddd|fddd|fddd|fddd|fddd|fddd|fddd|fd dd!|fg
}|D]a\}}	}
}d"|z}|�||	|
|�#��5||	|
��}|�|||�$��ddd��n#1swxYwY�bdS)%Nz01/02/3 04:05:06z%d/%m/%y %H:%M:%Sr�rYr&r[rVr]r�rPz
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�r�r�r3r0)r1r��newdater�rTr+�dt4r�r�r�r�r�s            r#�test_strptime_single_digitz'TestDateTime.test_strptime_single_digit�
sj���=�)��
�
�
�z�
*�
*�	H�	H��h�1�3F�G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H��m�m�D�!�Q��1�a�0�0���m�m�D�!�Q��1�a�0�0���m�m�D�!�Q��1�a�0�0���m�m�D�!�R��A�q�1�1��
�?�$7��=�
�?�$7��=�
�%�':�C�@�
�%�':�C�@�
�%�':�C�@�
�$�&8��=�
�$�&8��=�
�9�j�#�.�
�:�z�3�/�
�:�z�3�/�
��/5�	>�	>�*�F�F�F�F�)�F�2�F����V�%+�%+�%+��-�-�
>�
>�#�(�6�6�2�2��� � ��&�f� �=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��	>�	>s#�
A�A�A�%D?�?E	�E	c��|�dddddd��}|�|���d��|�|���|j|j|j|j|j|j|�	��|�
��t|jdd���
��z
dzd	f	��|���}|�|j|j��|�|j
|j��|�|j|j��|�|j|j��|�|j|j��|�|j|j��|�|j|�	����|�|j|�
��t|jdd���
��z
dz��|�|jd	��dS)
Nrr�r�r]r��!)	rr�r�r]r�r�r[rerr&r)r=r0r�r_r`r�rfrrr�rhrrrrr r!r"r#r$r%)r1r��tts   r#�test_more_timetuplez TestDateTime.test_more_timetuple�
s����M�M�$��B��2�r�2�2����������(M�N�N�N����������&�!�'�1�5��&�!�(�A�H��)�)�+�+��+�+�-�-�$�q�v�q�!�*<�*<�*F�*F�*H�*H�H�1�L��	�	�	�	��[�[�]�]�������Q�V�,�,�,������A�G�,�,�,������Q�U�+�+�+������Q�V�,�,�,������A�H�-�-�-������A�H�-�-�-������Q�Y�Y�[�[�1�1�1������Q�[�[�]�]�%)�!�&�!�Q�%7�%7�%A�%A�%C�%C�&D�FG�&H�	I�	I�	I������b�)�)�)�)�)r%c	��|�ddddddd��}|�|�d��d	��d
D]j\\}}}tt	d||�����}|�|�
��}|�|�d��d|z���k	|�d��dS#t$rYdSwxYw)Nrr�r�r]r�r��/z%m %d %y %f %S %M %H %jz12 31 04 000047 33 22 06 366)))r�r�z	33.000123))r�r�33rY)r�r�r�rr�z-0200u%y�%m %H�%M)r=r0r�rrrr�)r1r�r�rqr�r�s      r#�test_more_strftimezTestDateTime.test_more_strftime�
s����M�M�$��B��2�r�2�6�6��������$=�>�>�$B�	D�	D�	D�F�	<�	<�J�G�Q��Q��9�1�a�b�I�I�I�I�J�J�B��	�	��	�$�$�A����Q�Z�Z��-�-�w��{�;�;�;�;�	�
�J�J�.�/�/�/�/�/��!�	�	�	��D�D�	���s�3C
�

C�Cc	��|�ddddddd��}|�|���tddd����|�|���tdddd����dS)Nr^rUr[r(�-��)r=r0rrrxs  r#�test_extractzTestDateTime.test_extract�
s{��
�]�]�4��A�r�2�q�$�
7�
7����������D��q�!�$4�$4�5�5�5���������D��R��D�$9�$9�:�:�:�:�:r%c	���tddd��}tdddd��}|�ddddddd��}|jj}|||��}|�||��|||���}|�||��|�||�����|�||�����|�|||���|�������|�t|��|�t||��|�t|||��|�t|||d��|�t|||dd	��|�t|d
d��|�t||d��|�t|d
|��|||tj��}|�	|j
tj��|||tj���}|�	|j
tj��t��}|||��}|�|���|��|�|���|��dS)
Nr^rUr[r(r�r�)rrr&rYrrr)rrr=r�r0r�r�rr6r5r)r1r�r�r	r�rys      r#�test_combinezTestDateTime.test_combine�
s�����q�!������R��D�!�!���=�=��q�!�R��Q��=�=���-�'��
�W�Q��]�]������X�&�&�&�
�W�!�!�
$�
$�
$������X�&�&�&�����B�G�G�I�I�&�&�&�����B�G�G�I�I�&�&�&�����W�W�R�W�W�Y�Y����	�	�:�:�;�;�;����)�W�-�-�-����)�W�a�0�0�0����)�W�a��3�3�3����)�W�a��A�6�6�6����)�W�a��A�q�9�9�9����)�W�f�f�=�=�=����)�W�a��8�8�8����)�W�f�a�8�8�8��W�Q��8�<�
(�
(���
�
�b�i���.�.�.�
�W�Q��(�,�
/�
/�
/���
�
�b�i���.�.�.��F�F��
�W�R��^�^����������A�&�&�&���������A�&�&�&�&�&r%c�d�|j}gd�}||�}|�||�����d}dD]C\}}|dd�}|||<||�}|jd
i||i��}	|�||	��|dz
}�D|ddd��}|�t|jd�	��dS)N)r&rYrUr[rVr]rXr)rTrUrV�rfrV�rr]�rrX�rjr�r&rSrYr~r�rWrrXrYs
          r#r_zTestDateTime.test_replaces����m��$�$�$���s�D�z������t�|�|�~�~�.�.�.�
��1�	�	�L�D�&��1�1�1�g�G��G�A�J��s�G�}�H��$�,�0�0�$���0�0�C����X�s�+�+�+�
��F�A�A��s�4��B�������*�d�l���>�>�>�>�>r%�EDT4c���|j���}tdd��}|�t	td���d�����}|�|���|��|�t|j||��|�t|j|��|�|���tdd���z}|�|�|��|��|�|�|�	��|��Gd
�dt��}|��}|�t|j|��|�|�|����|��|��Gd�d
t��}|��}|�t|j|��Gd�dt��}	|	��}
|�|
���}|�t��5|���ddd��dS#1swxYwYdS)N�,�0044r\r��EDTrr[r��r�c��eZdZd�Zd�ZdS)�+TestDateTime.test_astimezone.<locals>.Bogusc��dSr4rrxs  r#rzz5TestDateTime.test_astimezone.<locals>.Bogus.utcoffset1���D�Dr%c� �td��SrZrrxs  r#rz/TestDateTime.test_astimezone.<locals>.Bogus.dst2s
��i��l�l�2r%N�rKrbrcrzrrr%r#�Bogusr�0s"������0�0�0�2�2�2�2�2r%r�c��eZdZd�Zd�ZdS)�/TestDateTime.test_astimezone.<locals>.AlsoBogusc� �td��SrZrrxs  r#rzz9TestDateTime.test_astimezone.<locals>.AlsoBogus.utcoffset8s
��I�a�L�L�%8r%c��dSr4rrxs  r#rz3TestDateTime.test_astimezone.<locals>.AlsoBogus.dst9���d�dr%Nr�rr%r#�	AlsoBogusr�7s"������8�8�8�*�*�*�*�*r%r�c��eZdZd�Zd�ZdS)�,TestDateTime.test_astimezone.<locals>.Brokenc��dSr�rrxs  r#rzz6TestDateTime.test_astimezone.<locals>.Broken.utcoffset>s��A�Ar%c��dSr�rrxs  r#rz0TestDateTime.test_astimezone.<locals>.Broken.dst?���a�ar%Nr�rr%r#�Brokenr�=s"������-�-�-�'�'�'�'�'r%r�)r=r�rerrrr0�
astimezoner�r�rr�)r1ryr��dt_utc�dt_fr��bogr��alsobogr��broken�	dt_brokens            r#�test_astimezonezTestDateTime.test_astimezone$s���
�]�
�
�
 �
 ����F�#�#�����8�I�B�,?�,?�,?��#G�#G��H�H����������&�1�1�1����)�R�]�A�q�9�9�9����)�R�]�B�7�7�7��z�z��z�#�#�i�a��&D�&D�&D�D��������q�)�)�4�0�0�0�������!��,�,�d�3�3�3�	3�	3�	3�	3�	3�F�	3�	3�	3��e�g�g�����*�b�m�S�9�9�9�������3��/�/�:�:�1�=�=�t�D�D�D�	+�	+�	+�	+�	+��	+�	+�	+��)�+�+�����*�b�m�W�=�=�=�	(�	(�	(�	(�	(�V�	(�	(�	(�������J�J�f�J�-�-�	�
�
�
�y�
)�
)�	#�	#�� � �"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s�I*�*I.�1I.c���G�fd�d�j��}d}�j|�}||iddi��}��|j|����|jd����|jd����|���|�������|�d��|j|jz|j	zdz
��dS)Nc�$��eZdZdZ�fd�Zd�ZdS)�.TestDateTime.test_subclass_datetime.<locals>.Crfc���|���}|�d��}�jj|g|�Ri|��}||_|Srjrkrms      �r#r�z6TestDateTime.test_subclass_datetime.<locals>.C.__new__Jrqr%c�6�||jz|jz|jzSr4)r_r`rrss  r#ruz6TestDateTime.test_subclass_datetime.<locals>.C.newmethQs���t�y�(�4�:�5���C�Cr%Nrvr7s�r#rxr�GsG��������I�
�
�
�
�
�
D�
D�
D�
D�
Dr%rx)r�r[rdr�r�)r�rXrfrZ)
r=r0rJrwr�rhrur_r`rrzs`    r#rz#TestDateTime.test_subclass_datetimeEs)���	D�	D�	D�	D�	D�	D�	D��
�	D�	D�	D�'���d�m�T�"���a��&�'�1��&�&��������*�*�*�������+�+�+������A�&�&�&���������#�-�-�/�/�:�:�:�������R���#�(�S�Y�*>�*-�*�+5�78�+9�	:�	:�	:�	:�	:r%c����G�fd�d�j��}d}d}d}||�}��||����|jd��|���}d|f|fd|t
jf|�t
j��fd|f|fd	|f|fd
|df|fdt|d
d��t|dd��f|fg}|D]�\}}	}
||fD]�}��
t|��|���5t||��}||	�}
��|
|����|
|
����|
jd��ddd��n#1swxYwY����dS)Nc���eZdZ�fd�ZdS)�TTestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclassc�B���jj|g|�Ri|��}d|_|Srr�r�s    �r#r�z\TestDateTime.test_subclass_alternate_constructors_datetime.<locals>.DateTimeSubclass.__new__cr�r%Nr�r7s�r#rr�br�r%r)r�r[rdr�r�rgz2003-04-14T12:30:15.123456gh͏�TM�ArXr�r_r�r�z%Y-%m-%dT%H:%M:%S.%fr�rrUr�)
r=r�r0r�r�rr6r�rrr3r�r�)r1rr�r��utc_tsr�r�r�r�r�r	r��constructorrys`             r#�-test_subclass_alternate_constructors_datetimez:TestDateTime.test_subclass_alternate_constructors_datetime`s>���	�	�	�	�	�	�	�t�}�	�	�	�1��2��"��!�!�4�(�����f�&6�7�7�7������q�)�)�)��
�
�
�
���r�e�V�,�
�r�8�<�0�%�0�0���>�>�
@�
�&��F�3�
�{�n�f�5�
�+�'=�>��G�
��t�A�a�C�y�)�4��a�b�b��?�;�V�D�	
�
�3=�	2�	2�.�K��h�-�v�6�
2�
2���\�\��X���.9�"�;�;�
2�
2�")�(�K�"@�"@�K�$��k�2�B��)�)�"�.>�?�?�?��$�$�R��2�2�2��$�$�R�X�q�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��
2�	2�	2s�AE*�*E.�1E.c���G�fd�d�j��}ddifddifdddtjifdddttd�	��d
��ifg}|D]|\}}}��|��5t||��}|di|��}��||����|jd��ddd��n#1swxYwY�}dS)
Nc���eZdZ�fd�ZdS)�8TestDateTime.test_subclass_now.<locals>.DateTimeSubclassc�B���jj|g|�Ri|��}d|_|Srr�r�s    �r#r�z@TestDateTime.test_subclass_now.<locals>.DateTimeSubclass.__new__�r�r%Nr�r7s�r#rr��r�r%rr�r��now_utcr��	now_fixedrr�r�rXr)	r=rr6rr3r�r�r0r�)r1rr�rF�	meth_namer�r�rys`       r#�test_subclass_nowzTestDateTime.test_subclass_now�si���	�	�	�	�	�	�	�t�}�	�	�	��E�2��
�x��$�
���h�l�3�4�
�%�$����1D�1D�1D�e�(L�(L�!M�N�	
�
�(2�	.�	.�#�D�)�V����d�#�#�
.�
.� �!1�9�=�=���V�%�%�f�%�%���%�%�b�*:�;�;�;�� � ���1�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��	.�	.s�0A
C�C
	�
C
	c�����	�gd�}gd��ddg}dtjttd�����ttd�����g�	���	fd�|D��}|D]{}|D]v}|�|�	��}��|�
��5�j�|��}��||��ddd��n#1swxYwY�w�|dS)N)r�r�r�r�)�rrrr)rrrih�)rrr�G�)r�rr�r�r�r�rr�rYc	�H��g|]}�D]}�D]}�jg|�|�Rd|i�����Sr)r=)r!�
date_tuple�
time_tupler�
base_timesr1rs    ���r#r$z<TestDateTime.test_fromisoformat_datetime.<locals>.<listcomp>�st���#�#�#��!+�#�#��!�#�#���t�}�B�j�B�:�B�B�B�c�B�B�#�#�#�#�#r%�r�r�)rr6rr�r3r=r�r0)
r1r��
separators�dtsryrr�r�r�rs
`       @@r#�test_fromisoformat_datetimez(TestDateTime.test_fromisoformat_datetime�su�����
�
�
�
�
�
�
�
��3�Z�
�����I�B�/�/�/�0�0��I�A�.�.�.�/�/�1��#�#�#�#�#�#�!+�#�#�#��
�	0�	0�B�!�
0�
0�������-�-���\�\��\�.�.�0�0� �M�7�7��>�>�E��$�$�R��/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��
0�	0�	0s�1C�C�Cc
��|�ddddddd��}td���td���td	d
���tddd�
��tdddd���g}|d�|D��z
}dtjttd�����g}|d�|D��z
}|D]�}|�|���}|���}|�|���5|j�|��}||ks
J|���	ddd��n#1swxYwY��dS)Nr�r�rr��pQrVr�rYr]r.r�r�r'r[r�rgr)c��g|]}d|z��S�rr�r!r[s  r#r$z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>����2�2�2�"�b�2�g�2�2�2r%rc�,�g|]}t|����Srrrs  r#r$z<TestDateTime.test_fromisoformat_timezone.<locals>.<listcomp>����5�5�5�R�H�R�L�L�5�5�5r%r��tstr�r=rrr6rr�r3r�)r1�base_dtrrrryr�r�s        r#�test_fromisoformat_timezonez(TestDateTime.test_fromisoformat_timezone�s����-�-��b�"�b�"�b�&�A�A��
�A����	�� 2� 2� 2��A�r�*�*�*��B��B�7�7�7��A�q�!�&�I�I�I�	
�	�	�2�2�	�2�2�2�2�	�����I�A�.�.�.�/�/�1��	�5�5�9�5�5�5�5���	*�	*�C������,�,�B��L�L�N�N�E����5��)�)�
*�
*��
�3�3�E�:�:���U�{�{�{�E�{�{�{�{�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��		*�	*s�;+D3�3D7	�:D7	c
�6�gd�}|D]�}|�ddddddd��}|�|�	��}|�|�
��5|j�|��}|�||��ddd��n#1swxYwY��dS)N)	r�r���€uʁuᛇu時u🐍rr�r&r�r�r�r�iu�r�r�r��r1r�rryr�r�s      r#�test_fromisoformat_separatorsz*TestDateTime.test_fromisoformat_separators�s���
�
�
�
��	,�	,�C����t�Q��B��B��?�?�B��L�L�S�L�)�)�E����E��*�*�
,�
,��
�3�3�E�:�:��� � ��U�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��		,�	,s�1B
�
B	�B	c�2�ddg}|D]�}|�ddddd��}|�|���}|�|�	��5|j�|��}|�||��ddd��n#1swxYwY��dS)
Nrrr�r&r�r�r�r�r�r�rs      r#�test_fromisoformat_ambiguousz)TestDateTime.test_fromisoformat_ambiguous�s����3�Z�
��	,�	,�C����t�Q��B��3�3�B��L�L�S�L�)�)�E����E��*�*�
,�
,��
�3�3�E�:�:��� � ��U�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��		,�	,s�1B�B	�B	c
�v�ddg}dtjttd�����ttd�����ttdd�����g}gd	�}t|��D]�\}}|D]�}|D]�}|d
krd|ddzz}|dd�|fz}|j|dd
|z�d|i�}	|	�|���}
|�|
���5|j�|
��}|�|	|��ddd��n#1swxYwY������dS)N)r�r�r[r�r<r�rg)r�r�r[r�r<r�rrr�rYr]r.r��r�rjr�rUr�rUrYrr[rr�r��	rr6r�	enumerater=r�r3r�r0)r1�datetime_basesr�	timespecs�ipr�rr��new_microsecondsryr�r�s            r#�test_fromisoformat_timespecsz)TestDateTime.test_fromisoformat_timespecss���,�'�)������I�B�/�/�/�0�0��I�A�.�.�.�/�/��I�A�r�:�:�:�;�;�=��
5�5�5�	� �	�*�*�	4�	4�F�B���

4�

4�� .�	4�	4�H��^�+�+�+/�8�A�;�$�3F�+G�(�#+�A�a�C�=�4D�3F�#F��&����!�Q��V�*�)=�K�s�K�K�B��L�L�"�L�5�5�E����E��2�2�4�4� $�
� ;� ;�E� B� B���(�(��U�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��	4�

4�	4�	4��.1D+	�+D/
�2D/
c��tj}ttd���d��}ttd���d��}ttd���d��}gd|�d	dd
dd��f�d|�d	dd
d
d��f�d|�d	dd
d
d��f�d|�d	dd
d
d��f�d|�d	dd
d
dd��f�d|�d	dd
d
dd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d	dd
d
ddd��f�d|�d dd!d
d"d#d$��f�d%|�d dd!d
d"d#d&��f�d'|�d	dd
d
ddd��f�d(|�d	dd
dd��f�d)|�d	dd
d
d��f�d*|�d	dd
d
d��f�d+|�d	dd
d
dd��f�d,|�d	dd
d
dd��f�d-|�d	dd
d
ddd��f�d.|�d	dd
d
ddd��f�d/|�d	dd
d
ddd��f�d0|�d	dd
d
ddd��f�d1|�d	dd
d
ddd��f�d2|�d	dd
d
ddd��f�d3|�d	dd
d
ddd��f�d4|�d	dd
d
ddd��f�d5|�d6dd
��f�d7|�d6d8d9d:d��f�d;|�d<ddd:d��f�d=|�d	d8d>d?d��f�d@|�d	d8dAd?d��f�dB|�dCd8dDd
d��f�dE|�d	dd
d
d��f�dF|�dCd8dDd8d��f�dG|�d	dd
d8d��f�dH|�d	dd
d8dIdA��f�dJ|�d	d8dAd?dK��f�dL|�d	d8dAd?dK��f�dM|�d<ddd:dKdN��f�dO|�d<ddd:dKdN��f�dP|�d	dd
d8dIdA��f�dQ|�d	dd
d
dd��f�dR|�d	dd
d
dd��f�dS|�dTdd
d
dd��f�dU|�dTdd
d
dd��f�dV|�d	dd
d
dd��f�dW|�d	dd
d
ddd��f�dX|�d	dd
d8dIdA��f�dY|�d	dd
d8dIdAdZ��f�d[|�d	d8dAd?dK��f�d\|�d	d8dAd?dK��f�d]|�d<ddd:dKdN��f�d^|�d<ddd:dKdNd_��f�d`|�dCd8dDd
d|�a��f�db|�d	dd
d
dd|�a��f�dc|�d	dd
d
dd|�a��f�dd|�d	dd
d
ddd|�a��f�de|�dfddddttdK������a��f�dg|�d	dd
d
ddhttd
������a��f�di|�d	dd
d
ddhttdj������a��f�dk|�d	dd
d
dd|�a��f�dl|�d	dd
d
ddhttd
������a��f�dm|�d	dd
d
ddhttdj������a��f�dn|�doddd
ddpdq|�a��f�dr|�doddd
ddpdq|�a��f�ds|�dodhddddhdt|�a��f�du|�dodhddddhdt|�a��f�dv|�dTdwdAddD|�a��f�dx|�dTdwdAddD|�a��f�dy|�d	dd
d
ddd|�a��f�dz|�d	dd
d
dddttdw�{�����a��f�}|D]c\}}|�|�|��5|j�|��}|�||��ddd��n#1swxYwY�ddS)}Nr&r��BSTrr�r\r�r�r�rYrz
2025-01-02T03rUz2025-01-02T03:04r[z2025-01-02T0304z2025-01-02T03:04:05rVz2025-01-02T030405z2025-01-02T03:04:05.6i�'	z2025-01-02T03:04:05,6z2025-01-02T03:04:05.678ipX
z2025-01-02T03:04:05.678901�[
z2025-01-02T03:04:05,678901z2025-01-02T030405.678901z2025-01-02T030405,678901z2025-01-02T03:04:05.6789010z2009-04-19T03:15:45.2345r�rr�r�i�z2009-04-19T03:15:45.1234567rgz2025-01-02T03:04:05,678r��20250102T03z20250102T03:04z20250102T03:04:05�20250102T030405z20250102T03:04:05.6z20250102T03:04:05,6z20250102T03:04:05.678z20250102T03:04:05,678z20250102T03:04:05.678901z20250102T030405.678901z20250102T030405,678901z20250102T030405.6789010�2022W01r��
2022W52520r�r�r<�2022W527520r��
2026W01516r~r�2026W013516r��
2025W01503r�r�2025W014503�
2025W01512�2025W014512�2025W014T121431rd�2026W013T162100r�z2026W013 162100�2022W527T202159r�z2022W527 202159z2025W014 121431�2025W014T030405z2025W014 030405z2020-W53-6T03:04:05r�z2020W537 03:04:05z2025-W01-4T03:04:05z2025-W01-4T03:04:05.678901z2025-W01-4T12:14:31z2025-W01-4T12:14:31.012345i90z2026-W01-3T16:21:00z2026-W01-3T16:21:00.000000z2022-W52-7T20:21:59z2022-W52-7T20:21:59.999999r(z2025-W01003+00rz2025-01-02T03:04:05+00z2025-01-02T03:04:05Zz!2025-01-02003:04:05,6+00:00:00.00z2000-01-01T00+21rSz2025-01-02T03:05:06+0300r]z2025-01-02T03:05:06-0300rTz2025-01-02T03:04:05+0000z2025-01-02T03:05:06+03z2025-01-02T03:05:06-03z 2020-01-01T03:05:07.123457-05:00r�rXiA�z2020-01-01T03:05:07.123457-0500z 2020-06-01T04:05:06.111111-04:00i�z2020-06-01T04:05:06.111111-0400z 2021-10-31T01:30:00.000000+01:00r'z2021-10-31T01:30:00.000000+0100z2025-01-02T03:04:05,6+000000.00z 2025-01-02T03:04:05,678+00:00:10r�r�)rr6rr=r3r�r0)	r1rr r�r�r�r�r	r�s	         r#�$test_fromisoformat_datetime_examplesz1TestDateTime.test_fromisoformat_datetime_exampless���l���y�q�)�)�)�5�1�1���y�r�*�*�*�E�2�2���y�r�*�*�*�E�2�2��z
�
�4�=�=��q�!�Q��:�:�;�z
�
�d�m�m�D�!�Q��1�=�=�>�z
� ����t�Q��1�a�!@�!@�A�z
���
�
�d�A�q�!�Q� ?� ?�@�	z
�
#�D�M�M�$��1�a��A�$F�$F�G�z
�!�$�-�-��a��A�q�!�"D�"D�E�
z
�%�
�]�]�4��A�q�!�Q��
7�
7�
9�z
�%�
�]�]�4��A�q�!�Q��
7�
7�
9�z
�'�
�]�]�4��A�q�!�Q��
7�
7�
9�z
�*�
�]�]�4��A�q�!�Q��
7�
7�
9�z
�*�
�]�]�4��A�q�!�Q��
7�
7�
9�z
�"(�
�]�]�4��A�q�!�Q��
7�
7�
9�#z
�&(�
�]�]�4��A�q�!�Q��
7�
7�
9�'z
�*+�
�]�]�4��A�q�!�Q��
7�
7�
9�+z
�.(�
�]�]�4��B��2�r�6�
:�
:�
<�/z
�2+�
�]�]�4��B��2�r�6�
:�
:�
<�3z
�6'�
�]�]�4��A�q�!�Q��
7�
7�
9�7z
�:����t�Q��1�a�8�8�9�;z
�<�D�M�M�$��1�a��;�;�<�=z
�>�t�}�}�T�1�a��A�>�>�?�?z
�@!�$�-�-��a��A�q�!�"D�"D�E�Az
�B��
�
�d�A�q�!�Q�� B� B�C�Cz
�D#�
�]�]�4��A�q�!�Q��
7�
7�
9�Ez
�H#�
�]�]�4��A�q�!�Q��
7�
7�
9�Iz
�L%�
�]�]�4��A�q�!�Q��
7�
7�
9�Mz
�P%�
�]�]�4��A�q�!�Q��
7�
7�
9�Qz
�T(�
�]�]�4��A�q�!�Q��
7�
7�
9�Uz
�X&�
�]�]�4��A�q�!�Q��
7�
7�
9�Yz
�\&�
�]�]�4��A�q�!�Q��
7�
7�
9�]z
�`'�
�]�]�4��A�q�!�Q��
7�
7�
9�az
�d��
�
�d�A�q�1�1�2�ez
�f�4�=�=��r�2�r�1�=�=�>�gz
�h�D�M�M�$��1�b�!�<�<�=�iz
�j�4�=�=��r�2�r�1�=�=�>�kz
�l�D�M�M�$��B��A�>�>�?�mz
�n�4�=�=��r�2�q�!�<�<�=�oz
�p�D�M�M�$��1�a��;�;�<�qz
�r�4�=�=��r�2�r�1�=�=�>�sz
�t�D�M�M�$��1�b�!�<�<�=�uz
�v��
�
�d�A�q�"�b�"� E� E�F�wz
�x��
�
�d�B��B�� C� C�D�yz
�z��
�
�d�B��B�� C� C�D�{z
�|��
�
�d�A�q�"�b�"� E� E�F�}z
�~��
�
�d�A�q�"�b�"� E� E�F�z
�@��
�
�d�A�q�"�b�"� E� E�F�Az
�B��
�
�d�A�q�!�Q�� B� B�C�Cz
�D��
�
�d�A�q�!�Q�� B� B�C�Ez
�F#�D�M�M�$��1�a��A�$F�$F�G�Gz
�H!�$�-�-��a��A�q�!�"D�"D�E�Iz
�J#�D�M�M�$��1�a��A�$F�$F�G�Kz
�L*�
�]�]�4��A�q�!�Q��
7�
7�
9�Mz
�P#�D�M�M�$��1�b�"�b�$I�$I�J�Qz
�R*�
�]�]�4��A�r�2�r�5�
9�
9�
;�Sz
�V#�D�M�M�$��B��B�$G�$G�H�Wz
�X*�4�=�=��r�2�r�2�+N�+N�O�Yz
�Z#�
�]�]�4��A�r�2�r�
2�
2�
4�[z
�^*�
�]�]�4��A�r�2�r�6�
:�
:�
<�_z
�b�
�]�]�4��R��A�c�]�
:�
:�
<�cz
�f&�
�]�]�4��A�q�!�Q�s�]�
;�
;�
=�gz
�j$�
�]�]�4��A�q�!�Q�s�]�
;�
;�
=�kz
�n1�
�]�]�4��A�q�!�Q��s�]�
C�
C�
E�oz
�r �
�]�]�4��A�q�!�H�Y�R�=P�=P�=P�4Q�4Q�]�
R�
R�
T�sz
�v(�
�]�]�4��A�q�!�Q�"*�9�1�+=�+=�+=�">�">��@�@�
A�wz
�|(�
�]�]�4��A�q�!�Q�"*�9�2�+>�+>�+>�"?�"?��A�A�
B�}z
�B(�
�]�]�4��A�q�!�Q�s�]�
;�
;�
=�Cz
�F&�
�]�]�4��A�q�!�Q�"*�9�1�+=�+=�+=�">�">��@�@�
A�Gz
�L&�
�]�]�4��A�q�!�Q�"*�9�2�+>�+>�+>�"?�"?��A�A�
B�Mz
�R0�
�]�]�4��A�q�!�Q��s�]�
C�
C�
E�Sz
�V/�
�]�]�4��A�q�!�Q��s�]�
C�
C�
E�Wz
�Z0�
�]�]�4��A�q�!�Q��s�]�
C�
C�
E�[z
�^/�
�]�]�4��A�q�!�Q��s�]�
C�
C�
E�_z
�b0�
�]�]�4��R��B�s�]�
;�
;�
=�cz
�f/�
�]�]�4��R��B�s�]�
;�
;�
=�gz
�j/�
�]�]�4��A�q�!�Q��s�]�
C�
C�
E�kz
�n0�
�]�]�4��A�q�!�Q��"*�9�R�+@�+@�+@�"A�"A��C�C�
D�oz
��x$,�	3�	3��I�x����	��2�2�
3�
3���4�4�Y�?�?��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��	3�	3s�1g�g	�g	c��gd�}|D]|}|�|���5|�t��5|j�|��ddd��n#1swxYwYddd��n#1swxYwY�}dS)N)rrz
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:00z 2009-04-19T03:15:45.123456+24:30z 2009-04-19T03:15:45.123456-24:30u2009-04-10ᛇᛇᛇᛇᛇ12:15u2009-04�10T12:15u2009-04-10T12�15z2009-04-19T1z2009-04-19T12:3z2009-04-19T12:30:4z2009-04-19T12:z2009-04-19T12:30:z2009-04-19T12:30:45.z2009-04-19T12:30:45.123456+z2009-04-19T12:30:45.123456-z!2009-04-19T12:30:45.123456-05:00az2009-04-19T12:30:45.123-05:00az2009-04-19T12:30:45-05:00a�r��r3r�r�r=r�r�s   r#�!test_fromisoformat_fails_datetimez.TestDateTime.test_fromisoformat_fails_datetime�s��
�
�
��: �	9�	9�G����g��.�.�
9�
9��&�&�z�2�2�9�9��M�/�/��8�8�8�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��	9�	9�4�A8�A!�A8�!A%�%A8�(A%�)A8�8A<	�?A<	c���d}|�ttjt	|������5|j�|��ddd��dS#1swxYwYdS)Nu2018-01-03�01:0113)rr��re�escaper�r=r�)r1r�s  r#�"test_fromisoformat_fails_surrogatez/TestDateTime.test_fromisoformat_fails_surrogate�s���*��
�
#�
#�J��	�$�u�+�+�0F�0F�
G�
G�	/�	/��M�'�'��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�A%�%A)�,A)c��d}|j�|��}|�|jtj��dS)Nz2014-04-19T13:21:13+00:00)r=r�r5rrr6)r1r�rys   r#�test_fromisoformat_utcz#TestDateTime.test_fromisoformat_utc�s:��,��
�]�
(�
(��
0�
0���
�
�b�i���.�.�.�.�.r%c�0�Gd�d|j��}|ddddddd	ttd
d��������}|�|�����}|�||��|�||��dS)
Nc��eZdZdS)�BTestDateTime.test_fromisoformat_subclass.<locals>.DateTimeSubclassNr�rr%r#rr?�r�r%rr�r�rdr�rr�i��r'r�r)r=rrr�r�r0r�)r1rryr�s    r#r�z(TestDateTime.test_fromisoformat_subclass�s���	�	�	�	�	�t�}�	�	�	��
�d�B��A�r�2�v�%-�i�b�"�.M�.M�.M�%N�%N�P�P�P��!�.�.�r�|�|�~�~�>�>������U�#�#�#����e�%5�6�6�6�6�6r%N)?rKrbrcrr=r�r�r�r�rrr)r,r7r�r�rsr�rQrSr6rVrXr�r`r
�run_with_tzrergr�rrr�r�r�r��unittest�skipIfrI�platformr�r�r�r�r�r�r�r�r�r_r�rr�r�rr
rrrr1r5r:r<r�rr%r#r�r��s��������H�,�,�,�
/�
/�
/�&�&�&� *H�*H�*H�X-�-�-�<5�5�5�:L�L�L� #�#�#�$	7�	7�	7�3?�3?�3?�j$�$�$�.B4�B4�B4�HC�C�C�'�'�'�C�C�C�4�4�4�$'�'�'�B6�6�6�2�2�2�2�2�2��W��3�4�4�D�D�5�4�D�6	;�	;�	;��W���"�"�&2�&2�#�"�&2�P5�5�5�&%4�%4�%4�N%7�%7�%7�N&�&�&�&�&�&��X�_�S�\�W�,�.Z�[�[�+�+�\�[�+�
�X�_�S�\�W�,�.Z�[�[�M�M�\�[�M�H�H�H�9@�9@�9@�v >� >� >�D*�*�*�,��� ;�;�;�
 '� '� '�D?�?�?�2�W��� � �#�#�!� �#�@:�:�:�6/2�/2�/2�b.�.�.�0!0�!0�!0�F*�*�*�2,�,�,�"	,�	,�	,�4�4�4�4D3�D3�D3�L"9�"9�"9�H/�/�/�/�/�/�
7�
7�
7�
7�
7r%r�c�D�eZdZeZejd��d���ZdS)�TestSubclassDateTimeznot appropriate for subclassesc��dSr4rr7s r#r�z#TestSubclassDateTime.test_roundtrip�s���r%N)rKrbrcr�r=rA�skipr�rr%r#rErE�s@�������H��X�]�3�4�4�
�
�5�4�
�
�
r%rEc��eZdZdZdS)�SubclassTimer&NrXrr%r#rIrI�rZr%rIc��eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestTimec�
�|�dd��}|�|jd��|�|jd��|�|jd��|�|jd��dS)Nr�r�r=r0rfrrrjr�s  r#r�zTestTime.test_basic_attributes�s{���M�M�"�a� � ��������$�$�$������1�%�%�%������1�%�%�%�������*�*�*�*�*r%c��|�dddd��}|�|jd��|�|jd��|�|jd��|�|jd��dS)Nr�r�r�rMr�s  r#r�z&TestTime.test_basic_attributes_nonzero�s���
�M�M�"�b�"�d�+�+��������$�$�$������2�&�&�&������2�&�&�&�������-�-�-�-�-r%c��|�dddd��}t|��}|�|�d����|dd�}t	|��}|�||��|�|j|j|j|j	��}|�||��dS)Nr&rYrUr[r�r�)
r=r�r�rDr�r0rfrrrj)r1r�r�r�s    r#r�zTestTime.test_roundtrip�s����M�M�!�Q��1�%�%��
��G�G��������[�1�1�2�2�2�
�a�b�b�E��
�!�W�W������B�����]�]�1�6�1�8�Q�X��=�*�*������B�����r%c����gd�}|j|��|j|�}|��|��|��|k��|��|k��|��|k��|��|k��|��|k��t	t|����D�]Q}|dd�}||dz||<|j|�}|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k��|��|k��|�|�k����StD�]c�|���kd��|���kd��|���kd��|���kd��|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t��fd	���|�t��fd
���|�t��fd���|�t��fd�����edS)
N�r&rYrUr[r&FTc�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>/
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>0
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>1
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>2
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>3
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>4
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>5
r�r%c�����kSr4rr�s��r#rEz)TestTime.test_comparing.<locals>.<lambda>6
r�r%)	r=r0r�r�rlr�r�r�r�)r1r�r�rrr]r�r�s     @@r#�test_comparingzTestTime.test_comparing

s������|�|��
�T�]�D�
!��
�T�]�D�
!������R� � � �����b��!�!�!�����b��!�!�!�����r��"�"�"�����b��!�!�!�����b��!�!�!��s�4�y�y�!�!�	'�	'�A��1�1�1�g�G��a��1��G�A�J�����(�B��O�O�B��G�$�$�$��O�O�B��G�$�$�$��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%��O�O�B�"�H�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&����R�"�W�%�%�%����R�"�W�%�%�%����R�2�X�&�&�&����R�2�X�&�&�&�&� �
	?�
	?�F����R�6�\�5�1�1�1����R�6�\�4�0�0�0����V�r�\�5�1�1�1����V�r�\�4�0�0�0����i�)=�)=�)=�)=�)=�>�>�>����i�)<�)<�)<�)<�)<�=�=�=����i�)<�)<�)<�)<�)<�=�=�=����i�)=�)=�)=�)=�)=�>�>�>����i�)=�)=�)=�)=�)=�>�>�>����i�)<�)<�)<�)<�)<�=�=�=����i�)<�)<�)<�)<�)<�=�=�=����i�)=�)=�)=�)=�)=�>�>�>�>�
	?�
	?r%c��|�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�rXr(r)r=r�r�r7s r#r�z'TestTime.test_bad_constructor_arguments8
s����
�
�a������
�
�b�!�������*�d�m�R��;�;�;����*�d�m�R��;�;�;��
�
�b�!�����
�
�b�"�������*�d�m�R��<�<�<����*�d�m�R��<�<�<��
�
�b�"�a� � � ��
�
�b�"�b�!�!�!����*�d�m�R��R�@�@�@����*�d�m�R��R�@�@�@��
�
�b�"�b�!�$�$�$��
�
�b�"�b�&�)�)�)����*�d�m�R��R��D�D�D����*�d�m�R��R��I�I�I�I�Ir%c�f�|�ddd��}|�ddd��}|�||��|�t|��t|����|di}d||<|�t|��d��|�||d��|�||d��|�ddd��}|�ddd��}|�||��|�t|��t|����|di}d||<|�t|��d��|�||d��|�||d��dS)Nr�rr<r&rYrrVr�r�s    r#r�zTestTime.test_hash_equalityN
s����M�M�"�b�"�%�%���M�M�"�b�"�%�%������A��������a���$�q�'�'�*�*�*��!�f����A������S���1�%�%�%�����Q���#�#�#�����Q���#�#�#��M�M�!�a��$�$���M�M�!�a��$�$������A��������a���$�q�'�'�*�*�*��!�f����A������S���1�%�%�%�����Q���#�#�#�����Q���#�#�#�#�#r%c��|�dddd��}|�|���d��|�|���t|����|���}|�|���d��|�|���t|����|�d���}|�|���d��|�|���t|����|�d	���}|�|���d
��|�|���t|����|�d���}|�|���d��|�|���t|����|�d
���}|�|���d��|�|���t|����|�d���}|�|���d��|�|���t|����|�d���}|�|���d��|�|���t|����|�dddd���}|�|�d���d��|�|�d���d��|�|�d���d��|�|�d���d ��|�|�d!���d"��|�|�d#���d"��|�t
|jd$���|�t
|jd%���|�dddd&���}|�|�d���d'��|�dddd(���}|�|�d���d)��|�|�d!���d*��|�|�d#���d��dS)+Nr[rVr&r�z04:05:01.000123�00:00:00rvz00:00:00.000001r'z00:00:00.000010r�z00:00:00.000100rYz00:00:00.001000raz00:00:00.010000順z00:00:00.100000r�r�r�rg)rfrrrjr�r��12rjz12:34r�z12:34:56rUz12:34:56.123r�z12:34:56.123456r��monkeyrrz12:34:56.999rz12:34:56.000z12:34:56.000000)r=r0r�r�r�r�r�s  r#r�zTestTime.test_isoformate
s����M�M�!�Q��3�'�'����������(9�:�:�:����������A���/�/�/��M�M�O�O����������
�3�3�3����������A���/�/�/��M�M�a�M�(�(����������(9�:�:�:����������A���/�/�/��M�M�b�M�)�)����������(9�:�:�:����������A���/�/�/��M�M�c�M�*�*����������(9�:�:�:����������A���/�/�/��M�M�d�M�+�+����������(9�:�:�:����������A���/�/�/��M�M�e�M�,�,����������(9�:�:�:����������A���/�/�/��M�M�f�M�-�-����������(9�:�:�:����������A���/�/�/��M�M�r�"�R�V�M�L�L��������g��6�6��=�=�=�������i��8�8�'�B�B�B�������i��8�8�*�E�E�E�������n��=�=�~�N�N�N�������n��=�=�?P�Q�Q�Q�������f��5�5�7H�I�I�I����*�a�k�H��E�E�E����*�a�k�H��E�E�E��M�M�r�"�R�V�M�L�L��������n��=�=�~�N�N�N��M�M�r�"�R�Q�M�G�G��������n��=�=�~�N�N�N�������n��=�=�?P�Q�Q�Q�������f��5�5�z�B�B�B�B�Br%c�B�dtd���fdtd���fdtdd�	��fd
tddd
���fdtdddd���fg}ddtjfdttd����fg}|d�|D��z
}|�ddd��}d}|D]i\}}|�|���}||z}|�|���5|���|ksJ�	ddd��n#1swxYwY�jdS)NrrVr�rrYrr]r.r�r	r�r�rr'r
r[r�rgr)rrrc�R�g|]$\}}dD]\}}||zt||z��f���%Srrrs     r#r$z4TestTime.test_isoformat_timezone.<locals>.<listcomp>�
rr%rz12:37:09rrr)	r1rr�t_baserrrr�rs	         r#rz TestTime.test_isoformat_timezone�
s���
�i�a�(�(�(�)�
�i�a�(�(�(�)�
�i�a��4�4�4�5�
���R��D�D�D�E�
�	��1�a�V\� ]� ]� ]�^�
�	�
�
�x�|�$�
�x�	�!���-�-�.�
��	�
�
� )�
�
�
�	
�����r�2�q�)�)����"�	,�	,�K�F�C����c��*�*�A��V�#�C����#��&�&�
,�
,��{�{�}�}��+�+�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,s�+D�D	�D	c�v�|�d���}|�t|jd���dS)Nr&�rrU)r)r=r�r�r�r�s  r#�test_1653736zTestTime.test_1653736�
s8���M�M��M�#�#�����)�Q�[�a��8�8�8�8�8r%c�(�|�dddd��}|�|�d��d��|�|�d��d��	|�d	��dS#t$rYdSwxYw)
Nr&rYrUr[z%H %M %S %fz01 02 03 000004r�r�u%H�%M)r=r0r�r�r�s  r#r�zTestTime.test_strftime�
s����M�M�!�Q��1�%�%��������M�2�2�4E�F�F�F�������K�0�0�'�:�:�:�	�
�J�J�|�$�$�$�$�$��!�	�	�	��D�D�	���s�,B�
B�Bc��|�dddd��}|�|�d��t|����|�t
d��5|�d��ddd��n#1swxYwYGd�d	|j��}|dddd��}|�|�d��d	��Gd
�d|j��}|dddd��}|�|�d��t|����dD]�}|�|�|��|�|����|�|�|��|�|����|�|�|��d����dS)
Nr&rYrUr[rr�r�c��eZdZd�ZdS)�TestTime.test_format.<locals>.Ac��dSr�rr7s r#r�z'TestTime.test_format.<locals>.A.__str__�
rr%Nrrr%r#r�rk�
rr%r�c��eZdZd�ZdS)�TestTime.test_format.<locals>.Bc��dSrrrs  r#r�z(TestTime.test_format.<locals>.B.strftime�
rr%Nr
rr%r#rrn�
rr%r)z%H %M %Sr
)r1r�r�rnrrors       r#rzTestTime.test_format�
s#���M�M�!�Q��1�%�%��������b�)�)�3�q�6�6�2�2�2�
�
#�
#�I�/E�
F�
F�	�	�
�L�L�����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�	�	�	��
�	�	�	�
�A�a��A�q�M�M��������b�)�)�3�/�/�/�	�	�	�	�	��
�	�	�	�
�A�a��A�q�M�M��������b�)�)�3�q�6�6�2�2�2��	5�	5�C����Q�\�\�#�.�.��
�
�3���@�@�@����Q�\�\�#�.�.��
�
�3���@�@�@����Q�\�\�#�.�.��4�4�4�4�		5�	5s�*B�B�Bc
�@�|�t|�dddd����d��|�t|�dddd����d��|�t|�d	ddd
����d��|�t|�dddd	����d
��|�t|�ddd	d	����d��dS)Nr&rYrUr[z01:02:03.000004r'rz10:02:03.004000rr�z00:02:03.400000r�z12:02:03r�r�z23:15:00)r0r�r=r7s r#r�zTestTime.test_str�
s�������T�]�]�1�a��A�6�6�7�7�9J�K�K�K�����T�]�]�2�q�!�T�:�:�;�;�=N�O�O�O�����T�]�]�1�a��F�;�;�<�<�>O�P�P�P�����T�]�]�2�q�!�Q�7�7�8�8�*�E�E�E�����T�]�]�2�r�1�a�8�8�9�9�:�F�F�F�F�Fr%c
�|�d|jjz}|�t|�dddd����d|z��|�t|�dddd����d	|z��|�t|�d
ddd����d|z��|�t|�d
ddd
����d|z��|�t|�ddd
d
����d|z��dS)Nr�r&rYrUr[z%s(1, 2, 3, 4)r'rz%s(10, 2, 3, 4000)rr�z%s(0, 2, 3, 400000)r�z%s(12, 2, 3)r�r�z
%s(23, 15)r�r�s  r#r�zTestTime.test_repr�
sG���T�]�3�3������d�m�m�A�q�!�Q�7�7�8�8�)�D�0�	2�	2�	2�����d�m�m�B��1�d�;�;�<�<�-��4�	6�	6�	6�����d�m�m�A�q�!�V�<�<�=�=�.��5�	7�	7�	7�����d�m�m�B��1�a�8�8�9�9�'�$�.�	0�	0�	0�����d�m�m�B��A�q�9�9�:�:�%��,�	.�	.�	.�	.�	.r%c�>�|�|jj|j��|�|jj|j��|�|jjt
��|�|jj|jjk��dSr4)r�r=r�r�r�rr�r7s r#r�zTestTime.test_resolution_info�
s~�����d�m�/���?�?�?����d�m�/���?�?�?����d�m�6�	�B�B�B�����
�)�D�M�,=�=�>�>�>�>�>r%c�2�d}|j|�}tD]G\}}}|�||��}|�|��}|�||���H|�|���|�d����dS)N�r<r�rrMrYr)r�s        r#r�zTestTime.test_pickling�
s��� ���t�}�d�#��)7�	,�	,�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+�+�������*�*�D�,>�,>�q�,A�,A�B�B�B�B�Br%c�
�d}t|�}tD]o\}}}|�||��}|�|��}|�||��|�t
|t�����pdS)Nrt)rIr�r�r�r0r�rkr�s        r#�test_pickling_subclass_timez$TestTime.test_pickling_subclass_times��� ���T�"��)7�	?�	?�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+��O�O�J�w��=�=�>�>�>�>�		?�	?r%c�
�gd�}t|��D]n\}\}}|�|���5|j|�}tD]%}||d���}|�||���&	ddd��n#1swxYwY�odS)N))s,cdatetime
time
(S'\x14;\x10\x00\x10\x00'
tR.rt)scdatetime
time
(U;tR.rt)s�cdatetime
time
U;�R.rt)s,cdatetime
time
(S'\x14;\x19\x00\x10\x00'
tR.�r<r�r�rM)scdatetime
time
(U;tR.rx)s�cdatetime
time
U;�R.rx)rrr/r0)rr3r=r3r0)r1rrrr5r�r	r�r�s        r#r6zTestTime.test_compat_unpickles���

�

�

�� )��/�/�	8�	8�O�A�|��d������"�"�
8�
8�(�4�=�$�/��)�8�8�E�#�e�D�8�<�<�<�G��$�$�W�h�7�7�7�7�8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8s�8A7�7A;	�>A;	c��|j}|�|d����|�|dd����|�|ddd����|�|dddd����|�|d����|�|����dS)Nr&r)r=r�)r1rZs  r#r�zTestTime.test_bool%s����m�������A�����������A�q�	�	�"�"�"������A�q�!���%�%�%������A�q�!�Q���(�(�(������A�����������������r%c�,�|j}gd�}||�}|�||�����d}dD]C\}}|dd�}|||<||�}|jd
i||i��}	|�||	��|dz
}�D|d��}|�t|jd���|�t|jd���|�t|jd	�
��|�t|jd���dS)NrQr)r�r�r�r�r&r/�rfr�rr�rfrrvrrXrYs
          r#r_zTestTime.test_replace/s=���m���|�|���s�D�z������t�|�|�~�~�.�.�.�
��1�		�		�L�D�&��1�1�1�g�G��G�A�J��s�G�}�H��$�,�0�0�$���0�0�C����X�s�+�+�+�
��F�A�A��s�1�v�v�����*�d�l���<�<�<����*�d�l�2��>�>�>����*�d�l�3��?�?�?����*�d�l���H�H�H�H�Hr%c��Gd�d|j��}|dd��}|�t|�d�����|��dS)Nc��eZdZdS)�4TestTime.test_subclass_replace.<locals>.TimeSubclassNr�rr%r#�TimeSubclassrIr�r%r�r�rr'r{rd)r1r�r�s   r#rezTestTime.test_subclass_replaceHsq��	�	�	�	�	�4�=�	�	�	���R��$�$���
�
�d�5�=�=�b�=�1�1�2�2�L�A�A�A�A�Ar%c����G�fd�d�j��}d}�j|�}||iddi��}��|j|����|jd����|jd����|���|�������|�d��|j|jzdz
��dS)Nc�$��eZdZdZ�fd�Zd�ZdS)�&TestTime.test_subclass_time.<locals>.Crfc���|���}|�d��}�jj|g|�Ri|��}||_|Srjrkrms      �r#r�z.TestTime.test_subclass_time.<locals>.C.__new__Trqr%c�&�||jz|jzSr4�rfrrss  r#ruz.TestTime.test_subclass_time.<locals>.C.newmeth[����t�y�(�4�;�6�6r%Nrvr7s�r#rxr�Q�B��������I�
�
�
�
�
�
7�
7�
7�
7�
7r%rx)r[rVr]r�rXrfrZ)	r=r0rJrwr�r�rurfrrzs`    r#�test_subclass_timezTestTime.test_subclass_timeOs���	7�	7�	7�	7�	7�	7�	7��
�	7�	7�	7����d�m�T�"���a��&�'�1��&�&��������*�*�*�������+�+�+������A�&�&�&���������#�-�-�/�/�:�:�:�������R���#�(�S�Z�*?�!�*C�D�D�D�D�Dr%c	�^�d}ddtd��dfD].}|�t|j||dd�z���/|�td��5|�tdgt
|��z��d��ddd��dS#1swxYwYdS)	Nz2:59.0r��9r/�ÿr&r�r�)�chrr�r�r=rr�r�)r1r[�	hour_bytes   r#r�z!TestTime.test_backdoor_resistanceis������c�3�r�7�7�F�2�	?�	?�I����i���)2�T�!�"�"�X�)=�
?�
?�
?�
?��
#�
#�I�/G�
H�
H�	9�	9��M�M�%���c�$�i�i��0�0�%�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s� 5B"�"B&�)B&N)rKrbrcrr=r�r�r�rZr�r�r�rrgr�rr�r�r�r�rvr6r�r_rer�r�rr%r#rKrK�sz�������H�+�+�+�.�.�.�
 �
 �
 �)?�)?�)?�VJ�J�J�,$�$�$�.2C�2C�2C�h,�,�,�<9�9�9�

�
�
�5�5�5�6G�G�G�.�.�.�?�?�?�C�C�C�?�?�?�8�8�8�,���I�I�I�2B�B�B�E�E�E�49�9�9�9�9r%rKc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�
TZInfoBasec��|j}Gd�dt��}|ddd|�����}|turdpd}|�|���|��t|turd	pd
���}|�|���|��|�|���|��dS)Nc��eZdZd�Zd�ZeZdS)�7TZInfoBase.test_argument_passing.<locals>.introspectivec��|rdpdS)N�real�nonerrxs  r#r}z>TZInfoBase.test_argument_passing.<locals>.introspective.tzname|s��B�M�6�,C�V�%Cr%c�*�t|rdpd���S)Nrf����rirrxs  r#rzzATZInfoBase.test_argument_passing.<locals>.introspective.utcoffset}s�� �2�9�"�+;��<�<�<�<r%N)rKrbrcr}rzrrr%r#�
introspectiver�{s+������C�C�C�
=�
=�
=��C�C�Cr%r�r&rYrUrr�r�r�rfri)r=rrr0r}rrzr)r1rZr��objr	s     r#�test_argument_passingz TZInfoBase.test_argument_passingxs����m��	�	�	�	�	�F�	�	�	��c�!�Q��-�-�/�/�2�2�2���$�;�)�6�3�V����������x�0�0�0��c�T�k�&9�c�&?�R�A�A�A����������(�3�3�3���������H�-�-�-�-�-r%c�H�|j}|�t|dddd���Gd�dt��}|�t|ddd|���Gd�dt��}|��}|ddd|���}|�|j|��dS)Nr&r�rc��eZdZd�Zd�ZdS)�3TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTryc��dSr4rr7s r#rsz<TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.__init__�����r%c��dSr4rrxs  r#rzz=TZInfoBase.test_bad_tzinfo_classes.<locals>.NiceTry.utcoffset�r�r%N�rKrbrcrsrzrr%r#�NiceTryr���"������$�$�$�)�)�)�)�)r%r�c��eZdZd�Zd�ZdS)�5TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTryc��dSr4rr7s r#rsz>TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.__init__�r�r%c��dSr4rrxs  r#rzz?TZInfoBase.test_bad_tzinfo_classes.<locals>.BetterTry.utcoffset�r�r%Nr�rr%r#�	BetterTryr��r�r%r�)r=r�r��objectrr5)r1rZr�r�ror�s      r#�test_bad_tzinfo_classesz"TZInfoBase.test_bad_tzinfo_classes�s����m�����)�S�!�Q��"��=�=�=�	*�	*�	*�	*�	*�f�	*�	*�	*�	
���)�S�!�Q��'��B�B�B�	*�	*�	*�	*�	*��	*�	*�	*�
�I�K�K���C��1�a��"�"�"���
�
�a�h��"�"�"�"�"r%c�6�Gd�dt��}|j}dD]�\}}|tur|ddd||�����}n/|tur|dddddd||�����}n
Jd
���|r�t	|��}t|d��\}}d|d	krd
pd||fz}	t
|t��r|���}|�t|��d|	z����|�
tt|����dS)Nc��eZdZd�Zd�ZdS)�6TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgyc�0�t|���|_dSrh�rrq)r1rqs  r#rsz?TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.__init__�s��'��7�7�7����r%c��|jSr4)rqrxs  r#rzz@TZInfoBase.test_utc_offset_out_of_bounds.<locals>.Edgy.utcoffset�s
���{�"r%Nr�rr%r#�Edgyr��s2������
8�
8�
8�
#�
#�
#�
#�
#r%r�))�`���F)�a���T)�T)rbFr&rYrUrr]r�
impossiblerXz%c%02d:%02drrz01:02:03)rr=rrrkr"rk�timetzr0r�r�r�)
r1r�rZrq�legitr��aofsrrm�tags
          r#�test_utc_offset_out_of_boundsz(TZInfoBase.test_utc_offset_out_of_bounds�sc��	#�	#�	#�	#�	#�6�	#�	#�	#��m��-�	6�	6�M�F�E��d�{�{��C��1�a���V���5�5�5��������C��1�a��A�q���f���>�>�>���&�,�&�&�&��
6��6�{�{���d�B�'�'���1�#�v��z�'9�c�'@�S�!�Q�&G�G���a��*�*�#����
�
�A�� � ��Q����c�)9�:�:�:�:��!�!�*�c�1�5�5�5�5�%	6�	6r%c	��|j}Gd�dt��}|ddd��|dddd���|ddd|�����fD]w}|�|�����|�|�����|�|������xGd�dt��}|ddd|�����}|�|���td�����|�|���td	�����|�|���d
��Gd�dt��}|ddd|�����}|�t|j��|�t|j��|�t|j��Gd
�dt��}|ddd|�����}|�t|j��|�t|j��Gd�dt��}|ddd|�����}|�|���td�����|�|���td�����dS)Nc� �eZdZd�Zd�Zd�ZdS)�*TZInfoBase.test_tzinfo_classes.<locals>.C1c��dSr4rrxs  r#rzz4TZInfoBase.test_tzinfo_classes.<locals>.C1.utcoffset�r�r%c��dSr4rrxs  r#rz.TZInfoBase.test_tzinfo_classes.<locals>.C1.dst�r�r%c��dSr4rrxs  r#r}z1TZInfoBase.test_tzinfo_classes.<locals>.C1.tzname�s���r%N�rKrbrcrzrr}rr%r#�C1r��s+������0�0�0�*�*�*�-�-�-�-�-r%r�r&rc� �eZdZd�Zd�Zd�ZdS)�*TZInfoBase.test_tzinfo_classes.<locals>.C3c�"�td���S)Nr�rirrxs  r#rzz4TZInfoBase.test_tzinfo_classes.<locals>.C3.utcoffset�s��I�e�,D�,D�,D�%Dr%c�"�td���S)Nr�rirrxs  r#rz.TZInfoBase.test_tzinfo_classes.<locals>.C3.dst�s��i��&=�&=�&=�=r%c��dS�N�anamerrxs  r#r}z1TZInfoBase.test_tzinfo_classes.<locals>.C3.tzname�s���r%Nr�rr%r#�C3r��s+������D�D�D�=�=�=�0�0�0�0�0r%r�r�rir�r�c� �eZdZd�Zd�Zd�ZdS)�*TZInfoBase.test_tzinfo_classes.<locals>.C4c��dSr�rrxs  r#rzz4TZInfoBase.test_tzinfo_classes.<locals>.C4.utcoffset�s��G�Gr%c��dSrrrxs  r#rz.TZInfoBase.test_tzinfo_classes.<locals>.C4.dst�r�r%c��dSrZrrxs  r#r}z1TZInfoBase.test_tzinfo_classes.<locals>.C4.tzname�s���r%Nr�rr%r#�C4r��s+������3�3�3�'�'�'�*�*�*�*�*r%r�c��eZdZd�Zd�ZdS)�*TZInfoBase.test_tzinfo_classes.<locals>.C6c�"�td���S)Ni��r�rrxs  r#rzz4TZInfoBase.test_tzinfo_classes.<locals>.C6.utcoffset�s��I�C�,@�,@�,@�%@r%c�"�td���S)Nr/r�rrxs  r#rz.TZInfoBase.test_tzinfo_classes.<locals>.C6.dst�s��i�b�&9�&9�&9�9r%Nr�rr%r#�C6r��s"������@�@�@�9�9�9�9�9r%r�c��eZdZd�Zd�ZdS)�*TZInfoBase.test_tzinfo_classes.<locals>.C7c�"�td���S)Nrr�rrxs  r#rzz4TZInfoBase.test_tzinfo_classes.<locals>.C7.utcoffset�s��I�2�,F�,F�,F�%Fr%c�"�td���S)N���r�rrxs  r#rz.TZInfoBase.test_tzinfo_classes.<locals>.C7.dst�s��i�S�&A�&A�&A�Ar%Nr�rr%r#�C7r��s"������F�F�F�A�A�A�A�Ar%r�rr�r�)r=rrrzrr}r0rr�r�r�)r1rZr�r�r�r�r�r�s        r#�test_tzinfo_classeszTZInfoBase.test_tzinfo_classes�sP���m��	.�	.�	.�	.�	.��	.�	.�	.��#�a��A�,�,��#�a��A�d�+�+�+��#�a��A�b�b�d�d�+�+�+�-�	*�	*�A�
���a�k�k�m�m�,�,�,����a�e�e�g�g�&�&�&����a�h�h�j�j�)�)�)�)�	1�	1�	1�	1�	1��	1�	1�	1�
�C��1�a�����%�%�%����������	�%�(@�(@�(@�A�A�A���������)�D�"9�"9�"9�:�:�:���������W�-�-�-�	+�	+�	+�	+�	+��	+�	+�	+�
�C��1�a�����%�%�%�����)�Q�[�1�1�1����)�Q�U�+�+�+����)�Q�X�.�.�.�	:�	:�	:�	:�	:��	:�	:�	:�
�C��1�a�����%�%�%�����*�a�k�2�2�2����*�a�e�,�,�,�	B�	B�	B�	B�	B��	B�	B�	B�
�C��1�a�����%�%�%����������	�r�(B�(B�(B�C�C�C���������)��"=�"=�"=�>�>�>�>�>r%c�f�|j}Gd�dt��}|ddd|�����}|�d���}|�d���}|�d	���}|||fD]k}|||fD]c}ttt
tttfD]:}	|	||��}
|	|j	|j	��}|�
|
|���;�d�l|tur�|�d|���
��}|�d|���
��}|�d	|���
��}|||fD]`}|||fD]V}||k||kz
}
||us||ur||us||urd}n||cxur|urnnd}n||urd}n||usJ�d
}|�
|
|���W�_dSdS)Nc��eZdZd�ZdS)�=TZInfoBase.test_aware_compare.<locals>.OperandDependentOffsetc�b�|jdkrt|j���Std���S�Nr'rir��rrr�s  r#rzzGTZInfoBase.test_aware_compare.<locals>.OperandDependentOffset.utcoffset��3���8�b�=�=�$�Q�X�6�6�6�6�%�R�0�0�0�0r%Nr�rr%r#�OperandDependentOffsetr���#������
1�
1�
1�
1�
1r%r�r�r�r'rrUr|r��rrrrr&)r=rrrrrrrr	rr0r)r1rZr�r[�d0rrpr�rl�opr^r	s            r#�test_aware_comparezTZInfoBase.test_aware_compare�sZ���m��	1�	1�	1�	1�	1�V�	1�	1�	1��s�1�a��$:�$:�$<�$<�=�=�=��
�\�\��\�
#�
#��
�\�\��\�
#�
#��
�\�\��\�
$�
$���R���	4�	4�A���R�Z�
4�
4���b�"�b�"�b�0�4�4�B��"�Q��(�(�C�!�r�!�(�A�H�5�5�H��$�$�S�(�3�3�3�3�4�
4��d�?�?����Q�/E�/E�/G�/G��H�H�B����Q�/E�/E�/G�/G��H�H�B����R�0F�0F�0H�0H��I�I�B���R�Z�
4�
4���R���4�4�A��q�5�Q��U�+�C��R���1��7�7��b���A��G�G�#$����a�����2������#$����b���#%��� �B�w�w�w�w�#$���$�$�S�(�3�3�3�3�4��?�
4�
4r%N)rKrbrcr�r�r�r�r�rr%r#r�r�vs`������.�.�.�$#�#�#� 6�6�6�8.?�.?�.?�`-4�-4�-4�-4�-4r%r�c�x�eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�ZdS)�
TestTimeTZc�:�|���}|�|jd��|�|jd��|�|jd��|�|jd��|�|j��dSrZ)r=r0rfrrrjrrr�s  r#�
test_emptyzTestTimeTZ.test_emptys����M�M�O�O��������#�#�#������1�%�%�%������1�%�%�%�������*�*�*����!�(�#�#�#�#�#r%c����tddd��}tddd��}tddd	��}td
d|���}td
d|���}tdd|���}td����td|����|�|j|��|�|j|��|�|j|��|��j��|��j|��|�|���t
d�����|�|���t
d�����|�|���t
d�����|�������|�t|jd��|�|�	��d��|�|�	��d��|�|�	��d��|���	����|�t|j	d��|�|�
��t
d�����|�|�
��t
d�����|�|�
��t
d	�����|���
����|�t|j
d��|�t|��t|����|�t|��t|����|�t|��t|����|�||��|�||��|�||��|�����|�t��fd���|�t��fd���|�t|��d��|�t|��d��|�t|��d��|�t���d��|�t���d��|�|���d��|�|���d��|�|���d��|�����d��|�����d��d}|�t|��|dz��|�t|��|dz��|�t|��|dz��|�t���|dz��|�t���|d z��|�|�d!��d"��|�|�d#��d$��|�|�d#��d%��td&d'��}td(d)|���}|�|�d*��d+��Gd,�d-t��}	td.d	d/|	�����}
|�|
�d0��d1��|�t|
jd2��d3|jjvr*d4|	_|�t(|
jd2��dSdS)5Nr�r�r&rrrWrX�METrUrXr�rr�r�(rvr�rizno argsc�����kSr4r�r��t5s��r#rEz'TestTimeTZ.test_zones.<locals>.<lambda>LrFr%c�����kSr4rr�s��r#rEz'TestTimeTZ.test_zones.<locals>.<lambda>MrFr%z07:47:00-05:00z12:47:00+00:00z13:47:00+01:00z00:00:00.000040z00:00:00.000040+00:00z
datetime.timez(7, 47, tzinfo=est)z(12, 47, tzinfo=utc)z(13, 47, tzinfo=met)z
(0, 0, 0, 40)z(0, 0, 0, 40, tzinfo=utc)z%H:%M:%S %%Z=%Z %%z=%zz07:47:00 %Z=EST %z=-0500z%H:%M:%S %Z %zz12:47:00 UTC +0000z13:47:00 MET +0100r�z%z %Z %%z%%Zr�r�z%H:%M %%Z='%Z' %%z='%z'z"23:59 %Z='%z %Z %%z%%Z' %z='-2359'c��eZdZdZd�ZdS)�(TestTimeTZ.test_zones.<locals>.Badtznamerfc��|jSr4r�rxs  r#r}z/TestTimeTZ.test_zones.<locals>.Badtzname.tznameos����.r%N)rKrbrcr�r}rr%r#�	Badtznamer�ms�������B�0�0�0�0�0r%r�rYr[z%H:%M:%Sz02:03:04r6rRr)rerr0rrrzrr�r�r}rr�r�r�r�r�r�rJrKr�r�)
r1�estr6�metr�r�r�r��yuckr�r�r�r�s
           @@r#�
test_zoneszTestTimeTZ.test_zones"s[�����$��q�)�)���!�U�B�'�'���"�e�Q�'�'��
�1�b��
%�
%�
%��
�"�b��
%�
%�
%��
�"�b��
%�
%�
%��
�b�
!�
!�
!��
�b��
-�
-�
-�������C�(�(�(������C�(�(�(������C�(�(�(����"�)�$�$�$������C�(�(�(����������4�)@�)@�)@�A�A�A����������1�)=�)=�)=�>�>�>����������2�)>�)>�)>�?�?�?����"�,�,�.�.�)�)�)����)�R�\�9�=�=�=���������e�,�,�,���������e�,�,�,���������e�,�,�,����"�)�)�+�+�&�&�&����)�R�Y�	�:�:�:���������9�Q�#7�#7�#7�8�8�8���������9�R�#8�#8�#8�9�9�9���������9�Q�#7�#7�#7�8�8�8����"�&�&�(�(�#�#�#����)�R�V�Y�7�7�7�����b���4��8�8�,�,�,�����b���4��8�8�,�,�,�����b���4��8�8�,�,�,�����R� � � �����R� � � �����R� � � ����B��#�#�#����)�_�_�_�_�_�5�5�5����)�_�_�_�_�_�5�5�5�����R���"2�3�3�3�����R���"2�3�3�3�����R���"2�3�3�3�����R���"3�4�4�4�����R���"9�:�:�:���������)9�:�:�:���������)9�:�:�:���������)9�:�:�:���������):�;�;�;���������)@�A�A�A�������b���1�'<�#<�=�=�=�����b���1�'=�#=�>�>�>�����b���1�'=�#=�>�>�>�����b���1��#6�7�7�7�����b���1�'B�#B�C�C�C�������%=�>�>�%?�	A�	A�	A�������%5�6�6�8L�M�M�M�������%5�6�6�8L�M�M�M��5�.�1�1��
�"�b��
&�
&�
&��������%>�?�?�%I�	K�	K�	K�	1�	1�	1�	1�	1��	1�	1�	1�
��A�q�����-�-�-��������J�/�/��<�<�<����)�Q�Z��6�6�6��d�n�-�-�-�#�I�L����j�!�*�d�;�;�;�;�;�.�-r%c
��|�ddddtdd�����}|�ddddtdd�����}|�t|��t|����|�d	d
ddtd
d�����}|�d	dddtdd�����}|�t|��t|����dS)Nrr&rYrUr�rri�r�r�r]r�i���rOi���)r=rer0r�r�s   r#�test_hash_edge_caseszTestTimeTZ.test_hash_edge_casesys���
�]�]�1�a��A�k�$��.C�.C�]�
D�
D��
�]�]�1�a��A�k�$��.C�.C�]�
D�
D������b���4��8�8�,�,�,�
�]�]�2�r�1�c�+�e�R�2H�2H�]�
I�
I��
�]�]�2�r�1�c�+�e�R�2H�2H�]�
I�
I������b���4��8�8�,�,�,�,�,r%c��d}|j|�}tD]G\}}}|�||��}|�|��}|�||���H|�|���|�d����tdd��}|�ddd|���}tD]�\}}}|�||��}|�|��}|�||��|�|j	t��|�|�
��td�	����|�|���d����|�|���|�d����dS)
NrtrYr�r�rVr]rXrri)
r=r�r�r�r0r*r+r�r�rrzrr}�	r1r�r�r�r�r"r�r��tinfos	         r#r�zTestTimeTZ.test_pickling�s��� ���t�}�d�#��)7�	,�	,�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+�+�������*�*�D�,>�,>�q�,A�,A�B�B�B�%�T�8�4�4���}�}�Q��1�U�}�3�3��)7�	9�	9�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+��!�!�'�.�2F�G�G�G����W�.�.�0�0�)�D�2I�2I�2I�J�J�J����W�^�^�-�-�x�8�8�8�8�������*�*�D�,>�,>�q�,A�,A�B�B�B�B�Br%c	���gd�}tdd��}|�dddd|���}|D]�}tD]�}||d	�
��}|�||t	|����|�|jt��|�|���td�����|�|�	��d������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�rVr]rXrgrr/r0ri)
r�r=r3r0r�r�rrzrr})r1rrr	r5r�r�s       r#r6zTestTimeTZ.test_compat_unpickle�s��
�
�
��.%�T�8�4�4���=�=��A�q�&��=�?�?���	=�	=�D�%�
=�
=���%��x�8�8�8��� � ��(�D��J�J�?�?�?��%�%�g�n�6J�K�K�K�� � ��!2�!2�!4�!4�i��6M�6M�6M�N�N�N�� � ����!1�!1�8�<�<�<�<�
=�	=�	=r%c��|j}|dtdd�����}|�|��|dtdd�����}|�|��|dtdd�����}|�|��|ddtd	d�����}|�|��dS)
Nrr�rrrVi,r�r�r�)r=rer�)r1rZr�s   r#�test_more_boolzTestTimeTZ.test_more_bool�s����m���C��+�d�B�/�/�0�0�0����������C��+�d�B�/�/�0�0�0����������C��+�c�2�.�.�/�/�/����������C��B�{�:�r�:�:�;�;�;����������r%c�2�|j}tdd��}ttd���d��}dddd	|g}||�}|�||�����d
}ddd
dd|ffD]C\}}|dd�}	||	|<||	�}
|jdi||i��}|�|
|��|dz
}�D|�|���d��|�d���}|�|j��|�|�����|�|���}
|�||
��|�|j|
j��|d��}|�	t|jd���|�	t|jd���|�	t|jd���|�	t|jd���dS)Nr��+100�8���ri�-200r&rYrUr[rr�r�r�r�rrr/r{rr|rfrrvr�r=rerr0rr}rrr5r�r��r1rZ�z100�zm200r�r[rrrFr\r]r	r^�base2�base3s              r#r_zTestTimeTZ.test_replace�s)���m���3��'�'���I�d�3�3�3�V�<�<���1�a��D�!���s�D�z������t�|�|�~�~�.�.�.�
��(�*�*�/�&��.�	0�
	�
	�L�D�&�
�1�1�1�g�G��G�A�J��s�G�}�H��$�,�0�0�$���0�0�C����X�s�+�+�+�
��F�A�A�	
���������/�/�/����D��)�)�����%�,�'�'�'����%�,�,�.�.�)�)�)��
�
�T�
�*�*������u�%�%�%��
�
�d�k�5�<�0�0�0��s�1�v�v�����*�d�l���<�<�<����*�d�l�2��>�>�>����*�d�l�3��?�?�?����*�d�l���H�H�H�H�Hr%c���|�ddd��}|�ddd��}|�||��|�d���}|�||��|�tdd�����}|�||��|�tdd�����}|�||��Gd�dt
��}|��}|�|���}|�|���}|�|���td	�
����|�|���td�
����|�||��|�|�����}|�||k��dS)Nr&rYrUrrrc��eZdZd�Zd�ZdS)�-TestTimeTZ.test_mixed_compare.<locals>.Variesc�0�td���|_dS�Nr�rir�r7s r#rsz6TestTimeTZ.test_mixed_compare.<locals>.Varies.__init__����'��3�3�3����r%c�L�|xjtd���z
c_|jS�Nr&ri�rqrr�s  r#rzz7TestTimeTZ.test_mixed_compare.<locals>.Varies.utcoffset�%�����y��3�3�3�3����{�"r%Nr�rr%r#�Variesr��2������
4�
4�
4�
#�
#�
#�
#�
#r%rr�rir/)	r=r0rrer�rrzrr��r1r�r�r�vs     r#rKzTestTimeTZ.test_mixed_compare�s���
�]�]�1�a��
#�
#��
�]�]�1�a��
#�
#������R� � � �
�Z�Z�t�Z�
$�
$������R� � � �
�Z�Z�{�4��4�4�Z�
5�
5������R� � � �
�Z�Z�{�1�b�1�1�Z�
2�
2�����B��#�#�#�	#�	#�	#�	#�	#�V�	#�	#�	#�
�F�H�H��
�Z�Z�q�Z�
!�
!��
�Z�Z�q�Z�
!�
!�����������2�)>�)>�)>�?�?�?����������2�)>�)>�)>�?�?�?�����R� � � ��Z�Z�v�v�x�x�Z�
(�
(������R�� � � � � r%c	��ddg}d}d}d}d}|ttj||||����z
}dtjttd�����ttd	d
�����g}|D]�}|D]�}|j|d|i�}	|	���}
|�|
�
��5|j�	|
��}|�
|	|��ddd��n#1swxYwY����dS)Nr�)r�r�r�r()r�r�r<)rVr)r[r�)ri�r!rYr�r]r.r�rr	)r��	itertools�productrr6rr=r�r3r�r0)r1�
time_examples�hh�mm�ss�usecr�ttuprr�r
�t_rts            r#r�zTestTimeTZ.test_fromisoformatsk��� �
�
�
��
��
��"����i�/��B��D�A�A�B�B�B�
�����I�A�.�.�.�/�/��I�A�r�:�:�:�;�;�=��"�	.�	.�D��
.�
.��!�D�M�4�4��4�4���{�{�}�}���\�\�t�\�,�,�.�.��=�6�6�t�<�<�D��$�$�Q��-�-�-�.�.�.�.�.�.�.�.�.�.�.����.�.�.�.��	
.�	.�	.s�:1C7�7C;�>C;c
�|�|�dddd��}td���td���tdd	�
��tddd���tdd
dd���g}|d�|D��z
}dtjttd�����g}|d�|D��z
}|D]�}|�|���}|���}|�|���5|j�|��}||ks
J|���	ddd��n#1swxYwY��dS)Nr�rr�rrVr�rYr]r.r�r�r'r[r�rgr)c��g|]}d|z��Srrrs  r#r$z:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>4rr%rc�,�g|]}t|����Srrrs  r#r$z:TestTimeTZ.test_fromisoformat_timezone.<locals>.<listcomp>9rr%rr	r)r1�	base_timerrrr�r
r's        r#r
z&TestTimeTZ.test_fromisoformat_timezone*s����M�M�"�b�"�f�5�5�	�
�A����	�� 2� 2� 2��A�r�*�*�*��B��B�7�7�7��A�q�!�&�I�I�I�	
�	�	�2�2�	�2�2�2�2�	�����I�A�.�.�.�/�/�1��	�5�5�9�5�5�5�5���	'�	'�C��!�!��!�-�-�A��;�;�=�=�D����4��(�(�
'�
'��}�2�2�4�8�8���D�y�y�y�$�y�y�y�y�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��		'�	's�8+D0�0D4	�7D4	c
�v�ddg}dtjttd�����ttd�����ttdd�����g}gd	�}t|��D]�\}}|D]�}|D]�}|d
krd|ddzz}|d
d�|fz}|j|d
d|z�d|i�}	|	�|���}
|�|
���5|j�|
��}|�|	|��ddd��n#1swxYwY������dS)N)r�r<r�rg)r�r<r�rrr�rYr]r.r�rrUrYrrr&rr�r	r)r1�
time_basesrrrr�r�t_tuplerr�r
r's            r#rz'TestTimeTZ.test_fromisoformat_timespecsCs�����
�
�
����I�B�/�/�/�0�0��I�A�.�.�.�/�/��I�A�r�:�:�:�;�;�=��
5�5�5�	� �	�*�*�	2�	2�F�B���

2�

2��)�	2�	2�G��^�+�+�+/�7�2�;�$�3F�+G�(�")�!�B�$�-�3C�2E�"E��%��
���1�r�6�
�(;�I�S�I�I�A��;�;��;�3�3�D����4��0�0�2�2�#�}�:�:�4�@�@���(�(��D�1�1�1�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2��	2�

2�	2�	2rc��gd�}|D]?\}}|j|�}|j�|��}|�||���@dS)N))z
12:30:45.1)r�rr�r_)z12:30:45.12)r�rr�i��)z12:30:45.123)r�rr�ix�)z
12:30:45.1234)r�rr�i�)z12:30:45.12345)r�rr�i:�)z12:30:45.123456�r�rr�rg)z12:30:45.1234567r0)z12:30:45.12345678r0)r=r�r0)r1�strs�time_str�
time_compsr	r�s      r#�test_fromisoformat_fractionsz'TestTimeTZ.test_fromisoformat_fractions^so��	
�	
�	
��%)�	/�	/� �H�j�$�t�}�j�1�H��]�0�0��:�:�F����V�X�.�.�.�.�		/�	/r%c�	�gd|�dd��f�d|�dd��f�d|�dd��f�d|�dd��f�d|�dd��f�d|�dd��f�d|�dd��f�d	|�dd��f�d
|�dd��f�d|�dd��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�d
d��f�d|�dd��f�d|�dd��f�d|�ddd��f�d|�ddd��f�d|�dddd��f�d|�dddd��f�d |�dddd!��f�d"|�dddd!��f�d#|�dddd$��f�d%|�dddd$��f�d&|�ddtj�'��f�d(|�d
dtj�'��f�d)|�d
dtj�'��f�d*|�ddttd+�,�����'��f�d-|�ddttd+d.�/�����'��f�d0|�d
dttd1�,�����'��f�d2|�d
dttd1�,�����'��f�d3|�ddttdddd$�4�����'��f�}|D]c\}}|�|�5��5|j�|��}|�||��ddd��n#1swxYwY�ddS)6N�0000rz00:00�000000r^z000000.0z
00:00:00.0z
000000.000z00:00:00.000z
000000.000000z00:00:00.000000�1200r�z12:00�120000z12:00:00z120000.0z
12:00:00.0z
120000.000z12:00:00.000z
120000.000000z12:00:00.000000�2359r�r�z23:59�235959z23:59:59z235959.9i��
z
23:59:59.9z
235959.999r^z23:59:59.999z
235959.999999r(z23:59:59.999999z	00:00:00Zrz
12:00:00+0000z12:00:00+00:00z00:00:00+05rVr�z00:00:00+05:30rr�z12:00:00-05:00rz
12:00:00-0500z00:00:00,000-23:59:59.999999r)r�)r=rr6rr3r�r0r�s     r#� test_fromisoformat_time_examplesz+TestTimeTZ.test_fromisoformat_time_examplesps���,
�
�T�]�]�1�a�(�(�)�,
�
�d�m�m�A�q�)�)�*�,
��t�}�}�Q��*�*�+�,
�����q�!�,�,�-�	,
�
����q�!�,�,�-�,
��4�=�=��A�.�.�/�
,
��4�=�=��A�.�.�/�,
��T�]�]�1�a�0�0�1�,
��d�m�m�A�q�1�1�2�,
���
�
�a�� 3� 3�4�,
��T�]�]�2�q�)�)�*�,
��d�m�m�B��*�*�+�,
��t�}�}�R��+�+�,�,
�����r�1�-�-�.�,
�����r�1�-�-�.�,
� �4�=�=��Q�/�/�0�!,
�"�4�=�=��Q�/�/�0�#,
�$�T�]�]�2�q�1�1�2�%,
�&�d�m�m�B��2�2�3�',
�(��
�
�b�!� 4� 4�5�),
�*�T�]�]�2�r�*�*�+�+,
�,�d�m�m�B��+�+�,�-,
�.�t�}�}�R��R�0�0�1�/,
�0����r�2�r�2�2�3�1,
�2����r�2�r�6�:�:�;�3,
�4�4�=�=��R��V�<�<�=�5,
�6�4�=�=��R��V�<�<�=�7,
�8�T�]�]�2�r�2�v�>�>�?�9,
�:�d�m�m�B��B��?�?�@�;,
�<��
�
�b�"�b�&� A� A�B�=,
�>�$�-�-��1�X�\�-�B�B�C�?,
�@�d�m�m�B��(�,�m�G�G�H�A,
�B�t�}�}�R��8�<�}�H�H�I�C,
�D�
�]�]�1�a����1C�1C�1C�(D�(D�]�
E�
E�
G�E,
�H�
�]�]�1�a����B�1O�1O�1O�(P�(P�]�
Q�
Q�
S�I,
�L�
�]�]�2�q��)�"�2E�2E�2E�)F�)F�]�
G�
G�
I�M,
�P�
�]�]�2�q��)�"�2E�2E�2E�)F�)F�]�
G�
G�
I�Q,
�T,�
�]�]�1�a��)�"�b�Z\�kq�2r�2r�2r�1r�(s�(s�]�
t�
t�
v�U,
��\$,�	3�	3��I�x����	��2�2�
3�
3���4�4�Y�?�?��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��	3�	3s�81R5�5R9	�<R9	c��gd�}|D]|}|�|���5|�t��5|j�|��ddd��n#1swxYwYddd��n#1swxYwY�}dS)N)ru12�00z12:z12:30:z	12:30:15.�1z12:3z12:30:1z1a:30:45.334034z12:a0:45.334034z12:30:a5.334034z12:30:45.123456+24:30z12:30:45.123456-24:30u12:30:45�12:30:45.123456az12:30:45.123456789au12:30:45․123456z	12:30:45az
12:30:45.123ar?z12:30:45.123456-z12:30:45.123456+z12:30:45.123456+12:00:30ar3r4r�s   r#r�z#TestTimeTZ.test_fromisoformat_fails�s��
�
�
��4 �	9�	9�G����g��.�.�
9�
9��&�&�z�2�2�9�9��M�/�/��8�8�8�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��	9�	9r6c���ddtjd��g}|D]N}|�t��5|j�|��ddd��n#1swxYwY�OdS)Ns12:30:45z12:30:45r�r�s   r#r�z-TestTimeTZ.test_fromisoformat_fails_typeerror�s��� �$���J�(?�(?�@�	�!�	6�	6�H��"�"�9�-�-�
6�
6��
�+�+�H�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6r�c��Gd�d|j��}|ddddtj���}|�|�����}|�||��|�||��dS)Nc��eZdZdS)�<TestTimeTZ.test_fromisoformat_subclass.<locals>.TimeSubclassNr�rr%r#r�rC�r�r%r�r�rdr�i�r)r=rr6r�r�r0r�)r1r��tsc�tsc_rts    r#r�z&TestTimeTZ.test_fromisoformat_subclass�s���	�	�	�	�	�4�=�	�	�	��l�2�r�2�v�h�l�C�C�C���+�+�C�M�M�O�O�<�<������f�%�%�%����f�l�3�3�3�3�3r%c	���G�fd�d�j��}ddddtddd	��f}�j|�}||id
di��}��|j|����|jd����|jd����|���|�������|�d
��|j|j	zdz
��dS)Nc�$��eZdZdZ�fd�Zd�ZdS)�*TestTimeTZ.test_subclass_timetz.<locals>.Crfc���|���}|�d��}�jj|g|�Ri|��}||_|Srjrkrms      �r#r�z2TestTimeTZ.test_subclass_timetz.<locals>.C.__new__�rqr%c�&�||jz|jzSr4r�rss  r#ruz2TestTimeTZ.test_subclass_timetz.<locals>.C.newmeth�r�r%Nrvr7s�r#rxrH�r�r%rxr[rVr]��r�r�r&r�rXrfrZ)
r=rer0rJrwr�rzrurfrrzs`    r#�test_subclass_timetzzTestTimeTZ.test_subclass_timetz�s���	7�	7�	7�	7�	7�	7�	7��
�	7�	7�	7��!�Q��[��u�a�8�8�8���d�m�T�"���a��&�'�1��&�&��������*�*�*�������+�+�+������A�&�&�&���������#�-�-�/�/�:�:�:�������R���#�(�S�Z�*?�!�*C�D�D�D�D�Dr%N)rKrbrcrr=r�r�r�r�r6rr_rKr�r
rr4r<r�r�r�rLrr%r#r�r�s+�������H�$�$�$�U<�U<�U<�n-�-�-�C�C�C�, =� =� =�D��� %I�%I�%I�N!�!�!�<.�.�.�4'�'�'�22�2�2�6/�/�/�$23�23�23�h9�9�9�@6�6�6�4�4�4�E�E�E�E�Er%r�c�&�eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zejd��d���Zejd��d���Zejd��d���Zd�Zd�Zd�ZdS)�TestDateTimeTZc	���|�ddddddd��}|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��|�|j	d��dS)Nr&rYrUr[rVr]rX)
r=r0r_r`r�rfrrrjrrxs  r#�test_trivialzTestDateTimeTZ.test_trivial�s���
�]�]�1�a��A�q�!�Q�
/�
/�������!�$�$�$������1�%�%�%�������#�#�#������!�$�$�$������A�&�&�&������A�&�&�&�������+�+�+������D�)�)�)�)�)r%c
�x���|�dddtdd������|�tdddddd	td
d������|���k��|���k��|���k��|�����|�����|�dddddtdd������|�ddddd
tdd������|�����|�dddddtdd������|���k��|�dddddtdd������|���k��|�dddddtdd��d����|���k��|�dddddtdd��d����|���k��|jj�|�����|�����|�t��5��kddd��n#1swxYwYGd�dt��}|�ddd|������|�����|�����|�ddd���|�����Gd�dt��}|�ddd|������|�dddtdd������|�t��fd���dS)Nr&r�rrr�r�r�r�r(r�rYrUr��r)rrrmc��eZdZd�ZdS)�4TestDateTimeTZ.test_even_more_compare.<locals>.Naivec��dSr4rrxs  r#rzz>TestDateTimeTZ.test_even_more_compare.<locals>.Naive.utcoffset4r�r%Nr�rr%r#�NaiverT3s������0�0�0�0�0r%rVrVr]rXc��eZdZd�ZdS)�4TestDateTimeTZ.test_even_more_compare.<locals>.Bogusc�"�td���S)Nrbrirrxs  r#rzz>TestDateTimeTZ.test_even_more_compare.<locals>.Bogus.utcoffset@s�� ��.�.�.�.r%Nr�rr%r#r�rX?s#������
/�
/�
/�
/�
/r%r�c�����kSr4r)r�r�s��r#rEz7TestDateTimeTZ.test_even_more_compare.<locals>.<lambda>Ds���b�B�h�r%)r=rerr�r0r�r�r�r�rr�)r1rVr�r�r�s   @@r#�test_even_more_comparez%TestDateTimeTZ.test_even_more_compares%����
�]�]�1�a��;�t�R�+@�+@�]�
A�
A��
�]�]�7�B��B��B��"-�e�R�"8�"8��:�:��	
����R�� � � �����b��!�!�!�����R�� � � �����R� � � �����R� � � ��]�]�1�b�"�b�"�[��B�5G�5G�]�
H�
H��
�]�]�1�a��A�r�+�i��2L�2L�]�
M�
M������R� � � ��]�]�1�b�"�b�"�[��B�5G�5G�]�
H�
H������R�� � � ��]�]�1�b�"�b�"�[��B�5G�5G�]�
H�
H������R�� � � ��]�]�1�b�"�b�"�[��B�5G�5G�"#��%�%������R�� � � ��]�]�1�b�"�b�"�[��B�5G�5G�'(��*�*������R�� � � ��]�
�����B��#�#�#�����R� � � �
�
�
�y�
)�
)�	�	���G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	1�	1�	1�	1�	1�F�	1�	1�	1�
�]�]�1�a��5�5�7�7�]�
3�
3�����B��#�#�#�����R� � � ��]�]�1�a��
#�
#������R� � � �	/�	/�	/�	/�	/�F�	/�	/�	/��]�]�1�a��5�5�7�7�]�
3�
3��
�]�]�1�a��;�q�"�+=�+=�]�
>�
>�����*�&6�&6�&6�&6�&6�7�7�7�7�7s�J(�(J,�/J,c
���d}|j|�}tD]G\}}}|�||��}|�|��}|�||���H|�|���|�d����tdd��}|j|id|i��}|�dddtddd���	��}tD]�\}}}|�||��}|�|��}|�||��|�	|j
t��|�|���td�
����|�|�
��d����|�|���|�d����dS)NrLrYr�r�rr&rrrri)r=r�r�r�r0r*r+r�rer�rrzrr}rs	         r#r�zTestDateTimeTZ.test_picklingFs���)���t�}�d�#��)7�	,�	,�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+�+�������*�*�D�,>�,>�q�,A�,A�B�B�B�%�T�8�4�4���t�}�d�8�x��&7�8�8���-�-��1�a��A�r�1�0E�0E�-�F�F��)7�	9�	9�%�G�Y���M�M�$��.�.�E��o�o�e�,�,�G����T�7�+�+�+��!�!�'�.�2F�G�G�G����W�.�.�0�0�)�D�2I�2I�2I�J�J�J����W�^�^�-�-�x�8�8�8�8�������*�*�D�,>�,>�q�,A�,A�B�B�B�B�Br%c��gd�}d}tdd��}|j|id|i��}|D]�}tD]�}||d���}|�||��|�|jt��|�|���td�����|�|���d������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.)r-r�r.r<r�r&rgr�r�rr/r0ri)	r�r=r3r0r�rrzrr})r1rr�rr	r5r�r�s        r#r6z#TestDateTimeTZ.test_compat_unpickle]s��
�
�
��2/��$�T�8�4�4�� �4�=�$�<�8�U�*;�<�<���	=�	=�D�%�
=�
=���%��x�8�8�8��� � ��(�3�3�3��%�%�g�n�6J�K�K�K�� � ��!2�!2�!4�!4�i��6M�6M�6M�N�N�N�� � ����!1�!1�8�<�<�<�<�
=�	=�	=r%c
��|�dddtdd�����}t|��|�tdddddd	td
d�����}t|��|�dddtdd�����}|�t
t|��dS)
Nr&r�rrr�r�r�r�r(r�rVr�)r=rer�rr�r�r�s  r#�test_extreme_hashesz"TestDateTimeTZ.test_extreme_hashes�s���
�M�M�!�Q��+�d�B�*?�*?�M�@�@���Q�����M�M�'�2�r�2�r�2�v�!,�U�B�!7�!7�
�
9�
9���Q����
�M�M�!�Q��+�e�R�*@�*@�M�A�A�����*�d�A�.�.�.�.�.r%c��tdd��}tdd��}tdd��}tddd	d
d|���}tddd	d
d|���}tddd	dd|���}|�|j|��|�|j|��|�|j|��|�|���td�����|�|���td�����|�|���td�����|�|���d��|�|���d��|�|���d��|�t|��t|����|�t|��t|����|�t|��t|����|�||��|�||��|�||��|�t|��d��|�t|��d��|�t|��d��d}|�t|��|dz��|�t|��|dz��|�t|��|dz��dS)Nr�r�rrrXr�r^rUrrXr�rr�rriz2002-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))
rerr0rrzrr}r�r�r�)r1r�r6r�r�r�r�r�s        r#r�zTestDateTimeTZ.test_zones�s
���$��&�&���!�U�#�#���"�e�$�$��
�d�A�r�A�r�#�
6�
6�
6��
�d�A�r�2�r�#�
6�
6�
6��
�d�A�r�2�r�#�
6�
6�
6�������C�(�(�(������C�(�(�(������C�(�(�(����������4�)@�)@�)@�A�A�A����������1�)=�)=�)=�>�>�>����������2�)>�)>�)>�?�?�?���������e�,�,�,���������e�,�,�,���������e�,�,�,�����b���4��8�8�,�,�,�����b���4��8�8�,�,�,�����b���4��8�8�,�,�,�����R� � � �����R� � � �����R� � � �����R���"=�>�>�>�����R���"=�>�>�>�����R���"=�>�>�>�-������b���1�';�#;�<�<�<�����b���1�'<�#<�=�=�=�����b���1�'<�#<�=�=�=�=�=r%c
���tdd��}tddd��}tdddd|�	��}tj||��}|�|tddddddd|�	����dS�
NrXr�r^rUr[r(r�r�r)rerrrr�r0)r1r�r�r�rys     r#r�zTestDateTimeTZ.test_combine�s����"�e�$�$����q�!����
�"�b�!�T�#�
.�
.�
.��
�
�a��
$�
$������X�d�A�q�"�b�!�T�/2�4�4�4�	5�	5�	5�	5�	5r%c
��tdd��}|�ddddddd|�	��}|�|���tddd����|�|���t	dddd����|�|���t	dddd|�	����dSrb)rer=r0rrr�)r1r�rys   r#r�zTestDateTimeTZ.test_extract�s����"�e�$�$��
�]�]�4��A�r�2�q�$�s�]�
C�
C����������D��q�!�$4�$4�5�5�5���������D��R��D�$9�$9�:�:�:���������d�2�r�1�d�3�&G�&G�&G�H�H�H�H�Hr%c
�z�
����|j����tdd��}�����|���}|j�����|���|��j|��|�	��
��|��|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t�fd���|�	��z
td	����|�	��z
td	����td
dd�
���
��
z�|��j|���
�z}|�|j|��|�	�|����
z
}|�|j|��|�	�|��|�t�
�fd���|�	��z
�
��ttjdd��d��}��|����|��j|����z
}��������z
�
z
}|�	||��|�d
d
d
tdd�����}|�t"ddddddtdd�����}	|	|z
}
|�	|
|jj|jjz
td���z��t)t*d��}t)t*d��}|�|���|	�|���z
�
|�	�
|jj|jjz
��dS)Ni����z	west 5:30rc�����z
Sr4r�r��nowawares��r#rEz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>�����S�8�^�r%c�����z
Sr4rrfs��r#rEz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>�����X��^�r%c�����zSr4rrfs��r#rEz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>�rhr%c�����zSr4rrfs��r#rEz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>�rjr%c�����zSr4r)rgs�r#rEz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>�s���X��-@�r%rr&r�i.)rSrjr�c�����z
Sr4r)r,�nowawarepluss��r#rEz9TestDateTimeTZ.test_tz_aware_arithmetic.<locals>.<lambda>�s���U�\�-A�r%r�rb�randomtimezoner�r�r�r�r�r(r�i>rir�r)r=r�rerrr�rr5rr0r�r�r�rr��	randrangerzrr�r�rr)r1�tz55�	timeaware�
nowawareplus2r��tzrr^r	r�r��maxdiff�tza�tzbr,r�rgros             @@@@r#�test_tz_aware_arithmeticz'TestDateTimeTZ.test_tz_aware_arithmetic�s�������m���!�!���4��-�-���H�H�J�J�&�&�d�&�3�3�	��=�(�(������Y�?�?���
�
�h�o�t�,�,�,�������*�*�I�6�6�6�	
���)�%;�%;�%;�%;�%;�<�<�<����)�%;�%;�%;�%;�%;�<�<�<�	
���)�%;�%;�%;�%;�%;�<�<�<����)�%;�%;�%;�%;�%;�<�<�<����)�%@�%@�%@�%@�A�A�A�	
����s��I�a�L�L�1�1�1�����H�,�i��l�l�;�;�;���2�D�A�A�A���%�'���
�
�h�o�t�,�,�,���(�
��
�
�m�*�D�1�1�1�����}�5�5�5��e�#���
�
�d�k�4�(�(�(�����4�(�(�(����)�%A�%A�%A�%A�%A�B�B�B������0�%�8�8�8��&�*�5�$�7�7�9I�J�J��#�+�+�3�+�7�7���
�
�l�)�3�/�/�/���%�� �)�)�+�+�h�.@�.@�.B�.B�B�U�J������h�'�'�'��m�m�A�q�!�K��e�,D�,D�m�E�E���m�m�G�R��R��R��#.�u�e�#<�#<��>�>����)������$�-�"3�d�m�6G�"G�"+�F�";�";�";�#<�	=�	=�	=��t�S�!�!���t�S�!�!�����3��'�'�#�+�+�S�+�*A�*A�A�������
� 1�D�M�4E� E�F�F�F�F�Fr%c�(�|jj}|��}tdd��}||��}||���}|�|j|j��|�|���td�����|�t|d��|�t|d���|�t||���|�t|||��tdd	d��}ttd
d���d
d��ttd
d���d
��fD]�}td��D]�}tj|��}	|�|	j|��tj
���|���}
|
�|��}t!|	|z
��td���krn��|�d����dS)Nrf�42r�rirr�rrr6r�r�r��weirdtzrUrr�z0utcnow(), now(tz), or astimezone() may be broken)r=r�rer5rr0rzrr�r�rrlrr�rr�rk�fail)r1�methr[�off42�another�againr6r}rr�r��now2s            r#�test_tzinfo_nowzTestDateTimeTZ.test_tzinfo_now�s���}� ���t�v�v���B��%�%���$�u�+�+����������
�
�g�n�e�l�3�3�3�����*�*�,�,�i��.C�.C�.C�D�D�D����)�T�2�.�.�.����)�T�"��5�5�5����)�T���7�7�7����)�T�5�%�8�8�8�
�!�U�A�&�&��#�I�B��$C�$C�$C�Y�PQ�R�R� ���R�!@�!@�!@�)�L�L�O�
	N�
	N�G��q���
N�
N���l�7�+�+���
�
�c�j�'�2�2�2�!��*�*�2�2�#�2�>�>���(�(��1�1���s�T�z�?�?�Y�r�%:�%:�%:�:�:��E�;��	�	�L�M�M�M��
	N�
	Nr%c�t�ddl}|jj}|j��}||��}tdd��}|||��}|||���}|�|j|j��|�|���td�����|�	t||d��|�	t||d���|�	t|||���|�	t||||��|�	t|��d	}tj|��}	td
d���}
t|
d
d��}|	|
z}tj||��}
|�||
�
d�����dS)Nrrfr{r�rirrr|r�i��'r�r�)rr=r�rer5rr0rzrr�r�rr_r)r1rrr�r[r�r�r�r��utcdatetimerzr�r	r^s              r#�test_tzinfo_fromtimestampz(TestDateTimeTZ.test_tzinfo_fromtimestamp#s��������}�*��
�T�Y�[�[���t�B�x�x���B��%�%���$�r�5�/�/����R�E�"�"�"���
�
�g�n�e�l�3�3�3�����*�*�,�,�i��.C�.C�.C�D�D�D����)�T�2�r�2�2�2����)�T�2�b��9�9�9����)�T�2�U��;�;�;����)�T�2�u�e�<�<�<����)�T�*�*�*��	��/�	�:�:��
�C��4�4�4�	�
��D�!�
,�
,����*���$�Y��3�3������3�;�;�d�;�#;�#;�<�<�<�<�<r%c���|jj}|��}tdd��}|�t||��|�t||���dS)Nrfr{r)r=r�rer�r�)r1rr[r�s    r#�test_tzinfo_utcnowz!TestDateTimeTZ.test_tzinfo_utcnowFsa���}�#���t�v�v���B��%�%�����)�T�5�1�1�1����)�T�%��8�8�8�8�8r%c���ddl}|jj}|j��}||��}tdd��}|�t
|||��|�t
|||���dS)Nrrfr{r)rr=r_rer�r�)r1rrr�r[r�s      r#�test_tzinfo_utcfromtimestampz+TestDateTimeTZ.test_tzinfo_utcfromtimestampPs}�������}�-��
�T�Y�[�[���t�B�x�x���B��%�%�����)�T�2�u�5�5�5����)�T�2�e��<�<�<�<�<r%c
���Gd�dt��}|j}dD�])\}}|ddddddd||���	��}|���}|�d|j��|�d|j��|�d|j��|�d|j��|�d|j��|�d|j	��|�d
|j
��|�d|j��|�||j����+|�
t|ddd|d���	��j��|�|ddd|d���	�����jd��|�|ddd|d
���	�����jd��|�
t|ddd|d���	��j��|�
t|ddd|d���	��j��dS)Nc��eZdZd�Zd�ZdS)�1TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DSTc�^�t|t��rt|���}||_dSrh�rkrlr�dstvalue�r1r�s  r#rsz:TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.__init__`�/���h��,�,�;�(��:�:�:�H� (��
�
�
r%c��|jSr4�r�rxs  r#rz5TestDateTimeTZ.test_tzinfo_timetuple.<locals>.DST.dstd�
���}�$r%N�rKrbrcrsrrr%r#�DSTr�_s2������
)�
)�
)�
%�
%�
%�
%�
%r%r�))����r&)r�r&)rr)Nrr&r'r<rr�rrr�r�r�rbr�)rr=r�r0rrrr r!r"r#r$r%r�r�r�)r1r�rZr��flagr�r�s       r#�test_tzinfo_timetuplez$TestDateTimeTZ.test_tzinfo_timetuple\s���	%�	%�	%�	%�	%�&�	%�	%�	%��m��C�	/�	/�N�H�d���A�q�!�R��R��C�C��M�M�B�B�B�A����
�
�A����Q��	�*�*�*����Q���)�)�)����Q��	�*�*�*����R���+�+�+����R���*�*�*����R���*�*�*����Q��	�*�*�*����Q��	�*�*�*����T�1�:�.�.�.�.�	
���)�S�S��A�q���S���%B�%B�%B�%L�M�M�M�	
�����Q�q��3�3�t�9�9�5�5�5�?�?�A�A�J�A�N�N�N������Q�q��3�3�u�:�:�6�6�6�@�@�B�B�K�Q�O�O�O�	
���*�c�c�!�A�a���D�	�	�&B�&B�&B�&L�M�M�M����*�c�c�!�A�a���E�
�
�&C�&C�&C�&M�N�N�N�N�Nr%c�
��Gd�dt���|j}|�t|ddd�d�����j��G�fd�d���}dD�]�}|dd	d
ddd
d|d|�����}|���}|�|j|j��|�|j	|j
��|�|j|j��|�d|j
��|�d|j��|�|j|j��|�|���|j��|�|���t)ddd�����z
dz|j��|�d|j�����|dd	d
ddd
d��}|���}|�|dd�|���dd���|�d|j��Gd�d���}|dd	d
ddd
d|�����}|���}|�|dd�|���dd���|�d|j��Gd�d���}|dd	d
ddd
d|�����}|�t0|j��|ddddddd��}t2jt2jt2jfD]}|�|���}	|�|	���dd�|	�t2j�����dd�����|t>ddddd|d�����}
|�t@|
j��|tBddd d!dd"|d#�����}|�t@|j��|j�t3tD�����}
|�t@|
j��|j�t3tD�����}|�t@|j��dS)$Nc��eZdZdd�Zd�ZdS)�-TestDateTimeTZ.test_utctimetuple.<locals>.DSTrc�^�t|t��rt|���}||_dSrhr�r�s  r#rsz6TestDateTimeTZ.test_utctimetuple.<locals>.DST.__init__�r�r%c��|jSr4r�rxs  r#rz1TestDateTimeTZ.test_utctimetuple.<locals>.DST.dst�r�r%N)rr�rr%r#r�r��s7������
)�
)�
)�
)�
%�
%�
%�
%�
%r%r�r&rrc�"��eZdZd�fd�	Zd�ZdS)�.TestDateTimeTZ.test_utctimetuple.<locals>.UOFSNc�^����||��t|���|_dSrh)rsr�uofs)r1r��dofsr�s   �r#rsz7TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.__init__�s-������T�4�(�(�(�%�d�3�3�3��	�	�	r%c��|jSr4)r�rxs  r#rzz8TestDateTimeTZ.test_utctimetuple.<locals>.UOFS.utcoffset�s
���y� r%r4r�)r�s�r#�UOFSr��sB�������
4�
4�
4�
4�
4�
4�
!�
!�
!�
!�
!r%r�)r�r�rNrYrUr'r<rr�i���r�rrc��eZdZd�ZdS)�.TestDateTimeTZ.test_utctimetuple.<locals>.NOFSc��dSr4rrxs  r#rzz8TestDateTimeTZ.test_utctimetuple.<locals>.NOFS.utcoffset�s���tr%Nr�rr%r#�NOFSr��s#������
�
�
�
�
r%r�c��eZdZd�ZdS)�.TestDateTimeTZ.test_utctimetuple.<locals>.BOFSc��dS)Nr�rrxs  r#rzz8TestDateTimeTZ.test_utctimetuple.<locals>.BOFS.utcoffset�s���ur%Nr�rr%r#�BOFSr��s#������
�
�
�
�
r%r�r�rdr�ri+�rr�r�r�r�r�r(r�)#rr=r�r�rz�utctimetupler0r_rr`rr�rr r!rr"r�r#rhrr$r%r�r�rr�r6r�rr�rr�rr�)
r1rZr�r�r�r�r�r�r��dtzr��huger�s
            @r#�test_utctimetuplez TestDateTimeTZ.test_utctimetuple�s8���	%�	%�	%�	%�	%�&�	%�	%�	%��m�����-��#�a��A�c�c�!�f�f�5�5�5�?�	A�	A�	A�	!�	!�	!�	!�	!�	!�	!�3�	!�	!�	!�)�	,�	,�H���A�q�!�R��R��D�D��h�4G�4G�H�H�H�A���� � �A����Q�V�Q�Y�/�/�/����Q�W�a�h�/�/�/����Q�U�A�I�.�.�.����R���+�+�+����R���*�*�*����Q�X�q�x�0�0�0����Q�Y�Y�[�[�!�)�4�4�4����Q�[�[�]�]�T�!�Q��]�]�-D�-D�-F�-F�F��J��Y�
(�
(�
(�
���Q��
�+�+�+�+�
�C��1�a��R��R�(�(��
�N�N��������3�B�3�������s��s�!3�4�4�4�����A�J�'�'�'�	�	�	�	�	�3�	�	�	�
�C��1�a��R��R�����7�7�7��
�N�N��������3�B�3�������s��s�!3�4�4�4�����A�J�'�'�'�	�	�	�	�	�3�	�	�	�
�C��1�a��R��R�����7�7�7�����)�Q�^�4�4�4�
�C��b�"�b�"�b�&�1�1���<���x�|�<�	L�	L�B��)�)�2�)�&�&�C����S�-�-�/�/����4� �^�^�H�L�9�9�C�C�E�E�c�r�c�J�
L�
L�
L�
L�
�s�7�A�q�!�Q��4�4��:�:�>�>�>�����-��):�;�;�;��s�7�B��B��B��t�t�E�{�{�K�K�K�����-��):�;�;�;��w���h�v�&6�&6��7�7�����-��):�;�;�;��w���h��w�&7�&7��8�8�����-��):�;�;�;�;�;r%c���tdd��}tdd��}tdd��}tdd��}|j}d}d||||fD�]%}d	D�]}|d
ddd
dd||���}	d|rdpdz}
|dur|	���pd}|
|z}|	���}
|�|
|dz|z��|�|
|	�d����|�|	�d��|dz|z��|�|	�d��|dz|z��|�t|	��|dz|z���� ��'dS)Nrr��z+03:40i���z-03:51rz
0001-02-03)riyr&rYrUr[rVr�rz04:05:59z.987001r��kuሴr�)rer=r}r�r0r�)r1r�plus�minus�unknownrZ�datestr�ofsrqr��timestr�ofsstr�tailstr�isos              r#�test_tzinfo_isoformatz$TestDateTimeTZ.test_tzinfo_isoformat�s����1�h�'�'���3��)�)���D�(�+�+���d�B�'�'���m������t�U�G�3�	B�	B�C��

B�

B���C��1�a��A�r�2�c�:�:�:��$��(8�y�(>�B�?���D��7�Q�X�X�Z�Z�=�2��!�F�*���k�k�m�m��� � ��g��m�g�&=�>�>�>�� � ��a�k�k�#�&6�&6�7�7�7�� � ����S�!1�!1�7�S�=�7�3J�K�K�K�� � ����X�!6�!6��(�8J�W�8T�U�U�U�� � ��Q����3���)@�A�A�A�A�

B�	B�	Br%c	�v�|j}tdd��}ttd���d��}dddd	d
dd|g}||�}|�||�����d
}dddddddd|ffD]C\}}|dd�}	||	|<||	�}
|jdi||i��}|�|
|��|dz
}�D|�|���d��|�d���}|�|j��|�|�����|�|���}
|�||
��|�|j|
j��|ddd��}|�	t|jd���dS)Nr�rrrir	r&rYrUr[rVr]rXrrTrUrVr�r�r�r�rrrSr~r�rWrr
rs              r#r_zTestDateTimeTZ.test_replace�s����m���3��'�'���I�d�3�3�3�V�<�<���1�a��A�q�!�T�*���s�D�z������t�|�|�~�~�.�.�.�
��(�)�'�(�*�*�/�&��.�0�
	�
	�L�D�&��1�1�1�g�G��G�A�J��s�G�}�H��$�,�0�0�$���0�0�C����X�s�+�+�+�
��F�A�A�	
���������/�/�/����D��)�)�����%�,�'�'�'����%�,�,�.�.�)�)�)��
�
�T�
�*�*������u�%�%�%��
�
�d�k�5�<�0�0�0��s�4��B�������*�d�l���>�>�>�>�>r%c��tdd��}tdd��}ttd���d��}|j�|���}|�|j|��|�t|j|��|�|j��}|�|j|��|�	|�
��|�
����|�	|���|�����|�|��}|�|j|��|�	|���td�����||���z
}||�|��z
}|�
|�	��}|�	|�
��|�
����|�	|���|�����|�	|���|�����|�|j|j��|�	||��dS)
N�Noner��44rVr��m300r�rr)rerr=r�r5rr�r�r�r0rrrzrr�)r1�fnone�f44m�fm5hryr�r^r	s        r#�test_more_astimezonez#TestDateTimeTZ.test_more_astimezones2���D�&�)�)���2�t�$�$���I�A�.�.�.�.��7�7��
�]�
�
�$�
�
'�
'���
�
�b�i��&�&�&����*�b�m�U�;�;�;��M�M�"�)�$�$���
�
�a�h��%�%�%���������2�7�7�9�9�-�-�-���������2�7�7�9�9�-�-�-��m�m�D�!�!���
�
�c�j�$�'�'�'���������)�"�*=�*=�*=�>�>�>�������&���D�N�N�2�&�&�&���#�#�4�#�0�0����������X�]�]�_�_�5�5�5���������X�]�]�_�_�5�5�5���������x���'8�'8�9�9�9��
�
�c�j�(�/�2�2�2�����h�'�'�'�'�'r%rc���|j�tj��}|�|�d��|��|�|���|��dSr4)r=r�rr6r0r�rxs  r#�test_astimezone_default_utcz*TestDateTimeTZ.test_astimezone_default_utc)s_��
�]�
�
�x�|�
,�
,��������t�,�,�b�1�1�1���������"�-�-�-�-�-r%rac���|�dddddtj���}|���}|�||��|�|�d��d��|�dddd	dtj���}|���}|�||��|�|�d��d
��dS)Nrcr�r[r]rrrz	-0500 ESTrVz	-0400 EDT)r=rr6r�r0r�)r1ryrs   r#�test_astimezone_default_easternz.TestDateTimeTZ.test_astimezone_default_eastern1s���
�]�]�4��Q��2�h�l�]�
C�
C���
�
��������U�#�#�#��������0�0�+�>�>�>�
�]�]�4��Q��2�h�l�]�
C�
C���
�
��������U�#�#�#��������0�0�+�>�>�>�>�>r%c���tddddtj���}|���}|���}|�|j|j��dS)Nr-r�r&rVr)rrr6r�r0r)r1r�r�r�s    r#�!test_astimezone_default_near_foldz0TestDateTimeTZ.test_astimezone_default_near_fold<sX��
�T�2�q�!�H�L�9�9�9��
�L�L�N�N��
�L�L�N�N�������1�8�,�,�,�,�,r%c��|j}Gd�dt��}|ddddddd	|���
��}|�d���}|�d���}|�d���}|||fD]B}|||fD]:}||z
}	t|j|jz
�
��}
|�|	|
���;�C|ddddddd	��}|�d|�����}|�d|�����}|�d|�����}|||fD]�}|||fD]�}||z
}	||us||ur||us||urtd��}
nG||cxur|urnntd��}
n+||urtd�
��}
n||usJ�td�
��}
|�|	|
������dS)Nc��eZdZd�ZdS)�BTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffsetc�b�|jdkrt|j���Std���Sr�r�r�s  r#rzzLTestDateTimeTZ.test_aware_subtract.<locals>.OperandDependentOffset.utcoffsetJr�r%Nr�rr%r#r�r�Ir�r%r�r�r�r'r�r�rrdrrUr|rir�ri���rO)r=rrrrr0)r1rZr�r[r�rrpr�rlr^r	s           r#�test_aware_subtractz"TestDateTimeTZ.test_aware_subtractDsc���m��	1�	1�	1�	1�	1�V�	1�	1�	1��s�1�a��R��R��4J�4J�4L�4L�M�M�M��
�\�\��\�
#�
#��
�\�\��\�
#�
#��
�\�\��\�
$�
$���R���	0�	0�A���R�Z�
0�
0���!�e��$�Q�X���-@�A�A�A��� � ��h�/�/�/�/�
0��s�1�a��R��R��,�,��
�\�\��+A�+A�+C�+C�\�
D�
D��
�\�\��+A�+A�+C�+C�\�
D�
D��
�\�\��,B�,B�,D�,D�\�
E�
E���R���	0�	0�A���R�Z�
0�
0���!�e����G�G�q�B�w�w�Q�"�W�W��R���(��|�|�H�H��!�\�\�\�\�r�\�\�\�\�\�(��|�|�H�H��"�W�W�(��;�;�;�H�H���7�7�7�7�(��;�;�;�H�� � ��h�/�/�/�/�
0�	0�	0r%c	���tddddddd��}tddddddd��}|�||��|�d���}|�||��|�tdd	�����}|�||��|�td
d	�����}|�||��Gd�dt
��}|��}|�|���}|�|���}|�|���td
�����|�|���td�����|�||��|�|�����}|�||k��dS)Nr&rYrUr[rVr]rXrrrc��eZdZd�Zd�ZdS)�1TestDateTimeTZ.test_mixed_compare.<locals>.Variesc�0�td���|_dSrr�r7s r#rsz:TestDateTimeTZ.test_mixed_compare.<locals>.Varies.__init__}rr%c�L�|xjtd���z
c_|jSrrr�s  r#rzz;TestDateTimeTZ.test_mixed_compare.<locals>.Varies.utcoffsetrr%Nr�rr%r#rr�|rr%rr�rir/)	rr0rrer�rrzrr�rs     r#rKz!TestDateTimeTZ.test_mixed_compareps���
�a��A�q�!�Q��
*�
*��
�a��A�q�!�Q��
*�
*������R� � � �
�Z�Z�t�Z�
$�
$������R� � � �
�Z�Z�{�4��4�4�Z�
5�
5������R� � � �
�Z�Z�{�1�b�1�1�Z�
2�
2�����B��#�#�#�	#�	#�	#�	#�	#�V�	#�	#�	#�
�F�H�H��
�Z�Z�q�Z�
!�
!��
�Z�Z�q�Z�
!�
!�����������2�)>�)>�)>�?�?�?����������2�)>�)>�)>�?�?�?�����R� � � ��Z�Z�v�v�x�x�Z�
(�
(������R�� � � � � r%c���G�fd�d�j��}ddddddd	td
dd��f}�j|�}||id
di��}��|j|����|jd����|jd����|���|�������|�d��|j|j	zdz
��dS)Nc�$��eZdZdZ�fd�Zd�ZdS)�2TestDateTimeTZ.test_subclass_datetimetz.<locals>.Crfc���|���}|�d��}�jj|g|�Ri|��}||_|Srjrkrms      �r#r�z:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.__new__�rqr%c�&�||jz|jzSr4)rfr_rss  r#ruz:TestDateTimeTZ.test_subclass_datetimetz.<locals>.C.newmeth�s���t�y�(�4�9�4�4r%Nrvr7s�r#rxr��sB��������I�
�
�
�
�
�
5�
5�
5�
5�
5r%rxr^r�r�r[rVr]rKr�r�r&r�rXrfrZ)
r=rer0rJrwr�rzrurfr_rzs`    r#�test_subclass_datetimetzz'TestDateTimeTZ.test_subclass_datetimetz�s%���	5�	5�	5�	5�	5�	5�	5��
�	5�	5�	5��R��Q��1�c�;�t�U�A�+F�+F�F���d�m�T�"���a��&�'�1��&�&��������*�*�*�������+�+�+������A�&�&�&���������#�-�-�/�/�:�:�:�������R���#�(�S�X�*=��*A�B�B�B�B�Br%N)rKrbrcrr=rPr[r�r6r_r�r�r�ryr�r�r�r�r�r�r�r_r�r
r@r�r�r�r�rKr�rr%r#rNrN�s��������H�	*�	*�	*�C8�C8�C8�JC�C�C�.#=�#=�#=�J/�/�/�>�>�>�<5�5�5�I�I�I�?G�?G�?G�B#N�#N�#N�J!=�!=�!=�F9�9�9�
=�
=�
=�"O�"O�"O�HN<�N<�N<�`B�B�B�*%?�%?�%?�N(�(�(�:�W�����.�.� ��.��W��3�4�4�?�?�5�4�?��W��3�4�4�-�-�5�4�-�*0�*0�*0�X!�!�!�<C�C�C�C�Cr%rNc�\�d|���z
}|r|t|��z
}|S)Nr])r�r)ry�
days_to_gos  r#�first_sunday_on_or_afterr��s3���R�Z�Z�\�\�!�J��$�
�i�
�#�#�#��
�Ir%rir�rVr[rYr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�
USTimeZonec�Z�t|���|_||_||_||_dS�Nr��r�	stdoffset�reprname�stdname�dstname�r1r�r�r�r�s     r#rszUSTimeZone.__init__��-��"��/�/�/��� ��
��������r%c��|jSr4�r�r7s r#rvzUSTimeZone.__repr__�r{r%c�H�|�|��r|jS|jSr4�rr�r�rxs  r#r}zUSTimeZone.tzname��$���8�8�B�<�<�	 ��<���<�r%c�<�|j|�|��zSr4�r�rrxs  r#rzzUSTimeZone.utcoffset�����~�������,�,r%c��|�|j�tS|j|usJ�tt�|j�����}|���dkr|jdkr|jdksJ�tt�|j�����}|���dkr|jdkr|jdksJ�||�d���cxkr|kr
nntStS�NrWr]r[rXr'r�r)rr�r��DSTSTARTrr_r�r`r��DSTENDr�r1ryrt�ends    r#rzUSTimeZone.dst�s���
�:���*��K��y�D� � � � �)��)9�)9�r�w�)9�)G�)G�H�H���}�}���!�#�#���q�(8�(8�U�Y�!�^�^�^�^�'�v�~�~�2�7�~�'C�'C�D�D���{�{�}�}��!�!�c�i�2�o�o�#�'�R�-�-�-�-��B�J�J�d�J�+�+�1�1�1�1�c�1�1�1�1�1��K��Kr%N�rKrbrcrsrvr}rzrrr%r#r�r��s_������������ � � �-�-�-�����r%r�rrr�r�r^�Central�CST�CDTrZ�Mountain�MST�MDTi�����Pacific�PST�PDTri0����UTCfakec�t�eZdZedddd��Zedddd��ZeZd�Zd	�Zd
�Z	d�Z
d�Zd
�Zd�Z
dS)�TestTimezoneConversionsr^r[rXrYr'r.r&c�z�|�|���t��|�|�|��|��|�|��}|�|��}|���|���kr�|jdkr�|�|tz|��|�|���t��|�|�|��|�|����n|�||��|tz}|�|��}	|���|���kr�|jdkru|�|	|�d�����|tz
}|�|��}	|�|	|�d�����dS|�|	|z
t��dS)NrYrr&r{)r0rrr�rrfr�r)
r1ryr�r6�dston�dstoff�asutc�there_and_back�nexthour_utc�nexthour_tzs
          r#�checkinsidez#TestTimezoneConversions.checkinside�s�����������4�(�(�(�	
������r�*�*�B�/�/�/��
�
�c�"�"���)�)�"�-�-���7�7�9�9��
�
���$�$���A���
���^�d�2�B�7�7�7�
���^�/�/�1�1�4�8�8�8����^�6�6�s�;�;��]�]�3�/�/�
1�
1�
1�
1�
���R��0�0�0��t�|��"�-�-�b�1�1��
�7�7�9�9����
�
�%�%�"�'�Q�,�,�
���[�"�*�*�!�*�*<�*<�=�=�=��D� �L�&�1�1�"�5�5�K����[�"�*�*�!�*�*<�*<�=�=�=�=�=����[�2�-�t�4�4�4�4�4r%c�2�|�|���t��|�|�|��|��|�|��}|�|��}|�||��dSr4)r0rr�r�)r1ryr�r6r
rs      r#�checkoutsidez$TestTimezoneConversions.checkoutside+s�����������4�(�(�(�	
������r�*�*�B�/�/�/��
�
�c�"�"���)�)�"�-�-������^�,�,�,�,�,r%c	���|j�|���}|j�|���}td���tt
td���td���fD]|}|�|||||��||z||z
fD]}|�|||||���|�|||��||z
||zfD]}|�|||����}dS)NrrrWr&rir�)rrrr�DAYrrr)r1r�r6rrr,�during�outsides        r#�convert_between_tz_and_utcz2TestTimezoneConversions.convert_between_tz_and_utc6s.���
�"�"�"�"�-�-����$�$�B�$�/�/���b�)�)�)�����*�*�*��Q�/�/�/�	1�	4�	4�E�
���U�B��U�F�;�;�;��%�-��%��7�
A�
A��� � ���S�%��@�@�@�@����f�b�#�.�.�.� �5�=�&�5�.�8�
4�
4���!�!�'�2�s�3�3�3�3�
4�	4�	4r%c��|�tt��|�tt��|�tt��|�tt��|�tt��|�tt��dSr4)rr�utc_realr�utc_faker7s r#�	test_easyz!TestTimezoneConversions.test_easyLs����'�'���:�:�:��'�'���:�:�:��'�'���:�:�:��'�'���:�:�:�	
�'�'���9�9�9��'�'���9�9�9�9�9r%c	�z�|jtd���z
}tddd��}|�|���}|j�d���}|�t
���d���}|�||��|j�d	t�
��}|j�d���}|�t
���d���}|�||��ttfD�]}t
tfD]�}|j
td���z
}||�d��z}||�d��z}	|	�|���}
d
D]�}|j
�|���}dD]m}
|�|
���}|
�|
���}	|	�|��}|�|�d���|���n|
tz
}
������dS)Nr[r�i��z-0900rrrUr{r]�rfrr&rY)rr&r&rY�rrr�r|)
rrrerr�rr0rrrrrzr)r1�fourback�ninewestr	r^�sixutcr6r��first_std_hourr
�	asutcbase�tzhour�expectedbaser�astzs               r#�test_trickyz#TestTimezoneConversions.test_trickydsD���:�	�� 2� 2� 2�2���u�g�q�1�1���#�#�8�#�4�4���:�%�%�1�%�-�-���!�!�'�*�*�2�2�$�2�?�?������3�'�'�'���#�#��8�#�<�<���:�%�%�1�%�-�-������(�(�0�0��0�=�=������3�'�'�'��X�%�	&�	&�C��w�&�
&�
&��!%��y�q�/A�/A�/A�!A���"�,�,�t�"4�"4�4��&����t�)<�)<�<��"�M�M��M�5�5�	�*�&�&�F�#'�;�#6�#6�F�#6�#C�#C�L�"+�N�N��#/�#7�#7�v�#7�#F�#F�� )� 1� 1�� 1� @� @��$�/�/��3�3���(�(����T��)B�)B�H�M�M�M�M���%�I�I�&�
&�	&�	&r%c��Gd�dt��}|j����t���}|�|����Gd�d|��}|�t|j|����Gd�d|��}|�dd	d	���t���}|�t|j|����dS)
Nc��eZdZd�Zd�ZdS)�2TestTimezoneConversions.test_bogus_dst.<locals>.okc��tSr4�rrxs  r#rzz<TestTimezoneConversions.test_bogus_dst.<locals>.ok.utcoffset�s��D�[r%c��tSr4r-rxs  r#rz6TestTimezoneConversions.test_bogus_dst.<locals>.ok.dst�s��d�{r%Nr�rr%r#�okr+�s"������0�0�0�*�*�*�*�*r%r/rc��eZdZd�ZdS)�5TestTimezoneConversions.test_bogus_dst.<locals>.notokc��dSr4rrxs  r#rz9TestTimezoneConversions.test_bogus_dst.<locals>.notok.dst�r�r%N�rKrbrcrrr%r#�notokr1�s������*�*�*�*�*r%r4c��eZdZd�ZdS)�<TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notokc�0�|jdkrdSdtzS)NrSr')r_rrxs  r#rz@TestTimezoneConversions.test_bogus_dst.<locals>.tricky_notok.dst�s���7�d�?�?��4��d�7�Nr%Nr3rr%r#�tricky_notokr6�s#������
#�
#�
#�
#�
#r%r8r�r&)rr=r�rrr�r�r�)r1r/r�r4r8rys      r#�test_bogus_dstz&TestTimezoneConversions.test_bogus_dst�s,��	+�	+�	+�	+�	+��	+�	+�	+��m���!�!�)�)��)�:�:�����r�r�t�t����	+�	+�	+�	+�	+�B�	+�	+�	+����*�c�n�e�e�g�g�>�>�>�	#�	#�	#�	#�	#�2�	#�	#�	#��]�]�4��A�
&�
&�
.�
.�h�
.�
?�
?�����*�b�m�\�\�^�^�D�D�D�D�Dr%c�
�|�ttj��t	j���t���}|�ttj|��|�t���}t�|��}|�	|j
t��|�ttj||��|�ttjtj����Gd�dt��}|dddd��}|j�dt�	��}|�|���}d
D]�}|�|���}|dkr|td
���z}t�|��}	|�	||	��||jz}|�|��}	|�	||	��|�t����|��}	|�	||	��|t$z
}|t$z
}��|j�dt�	��}|�|���}dD]�}|�|���}t�|��}	|�	||	��||jz}|�|��}	|�	||	��|�t����|��}	|�	||	��|t$z
}|t$z
}��dS)Nrc��eZdZd�ZdS)�<TestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZonec��||jzSr4)r�rxs  r#r�zDTestTimezoneConversions.test_fromutc.<locals>.FauxUSTimeZone.fromutc�s���D�N�*�*r%N�rKrbrcr�rr%r#�FauxUSTimeZoner<�s#������
+�
+�
+�
+�
+r%r?r�FEastern�FEST�FEDTr[r)r�rr&rUr[rVr{r�r&rV)rr&r&rYrUr[)r�r�rr�rr�rrr�r0rrrbr�rrr�r�rr)
r1r��enowr?r@rt�fstart�wallr	r^s
          r#rz$TestTimezoneConversions.test_fromutc�s)�����)�W�_�5�5�5��o���'�'�x�'�8�8�����*�g�o�s�;�;�;��k�k��k�)�)�����s�#�#�������g�.�.�.����)�W�_�c�3�?�?�?����)�W�_�d�j�l�l�C�C�C�	+�	+�	+�	+�	+�Z�	+�	+�	+�#�N�2�z�F�F�C�C���
�"�"��'�"�:�:�����h��/�/��%�	�	�D��}�}�$�}�/�/�H��r�z�z��I�1�-�-�-�-���/�/�%�(�(�C����X�s�+�+�+��� 2�2�H��"�"�6�*�*�C����X�s�+�+�+��.�.��.�1�1�<�<�X�F�F�C����X�s�+�+�+��T�M�E��d�N�F�F���#�#��7�#�;�;�����h��/�/��$�	�	�D��}�}�$�}�/�/�H��/�/�%�(�(�C����X�s�+�+�+��� 2�2�H��"�"�6�*�*�C����X�s�+�+�+��.�.��.�1�1�<�<�X�F�F�C����X�s�+�+�+��T�M�E��d�N�F�F�	�	r%N)rKrbrcrrrr=rrrrr(r9rrr%r#r	r	�s��������H�T�1�a��#�#�E�
�X�d�B��A�
&�
&�F��H�15�15�15�h	-�	-�	-�4�4�4�,
:�
:�
:�00&�0&�0&�fE�E�E�6:�:�:�:�:r%r	c� �eZdZd�Zd�Zd�ZdS)�Oddballsc�P���tj���tj�t	�����|���k��|���k��|���k��|���k��|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�t��fd���|�	��
���d	���jd
zdzd
z}��|���}|�	��
|��d
��t�j�j�j��}|�	�|��|�	|���t!�j�j�jddd��}|�	�|��|�	|���dS)Nc�����kSr4r��as_date�as_datetimes��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>�����W�{�-B�r%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>�����[�7�-B�r%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>�����W��-C�r%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>����[�G�-C�r%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>rMr%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>rOr%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>rQr%c�����kSr4rrJs��r#rEz+Oddballs.test_bug_1028306.<locals>.<lambda>rSr%Tr&r<)r�Fr)rrbrr�rr�r�r�r�r0�__eq__r�rrWr_r`r�)r1�
different_day�as_different�date_sc�datetime_scrKrLs     @@r#�test_bug_1028306zOddballs.test_bug_1028306�s������*�,�,���&�w����7�7������;�.�/�/�/�����w�.�/�/�/�����K�/�0�0�0������/�0�0�0����)�%B�%B�%B�%B�%B�C�C�C����)�%B�%B�%B�%B�%B�C�C�C����)�%C�%C�%C�%C�%C�D�D�D����)�%C�%C�%C�%C�%C�D�D�D����)�%B�%B�%B�%B�%B�C�C�C����)�%B�%B�%B�%B�%B�C�C�C����)�%C�%C�%C�%C�%C�D�D�D����)�%C�%C�%C�%C�%C�D�D�D�	
�������4�4�d�;�;�;� ��q��B�.��2�
�"�*�*�
�*�>�>���������5�5�u�=�=�=��w�|�W�]�G�K�H�H������'�*�*�*�����'�*�*�*�'�{�'7��9J�'.�{�A�q�!�=�=������k�2�2�2�����k�2�2�2�2�2r%c	�L�tj��t��tj��t��t
��tt����fD];}|�t��5d|_
ddd��n#1swxYwY�<dSr�)rrbrrr�rrrr��AttributeErrorr()r1r�s  r#�test_extra_attributeszOddballs.test_extra_attributess����*�,�,��&�&��/�#�#��+�+��(�(��9�;�;�'�'�)�	�	�A��"�"�>�2�2�
�
����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��
	�	s�B�B	�B	c��Gd�d��}Gd�dt��}d|d��tjd��tjd��|d��|d��d	fD�]}|�tt
|dddddd�	�	|�tt
d|ddddd�	�	|�tt
dd|dddd�	�	|�tt
ddd|ddd�	�	|�tt
dddd|dd�	�	|�tt
ddddd|d�	�	|�tt
dddddd|�	�	��dS)
Nc��eZdZd�Zd�ZdS)�-Oddballs.test_check_arg_types.<locals>.Numberc��||_dSr4��value)r1rfs  r#rsz6Oddballs.test_check_arg_types.<locals>.Number.__init__%s
��"��
�
�
r%c��|jSr4rer7s r#�__int__z5Oddballs.test_check_arg_types.<locals>.Number.__int__'s
���z�!r%N)rKrbrcrsrhrr%r#�Numberrc$s2������
#�
#�
#�
"�
"�
"�
"�
"r%ric��eZdZdS)�,Oddballs.test_check_arg_types.<locals>.FloatNr�rr%r#�Floatrk*r�r%rlg$@g������%@r'z10.9�10)r-�decimal�Decimalr�r�r)r1rirl�xxs    r#�test_check_arg_typeszOddballs.test_check_arg_types#s���	"�	"�	"�	"�	"�	"�	"�	"�	�	�	�	�	�E�	�	�	����t����?�2�&�&����(?�(?��6�"�:�:�v�v�d�|�|���
	O�
	O�B�
���i��2�r�2�r�2�r�2�N�N�N����i��2�r�2�r�2�r�2�N�N�N����i��2�r�2�r�2�r�2�N�N�N����i��2�r�2�r�2�r�2�N�N�N����i��2�r�2�r�2�r�2�N�N�N����i��2�r�2�r�2�r�2�N�N�N����i��2�r�2�r�2�r�2�N�N�N�N�
	O�
	Or%N)rKrbrcr]r`rqrr%r#rGrG�sG������#3�#3�#3�J���O�O�O�O�Or%rGc��eZdZd�ZdS)�tzinfo2c�x�t|t��std���|j|urt	d���|�d������}|�d������}|�|�|����t�||kr!||z}|���}||kr|S||fD]U}||z}|���|kr|cS|�d���}|���|kr|cS�Vt	d���)�*datetime in UTC -> datetime in local time.�&fromutc() requires a datetime argument�dt.tzinfo is not selfrr9r&NzNo suitable local time found)rkrr�rr�rrzr)r1ry�off0�off1�ldt�offs      r#r�ztzinfo2.fromutcAsJ���"�h�'�'�	F��D�E�E�E�
�9�D� � ��4�5�5�5��z�z�q�z�!�!�+�+�-�-���z�z�q�z�!�!�+�+�-�-���<�4�<�2�6�6�8�8�+;����4�<�<��t�)�C��=�=�?�?�D��t�|�|��
��$�<�	�	�C��s�(�C��}�}���#�%�%��
�
�
��+�+�1�+�%�%�C��}�}���#�%�%��
�
�
�&��7�8�8�8r%Nr>rr%r#rsrs?s#������9�9�9�9�9r%rsc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�USTimeZone2c�Z�t|���|_||_||_||_dSr�r�r�s     r#rszUSTimeZone2.__init__cr�r%c��|jSr4r�r7s r#rvzUSTimeZone2.__repr__ir{r%c�H�|�|��r|jS|jSr4r�rxs  r#r}zUSTimeZone2.tznamelr�r%c�<�|j|�|��zSr4r�rxs  r#rzzUSTimeZone2.utcoffsetrr�r%c���|�|j�tS|j|usJ�tt�|j�����}|���dkr|jdkr|jdksJ�tt�|j�����}|���dkr|jdkr|jdksJ�|�d���}|tz|cxkr|kr
nntS||cxkr|tzkrnn|jrtntS||cxkr|tzkrnn|jrtntStSr�)rr�r�r�rr_r�r`r�r�rr:r�s    r#rzUSTimeZone2.dstusv��
�:���*��K��y�D� � � � �)��)9�)9�r�w�)9�)G�)G�H�H���}�}���!�#�#���q�(8�(8�U�Y�!�^�^�^�^�'�v�~�~�2�7�~�'C�'C�D�D���{�{�}�}��!�!�c�i�2�o�o�#�'�R�-�-�-�-��Z�Z�t�Z�
$�
$���4�<�2�#�#�#�#��#�#�#�#�#��K�
�B�
#�
#�
#�
#��t��
#�
#�
#�
#�
#��7�,�4�4��,�
�b�
'�
'�
'�
'�5�4�<�
'�
'�
'�
'�
'��7�,�4�4��,��Kr%Nr�rr%r#r}r}as_������������ � � �-�-�-�����r%r}�Eastern2�Central2�	Mountain2�Pacific2c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�Europe_Vilnius_1941c�R�tdddd|���tdddd|���gS)N�r]r�r�rr��rr7s r#�	_utc_foldzEurope_Vilnius_1941._utc_fold�s8����q�"�b��6�6�6���q�"�b��6�6�6�8�	8r%c�R�tdddd|���tdddd|���gS)Nr�r]r�rr/rr�r7s r#�	_loc_foldzEurope_Vilnius_1941._loc_fold�s8����q�"�b��6�6�6���q�"�a��5�5�5�7�	7r%c��|���\}}||kr
dtzS||kr|jrdndtzSdtzS)NrUrY�r�rr:�r1ry�
fold_start�	fold_stops    r#rzzEurope_Vilnius_1941.utcoffset��P�� $��� 0� 0��
�I�
�
�?�?��t�8�O�
�	�>�>���'�A�A�a�4�/�/��4�x�r%c��|���\}}||kr
dtzS||kr|jrdndtzSdtzS)Nrr&r�r�s    r#rzEurope_Vilnius_1941.dst�r�r%c�j�|���\}}||krdS||kr
d|jSdS)N�MSK)r��CESTr�)r�r:r�s    r#r}zEurope_Vilnius_1941.tzname�s?�� $��� 0� 0��
�I�
�
�?�?��5�
�	�>�>�"�2�7�+�+��vr%c��|jdksJ�|j|usJ�|jdkrt�|���\}}||kr
|dt
zzS||kr!|dt
zz�d���S|dt
zzS)Nrr�rUrYr&r9)r:rr_r�r�rrr�s    r#r�zEurope_Vilnius_1941.fromutc�s����w�!�|�|�|�|��y�D� � � � �
�7�d�?�?�%�%� $��� 0� 0��
�I�
�
�?�?���D��=� �
�	�>�>���T��M�*�*��*�2�2�2��A��H�}�r%N)	rKrbrcr�r�rzrr}r�rr%r#r�r��sn������8�8�8�7�7�7��������������r%r�c�n�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
jd��d	���Ze
jd
��d���Z
d�Ze
jd��d
���Ze
jd
��d���Ze
jd��d���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestLocalTimeDisambiguationc	���t��}tddddddtj���}|�|��}|�|�d��d��|�|jd	��|�|�	����tdddd
tj���}|�|��}|�|�d��d��|�|jd��|�
|�	����tdddd
tj���}|�|��}|�|�d��d��|�|jd	��|�
|�	����dS)Nr�r]r�r<r�rz%c %Z%zz!Mon Jun 23 23:59:59 1941 MSK+0300rr�z"Mon Jun 23 23:00:00 1941 CEST+0200r&r�z"Tue Jun 24 00:00:00 1941 CEST+0200)r�rrr6r�r0r�r:r�rr�)r1�Vilnius�gdtrzs    r#�test_vilnius_1941_fromutcz5TestLocalTimeDisambiguation.test_vilnius_1941_fromutc�s���%�'�'���t�Q��B��B�x�|�D�D�D���n�n�W�%�%��������i�0�0�<�	>�	>�	>������1�%�%�%���������#�#�#��t�Q��B�x�|�<�<�<���n�n�W�%�%��������i�0�0�=�	?�	?�	?������1�%�%�%�������	�	�"�"�"��t�Q��B�x�|�<�<�<���n�n�W�%�%��������i�0�0�=�	?�	?�	?������1�%�%�%�������	�	�"�"�"�"�"r%c
��t��}tdddddd|���}|�tj��}|�|�d��d��tdddddd|���}|�tj��}|�|�d��d	��tdddddd|d
���}|�tj��}|�|�d��d��tddd
d|���}|�tj��}|�|�d��d��dS)Nr�r]r�r�r�rz%c %ZzMon Jun 23 19:59:59 1941 UTCzMon Jun 23 20:59:59 1941 UTCr&)rr:zMon Jun 23 21:59:59 1941 UTCr/rzMon Jun 23 22:00:00 1941 UTC)r�rr�rr6r0r�)r1r�rzr�s    r#�test_vilnius_1941_toutcz3TestLocalTimeDisambiguation.test_vilnius_1941_toutc�s{��%�'�'���t�Q��B��B�w�?�?�?���n�n�X�\�*�*��������g�.�.�7�	9�	9�	9��t�Q��B��B�w�?�?�?���n�n�X�\�*�*��������g�.�.�7�	9�	9�	9��t�Q��B��B�w�Q�G�G�G���n�n�X�\�*�*��������g�.�.�7�	9�	9�	9��t�Q��A�g�6�6�6���n�n�X�\�*�*��������g�.�.�7�	9�	9�	9�	9�	9r%c	�H�tdd���}tdddd���}|�|jd��|�|jd��|�t
��5tdddddd��ddd��dS#1swxYwYdS�Nrr&r9)rrr0r:r�r��r1r�rys   r#�test_constructorsz-TestLocalTimeDisambiguation.test_constructorss������O�O�O��
�a��A�A�
&�
&�
&��������#�#�#������!�$�$�$�
�
�
�y�
)�
)�	&�	&���A�q�!�T�1�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�5B�B�Bc���tdddd���}|���}|�|jd��|���}|�|jd��dS)Nr&r9)rrr0r:r�)r1ryr�s   r#�test_memberz'TestLocalTimeDisambiguation.test_membersh��
�a��A�A�
&�
&�
&���G�G�I�I��������#�#�#��I�I�K�K��������#�#�#�#�#r%c�@�td��}tddd��}|�|�d���jd��|�|�d���jd��|�|�d���jd��|�|�d���jd��|�dt
���}|�dt
���}|�|�d���jd��|�|�d���jd��|�t��5|�d���ddd��n#1swxYwY|�t��5|�d���ddd��n#1swxYwY|�t��5|�ddddd��ddd��n#1swxYwY|�t��5|�ddddddddd�	�	ddd��dS#1swxYwYdS)Nrr&r9)r:rrrY)	rrr0rr:rr�r�r�r�s   r#r_z(TestLocalTimeDisambiguation.test_replacesK����G�G��
�a��A�
�
����������*�*�/��3�3�3���������+�+�0�!�4�4�4���������*�*�/��3�3�3���������+�+�0�!�4�4�4�
�I�I�1�W�I�-�-��
�Z�Z�Q�w�Z�
/�
/��������$��/�/�4�a�8�8�8�������4��0�0�5�q�9�9�9�
�
�
�z�
*�
*�	�	�
�I�I�1�I����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	�	��J�J�A�J����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�y�
)�
)�	(�	(�
�I�I�a��A�t�Q�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
�
�y�
)�
)�	5�	5��J�J�q�!�Q��1�a��D�!�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5sH�
F0�0F4�7F4�G8�8G<�?G<�I�I�
I�(J�J�Jc���td��}tddd��}|�||�d�����|�||�d�����dSr�)rrr0rr�s   r#rz+TestLocalTimeDisambiguation.test_comparison.sl����G�G��
�a��A�
�
������A�I�I�1�I�-�-�.�.�.�����R�Z�Z�Q�Z�/�/�0�0�0�0�0r%c�V�td��}tddd��}|�t|��t|�d�������|�t|��t|�d�������dSr�)rrr0r�rr�s   r#�	test_hashz%TestLocalTimeDisambiguation.test_hash4s�����G�G��
�a��A�
�
������a���$�q�y�y�a�y�'8�'8�"9�"9�:�:�:�����b���4��
�
��
�(:�(:�#;�#;�<�<�<�<�<r%rac���d}tj|��}tj|dz��}|�|jd��|�|jd��dS)NiX�UTrrr&)rr�r0r:)r1r��dt0r�s    r#r�z.TestLocalTimeDisambiguation.test_fromtimestamp:sa�����$�Q�'�'���$�Q��X�.�.�������1�%�%�%������1�%�%�%�%�%r%zAustralia/Lord_Howec�|�tjd��}tjd|��dkr|�d��d}t	j|��}t	j|dz��}|�||��|�|jd��|�|jd��dS)	N�����A�%Z%z�	LHST+1030�>Australia/Lord_Howe timezone is not supported on this platformi�U�rr&)r�r[r�rLrr�r0r:)r1�tmr�rdr�s     r#�test_fromtimestamp_lord_howez8TestLocalTimeDisambiguation.test_fromtimestamp_lord_howeBs���
�_�U�
#�
#���>�&�"�%�%��4�4��M�M�Z�[�[�[�

��
�
#�A�
&�
&��
�
#�A��H�
-�
-������R� � � ������!�$�$�$������!�$�$�$�$�$r%c�`�|�tjd��jd��dSrZ)r0rr�r:r7s r#�%test_fromtimestamp_low_fold_detectionzATestLocalTimeDisambiguation.test_fromtimestamp_low_fold_detectionRs.��	
����/��2�2�7��;�;�;�;�;r%c���tddddd��}|�d���}|�|���dz|�����dS)Nr�r�rYr&rr9r)rrr0r�)r1r�r�s   r#�test_timestampz*TestLocalTimeDisambiguation.test_timestampWsf���t�R��A�r�*�*���k�k�q�k�!�!����������4�/������	*�	*�	*�	*�	*r%c��tjd��}tjd|��dkr|�d��t	ddddd	��}|�d
������}|�d������}|�|dz|��dS)
Nr�r�r�r�r-r[rVr&r�rr9r�)r�r[r�rLrrr�r0)r1r�r��s0�s1s     r#�test_timestamp_lord_howez4TestLocalTimeDisambiguation.test_timestamp_lord_howe^s���
�_�U�
#�
#���>�&�"�%�%��4�4��M�M�Z�[�[�[��T�1�a��B�'�'��
�Y�Y�A�Y�
�
�
(�
(�
*�
*��
�Y�Y�A�Y�
�
�
(�
(�
*�
*������d��B�'�'�'�'�'r%c���tddddd��}|�d���}|���}|���}|�|���d��|�|���d��|�|t
z|��|�|jd	��|�|jd	��dS)
Nr�r�rYr&rr9r�r�r)rrr�r0r}rr:)r1r�r��adt0�adt1s     r#r�z+TestLocalTimeDisambiguation.test_astimezonehs����t�R��A�r�*�*���k�k�q�k�!�!���~�~�����~�~�������������.�.�.����������.�.�.�������d�+�+�+������A�&�&�&������A�&�&�&�&�&r%c�H�td���}tdddd���}tD]v\}}}||fD]k}|�||��}|�|��}|�||��|�|dkrdn|j|j���l�wdS)Nr&r9r[r)rrr�r�r�r0r:)	r1r�ryr�r�r"r�r�rls	         r#�test_pickle_foldz,TestLocalTimeDisambiguation.test_pickle_foldws����a�L�L�L��
�a��A�A�
&�
&�
&��)7�	G�	G�%�G�Y����W�
G�
G���M�M�!�U�+�+���O�O�A�&�&��� � ��A�&�&�&�� � �u�q�y�y�!�!�a�f�q�v�F�F�F�F�	
G�	G�	Gr%c���td���}tdddd���}|�t|��d��|�t|��d��dS)Nr&r9zdatetime.time(0, 0, fold=1)z(datetime.datetime(1, 1, 1, 0, 0, fold=1))rrr0r�r�s   r#r�z%TestLocalTimeDisambiguation.test_repr�st���a�L�L�L��
�a��A�A�
&�
&�
&������a���"?�@�@�@�����b���C�	E�	E�	E�	E�	Er%c	�p�tddddt���tjz
}tddddt���}|�|���t��|�|���t��|�|�d������t��|�|�d������t��dD]�}tdddd|t���}|�|���t��|�|�d������t����dD]�}tdd	d
d|t���}|�|���t��|�|�d������t����dS)Nr^r'r.r&rrYr9rr[rX)	rr�rr�r0rrr�r)r1�	dt_summer�	dt_winterrrys     r#r	z$TestLocalTimeDisambiguation.test_dst�s����T�2�r�1�X�>�>�>��AU�U�	��T�2�r�1�X�>�>�>�	���������$�/�/�/���������$�/�/�/�����*�*��*�2�2�6�6�8�8�$�?�?�?�����*�*��*�2�2�6�6�8�8�$�?�?�?�"�	=�	=�F��$��B��6�(�C�C�C�B����R�V�V�X�X�t�,�,�,����R�Z�Z�Q�Z�/�/�3�3�5�5�t�<�<�<�<�"�	=�	=�F��$��1�a���A�A�A�B����R�V�V�X�X�t�,�,�,����R�Z�Z�Q�Z�/�/�3�3�5�5�t�<�<�<�<�	=�	=r%c�T�tddddt���tjz
}tddddt���}|�|���dtz��|�|���dtz��|�|�d�	�����dtz��|�|�d�	�����dtz��dS)
Nr^r'r.r&rrYr\rr9)rr�rr�r0rzrr)r1r�r�s   r#rz*TestLocalTimeDisambiguation.test_utcoffset�s����T�2�r�1�X�>�>�>��AU�U�	��T�2�r�1�X�>�>�>�	�����,�,�.�.��T�	�:�:�:�����,�,�.�.��T�	�:�:�:�����*�*��*�2�2�<�<�>�>��T�	�J�J�J�����*�*��*�2�2�<�<�>�>��T�	�J�J�J�J�Jr%c�(�tddddt���tjz
}tddddt���}t�|��}t�|��}|�||dtzz
��|�||dtzz
��|�|jd	��|�|jd	��tddddd
t���}t�|��}|tz
}t�|��}|�||��|�|jd	��|�|jd��tddddd
t���}t�|��}|�|j|j	fd��tddddd
t���}t�|��}|�|j|j	fd
��tddddd	t���}t�|��}|�|j|j	fd��dS)Nr^r'r.r]rrXr[rVrrr&)r�r�)r.r&rY)r]r�)
rr�rr�r�r0rr:r�rf)	r1�u_summer�u_winter�t_summer�t_winterr�rdr�r�s	         r#rz(TestLocalTimeDisambiguation.test_fromutc�sH���D�"�b�!�H�=�=�=�	�@T�T���D�"�b�!�H�=�=�=���#�#�H�-�-���#�#�H�-�-������8�a�$�h�#6�7�7�7�����8�a�$�h�#6�7�7�7�������*�*�*�������*�*�*�
�T�2�r�1�b��:�:�:��
�
�
�a�
 �
 ��	�T�	��
�
�
�a�
 �
 ������R� � � ������!�$�$�$������!�$�$�$��T�2�r�1�b��:�:�:�����Q�������!�%����(�3�3�3��T�2�r�1�b��:�:�:�����Q�������!�%����'�2�2�2�
�T�1�a��A�h�7�7�7�����Q�������!�%����'�2�2�2�2�2r%c�2�tdddt���}|�||�tj����tdddt���}|�||�tj����dS)NrSr&rr])rr�r0r�rr6r�s  r#�test_mixed_compare_regularz6TestLocalTimeDisambiguation.test_mixed_compare_regular�s|���T�1�a��1�1�1������A�L�L���6�6�7�7�7��T�1�a��1�1�1������A�L�L���6�6�7�7�7�7�7r%c���tdddddt���}|�tj��}|�||��|�||��dS)Nr^r'r.r&r�r�rr�r�rr6r�)r1�t_fold�
t_fold_utcs   r#�test_mixed_compare_foldz3TestLocalTimeDisambiguation.test_mixed_compare_fold�sc���$��B��2�h�?�?�?���&�&�x�|�4�4�
����F�J�/�/�/����J��/�/�/�/�/r%c���tdddddt���}|�tj��}|�||��|�||��dS)Nr^r[rXrYr�rr�)r1�t_gap�	t_gap_utcs   r#�test_mixed_compare_gapz2TestLocalTimeDisambiguation.test_mixed_compare_gap�sc����q�!�Q��8�<�<�<���$�$�X�\�2�2�	����E�9�-�-�-����I�u�-�-�-�-�-r%c�6�tdddt���}|�t|��t|�d�������tdddddt���}tdd	d
ddt���}|�t|��t|�d�������|�t|��t|�d�������dS)NrSr&rr9r^r'r.r�r[rXrY)rr�r0r�r)r1r�r�r�s    r#�test_hash_awarez+TestLocalTimeDisambiguation.test_hash_aware�s����T�1�a��1�1�1������a���$�q�y�y�a�y�'8�'8�"9�"9�:�:�:��$��B��2�h�?�?�?����q�!�Q��8�<�<�<������f���t�F�N�N��N�,B�,B�'C�'C�D�D�D�����e���d�5�=�=�a�=�+@�+@�&A�&A�B�B�B�B�Br%N)rKrbrcr�r�r�r�r_rr�r
r@r�r�r�r�r�r�r�r�r	rrr�r�r�r�rr%r#r�r��s�������#�#�#�09�9�9�.&�&�&�$�$�$�5�5�5�.1�1�1�=�=�=��W��3�4�4�&�&�5�4�&��W��.�/�/�
%�
%�0�/�
%�<�<�<�
�W��3�4�4�*�*�5�4�*��W��.�/�/�(�(�0�/�(��W��3�4�4�'�'�5�4�'�G�G�G�E�E�E�=�=�=�6K�K�K�3�3�3�B8�8�8�0�0�0�.�.�.�C�C�C�C�Cr%r�c�p�tj|��\}}t|d��t||��Sr4)r�tee�nextrk)�iterablernros   r#�pairsr��s0���=��"�"�D�A�q���D�M�M�M��q�!�9�9�r%c��eZdZdZd�Zed���Zed���Zed���Z	e
ddd�����Zd�Z
d	�Zd
�Zd�Zd�Zedd���Zedd���Zd�Zd�Zedd���Zd�Zd�Zd�Zd
S)�ZoneInfoz/usr/share/zoneinfoc�X�||_||_|�||��|_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)r1r�r�s   r#rszZoneInfo.__init__�s+���������+�+�b�"�%�%����r%c��td|��td|��f}|r�|ddtz}|ddxx|z
cc<|ddxx|z
cc<tdt|����D]Y}|d|xx||dz
dtzz
cc<|d|xx||dtzz
cc<�Z|S)Nr#rr&)r�SECrlr�)r�r�rrqrrs     r#r�zZoneInfo.invert�s����C��n�n�e�C��n�n�
-��
�	,���U�1�X��_�F��q�E�!�H�H�H���H�H�H��q�E�!�H�H�H���H�H�H��1�c�"�g�g�&�&�
,�
,���1��a����B�q��s�G�A�J�#�-�-�����1��a����B�q�E�!�H��O�+������	r%c	�F�|�d�����dkrtd���|�d��t	d��}|�|d��tjdkr|���t	d��}|�||d��tjdkr|���t	d	��}|�||d��g}t|d
��D]=}|�
tjd|�d�������>|�|d
��}t|��D]O\}\}}	}
||
|�d|
������}td|��|	|f||<�Pdgt!|��z}t|��D]\}}
||
||<�|||��}|S)Nr[�TZifznot a zoneinfo filer�rrrUrrrr&z>lbbr]rY)�read�decoder��seekr�fromfilerI�	byteorder�byteswaprlr��struct�unpackr�findrr�)rZ�fileobj�countsr��type_indices�ttisrr�abbrs�gmtoff�isdst�abbrind�abbrr��idxr1s               r#r�zZoneInfo.fromfile
s����<�<��?�?�!�!�#�#�v�-�-��2�3�3�3����R�����s���������#�#�#��=�E�!�!��O�O����
�3�Z�Z��
���G�V�A�Y�'�'�'��=�E�!�!��K�K�M�M�M��S�z�z�����g�v�a�y�1�1�1����v�a�y�!�!�	@�	@�A��K�K��
�f�g�l�l�1�o�o�>�>�?�?�?�?����V�A�Y�'�'��,5�T�?�?�	:�	:�'�A�'���w������A�w�!7�!7�7�8�?�?�A�A�D� ��F�+�+�U�D�9�D��G�G��V�c�"�g�g�
����-�-�	�	�F�A�s���I�B�q�E�E��s�2�r�{�{���r%c���tj�|j|��}t	|d��5}|�|��cddd��S#1swxYwYdS)N�rb)�os�path�join�zoneroot�openr�)rZrFr�r�s    r#�fromnamezZoneInfo.fromname/s����w�|�|�C�L�$�/�/��
�$��
�
�	#���<�<��?�?�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s�A�A�ArOr&c���t|t��std���|j|urt	d���|���|jz
dz|jdzz|jdzz|j	z}||j
dkr|jd}d}n�tj
|j
|��}|j
|dz
|ksJ�|t|j
��ks||j
|ksJ�|j|dz
|�\}}|d|dz
}|td||j
|dz
z
��k}||dz
}|r|�d�	��S|S)
rurvrwr_rrXr&rrYr9)rkrr�rr�rh�EPOCHORDINALrfrrr�r��bisect�bisect_rightr�rr)r1ryr��ttir:r��tti_prev�shifts        r#r�zZoneInfo.fromutc7s|���"�h�'�'�	F��D�E�E�E�
�9�D� � ��4�5�5�5��l�l�n�n�t�'8�8�E�A��w��~�&��y�2�~�&��y�!�	�
�t�w�q�z�!�!��'�!�*�C��D�D��%�d�g�y�9�9�C��7�3�q�5�>�Y�.�.�.�.��#�d�g�,�,�&�&�)�d�g�c�l�*B�*B�*B�*B� �G�C��E�#�I�.�M�H�c��Q�K�#�a�&�(�E��I�a��T�W�S��U�^�)C�D�D�D�D�
�c�!�f����	��:�:�1�:�%�%�%��Ir%c��|���|jz
dz|jdzz|jdzz|jz}|j|j}tj||��}|j	td|dz
��|S)Nr_rrXrr&)rhrrfrrrr:rrr�r�)r1ryrrr�rr�s      r#�_find_tizZoneInfo._find_tiUs����l�l�n�n�t�'8�8�E�A��w��~���y�2�~���y��	��W�R�W�
���!�"�i�0�0���w�s�1�c�A�g���'��*�*r%c�.�|�|d��SrZ�rrxs  r#rzzZoneInfo.utcoffset_����}�}�R��#�#�#r%c�N�|�|d��}|rtntSr�)rr�r)r1ryr�s   r#rzZoneInfo.dstbs&���
�
�b�!�$�$��
�&�t�t�$�&r%c�.�|�|d��S)NrYrrxs  r#r}zZoneInfo.tznamejrr%Nc#�pK�|�|j}tj�|d��}	t	|��}n#t
$rYdSwxYw|5|D]I}|���}|r1|�d��s|���dV��J	ddd��dS#1swxYwYdS)Nzzone.tab�#rY)	rr�r�rrri�striprDr�)rZ�zonedir�zone_tabr��lines     r#�	zonenameszZoneInfo.zonenamesms�����?��l�G��7�<�<���4�4��	��X���A�A���	�	�	��F�F�	����
�	*�	*��
*�
*���z�z�|�|���*����� 4� 4�*��*�*�,�,�q�/�)�)�)��
*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s"�=�
A�
A�A
B+�+B/�2B/c���dx}x}x}}tjx}}tx}}	tjx}
}dx}}
tjx}}dx}}t|dd��}|���D]�}|dz
}|�|��}|���D]�\}}||kr�|tkr@|dz
}||f||fkr|}|}
|}|tj|z
f|tj|
z
fkr|}|}|}
�W|tkrC|dz
}|}||f|	|fkr|}	|}|}|tj|z
f|tj|z
fkr|}|}|}��|dz
}����|||f}td|z��tdt|��f|zz��td|d�d|
�d|����td	|d�d|�d|
����td
|d�d|�d|����td|	d�d|�d|����dS)Nrr&zNumber of zones:       %5dz@Number of transitions: %5d = %d (gaps) + %d (folds) + %d (zeros)zMin gap:         z>16z at z in zMax gap:         zMin fold:        zMax fold:        )
rr�r�rr�rr�transitions�printr�)rZ�
start_year�count�	gap_count�
fold_count�zeros_count�min_gap�min_fold�max_gap�max_fold�min_gap_datetime�max_gap_datetime�min_gap_zone�max_gap_zone�min_fold_datetime�max_fold_datetime�
min_fold_zone�
max_fold_zone�stats_since�zonenamer�ryr
�trans_countss                        r#�statszZoneInfo.stats|s���78�8��8�	�8�J��&�]�*��(�!�!��(�.6�l�:��+�&*�*��|�08��<��-�(,�,�
�
��z�1�a�0�0���
�
���	%�	%�H��Q�J�E����h�'�'�B��^�^�-�-�
%�
%�	��E���#�#���4�<�<���N�I��r�{�g�/?�%@�@�@�"'��'/��+-�(��x�|�b�0�1�W�h�l�M]�>]�4^�^�^�"'��'/��+-�(���T�\�\��!�O�J�"�F�E��r�{�h�0A�%B�B�B�#(��(0�
�,.�)��x�|�b�0�1�X�x�|�N_�?_�4`�`�`�#(��(0�
�,.�)���1�$�K�K�3
%�4"�:�{�;��
�*�U�2�3�3�3�
�P��L�!�!�#�l�2�4�	5�	5�	5�
��W�W�W�W�>N�>N�>N�P\�P\�]�^�^�^�
��W�W�W�W�>N�>N�>N�P\�P\�]�^�^�^�
��X�X�X�X�?P�?P�?P�R_�R_�`�a�a�a�
��X�X�X�X�?P�?P�?P�R_�R_�`�a�a�a�a�ar%c#��K�tt|j|j����D]4\\}}\}}|d|dz
}t	j|��|fV��5dSrZ)r�rkr�r�rr_�r1�_�prev_tir�r�r
s      r#rzZoneInfo.transitions�ss����%*�3�t�w���+@�+@�%A�%A�	6�	6�!�L�Q��'�1�b��q�E�G�A�J�&�E��+�A�.�.��5�5�5�5�5�	6�	6r%c#�K�tt|j|j����D]`\\}}\}}|d|dz
}|tkr9|d|dkr'tj|��||d|dfV��adS)zLFind all folds with the same value of isdst on both sides of the transition.rr&rYN)r�rkr�r�r�rr_r2s      r#�nondst_foldszZoneInfo.nondst_folds�s�����%*�3�t�w���+@�+@�%A�%A�	N�	N�!�L�Q��'�1�b��q�E�G�A�J�&�E��t�|�|��1����� 3� 3��/��2�2�U�F�G�A�J��1��M�M�M�M��	N�	Nr%Fc��d}|���D]d}|�|��}|���D]8\}}}}	|j|ks|r||	kr�|dz
}t	d||||||	fz���9�edS)Nrr&z%3d) %-30s %s %10s %5s -> %s)rrr6r_r)
rZ�	same_abbrrrr.r�ryr
�	prev_abbrr�s
          r#�print_all_nondst_foldszZoneInfo.print_all_nondst_folds�s������
�
���	E�	E�H����h�'�'�B�.0�o�o�.?�.?�
E�
E�*��E�9�d��7�Z�'�'�9�'��d�9J�9J����
���4��h��E�9�d�C�D�E�E�E�E�	
E�	E�	Er%c#�bK�|���D]\}}|tkr||fV��dSr4�rr��r1r�r
s   r#�foldszZoneInfo.folds�sH�����(�(�*�*�	 �	 �H�A�u��t�|�|��%��i�����	 �	 r%c#�`K�|���D]\}}|tkr||fV��dSr4r<r=s   r#�gapsz
ZoneInfo.gaps�sF�����(�(�*�*�	�	�H�A�u��t�|�|���h�����	�	r%c#�JK�|���D]\}}|s|V��dSr4)rr=s   r#�zeroszZoneInfo.zeros�sA�����(�(�*�*�	�	�H�A�u��
������	�	r%r4)r&)Fr&)rKrbrcrrsr�r��classmethodr�rrrhrr�rrzrr}rr0rr6r:r>r@rBrr%r#r�r��s�������$�H�&�&�&��	�	��\�	��"�"��[�"�H�#�#��[�#�
�4��a��#�#�-�-�/�/�L����<+�+�+�$�$�$�'�'�'�$�$�$��*�*�*��[�*��-b�-b�-b��[�-b�`6�6�6�
N�N�N��	E�	E�	E��[�	E� � � �
���
����r%r�c�r�eZdZdZd�Zd�Zd�Zd�Zej	e
ed��d��d���Zd	S)
�ZoneInfoTestzAmerica/New_Yorkc�T�tjdkr|�d��tjdkr|�d��	t�|j��|_dS#t$r+}|�d|j�d|����Yd}~dSd}~wwxYw)N�vxworksz"Skipping zoneinfo tests on VxWorksr�z"Skipping zoneinfo tests on Windowsz	Skipping z: )rIrCrLr�rr.r��FileNotFoundError)r1�errs  r#r�zZoneInfoTest.setUp�s����<�9�$�$��M�M�>�?�?�?��<�7�"�"��M�M�>�?�?�?�	D��'�'��
�6�6�D�G�G�G�� �	D�	D�	D��M�M�M�t�}�}�}�c�c�B�C�C�C�C�C�C�C�C�C�����	D���s�$A2�2
B'�< B"�"B'c���|�|�d���|jt|j��f|�d���|jt|j��f��dS)Nr)r0rr:�idr)r1rnros   r#�assertEquivDatetimesz!ZoneInfoTest.assertEquivDatetimes�sl�����!�)�)�4�)�0�0�!�&�"�Q�X�,�,�G��)�)�4�)�0�0�!�&�"�Q�X�,�,�G�	I�	I�	I�	I�	Ir%c��|j}|���D�]�\}}d|zd|z|tjz
fD�]'}||z}|�|�|�����}|�|jd��|�tj	����
|��}|�||��|���}|�|�d���||z��|�|�
tj	��|�tj	�������)tj|fD]M}||z}|�|���}|�|��}|�|jd���N���dS)Nrrcrr&)
r�r>rr�r�rr0r:rr6r�rLrz�	r1r�ryr
r��udtrz�adtrzs	         r#�
test_foldszZoneInfoTest.test_folds�s���
�W�������	.�	.�I�B���%�i��u��e�i�6J�.J�K�

L�

L���1�f���j�j����B��!7�!7�8�8��� � ���1�-�-�-��k�k���k�6�6�A�A�"�E�E���)�)�#�s�3�3�3��M�M�O�O�	�� � ����D��!9�!9�3��?�K�K�K��)�)�#�.�.���*F�*F�*-�+�+�X�\�+�*J�*J�L�L�L�L�!�+�+�U�3�
.�
.���1�f���k�k��k�,�,���j�j��o�o��� � ���1�-�-�-�-�	
.�	.�	.r%c�8�|j}|���D�]�\}}d|zd|z|tjz
fD�]�}||z}|�|���}|�|��}|�|jd��|�tj	����
|��}|�||��|���}|�|�d���|�d���|z��|�|�|�����|z
|z}|�
|�d������|�d������d|z�����tj|fD]K}||z}|�|�|�����}|�|jd���L���dS)Nrrcrr&r9zAt %s.)r�r@rr�rr�r0r:rr6r�rLrz�
assertLessrNs	         r#�	test_gapszZoneInfoTest.test_gaps�s���
�W�������	.�	.�I�B���%�i��u��e�i�6J�.J�K�

0�

0���1�f���k�k��k�,�,���j�j��o�o��� � ���1�-�-�-��k�k���k�6�6�A�A�"�E�E���)�)�#�s�3�3�3��M�M�O�O�	�� � ����D��!9�!9�3�;�;�d�;�;S�;S�V_�;_�`�`�`��j�j����2��!6�!6�7�7�%�?�!�C���������� 3� 3� =� =� ?� ?� #����� 3� 3� =� =� ?� ?� (�3��0�0�0�0�!�+�+�U�3�
.�
.���1�f���j�j����B��!7�!7�8�8��� � ���1�-�-�-�-�
.�!	.�	.r%�tzsetz"time module has no attribute tzsetc	���d|jvs|j�d��r|�d|jz��|j}tj�d��}|jtjd<	tj��|�	��D�]e\}}|j
dkr�nS|tddd��z
tz}|tz}dd	d
d|dz
|dz|d
zfD]�}||z}tj
|��}	tj
||���d���}
|�|	|
��|	���}|�||����|dkr�tj
|��|dzz
}|���}
|�d������}|�|
||dzz��|�|||dzz
����g|�tjd=n|tjd<tj��dS#|�tjd=n|tjd<tj��wxYw)N�Riyadh8zright/zSkipping %s�TZi�rOr&i���i��rri@i�2rrYr9)r.rDrLr�r��environ�getr�rUrr_rr�r�rrLr�r0)r1r�rXrOr
r�r$r�r��sdt�tzdtr�ry�ts0�ts1s               r#�test_system_transitionsz$ZoneInfoTest.test_system_transitionssb��
���&�&��
�(�(��2�2�
'�
�M�M�-�$�-�7�8�8�8�
�W��
�Z�^�^�D�
!�
!���=��
�4��	��K�M�M�M� �n�n�.�.�
7�
7�
��U��8�t�#�#��E��H�T�1�a�0�0�0�S�8���c�\��$�h��A��q�&�"�y�.�"�y�.�B�,�,�A��Q��A�"�0��3�3�C�#�1�!�R�8�8�@�@��@�M�M�D��-�-�c�4�8�8�8������B��$�$�Q��+�+�+�+���6�6�!�/��3�3�e�a�i�?�B��,�,�.�.�C��*�*�!�*�,�,�6�6�8�8�C��$�$�S�"�r�A�v�+�6�6�6��$�$�S�"�r�A�v�+�6�6�6���z��J�t�$�$�#%��
�4� ��K�M�M�M�M�M��	�z��J�t�$�$�#%��
�4� ��K�M�M�M�M���s
�<FH>�>4I2N)
rKrbrcr.r�rLrQrTrA�
skipUnlessr�rr_rr%r#rErE�s�������!�H�D�D�D�I�I�I�.�.�.�,.�.�.�.�X�����g��� D���*�*���*�*�*r%rEc���eZdZ�fd�Z�xZS)�ZoneInfoCompleteTestc�p��g}td��r�t���D]h}td|ztfi��}||_t
|��D]5}|�d��r|�||�����6�it���
|��dS)N�tzdatazZoneInfoTest[%s]�test_)rr�rr�rEr.r:rDr��superrs)r1rrF�Test�methodrJs     �r#rszZoneInfoCompleteTest.__init__Ds�������x�(�(�	3� �*�*�,�,�
3�
3���.��5����K�K�� $��
�!�$�i�i�3�3�F��(�(��1�1�3����T�T�&�\�\�2�2�2��3�	����������r%)rKrbrcrs�
__classcell__)rJs@r#rbrbCs8�������	 �	 �	 �	 �	 �	 �	 �	 �	 r%rbc��eZdZdZdS)�IranTestzAsia/TehranN)rKrbrcr.rr%r#rkrkPs�������H�H�Hr%rkzneed _testcapi modulec��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�CapiTestc��|jj�d��r|�d��t	j��dS)N�PurezNot relevant in pure Python)rJrKrErL�	_testcapi�test_datetime_capir7s r#r�zCapiTest.setUpVsG���>�"�+�+�F�3�3�	9��M�M�7�8�8�8�	�$�&�&�&�&�&r%c���dD]d}tj|��}|�|���5|�|tj��ddd��n#1swxYwY�edS)N�TF)�	use_macro)rp�get_timezone_utc_capir3r5rr6)r1rt�capi_utcs   r#�
test_utc_capizCapiTest.test_utc_capi_s���&�	6�	6�I� �6�y�A�A�H����	��2�2�
6�
6��
�
�h���5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6s�!A�A 	�#A 	c	���tj��\}}}ttd���d��}ttd�����}d||fd||fd||fg}|D�]\}}}	|�|���5|�||	��t
dd	d
|���}
t
dd	d
|	���}|�|
|��|�|
���|�����t
dd	d
dtj���}|�|
�	tj��|��ddd��n#1swxYwY��dS)
Nrr�r��est_capi�	est_macro�est_macro_nn)rFrSrYr[rrV)
rp�make_timezones_capirrr3r0rr}r6r�)
r1ryrzr{�	exp_named�exp_unnamed�casesrF�tz_act�tz_expr�rTr�s
             r#�test_timezones_capizCapiTest.test_timezones_capifs���,5�,I�,K�,K�)��)�\��Y�R�0�0�0�%�8�8�	��y�r�2�2�2�3�3����9�-�
�)�Y�/�
�\�;�7�
��%*�	G�	G� �D�&�&����4��(�(�
G�
G�� � ���0�0�0��t�Q��&�9�9�9���t�Q��&�9�9�9��� � ��c�*�*�*�� � ������s�z�z�|�|�<�<�<�!�$��1�a���E�E�E��� � ������!=�!=�v�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	Gs�CE*�*E.	�1E.	c��Gd�dt��}t|fD]�}dD]�}||�}|�||���5tj|��\}}}|�||j��|�||j��|�||j��ddd��n#1swxYwY����dS)Nc��eZdZdS)�=CapiTest.test_PyDateTime_DELTA_GET.<locals>.TimeDeltaSubclassNr�rr%r#�TimeDeltaSubclassr��r�r%r�)�r��7韆r��rZr)rr3rp�PyDateTime_DELTA_GETr0rTr�r�)r1r��klassr�r�rTr�r�s        r#�test_PyDateTime_DELTA_GETz"CapiTest.test_PyDateTime_DELTA_GET�sP��	�	�	�	�	�	�	�	�	� �!2�3�	C�	C�E�:�
C�
C���E�4�L���\�\�e�$�\�7�7�C�C�2;�2P�QR�2S�2S�/�D�'�<��$�$�T�1�6�2�2�2��$�$�W�a�i�8�8�8��$�$�\�1�>�B�B�B�C�C�C�C�C�C�C�C�C�C�C����C�C�C�C��
C�	C�	C��A*B5�5B9�<B9c��Gd�dt��}t|fD]�}dD]�}||�}|�||���5tj|��\}}}|�||j��|�||j��|�||j��ddd��n#1swxYwY����dS)Nc��eZdZdS)�2CapiTest.test_PyDateTime_GET.<locals>.DateSubclassNr�rr%r#r�r��r�r%r�))rSr&rY)rcrYr~r�)rr3rp�PyDateTime_GETr0r_r`r�)r1r�r�r�r�r_r`r�s        r#�test_PyDateTime_GETzCapiTest.test_PyDateTime_GET�s6��	�	�	�	�	�4�	�	�	��L�)�	1�	1�E�5�
1�
1���E�4�L���\�\�e�$�\�7�7�1�1�'0�'?��'B�'B�$�D�%���$�$�T�1�6�2�2�2��$�$�U�A�G�4�4�4��$�$�S�!�%�0�0�0�1�1�1�1�1�1�1�1�1�1�1����1�1�1�1��
1�	1�	1r�c
� �Gd�dt��}t|fD]�}ddddddd	d
tjffD]�}||�}|�||���5t	j|��\}}}}}	|�||j��|�||j��|�||j	��|�||j
��|�|	|j��ddd��n#1swxYwY�،�dS)Nc��eZdZdS)�;CapiTest.test_PyDateTime_DATE_GET.<locals>.DateTimeSubclassNr�rr%r#rr��r�r%r)��r�r�r�r�r�r�r�r�r�r�r�r�r�r�)
rrr6r3rp�PyDateTime_DATE_GETr0rfrrrjr5r)
r1rr�r�r�rfrrrjrs
          r#�test_PyDateTime_DATE_GETz!CapiTest.test_PyDateTime_DATE_GET�s���	�	�	�	�	�x�	�	�	�� 0�1�
	4�
	4�E�9���2�r�2�r�5�"�,�(�)�
4�
4���E�4�L���\�\�e�$�\�7�7�4�4�,5�,I�!�,L�,L�>�D�&�&�+�v��$�$�T�1�6�2�2�2��$�$�V�Q�X�6�6�6��$�$�V�Q�X�6�6�6��$�$�[�!�-�@�@�@��M�M�&�!�(�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��	
4�
	4�
	4s�B"D�D�Dc��Gd�dt��}t|fD]�}dddddtjffD]�}||�}|�||���5t	j|��\}}}}}	|�||j��|�||j��|�||j	��|�||j
��|�|	|j��ddd��n#1swxYwY�،�dS)	Nc��eZdZdS)�7CapiTest.test_PyDateTime_TIME_GET.<locals>.TimeSubclassNr�rr%r#r�r��r�r%r�)r�rr<r'r�rr<r'r�)
rrr6r3rp�PyDateTime_TIME_GETr0rfrrrjr5r)
r1r�r�r�r�rfrrrjrs
          r#�test_PyDateTime_TIME_GETz!CapiTest.test_PyDateTime_TIME_GET�s���	�	�	�	�	�4�	�	�	��L�)�	4�	4�E�)��b�"�b�(�,�7�9�
4�
4���E�4�L���\�\�e�$�\�7�7�4�4�.7�.K�A�.N�.N�>�D�&�&�+�v��$�$�T�1�6�2�2�2��$�$�V�Q�X�6�6�6��$�$�V�Q�X�6�6�6��$�$�[�!�-�@�@�@��M�M�&�!�(�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��
4�	4�	4s�B"C>�>D�Dc�^�tj��\}}}|�d���5|�|tj��ddd��n#1swxYwY|�d���5|�|tj��ddd��n#1swxYwY|�d���5|�|tj��t	td���d��}|�||��tdd	d
|���}tdd	d
|���}|�||��|�|�
��|�
����ddd��dS#1swxYwYdS)N�utc0)�testname�utc1�non_utcrr�rrSrYr[r)rp�get_timezones_offset_zeror3r5rr6r�rr0rr})r1r�r�r��non_utc_expr�rTs       r#�test_timezones_offset_zeroz#CapiTest.test_timezones_offset_zero�sA��'�A�C�C���d�G�
�\�\�6�\�
*�
*�	.�	.��M�M�$���-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��\�\�6�\�
*�
*�	.�	.��M�M�$���-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��\�\�9�\�
-�
-�	9�	9����W�h�l�3�3�3�"�9�1�#5�#5�#5�r�:�:�K����W�k�2�2�2��4��A�g�6�6�6�C��4��A�k�:�:�:�C����S�#�&�&�&����S�Z�Z�\�\�3�:�:�<�<�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s6�!A�A�"A�<!B)�)B-�0B-�
CF"�"F&�)F&c
�L�Gd�dt��}tddd��}|ddd��}tddd��}tj}|�||����|�||����|�||����|�||d����|�||d����|�||d����t
��t��ddtd��tj
tdd��g}|D]U}d	D]P}|�||�
��5|�|||����ddd��n#1swxYwY�Q�VdS)Nc��eZdZdS)�.CapiTest.test_check_date.<locals>.DateSubclassNr�rr%r#r�r��r�r%r���r&T�
2011-01-01r�rrs��arg�exact)
rrrp�datetime_check_dater�r�r�r�rrr6rr3)	r1r�r��dsry�is_dater�r�r�s	         r#�test_check_datezCapiTest.test_check_date�s��	�	�	�	�	�4�	�	�	�
��q�!����
�\�$��1�
%�
%��
�d�A�q�
!�
!���/��	
������
�
�#�#�#���������$�$�$���������$�$�$�������4�(�(�)�)�)�	
������T�*�*�+�+�+�������T�*�*�+�+�+��������L��!���h�l�D��R�L�L�:���	:�	:�C�&�
:�
:���\�\�c��\�7�7�:�:��$�$�W�W�S�%�%8�%8�9�9�9�:�:�:�:�:�:�:�:�:�:�:����:�:�:�:��
:�	:�	:s�+ F�F�Fc��Gd�dt��}tdd��}|dd��}tj}|�||����|�||����|�||d����|�||d����t��t
��ddtd��tj	tddd��g}|D]U}d	D]P}|�||�
��5|�|||����ddd��n#1swxYwY�Q�VdS)Nc��eZdZdS)�.CapiTest.test_check_time.<locals>.TimeSubclassNr�rr%r#r�r��r�r%r�r�rTr&r�r�rsr�)rrp�datetime_check_timer�r�r�r�rrr6rr3)r1r�r�r��is_timer�r�r�s        r#�test_check_timezCapiTest.test_check_time�s���	�	�	�	�	�4�	�	�	�
��R�L�L��
�\�"�b�
!�
!���/��	
������
�
�#�#�#���������$�$�$�������4�(�(�)�)�)�	
������T�*�*�+�+�+��������L��!���h�l�D��q�!�,<�,<�>���	:�	:�C�&�
:�
:���\�\�c��\�7�7�:�:��$�$�W�W�S�%�%8�%8�9�9�9�:�:�:�:�:�:�:�:�:�:�:����:�:�:�:��
:�	:�	:�� E�E�Ec��Gd�dt��}tddddd��}|ddddd��}tj}|�||����|�||����|�||d����|�||d����t��t
��ddtd��tj	tddd��g}|D]U}d	D]P}|�||�
��5|�|||����ddd��n#1swxYwY�Q�VdS)Nc��eZdZdS)�6CapiTest.test_check_datetime.<locals>.DateTimeSubclassNr�rr%r#rr�r�r%rr�r&r�rTr�rsr�)rrp�datetime_check_datetimer�r�r�r�rrr6rr3)r1rryr��is_datetimer�r�r�s        r#�test_check_datetimezCapiTest.test_check_datetime
s���	�	�	�	�	�x�	�	�	��d�A�q�"�b�
)�
)����t�Q��2�r�2�2���7��	
�����B���(�(�(������C�(�(�)�)�)������B��-�-�.�.�.�	
�����S�$�/�/�0�0�0��������L��!���h�l�D��q�!�,<�,<�>���	>�	>�C�&�
>�
>���\�\�c��\�7�7�>�>��$�$�[�[��e�%<�%<�=�=�=�>�>�>�>�>�>�>�>�>�>�>����>�>�>�>��
>�	>�	>s�" E�E�Ec��Gd�dt��}td��}|d��}tj}|�||����|�||����|�||d����|�||d����t��t
��ddtjtddd��tddd��g}|D]U}dD]P}|�||���5|�|||����ddd��n#1swxYwY�Q�VdS)	Nc��eZdZdS)�4CapiTest.test_check_delta.<locals>.TimeDeltaSubclassNr�rr%r#r�r�(r�r%r�r&Tr�r�rsr�)rrp�datetime_check_deltar�r�r�r�rr6rrr3)r1r�r[�tds�is_timedeltar�r�r�s        r#�test_check_deltazCapiTest.test_check_delta's���	�	�	�	�	�	�	�	�	��q�\�\�����"�"�� �5��	
�����R�(�(�)�)�)������S�)�)�*�*�*������R��.�.�/�/�/�	
�����c�4�0�0�1�1�1��������L���d�4��A�.�.���q�!�0D�0D�F���	?�	?�C�&�
?�
?���\�\�c��\�7�7�?�?��$�$�\�\�#�u�%=�%=�>�>�>�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?��
?�	?�	?r�c
�H�Gd�dt��}t��}|��}ttd�����}tj}|�||����|�||����|�||����|�||d����|�||d����|�||d����t��t��ddtddd��tddd��g}|D]U}d	D]P}|�||�
��5|�|||����ddd��n#1swxYwY�Q�VdS)Nc��eZdZdS)�2CapiTest.test_check_tzinfo.<locals>.TZInfoSubclassNr�rr%r#�TZInfoSubclassr�Br�r%r�rr�Tr&r�r�rsr�)rrrrp�datetime_check_tzinfor�r�r�r�rrr3)	r1r�r�tzisr��	is_tzinfor�r�r�s	         r#�test_check_tzinfozCapiTest.test_check_tzinfoAs��	�	�	�	�	�V�	�	�	��h�h���~����
�i�b�)�)�)�
*�
*���3�	�	
���	�	�#���'�'�'����	�	�"�
�
�&�&�&����	�	�$���(�(�(����	�	�#�t�,�,�-�-�-�	
�����2�t�,�,�-�-�-������4��.�.�/�/�/��������L��T�1�a� � �(�4��A�"6�"6�8���	<�	<�C�&�
<�
<���\�\�c��\�7�7�<�<��$�$�Y�Y�s�E�%:�%:�;�;�;�<�<�<�<�<�<�<�<�<�<�<����<�<�<�<��
<�	<�	<s�) F�F�Fc��tddd��}dD]l}|�|���5tj||j|j|j��}|�||��ddd��n#1swxYwY�mdS)Nr�r�r��FT��macro)rr3rp�get_date_fromdater_r`r�r0�r1�exp_dater��
c_api_dates    r#�test_date_from_datezCapiTest.test_date_from_date^s�����a��$�$�� �	7�	7�E����E��*�*�
7�
7�&�8���M��N��L�	"�"�
�� � ��X�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7��=A5�5A9	�<A9	c�>�tddddddd��}dD]�}|�|�	��5tj||j|j|j|j|j|j	|j
��}|�||��ddd��n#1swxYwY��dS)
Nr�r�r�r�r�r�r�r�r�)rr3rp�get_datetime_fromdateandtimer_r`r�rfrrrjr0r�s    r#�test_datetime_from_dateandtimez'CapiTest.test_datetime_from_dateandtimeks����D�!�R��R��U�;�;�� �	7�	7�E����E��*�*�
7�
7�&�C���M��N��L��M��O��O��(�*�*�
�� � ��X�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s�AB�B	�B	c��tddddddd��}dD]�}d	D]�}|�||�
��5tj||j|j|j|j|j|j	|j
|j�	�	}|�||��|�|j|j��ddd��n#1swxYwY����dS)Nr�r�r�r�r�r�r��rr&r��r�r:)
rr3rp�#get_datetime_fromdateandtimeandfoldr_r`r�rfrrrjr:r0)r1r�r:r�r�s     r#�%test_datetime_from_dateandtimeandfoldz.CapiTest.test_datetime_from_dateandtimeandfold|s<���D�!�R��R��U�;�;���	E�	E�D�$�
E�
E���\�\��D�\�9�9�
E�
E�!*�!N�� �
� �� �� �
� �� �� �,� �
�	"'�	"'�J��$�$�Z��:�:�:��$�$�Z�_�h�m�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��
E�	E�	Es�A;B<�<C�Cc	��tdddd��}dD]r}|�|���5tj||j|j|j|j��}|�||��ddd��n#1swxYwY�sdS)Nr�r�r�r�r�r�)	rr3rp�get_time_fromtimerfrrrjr0)r1�exp_timer��
c_api_times    r#�test_time_from_timezCapiTest.test_time_from_time�s�����B��E�*�*�� �		7�		7�E����E��*�*�
7�
7�&�8���M��O��O��(�*�*�
�� � ��X�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��		7�		7s�AA<�<B	�B	c�l�tdddd��}dD]�}dD]�}|�||���5tj||j|j|j|j|j��}|�	||��|�	|j|j��ddd��n#1swxYwY����dS)Nr�r�r�r�r�r�r�)
rr3rp�get_time_fromtimeandfoldrfrrrjr:r0)r1r�r:r�r�s     r#�test_time_from_timeandfoldz#CapiTest.test_time_from_timeandfold�s'����B��E�*�*���	E�	E�D�$�
E�
E���\�\��D�\�9�9�
E�
E�!*�!C�� �
� �� �� �,� �
�
"'�"'�J��$�$�Z��:�:�:��$�$�Z�_�h�m�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��
E�	E�	Es�A)B'�'B+�.B+c��tddd��}dD]l}|�|���5tj||j|j|j��}|�||��ddd��n#1swxYwY�mdS)Nr�r�r�r�r�)rr3rp�get_delta_fromdsurTr�r�r0)r1�	exp_deltar��c_api_deltas    r#�test_delta_from_dsuzCapiTest.test_delta_from_dsu�s����b�"�e�,�,�	� �	9�	9�E����E��*�*�
9�
9�'�9���N��%��*�	,�,��� � ��i�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��	9�	9r�c
�@�tddd�����}dD]w}|�|���5tjt|��|��}|�|tddd����ddd��n#1swxYwY�xdS)N��r[r�r�r�)rr�r3rp�get_date_fromtimestamprlr0r)r1r�r�r�s    r#�test_date_from_timestampz!CapiTest.test_date_from_timestamp�s���
�d�A�r�
"�
"�
,�
,�
.�
.�� �	7�	7�E����E��*�*�
7�
7��4�S��W�W�e�D�D��� � ��D��q�"�$5�$5�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s�AB�B	�B	c���dddttd�����dfddd	ttd�����dfg}tj}|D]�}d
D]�}|�||���5|\}}}t|d|i�}t
|�����}	||	|||��}
|�||
��ddd��n#1swxYwY����dS)
N)�r�r[r�NF)r�NTr�r&r�T)�r�r[r�rdrNF)r�NTr�r�)�caser�r)	rrrp�get_datetime_fromtimestampr3rrlr�r0)r1rr�r�r��dtupr�usetz�dt_origr�r�s           r#�test_datetime_from_timestampz%CapiTest.test_datetime_from_timestamp�sT��(�'�
�H�Y�Q�%7�%7�%7�8�8�$�?�0�/�
"�H�Y�Q�-?�-?�-?�$@�$@�$�G�

��#�=���		5�		5�D�$�
5�
5���\�\�t�5�\�9�9�5�5�*.�'�D�&�%�&��<�V�<�<�G��W�.�.�0�0�1�1�B�*�N�2�v�u�e�D�D�E��$�$�W�e�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5��
5�		5�		5s�0AC�C�CN)rKrbrcr�rwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr%r#rmrmTs[������'�'�'�6�6�6�G�G�G�4C�C�C�1�1�1�4�4�4�&4�4�4�$9�9�9�,:�:�:�8:�:�:�4>�>�>�4?�?�?�4<�<�<�:7�7�7�7�7�7�"E�E�E�(7�7�7�E�E�E�"9�9�9�7�7�7�5�5�5�5�5r%rmc�H�|�t����|Sr4)�addTestrb)�loader�standard_tests�patterns   r#�
load_testsr	�s#�����/�1�1�2�2�2��r%�__main__)rr�r�rrr rn�	functoolsrIr�r r�r8r�rAr�operatorrrrrrr	r
rr�testr
�test.supportrrrrrr/rrrrrrrrr�rp�ImportErrorr�r��_loadsr3rlrPr�r�r�r-r�r��TestCaser,rer�r�r�r�r�r:rQrQrWr\r�r�rErIrKr�r�rNr�r�r�rrr�r�r�rr�rrrrr	rGrsr}r�r�r�r�r�r�r�r�r�rE�	TestSuiterbrkrBrmr	rK�mainrr%r#�<module>r	s�
����
�	�	�	�����
�
�
�
�������������
�
�
�
�	�	�	�	�
�
�
�
�
�
�
�
�	�	�	�	�
�
�
�
�����������C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�������J�J�J�J�J�J�J�J�J�J�J�J�"�"�"�"�%�%�%�%�%�%�%�%�������������������������������#�#�#�#�#�#�#�#�����������������I�I�I�����������f�m�,��C�C�$�u�V�%<�q�%@�A�A�C�C�C��
�s�>���f�5��9�9�9�9�9��$��r�2�r�
*�
��e�E�l�l���e�E�l�l��5)�5)�5)�5)�5)��"�5)�5)�5)�v � � � � �&� � � �&<�<�<�<�<�;�<�<�<�
E�E�E�E�E�$8�E�E�E������f����^/�^/�^/�^/�^/��"�^/�^/�^/�B{D�{D�{D�{D�{D�8�$�{D�{D�{D�B.7�.7�.7�.7�.7�.7�.7�.7�fs�s�s�s�s�+�X�->�s�s�s�r)�)�)�)�)�8�$�)�)�)�B�����4����z
;�z
;�z
;�z
;�z
;�&��(9�z
;�z
;�z
;�@�����x����N7�N7�N7�N7�N7�8�N7�N7�N7�b(
�
�
�
�
�<�
�
�
������4����G9�G9�G9�G9�G9�&��(9�G9�G9�G9�X]4�]4�]4�]4�]4�]4�]4�]4�BWE�WE�WE�WE�WE��:�x�'8�WE�WE�WE�xs
C�s
C�s
C�s
C�s
C�\�:�x�/@�s
C�s
C�s
C�n����y��|�|��	��1�	�	�	���y�q������i�Q������8�A�q�!�Q����

��!�R��Q�	�	��(�(�(�(�(��(�(�(�T�:�b�)�e�U�3�3���:�b�)�e�U�3�3���:�b�*�e�U�3�3���:�b�)�e�U�3�3���;�q�%��#�#���;�v�y�!�,�,��}�}�}�}�}�h�/�}�}�}�FEO�EO�EO�EO�EO�x� �EO�EO�EO�Z9�9�9�9�9�f�9�9�9�D1�1�1�1�1�'�1�1�1�f
�K��J���6�6���K��J���6�6���K��K���6�6�	��K��J���6�6��/�/�/�/�/�&�/�/�/�dOC�OC�OC�OC�OC�(�"3�OC�OC�OC�b�i��1�o�o�����
c�c�c�c�c�v�c�c�c�Lk�k�k�k�k�8�$�k�k�k�\
 �
 �
 �
 �
 �8�-�
 �
 �
 ������|��������d�"�$;�<�<�D5�D5�D5�D5�D5�x� �D5�D5�=�<�D5�N���
�z����H�M�O�O�O�O�O��s�B!�!B+�*B+