
    z%i&                      d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d dlm Z   e d      Z! ejD                         \  Z#Z$	 ejJ                  jK                  d	       d
Z&da(da)da* e
jV                  e,      jZ                  dz  Z.e.dz  Z/ ed       Z0 ed      Z1d Z2d Z3 G d d      Z4 G d d      Z5 G d de4e      Z6 G d de6      Z7 G d de5e6      Z8 G d de5e7      Z9 G d de6      Z: G d  d!e:      Z; G d" d#e6      Z< G d$ d%e<      Z= ej|                  e& d&       G d' d(e6             Z? ej|                  e& d&       G d) d*e?             Z@ G d+ d,e      ZA G d- d.eA      ZB G d/ d0e      ZC G d1 d2eC      ZD G d3 d4e4e      ZE G d5 d6eE      ZF G d7 d8e4e      ZG G d9 d:eG      ZH G d; d<e      ZI G d= d>eI      ZJ G d? d@e4e      ZK G dA dBeK      ZL G dC dDe      ZM G dE dFeM      ZN G dG dHej                        ZP ej                  d
I       G dJ dK             ZR ej                  d
I       G dL dM             ZS G dN dO      ZT G dP dQ      ZUeVdRk(  r ej                          yy# ejJ                  jN                  $ r dZ&Y 0w xY w)S    )annotationsN)datedatetimetime	timedeltatimezone)cached_property)_support)OS_ENV_LOCKTZPATH_TEST_LOCKZoneInfoTestBase)import_modulelzmatzdataTFdatazzoneinfo_data.json   hoursc                     t        j                  t        j                  d            at        t        t        dz        at        t        t        dz  d      ay )Nzoneinfo)prefixv2v1T)r   )	pathlibPathtempfilemkdtempTEMP_DIRZoneInfoDataZONEINFO_JSONZONEINFO_DATAZONEINFO_DATA_V1     T/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_zoneinfo/test_zoneinfo.pysetUpModuler&   ,   s@    
 ||H,,J?@H 4@M#M8d?tLr$   c                 6    t        j                  t               y N)shutilrmtreer   r#   r$   r%   tearDownModuler+   6   s    
MM(r$   c                  @     e Zd Z	 ed        Zed        Z fdZ xZS )TzPathUserMixinc                     y r(   r#   selfs    r%   tzpathzTzPathUserMixin.tzpathD       r$   c                     y)NTr#   r/   s    r%   block_tzdatazTzPathUserMixin.block_tzdataH   r2   r$   c                <   t        j                         5 }|j                  | j                  | j                  | j
                  t                     | j                  |j                         j                         d d d        t        | -          y # 1 sw Y   xY w)N)r4   lock)
contextlib	ExitStackenter_contexttzpath_contextr1   r4   r   
addCleanuppop_allclosesupersetUpr0   stack	__class__s     r%   r?   zTzPathUserMixin.setUpL   s    !!# 	3u##KK!%!2!2) $  OOEMMO112	3 		3 	3s   A%BB)__name__
__module____qualname__propertyr1   r4   r?   __classcell__rB   s   @r%   r-   r-   :   s:         r$   r-   c                  6     e Zd Z	  G d de      Z fdZ xZS )DatetimeSubclassMixinc                      e Zd Zed        Zy)&DatetimeSubclassMixin.DatetimeSubclassc                     | |j                   |j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  	      S )N)tzinfofold)	yearmonthdayhourminutesecondmicrosecondrN   rO   )clsdts     r%   from_datetimez4DatetimeSubclassMixin.DatetimeSubclass.from_datetime`   sN    				yyWW
 
r$   N)rC   rD   rE   classmethodrY   r#   r$   r%   DatetimeSubclassrL   _   s    		 
	r$   r[   c              #     K   t         |   |      }|D ]D  }|j                  }| j                  j	                  |      }t        j                  ||      }| F y w)N)
transition)r>   load_transition_examplesr]   r[   rY   dataclassesreplace)r0   keytransition_examplesztrX   new_dtnew_ztrB   s          r%   r^   z.DatetimeSubclassMixin.load_transition_examplesn   s\     #g>sC% 	BB**88<F ((?FL		s   AA)rC   rD   rE   r   r[   r^   rG   rH   s   @r%   rJ   rJ   Z   s    8  r$   rJ   c                       e Zd ZeZdZ fdZed        Zed        Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )ZoneInfoTestZoneInfoc                V    t         |           | j                  j                          y r(   )r>   r?   klassclear_cacher0   rB   s    r%   r?   zZoneInfoTest.setUp{   s     	

 r$   c                    t         S r(   r!   r/   s    r%   zoneinfo_datazZoneInfoTest.zoneinfo_data       r$   c                0    | j                   j                  gS r(   ro   r1   r/   s    r%   r1   zZoneInfoTest.tzpath       ""))**r$   c                $    | j                  |      S r(   rj   r0   ra   s     r%   zone_from_keyzZoneInfoTest.zone_from_key   s    zz#r$   c                *    t         j                         S r(   )ZoneDumpDatatransition_keysr/   s    r%   zoneszZoneInfoTest.zones   s    ++--r$   c                *    t         j                         S r(   )ry   fixed_offset_zonesr/   s    r%   r}   zZoneInfoTest.fixed_offset_zones   s    ..00r$   c                ,    t         j                  |      S r(   )ry   r^   rv   s     r%   r^   z%ZoneInfoTest.load_transition_examples   s    44S99r$   c                J   | j                         D ]H  }| j                  |      5  | j                  |      }| j                  t	        |      |       d d d        J | j
                  j                  d   }| j
                  j                  |      }t        |d      5 }| j                  d|      5  | j                  j                  |      }| j                  t	        |      t        |             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rbz	Repr test)	test_namepath)r{   subTestrw   assertEqualstrro   keyspath_from_keyopenrj   	from_filerepr)r0   ra   zifile_key	file_pathfzi_ffs          r%   test_strzZoneInfoTest.test_str   s   ::< 	/Cc" /'',  R#./ /	/ %%**1-&&44X>	)T" 	:a)D :

,,Q/  UT%[9:	: 	:/ /: :	: 	:s0   -DD0A D0DD
	D	DD"c                l   t        t        | j                                     }| j                  |      }| j                  }| j                  d      5  | j                  t        |      |       d d d        | j                  j                  d   }| j                  j                  |      }t        |d      5 }| j                  j                  ||      }d d d        | j                  d      5  | j                  t              |       d d d        t        |d      5 }| j                  j                  |      }d d d        | j                  d      5  | j                  t              |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   y xY w)Nzfrom key)namer   r   ra   zfrom file with keyzfrom file without key)nextiterr{   rj   
class_namer   assertRegexr   ro   r   r   r   r   )	r0   ra   r   r   r   r   r   r   zi_ff_nks	            r%   	test_reprzZoneInfoTest.test_repr   s~    4

%&ZZ___
\\z\* 	3T"Xz2	3 %%**1-&&44X>	)T" 	:aJJ(((9E	: \\3\4 	6T%[*5	6 )T" 	/azz++A.H	/ \\6\7 	9T(^Z8	9 	9	3 	3
	: 	:	6 	6	/ 	/	9 	9s<   E96F.FFF*9FFFF'*F3c                
    t        t         j                                     } fd}d j                  |fd j                  j                  |fd|d ff}|D ]  \  }}} ||      } j                  |      5   j                  |j                  |       d d d         j                  | d      5   j                  t              5  d|_        d d d        d d d         y # 1 sw Y   NxY w# 1 sw Y    xY w# 1 sw Y   xY w)Nc                    t        j                  j                  |       d      5 }j                  j	                  |      cd d d        S # 1 sw Y   y xY w)Nr   )r   ro   r   rj   r   )ra   r   r0   s     r%   from_file_nokeyz8ZoneInfoTest.test_key_attribute.<locals>.from_file_nokey   sG    d((66s;TB /azz++A./ / /s   AAzPrimary constructorno_cacher   z
: readonlyz
Some/Value)
r   r   r{   rj   r   r   r   ra   assertRaisesAttributeError)r0   ra   r   constructorsmsgconstructorexpectedr   s   `       r%   test_key_attributezZoneInfoTest.test_key_attribute   s   4

%&	/
 #DJJ4,,c2/40
 +7 
	*&ChS!B c" 3  23 Z01 *&&~6 *)BF** *
	*3 3
* ** *s0   7C!0C9C-C9!C*	-C62C99D	c                    g d}|D ]A  }| j                  | j                  j                        5  | j                  |       d d d        C y # 1 sw Y   NxY w)N)zEurasia/BadzoneBZQzAmerica.Los_Angelesu   🇨🇦u   America/NewYork)r   moduleZoneInfoNotFoundErrorrj   r0   bad_keysbad_keys      r%   test_bad_keyszZoneInfoTest.test_bad_keys   sX    
   	$G""4;;#D#DE $

7#$ $	$$ $s   AA	c                    g d}|D ]1  }| j                  t              5  | j                  |       d d d        3 y # 1 sw Y   >xY w)N)z/America/Los_AngeleszAmerica/Los_Angeles/z../zoneinfo/America/Los_AngeleszAmerica/../America/Los_AngeleszAmerica/./Los_Angeles)r   
ValueErrorrj   r   s      r%   test_bad_keys_pathsz ZoneInfoTest.test_bad_keys_paths   sN    
   	$G"":. $

7#$ $	$$ $s	   <A	c                    ddg}|D ]P  }t        j                  |      }| j                  t              5  | j                  j                  |       d d d        R y # 1 sw Y   ]xY w)Nr$   s   AAAA3               )ioBytesIOr   r   rj   r   )r0   	bad_zonesbad_zonefobjs       r%   test_bad_zoneszZoneInfoTest.test_bad_zones   sh     
	
 " 	+H::h'D"":. +

$$T*+ +	++ +s   AA$	c                   t        t        | j                                     }| j                  |      }t	        dddt
        j                        t        ft	        ddd      t        ft        ddd      t        ft        d      t        fdt        fdt        fg}|D ]K  \  }}| j                  |      5  | j                  |      5  |j                  |       d d d        d d d        M y # 1 sw Y   xY w# 1 sw Y   dxY w)N  r   rN   r   z
