HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_zoneinfo/__pycache__/test_zoneinfo.cpython-311.opt-1.pyc
�

��Vcb,��R�ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZmZmZmZmZddlmZddlmZddlmZmZmZddlm Z e d��Z!ej"��\Z#Z$	ej%�%d	��d
Z&n#ej%j'$rdZ&YnwxYwda(da)da*e
j+e,��j-dzZ.e.d
zZ/ed��Z0ed���Z1d�Z2d�Z3Gd�d��Z4Gd�d��Z5Gd�de4e��Z6Gd�de6��Z7Gd�de5e6��Z8Gd�de5e7��Z9Gd�de6��Z:Gd �d!e:��Z;Gd"�d#e6��Z<Gd$�d%e<��Z=ej>e&d&��Gd'�d(e6����Z?ej>e&d&��Gd)�d*e?����Z@Gd+�d,e��ZAGd-�d.eA��ZBGd/�d0e��ZCGd1�d2eC��ZDGd3�d4e4e��ZEGd5�d6eE��ZFGd7�d8e4e��ZGGd9�d:eG��ZHGd;�d<e��ZIGd=�d>eI��ZJGd?�d@e4e��ZKGdA�dBeK��ZLGdC�dDe��ZMGdE�dFeM��ZNGdG�dHejO��ZPejQd
�I��GdJ�dK����ZRejQd
�I��GdL�dM����ZSGdN�dO��ZTGdP�dQ��ZUeVdRkrejW��dSdS)S�)�annotationsN)�date�datetime�time�	timedelta�timezone)�cached_property)�_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���4D:\Python311\Lib\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+6s��
�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.tzpathD����tr$c��dS)NTr#r/s r%�block_tzdatazTzPathUserMixin.block_tzdataHr2r$c�j��tj��5}|�|�|j|jt�����|�|���j	��ddd��n#1swxYwYt�����dS)N)r4�lock)�
contextlib�	ExitStack�
enter_context�tzpath_contextr1r4r�
addCleanup�pop_all�close�super�setUp�r0�stack�	__class__s  �r%r?zTzPathUserMixin.setUpLs����
�
!�
#�
#�	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__�propertyr1r4r?�
__classcell__�rBs@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�microsecondrOrP)�cls�dts  r%�
from_datetimez4DatetimeSubclassMixin.DatetimeSubclass.from_datetime`sH���3����������	��	����y��W�
�
�
�

r$N)rCrDrE�classmethodrZr#r$r%�DatetimeSubclassrM_s-������	�	�	�
��	�	�	r$r\c#���K�t���|��}|D]=}|j}|j�|��}tj||���}|V��>dS)N)�
transition)r>�load_transition_examplesr^r\rZ�dataclasses�replace)r0�key�transition_examples�ztrY�new_dt�new_ztrBs       �r%r_z.DatetimeSubclassMixin.load_transition_examplesnsu�����#�g�g�>�>�s�C�C��%�	�	�B���B��*�8�8��<�<�F� �(���?�?�?�F��L�L�L�L�		�	r$)rCrDrErFrr\r_rHrIs@r%rKrKZsl���������
�
�
�
�
�8�
�
�
���������r$rKc���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�r0rBs �r%r?zZoneInfoTest.setUp{s0���
���
�
����	
�
��� � � � � r$c��tSr(�r!r/s r%�
zoneinfo_datazZoneInfoTest.zoneinfo_data�����r$c��|jjgSr(�rpr1r/s r%r1zZoneInfoTest.tzpath�����"�)�*�*r$c�,�|�|��Sr(�rk�r0rbs  r%�
zone_from_keyzZoneInfoTest.zone_from_key�s���z�z�#���r$c�4�t���Sr()�ZoneDumpData�transition_keysr/s r%�zoneszZoneInfoTest.zones�s���+�+�-�-�-r$c�4�t���Sr()rz�fixed_offset_zonesr/s r%r~zZoneInfoTest.fixed_offset_zones�s���.�.�0�0�0r$c�6�t�|��Sr()rzr_rws  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|�subTestrx�assertEqual�strrp�keys�
path_from_key�openrk�	from_file�repr)r0rb�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��rbzfrom file with keyzfrom file without key)
�next�iterr|rk�
class_namer��assertRegexr�rpr�r�r�r�)	r0rbr�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�rpr�rkr�)rbr�r0s  �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|rkr�r�r�rb�assertRaises�AttributeError)r0rbr��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�ZoneInfoNotFoundErrorrk�r0�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��
ValueErrorrkr�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�rkr�)r0�	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�rOrz
2019-01-01)�val)r�r�r|rxrr�utcr�r�	TypeErrorrr�r��fromutc)r0rb�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�)rkrr��	utcoffset�ZERO�dst�tzname)r0r�rYs   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)rbrY�offsetr�)r|r_�appendr^r�
offset_before�offset_afterr�rxrar�r�r�r�)r0�
test_casesrb�zone_transitionrYr��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)rb�grp�rPrO)r|r_rP�gap�
anomaly_startrr�r�r��anomaly_end�itemsr�rxrar�r�r�r�)r0r�rb�testsrd�
test_group�no_peephole_optrYr�r�rPr�s            r%�test_folds_and_gapsz ZoneInfoTest.test_folds_and_gaps4s����
��:�:�<�<�(	<�(	<�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|rxr�r_rP�transition_utcr�
astimezoner�)	r0rbr�rd�dt_utc�
dt_before_utc�dt_after_utc�	dt_before�dt_afters	         r%�test_folds_from_utcz ZoneInfoTest.test_folds_from_utcks����:�:�<�<�	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|rxrr��assertIsr�r�r�)r0rbr��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�)r~rxrr�r�r�r�r�)r0rbr�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	)rCrDrE�py_zoneinfor�r�r?rGrpr1rxr|r~r_r�r�r�r�r�r�r�r�r�r�r�r�r�rHrIs@r%rhrhws{�������
�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$rhc��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__)r0�otherrBs  �r%rzTCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclass.__add__�s1����	�!���,�$�#�� �7�7�?�?�5�1�1�1r$)rCrDrErrHrIs@r%�SameAddSubclassr��s8�������2�2�2�2�2�2�2�2�2r$rr�)
�typerQrRrSrTrUrVrWrPrO)rYrs  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)rxr_rPr�r�r�r�rar�r�r�)	r0rrrbr�rd�examplerY�
dt_fromutcs	         r%�test_fold_mutatezCZoneInfoTest.test_fold_mutate�sk��	�	�	�(�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)rCrDrE�
c_zoneinfor�r	r#r$r%r�r��s(������
�F�0-�0-�0-�0-�0-r$r�c��eZdZdS)�ZoneInfoDatetimeSubclassTestN�rCrDrEr#r$r%rr���������Dr$rc��eZdZdS)�CZoneInfoDatetimeSubclassTestNr
r#r$r%rr�rr$rc�4��eZdZe�fd���Zd�Z�xZS)�ZoneInfoSubclassTestc���t�����Gd�d|j��}d|_|j|_||_dS)Nc��eZdZdS)�3ZoneInfoSubclassTest.setUpClass.<locals>.ZISubclassNr
r#r$r%�
ZISubclassr�s�������Dr$r)r>�
setUpClassrkr��parent_klass)rXrrBs  �r%rzZoneInfoSubclassTest.setUpClass�sc���
��������	�	�	�	�	���	�	�	�&����9�����	�	�	r$c���|�d��}|�d��}|�||��|�||j��|�||j��dS)Nr)rrk�assertIsNot�assertIsInstance)r0�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$)rCrDrEr[rrrHrIs@r%rr�sQ�������������[��3�3�3�3�3�3�3r$rc��eZdZeZdS)�CZoneInfoSubclassTestN�rCrDrEr
r�r#r$r%r r ��������
�F�F�Fr$r c�*�eZdZed���Zd�ZdS)�ZoneInfoV1Testc��tSr()r"r/s r%rpzZoneInfoV1Test.zoneinfo_data�s���r$c#��K�tddd��}td���}||z
}||z}t�|��D]}||jcxkr|krn�|V��dS)N�r�r�)rrrzr_r^)r0rb�epoch�
max_offset_32�min_dt�max_dtrds       r%r_z'ZoneInfoV1Test.load_transition_examples�s�������q�!�$�$��!�'�2�2�2�
���&����&���7�7��<�<�	�	�B����
�
�
�
�&�
�
�
�
�
������	�	r$N)rCrDrErGrpr_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#r/s r%r1zTZDataTests.tzpath
s���	r$c��dS)NFr#r/s r%r4zTZDataTests.block_tzdatas���ur$c�.�|�|���S)Nr�rvrws  r%rxzTZDataTests.zone_from_keys���z�z�c�z�"�"�"r$N)rCrDrErFrGr1r4rxr#r$r%r0r0sc������������X������X��#�#�#�#�#r$r0c��eZdZeZdS)�CTZDataTestsNr!r#r$r%r5r5s�������F�F�Fr$r5c�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�rY������r�)�
ZoneOffsetr�ZoneTransitionr�construct_zonerkr�r�r�r�r�r�rr�r�)r0r9r=�transitions�after�zfr��dt0�dt1rYr��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?rGrEr��r��rY)
rI�ONE_HrJrrKrkr�rar�r�r�r�r�)r0rWrLrMrNr�rQrYs        r%�test_one_zone_dstzWeirdZoneTest.test_one_zone_dstLs������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=rWr�����rYrr��i�rFi�r�r[rzTesting datetime.time)rIr\r��ranger�rJrrKrkr�rar�r�r�r�r�rr�)r0r=rWrLrQrMrNr��casesrYr�r�s            r%�test_no_tz_strzWeirdZoneTest.test_no_tz_strfs�����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=rWrarXrr'r`r�)r�rY)rIr�r\rJrKrkr�rrar�r�r�r�r�)	r0�offsetsr�rLrMrNr�rQrYs	         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)Nra)rKr�r�rkr�)r0rNs  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``.
        r9�8���r��GMTl�����xrl�GMT0�Africa/Abidjanr�iwrGr;r�r�r�)r�rYr�Ni�ij��+�4ik�;�?Br�rD�r')rIrr�rJrrKrkr��min�maxrar�r�r�r�r�rr�r�)r0r9rlrLrMrNr��offset_cases�dt_naiver�rY�	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)
