Your IP : 216.73.216.213


Current Path : /opt/alt/python311/lib64/python3.11/test/test_zoneinfo/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/test/test_zoneinfo/__pycache__/test_zoneinfo.cpython-311.pyc

�

�0�i�5��^�ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZmZmZmZmZddlmZddlmZddlmZddlmZmZm Z ddl!m"Z"e"d	��Z#ej$��\Z%Z&	ej'�'d
��dZ(n#ej'j)$rdZ(YnwxYwda*da+da,e
j-e.��j/d
zZ0e0dzZ1ed��Z2ed���Z3d�Z4d�Z5Gd�d��Z6Gd�d��Z7Gd�de6e ��Z8Gd�de8��Z9Gd�de7e8��Z:Gd�de7e9��Z;Gd�d e8��Z<Gd!�d"e<��Z=Gd#�d$e8��Z>Gd%�d&e>��Z?ej@e(d'��Gd(�d)e8����ZAej@e(d'��Gd*�d+eA����ZBGd,�d-e ��ZCGd.�d/eC��ZDGd0�d1e ��ZEGd2�d3eE��ZFGd4�d5e6e ��ZGGd6�d7eG��ZHGd8�d9e6e ��ZIGd:�d;eI��ZJGd<�d=e ��ZKGd>�d?eK��ZLGd@�dAe6e ��ZMGdB�dCeM��ZNGdD�dEe ��ZOGdF�dGeO��ZPGdH�dIejQ��ZRejSd�J��GdK�dL����ZTejSd�J��GdM�dN����ZUGdO�dP��ZVGdQ�dR��ZWeXdSkrejY��dSdS)T�)�annotationsN)�date�datetime�time�	timedelta�timezone)�cached_property)�MISSING_C_DOCSTRINGS)�_support)�OS_ENV_LOCK�TZPATH_TEST_LOCK�ZoneInfoTestBase)�
import_module�lzma�tzdataTF�datazzoneinfo_data.json���hoursc���tjtjd�����atttdz��atttdzd���adS)N�zoneinfo)�prefix�v2�v1T)r)	�pathlib�Path�tempfile�mkdtemp�TEMP_DIR�ZoneInfoData�
ZONEINFO_JSON�
ZONEINFO_DATA�ZONEINFO_DATA_V1���G/opt/alt/python311/lib64/python3.11/test/test_zoneinfo/test_zoneinfo.py�setUpModuler'-sS��
�|�H�,�J�?�?�?�@�@�H� ���4��@�@�M�#�M�8�d�?�t�L�L�L���r%c�8�tjt��dS�N)�shutil�rmtreerr$r%r&�tearDownModuler,7s��
�M�(�����r%c�N��eZdZdZed���Zed���Z�fd�Z�xZS)�TzPathUserMixinaH
    Adds a setUp() and tearDown() to make TZPATH manipulations thread-safe.

    Any tests that require manipulation of the TZPATH global are necessarily
    thread unsafe, so we will acquire a lock and reset the TZPATH variable
    to the default state before each test and release the lock after the test
    is through.
    c��dSr)r$��selfs r&�tzpathzTzPathUserMixin.tzpathE����tr%c��dS)NTr$r0s r&�block_tzdatazTzPathUserMixin.block_tzdataIr3r%c�j��tj��5}|�|�|j|jt�����|�|���j	��ddd��n#1swxYwYt�����dS)N)r5�lock)�
contextlib�	ExitStack�
enter_context�tzpath_contextr2r5r
�
addCleanup�pop_all�close�super�setUp�r1�stack�	__class__s  �r&r@zTzPathUserMixin.setUpMs����
�
!�
#�
#�	3�u�����#�#��K�!%�!2�)�$���
�
�
�
�O�O�E�M�M�O�O�1�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	���
�
�����s�A'B�B�B)	�__name__�
__module__�__qualname__�__doc__�propertyr2r5r@�
__classcell__�rCs@r&r.r.;sx�������������X������X����������r%r.c�>��eZdZdZGd�de��Z�fd�Z�xZS)�DatetimeSubclassMixinzP
    Replaces all ZoneTransition transition dates with a datetime subclass.
    c�$�eZdZed���ZdS)�&DatetimeSubclassMixin.DatetimeSubclassc��||j|j|j|j|j|j|j|j|j��	�	S)N)�tzinfo�fold)	�year�month�day�hour�minute�second�microsecondrPrQ)�cls�dts  r&�
from_datetimez4DatetimeSubclassMixin.DatetimeSubclass.from_datetimeasH���3����������	��	����y��W�
�
�
�

r%N)rDrErF�classmethodr[r$r%r&�DatetimeSubclassrN`s-������	�	�	�
��	�	�	r%r]c#���K�t���|��}|D]=}|j}|j�|��}tj||���}|V��>dS)N)�
transition)r?�load_transition_examplesr_r]r[�dataclasses�replace)r1�key�transition_examples�ztrZ�new_dt�new_ztrCs       �r&r`z.DatetimeSubclassMixin.load_transition_examplesosu�����#�g�g�>�>�s�C�C��%�	�	�B���B��*�8�8��<�<�F� �(���?�?�?�F��L�L�L�L�		�	r%)rDrErFrGrr]r`rIrJs@r&rLrL[sl���������
�
�
�
�
�8�
�
�
���������r%rLc���eZdZeZdZ�fd�Zed���Zed���Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�ZoneInfoTest�ZoneInfoc�z��t�����|j���dSr))r?r@�klass�clear_cache�r1rCs �r&r@zZoneInfoTest.setUp|s0���
���
�
����	
�
��� � � � � r%c��tSr)�r"r0s r&�
zoneinfo_datazZoneInfoTest.zoneinfo_data�����r%c��|jjgSr)�rqr2r0s r&r2zZoneInfoTest.tzpath�����"�)�*�*r%c�,�|�|��Sr)�rl�r1rcs  r&�
zone_from_keyzZoneInfoTest.zone_from_key�s���z�z�#���r%c�4�t���Sr))�ZoneDumpData�transition_keysr0s r&�zoneszZoneInfoTest.zones�s���+�+�-�-�-r%c�4�t���Sr))r{�fixed_offset_zonesr0s r&rzZoneInfoTest.fixed_offset_zones�s���.�.�0�0�0r%c�6�t�|��Sr))r{r`rxs  r&r`z%ZoneInfoTest.load_transition_examples�s���4�4�S�9�9�9r%c��|���D]g}|�|��5|�|��}|�t	|��|��ddd��n#1swxYwY�h|jjd}|j�|��}t|d��5}|�d|���5|j	�
|��}|�t	|��t|����ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rbz	Repr test)�	test_name�path)r}�subTestry�assertEqual�strrq�keys�
path_from_key�openrl�	from_file�repr)r1rc�zi�file_key�	file_path�f�zi_ffs       r&�test_strzZoneInfoTest.test_str�s����:�:�<�<�	/�	/�C����c�"�"�
/�
/��'�'��,�,��� � ��R���#�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/���%�*�1�-���&�4�4�X�>�>�	�
�)�T�
"�
"�	:�a�����)��D�D�
:�
:��
�,�,�Q�/�/��� � ��U���T�%�[�[�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:sH�9A1�1A5	�8A5	�9E�AD(�E�(D,	�,E�/D,	�0E�E�Ec���tt|�������}|�|��}|j}|�d���5|�t|��|��ddd��n#1swxYwY|jj	d}|j�
|��}t|d��5}|j�||���}ddd��n#1swxYwY|�d���5|�t|��|��ddd��n#1swxYwYt|d��5}|j�|��}ddd��n#1swxYwY|�d���5|�t|��|��ddd��dS#1swxYwYdS)Nzfrom key)�namerr��rczfrom file with keyzfrom file without key)
�next�iterr}rl�
class_namer��assertRegexr�rqr�r�r�r�)	r1rcr�r�r�r�r�r��zi_ff_nks	         r&�	test_reprzZoneInfoTest.test_repr�s����4��
�
���%�%�&�&��
�Z�Z��_�_���_�
�
�\�\�z�\�
*�
*�	3�	3����T�"�X�X�z�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��%�*�1�-���&�4�4�X�>�>�	�
�)�T�
"�
"�	:�a��J�(�(���(�9�9�E�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��\�\�3�\�
4�
4�	6�	6����T�%�[�[�*�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6��)�T�
"�
"�	/�a��z�+�+�A�.�.�H�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��\�\�6�\�
7�
7�	9�	9����T�(�^�^�Z�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9sZ�!$B�B�B�D�D�D�"$E�E�E�-F�F�F�5$G&�&G*�-G*c�2��tt��������}�fd�}d�j|fd�jj|fd|dff}|D]�\}}}||��}��|��5��|j|��ddd��n#1swxYwY��|�d���5��t��5d|_ddd��n#1swxYwYddd��n#1swxYwY��dS)Nc���t�j�|��d��5}�j�|��cddd��S#1swxYwYdS)Nr�)r�rqr�rlr�)rcr�r1s  �r&�from_file_nokeyz8ZoneInfoTest.test_key_attribute.<locals>.from_file_nokey�s�����d�(�6�6�s�;�;�T�B�B�
/�a��z�+�+�A�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�
/�
/s�A�A�AzPrimary constructor�no_cacher�z
: readonlyz
Some/Value)
r�r�r}rlr�r�r�rc�assertRaises�AttributeError)r1rcr��constructors�msg�constructor�expectedr�s`       r&�test_key_attributezZoneInfoTest.test_key_attribute�s�����4��
�
���%�%�&�&��	/�	/�	/�	/�	/�
#�D�J��4�
���,�c�2�
�/�4�0�
��+7�
	*�
	*�&�C��h���S�!�!�B����c�"�"�
3�
3�� � ����2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�����0�0�0�1�1�
*�
*��&�&�~�6�6�*�*�)�B�F�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��
	*�
	*sH�:B"�"B&	�)B&	�D� C4�(D�4C8�8D�;C8�<D�D	�D	c��gd�}|D]N}|�|jj��5|�|��ddd��n#1swxYwY�OdS)N)zEurasia/Badzone�BZQzAmerica.Los_Angelesu🇨🇦uAmerica/New�York)r��module�ZoneInfoNotFoundErrorrl�r1�bad_keys�bad_keys   r&�
test_bad_keyszZoneInfoTest.test_bad_keys�s���
�
�
�� �	$�	$�G��"�"�4�;�#D�E�E�
$�
$��
�
�7�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$��	$�	$s�A
�
A	�A	c��gd�}|D]I}|�t��5|�|��ddd��n#1swxYwY�JdS)N)z/America/Los_AngeleszAmerica/Los_Angeles/z../zoneinfo/America/Los_AngeleszAmerica/../America/Los_AngeleszAmerica/./Los_Angeles)r��
ValueErrorrlr�s   r&�test_bad_keys_pathsz ZoneInfoTest.test_bad_keys_paths�s���
�
�
�� �	$�	$�G��"�"�:�.�.�
$�
$��
�
�7�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$��	$�	$s�A�A		�A		c���ddg}|D]b}tj|��}|�t��5|j�|��ddd��n#1swxYwY�cdS)Nr%sAAAA3               )�io�BytesIOr�r�rlr�)r1�	bad_zones�bad_zone�fobjs    r&�test_bad_zoneszZoneInfoTest.test_bad_zones�s���� �
�	�
"�	+�	+�H��:�h�'�'�D��"�"�:�.�.�
+�
+��
�$�$�T�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+s�A�A"	�%A"	c�l�tt|�������}|�|��}t	dddt
j���tft	ddd��tftddd��tftd��tfdtfdtfg}|D]u\}}|�|���5|�|��5|�
|��ddd��n#1swxYwYddd��n#1swxYwY�vdS)N��r�rPrz
2019-01-01)�val)r�r�r}ryrr�utcr�r�	TypeErrorrr�r��fromutc)r1rc�zone�
bad_valuesr��exc_types      r&�test_fromutc_errorsz ZoneInfoTest.test_fromutc_errors�s����4��
�
���%�%�&�&���!�!�#�&�&���d�A�q���
6�
6�
6�
�C�
�d�A�q�
!�
!�:�.�
�$��1�
�
�y�)�
�!�W�W�i� �
�	�N�
�9�%�

�
�(�	&�	&�M�C�����#��&�&�
&�
&��&�&�x�0�0�&�&��L�L��%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	&�	&s6�D(�/D�D(�D�D(�D�D(�(D,	�/D,	c�Z�|�d��}tddd|���}|�|���t��|�|���t��|�|���d��dS)N�UTC��rr�)rlrr��	utcoffset�ZERO�dst�tzname)r1r�rZs   r&�test_utczZoneInfoTest.test_utcs���
�Z�Z��
�
��
�d�A�q��
,�
,�
,�����������.�.�.���������4�(�(�(���������e�,�,�,�,�,r%c	��g}|���D]�}|�|��D]h}|�||jt	d���z
|jf��|�||jt	d���z|jf���i��|D]�\}}}|�|||���5|�|��}|�	|���}|�
|���|j|��|�
|���|j|��|�
|�
��|j
|��ddd��n#1swxYwY��dS)N�)�days)rcrZ�offsetr�)r}r`�appendr_r�
offset_before�offset_afterr�ryrbr�r�r�r�)r1�
test_casesrc�zone_transitionrZr��tzis       r&�test_unambiguouszZoneInfoTest.test_unambiguouss����
��:�:�<�<�	�	�C�#'�#@�#@��#E�#E�
�
���!�!��'�2�Y�A�5F�5F�5F�F�'�5������!�!��'�2�Y�A�5F�5F�5F�F�'�4������
�" *�	;�	;�O�C��V����#�"�V��<�<�
;�
;��(�(��-�-���Z�Z�s�Z�+�+��� � ������f�m�R�@�@�@�� � �������1A�2�F�F�F�� � ������6�:�r�:�:�:�

;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��	;�	;s�8B6E:�:E>	�E>	c��g}|���D�]B}ggd�}|�|��D�]�}|jr	|d}n|jr	|d}nd}�&|jtd���z
}|�|d|jf��|�|d|jf��|j}|�|d|jf��|�|d|jf��|jtd���z}|�|d|jf��|�|d|jf��|j	td���z
}|�|d|jf��|�|d|jf��|j	}|�|d|jf��|�|d|jf��|j	td���z}|�|d|jf��|�|d|jf�����|�
��D]\}}|�||f|f�����D|D]�\\}}}|�||���5|�|��}	|D]�\}}
}|�
|
|	���}|�|���|j|��|�|���|j|��|�|���|j|����	ddd��n#1swxYwY��dS)	N)�folds�gapsr�r�r��secondsr)rc�grp�rQrP)r}r`rQ�gap�
anomaly_startrr�r�r��anomaly_end�itemsr�ryrbr�r�r�r�)r1r�rc�testsre�
test_group�no_peephole_optrZr�r�rQr�s            r&�test_folds_and_gapsz ZoneInfoTest.test_folds_and_gaps5s����
��:�:�<�<�(	<�(	<�C� �"�-�-�E��3�3�C�8�8�#
<�#
<���7�	�!&�w��J�J��V��!&�v��J�J�
'+�O���%�	�!�(<�(<�(<�<���!�!�2�q�"�*:�";�<�<�<��!�!�2�q�"�*:�";�<�<�<��%���!�!�2�q�"�*:�";�<�<�<��!�!�2�q�"�/�":�;�;�;��%�	�!�(<�(<�(<�<���!�!�2�q�"�*:�";�<�<�<��!�!�2�q�"�/�":�;�;�;��^�i��&:�&:�&:�:���!�!�2�q�"�*:�";�<�<�<��!�!�2�q�"�/�":�;�;�;��^���!�!�2�q�"�/�":�;�;�;��!�!�2�q�"�/�":�;�;�;��^�i��&:�&:�&:�:���!�!�2�q�"�/�":�;�;�;��!�!�2�q�"�/�":�;�;�;�;�#(�;�;�=�=�
<�
<���Z��!�!�C��:�z�":�;�;�;�;�
<�",�		?�		?��J�S�#�����#�3��/�/�
?�
?��(�(��-�-��(-�?�?�$�B��f�����c��:�:�B��$�$�R�Y�Y�[�[�&�-��D�D�D��$�$�R�\�\�^�^�V�5E�r�J�J�J��$�$�R�V�V�X�X�v�z�2�>�>�>�>�?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?��		?�		?s�<CM	�	M
	�M
	c	�"�|���D]�}|�|��}|�|���5|�|��D]�}|js�
|j}|t
d���z
}|t
d���z}|�|��}|�|jd||f��|�|��}|�|jd||f����	ddd��n#1swxYwY��dS)Nr�rr�r)	r}ryr�r`rQ�transition_utcr�
astimezoner�)	r1rcr�re�dt_utc�
dt_before_utc�dt_after_utc�	dt_before�dt_afters	         r&�test_folds_from_utcz ZoneInfoTest.test_folds_from_utcls����:�:�<�<�	K�	K�C��#�#�C�(�(�B����#��&�&�

K�

K��7�7��<�<�K�K�B��7�!� ��.�F�$*�Y�q�-A�-A�-A�$A�M�#)�I�a�,@�,@�,@�#@�L� -� 8� 8�� <� <�I��$�$�Y�^�Q��F�8K�L�L�L�+�6�6�r�:�:�H��$�$�X�]�A��&�7I�J�J�J�J�K�

K�

K�

K�

K�

K�

K�

K�

K�

K�

K�

K����

K�

K�

K�

K��	K�	Ks�B4D�D	�
D	c���|���D]�}|�|��}tdddd|���}|�|���5|�|���d��|�|���d��|�|���d��ddd��n#1swxYwY��dS�N��ri��r�r�)r}ryrr��assertIsr�r�r�)r1rcr��ts    r&�test_time_variable_offsetz&ZoneInfoTest.test_time_variable_offset~s���:�:�<�<�	-�	-�C��#�#�C�(�(�B��R��Q��b�1�1�1�A����#��&�&�
-�
-��
�
�a�h�h�j�j�$�/�/�/��
�
�a�k�k�m�m�T�2�2�2��
�
�a�e�e�g�g�t�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��		-�	-s�A9C�C	�"C	c��|���D]�\}}|�|��}tdddd|���}|�|���5|�|���|j��|�|���|j��|�|���|j��ddd��n#1swxYwY��dSr�)rryrr�r�r�r�r�)r1rcr�r�r�s     r&�test_time_fixed_offsetz#ZoneInfoTest.test_time_fixed_offset�s!���2�2�4�4�	6�	6�K�C���#�#�C�(�(�B��R��Q��b�1�1�1�A����#��&�&�
6�
6�� � ������V�]�;�;�;�� � �������0@�A�A�A�� � ������&�*�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6s�BC-�-C1	�4C1	)rDrErF�py_zoneinfor�r�r@rHrqr2ryr}rr`r�r�r�r�r�r�r�r�r�r�r�r�r�rIrJs@r&ririxs{�������
�F��J�!�!�!�!�!�����X���+�+��X�+����.�.�.�1�1�1�:�:�:�:�:�:�"9�9�9�0*�*�*�2$�$�$�$�$�$�	+�	+�	+�&�&�&�$-�-�-�;�;�;�:5?�5?�5?�nK�K�K�$	-�	-�	-�	6�	6�	6�	6�	6�	6�	6r%ric��eZdZeZd�ZdS)�
CZoneInfoTestc��d�}ddg}d}|�|��}|�|��D];}|jr2|jjt
kr|j�|���}n�<dD]�}|r||��}n|}|�|���5|�	|��}|�
|jd��|�
|jd	��d
d
d
��n#1swxYwY��d
S)a:Test that fold isn't mutated when no change is necessary.

        The underlying C API is capable of mutating datetime objects, and
        may rely on the fact that addition of a datetime object returns a
        new datetime; this test ensures that the input datetime to fromutc
        is not mutated.
        c��Gd�dt|����}||j|j|j|j|j|j|j|j|j	��	�	S)Nc���eZdZ�fd�Z�xZS)�LCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclassc�p��|td��kr|St���|��S�Nr)rr?�__add__)r1�otherrCs  �r&rzTCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclass.__add__�s/����	�!���,�,�#�� �7�7�?�?�5�1�1�1r%)rDrErFrrIrJs@r&�SameAddSubclassr��s8�������2�2�2�2�2�2�2�2�2r%rr�)
�typerRrSrTrUrVrWrXrQrP)rZrs  r&�to_subclassz3CZoneInfoTest.test_fold_mutate.<locals>.to_subclass�sz��
2�
2�
2�
2�
2�$�r�(�(�
2�
2�
2�#�?����������	��	����W��y�
�
�
�

r%FT�
Europe/Londonr�)FT)�subclassrrN)ryr`rQr�r�r�r�rbr�r�r�)	r1rrrcr�re�examplerZ�
dt_fromutcs	         r&�test_fold_mutatezCZoneInfoTest.test_fold_mutate�si��	�	�	�(�4�=����
�
�
��
$�
$���/�/��4�4�	�	�B��w�
�2�?�4��<�<��+�3�3�2�3�>�>�����%�
	-�
	-�H��
� �[��)�)��������x��0�0�
-�
-��Z�Z��^�^�
�� � ���!�4�4�4�� � ���!�,�,�,�	
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��
	-�
	-s�AC2�2C6	�9C6	N)rDrErF�
c_zoneinfor�r
r$r%r&r�r��s(������
�F�0-�0-�0-�0-�0-r%r�c��eZdZdS)�ZoneInfoDatetimeSubclassTestN�rDrErFr$r%r&r
r
���������Dr%r
c��eZdZdS)�CZoneInfoDatetimeSubclassTestNrr$r%r&rr�rr%rc�4��eZdZe�fd���Zd�Z�xZS)�ZoneInfoSubclassTestc���t�����Gd�d|j��}d|_|j|_||_dS)Nc��eZdZdS)�3ZoneInfoSubclassTest.setUpClass.<locals>.ZISubclassNrr$r%r&�
ZISubclassr�s�������Dr%r)r?�
setUpClassrlr��parent_klass)rYrrCs  �r&rzZoneInfoSubclassTest.setUpClass�sc���
��������	�	�	�	�	���	�	�	�&����9�����	�	�	r%c���|�d��}|�d��}|�||��|�||j��|�||j��dS)Nr)rrl�assertIsNot�assertIsInstance)r1�base_obj�sub_objs   r&�test_subclass_own_cachez,ZoneInfoSubclassTest.test_subclass_own_cache�ss���$�$�_�5�5���*�*�_�-�-������7�+�+�+����h��(9�:�:�:����g�t�z�2�2�2�2�2r%)rDrErFr\rrrIrJs@r&rr�sQ�������������[��3�3�3�3�3�3�3r%rc��eZdZeZdS)�CZoneInfoSubclassTestN�rDrErFrr�r$r%r&r!r!��������
�F�F�Fr%r!c�*�eZdZed���Zd�ZdS)�ZoneInfoV1Testc��tSr))r#r0s r&rqzZoneInfoV1Test.zoneinfo_data�s���r%c#��K�tddd��}td���}||z
}||z}t�|��D]}||jcxkr|krn�|V��dS)N�r�r�)rrr{r`r_)r1rc�epoch�
max_offset_32�min_dt�max_dtres       r&r`z'ZoneInfoV1Test.load_transition_examples�s�������q�!�$�$��!�'�2�2�2�
���&����&���7�7��<�<�	�	�B����0�0�0�0�&�0�0�0�0�0������	�	r%N)rDrErFrHrqr`r$r%r&r%r%�s<������
� � ��X� �
�
�
�
�
r%r%c��eZdZeZdS)�CZoneInfoV1TestNr"r$r%r&r/r/�r#r%r/z4Skipping tzdata-specific tests: tzdata not installedc�D�eZdZdZed���Zed���Zd�ZdS)�TZDataTestsa5
    Runs all the ZoneInfoTest tests, but against the tzdata package

    NOTE: The ZoneDumpData has frozen test data, but tzdata will update, so
    some of the tests (particularly those related to the far future) may break
    in the event that the time zone policies in the relevant time zones change.
    c��gSr)r$r0s r&r2zTZDataTests.tzpaths���	r%c��dS)NFr$r0s r&r5zTZDataTests.block_tzdatas���ur%c�.�|�|���S)Nr�rwrxs  r&ryzTZDataTests.zone_from_keys���z�z�c�z�"�"�"r%N)rDrErFrGrHr2r5ryr$r%r&r1r1sc������������X������X��#�#�#�#�#r%r1c��eZdZeZdS)�CTZDataTestsNr"r$r%r&r6r6s�������F�F�Fr%r6c�D�eZdZeZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zdd
�ZdS)�
WeirdZoneTestc
��tdtddd�����}tdtd�����}ttddd	d
��||��g}d}|�||��}|j�|��}tddd	d|�
��}tdddd|�
��}||f||ffD]�\}	}
|�d|	���5|�|	�	��|
j	��|�|	�
��|
j
��|�|	���|
j��ddd��n#1swxYwY��tddd	d|�
��tddd	dddtj
�
��ftdddd|�
��tddddtj
�
��fg}|D]�\}}
|�d|���5|
�|��}|�||��|�tj
��}|�||
��ddd��n#1swxYwY��dS)N�LMT��r�)r�minutesr��STDr�[�	��STD6rr��
�local)r�rZ������r�)�
ZoneOffsetr�ZoneTransitionr�construct_zonerlr�r�r�r�r�r�rr�r�)r1r:r>�transitions�after�zfr��dt0�dt1rZr��dts�dt_localr��	dt_actual�
dt_utc_actuals                r&�test_one_transitionz!WeirdZoneTest.test_one_transition$s	������B��!J�!J�!J� J�K�K������!3�!3�!3� 3�4�4��
�8�D�!�Q��3�3�S�#�>�>�
����
�
 �
 ��e�
4�
4��
�Z�
!�
!�"�
%�
%���t�Q��1�R�0�0�0���t�Q��A�b�1�1�1����:��S�z�2�	7�	7�J�B�����7�r��2�2�
7�
7�� � ������f�m�<�<�<�� � �������1A�B�B�B�� � ������6�:�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7����q�!�Q�r�2�2�2���q�!�Q��A�h�l�C�C�C�
�
��q�!�R��3�3�3���q�!�R���=�=�=�
�	
��!$�	8�	8��H�f����9���:�:�
8�
8�"�-�-�b�1�1�	�� � ��H�5�5�5� (� 3� 3�H�L� A� A�
�� � ���7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8s&�!BE5�5E9	�<E9	�A!I2�2I6	�9I6	c	�&�tdtt��}ttddd��||��g}d}|�||��}|j�|��}tddd��tddd	��tddd��td
dd��tddd��g}|D]�}|�|�
��}|�|���5|�	|�
��|j
��|�	|���|j��|�	|���|j��ddd��n#1swxYwY��dS)N�DSTr(rzSTD0DST-1,0/0,J365/25�l�i�r@rHrFr��r��rZ)
rJ�ONE_HrKrrLrlr�rbr�r�r�r�r�)r1rXrMrNrOr�rRrZs        r&�test_one_zone_dstzWeirdZoneTest.test_one_zone_dstMs������u�-�-���8�D�!�Q�/�/��c�:�:�
��(��
�
 �
 ��e�
4�
4��
�Z�
!�
!�"�
%�
%��
�T�1�a� � ��T�1�b�!�!��T�1�a� � ��T�2�q�!�!��T�1�a� � �
���	4�	4�B����2��&�&�B������$�$�
4�
4�� � ������c�j�9�9�9�� � ��������?�?�?�� � ������3�7�3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4s�1BF�F		�F		c�~�tdtt��}tddtzt��}g}tdd��D]j}|�tt
|ddd��||����|�tt
|ddd��||�����kd	}|�||��}|j�	|��}t
d
dd��|ft
ddd��|ft
ddd��|ft
ddd��|fg}|D]�\}	}
|	�
|�
��}	|�|	���5|�|	�
��|
j
��|�|	���|
j��|�|	���|
j��ddd��n#1swxYwY��t!d|�
��}|�d��5|�|�
��d��|�|���d��|�|���d��ddd��dS#1swxYwYdS)Nr>rXr�����rZrr��i�rGi�r�r\rzTesting datetime.time)rJr]r��ranger�rKrrLrlr�rbr�r�r�r�r�rr�)r1r>rXrMrRrNrOr��casesrZr�r�s            r&�test_no_tz_strzWeirdZoneTest.test_no_tz_strgs�����t�,�,�����E�	�5�1�1�����$��%�%�	�	�D�����x��a��A�6�6��S�A�A�
�
�
�
����x��b�!�Q�7�7��c�B�B�
�
�
�
���
�
 �
 ��e�
4�
4��
�Z�
!�
!�"�
%�
%���d�A�q�
!�
!�3�'�
�d�A�q�
!�
!�3�'�
�d�B��
"�
"�C�(�
�d�A�q�
!�
!�3�'�	
�� �	7�	7�J�B�����2��&�&�B������$�$�
7�
7�� � ������f�m�<�<�<�� � �������1A�B�B�B�� � ������6�:�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��
��2�����
�\�\�1�
2�
2�	)�	)��M�M�!�(�(�*�*�d�+�+�+��M�M�!�+�+�-�-��.�.�.��M�M�!�%�%�'�'�4�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s&�&BG:�:G>	�G>	�,A9J2�2J6�9J6c��tdtt��tdtt��g}|D�]J}td||��g}d}|�||��}|j�|��}tddd��tddd��tddd��g}|D]�}|�|���}|�	||�	��5|�
|���|j��|�
|���|j��|�
|�
��|j
��ddd��n#1swxYwY�ϐ�LdS)
Nr>rXrbrYrr(rar�)r�rZ)rJr�r]rKrLrlr�rrbr�r�r�r�r�)	r1�offsetsr�rMrNrOr�rRrZs	         r&�test_tz_before_onlyz!WeirdZoneTest.test_tz_before_only�s���
�u�d�D�)�)��u�e�U�+�+�
��
�	;�	;�F��t�V�V�4�4��K��E��$�$�[�%�8�8�B���%�%�b�)�)�B���q�!�$�$���q�!�$�$���q�!�$�$��C��
;�
;���Z�Z�r�Z�*�*���\�\��B�\�7�7�;�;��$�$�R�Y�Y�[�[�&�-�@�@�@��$�$�R�\�\�^�^�V�5E�F�F�F��$�$�R�V�V�X�X�v�z�:�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;��
;�#	;�	;s�#BE7�7E;�>E;c���|�gd��}|�t��5|j�|��ddd��dS#1swxYwYdS)Nrb)rLr�r�rlr�)r1rOs  r&�test_empty_zonezWeirdZoneTest.test_empty_zone�s���
�
 �
 ��R�
(�
(��
�
�
�z�
*�
*�	%�	%��J� � ��$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s�A�A� Ac��tdtd�����}tdt��}d||ftt	ddd��||��d||fg}d	}|�||��}|j�|d
���}tj|ftj	|ft	dd
d��|ft	ddd��|fg}|D]�\}}	|�
|���}
|�d|
|	���5|�|
�
��|	j
��|�|
���|	j��|�|
���|	j��ddd��n#1swxYwY��tjtjtd���zft	dd
dddd��t	ddd��ft	dd
ddddd��t	ddddddd��ft	dddddd��t	dddddd��ft	d dd��t	d dd��ftj	tj	fg}|D]z\}}
|�
|���}
|
�
t j���}|�|�|��|
��|�|
|���{dS)!a�Test when a transition is in the far past or future.

        Particularly, this is a concern if something:

            1. Attempts to call ``datetime.timestamp`` for a datetime outside
               of ``[datetime.min, datetime.max]``.
            2. Attempts to construct a timedelta outside of
               ``[timedelta.min, timedelta.max]``.

        This actually occurs "in the wild", as some time zones on Ubuntu (at
        least as of 2020) have an initial transition added at ``-2**58``.
        r:�8���r��GMTl�����xrl�GMT0�Africa/Abidjanr�iwrHr<r�r�r�)r�rZr�Ni�ij��+�4ik�;�?Br�rE�r()rJrr�rKrrLrlr��min�maxrbr�r�r�r�r�rr�r�)r1r:rmrMrNrOr��offset_cases�dt_naiver�rZ�	utc_cases�naive_dt�naive_dt_utcr�s               r&�test_zone_very_large_timestampz,WeirdZoneTest.test_zone_very_large_timestamp�s?����	�$� 7� 7� 7�8�8�����%�%����c�"��8�D�!�Q�/�/��c�:�:���S�!�
����
�
 �
 ��e�
4�
4��
�Z�
!�
!�"�*:�
!�
;�
;���\�3��
�\�3��
�d�B��
#�
#�S�)�
�d�A�q�
!�
!�3�'�	
��!-�	7�	7��H�f��!�!��!�,�,�B����8��6��B�B�
7�
7�� � ������f�m�<�<�<�� � �������1A�B�B�B�� � ������6�:�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7���\�8�<�)�C�*@�*@�*@�@�A�
�d�B��B��B�
/�
/��$��1�1E�1E�F���r�2�r�2�r�6�:�:���q�!�Q��A�v�6�6�
��d�A�q�!�R��
+�
+�X�d�A�q�!�R��-K�-K�L�
�d�A�q�
!�
!�8�D�!�Q�#7�#7�8�
�\�8�<�(�

�	�'0�	)�	)�"�H�l��!�!��!�,�,�B�!�)�)���)�>�>�F����V�.�.�r�2�2�B�7�7�7����R��(�(�(�(�	)�	)s�BF�F	�!F	c��tdtt��}ttddd��||��g}d}|�||��}|j�|d���}tddd|���}|�d��5|�|�	��|j	��|�|�
��|j
��|�|���|j��ddd��n#1swxYwYtd	|���}|�d
��5|�|�	��|j	��|�|�
��|j
��|�|���|j��ddd��dS#1swxYwYdS)Nr�r(r�UTC0r�r�r�zdatetime.datetimerz
datetime.time)
rJr�rKrrLrlr�r�r�r�r�r�r)r1r�rMrNrOr�rZr�s        r&�$test_fixed_offset_phantom_transitionz2WeirdZoneTest.test_fixed_offset_phantom_transition�s/�����d�+�+��%�h�t�Q��&:�&:�C��E�E�F����
�
 �
 ��e�
4�
4��
�Z�
!�
!�"�%�
!�
0�
0��
�d�A�q��
,�
,�
,��
�\�\�-�
.�
.�	0�	0����R�Y�Y�[�[�#�*�5�5�5����R�\�\�^�^�S�]�;�;�;����R�V�V�X�X�s�w�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�

��2�����
�\�\�/�
*�
*�	/�	/����Q�X�X�Z�Z���4�4�4����Q�[�[�]�]�C�M�:�:�:����Q�U�U�W�W�c�g�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s&�BD-�-D1�4D1�BG3�3G7�:G7NrZc��g}g}g}ggg}ggg}ggg}	d}
d}|
|g}d�}
tt|
|��d����}|D]�}|\}}}t|��D]�\}\}}||}||}|	|}|�||cxkr|ksn�2||vr|�|��||vr|�|��|�=|�|��|�|�|��������t|��}t|��}t|��}t
j��}d}tt|df����D�]�}||}||}|	|}||}t��}g}|D]�} t| j�
����}!t| j��}"t|��}#|�|!|"|#f��|| j�d��d	zz
}��t%|��}t|��}$t|��}%t|��}&|�d
��|�d|z��|�d��|�t)jd
||||%|$|&����|�t)jd|%�|��g|�R���|�t)jd|%�d�g|�R���|D]'}'|�t)jdg|'�R����(|�t%|����|�t)j|�d�g|�R���|�t)j|�d�g|�R���|�t)jd|�d�g|�R���|dkrR|�d��|�|�d����|�d�����|�d��|S)N)i�r))l����lc��t|t��r|S|jr't|j�����}nd}||j|jfSr))�
isinstance�tupler_�intr��	timestampr�r�)re�
trans_times  r&�zt_as_tuplez1WeirdZoneTest.construct_zone.<locals>.zt_as_tuplesZ��
�"�e�$�$�
��	��}�
"� ��!2�!<�!<�!>�!>�?�?�
�
�!�
��� 0�"�/�B�Br%c��|dSrr$)�xs r&�<lambda>z.WeirdZoneTest.construct_zone.<locals>.<lambda>,s
��!�A�$�r%r�)�l�qr��ascii��TZifs%d�               �>6l�>�Bz>lbb�br�r�
)�sorted�map�	enumerater��index�lenr�r�rcrx�	bytearrayr�r��
total_seconds�boolr�r��encode�bytes�write�struct�pack�seek)(r1rMrN�version�isutc�isstd�leap_seconds�offset_lists�trans_times_lists�trans_idx_lists�v1_range�v2_range�rangesr�rer�r�r��v�dt_min�dt_maxrg�trans_times�	trans_idx�isutcnt�isstdcnt�leapcnt�zonefile�
time_types�	time_type�abbrstr�ttinfosr��utcoff�isdst�abbrind�typecnt�timecnt�charcnt�ttinfos(                                        r&rLzWeirdZoneTest.construct_zones����������B�x����H���r�(��(��(���H�%��
	C�
	C�
	C��S��k�:�:���O�O�O���	B�	B�B�68�3�J�
�|�'0��'8�'8�
B�
B�#��#�F�F�&�q�/��/��2��+�A�.�	��)��j�2�2�2�2�F�2�2�2�2�� ��/�/��N�N�=�1�1�1��w�.�.��N�N�<�0�0�0��)��&�&�z�2�2�2��$�$�W�]�]�<�%@�%@�A�A�A��%
B�(�e�*�*���u�:�:���l�#�#���:�<�<���
��s�G�Q�<�(�(�)�)�3	(�3	(�A�"�1�o�G�+�A�.�K�'��*�I�"�1�
�I� �k�k�G��G�!�
C�
C���V�-�;�;�=�=�>�>���V�Z�(�(���g�,�,�������w�7�8�8�8��6�=�/�/��8�8�7�B�B����G�n�n�G��'�l�l�G��+�&�&�G��'�l�l�G�
�N�N�7�#�#�#��N�N�5�7�?�+�+�+��N�N�9�%�%�%��N�N����7�H�g�w�����
�
�
�
�N�N�6�;�'?�7�'?�I�'?�'?�N�+�N�N�N�O�O�O��N�N�6�;�~�7�~�~�~�B�	�B�B�B�C�C�C�!�
=�
=�����v�{�6�;�F�;�;�;�<�<�<�<��N�N�5��>�>�*�*�*�
�N�N�6�;�'�}�}�}�=�u�=�=�=�>�>�>��N�N�6�;�(�~�~�~�>��>�>�>�?�?�?��N�N�6�;�~�7�~�~�~�E��E�E�E�F�F�F��1�u�u����w�'�'�'����u�|�|�G�4�4�5�5�5����w�'�'�'���
�
�a�����r%)NrZ)
rDrErFr�r�rVr^rerhrjrr�rLr$r%r&r8r8!s�������
�F�'8�'8�'8�R4�4�4�4))�))�))�V";�";�";�H%�%�%�;)�;)�;)�z/�/�/�*t�t�t�t�t�tr%r8c��eZdZeZdS)�CWeirdZoneTestNr"r$r%r&r�r��r#r%r�c���eZdZeZdZdZdZe�fd���Z	ed���Z
d�Zd�Zd�Z
d	�Zd
�Zed���Z�xZS)�	TZStrTestrrr�c���t�����|���|���dSr))r?r�_populate_test_cases�populate_tzstr_header)rYrCs �r&rzTZStrTest.setUpClass�sC���
��������� � �"�"�"��!�!�#�#�#�#�#r%c���t��}td��D].}|dz
}|dz
}|dz
}|tjddddddd��z
}�/t	|��|_dS)Nr�r��3r�r�r)r�rcr�r�r��_tzif_header)rY�out�_s   r&r�zTZStrTest.populate_tzstr_header�sv���k�k��
�q���	8�	8�A��7�N�C��4�K�C��9��C�
�6�;�u�a��A�q�!�Q�7�7�7�C�C� ��:�:����r%c�f�tj|j��}|�dd��|�d��|�|�d����|�d��|�d��|j�||���S)z/Creates a zoneinfo file following a POSIX rule.rr�r�r�r�)r�r�r�r�r�r�rlr�)r1�tzstrr�s   r&�zone_from_tzstrzTZStrTest.zone_from_tzstr�s����:�d�/�0�0���
�
�a�����	���w�������u�|�|�G�,�,�-�-�-����w�����
�
�a�����z�#�#�H�%�#�8�8�8r%c�z�|j���D�]\}}|�|���5|�|��}ddd��n#1swxYwY|D]�\}}}|�|���}|�|||���5|�|���|j��|�|���|j��|�|���|j��ddd��n#1swxYwY�Ԑ�!dS)N�r�r�)r�rZr�)	r�r�r�r�rbr�r�r�r�)r1r�rdr�r{r�r�rZs        r&�test_tzstr_localizedzTZStrTest.test_tzstr_localized�s��� �O�1�1�3�3�
	;�
	;�L�E�5����E��*�*�
1�
1��)�)�%�0�0��
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�(-�
;�
;�#��&�!��%�%�R�%�0�0���\�\��"�V�\�D�D�;�;��$�$�R�Y�Y�[�[�&�-�@�@�@��$�$�R�\�\�^�^�V�5E�F�F�F��$�$�R�V�V�X�X�v�z�:�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;��
;�	
	;�
	;s$�A�A	�A	�BD-�-D1�4D1c���|j���D�]D\}}|�|���5|�|��}ddd��n#1swxYwY|D]�\}}}||jkr�||jz
�tj���}|�	|��}|�|���}	|�
||	��||jkr"|�
|j|j|��n|�
|jd��|	�	tj��}|�
||������FdS)Nr�r�r)
r�r�r�r��GAPr�rbrr�r�r��FOLDrQ)
r1r�rdr�r{r��dt_typer��dt_act�dt_exps
          r&�test_tzstr_from_utczTZStrTest.test_tzstr_from_utc�s��� �O�1�1�3�3�	1�	1�L�E�5����E��*�*�
1�
1��)�)�%�0�0��
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�.3�
1�
1�)��&�'��d�h�&�&��"�V�%5�5�>�>�#�<�?����
 �*�*�2�.�.��!�)�)��)�4�4��� � ���0�0�0��d�i�'�'��$�$�V�[�(�-��J�J�J�J��$�$�V�[�!�4�4�4� �*�*�8�<�8�8��� � ���0�0�0�0�-
1�		1�	1s�A�A	�A	c��gd�}|D]E}|�|���5|�|��ddd��n#1swxYwY�FdS)N)5�AAA24zAAA+24zAAA-24zAAA24BBB,J60/2,J300/2zAAA+24BBB,J60/2,J300/2zAAA-24BBB,J60/2,J300/2zAAA4BBB24,J60/2,J300/2zAAA4BBB+24,J60/2,J300/2zAAA4BBB-24,J60/2,J300/2zAAA4:00BBB,J60/2,J300/2zAAA4:59BBB,J60/2,J300/2zAAA4BBB5:00,J60/2,J300/2zAAA4BBB5:59,J60/2,J300/2zAAA4:00:00BBB,J60/2,J300/2zAAA4:00:59BBB,J60/2,J300/2zAAA4BBB5:00:00,J60/2,J300/2zAAA4BBB5:00:59,J60/2,J300/2zAAA24:59:59BBB5,J60/2,J300/2zAAA-24:59:59BBB5,J60/2,J300/2zAAA4BBB24:59:59,J60/2,J300/2zAAA4BBB-24:59:59,J60/2,J300/2zAAA4BBB,M12.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M12.1.1/2zAAA4BBB,M1.5.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M1.5.1/2zAAA4BBB,M1.1.6/2,M2.1.1/2zAAA4BBB,M1.1.1/2,M2.1.6/2zAAA4BBB,0/2,20/2zAAA4BBB,0/2,0/14zAAA4BBB,20/2,365/2zAAA4BBB,365/2,365/14zAAA4BBB,J1/2,J20/2zAAA4BBB,J1/2,J1/14zAAA4BBB,J20/2,J365/2zAAA4BBB,J365/2,J365/14zAAA4BBB,J60/167,J300/2zAAA4BBB,J60/+167,J300/2zAAA4BBB,J60/-167,J300/2zAAA4BBB,J60/2,J300/167zAAA4BBB,J60/2,J300/+167zAAA4BBB,J60/2,J300/-167zAAA4BBB,J60/2:00,J300/2zAAA4BBB,J60/2:59,J300/2zAAA4BBB,J60/2,J300/2:00zAAA4BBB,J60/2,J300/2:59zAAA4BBB,J60/2:00:00,J300/2zAAA4BBB,J60/2:00:59,J300/2zAAA4BBB,J60/2,J300/2:00:00zAAA4BBB,J60/2,J300/2:00:59zAAA4BBB,J60/167:59:59,J300/2zAAA4BBB,J60/-167:59:59,J300/2zAAA4BBB,J60/2,J300/167:59:59zAAA4BBB,J60/2,J300/-167:59:59r�)r�r�)r1�tzstrsr�s   r&�test_extreme_tzstrzTZStrTest.test_extreme_tzstr�s���C
�C
�C
��J�	,�	,�E����E��*�*�
,�
,��$�$�U�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,s�A�A	�A	c�,�gd�}|D]�}|�|���5tj|��}|�t|��5|�|��ddd��n#1swxYwYddd��n#1swxYwY��dS)N):�PST8PDT�+11zGMT,M3.2.0/2,M11.1.0/3zGMT0+11,M3.2.0/2,M11.1.0/3zPST8PDT,M3.2.0/2�AAA168zAAA+168zAAA-168zAAA168BBB,J60/2,J300/2zAAA+168BBB,J60/2,J300/2zAAA-168BBB,J60/2,J300/2zAAA4BBB168,J60/2,J300/2zAAA4BBB+168,J60/2,J300/2zAAA4BBB-168,J60/2,J300/2zAAA4:0BBB,J60/2,J300/2zAAA4:100BBB,J60/2,J300/2zAAA4BBB5:0,J60/2,J300/2zAAA4BBB5:100,J60/2,J300/2zAAA4:00:0BBB,J60/2,J300/2zAAA4:00:100BBB,J60/2,J300/2zAAA4BBB5:00:0,J60/2,J300/2zAAA4BBB5:00:100,J60/2,J300/2zAAA4BBB,M1443339,M11.1.0/3zAAA4BBB,M3.2.0/2,0349309483959czAAA4BBB,,J300/2zAAA4BBB,z,J300/2zAAA4BBB,J60/2,zAAA4BBB,J60/2,zzAAA4BBB,M13.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M13.1.1/2zAAA4BBB,M0.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M0.1.1/2zAAA4BBB,M1.6.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M1.6.1/2zAAA4BBB,M1.1.7/2,M2.1.1/2zAAA4BBB,M1.1.1/2,M2.1.7/2zAAA4BBB,-1/2,20/2zAAA4BBB,1/2,-1/2zAAA4BBB,367,20/2zAAA4BBB,1/2,367/2zAAA4BBB,J0/2,J20/2zAAA4BBB,J20/2,J366/2zAAA4BBB,J60/2/3,J300/2zAAA4BBB,J60/2,J300/2/3zAAA4BBB,J60/168,J300/2zAAA4BBB,J60/+168,J300/2zAAA4BBB,J60/-168,J300/2zAAA4BBB,J60/2,J300/168zAAA4BBB,J60/2,J300/+168zAAA4BBB,J60/2,J300/-168zAAA4BBB,J60/2:0,J300/2zAAA4BBB,J60/2:100,J300/2zAAA4BBB,J60/2,J300/2:0zAAA4BBB,J60/2,J300/2:100zAAA4BBB,J60/2:00:0,J300/2zAAA4BBB,J60/2:00:100,J300/2zAAA4BBB,J60/2,J300/2:00:0zAAA4BBB,J60/2,J300/2:00:100r�)r��re�escape�assertRaisesRegexr�r�)r1�invalid_tzstrs�
invalid_tzstr�tzstr_regexs    r&�test_invalid_tzstrzTZStrTest.test_invalid_tzstr*s,��H
�H
�H
��T,�	8�	8�M����M��2�2�
8�
8�!�i�
�6�6���+�+�J��D�D�8�8��(�(��7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�	
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8s5�0B�A1�%B�1A5�5B�8A5�9B�B	�B	c�������fd�}|j�|j�|j�i�|����fd���}|����fd���}|����fd���}|���fd���}|��fd���}|��fd���}|��fd���}|����fd	���}|����fd
���}|����fd���}�|_dS)Nc�t��t���}|��t���|ks
Jd���dS)z�Decorator to call the addition methods.

            This will call a function which adds at least one new entry into
            the `cases` dictionary. The decorator will also assert that
            something was added to the dictionary.
            z!Function did not add a test case!N)r�)r��prev_lenrds  �r&�callz,TZStrTest._populate_test_cases.<locals>.call�sA����5�z�z�H�
�A�C�C�C��u�:�:��(�(�(�*M�(�(�(�(�(r%c�n��d}tdtd���t��}tdtd���t��}t	ddd	��|�ft	ddd
dd��|�ft	ddd
dd
d
���|�ft	ddd
dd
d���|�ft	ddd
ddd
���|�ft	ddd
ddd���|�ft	ddd��|�ft	dddddd���|�ft	ddddd
d
���|�ft	ddddd
d���|�ft	ddddd��|�ft	ddddd
d
���|�ft	ddddd
d���|�ft	dddddd���|�ft	ddddd
d
���|�ft	ddddd
d���|�ff�|<dS)Nz EST5EDT,M3.2.0/4:00,M11.1.0/3:00�EST���r�EDT���r�rZr@rCrtrGr�rQrr�r�r�rw�rJrr�r]r)r�r�r�r�r��NORMALrds   ����r&�_addz,TZStrTest._populate_test_cases.<locals>._add�s'���7�E��U�I�B�$7�$7�$7��>�>�C��U�I�B�$7�$7�$7��?�?�C��$��1�%�%�s�F�3��$��2�q�"�-�-�s�F�;��$��2�q�!�!�4�4�4�c�3�?��$��2�q�!�!�4�4�4�c�3�?��$��2�q�!�!�4�4�4�c�3�?��$��2�q�!�!�4�4�4�c�3�?��$��A�&�&��V�4��$��A�q�"�1�5�5�5�s�F�C��$��A�q�!�!�4�4�4�c�4�@��$��A�q�!�!�4�4�4�c�4�@��$��1�a��,�,�c�6�:��$��1�a���3�3�3�S�#�>��$��1�a���3�3�3�S�#�>��$��A�q�"�1�5�5�5�s�F�C��$��A�q�!�!�4�4�4�c�4�@��$��A�q�!�!�4�4�4�c�4�@�!�E�%�L�L�Lr%c���d}tdtt��}tdtt��}tddd��|�ftddddd	��|�ftdddd
d��|�ftddd��|�ftddd
dd	d���|�ftddd
ddd���|�ftddd
d
dd���|�ftddddd	��|�ftdddd
d��|�ftddddd	d���|�ftdddddd���|�ftdddd
dd���|�ff�|<dS)Nz"GMT0BST-1,M3.5.0/1:00,M10.5.0/2:00rm�BSTr�rZ�r<rrtr�rC��rr�r����rJr�r]r)r�rmr�r�r�r�rds   ����r&r�z,TZStrTest._populate_test_cases.<locals>._add�s����9�E��U�D�$�/�/�C��U�E�5�1�1�C��$��2�&�&��V�4��$��2�q�"�-�-�s�F�;��$��2�q�!�,�,�c�6�:��$��B�'�'��f�5��$��B��2�A�6�6�6��V�D��$��B��1�1�5�5�5�s�C�@��$��B��1�1�5�5�5�s�C�@��$��2�q�"�-�-�s�F�;��$��2�q�!�,�,�c�6�:��$��B��2�A�6�6�6��V�D��$��B��1�1�5�5�5�s�D�A��$��B��1�1�5�5�5�s�F�C�
�E�%�L�L�Lr%c���d}tdtd���t��}tdtd���t��}t	ddd	��|�ft	ddd
dd��|�ft	ddd
ddd�
��|�ft	ddd
ddd�
��|�ft	ddd
ddd�
��|�ft	ddd
ddd�
��|�ft	ddd
ddd�
��|�ft	ddd
ddd�
��|�ft	ddd
ddd�
��|�ft	dddd��|�ft	ddd	dd��|�ft	ddd	ddd�
��|�ft	ddd	ddd�
��|�ft	ddd	dd��|�ff�|<dS)NzAEST-10AEDT,M10.1.0/2,M4.1.0/3�AESTrCr�AEDTr�r�rGr;rErrtr�r�rrZ�r�)r�rrr�r�r�rds   ����r&r�z,TZStrTest._populate_test_cases.<locals>._add�s����5�E��f�i�b�&9�&9�&9�4�@�@�D��f�i�b�&9�&9�&9�5�A�A�D��$��1�%�%�t�V�4��$��1�a��,�,�d�F�;��$��1�a��!�4�4�4�d�F�C��$��1�a���3�3�3�T�4�@��$��1�a���3�3�3�T�4�@��$��1�a���3�3�3�T�4�@��$��1�a���3�3�3�T�4�@��$��1�a���3�3�3�T�6�B��$��1�a���3�3�3�T�6�B��$��A�q�)�)�4��8��$��A�q�"�-�-�t�V�<��$��A�q�!�!�4�4�4�d�C�@��$��A�q�!�!�4�4�4�d�C�@��$��A�q�!�,�,�d�F�;��E�%�L�L�Lr%c���d}tdtt��}tdtt��}tddd��|�ftddddd	��|�ftdddd
d��|�ftddd��|�ftddd
dd	d���|�ftddd
ddd���|�ftddd
ddd���|�ftddd
d
dd���|�ftddddd	��|�ftdddd
d��|�ftddddd	d���|�ftdddddd���|�ftdddd
dd���|�ff
�|<dS)NzIST-1GMT0,M10.5.0,M3.5.0/1rm�ISTr�rZr�r<rrtr�rCr�r�rr�r�r�rr)r�rmrr�r�rds   ���r&r�z,TZStrTest._populate_test_cases.<locals>._add�s����1�E��U�D�5�&�1�1�C��U�E�4�0�0�C��$��2�&�&��V�4��$��2�q�"�-�-�s�F�;��$��2�q�!�,�,�c�6�:��$��B�'�'��f�5��$��B��2�A�6�6�6��V�D��$��B��1�1�5�5�5�s�D�A��$��B��1�1�5�5�5�s�D�A��$��B��1�1�5�5�5�s�F�C��$��2�q�"�-�-�s�F�;��$��2�q�!�,�,�c�6�:��$��B��2�A�6�6�6��V�D��$��B��1�1�5�5�5�s�D�A��$��B��1�1�5�5�5�s�F�C��E�%�L�L�Lr%c�t��d}tddd��tdtd������ff�|<dS)Nz<+11>-11r�rr�r�r)rrJr)r�r�rds ��r&r�z,TZStrTest._populate_test_cases.<locals>._addsJ����E��T�1�a�(�(��u�i�b�&9�&9�&9�:�:����E�%�L�L�Lr%c����d}tdtd�����}tdtd���t��}tddd	��|�ftdd
d	��|�ff�|<dS)Nz<-04>4<-03>,M9.1.6/24,M4.1.6/24�-04r�r�-03���r�rrr��rJrr]r)r��M04�M03r�rds   ��r&r�z,TZStrTest._populate_test_cases.<locals>._add
s}���6�E��U�I�B�$7�$7�$7�8�8�C��U�I�B�$7�$7�$7��?�?�C��$��1�%�%�s�F�3��$��A�&�&��V�4��E�%�L�L�Lr%c����d}tdtd���t��}tddd��|�ftddd��|�ftddd	d
ddd��|�ftd
dd��|�ftd
dd��|�ftd
dd��|�ftd
dd	d
ddd��|�ftddd��|�ftddd��|�ftddd	d
ddd��|�ff
�|<dS)NzEST5EDT,0/0,J365/25r�r�rr�rr;rHr<rqrtrur�rZi`	r
)r�r�r�rds  ��r&r�z,TZStrTest._populate_test_cases.<locals>._adds+���*�E��U�I�B�$7�$7�$7��?�?�C��$��1�%�%�s�F�3��$��1�%�%�s�F�3��$��B��B��F�;�;�S�&�I��$��1�%�%�s�F�3��$��1�%�%�s�F�3��$��1�%�%�s�F�3��$��B��B��F�;�;�S�&�I��$��1�%�%�s�F�3��$��1�%�%�s�F�3��$��B��B��F�;�;�S�&�I��E�%�L�L�Lr%c�6��d}tdtd�����}tdtd���t��}tddd��|�ftdd	d
��|�ftddddd
��|�ftddddd���|�ftddddd���|�ftdddd��|�ftddddd
��|�ftddddd���|�ftddddd���|�ftdddd��|�ftddddd
d
d��|�ftddd��|�ftdd	d��|�ftddddd
��|�ftddddd���|�ftddddd���|�ftdddd��|�ftddddd
��|�ftddddd���|�ftddddd���|�ftdddd��|�ftddddd
d
d��|�ff�|<dS)NzAAA3BBB,J60/12,J305/12�AAArr�BBB���r�rr��rZr�rtrHrr��
rCr<rqrur�r�r
�r�rrr�r�r�rds   ����r&r�z,TZStrTest._populate_test_cases.<locals>._add/s����-�E��U�I�B�$7�$7�$7�8�8�C��U�I�B�$7�$7�$7��?�?�C��$��1�%�%�s�F�3��$��2�&�&��V�4��$��1�b�"�-�-�s�F�;��$��1�b�q�1�1�1�3��<��$��1�b�q�1�1�1�3��<��$��1�b�)�)�3��7��$��A�r�2�.�.��V�<��$��A�r��2�2�2�C��>��$��A�r��2�2�2�C��>��$��A�r�*�*�C��8��$��B��B��F�;�;�S�&�I��$��1�%�%�s�F�3��$��2�&�&��V�4��$��1�b�"�-�-�s�F�;��$��1�b�q�1�1�1�3��<��$��1�b�q�1�1�1�3��<��$��1�b�)�)�3��7��$��A�r�2�.�.��V�<��$��A�r��2�2�2�C��>��$��A�r��2�2�2�C��>��$��A�r�*�*�C��8��$��B��B��F�;�;�S�&�I�-�E�%�L�L�Lr%c���d}tdtd�����}tdtd���t��}tddd	��|�ftddd
ddd��|�ftddd
d
d���|�ftddd
d
d���|�ftddd
d��|�ftdddd��|�ftdddd
d���|�ftdddd
d���|�ftdddd��|�ff	�|<dS)Nz <-03>3<-02>,M3.5.0/-2,M10.5.0/-1rrrz-02rr�rZr�r�rt�rr�rrqrC�r
)r��N03�N02r�r�r�rds   ����r&r�z,TZStrTest._populate_test_cases.<locals>._addPs?���7�E��U�I�B�$7�$7�$7�8�8�C��U�I�B�$7�$7�$7��?�?�C��$��2�&�&��V�4��$��2�r�2�r�2�2�C��@��$��2�r��2�2�2�C��=��$��2�r��2�2�2�C��=��$��2�r�*�*�C��8��$��B��+�+�S�&�9��$��B���3�3�3�S�$�?��$��B���3�3�3�S�$�?��$��B��+�+�S�&�9�
�E�%�L�L�Lr%c���d}tdtd�����}tdtd���t��}tddd	d
d��|�ftddd	d
dd�
��|�ftddd	d
dd
�
��|�ftddd	dd��|�ftdd	dd
ddd��|�ftdd	dd
ddd�
��|�ftdd	dd
ddd
�
��|�ftdd	dddd��|�ff�|<dS)Nz%AAA3BBB,M3.2.0/01:30,M11.1.0/02:15:45rrrrr��rZr�rrr�r�r�rGr��,ru�-r
rs   ����r&r�z,TZStrTest._populate_test_cases.<locals>._addgs?���<�E��U�I�B�$7�$7�$7�8�8�C��U�I�B�$7�$7�$7��?�?�C��$��2�q�!�,�,�c�6�:��$��2�q�"�1�5�5�5�s�C�@��$��2�q�"�1�5�5�5�s�C�@��$��2�q�"�-�-�s�F�;��$��A�q�"�b�&�9�9�3��G��$��A�q�"�b�q�9�9�9�3��E��$��A�q�"�b�q�9�9�9�3��E��$��A�q�"�b�1�1�3��?�	�E�%�L�L�Lr%)r�r�r�r�)rYr�r�r�r�r�rds   @@@@r&r�zTZStrTest._populate_test_cases}s1������		N�		N�		N�		N�		N�����x���g����	
�	�	�	�	�	�	�	�
��	�6
�	�	�	�	�	�	�	�
��	�.
�	�	�	�	�	�	�	�
��	�0
�	�	�	�	�	�	�
��	�.
�
	�
	�
	�
	�
	�
��
	�
�
	�
	�
	�
	�
	�
��
	�
�	�	�	�	�	�
��	�(
�	�	�	�	�	�	�	�
��	�@
�	�	�	�	�	�	�	�
��	�,
�	�	�	�	�	�	�	�
��	�$����r%)rDrErFr�r�r�r�r�r\rr�r�r�r�r�r�r�rIrJs@r&r�r��s��������
�F�
�F��D�
�C��$�$�$�$��[�$��&�&��[�&� 9�9�9�;�;�;�1�1�1�:H,�H,�H,�TQ8�Q8�Q8�f�|�|��[�|�|�|�|�|r%r�c��eZdZeZdS)�
CTZStrTestNr"r$r%r&r#r#}r#r%r#c�x��eZdZeZ�fd�Zed���Zed���Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Z�xZS)�ZoneInfoCacheTestc�z��|j���t�����dSr))rlrmr?r@rns �r&r@zZoneInfoCacheTest.setUp�s,����
��� � � �
���
�
�����r%c��tSr)rpr0s r&rqzZoneInfoCacheTest.zoneinfo_data�rrr%c��|jjgSr)rtr0s r&r2zZoneInfoCacheTest.tzpath�rur%c�~�|�|�d��|�d����dS)N�America/Los_Angeles)r�rlr0s r&�test_ephemeral_zonesz&ZoneInfoCacheTest.test_ephemeral_zones�sA���
�
��J�J�,�-�-�t�z�z�:O�/P�/P�	
�	
�	
�	
�	
r%c��|�d��}|�d��}|�||��dS)N�Australia/Sydney)rlr��r1�tz0�tz1s   r&�test_strong_refsz"ZoneInfoCacheTest.test_strong_refs�s@���j�j�+�,�,���j�j�+�,�,���
�
�c�3�����r%c��|�d��}|j�d��}|�||��dS)N�
Europe/Lisbon)rlr�rr.s   r&�
test_no_cachezZoneInfoCacheTest.test_no_cache�sD���j�j��)�)���j�!�!�/�2�2������c�"�"�"�"�"r%c���|�d��}|�g��5|�d��}ddd��n#1swxYwY|�||��dS)z�Test that the cache persists when tzpath has been changed.

        The PEP specifies that as long as a reference exists to one zone
        with a given key, the primary constructor must continue to return
        the same object.
        r*N)rlr;r�)r1�zi0�zi1s   r&�test_cache_reset_tzpathz)ZoneInfoCacheTest.test_cache_reset_tzpath�s����j�j�.�/�/��
�
 �
 ��
$�
$�	4�	4��*�*�2�3�3�C�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	
�
�
�c�3�����s�A
�
A�Ac��|�d��}|j�d���|�d��}|�||��dS)Nr*��	only_keys)rlrmr)r1�la0�la1s   r&�test_clear_cache_explicit_nonez0ZoneInfoCacheTest.test_clear_cache_explicit_none�s[���j�j�.�/�/���
�����.�.�.��j�j�.�/�/������c�"�"�"�"�"r%c�>�|�d��}|�d��}|j�dg���|�d��}|�d��}|�||��|�||��dS)z5Tests that you can clear a single key from the cache.r*�
Europe/Dublinr:N�rlrmrr�)r1r<�dub0r=�dub1s     r&�test_clear_cache_one_keyz*ZoneInfoCacheTest.test_clear_cache_one_key�s����j�j�.�/�/���z�z�/�*�*���
���*?�)@��A�A�A��j�j�.�/�/���z�z�/�*�*������c�"�"�"��
�
�d�D�!�!�!�!�!r%c��|�d��}|�d��}|�d��}|j�ddg���|�d��}|�d��}|�d��}|�||��|�||��|�||��dS)Nr*r@�
Asia/Tokyor:rA)r1r<rB�tok0r=rC�tok1s       r&�test_clear_cache_two_keysz+ZoneInfoCacheTest.test_clear_cache_two_keys�s����j�j�.�/�/���z�z�/�*�*���z�z�,�'�'���
���,�o�>�	�	
�	
�	
��j�j�.�/�/���z�z�/�*�*���z�z�,�'�'������c�"�"�"�����t�$�$�$��
�
�d�D�!�!�!�!�!r%)rDrErFr�r�r@rHrqr2r+r1r4r8r>rDrIrIrJs@r&r%r%�s��������
�F����������X���+�+��X�+�
�
�
�
 � � �#�#�#� � � �#�#�#�"�"�"�"�"�"�"�"�"�"r%r%c��eZdZeZdS)�CZoneInfoCacheTestNr"r$r%r&rKrK�r#r%rKc�l��eZdZeZ�fd�Zed���Zed���Zd�Z	d�Z