2019-01-01)val)r   r   r{   rw   r   r   utcr   r   	TypeErrorr   r   r   fromutc)r0   ra   zone
bad_valuesr   exc_types         r%   test_fromutc_errorsz ZoneInfoTest.test_fromutc_errors   s    4

%&!!#& dAq6
CdAq!:.$1y)!Wi 	N9%

 ( 	&MC#& &&&x0 &LL%&& &	&& && &s$   4C7C+C7+C40C77D 	c                   | j                  d      }t        ddd|      }| j                  |j                         t               | j                  |j                         t               | j                  |j                         d       y )NUTC  r   r   )rj   r   r   	utcoffsetZEROdsttzname)r0   r   rX   s      r%   test_utczZoneInfoTest.test_utc  sb    ZZdAq,.4(e,r$   c           	        g }| j                         D ]  }| j                  |      D ]l  }|j                  ||j                  t	        d      z
  |j
                  f       |j                  ||j                  t	        d      z   |j                  f       n  |D ]  \  }}}| j                  |||      5  | j                  |      }|j                  |      }| j                  |j                         |j                  |       | j                  |j                         |j                  |       | j                  |j                         |j                  |       d d d         y # 1 sw Y   xY w)N   )days)ra   rX   offsetr   )r{   r^   appendr]   r   offset_beforeoffset_afterr   rw   r`   r   r   r   r   )r0   
test_casesra   zone_transitionrX   r   tzis          r%   test_unambiguouszZoneInfoTest.test_unambiguous  sU   
::< 	C#'#@#@#E !!'22YA5FF'55 !!'22YA5FF'44	$  * 	;OCV#"V< ;((-ZZsZ+  fmmR@  1A1A2F  6::r:; ;	;; ;s   5B%E%%E.	c                   g }| j                         D ]X  }g g d}| j                  |      D ]  }|j                  r|d   }n|j                  r|d   }nd }+|j                  t        d      z
  }|j                  |d|j                  f       |j                  |d|j                  f       |j                  }|j                  |d|j                  f       |j                  |d|j                  f       |j                  t        d      z   }|j                  |d|j                  f       |j                  |d|j                  f       |j                  t        d      z
  }|j                  |d|j                  f       |j                  |d|j                  f       |j                  }|j                  |d|j                  f       |j                  |d|j                  f       |j                  t        d      z   }|j                  |d|j                  f       |j                  |d|j                  f        |j                         D ]  \  }}|j                  ||f|f        [ |D ]  \  \  }}}| j                  ||      5  | j                  |      }	|D ]  \  }}
}|j                  |
|	      }| j                  |j                         |j                  |       | j                  |j!                         |j                   |       | j                  |j#                         |j"                  |        	 d d d         y # 1 sw Y   xY w)	N)foldsgapsr   r   r   secondsr   )ra   grprO   rN   )r{   r^   rO   gapanomaly_startr   r   r   r   anomaly_enditemsr   rw   r`   r   r   r   r   )r0   r   ra   testsrc   
test_groupno_peephole_optrX   r   r   rO   r   s               r%   test_folds_and_gapsz ZoneInfoTest.test_folds_and_gaps4  s   
::< (	<C "-E33C8 #<77!&wJVV!&vJ
 '+O %%	!(<<!!2q"*:*:";<!!2q"*:*:";<%%!!2q"*:*:";<!!2q"//":;%%	!(<<!!2q"*:*:";<!!2q"//":;^^i&::!!2q"*:*:";<!!2q"//":;^^!!2q"//":;!!2q"//":;^^i&::!!2q"//":;!!2q"//":;G#<J $);;= <Z!!C:z":;<O(	<T ", 		?JS##3/ ?((-(- ?$Bfc:B$$RYY[&--D$$R\\^V5E5ErJ$$RVVXvzz2>?? ?		?? ?s   B1M

M	c           	        | j                         D ]  }| j                  |      }| j                  |      5  | j                  |      D ]  }|j                  s|j
                  }|t        d      z
  }|t        d      z   }|j                  |      }| j                  |j                  d||f       |j                  |      }| j                  |j                  d||f        	 d d d         y # 1 sw Y   xY w)Nr   r   r   r   )	r{   rw   r   r^   rO   transition_utcr   
astimezoner   )	r0   ra   r   rc   dt_utcdt_before_utcdt_after_utc	dt_beforedt_afters	            r%   test_folds_from_utcz ZoneInfoTest.test_folds_from_utck  s    ::< 	KC##C(B#& K77< KB77 ..F$*Yq-A$AM#)Ia,@#@L - 8 8 <I$$Y^^QF8KL+66r:H$$X]]A&7IJKK K	KK Ks   B.C11C:	c                ~   | j                         D ]  }| j                  |      }t        dddd|      }| j                  |      5  | j	                  |j                         d        | j	                  |j                         d        | j	                  |j                         d        d d d         y # 1 sw Y   xY wN      r   i  r   r   )r{   rw   r   r   assertIsr   r   r   )r0   ra   r   ts       r%   test_time_variable_offsetz&ZoneInfoTest.test_time_variable_offset}  s    ::< 	-C##C(BRQb1A#& -ahhj$/akkmT2aeegt,- -		-- -s   A!B33B<	c                   | j                         D ]  \  }}| j                  |      }t        dddd|      }| j                  |      5  | j	                  |j                         |j
                         | j	                  |j                         |j                         | j	                  |j                         |j                         d d d         y # 1 sw Y   xY wr   )r}   rw   r   r   r   r   r   r   )r0   ra   r   r   r   s        r%   test_time_fixed_offsetz#ZoneInfoTest.test_time_fixed_offset  s    224 	6KC##C(BRQb1A#& 6  V]];  0@0@A  &**56 6	6
6 6s   
A?CC	)rC   rD   rE   py_zoneinfor   r   r?   rF   ro   r1   rw   r{   r}   r^   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   rH   s   @r%   rg   rg   w   s    FJ!   + +.1::"90*2$$	+&$-;:5?nK$	-	6r$   rg   c                      e Zd ZeZd Zd Zy)CZoneInfoTestc                "   	 dd l }| j                  j                  | j                  j                  | j                  j                  f}|D ]8  }| j                  |      5  |j                  j                  |       d d d        : y # 1 sw Y   ExY w)Nr   )method)inspectrj   rk   r   r   r   	Signaturefrom_callable)r0   r   must_have_signaturesr   s       r%   test_signatureszCZoneInfoTest.test_signatures  s    ? JJ""JJJJ   

 + 	8FV, 8!!//78 8	88 8s   BB	c                   	 d }ddg}d}| j                  |      }| j                  |      D ]J  }|j                  s|j                  j                  t
        k(  s.|j                  j                  |      } n dD ]s  }|r	 |      }n}| j                  |      5  |j                  |      }| j                  |j                  d       | j                  |j                  d	       d d d        u y # 1 sw Y   xY w)
Nc                     G d dt        |             } || j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  	      S )Nc                       e Zd Z fdZ xZS )LCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclassc                B    |t        d      k(  r| S t        | 	  |      S Nr   )r   r>   __add__)r0   otherrB   s     r%   r  zTCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclass.__add__  s#    	!,# 7?511r$   )rC   rD   rE   r  rG   rH   s   @r%   SameAddSubclassr    s    2 2r$   r  r   )
typerP   rQ   rR   rS   rT   rU   rV   rO   rN   )rX   r  s     r%   to_subclassz3CZoneInfoTest.test_fold_mutate.<locals>.to_subclass  s`    2$r( 2 #				WWyy
 
r$   FTEurope/Londonr   )FT)subclassr   r   )rw   r^   rO   r   r   r   r   r`   r   r   r   )	r0   r
  r  ra   r   rc   examplerX   
dt_fromutcs	            r%   test_fold_mutatezCZoneInfoTest.test_fold_mutate  s    		( 4=$//4 	Bww2??44<++3323>	
 & 
	-H )x0 -ZZ^
  !4  !,	- -
	-- -s   A
C33C<	N)rC   rD   rE   
c_zoneinfor   r   r  r#   r$   r%   r   r     s    F80-r$   r   c                      e Zd Zy)ZoneInfoDatetimeSubclassTestNrC   rD   rE   r#   r$   r%   r  r        r$   r  c                      e Zd Zy)CZoneInfoDatetimeSubclassTestNr  r#   r$   r%   r  r    r  r$   r  c                  .     e Zd Ze fd       Zd Z xZS )ZoneInfoSubclassTestc                    t         |            G d d| j                        }d| _        | j                  | _        || _        y )Nc                      e Zd Zy)3ZoneInfoSubclassTest.setUpClass.<locals>.ZISubclassNr  r#   r$   r%   
ZISubclassr    s    r$   r  )r>   
setUpClassrj   r   parent_klass)rW   r  rB   s     r%   r  zZoneInfoSubclassTest.setUpClass  s:    	 	 &99	r$   c                    | j                  d      }| j                  d      }| j                  ||       | j                  || j                          | j                  || j                         y )Nr  )r  rj   assertIsNotassertIsInstance)r0   base_objsub_objs      r%   test_subclass_own_cachez,ZoneInfoSubclassTest.test_subclass_own_cache  sZ    $$_5**_-7+h(9(9:gtzz2r$   )rC   rD   rE   rZ   r  r$  rG   rH   s   @r%   r  r    s     3r$   r  c                      e Zd ZeZy)CZoneInfoSubclassTestNrC   rD   rE   r  r   r#   r$   r%   r&  r&        Fr$   r&  c                  "    e Zd Zed        Zd Zy)ZoneInfoV1Testc                    t         S r(   )r"   r/   s    r%   ro   zZoneInfoV1Test.zoneinfo_data  s    r$   c              #     K   t        ddd      }t        d      }||z
  }||z   }t        j                  |      D ]  }||j                  cxk  r|k  sn | ! y w)N  r           r   )r   r   ry   r^   r]   )r0   ra   epochmax_offset_32min_dtmax_dtrc   s          r%   r^   z'ZoneInfoV1Test.load_transition_examples  sd      q!$!'2&&77< 	B0&0	s   AA