rIr�rJrrKrkr�r�r�r�r�r�r)r0r�rLrMrNr�rYr�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�:G7NrYc��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�)rd�
trans_times  r%�zt_as_tuplez1WeirdZoneTest.construct_zone.<locals>.zt_as_tuplesZ��
�"�e�$�$�
��	��}�
"� ��!2�!<�!<�!>�!>�?�?�
�
�!�
��� 0�"�/�B�Br$c��|dSr�r#)�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�rbrw�	bytearrayr�r��
total_seconds�boolr�r��encode�bytes�write�struct�pack�seek)(r0rLrM�version�isutc�isstd�leap_seconds�offset_lists�trans_times_lists�trans_idx_lists�v1_range�v2_range�rangesr�rdr�r�r��v�dt_min�dt_maxrf�trans_times�	trans_idx�isutcnt�isstdcnt�leapcnt�zonefile�
time_types�	time_type�abbrstr�ttinfosr��utcoff�isdst�abbrind�typecnt�timecnt�charcnt�ttinfos(                                        r%rKzWeirdZoneTest.construct_zone
s����������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��N�N�=�1�1�1��w�.�1��N�N�<�0�0�0��B��&�&�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�
(����w�'�'�'����u�|�|�G�4�4�5�5�5����w�'�'�'���
�
�a�����r$)NrY)
rCrDrEr�r�rUr]rdrgrir~r�rKr#r$r%r7r7 s�������
�F�'8�'8�'8�R4�4�4�4))�))�))�V";�";�";�H%�%�%�;)�;)�;)�z/�/�/�*t�t�t�t�t�tr$r7c��eZdZeZdS)�CWeirdZoneTestNr!r#r$r%r�r��r"r$r�c���eZdZeZdZdZdZe�fd���Z	ed���Z
d�Zd�Zd�Z
d	�Zed
���Z�xZS)�	TZStrTestrrr�c���t�����|���|���dSr()r>r�_populate_test_cases�populate_tzstr_header)rXrBs �r%rzTZStrTest.setUpClass�sC���
��������� � �"�"�"��!�!�#�#�#�#�#r$c���t��}td��D].}|dz
}|dz
}|dz
}|tjddddddd��z
}�/t	|��|_dS)Nr�r��3r�r�r)r�rbr�r�r��_tzif_header)rX�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�rkr�)r0�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�rYr�)	r�r�r�r�rar�r�r�r�)r0r�rcr�rzr�r�rYs        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�rarr�r�r��FOLDrP)
r0r�rcr�rzr��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�'�5��$�$�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]�}|�|���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/2zSTD+25zSTD-25zSTD+374zSTD+374DST,M3.2.0/2,M11.1.0/3zSTD+23DST+25,M3.2.0/2,M11.1.0/3zSTD-23DST-25,M3.2.0/2,M11.1.0/3zAAA4BBB,M1443339,M11.1.0/3zAAA4BBB,M3.2.0/2,0349309483959czAAA4BBB,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/2r�)r��re�escape�assertRaisesRegexr�r�)r0�invalid_tzstrs�
invalid_tzstr�tzstr_regexs    r%�test_invalid_tzstrzTZStrTest.test_invalid_tzstr�s)��#
�#
�#
��J,�	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���}|��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.
            N)r�)r��prev_lenrcs  �r%�callz,TZStrTest._populate_test_cases.<locals>.calls����5�z�z�H�
�A�C�C�C�C�Cr$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�rYr?rBrsrFr�rPrr�r�r�rv�rIrr�r\r)r�r�r�r�r��NORMALrcs   ����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:00rl�BSTr�rY�r;rrsr�rB��rr�r����rIr�r\r)r�rlr�r�r�r�rcs   ����r%r�z,TZStrTest._populate_test_cases.<locals>._addGs����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�AESTrBr�AEDTr�r�rFr:rDrrsr�r�rrY�r�)r�r�r�r�r�r�rcs   ����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/1rl�ISTr�rYr�r;rrsr�rBr�r�rr�r�r�r�r�)r�rlrr�r�rcs   ���r%r�z,TZStrTest._populate_test_cases.<locals>._addxs����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)rrIr)r�r�rcs ��r%r�z,TZStrTest._populate_test_cases.<locals>._add�sJ����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�r�rr��rIrr\r)r��M04�M03r�rcs   ��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:rGr;rprsrtr�rYi`	r)r�r�r�rcs  ��r%r�z,TZStrTest._populate_test_cases.<locals>._add�s+���*�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�AAArr�BBB���r�rr��rYr�rsrGrr��
rBr;rprtr�r�r�r�rr
r�r�r�rcs   ����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/-1rrrz-02rr�rYr�r�rs�rr�rrprB�r)r��N03�N02r�r�r�rcs   ����r%r�z,TZStrTest._populate_test_cases.<locals>._add�s?���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:45rrrr
r��rYr�rrr�r�r�rFr��,rt�-rrs   ����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��$��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�)rXr�r�r�r�r�rcs   @@@@r%r�zTZStrTest._populate_test_cases
s1������		N�		N�		N�		N�		N�����x���g����	
�	�	�	�	�	�	�	�
��	�6
�	�	�	�	�	�	�	�
��	�.
�	�	�	�	�	�	�	�
��	�0
�	�	�	�	�	�	�
��	�.
�
	�
	�
	�
	�
	�
��
	�
�
	�
	�
	�
	�
	�
��
	�
�	�	�	�	�	�
��	�(
�	�	�	�	�	�	�	�
��	�@
�	�	�	�	�	�	�	�
��	�,
�	�	�	�	�	�	�	�
��	�$����r$)rCrDrEr�r�r�r�r�r[rr�r�r�r�r�r�rHrIs@r%r�r��s��������
�F�
�F��D�
�C��$�$�$�$��[�$��&�&��[�&� 9�9�9�;�;�;�1�1�1�:,8�,8�,8�\�|�|��[�|�|�|�|�|r$r�c��eZdZeZdS)�
CTZStrTestNr!r#r$r%rr
r"r$rc�x��eZdZeZ�fd�Zed���Zed���Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Z�xZS)�ZoneInfoCacheTestc�z��|j���t�����dSr()rkrlr>r?rms �r%r?zZoneInfoCacheTest.setUps,����
��� � � �
���
�
�����r$c��tSr(ror/s r%rpzZoneInfoCacheTest.zoneinfo_datarqr$c��|jjgSr(rsr/s r%r1zZoneInfoCacheTest.tzpathrtr$c�~�|�|�d��|�d����dS)N�America/Los_Angeles)r�rkr/s 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)rkr��r0�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)rkr�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)rkr:r�)r0�zi0�zi1s   r%�test_cache_reset_tzpathz)ZoneInfoCacheTest.test_cache_reset_tzpath2s����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)rkrlr)r0�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/Dublinr4N�rkrlrr�)r0r6�dub0r7�dub1s     r%�test_clear_cache_one_keyz*ZoneInfoCacheTest.test_clear_cache_one_keyFs����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/Tokyor4r;)r0r6r<�tok0r7r=�tok1s       r%�test_clear_cache_two_keysz+ZoneInfoCacheTest.test_clear_cache_two_keysSs����j�j�.�/�/���z�z�/�*�*���z�z�,�'�'���
���,�o�>�	�	
�	
�	
��j�j�.�/�/���z�z�/�*�*���z�z�,�'�'������c�"�"�"�����t�$�$�$��
�
�d�D�!�!�!�!�!r$)rCrDrEr�r�r?rGrpr1r%r+r.r2r8r>rCrHrIs@r%rrs��������
�F����������X���+�+��X�+�
�
�
�
 � � �#�#�#� � � �#�#�#�"�"�"�"�"�"�"�"�"�"r$rc��eZdZeZdS)�CZoneInfoCacheTestNr!r#r$r%rErEer"r$rEc�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()
rkrlr7r8r9�test_support�set_zoneinfo_moduler�r;r<r=r>r?r@s  �r%r?zZoneInfoPickleTest.setUpls�����
��� � � �
�
!�
#�
#�	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(ror/s r%rpz ZoneInfoPickleTest.zoneinfo_dataurqr$c��|jjgSr(rsr/s r%r1zZoneInfoPickleTest.tzpathyrtr$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)rb�pickle�HIGHEST_PROTOCOLr�rk�dumps�loadsr��r0rO�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)NrrNr:rP)	rbrTrUr�rkrVrlrWr�rXs      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)	NrrNr:rPzNot the pickled objectrRzNot a second unpickled objectzNot a cached object)	rbrTrUr�rkr�rVrWr)r0rO�zi_no_cacherZr[r\�zi_caches       r%r.z ZoneInfoPickleTest.test_no_cache�sq���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�rOrP)
r�rpr�rkr�r�rbrTrUr�r��
PicklingErrorrV)	r0rbr��zi_nokey�zi_keyr�r�r�rOs	         r%�test_from_filez!ZoneInfoPickleTest.test_from_file�s����
�$�$�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)NrrNr:rPr�r�)rbrTrUr�rkrVrWr�r�rpr�r�r�rd)r0rOrbr��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	)rCrDrEr�r�r?rGrpr1r]r_r.rgrorHrIs@r%rGrGis��������
�F����������X���+�+��X�+�1�1�1�-�-�-�6�6�6�&9�9�9�&+�+�+�+�+�+�+r$rGc��eZdZeZdS)�CZoneInfoPickleTestNr!r#r$r%rqrq�r"r$rqc�8�eZdZdZeZed���Zd�Zd�Z	dS)�CallingConventionTestz8Tests for functions with restricted calling conventions.c��tSr(ror/s r%rpz#CallingConventionTest.zoneinfo_data�rqr$c�"�t|j�d��d��5}|�t��5|j�|���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�r�)r�)r�rpr�r�r�rkr�)r0r�s  r%rgz$CallingConventionTest.test_from_file�s��
�$�$�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�rkrlr/s r%�test_clear_cachez&CallingConventionTest.test_clear_cache�s���
�
�
�y�
)�
)�	,�	,��J�"�"�E�7�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�A�A�AN)
rCrDrErFr�r�rGrprgrxr#r$r%rsrs�sV������B�B�
�F�
����X��-�-�-�
,�,�,�,�,r$rsc��eZdZeZdS)�CCallingConventionTestNr!r#r$r%rzrz�r"r$rzc�f�eZdZeZeejd�����Zd�Z	d�Z
d�Zd�Zd�Z
d�ZdS)	�
TzPathTestc#�<K�d}	t5tj�|d��}|tj|<dV�ddd��n#1swxYwY|�tj|=dS|tj|<dS#|�tj|=n|tj|<wxYw)N�PYTHONTZPATH)r�os�environ�get)�value�path_var�old_envs   r%�python_tzpath_contextz TzPathTest.python_tzpath_context�s�����"��		/��
�
��*�.�.��4�8�8��',��
�8�$�����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
/��J�x�(�(�(�'.��
�8�$�$�$���
/��J�x�(�(�'.��
�8�$�.�.�.�.s.�A:�4A
�A:�
A�A:�A�A:�:!Bc�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.raz
/etc/zoneinfo�/a/b/cz/d/e/f�r1N)r�pathsepr�r�r��reset_tzpath�TZPATH�assertSequenceEqual)r0�	new_paths�new_path_var�expected_resultr1s     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)rr��joinr�r��assertWarnsr��InvalidTZPathWarningr�r�r�)r0r��input_paths�expected_pathsr�r1s      r%� test_env_variable_relative_pathsz+TzPathTest.test_env_variable_relative_pathss���
#�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�r/s 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�)r0r�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�)r0r��	bad_values   r%�test_tzpath_type_errorz!TzPathTest.test_tzpath_type_errorNs��
�
�
�
�$�	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�)r0�tzpath_0�tzpath_1�query_0�query_1s     r%�test_tzpath_attributez TzPathTest.test_tzpath_attributeZs/���F�#���:��
�
 �
 ��
*�
*�	)�	)��k�(�G�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
 �
 ��
*�
*�	)�	)��k�(�G�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	
� � ��7�3�3�3�� � ��7�3�3�3�3�3s�
6�:�:�
A/�/A3�6A3N)rCrDrEr�r��staticmethodr7�contextmanagerr�r�r�r�r�r�r�r#r$r%r|r|�s�������
�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�hr"r$r�c�n�eZdZeZed���Zed���Zd�Z	d�Z
d�Zd�Zd�Z
d�Zd	�Zd
�ZdS)�
TestModulec��tSr(ror/s r%rpzTestModule.zoneinfo_dataorqr$c��|j�d��}t|d��5}|���cddd��S#1swxYwYdS)Nr�r�)rpr�r��read)r0�	zone_filer�s   r%�
_UTC_byteszTestModule._UTC_bytesss����&�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)
rr��exists�FileNotFoundError�rsplit�makedirsr�r�r�r�)r0rb�tz_root�root_dir�tail�
zonefile_pathr�s       r%�
touch_zonezTestModule.touch_zoneys��
�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��NOATTRIBUTEr/s r%�test_getattr_errorzTestModule.test_getattr_error�s���
�
�
�~�
.�
.�	$�	$��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)r0�module_all_set�module_dir_set�
differences    r%�test_dir_contains_allz TestModule.test_dir_contains_all�sO���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)r0�
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:rpr1�
assertTruer�r��available_timezonesr�r�)r0�available_keys�
zoneinfo_keys�unions    r%�test_available_timezonesz#TestModule.test_available_timezones�s���
�
 �
 �$�"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)r0�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�r@r�America/Santiagor'r$c��g|]}d|����S)zposix/r#��.0r�s  r%�
<listcomp>z5TestModule.test_folder_exclusions.<locals>.<listcomp>����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>�r�r$�	base_tree�base_and_posix�base_and_right�	all_trees)
�listrr�rr�r��mkdirr�r:r�r�r�r�)r0r�r��
posix_tree�
right_treercr��	case_name�treer�rb�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�)r0r�r�r�rbr�s      r%�test_exclude_posixrulesz"TestModule.test_exclude_posixrules�sM����
��
�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)rCrDrEr�r�rGrpr	r�r�r�r�r�r�r�r�r�r#r$r%r�r�ls�������
�F�
����X������_��
%�%�%� $�$�$�%�%�%�9�9�9�
3�
3�
3�C�C�C�";�";�";�H3�3�3�3�3r$r�c��eZdZeZdS)�CTestModuleNr!r#r$r%rr�r"r$rc��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��hasattrr
rir�r�r/s r%�test_cache_locationz&ExtensionBuiltTest.test_cache_location�sJ��	
�����!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�rir�r
)r0r	s  r%�test_gc_trackedz"ExtensionBuiltTest.test_gc_tracked�sW��	�	�	�	�����
�
�k�&:�;�;�<�<�<�������z�':�;�;�<�<�<�<�<r$N)rCrDrErFrrr#r$r%rr�s?��������F�F�F�=�=�=�=�=r$r)�frozenc�2�eZdZUded<ded<eZded<dS)rIr�r�rr�r�N)rCrDrE�__annotations__r�r�r#r$r%rIrIs8��������K�K�K������C������r$rIc��eZdZUded<ded<ded<ed���Zed���Zed���Zed	���Zed
���Z	ed���Z
dS)
rJrr^rIr�r�c�f�|j|jjz
�tj���S)Nr�)r^r�r�rarr�r/s r%r�zZoneTransition.transition_utcs2����$�"4�">�>�G�G��<�H�
�
�	
r$c�6�|jj|jjkS)zWhether this introduces a fold�r�r�r�r/s r%rPzZoneTransition.fold����!�+�d�.?�.I�I�Ir$c�6�|jj|jjkS)zWhether this introduces a gaprr/s r%r�zZoneTransition.gaprr$c�4�|jj|jjz
Sr()r�r�r�r/s r%�deltazZoneTransition.delta s��� �*�T�-?�-I�I�Ir$c�<�|jr|j|jzS|jSr(�rPr^rr/s r%r�zZoneTransition.anomaly_start$s#���9�	#��?�T�Z�/�/��?�"r$c�<�|js|j|jzS|jSr(rr/s r%r�zZoneTransition.anomaly_end+s#���y�	#��?�T�Z�/�/��?�"r$N)rCrDrErrGr�rPr�rr�r�r#r$r%rJrJ
s��������������������
�
�
��X�
�
�J�J��X�J��J�J��X�J��J�J��X�J��#�#��X�#��#�#��X�#�#�#r$rJc�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	rFc�~�tj|��|_g|_||_|�|��dSr()rrr1r�r�_populate_tzpath)r0�source_jsonr1rs    r%�__init__zZoneInfoData.__init__4s;���l�6�*�*�����	�������k�*�*�*�*�*r$c��|j|zSr(r�rws  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�)
r0rr��
zoneinfo_dictrprbr��raw_datar�destinations
          r%rzZoneInfoData._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)r0�contentsr(�decodeds    r%r$zZoneInfoData._decode_textQsA���8�8�C��
�H�5�5�6�6���"�8�,�,�����w�'�'�'r$c���t|dd���}d}|dz}tjd|||���\}}}}}	}
|dz|	dzz|
z|dzz|z|z}||z
}d|d|�z}|S)	NrFr��rr�r:rvsTZif)r�r��unpack)
r0r.r��header_start�
header_endr�r�r�r�r�r��	file_sizer�s
             r%r%zZoneInfoData._convert_to_v1Ws����h�q��s�m�$�$����!�B�&�
�@F�
��8�L��3�4�A
�A
�=���7�G�W�g�

�a�K���k�
��
���k�
��	
�
�
�	�	�Z��	��(�1�Y�;�"7�7���
r$N)F)rCrDrErr�rr$r%r#r$r%rr3sd������+�+�+�+�!�!�!����((�(�(�����r$rc��eZdZed���Zed���Zed���Zed���Zed���Zed���Z	dZ
dZdS)rzc�N�|������Sr()�
_get_zonedumpr��rXs r%r{zZoneDumpData.transition_keysus ��� � �"�"�'�'�)�)�)r$c�6�|���|Sr()r8)rXrbs  r%r_z%ZoneDumpData.load_transition_examplesys��� � �"�"�3�'�'r$c�j�|js|���|j���Sr()�_FIXED_OFFSET_ZONES�_populate_fixed_offsetsr�r9s r%r~zZoneDumpData.fixed_offset_zones}s4���&�	*��'�'�)�)�)��&�,�,�.�.�.r$c�F�|js|���|jSr()�_ZONEDUMP_DATA�_populate_zonedump_datar9s r%r8zZoneDumpData._get_zonedump�s(���!�	*��'�'�)�)�)��!�!r$c�J�dtdtt��i|_dSrw)rIr�r<r9s r%r=z$ZoneDumpData._populate_fixed_offsets�s%��
�:�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)Nr9rkr�rlrmr�rIrr�rJr)r9rls  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�rYr�r�r�rr:�rBrr�r?)rIr�r\rJr)�P00_s�P01_d�P00_d�P01_ss    r%�_Africa_Casablancaz@ZoneDumpData._populate_zonedump_data.<locals>._Africa_Casablanca�s���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)"Nr9i&���r��PSTi����r�PDTi�����PWT�PPTr>r�rHrGrDr�i~rYr;rBr�i�r?i�rvr@rur�i�ri�	rr:�rIrr�r\rJr)r9rNrOrPrQs     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)Nr9i����r��SMTz-05i����ri���ri���ibrivrB�|rDi�rYr�rGrZrFrvr?r�rR)r9rU�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�r�r�r?rGri�rR)r[r\s  r%�_Asia_Tokyoz9ZoneDumpData._populate_zonedump_data.<locals>._Asia_Tokyo�s����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)Nr9ičr�r�r]r�i��igr�r�}rrYr�rrFrBrDrZrR)r9r�r�s   r%�_Australia_Sydneyz?ZoneDumpData._populate_zonedump_data.<locals>._Australia_Sydney�s-���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)Nr9i$���r��DMTi���rirlr�iXrvr�rrVr�rrBrrYr`rFi�r�r�i�	r�rR)r9rc�IST_0�GMT_0r��GMT_1�IST_1s       r%�_Europe_Dublinz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Dublin�s����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�rYr�rr?r�r�i�rr�r_r;rB)rIr�r\rrJr)rjrkrlrms    r%�_Europe_Lisbonz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Lisbons���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)Nr9i����r�rlr�i7rGri�rYr�rBr�r�i�r�r�rR)r9rlr�s   r%�_Europe_Londonz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Londons����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)Nr9i�l��r�z-1040ij��z-10i`s��z+14i��imri�rBi�rGr;rD)r9�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$)
rozAfrica/Casablancar$r�r'r@r:r-rzPacific/Kiritimati)r?)rXrErLrSrYr^rarhrnrprus           r%r@z$ZoneDumpData._populate_zonedump_data�s ��	�	�	�	�	�	�$	�	�	�0	�	�	�"	�	�	�
	�
	�
	�	�	�	�(
	�
	�
	�	�	�	�	�	�	�.�o�/�/�!3�!3�!5�!5�#7�#7�#9�#9� 1� 1� 3� 3� 1� 1� 3� 3�%�+�-�-�+�^�-�-�+�^�-�-�+�^�-�-�"5�"5�"7�"7�
�
����r$N)rCrDrEr[r{r_r~r8r=r@r?r<r#r$r%rzrzts��������*�*��[�*��(�(��[�(��/�/��[�/��"�"��[�"�
�
�
��[�
�
�i
�i
��[�i
�V�N����r$rz�__main__)X�
__future__rr+r7r`�importlib.metadata�	importlibr�r"rrrTr�r)r�r�unittestrrrrr�	functoolsr	�test.test_zoneinfor
rI�test.test_zoneinfo._supportrrr
�test.support.import_helperrr�get_modulesr�r
�metadata�HAS_TZDATA_PKG�PackageNotFoundErrorr!r"rr�__file__r&�DATA_DIRr r�r\r&r+r-rKrhr�rrrr r$r.�skipIfr0r5r7r�r�rrrErGrqrsrzr|r�r�r�TestCaser�	dataclassrIrJrrzrC�mainr#r$r%�<module>r�s(��"�"�"�"�"�"�
�
�
�
�������������	�	�	�	�����	�	�	�	�����
�
�
�
�	�	�	�	�
�
�
�
�
�
�
�
���������>�>�>�>�>�>�>�>�>�>�>�>�>�>�%�%�%�%�%�%�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�����]����B�B�B�B�B� �B�B�B�J���������Q"�Q"�Q"�Q"�Q"��)9�Q"�Q"�Q"�h�����*����o+�o+�o+�o+�o+��*:�o+�o+�o+�d�����,����,�,�,�,�,�,�,�,�,�&�����2����o4�o4�o4�o4�o4��"2�o4�o4�o4�d�����*����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$�$B8�7B8