d�Zd�Zd�Z
�xZS)	�ZoneInfoPickleTestc���|j���tj��5}|�tj|j����|�|�	��j
��ddd��n#1swxYwYt�����dSr))
rlrmr8r9r:�test_support�set_zoneinfo_moduler�r<r=r>r?r@rAs  �r&r@zZoneInfoPickleTest.setUp�s�����
��� � � �
�
!�
#�
#�	3�u����� @��� M� M�N�N�N��O�O�E�M�M�O�O�1�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	���
�
�����s�AB�B�Bc��tSr)rpr0s r&rqz ZoneInfoPickleTest.zoneinfo_data�rrr%c��|jjgSr)rtr0s r&r2zZoneInfoPickleTest.tzpath�rur%c�Z�ttjdz��D�]}|�|���5|�d��}tj||���}tj|��}|�d���5|�||��ddd��n#1swxYwYtj|��}|�d���5|�||��ddd��n#1swxYwYddd��n#1swxYwY��dS)Nr��protor@��protocolzIs non-pickled ZoneInfo��testzIs unpickled ZoneInfo)rc�pickle�HIGHEST_PROTOCOLr�rl�dumps�loadsr��r1rU�zi_in�pkl�zi_rt�zi_rt2s      r&�test_cache_hitz!ZoneInfoPickleTest.test_cache_hit�s����6�2�Q�6�7�7�	1�	1�E����E��*�*�

1�

1��
�
�?�3�3���l�5�5�9�9�9����S�)�)���\�\�'@�\�A�A�0�0��M�M�%��/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0� ��c�*�*���\�\�'>�\�?�?�1�1��M�M�%��0�0�0�1�1�1�1�1�1�1�1�1�1�1����1�1�1�1�

1�

1�

1�

1�

1�

1�

1�

1�

1�

1�

1����

1�

1�

1�

1��	1�	1sZ�AD�B/�#D�/B3�3D�6B3�7-D�$D�;D�D�D�D�D�D"	�%D"	c��ttjdz��D]�}|�|���5|�d��}tj||���}~|j���tj|��}tj|��}|�||��ddd��n#1swxYwY��dS)NrrTr@rV)	rcrZr[r�rlr\rmr]r�r^s      r&�test_cache_missz"ZoneInfoPickleTest.test_cache_miss�s���6�2�Q�6�7�7�
	-�
	-�E����E��*�*�	
-�	
-��
�
�?�3�3���l�5�5�9�9�9����
�&�&�(�(�(���S�)�)����c�*�*���
�
�e�V�,�,�,�	
-�	
-�	
-�	
-�	
-�	
-�	
-�	
-�	
-�	
-�	
-����	
-�	
-�	
-�	
-��
	-�
	-s�BC�C		�C		c��ttjdz��D�]j}|�|���5|j�d��}tj||���}tj|��}|�d���5|�||��ddd��n#1swxYwYtj|��}|�d���5|�||��ddd��n#1swxYwY|�d��}|�d���5|�||��ddd��n#1swxYwYddd��n#1swxYwY��ldS)	NrrTr@rVzNot the pickled objectrXzNot a second unpickled objectzNot a cached object)	rcrZr[r�rlr�r\r]r)r1rU�zi_no_cacher`rarb�zi_caches       r&r4z ZoneInfoPickleTest.test_no_cachesq���6�2�Q�6�7�7�	6�	6�E����E��*�*�
6�
6�"�j�1�1�/�B�B���l�;��?�?�?����S�)�)���\�\�'?�\�@�@�9�9��$�$�U�K�8�8�8�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9� ��c�*�*���\�\�'F�\�G�G�4�4��$�$�U�F�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4� �:�:�o�6�6���\�\�'<�\�=�=�6�6��$�$�U�H�5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��	6�	6s~�AE<�B4�(E<�4B8�8E<�;B8�<-E<�)D�E<�D�E<�D�.E<�E%�E<�%E)�)E<�,E)�-E<�<F	�F	c	�v�d}t|j�|��d��5}|j�|��}|�d��|j�||���}ddd��n#1swxYwY|df|dfg}|D]�\}}t
tjdz��D]~}|�	||���5|�
tj��5tj||�	��ddd��n#1swxYwYddd��n#1swxYwY���dS)
Nr@r�rr�zZoneInfo with keyzZoneInfo without keyr)r�rUrV)
r�rqr�rlr�r�rcrZr[r�r��
PicklingErrorr\)	r1rcr��zi_nokey�zi_keyr�r�r�rUs	         r&�test_from_filez!ZoneInfoPickleTest.test_from_files����
�$�$�2�2�3�7�7��
>�
>�	6�!��z�+�+�A�.�.�H�
�F�F�1�I�I�I��Z�)�)�!��)�5�5�F�		6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6��(�)�
�-�.�
�
�
(�	9�	9�M�B�	��v�6��:�;�;�
9�
9���\�\�I�U�\�C�C�9�9��*�*�6�+?�@�@�9�9���R�%�8�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�	9sH�AB�B�
B� D,�2D	�	D,�D
�D,�D
�D,�,D0�3D0c��ttjdz��D�]�}|�|���5d}|�|��}tj||���}tj|��}|�||��t|j	�
|��d��5}|j�||���}ddd��n#1swxYwYtj||���}tj|��}	|�||	��|�tj
��5tj||���ddd��n#1swxYwYtj||���}
tj|
��}|�||��ddd��n#1swxYwY���dS)NrrTr@rVr�r�)rcrZr[r�rlr\r]r�r�rqr�r�r�rj)r1rUrcr��pkl_0�zi_rt_0r�r��pkl_1�zi_rt_1�pkl_2�zi_rt_2s            r&�test_pickle_after_from_filez.ZoneInfoPickleTest.test_pickle_after_from_file.sb��
�6�2�Q�6�7�7�	+�	+�E����E��*�*�
+�
+�%���Z�Z��_�_����R�%�8�8�8�� �,�u�-�-���
�
�b�'�*�*�*��$�,�:�:�3�?�?��F�F�=�!� �J�0�0���0�<�<�E�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=���R�%�8�8�8�� �,�u�-�-���
�
�b�'�*�*�*��&�&�v�';�<�<�8�8��L���7�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8���R�%�8�8�8�� �,�u�-�-���
�
�b�'�*�*�*�)
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��	+�	+s\�BG�6C�G�C#�#G�&C#�'A"G�	E,� G�,E0�0G�3E0�4AG�G	�
G	)rDrErFr�r�r@rHrqr2rcrer4rmrurIrJs@r&rMrM�s��������
�F����������X���+�+��X�+�1�1�1�-�-�-�6�6�6�&9�9�9�&+�+�+�+�+�+�+r%rMc��eZdZeZdS)�CZoneInfoPickleTestNr"r$r%r&rwrwKr#r%rwc�8�eZdZdZeZed���Zd�Zd�Z	dS)�CallingConventionTestz8Tests for functions with restricted calling conventions.c��tSr)rpr0s r&rqz#CallingConventionTest.zoneinfo_dataTrrr%c�"�t|j�d��d��5}|�t��5|j�|���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�r�)r�)r�rqr�r�r�rlr�)r1r�s  r&rmz$CallingConventionTest.test_from_fileXs��
�$�$�2�2�5�9�9�4�
@�
@�	-�A��"�"�9�-�-�
-�
-��
�$�$�!�$�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s5�B�A,� B�,A0	�0B�3A0	�4B�B�Bc��|�t��5|j�dg��ddd��dS#1swxYwYdS�Nr�)r�r�rlrmr0s r&�test_clear_cachez&CallingConventionTest.test_clear_cache]s���
�
�
�y�
)�
)�	,�	,��J�"�"�E�7�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�A�A�AN)
rDrErFrGr�r�rHrqrmr~r$r%r&ryryOsV������B�B�
�F�
����X��-�-�-�
,�,�,�,�,r%ryc��eZdZeZdS)�CCallingConventionTestNr"r$r%r&r�r�br#r%r�c�f�eZdZeZeejd�����Zd�Z	d�Z
d�Zd�Zd�Z
d�ZdS)	�
TzPathTestc#�rK�d}t��}|}	t5tj�|d��}|tj|<dV�ddd��n#1swxYwY||urdS|�tj|=dS|tj|<dS#||urn|�tj|=n|tj|<wxYw)N�PYTHONTZPATH)�objectr�os�environ�get)�value�path_var�unset_env_sentinel�old_envs    r&�python_tzpath_contextz TzPathTest.python_tzpath_contextis ����"��#�X�X��$��	/��
�
��*�.�.��4�8�8��',��
�8�$�����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�,�,�,������J�x�(�(�(�'.��
�8�$�$�$���,�,�,�����J�x�(�(�'.��
�8�$�.�.�.�.s.�B�4A�B�A!�!B�$A!�%B�&B6c�z�dgfddgfdtj�d�ddgfg}|D]�\}}|�|��5|�|���5|j���|jj}|�||��ddd��n#1swxYwYddd��n#1swxYwY��dS)z<Tests that the environment variable works with reset_tzpath.rbz
/etc/zoneinfo�/a/b/cz/d/e/f�r2N)r��pathsepr�r�r��reset_tzpath�TZPATH�assertSequenceEqual)r1�	new_paths�new_path_var�expected_resultr2s     r&�test_env_variablezTzPathTest.test_env_variables�����H�
��/�0�
(�b�j�
(�
(�
(�8�X�*>�?�
�	�.7�	F�	F�)�L�/��+�+�L�9�9�
F�
F��\�\��\�6�6�F�F��K�,�,�.�.�.�!�[�/�F��,�,�V�_�E�E�E�F�F�F�F�F�F�F�F�F�F�F����F�F�F�F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��	F�	Fs5�B/�<B�B/�B�B/�B� B/�/B3	�6B3	c	�z�ddgddgddgddgddgddgg}|D�]"\}}tj�|��}|�|��5|�d	|�
��5|�|jj��5|j���ddd��n#1swxYwYddd��n#1swxYwY|jj	}|�d|�
��5|�
||��ddd��n#1swxYwYddd��n#1swxYwY��$dS)N��path/to/somewherer$��/usr/share/zoneinfor�)r���../relative/path�r�r��r�r��r�r�r��warning)r��filtered)r�r��joinr�r��assertWarnsr��InvalidTZPathWarningr�r�r�)r1r��input_paths�expected_pathsr�r2s      r&� test_env_variable_relative_pathsz+TzPathTest.test_env_variable_relative_paths�s���
#�R�(�=�(�
�#�B�'�<�(�
�8��<��
)�

�
�
�,,6�	E�	E�'�K���z���{�3�3�H��+�+�H�5�5�	
E�	
E��\�\�)�h�\�?�?�3�3��)�)�$�+�*J�K�K�3�3���0�0�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3���+���\�\�*�x�\�@�@�E�E��,�,�V�^�D�D�D�E�E�E�E�E�E�E�E�E�E�E����E�E�E�E�	
E�	
E�	
E�	
E�	
E�	
E�	
E�	
E�	
E�	
E�	
E����	
E�	
E�	
E�	
E��	E�	Es~�D.�) C�	B/	�#C�/B3
�3C�6B3
�7C�:D.�C
�
D.�
C
�&D.�4D�D.�D�D.�D�D.�.D2	�5D2	c�~�|j�dg���|�|jjd��dS)Nr���to)r�)r�r�r�r�r0s r&�test_reset_tzpath_kwargz"TzPathTest.test_reset_tzpath_kwarg�s>���� � �X�J� �/�/�/�� � ���!3�[�A�A�A�A�Ar%c��gd�}|D]}}|�|���5|�t��5|j�|���ddd��n#1swxYwYddd��n#1swxYwY�~dS)N)r�r�r�r�r�r�)r�r�)r�r�r�r�r�)r1r�r�s   r&� test_reset_tzpath_relative_pathsz+TzPathTest.test_reset_tzpath_relative_paths�s��
�
�
�
�&�	=�	=�K����+��6�6�
=�
=��&�&�z�2�2�=�=��K�,�,��,�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��	=�	=s4�A9�A"�A9�"A&�&A9�)A&�*A9�9A=	�A=	c��gd�}|D]|}|�|���5|�t��5|j�|��ddd��n#1swxYwYddd��n#1swxYwY�}dS)N)z!/etc/zoneinfo:/usr/share/zoneinfos!/etc/zoneinfo:/usr/share/zoneinfor)r�)r�r�r�r�r�)r1r��	bad_values   r&�test_tzpath_type_errorz!TzPathTest.test_tzpath_type_error�s��
�
�
�
�$�	8�	8�I����I��.�.�
8�
8��&�&�y�1�1�8�8��K�,�,�Y�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8s4�A8�A!�A8�!A%�%A8�(A%�)A8�8A<	�?A<	c�P�ddg}dg}|�|��5|jj}ddd��n#1swxYwY|�|��5|jj}ddd��n#1swxYwY|�||��|�||��dS)Nz/onez/twoz/three)r;r�r�r�)r1�tzpath_0�tzpath_1�query_0�query_1s     r&�test_tzpath_attributez TzPathTest.test_tzpath_attribute�s/���F�#���:��
�
 �
 ��
*�
*�	)�	)��k�(�G�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
 �
 ��
*�
*�	)�	)��k�(�G�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	
� � ��7�3�3�3�� � ��7�3�3�3�3�3s�
6�:�:�
A/�/A3�6A3N)rDrErFr�r��staticmethodr8�contextmanagerr�r�r�r�r�r�r�r$r%r&r�r�fs�������
�F����/�/����\�/�(
F�
F�
F�"E�"E�"E�HB�B�B�
=�=�=�
8�
8�
8�4�4�4�4�4r%r�c��eZdZeZdS)�CTzPathTestNr"r$r%r&r�r��r#r%r�c�n�eZdZeZed���Zed���Zd�Z	d�Z
d�Zd�Zd�Z
d�Zd	�Zd
�ZdS)�
TestModulec��tSr)rpr0s r&rqzTestModule.zoneinfo_data�rrr%c��|j�d��}t|d��5}|���cddd��S#1swxYwYdS)Nr�r�)rqr�r��read)r1�	zone_filer�s   r&�
_UTC_byteszTestModule._UTC_bytes�s����&�4�4�U�;�;�	�
�)�T�
"�
"�	�a��6�6�8�8�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac���tj�|��st|�d����|�dd��^}}|r4tjtj�||��d���tj�||��}t|d��5}|�|j	��ddd��dS#1swxYwYdS)z�Creates a valid TZif file at key under the zoneinfo root tz_root.

        tz_root must exist, but all folders below that will be created.
        z does not exist.�/rT)�exist_ok�wbN)
r�r��exists�FileNotFoundError�rsplit�makedirsr�r�r�r�)r1rc�tz_root�root_dir�tail�
zonefile_pathr�s       r&�
touch_zonezTestModule.touch_zone�s��
�w�~�~�g�&�&�	B�#�w�$@�$@�$@�A�A�A��*�*�S�!�,�,���4��	H��K�����W�h�7�7�$�G�G�G�G�����W�c�2�2�
�
�-��
&�
&�	%�!�
�G�G�D�O�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s�0C�C�Cc��|�t��5|jjddd��dS#1swxYwYdSr))r�r�r��NOATTRIBUTEr0s r&�test_getattr_errorzTestModule.test_getattr_errors���
�
�
�~�
.�
.�	$�	$��K�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�
5�9�9c��t|jj��}tt|j����}||z
}|�|��dS)z?dir(self.module) should at least contain everything in __all__.N)�setr��__all__�dir�assertFalse)r1�module_all_set�module_dir_set�
differences    r&�test_dir_contains_allz TestModule.test_dir_contains_allsO���T�[�0�1�1���S���-�-�.�.��#�n�4�
�����$�$�$�$�$r%c�x�t|j��}t|��}|�||��dS)z5Test that there are no duplicates in dir(self.module)N)r�r�r��assertCountEqual)r1�
module_dir�
module_uniques   r&�test_dir_uniquezTestModule.test_dir_unique
s8�����%�%�
��J���
����j�-�8�8�8�8�8r%c�P�|�|jjg��5|�|jj��|j���}t|jj��}||z}|�||��ddd��dS#1swxYwYdSr))	r;rqr2�
assertTruer�r��available_timezonesr�r�)r1�available_keys�
zoneinfo_keys�unions    r&�test_available_timezonesz#TestModule.test_available_timezoness���
�
 �
 �$�"4�";�!<�
=�
=�		3�		3��O�O�D�.�3�4�4�4�!�[�<�<�>�>�N��� 2� 7�8�8�M�"�N�2�E����]�E�2�2�2�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3����		3�		3�		3�		3�		3�		3s�A-B�B�"Bc�D�tj��5}|�d|��|�|g��5|j���}|�d|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NzMars/Olympus_Mons)r�TemporaryDirectoryr�r;r�r��assertIn)r1�tdr�s   r&�"test_available_timezones_weirdzonez-TestModule.test_available_timezones_weirdzone s>��
�
(�
*�
*�	C�b��O�O�/��4�4�4��$�$�b�T�*�*�
C�
C�!%��!@�!@�!B�!B���
�
�1�>�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�		C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs5�-B�0A=�1B�=B	�B�B	�B�B�Bc	��hd�}t|��}d�|D��}d�|D��}d|fd||zfd||zfd||z|zfg}tj��5}|D]�\}}tj�||��}	tj|	��|D]}
|�|
|	���|�|	g��5|�	|��5|j
���}|�||��ddd��n#1swxYwYddd��n#1swxYwY��	ddd��dS#1swxYwYdS)N>�Europe/Paris�America/Indiana/Indianapolisr�rFr�America/Santiagor-r*c��g|]}d|����S)zposix/r$��.0r�s  r&�
<listcomp>z5TestModule.test_folder_exclusions.<locals>.<listcomp>6���6�6�6�q�l�q�l�l�6�6�6r%c��g|]}d|����S)zright/r$r�s  r&r�z5TestModule.test_folder_exclusions.<locals>.<listcomp>7r�r%�	base_tree�base_and_posix�base_and_right�	all_trees)
�listrr�r�r�r��mkdirr�r;r�r�r�r�)r1r�r��
posix_tree�
right_treerdr��	case_name�treer�rc�actuals            r&�test_folder_exclusionsz!TestModule.test_folder_exclusions)sT��	
�	
�	
����N�N�	�6�6�I�6�6�6�
�6�6�I�6�6�6�
��)�$�
�y�:�5�6�
�y�:�5�6�
�)�j�0�:�=�>�	
���
(�
*�
*�	;�b�#(�

;�

;��	�4��'�,�,�r�9�5�5�����!�!�!��2�2�C��O�O�C��1�1�1�1��(�(�'��3�3�;�;����i�0�0�;�;�!%��!@�!@�!B�!B���(�(���:�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;��

;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s[�A-E	�D/�0D	�D/�D
�D/�D
� D/�#E	�/D3�3E	�6D3�7E	�	E
�E
c�|�ddh}t|��dgz}tj��5}|D]}|�||���|�|g��5|j���}|�||��ddd��n#1swxYwYddd��dS#1swxYwYdS)NzAmerica/New_Yorkr�
posixrules)r�rr�r�r;r�r�r�)r1r�rr�rcrs      r&�test_exclude_posixrulesz"TestModule.test_exclude_posixrulesMsM����
��
�H�~�~���.��
�
(�
*�
*�	3�b��
)�
)������R�(�(�(�(��$�$�b�T�*�*�
3�
3���8�8�:�:��� � ���2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�		3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s5�2B1�0B�
B1�B	�B1� B	�!B1�1B5�8B5N)rDrErFr�r�rHrqr	r�r�r�r�r�r�r�rrr$r%r&r�r��s�������
�F�
����X������_��
%�%�%� $�$�$�%�%�%�9�9�9�
3�
3�
3�C�C�C�";�";�";�H3�3�3�3�3r%r�c��eZdZeZdS)�CTestModuleNr"r$r%r&r	r	^r#r%r	c��eZdZdZd�Zd�ZdS)�ExtensionBuiltTesta�Smoke test to ensure that the C and Python extensions are both tested.

    Because the intention is for the Python and C versions of ZoneInfo to
    behave identically, these tests necessarily rely on implementation details,
    so the tests may need to be adjusted if the implementations change. Do not
    rely on these tests as an indication of stable properties of these classes.
    c��|�ttjd����|�tt
jd����dS)N�_weak_cache)r��hasattrrrjr�r�r0s r&�test_cache_locationz&ExtensionBuiltTest.test_cache_locationksJ��	
�����!4�m�D�D�E�E�E������ 4�m�D�D�E�E�E�E�Er%c���ddl}|�|�tj����|�|�tj����dSr)�gcr��
is_trackedr�rjr�r)r1rs  r&�test_gc_trackedz"ExtensionBuiltTest.test_gc_trackedqsW��	�	�	�	�����
�
�k�&:�;�;�<�<�<�������z�':�;�;�<�<�<�<�<r%N)rDrErFrGrrr$r%r&rrbs?��������F�F�F�=�=�=�=�=r%r)�frozenc�2�eZdZUded<ded<eZded<dS)rJr�r�rr�r�N)rDrErF�__annotations__r�r�r$r%r&rJrJzs8��������K�K�K������C������r%rJc��eZdZUded<ded<ded<ed���Zed���Zed���Zed	���Zed
���Z	ed���Z
dS)
rKrr_rJr�r�c�f�|j|jjz
�tj���S)Nr�)r_r�r�rbrr�r0s r&r�zZoneTransition.transition_utc�s2����$�"4�">�>�G�G��<�H�
�
�	
r%c�6�|jj|jjkS)zWhether this introduces a fold�r�r�r�r0s r&rQzZoneTransition.fold�����!�+�d�.?�.I�I�Ir%c�6�|jj|jjkS)zWhether this introduces a gaprr0s r&r�zZoneTransition.gap�rr%c�4�|jj|jjz
Sr))r�r�r�r0s r&�deltazZoneTransition.delta�s��� �*�T�-?�-I�I�Ir%c�<�|jr|j|jzS|jSr)�rQr_rr0s r&r�zZoneTransition.anomaly_start�s#���9�	#��?�T�Z�/�/��?�"r%c�<�|js|j|jzS|jSr)r r0s r&r�zZoneTransition.anomaly_end�s#���y�	#��?�T�Z�/�/��?�"r%N)rDrErFrrHr�rQr�rr�r�r$r%r&rKrK�s��������������������
�
�
��X�
�
�J�J��X�J��J�J��X�J��J�J��X�J��#�#��X�#��#�#��X�#�#�#r%rKc�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	r Fc�~�tj|��|_g|_||_|�|��dSr))rrr2r�r�_populate_tzpath)r1�source_jsonr2rs    r&�__init__zZoneInfoData.__init__�s;���l�6�*�*�����	�������k�*�*�*�*�*r%c��|j|zSr)r�rxs  r&r�zZoneInfoData.path_from_key�s���{�S� � r%c�:�t|d��5}tj|��}ddd��n#1swxYwY|d}|���D]�\}}|j�|��|�|��}|jr|�|��}n|}|�	|��}	|	j
�dd���t|	d��5}|�|��ddd��n#1swxYwY��dS)Nr�rT)r��parentsr�)
r��json�loadr�r�r��_decode_textr�_convert_to_v1r��parentr�r�)
r1r%r��
zoneinfo_dictrqrcr��raw_datar�destinations
          r&r$zZoneInfoData._populate_tzpath�s���
�+�t�
$�
$�	)�� �I�a�L�L�M�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�&�f�-�
�'�-�-�/�/�	�	�J�C���I���S�!�!�!��(�(��/�/�H��w�
 ��*�*�8�4�4������,�,�S�1�1�K���$�$�d�D�$�A�A�A��k�4�(�(�
�A�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s�2�6�6�-D�D	�D	c��d�ttj|����}t	j|��}t�|��S)Nr%)r�r�r�r��base64�	b85decoder�
decompress)r1�contentsr0�decodeds    r&r,zZoneInfoData._decode_text�sA���8�8�C��
�H�5�5�6�6���"�8�,�,�����w�'�'�'r%c�h�|dd�dks
Jd���t|dd���}d}|dz}|dks
Jd	���tjd
|||���\}}}}}	}
|dz|	dzz|
z|dzz|z|z}||z
}d
|d|�z}|||dz�dks
Jd���|S)NrrGr�zInvalid TZif data found!r�rr�z-Version 1 file found: no conversion necessaryr�r;rwsTZifz0Version 2 file not truncated at Version 2 header)r�r��unpack)
r1r6r��header_start�
header_endr�r�r�r�r�r��	file_sizer�s
             r&r-zZoneInfoData._convert_to_v1�s!����!��}��'�'�'�)C�'�'�'��h�q��s�m�$�$����!�B�&�
��!�|�|�|�L�|�|�|�@F�
��8�L��3�4�A
�A
�=���7�G�W�g�

�a�K���k�
��
���k�
��	
�
�
�	�	�Z��	��(�1�Y�;�"7�7��
�Y�)�a�-�0�1�W�<�<�<�=�
=�<�<��
r%N)F)rDrErFr&r�r$r,r-r$r%r&r r �sd������+�+�+�+�!�!�!����((�(�(�����r%r c��eZdZed���Zed���Zed���Zed���Zed���Zed���Z	dZ
dZdS)r{c�N�|������Sr))�
_get_zonedumpr��rYs r&r|zZoneDumpData.transition_keys�s ��� � �"�"�'�'�)�)�)r%c�6�|���|Sr))r@)rYrcs  r&r`z%ZoneDumpData.load_transition_examples�s��� � �"�"�3�'�'r%c�j�|js|���|j���Sr))�_FIXED_OFFSET_ZONES�_populate_fixed_offsetsr�rAs r&rzZoneDumpData.fixed_offset_zones�s4���&�	*��'�'�)�)�)��&�,�,�.�.�.r%c�F�|js|���|jSr))�_ZONEDUMP_DATA�_populate_zonedump_datarAs r&r@zZoneDumpData._get_zonedump�s(���!�	*��'�'�)�)�)��!�!r%c�J�dtdtt��i|_dSr})rJr�rDrAs r&rEz$ZoneDumpData._populate_fixed_offsetss%��
�:�e�T�4�0�0�#
����r%c��d�}d�}d�}d�}d�}d�}d�}d�}d	�}	d
�}
|��|��|��|��|��|��|��|��|	��|
��d�
|_dS)Nc��tdtd�����}tdt��}tt	ddd��||��gS)Nr:rlr�rmrnr�rJrr�rKr)r:rms  r&�_Africa_Abidjanz=ZoneDumpData._populate_zonedump_data.<locals>._Africa_Abidjan	sR���U�I�d�$;�$;�$;�<�<�C��U�D�)�)�C��x��a��3�3�S�#�>�>��
r%c
�`�tdtt��}tdtt��}tdtt��}tdtt��}tt	dddd��||��tt	dddd��||��tt	dd	d
d��||��tt	dddd��||��tt	d
ddd��||��tt	d
d	dd��||��gS)Nz+00z+01i�rZrr�rrr;�rCrr�r@)rJr�r]rKr)�P00_s�P01_d�P00_d�P01_ss    r&�_Africa_Casablancaz@ZoneDumpData._populate_zonedump_data.<locals>._Africa_Casablancas���u�d�D�1�1�E��u�e�U�3�3�E��u�d�U�F�3�3�E��u�e�T�2�2�E��x��a��Q�7�7���F�F��x��a��Q�7�7���F�F��x��a��Q�7�7���F�F��x��b�"�a�8�8�%��G�G��x��a��A�6�6��u�E�E��x��a��A�6�6��u�E�E�
�

r%c�2�tdtd���t��}tdtd���t��}tdtd���t��}td	td���t��}td
td���t��}t	tddd
ddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tddd d��||��t	tddd!d��||��gS)"Nr:i&���r��PSTi����r�PDTi�����PWT�PPTr?r�rIrHrEr�i~rZr<rCr�i�r@i�rwrArvr�i�ri�	rr;�rJrr�r]rKr)r:rVrWrXrYs     r&�_America_Los_AngeleszBZoneDumpData._populate_zonedump_data.<locals>._America_Los_Angeles#s����U�I�f�$=�$=�$=�t�D�D�C��U�I�B�$7�$7�$7��>�>�C��U�I�B�$7�$7�$7��?�?�C��U�I�B�$7�$7�$7��?�?�C��U�I�B�$7�$7�$7��?�?�C��x��b�"�b�!�Q�?�?��c�J�J��x��a��Q�7�7��c�B�B��x��a��Q�7�7��c�B�B��x��b�"�a�8�8�#�s�C�C��x��a��A�6�6��S�A�A��x��a��R�8�8�#�s�C�C��x��a��Q�7�7��c�B�B��x��a��A�6�6��S�A�A��x��b�!�Q�7�7��c�B�B��x��a��Q�7�7��c�B�B��x��b�!�Q�7�7��c�B�B��
r%c
� �tdtd���t��}tdtd���t��}tdtd���t��}tdtd���t��}td	td
���t��}t	tddd��||��t	td
dd��||��t	tddd��||��t	tddd��||��t	tddd��||��t	tddd��||��t	tddd��||��gS)Nr:i����r��SMTz-05i����r
i���ri���ibrivrC�|rEi�rZr�rHr[rGrwr@r�rZ)r:r]�N05�N04rs     r&�_America_Santiagoz?ZoneDumpData._populate_zonedump_data.<locals>._America_Santiago;sW���U�I�f�$=�$=�$=�t�D�D�C��U�I�f�$=�$=�$=�t�D�D�C��U�I�f�$=�$=�$=�t�D�D�C��U�I�f�$=�$=�$=�t�D�D�C��U�I�f�$=�$=�$=�u�E�E�C��x��a��3�3�S�#�>�>��x��a��4�4�c�3�?�?��x��a��3�3�S�#�>�>��x��a��4�4�c�3�?�?��x��b�"�5�5�s�C�@�@��x��a��3�3�S�#�>�>��x��a��3�3�S�#�>�>��
r%c
�T�tdtd���t��}tdtd���t��}t	tddd��||��t	tdd	d
d��||��t	tdd	d	d��||��gS)
N�JSTi�~r��JDT頌i�rr�r@rHri�rZ)rcrds  r&�_Asia_Tokyoz9ZoneDumpData._populate_zonedump_data.<locals>._Asia_TokyoLs����U�I�e�$<�$<�$<�d�C�C�C��U�I�e�$<�$<�$<�e�D�D�C��x��a��3�3�S�#�>�>��x��a��Q�7�7��c�B�B��x��a��A�6�6��S�A�A��
r%c��tdtd���t��}tdtd���t��}tdtd���t��}t	tdd	d
��||��t	tdd
d
dd
��||��t	tdd
dd	��||��t	tddd
d
��||��t	tdddd	��||��t	tddd
d
��||��t	tdddd	��||��gS)Nr:ičr�rreri��igr�r�}rrZrrrGrCrEr[rZ)r:rrs   r&�_Australia_Sydneyz?ZoneDumpData._populate_zonedump_data.<locals>._Australia_SydneyYs-���U�I�e�$<�$<�$<�d�C�C�C��f�i��&>�&>�&>��E�E�D��f�i��&>�&>�&>��F�F�D��x��a��3�3�S�$�?�?��x��a��A�q�9�9�4��F�F��x��a��Q�7�7��t�D�D��x��a��A�6�6��d�C�C��x��b�!�Q�7�7��t�D�D��x��a��A�6�6��d�C�C��x��b�!�Q�7�7��t�D�D��
r%c��tdtd���t��}tdtd���t��}tdtd���t��}tdtt��}td	tt��}tdtt��}tdtt��}t	td
ddd
��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��t	tdddd��||��gS)Nr:i$���r��DMTi���rirmr�iXrwr�rr^rrrCrrZrhrGi�r�r�i�	r�rZ)r:rk�IST_0�GMT_0r��GMT_1�IST_1s       r&�_Europe_Dublinz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Dublinhs����U�I�e�$<�$<�$<�d�C�C�C��U�I�e�$<�$<�$<�d�C�C�C��u�i��&=�&=�&=�u�E�E�E��u�d�D�1�1�E��U�E�5�1�1�C��u�d�U�F�3�3�E��u�e�T�2�2�E��x��a��A�6�6��S�A�A��x��a��Q�7�7��e�D�D��x��b�!�Q�7�7���F�F��x��a��A�6�6��s�C�C��x��a��Q�7�7���F�F��x��b�"�a�8�8�%��G�G��x��a��Q�7�7���F�F��x��b�"�a�8�8�%��G�G�	�	
r%c
�p�tdtt��}tdtt��}tdtt��}tdtd���t��}t	tddd	d
��||��t	tdddd
��||��t	tdddd
��||��t	tdddd��||��t	tdddd
��||��t	tdddd
��||��gS)N�WET�WEST�CET�CESTi r�i�rZr�rr@r�r�i�rr�r`r<rC)rJr�r]rrKr)rrrsrtrus    r&�_Europe_Lisbonz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Lisbon|s���U�D�$�/�/�C��f�e�U�3�3�D��U�E�4�0�0�C��f�i��&=�&=�&=�u�E�E�D��x��a��Q�7�7��d�C�C��x��a��Q�7�7��s�C�C��x��a��Q�7�7��d�C�C��x��a��Q�7�7��s�C�C��x��a��Q�7�7��d�C�C��x��b�"�a�8�8�$��D�D�
�
r%c��tdtd���t��}tdtt��}tdtt��}t	tddd��||��t	td	d
dd��||��t	td	dd
d��||��t	tdd
dd��||��t	tdddd��||��gS)Nr:i����r�rmr�i7rHri�rZr�rCr�r�i�r�rrZ)r:rmr�s   r&�_Europe_Londonz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_London�s����U�I�c�$:�$:�$:�D�A�A�C��U�D�$�/�/�C��U�E�5�1�1�C��x��b�!�4�4�c�3�?�?��x��a��Q�7�7��c�B�B��x��b�"�a�8�8�#�s�C�C��x��a��Q�7�7��c�B�B��x��b�"�a�8�8�#�s�C�C��
r%c	���tdtd���t��}tdtd���t��}tdtd���t��}tdtd	���t��}tt	d
dd��||��tt	dd
d��||��tt	ddd��||��gS)Nr:i�l��r�z-1040ij��z-10i`s��z+14i��imri�rCi�rHr<rL)r:�N1040�N10�P14s    r&�_Pacific_KiritimatizAZoneDumpData._populate_zonedump_data.<locals>._Pacific_Kiritimati�s����U�I�f�$=�$=�$=�t�D�D�C��w�	�&�(A�(A�(A�4�H�H�E��U�I�f�$=�$=�$=�t�D�D�C��U�I�e�$<�$<�$<�d�C�C�C��x��a��3�3�S�%�@�@��x��b�!�4�4�e�S�A�A��x��b�"�5�5�s�C�@�@�	�
r%)
rpzAfrica/Casablancar*r�r-rFr@r3rzPacific/Kiritimati)rG)rYrMrTr[rarfrirprvrxr}s           r&rHz$ZoneDumpData._populate_zonedump_datas ��	�	�	�	�	�	�$	�	�	�0	�	�	�"	�	�	�
	�
	�
	�	�	�	�(
	�
	�
	�	�	�	�	�	�	�.�o�/�/�!3�!3�!5�!5�#7�#7�#9�#9� 1� 1� 3� 3� 1� 1� 3� 3�%�+�-�-�+�^�-�-�+�^�-�-�+�^�-�-�"5�"5�"7�"7�
�
����r%N)rDrErFr\r|r`rr@rErHrGrDr$r%r&r{r{�s��������*�*��[�*��(�(��[�(��/�/��[�/��"�"��[�"�
�
�
��[�
�
�i
�i
��[�i
�V�N����r%r{�__main__)Z�
__future__rr3r8ra�importlib.metadata�	importlibr�r*r�rrZr�r*r�r�unittestrrrrr�	functoolsr	�test.supportr
�test.test_zoneinforrO�test.test_zoneinfo._supportrr
r�test.support.import_helperrr�get_modulesr�r�metadata�HAS_TZDATA_PKG�PackageNotFoundErrorr"r#rr�__file__r.�DATA_DIRr!r�r]r'r,r.rLrir�r
rrr!r%r/�skipIfr1r6r8r�r�r#r%rKrMrwryr�r�r�r�r	�TestCaser�	dataclassrJrKr r{rD�mainr$r%r&�<module>r�s6��"�"�"�"�"�"�
�
�
�
�������������	�	�	�	�����	�	�	�	�����
�
�
�
�	�	�	�	�
�
�
�
�
�
�
�
���������>�>�>�>�>�>�>�>�>�>�>�>�>�>�%�%�%�%�%�%�-�-�-�-�-�-�7�7�7�7�7�7�W�W�W�W�W�W�W�W�W�W�4�4�4�4�4�4��}�V����2�,�2�4�4���Z��
�����)�)�)��N�N����.�����N�N�N������
������7�<��!�!�(�6�1���/�/�
��y��|�|���	������M�M�M������������@��������:Z6�Z6�Z6�Z6�Z6�?�$4�Z6�Z6�Z6�z3-�3-�3-�3-�3-�L�3-�3-�3-�l	�	�	�	�	�#8�,�	�	�	�	�	�	�	�	�$9�=�	�	�	�3�3�3�3�3�<�3�3�3�*�����0���������\����$�����n���������N���#�#�#�#�#�,�#�#���#�*�����N��������;������a�a�a�a�a�$�a�a�a�H�����]����q�q�q�q�q� �q�q�q�h���������Q"�Q"�Q"�Q"�Q"��)9�Q"�Q"�Q"�h�����*����o+�o+�o+�o+�o+��*:�o+�o+�o+�d�����,����,�,�,�,�,�,�,�,�,�&�����2����v4�v4�v4�v4�v4��"2�v4�v4�v4�r�����*����x3�x3�x3�x3�x3�!�x3�x3�x3�v�����*����=�=�=�=�=��*�=�=�=�0���d�#�#�#��������$�#�����d�#�#�#�%#�%#�%#�%#�%#�%#�%#�$�#�%#�P>�>�>�>�>�>�>�>�BI�I�I�I�I�I�I�I�X�z����H�M�O�O�O�O�O��s�
B*�*B>�=B>