AN)rC   rD   rE   rF   ro   r^   r#   r$   r%   r*  r*    s       
r$   r*  c                      e Zd ZeZy)CZoneInfoV1TestNr'  r#   r$   r%   r4  r4  
  r(  r$   r4  z4Skipping tzdata-specific tests: tzdata not installedc                  4    e Zd Z	 ed        Zed        Zd Zy)TZDataTestsc                    g S r(   r#   r/   s    r%   r1   zTZDataTests.tzpath  s    	r$   c                     y)NFr#   r/   s    r%   r4   zTZDataTests.block_tzdata  s    r$   c                &    | j                  |      S )Nr   ru   rv   s     r%   rw   zTZDataTests.zone_from_key"  s    zzcz""r$   N)rC   rD   rE   rF   r1   r4   rw   r#   r$   r%   r6  r6    s4        #r$   r6  c                      e Zd ZeZy)CTZDataTestsNr'  r#   r$   r%   r;  r;  &  s	     Fr$   r;  c                  B    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd
d	Zy)WeirdZoneTestc           
     l   t        dt        ddd             }t        dt        d             }t        t        ddd	d
      ||      g}d}| j	                  ||      }| j
                  j                  |      }t        ddd	d|      }t        dddd|      }||f||ffD ]  \  }	}
| j                  d|	      5  | j                  |	j                         |
j                         | j                  |	j                         |
j                         | j                  |	j                         |
j                         d d d         t        ddd	d|      t        ddd	dddt        j                        ft        dddd|      t        ddddt        j                        fg}|D ]u  \  }}| j                  d|      5  |j                  |      }| j                  ||       |j                  t        j                        }| j                  ||       d d d        w y # 1 sw Y   xY w# 1 sw Y   xY w)NLMT      r   )r   minutesr   STDr   [  	      STD6r   r   
   local)r   rX                 r   )
ZoneOffsetr   ZoneTransitionr   construct_zonerj   r   r   r   r   r   r   r   r   r   )r0   r?  rC  transitionsafterzfr   dt0dt1rX   r   dtsdt_localr   	dt_actualdt_utc_actuals                   r%   test_one_transitionz!WeirdZoneTest.test_one_transition0  s   B!J JK!3 34 8D!Q3S#>
   e4ZZ!!"%tQ1R0tQAb1:Sz2 	7JB7r2 7  fmm<  1A1AB  6::67 7	7 q!Qr2q!QAhllC
 q!R3q!R=	
 !$ 	8Hf9: 8"--b1	  H5 ( 3 3HLL A  78 8	8!7 7"8 8s   ;A?H=AH*H'	*H3	c           	        t        dt        t              }t        t        ddd      ||      g}d}| j	                  ||      }| j
                  j                  |      }t        ddd      t        ddd	      t        ddd      t        d
dd      t        ddd      g}|D ]  }|j                  |      }| j                  |      5  | j                  |j                         |j                         | j                  |j                         |j                         | j                  |j                         |j                         d d d         y # 1 sw Y   xY w)NDSTr-  r   zSTD0DST-1,0/0,J365/25l     i  rE  rM  rK  r     r   rX   )rO  ONE_HrP  r   rQ  rj   r   r`   r   r   r   r   r   )r0   r]  rR  rS  rT  r   rW  rX   s           r%   test_one_zone_dstzWeirdZoneTest.test_one_zone_dstY  s5   u-8D!Q/c:
 (  e4ZZ!!"% T1a T1b!T1a T2q!T1a 
  	4B2&B$ 4  cjj9  ?  37734 4	44 4s   A?EE	c                   t        dt        t              }t        ddt        z  t              }g }t        dd      D ]R  }|j	                  t        t        |ddd      ||             |j	                  t        t        |ddd      ||             T d	}| j                  ||      }| j                  j                  |      }t        d
dd      |ft        ddd      |ft        ddd      |ft        ddd      |fg}|D ]  \  }	}
|	j                  |      }	| j                  |	      5  | j                  |	j                         |
j                         | j                  |	j                         |
j                         | j                  |	j                         |
j                         d d d         t!        d|      }| j                  d      5  | j#                  |j                         d        | j#                  |j                         d        | j#                  |j                         d        d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)NrC  r]  r       r_  r   r    i  rL  i  r   ra  r   zTesting datetime.time)rO  rb  r   ranger   rP  r   rQ  rj   r   r`   r   r   r   r   r   r   r   )r0   rC  r]  rR  rP   rS  rT  r   casesrX   r   r   s               r%   test_no_tz_strzWeirdZoneTest.test_no_tz_strs  s   t,E	51$% 	DxaA6SA xb!Q7cB		   e4
 ZZ!!"% dAq!3'dAq!3'dB"C(dAq!3'	
   	7JB2&B$ 7  fmm<  1A1AB  6::67 7	7 2\\12 	)MM!((*d+MM!++-.MM!%%'4(	) 	)7 7	) 	)s   &A?H7A!I7I	Ic                   t        dt        t              t        dt        t              g}|D ]  }t        d ||      g}d}| j	                  ||      }| j
                  j                  |      }t        ddd      t        ddd      t        ddd      g}|D ]  }|j                  |      }| j                  ||	      5  | j                  |j                         |j                         | j                  |j                         |j                         | j                  |j                         |j                         d d d          y # 1 sw Y   xY w)
NrC  r]  rg  r^  r   r-  rf  r   )r   rX   )rO  r   rb  rP  rQ  rj   r   r   r`   r   r   r   r   r   )	r0   offsetsr   rR  rS  rT  r   rW  rX   s	            r%   test_tz_before_onlyz!WeirdZoneTest.test_tz_before_only  s>    udD)ueU+

  	;F tVV4K E$$[%8B%%b)B q!$q!$q!$C  ;ZZrZ*\\B\7 ;$$RYY[&--@$$R\\^V5E5EF$$RVVXvzz:; ;;#	;&; ;s   >A?EEc                    | j                  g d      }| j                  t              5  | j                  j	                  |       d d d        y # 1 sw Y   y xY w)Nrg  )rQ  r   r   rj   r   )r0   rT  s     r%   test_empty_zonezWeirdZoneTest.test_empty_zone  sI      R(z* 	%JJ  $	% 	% 	%s   AAc                `   	 t        dt        d            }t        dt              }d||ft        t	        ddd      ||      d||fg}d	}| j                  ||      }| j                  j                  |d
      }t        j                  |ft        j                  |ft	        ddd      |ft	        ddd      |fg}|D ]  \  }}	|j                  |      }
| j                  d|
|	      5  | j                  |
j                         |	j                         | j                  |
j                         |	j                         | j                  |
j                         |	j                         d d d         t        j                  t        j                  t        d      z   ft	        dddddd      t	        ddd      ft	        ddddddd      t	        ddddddd      ft	        dddddd      t	        dddddd      ft	        ddd      t	        ddd      ft        j                  t        j                  fg}|D ]j  \  }}|j                  |      }
|j                  t         j"                        }| j                  |j%                  |      |
       | j                  |
|       l y # 1 sw Y   xY w) Nr?  8r   GMTl         x  r   l            GMT0Africa/Abidjanr   iw  rM  rA  r   r   r   )r   rX   r   i  ij     +   4   ik  ;   ?B r      rJ     r-  )rO  r   r   rP  r   rQ  rj   r   minmaxr`   r   r   r   r   r   r   r   r   )r0   r?  rr  rR  rS  rT  r   offset_casesdt_naiver   rX   	utc_casesnaive_dtnaive_dt_utcr   s                  r%   test_zone_very_large_timestampz,WeirdZoneTest.test_zone_very_large_timestamp  s   	 	$ 78% c"8D!Q/c:S!
   e4ZZ!!"*:!; \\3\\3dB#S)dAq!3'	
 !- 	7Hf!!!,B86B 7  fmm<  1A1AB  6::67 7	7 \\8<<)C*@@AdBBB/$11EFr2r2r6:q!QAv6 dAq!R+XdAq!R-KLdAq!8D!Q#78\\8<<(

	 '0 	)"Hl!!!,B!)))>FV..r2B7R(	)#7 7s   (A?J##J-	c                   t        dt        t              }t        t        ddd      ||      g}d}| j	                  ||      }| j
                  j                  |d      }t        ddd|      }| j                  d      5  | j                  |j                         |j                         | j                  |j                         |j                         | j                  |j                         |j                         d d d        t        d	|      }| j                  d
      5  | j                  |j                         |j                         | j                  |j                         |j                         | j                  |j                         |j                         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r-  r   UTC0r   r   r   zdatetime.datetimer   zdatetime.time)rO  r   rP  r   rQ  rj   r   r   r   r   r   r   r   )r0   r   rR  rS  rT  r   rX   r   s           r%   $test_fixed_offset_phantom_transitionz2WeirdZoneTest.test_fixed_offset_phantom_transition  s\   d+%htQ&:CEF  e4ZZ!!"%!0dAq,\\-. 	0RYY[#**5R\\^S]];RVVXsww/	0
 2\\/* 	/QXXZ4Q[[]CMM:QUUWcgg.	/ 	/	0 	0	/ 	/s    A?F-%A?F9-F69GNc                   g }g }g }g g g}g g g}g g g}	d}
d}|
|g}d }t        t        ||      d       }|D ]  }|\  }}}t        |      D ]  \  }\  }}||   }||   }|	|   }|||cxk  r|k  sn (||vr|j                  |       ||vr|j                  |       |U|j                  |       |j                  |j	                  |               t        |      }t        |      }t        |      }t        j                         }d}t        t        |df            D ]  }||   }||   }|	|   }||   }t               }g }|D ]z  } t        | j                  j                               }!t        | j                        }"t        |      }#|j                  |!|"|#f       || j                   j#                  d      d	z   z  }| t%        |      }t        |      }$t        |      }%t        |      }&|j'                  d
       |j'                  d|z         |j'                  d       |j'                  t)        j*                  d||||%|$|&             |j'                  t)        j*                  d|% | g|        |j'                  t)        j*                  d|% dg|        |D ]'  }'|j'                  t)        j*                  dg|'        ) |j'                  t%        |             |j'                  t)        j*                  | dg|        |j'                  t)        j*                  | dg|        |j'                  t)        j*                  d| dg|        |dkD  sH|j'                  d       |j'                  |j#                  d             |j'                  d        |j-                  d       |S )N)i   r.  )l         l            c                    t        | t              r| S | j                  r$t        | j                  j                               }nd }|| j                  | j                  fS r(   )
isinstancetupler]   intr   	timestampr   r   )rc   
trans_times     r%   zt_as_tuplez1WeirdZoneTest.construct_zone.<locals>.zt_as_tuple)  sO    
 "e$	}} !2!2!<!<!>?
!
 0 0"//BBr$   c                    | d   S r  r#   )xs    r%   <lambda>z.WeirdZoneTest.construct_zone.<locals>.<lambda>8  s
    !A$ r$   r   )lqr   ascii       TZifs   %d                  >6l>Bz>lbbbr  r      
)sortedmap	enumerater   indexlenr   r   rh  r}  	bytearrayr  r   total_secondsboolr   r   encodebyteswritestructpackseek)(r0   rR  rS  versionisutcisstdleap_secondsoffset_liststrans_times_liststrans_idx_listsv1_rangev2_rangerangesr  rc   r  r   r   vdt_mindt_maxrl  trans_times	trans_idxisutcntisstdcntleapcntzonefile
time_types	time_typeabbrstrttinfosr   utcoffisdstabbrindtypecnttimecntcharcntttinfos(                                           r%   rQ  zWeirdZoneTest.construct_zone  s    BxHr(((H%	C Sk:O 	BB683J|'0'8 B##FF&q//2+A.	)j2F2 /NN=1w.NN<0)&&z2$$W]]<%@A%B	B. e*u:l#::<
sGQ<() 3	(A"1oG+A.K'*I"1I  kGG! CV--;;=>VZZ(g,w786==//87BBC GnG'lG+&G'lG NN7#NN57?+NN9%NN7Hgw NN6;;7)I;'?N+NONN6;;7)1~B	BC! =v{{6;F;<= NN5>* NN6;;'!}=u=>NN6;;(1~>>?NN6;;7)1~EEF 1uw'u||G45w'g3	(j 	ar$   )Nr_  )rC   rD   rE   r   r   r[  rc  rj  rm  ro  r  r  rQ  r#   r$   r%   r=  r=  -  s4    F'8R44))V";H%;)z/*tr$   r=  c                      e Zd ZeZy)CWeirdZoneTestNr'  r#   r$   r%   r  r    r(  r$   r  c                  p     e Zd ZeZdZdZdZe fd       Z	ed        Z
d Zd Zd Zd	 Zed
        Z xZS )	TZStrTestr   r   r   c                b    t         |           | j                          | j                          y r(   )r>   r  _populate_test_casespopulate_tzstr_header)rW   rB   s    r%   r  zTZStrTest.setUpClass  s&      "!!#r$   c                    t               }t        d      D ]/  }|dz  }|dz  }|dz  }|t        j                  ddddddd      z  }1 t	        |      | _        y )Nr   r     3r  r  r   )r  rh  r  r  r  _tzif_header)rW   out_s      r%   r  zTZStrTest.populate_tzstr_header  si    k
 q 	8A7NC4KC9C 6;;uaAq!Q77C	8 !:r$   c                F   	 t        j                  | j                        }|j                  dd       |j	                  d       |j	                  |j                  d             |j	                  d       |j                  d       | j                  j                  ||      S )Nr   r   r  r  r   )r   r   r  r  r  r  rj   r   )r0   tzstrr  s      r%   zone_from_tzstrzTZStrTest.zone_from_tzstr  s|    =::d//0a 	wu||G,-wazz##H%#88r$   c                @   | j                   j                         D ]  \  }}| j                  |      5  | j                  |      }d d d        |D ]  \  }}}|j	                        }| j                  |||      5  | j                  |j                         |j                         | j                  |j                         |j                         | j                  |j                         |j                         d d d          y # 1 sw Y   xY w# 1 sw Y   xY w)Nr  r   )r  rX   r   )	r   r   r   r  r`   r   r   r   r   )r0   r  ri  r   r  r   r  rX   s           r%   test_tzstr_localizedzTZStrTest.test_tzstr_localized  s     OO113 
	;LE5E* 1))%01 (- ;#&!%%R%0\\"V\D ;$$RYY[&--@$$R\\^V5E5EF$$RVVXvzz:; ;;	
	;1 1; ;s   D<A?DD	Dc                   | j                   j                         D ]3  \  }}| j                  |      5  | j                  |      }d d d        |D ]  \  }}}|| j                  k(  r||j
                  z
  j                  t        j                        }|j                        }|j                  |      }	| j                  ||	       || j                  k(  r(| j                  |j                  |j                  |       n| j                  |j                  d       |	j                  t        j                        }| j                  ||        6 y # 1 sw Y   xY w)Nr  r   r   )r   r   r   r  GAPr   r`   r   r   r   r   FOLDrO   )
r0   r  ri  r   r  r   dt_typer   dt_actdt_exps
             r%   test_tzstr_from_utczTZStrTest.test_tzstr_from_utc  s8    OO113 	1LE5E* 1))%01 .3 1)&'dhh&"V%5%55>>#<< ? 
  **2.!)))4  0dii'$$V[[(--J$$V[[!4  **8<<8  0-1		11 1s   EE	c                
   g d}|D ]b  }| j                  |      5  t        j                  |      }| j                  t        |      5  | j                  |       d d d        d d d        d y # 1 sw Y   xY w# 1 sw Y   {xY w)N)PST8PDT+11zGMT,M3.2.0/2,M11.1.0/3zGMT0+11,M3.2.0/2,M11.1.0/3zPST8PDT,M3.2.0/2zSTD+25zSTD-25zSTD+374zSTD+374DST,M3.2.0/2,M11.1.0/3zSTD+23DST+25,M3.2.0/2,M11.1.0/3zSTD-23DST-25,M3.2.0/2,M11.1.0/3zAAA4BBB,M1443339,M11.1.0/3zAAA4BBB,M3.2.0/2,0349309483959czAAA4BBB,M13.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M13.1.1/2zAAA4BBB,M0.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M0.1.1/2zAAA4BBB,M1.6.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M1.6.1/2zAAA4BBB,M1.1.7/2,M2.1.1/2zAAA4BBB,M1.1.1/2,M2.1.7/2zAAA4BBB,-1/2,20/2zAAA4BBB,1/2,-1/2zAAA4BBB,367,20/2zAAA4BBB,1/2,367/2zAAA4BBB,J0/2,J20/2zAAA4BBB,J20/2,J366/2r  )r   reescapeassertRaisesRegexr   r  )r0   invalid_tzstrsinvalid_tzstrtzstr_regexs       r%   test_invalid_tzstrzTZStrTest.test_invalid_tzstr  s    #
J , 	8MM2 8 !ii6++JD 8((78	8 8	8
8 8	8 8s#   ,A9A-A9-A62A99B	c                f   fd}| j                   | j                  | j                  i |fd       }|fd       }|fd       }|fd       }|fd       }|fd       }|fd       }|fd	       }|fd
       }|fd       }| _        y )Nc                ,    	 t              } |         y r(   )r  )r   prev_lenri  s     r%   callz,TZStrTest._populate_test_cases.<locals>.call'  s     5zHCr$   c                    d} t        dt        d      t              }t        dt        d      t              }t	        ddd	      |ft	        ddd
dd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd      |ft	        dddddd      |ft	        dddddd      |ft	        dddddd      |ft	        ddddd      |ft	        dddddd      |ft	        dddddd      |ft	        dddddd      |ft	        dddddd      |ft	        dddddd      |ff| <   y )Nz EST5EDT,M3.2.0/4:00,M11.1.0/3:00ESTr   EDTr   r_  rE  rH  ry  rL  r   rO   r   r   r   r   r|  rO  r   r   rb  r   )r  r  r  r  r  NORMALri  s      r%   _addz,TZStrTest._populate_test_cases.<locals>._add8  s    7EUIB$7>CUIB$7?C $1%sF3$2q"-sF;$2q!!4c3?$2q!!4c3?$2q!!4c3?$2q!!4c3?$A&V4$Aq"15sFC$Aq!!4c4@$Aq!!4c4@$1a,c6:$1a3S#>$1a3S#>$Aq"15sFC$Aq!!4c4@$Aq!!4c4@!E%Lr$   c                    d} t        dt        t              }t        dt        t              }t        ddd      |ft        ddddd	      |ft        dddd
d      |ft        ddd      |ft        ddddd	d      |ft        dddddd      |ft        dddd
dd      |ft        ddddd	      |ft        dddd
d      |ft        ddddd	d      |ft        dddddd      |ft        dddd
dd      |ff| <   y )Nz"GMT0BST-1,M3.5.0/1:00,M10.5.0/2:00rr  BSTr   r_     rA  r   ry  r   rH        r   r  r         rO  r   rb  r   )r  rr  r  r  r  r  ri  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._addT  sK    9EUD$/CUE51C $2&V4$2q"-sF;$2q!,c6:$B'f5$B2A6VD$B115sC@$B115sC@$2q"-sF;$2q!,c6:$B2A6VD$B115sDA$B115sFCE%Lr$   c                 z   d} t        dt        d      t              }t        dt        d      t              }t	        ddd	      |ft	        ddd
dd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        ddd
ddd      |ft	        dddd      |ft	        ddd	dd      |ft	        ddd	ddd      |ft	        ddd	ddd      |ft	        ddd	dd      |ff| <   y )NzAEST-10AEDT,M10.1.0/2,M4.1.0/3AESTrH  r   AEDTr   r   rL  r@  rJ  r   ry  r  r   r   r_     r  )r  r  r  r  r  r  ri  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._addl  s    5Efib&94@Dfib&95AD $1%tV4$1a,dF;$1a!4dFC$1a3T4@$1a3T4@$1a3T4@$1a3T4@$1a3T6B$1a3T6B$Aq)48$Aq"-tV<$Aq!!4dC@$Aq!!4dC@$Aq!,dF;E%Lr$   c                 8   d} t        dt        t               }t        dt        t              }t        ddd      |ft        ddddd	      |ft        dddd
d      |ft        ddd      |ft        ddddd	d      |ft        dddddd      |ft        dddddd      |ft        dddd
dd      |ft        ddddd	      |ft        dddd
d      |ft        ddddd	d      |ft        dddddd      |ft        dddd
dd      |ff| <   y )NzIST-1GMT0,M10.5.0,M3.5.0/1rr  ISTr   r_  r  rA  r   ry  r   rH  r  r  r   r  r   r  r   r  )r  rr  r  r  r  ri  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._add  sf    1EUD5&1CUE40C $2&V4$2q"-sF;$2q!,c6:$B'f5$B2A6VD$B115sDA$B115sDA$B115sFC$2q"-sF;$2q!,c6:$B2A6VD$B115sDA$B115sFCE%Lr$   c                 Z    d} t        ddd      t        dt        d            ff| <   y )Nz<+11>-11r   r   r  r   r   )r   rO  r   )r  r  ri  s    r%   r  z,TZStrTest._populate_test_cases.<locals>._add  s:     E T1a(uib&9:E%Lr$   c                     d} t        dt        d            }t        dt        d      t              }t        ddd	      |ft        dd
d	      |ff| <   y )Nz<-04>4<-03>,M9.1.6/24,M4.1.6/24-04r  r   -03r   r  r   r   rO  r   rb  r   )r  M04M03r  ri  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._add  sa     6EUIB$78CUIB$7?C $1%sF3$A&V4E%Lr$   c                    d} t        dt        d      t              }t        ddd      |ft        ddd      |ft        ddd	d
ddd      |ft        ddd      |ft        ddd      |ft        ddd      |ft        ddd	d
ddd      |ft        ddd      |ft        ddd      |ft        ddd	d
ddd      |ff
| <   y )NzEST5EDT,0/0,J365/25r  r  r   r   r   r@  rM  rA  rv  ry  rz  r   r_  i`	  r  )r  r  r  ri  s     r%   r  z,TZStrTest._populate_test_cases.<locals>._add  s     *EUIB$7?C $1%sF3$1%sF3$BBF;S&I$1%sF3$1%sF3$1%sF3$BBF;S&I$1%sF3$1%sF3$BBF;S&IE%Lr$   c                 b   d} t        dt        d            }t        dt        d      t              }t        ddd      |ft        dd	d
      |ft        ddddd      |ft        ddddd      |ft        ddddd      |ft        dddd      |ft        ddddd      |ft        ddddd      |ft        ddddd      |ft        dddd      |ft        ddddddd      |ft        ddd      |ft        dd	d      |ft        ddddd      |ft        ddddd      |ft        ddddd      |ft        dddd      |ft        ddddd      |ft        ddddd      |ft        ddddd      |ft        dddd      |ft        ddddddd      |ff| <   y )NzAAA3BBB,J60/12,J305/12AAAr  r   BBBr   r   r      r_  r   ry  rM  r   r     rH  rA  rv  rz  r   r  r  r  r  r  r  r  r  ri  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._add  s%    -EUIB$78CUIB$7?C $1%sF3$2&V4$1b"-sF;$1bq13<$1bq13<$1b)37$Ar2.V<$Ar2C>$Ar2C>$Ar*C8$BBF;S&I$1%sF3$2&V4$1b"-sF;$1bq13<$1bq13<$1b)37$Ar2.V<$Ar2C>$Ar2C>$Ar*C8$BBF;S&I-E%Lr$   c                    d} t        dt        d            }t        dt        d      t              }t        ddd	      |ft        ddd
ddd      |ft        ddd
dd      |ft        ddd
dd      |ft        ddd
d      |ft        dddd      |ft        ddddd      |ft        ddddd      |ft        dddd      |ff	| <   y )Nz <-03>3<-02>,M3.5.0/-2,M10.5.0/-1r  r  r   z-02r  r   r_  r  r     ry     r   r  r   rv  rH     r  )r  N03N02r  r  r  ri  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._add  s    7EUIB$78CUIB$7?C $2&V4$2r2r2C@$2r2C=$2r2C=$2r*C8$B+S&9$B3S$?$B3S$?$B+S&9
E%Lr$   c                    d} t        dt        d            }t        dt        d      t              }t        ddd	d
d      |ft        ddd	d
dd      |ft        ddd	d
dd
      |ft        ddd	dd      |ft        dd	dd
ddd      |ft        dd	dd
ddd      |ft        dd	dd
ddd
      |ft        dd	dddd      |ff| <   y )Nz%AAA3BBB,M3.2.0/01:30,M11.1.0/02:15:45r  r  r   r  r    r_  r   r   r   r  r  r   rL  r   ,   rz  -   r  r  s      r%   r  z,TZStrTest._populate_test_cases.<locals>._add  s    <EUIB$78CUIB$7?C $2q!,c6:$2q"15sC@$2q"15sC@$2q"-sF;$Aq"b&93G$Aq"bq93E$Aq"bq93E$Aq"b13?	E%Lr$   )r  r  r  r   )rW   r  r  r  r  r  ri  s      @@@@r%   r  zTZStrTest._populate_test_cases  s    		N xxgg		 
	6 
	 
	. 
	 
	0 
	 
	. 

	 

	 

	 

	 
	 
	( 
	 
	@ 
	 
	, 
	 
	$ r$   )rC   rD   rE   r   r   r  r  r  rZ   r  r  r  r  r  r  r  rG   rH   s   @r%   r  r    sh    FFD
C$ $ & & 9;1:,8\ | |r$   r  c                      e Zd ZeZy)
CTZStrTestNr'  r#   r$   r%   r#  r#    r(  r$   r#  c                  l     e Zd ZeZ fdZed        Zed        Zd Z	d Z
d Zd Zd Zd	 Zd
 Z xZS )ZoneInfoCacheTestc                V    | j                   j                          t        |           y r(   )rj   rk   r>   r?   rl   s    r%   r?   zZoneInfoCacheTest.setUp!  s    

 r$   c                    t         S r(   rn   r/   s    r%   ro   zZoneInfoCacheTest.zoneinfo_data%  rp   r$   c                0    | j                   j                  gS r(   rr   r/   s    r%   r1   zZoneInfoCacheTest.tzpath)  rs   r$   c                d    | j                  | j                  d      | j                  d             y NAmerica/Los_Angeles)r   rj   r/   s    r%   test_ephemeral_zonesz&ZoneInfoCacheTest.test_ephemeral_zones-  s'    JJ,-tzz:O/P	
r$   c                l    | j                  d      }| j                  d      }| j                  ||       y )NAustralia/Sydney)rj   r   r0   tz0tz1s      r%   test_strong_refsz"ZoneInfoCacheTest.test_strong_refs2  s.    jj+,jj+,c3r$   c                    | j                  d      }| j                   j                  d      }| j                  ||       y )NEurope/Lisbon)rj   r   r   r/  s      r%   test_no_cachezZoneInfoCacheTest.test_no_cache8  s4    jj)jj!!/2c"r$   c                    	 | j                  d      }| j                  g       5  | j                  d      }d d d        | j                  |       y # 1 sw Y   xY wr*  )rj   r:   r   )r0   zi0zi1s      r%   test_cache_reset_tzpathz)ZoneInfoCacheTest.test_cache_reset_tzpath?  sZ    	 jj./  $ 	4**23C	4 	c3	4 	4s   AAc                    | j                  d      }| j                   j                  d        | j                  d      }| j                  ||       y )Nr+  	only_keys)rj   rk   r   )r0   la0la1s      r%   test_clear_cache_explicit_nonez0ZoneInfoCacheTest.test_clear_cache_explicit_noneL  sE    jj./

.jj./c"r$   c                   	 | j                  d      }| j                  d      }| j                   j                  dg       | j                  d      }| j                  d      }| j                  ||       | j                  ||       y )Nr+  Europe/Dublinr;  rj   rk   r   r   )r0   r=  dub0r>  dub1s        r%   test_clear_cache_one_keyz*ZoneInfoCacheTest.test_clear_cache_one_keyS  sv    Cjj./zz/*

*?)@Ajj./zz/*c"dD!r$   c                x   | j                  d      }| j                  d      }| j                  d      }| j                   j                  ddg       | j                  d      }| j                  d      }| j                  d      }| j                  ||       | j                  ||       | j                  ||       y )Nr+  rA  
Asia/Tokyor;  rB  )r0   r=  rC  tok0r>  rD  tok1s          r%   test_clear_cache_two_keysz+ZoneInfoCacheTest.test_clear_cache_two_keys`  s    jj./zz/*zz,'

,o> 	 	
 jj./zz/*zz,'c"t$dD!r$   )rC   rD   rE   r   r   r?   rF   ro   r1   r,  r2  r5  r9  r?  rE  rJ  rG   rH   s   @r%   r%  r%    sX    F   + +

 # #""r$   r%  c                      e Zd ZeZy)CZoneInfoCacheTestNr'  r#   r$   r%   rL  rL  r  r(  r$   rL  c                  `     e Zd ZeZ fdZed        Zed        Zd Z	d Z
d Zd Zd Z xZS )	ZoneInfoPickleTestc                V   | j                   j                          t        j                         5 }|j	                  t        j                  | j                               | j                  |j                         j                         d d d        t        | 1          y # 1 sw Y   xY wr(   )rj   rk   r7   r8   r9   test_supportset_zoneinfo_moduler   r;   r<   r=   r>   r?   r@   s     r%   r?   zZoneInfoPickleTest.setUpy  sv    

 !!# 	3u @ @ MNOOEMMO112	3 			3 	3s   ABB(c                    t         S r(   rn   r/   s    r%   ro   z ZoneInfoPickleTest.zoneinfo_data  rp   r$   c                0    | j                   j                  gS r(   rr   r/   s    r%   r1   zZoneInfoPickleTest.tzpath  rs   r$   c                   t        t        j                  dz         D ]  }| j                  |      5  | j	                  d      }t        j
                  ||      }t        j                  |      }| j                  d      5  | j                  ||       d d d        t        j                  |      }| j                  d      5  | j                  ||       d d d        d d d         y # 1 sw Y   VxY w# 1 sw Y    xY w# 1 sw Y   xY w)Nr   protorA  protocolzIs non-pickled ZoneInfotestzIs unpickled ZoneInfo)rh  pickleHIGHEST_PROTOCOLr   rj   dumpsloadsr   r0   rV  zi_inpklzi_rtzi_rt2s         r%   test_cache_hitz!ZoneInfoPickleTest.test_cache_hit  s    622Q67 	1EE* 
1

?3ll559S)\\'@\A 0MM%/0  c*\\'>\? 1MM%01
1 
1	10 01 1
1 
1s<   ADC*/DC6D*C3/D6C?;DD	c                   t        t        j                  dz         D ]  }| j                  |      5  | j	                  d      }t        j
                  ||      }~| j                  j                          t        j                  |      }t        j                  |      }| j                  ||       d d d         y # 1 sw Y   xY w)Nr   rU  rA  rW  )	rh  r[  r\  r   rj   r]  rk   r^  r   r_  s         r%   test_cache_missz"ZoneInfoPickleTest.test_cache_miss  s    622Q67 
	-EE* 	-

?3ll559

&&(S)c*eV,	- 	-
	-	- 	-s   B B==C	c                   t        t        j                  dz         D ]  }| j                  |      5  | j                  j                  d      }t        j                  ||      }t        j                  |      }| j                  d      5  | j                  ||       d d d        t        j                  |      }| j                  d      5  | j                  ||       d d d        | j	                  d      }| j                  d      5  | j                  ||       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   -xY w# 1 sw Y   ExY w)	Nr   rU  rA  rW  zNot the pickled objectrY  zNot a second unpickled objectzNot a cached object)	rh  r[  r\  r   rj   r   r]  r^  r   )r0   rV  zi_no_cachera  rb  rc  zi_caches          r%   r5  z ZoneInfoPickleTest.test_no_cache  s7   622Q67 	6EE* 6"jj11/Bll;?S)\\'?\@ 9$$UK89  c*\\'F\G 4$$UF34  ::o6\\'<\= 6$$UH566 6	69 94 46 66 6sT   AED4 /EE "+EE E4D=9E E	EEEE"	c           	     Z   d}t        | j                  j                  |      d      5 }| j                  j	                  |      }|j                  d       | j                  j	                  ||      }d d d        dfdfg}|D ]  \  }}t        t        j                  dz         D ]]  }| j                  ||      5  | j                  t        j                        5  t        j                  ||	       d d d        d d d        _  y # 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   xY w)
NrA  r   r   r   zZoneInfo with keyzZoneInfo without keyr   )r   rV  rW  )r   ro   r   rj   r   r  rh  r[  r\  r   r   PicklingErrorr]  )	r0   ra   r   zi_nokeyzi_keyr   r   r   rV  s	            r%   test_from_filez!ZoneInfoPickleTest.test_from_file  s!   $$$2237> 	6!zz++A.HFF1IZZ))!)5F		6 ()-.


 ( 	9MB	v66:; 9\\IU\C 9**6+?+?@ 9R%899 99	9	6 	69 99 9s0   A
D	< D!D	4D!	DDD!!D*c                x   t        t        j                  dz         D ]u  }| j                  |      5  d}| j	                  |      }t        j
                  ||      }t        j                  |      }| j                  ||       t        | j                  j                  |      d      5 }| j                  j                  ||      }d d d        t        j
                  ||      }t        j                  |      }	| j                  ||	       | j                  t        j                        5  t        j
                  |       d d d        t        j
                  ||      }
t        j                  |
      }| j                  ||       d d d        x y # 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   xY w)Nr   rU  rA  rW  r   r   )rh  r[  r\  r   rj   r]  r^  r   r   ro   r   r   r   rk  )r0   rV  ra   r   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  sg   
 622Q67 	+EE* +%ZZ_R%8 ,,u-b'*$,,::3?F =! JJ000<E= R%8 ,,u-b'*&&v';';< 8LL78 R%8 ,,u-b'*)+ +	+= =8 8+ +s>   A7F/*FA%F/-F#AF/F F/#F,(F//F9	)rC   rD   rE   r   r   r?   rF   ro   r1   rd  rf  r5  rn  rv  rG   rH   s   @r%   rN  rN  v  sN    F   + +1-6&9&+r$   rN  c                      e Zd ZeZy)CZoneInfoPickleTestNr'  r#   r$   r%   rx  rx    r(  r$   rx  c                  .    e Zd Z	 eZed        Zd Zd Zy)CallingConventionTestc                    t         S r(   rn   r/   s    r%   ro   z#CallingConventionTest.zoneinfo_data  rp   r$   c                   t        | j                  j                  d      d      5 }| j                  t              5  | j
                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   )r   )r   ro   r   r   r   rj   r   )r0   r   s     r%   rn  z$CallingConventionTest.test_from_file  sq    $$$22594@ 	-A""9- -

$$!$,-	- 	-- -	- 	-s"   A6A*A6*A3	/A66A?c                    | j                  t              5  | j                  j                  dg       d d d        y # 1 sw Y   y xY wNr   )r   r   rj   rk   r/   s    r%   test_clear_cachez&CallingConventionTest.test_clear_cache  s9    y) 	,JJ""E7+	, 	, 	,s	   <AN)	rC   rD   rE   r   r   rF   ro   rn  r  r#   r$   r%   rz  rz    s&    BF -
,r$   rz  c                      e Zd ZeZy)CCallingConventionTestNr'  r#   r$   r%   r  r    r(  r$   r  c                  b    e Zd ZeZeej                  d               Zd Z	d Z
d Zd Zd Zd Zy)	
TzPathTestc              #    K   d}t               }|}	 t        5  t        j                  j	                  |d       }| t        j                  |<   d  d d d        ||u ry |t        j                  |= y |t        j                  |<   y # 1 sw Y   6xY w# ||u rw |t        j                  |= w |t        j                  |<   w xY ww)NPYTHONTZPATH)objectr   osenvironget)valuepath_varunset_env_sentinelold_envs       r%   python_tzpath_contextz TzPathTest.python_tzpath_context  s      "#X$	/ **..48',

8$
 ,, JJx('.

8$ 
 ,, JJx('.

8$s3   CB 8BB -CB
B .B??Cc                x   	 dg fddgfdt         j                   dddgfg}|D ]|  \  }}| j                  |      5  | j                  |      5  | j                  j                          | j                  j                  }| j                  ||       d d d        d d d        ~ y # 1 sw Y   xY w# 1 sw Y   xY w)Nrg  z/etc/zoneinfo/a/b/cz/d/e/fr1   )r  pathsepr  r   r   reset_tzpathTZPATHassertSequenceEqual)r0   	new_pathsnew_path_varexpected_resultr1   s        r%   test_env_variablezTzPathTest.test_env_variable  s    JH/0bjj\(8X*>?
	 .7 	F)L/++L9 F\\\6 FKK,,.![[//F,,V_EFF F	FF FF Fs$   B0AB$B0$B-)B00B9	c           	     d   ddgddgddgddgddgddgg}|D ]  \  }}t         j                  j                  |      }| j                  |      5  | j	                  d	|
      5  | j                  | j                  j                        5  | j                  j                          d d d        d d d        | j                  j                  }| j	                  d|
      5  | j                  ||       d d d        d d d         y # 1 sw Y   `xY w# 1 sw Y   dxY w# 1 sw Y   ,xY w# 1 sw Y   xY w)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  )r0   r   input_pathsexpected_pathsr  r1   s         r%    test_env_variable_relative_pathsz+TzPathTest.test_env_variable_relative_paths+  sO   #R(=( #B'<( 8<
 )

, ,6 	E'Kzz{3H++H5 	E\\)h\? 3 ))$++*J*JK 300233 ++\\*x\@ E,,V^DE	E 	E	E3 33 3E E	E 	EsT   D%!&DD	"D*1D%D.D%D
DDD%D"D%%D/	c                    | j                   j                  dg       | j                  | j                   j                  d       y )Nr  to)r  )r   r  r  r  r/   s    r%   test_reset_tzpath_kwargz"TzPathTest.test_reset_tzpath_kwargO  s3      XJ /  !3!3[Ar$   c                    g d}|D ]W  }| j                  |      5  | j                  t              5  | j                  j	                  |       d d d        d d d        Y y # 1 sw Y   xY w# 1 sw Y   pxY w)N)r  r  r  r  r  r  )r  r  )r   r   r   r   r  )r0   r   r  s      r%    test_reset_tzpath_relative_pathsz+TzPathTest.test_reset_tzpath_relative_pathsT  sz    

 & 	=K+6 =&&z2 =KK,,,<== =	== == =s"   A.A"A."A+'A..A7	c                    g d}|D ]V  }| j                  |      5  | j                  t              5  | j                  j	                  |       d d d        d d d        X y # 1 sw Y   xY w# 1 sw Y   oxY w)N)z!/etc/zoneinfo:/usr/share/zoneinfos!   /etc/zoneinfo:/usr/share/zoneinfor   )r  )r   r   r   r   r  )r0   r   	bad_values      r%   test_tzpath_type_errorz!TzPathTest.test_tzpath_type_errorb  sw    

 $ 	8II. 8&&y1 8KK,,Y788 8	88 88 8s"   A-A!A-!A*&A--A6	c                J   ddg}dg}| j                  |      5  | j                  j                  }d d d        | j                  |      5  | j                  j                  }d d d        | j                  |       | j                  |       y # 1 sw Y   ^xY w# 1 sw Y   :xY w)Nz/onez/twoz/three)r:   r   r  r  )r0   tzpath_0tzpath_1query_0query_1s        r%   test_tzpath_attributez TzPathTest.test_tzpath_attributen  s    F#:  * 	)kk((G	)   * 	)kk((G	) 	  73  73	) 	)	) 	)s   B	BBB"N)rC   rD   rE   r   r   staticmethodr7   contextmanagerr  r  r  r  r  r  r  r#   r$   r%   r  r    sI    F/  /(F"EHB
=
84r$   r  c                      e Zd ZeZy)CTzPathTestNr'  r#   r$   r%   r  r  |  r(  r$   r  c                  `    e Zd ZeZed        Zed        Zd Z	d Z
d Zd Zd Zd Zd	 Zd
 Zy)
TestModulec                    t         S r(   rn   r/   s    r%   ro   zTestModule.zoneinfo_data  rp   r$   c                    | j                   j                  d      }t        |d      5 }|j                         cd d d        S # 1 sw Y   y xY w)Nr   r   )ro   r   r   read)r0   	zone_filer   s      r%   
_UTC_byteszTestModule._UTC_bytes  sB    &&44U;	)T" 	a668	 	 	s   AAc                   	 t         j                  j                  |      st        | d      |j	                  dd      ^}}|r5t        j
                  t         j                  j                  ||      d       t         j                  j                  ||      }t        |d      5 }|j                  | j                         d d d        y # 1 sw Y   y xY w)Nz does not exist./r   T)exist_okwb)
r  r   existsFileNotFoundErrorrsplitmakedirsr  r   r  r  )r0   ra   tz_rootroot_dirtailzonefile_pathr   s          r%   
touch_zonezTestModule.touch_zone  s    	 ww~~g&#wi/?$@AA**S!,4KKWh7$GWc2-& 	%!GGDOO$	% 	% 	%s   &CCc                    | j                  t              5  | j                  j                   d d d        y # 1 sw Y   y xY wr(   )r   r   r   NOATTRIBUTEr/   s    r%   test_getattr_errorzTestModule.test_getattr_error  s2    ~. 	$KK##	$ 	$ 	$s   6?c                    	 t        | j                  j                        }t        t        | j                              }||z
  }| j	                  |       y r(   )setr   __all__dirassertFalse)r0   module_all_setmodule_dir_set
differences       r%   test_dir_contains_allz TestModule.test_dir_contains_all  sD    MT[[001S-.#n4
$r$   c                j    	 t        | j                        }t        |      }| j                  ||       y r(   )r  r   r  assertCountEqual)r0   
module_dirmodule_uniques      r%   test_dir_uniquezTestModule.test_dir_unique  s,    C%
Jj-8r$   c                d   | j                  | j                  j                  g      5  | j                  | j                  j                         | j
                  j                         }t        | j                  j                        }||z  }| j                  ||       d d d        y # 1 sw Y   y xY wr(   )	r:   ro   r1   
assertTruer   r   available_timezonesr  r   )r0   available_keyszoneinfo_keysunions       r%   test_available_timezonesz#TestModule.test_available_timezones  s      $"4"4";";!<= 		3OOD..334![[<<>N 2 2 7 78M "N2E]E2		3 		3 		3s   A6B&&B/c                    t        j                         5 }| j                  d|       | j                  |g      5  | j                  j                         }| j                  d|       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzMars/Olympus_Mons)r   TemporaryDirectoryr  r:   r   r  assertIn)r0   tdr  s      r%   "test_available_timezones_weirdzonez-TestModule.test_available_timezones_weirdzone  s    ((* 	CbOO/4$$bT* C!%!@!@!B1>BC		C 	CC C		C 	Cs"   %B-A8'B8B	=BBc           	        h d}t        |      }|D cg c]  }d| 	 }}|D cg c]  }d| 	 }}d|fd||z   fd||z   fd||z   |z   fg}t        j                         5 }|D ]  \  }}	t        j                  j                  ||      }
t        j                  |
       |	D ]  }| j                  ||
        | j                  |
g      5  | j                  |      5  | j                  j                         }| j                  ||       d d d        d d d         	 d d d        y c c}w c c}w # 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N>   Europe/ParisAmerica/Indiana/Indianapolisr   rG  r  America/Santiagor.  r+  zposix/zright/	base_treebase_and_posixbase_and_right	all_trees)listr   r  r  r   r  mkdirr  r:   r   r   r  r   )r0   r   r  r  
posix_tree
right_treeri  r  	case_nametreer  ra   actuals                r%   test_folder_exclusionsz!TestModule.test_folder_exclusions  st   	
 N	,56qqcl6
6,56qqcl6
6 )$y:56y:56)j0:=>	
 ((* 	;b#( 
;	4'',,r95! 2COOC12 (('3 ;i0 ;!%!@!@!B((:;; ;
;	; 	; 76$; ;; ;	; 	;sG   D&D+"A)ED<-D0	
D<
E0D95D<<EEEc                T   ddh}t        |      dgz   }t        j                         5 }|D ]  }| j                  ||        | j	                  |g      5  | j
                  j                         }| j                  ||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzAmerica/New_Yorkr  
posixrules)r  r   r  r  r:   r   r  r   )r0   r   r  r  ra   r  s         r%   test_exclude_posixrulesz"TestModule.test_exclude_posixrules  s    

 H~.((* 	3b )R() $$bT* 388:  23		3 	33 3		3 	3s#   ,B-BBB	BB'N)rC   rD   rE   r   r   rF   ro   r	   r  r  r  r  r  r  r  r  r  r#   r$   r%   r  r    sW    F   
% $%9
3C";H3r$   r  c                      e Zd ZeZy)CTestModuleNr'  r#   r$   r%   r  r    r(  r$   r  c                      e Zd Z	 d Zd Zy)ExtensionBuiltTestc                    | j                  t        t        j                  d             | j	                  t        t
        j                  d             y )N_weak_cache)r  hasattrr  rh   r  r   r/   s    r%   test_cache_locationz&ExtensionBuiltTest.test_cache_location  s8     	!4!4mDE 4 4mDEr$   c                    dd l }| j                  |j                  t        j                               | j                  |j                  t
        j                               y r  )gcr  
is_trackedr   rh   r  )r0   r  s     r%   test_gc_trackedz"ExtensionBuiltTest.test_gc_tracked  s;    k&:&:;<j&9&9:;r$   N)rC   rD   rE   r
  r  r#   r$   r%   r  r    s    F<r$   r  )frozenc                  0    e Zd ZU ded<   ded<   eZded<   y)rO  r   r   r   r   r   N)rC   rD   rE   __annotations__r   r   r#   r$   r%   rO  rO    s    KCr$   rO  c                      e Zd ZU ded<   ded<   ded<   ed        Zed        Zed        Zed	        Zed
        Z	ed        Z
y)rP  r   r]   rO  r   r   c                    | j                   | j                  j                  z
  j                  t        j
                        S )Nr   )r]   r   r   r`   r   r   r/   s    r%   r   zZoneTransition.transition_utc"  s7    $"4"4">">>GG<< H 
 	
r$   c                ^    	 | j                   j                  | j                  j                  kD  S r(   r   r   r   r/   s    r%   rO   zZoneTransition.fold(  s(    ,!!++d.?.?.I.IIIr$   c                ^    	 | j                   j                  | j                  j                  k  S r(   r  r/   s    r%   r   zZoneTransition.gap-  s(    +!!++d.?.?.I.IIIr$   c                \    | j                   j                  | j                  j                  z
  S r(   )r   r   r   r/   s    r%   deltazZoneTransition.delta2  s%      **T-?-?-I-IIIr$   c                d    | j                   r| j                  | j                  z   S | j                  S r(   rO   r]   r  r/   s    r%   r   zZoneTransition.anomaly_start6  s&    99??TZZ//??"r$   c                d    | j                   s| j                  | j                  z   S | j                  S r(   r  r/   s    r%   r   zZoneTransition.anomaly_end=  s&    yy??TZZ//??"r$   N)rC   rD   rE   r  rF   r   rO   r   r  r   r   r#   r$   r%   rP  rP    s    
 

 J J J J J J # # # #r$   rP  c                  ,    e Zd ZddZd Zd Zd Zd Zy)r   c                v    t        j                  |      | _        g | _        || _        | j                  |       y r(   )r   r   r1   r   r   _populate_tzpath)r0   source_jsonr1   r   s       r%   __init__zZoneInfoData.__init__F  s.    ll6*	k*r$   c                     | j                   |z  S r(   r  rv   s     r%   r   zZoneInfoData.path_from_keyL  s    {{S  r$   c                   t        |d      5 }t        j                  |      }d d d        d   }|j                         D ]  \  }}| j                  j                  |       | j                  |      }| j                  r| j                  |      }n|}| j                  |      }	|	j                  j                  dd       t        |	d      5 }|j                  |       d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   T)r  parentsr  )r   jsonloadr   r   r   _decode_textr   _convert_to_v1r   parentr  r  )
r0   r  r   zoneinfo_dictro   ra   r  raw_datar   destinations
             r%   r  zZoneInfoData._populate_tzpathO  s    +t$ 	) IIaLM	) &f-'--/ 	JCIIS!((/Hww**84,,S1K$$dD$Ak4( A 		) 	)  s   C)C5)C25C>	c                    dj                  t        t        j                  |            }t	        j
                  |      }t        j                  |      S )Nr$   )r  r  r   r  base64	b85decoder   
decompress)r0   contentsr*  decodeds       r%   r&  zZoneInfoData._decode_textc  s:    88C

H56""8,w''r$   c                    t        |dd       }d}|dz   }t        j                  d|||       \  }}}}}	}
|dz  |	dz  z   |
z   |dz  z   |z   |z   }||z  }d|d| z   }|S )	NrL  r     r  r  r@  r|  s   TZif )r  r  unpack)r0   r0  r  header_start
header_endr  r  r  r  r  r  	file_sizer  s                r%   r'  zZoneInfoData._convert_to_v1i  s    hqm$!B&
@F8L4A
=7GWg
 aKk k 	
  	 	Z	(1Y"77 
r$   N)F)rC   rD   rE   r   r   r  r&  r'  r#   r$   r%   r   r   E  s    +!((r$   r   c                  t    e Zd Zed        Zed        Zed        Zed        Zed        Zed        Z	dZ
dZy)ry   c                >    | j                         j                         S r(   )_get_zonedumpr   rW   s    r%   rz   zZoneDumpData.transition_keys  s      "''))r$   c                (    | j                         |   S r(   )r:  )rW   ra   s     r%   r^   z%ZoneDumpData.load_transition_examples  s      "3''r$   c                n    | j                   s| j                          | j                   j                         S r(   )_FIXED_OFFSET_ZONES_populate_fixed_offsetsr   r;  s    r%   r}   zZoneDumpData.fixed_offset_zones  s,    &&'')&&,,..r$   c                R    | j                   s| j                          | j                   S r(   )_ZONEDUMP_DATA_populate_zonedump_datar;  s    r%   r:  zZoneDumpData._get_zonedump  s#    !!'')!!!r$   c                <    dt        dt        t              i| _        y r~  )rO  r   r>  r;  s    r%   r?  z$ZoneDumpData._populate_fixed_offsets  s     :eT40#
r$   c                    d }d }d }d }d }d }d }d }d	 }	d
 }
 |        |        |        |        |        |        |        |        |	        |
       d
| _         y )Nc                     t        dt        d            } t        dt              }t        t	        ddd      | |      gS )Nr?  rq  r   rr  rs  r   rO  r   r   rP  r   )r?  rr  s     r%   _Africa_Abidjanz=ZoneDumpData._populate_zonedump_data.<locals>._Africa_Abidjan  s@    UId$;<CUD)C xa3S#> r$   c                    t        dt        t              } t        dt        t              }t        dt        t               }t        dt        t              }t        t	        dddd      | |      t        t	        dddd      ||       t        t	        dd	d
d      | |      t        t	        dddd      ||      t        t	        dddd      ||      t        t	        dd	dd      ||      gS )Nz+00z+01i  r_  r   r   r  r  r@     rH  r  r   rE  )rO  r   rb  rP  r   )P00_sP01_dP00_dP01_ss       r%   _Africa_Casablancaz@ZoneDumpData._populate_zonedump_data.<locals>._Africa_Casablanca  s    udD1EueU3EudUF3EueT2E xaQ7FxaQ7FxaQ7F xb"a8%GxaA6uExaA6uE
 
r$   c                 (   t        dt        d      t              } t        dt        d      t              }t        dt        d      t              }t        d	t        d      t              }t        d
t        d      t              }t	        t        dddddd      | |      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        ddd d      ||      t	        t        ddd!d      ||      gS )"Nr?  i&r   PSTir   PDTiPWTPPTrD  r   rN  rM  rJ  r   i~  r_  rA  rH  r  i  rE  i  r|  rF  r{  r  i  r   i	  r  r@  rO  r   r   rb  rP  r   )r?  rP  rQ  rR  rS  s        r%   _America_Los_AngeleszBZoneDumpData._populate_zonedump_data.<locals>._America_Los_Angeles  sn   UIf$=tDCUIB$7>CUIB$7?CUIB$7?CUIB$7?C xb"b!Q?cJxaQ7cBxaQ7cBxb"a8#sCxaA6SAxaR8#sCxaQ7cBxaA6SAxb!Q7cBxaQ7cBxb!Q7cB r$   c                 V   t        dt        d      t              } t        dt        d      t              }t        dt        d      t              }t        dt        d      t              }t        d	t        d
      t              }t	        t        ddd      | |      t	        t        ddd      ||      t	        t        ddd      ||      t	        t        ddd      ||      t	        t        ddd      ||      t	        t        ddd      ||      t	        t        ddd      ||      gS )Nr?  ir   SMTz-05ir
  ir  iib  r   iv  rH  |  rJ  i  r_  r  rM  r`  rL  r|  rE  r   rT  )r?  rW  N05N04r  s        r%   _America_Santiagoz?ZoneDumpData._populate_zonedump_data.<locals>._America_Santiago  s    UIf$=tDCUIf$=tDCUIf$=tDCUIf$=tDCUIf$=uEC xa3S#>xa4c3?xa3S#>xa4c3?xb"5sC@xa3S#>xa3S#> r$   c            
         t        dt        d      t              } t        dt        d      t              }t	        t        ddd      | |      t	        t        dd	d
d      ||       t	        t        dd	d	d      ||       gS )NJSTi~  r   JDT頌  i  r  r   rE  rM  r   i  rT  )r]  r^  s     r%   _Asia_Tokyoz9ZoneDumpData._populate_zonedump_data.<locals>._Asia_Tokyo  sw    UIe$<dCCUIe$<eDC xa3S#>xaQ7cBxaA6SA r$   c                    t        dt        d      t              } t        dt        d      t              }t        dt        d      t              }t	        t        dd	d
      | |      t	        t        dd
d
dd
      ||      t	        t        dddd	      ||      t	        t        ddd
d      ||      t	        t        dddd	      ||      t	        t        ddd
d      ||      t	        t        dddd	      ||      gS )Nr?  ič  r   r  r_  r  i  ig  r   r   }  r   r_  r   r  rL  rH  rJ  r`  rT  )r?  r  r  s      r%   _Australia_Sydneyz?ZoneDumpData._populate_zonedump_data.<locals>._Australia_Sydney  s    UIe$<dCCfi&>EDfi&>FD xa3S$?xaAq94FxaQ7tDxaA6dCxb!Q7tDxaA6dCxb!Q7tD r$   c                    t        dt        d      t              } t        dt        d      t              }t        dt        d      t              }t        dt        t              }t        d	t        t              }t        dt        t               }t        dt        t              }t	        t        d
ddd      | |      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      gS )Nr?  i$r   DMTir  i  rr  r  iX  r|  r   r   rX  r  r  rH  r   r_  rb  rL  i  r  r  i	  r  rT  )r?  re  IST_0GMT_0r  GMT_1IST_1s          r%   _Europe_Dublinz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Dublin  s9   UIe$<dCCUIe$<dCCui&=uEEudD1EUE51CudUF3EueT2E xaA6SAxaQ7eDxb!Q7FxaA6sCxaQ7Fxb"a8%GxaQ7Fxb"a8%G	 	r$   c                    t        dt        t              } t        dt        t              }t        dt        t              }t        dt        d      t              }t	        t        ddd	d
      | |      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||      t	        t        dddd      ||       gS )NWETWESTCETCESTi   r   i  r_  r  r   rE  r  r   i  r  r  re  rA  rH  )rO  r   rb  r   rP  r   )rl  rm  rn  ro  s       r%   _Europe_Lisbonz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Lisbon  s    UD$/CfeU3DUE40Cfi&=uED xaQ7dCxaQ7sCxaQ7dCxaQ7sCxaQ7dCxb"a8$D r$   c                 ~   t        dt        d      t              } t        dt        t              }t        dt        t              }t	        t        ddd      | |      t	        t        d	d
dd      ||      t	        t        d	ddd      ||      t	        t        dd
dd      ||      t	        t        dddd      ||      gS )Nr?  ir   rr  r  i7  rM  r   i  r_  r  rH  r  r   i  r  r   rT  )r?  rr  r  s      r%   _Europe_Londonz<ZoneDumpData._populate_zonedump_data.<locals>._Europe_London&  s    UIc$:DACUD$/CUE51C xb!4c3?xaQ7cBxb"a8#sCxaQ7cBxb"a8#sC r$   c            	     h   t        dt        d      t              } t        dt        d      t              }t        dt        d      t              }t        dt        d	      t              }t        t	        d
dd      | |      t        t	        ddd      ||      t        t	        ddd      ||      gS )Nr?  ilr   z-1040i jz-10i`sz+14i  im  r   i  rH  i  rM  rA  rF  )r?  N1040N10P14s       r%   _Pacific_KiritimatizAZoneDumpData._populate_zonedump_data.<locals>._Pacific_Kiritimati3  s    UIf$=tDCw	&(A4HEUIf$=tDCUIe$<dCC xa3S%@xb!4eSAxb"5sC@	 r$   )
ru  zAfrica/Casablancar+  r  r.  rG  rA  r4  r  zPacific/Kiritimati)rA  )rW   rG  rN  rU  r[  r`  rc  rj  rp  rr  rw  s              r%   rB  z$ZoneDumpData._populate_zonedump_data  s{    		$	0	"			(			 ./!3!5#7#9 1 3 1 3%-+-+-+-"5"7
r$   N)rC   rD   rE   rZ   rz   r^   r}   r:  r?  rB  rA  r>  r#   r$   r%   ry   ry     s    * * ( ( / / " "
 
 

 i
 i
V Nr$   ry   __main__)X
__future__r   r-  r7   r_   importlib.metadata	importlibr   r$  r  r   r[  r  r)   r  r   unittestr   r   r   r   r   	functoolsr	   test.test_zoneinfor
   rP  test.test_zoneinfo._supportr   r   r   test.support.import_helperr   r   get_modulesr   r  metadataHAS_TZDATA_PKGPackageNotFoundErrorr!   r"   r   r   __file__r(  DATA_DIRr    r   rb  r&   r+   r-   rJ   rg   r   r  r  r  r&  r*  r4  skipIfr6  r;  r=  r  r  r#  r%  rL  rN  rx  rz  r  r  r  r  r  TestCaser  	dataclassrO  rP  r   ry   rC   mainr#   r$   r%   <module>r     s>   "     	  	   	     > > % 7 W W 4V2,224 Z)N  7<<!((61// |M @ :Z6?$4 Z6z@-L @-F	#8, 		$9= 	3< 3*0 \ $n  N#, ##* N; a$ aH] B  BJ Q")9 Q"h* o+*: o+d, ,, ,&2 v4"2 v4r* x3! x3v* <** <, d#  $ d#%# %# $%#P> >BI IX zHMMO iA .. Ns   J5 5KK