+
    Bi=                   L   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t H!t! ^ R	I"H#t#H$t$ ]#! R
4      t%]PL                  ! 4       w  t't( ]PR                  PS                  R4       Rt*Rs,Rs-Rs.]
P^                  ! ]04      Pb                  R,          t2]2R,          t3]	Ph                  Pk                  R4      ^ ,          t6]! ^ 4      t7]! ^R7      t8R t9R t: ! R R];4      t< ! R R4      t= ! R R4      t> ! R R]=]!4      t? ! R R]?4      t@ ! R R]>]?4      tA ! R  R!]>]@4      tB ! R" R#]?4      tC ! R$ R%]C4      tD ! R& R']?4      tE ! R( R)]E4      tF]P                  ! ]*'       * R*4       ! R+ R,]?4      4       tH]P                  ! ]*'       * R*4       ! R- R.]H4      4       tI ! R/ R0]!4      tJ ! R1 R2]J4      tK ! R3 R4]!4      tL ! R5 R6]L4      tM ! R7 R8]=]!4      tN ! R9 R:]N4      tO ! R; R<]=]!4      tP ! R= R>]P4      tQ ! R? R@]!4      tR ! RA RB]R4      tS ! RC RD]=]!4      tT ! RE RF]T4      tU ! RG RH]!4      tV ! RI RJ]V4      tW ! RK RL]P                  4      tY]P                  ! RRM7       ! RN RO4      4       t[]P                  ! RRM7       ! RP RQ4      4       t\ ! RR RS4      t] ! RT RU4      t^]_RV8X  d   ]P                  ! 4        R# R#   ]PR                  PV                   d    Rt* ELsi ; i)W    )annotationsN)datedatetimetime	timedeltatimezone)cached_property)MISSING_C_DOCSTRINGSEnvironmentVarGuard)_support)TZPATH_TEST_LOCKZoneInfoTestBase)import_moduleCleanImportlzmatzdataTFdatazzoneinfo_data.jsonzx:hoursc                     \         P                  ! \        P                  ! R R7      4      s\        \        \        R,          4      s\        \        \        R,          RR7      sR# )zoneinfo)prefixv2v1T)r   N)	pathlibPathtempfilemkdtempTEMP_DIRZoneInfoDataZONEINFO_JSONZONEINFO_DATAZONEINFO_DATA_V1     7/usr/lib/python3.14/test/test_zoneinfo/test_zoneinfo.pysetUpModuler(   /   s@    
 ||H,,J?@H 4@M#M8d?tLr&   c                 :    \         P                  ! \        4       R # N)shutilrmtreer    r%   r&   r'   tearDownModuler-   9   s    
MM(r&   c                      ] tR t^=tRtR# )CustomErrorr%   N__name__
__module____qualname____firstlineno____static_attributes__r%   r&   r'   r/   r/   =       r&   r/   c                  L   a  ] tR t^AtRt]R 4       t]R 4       tV 3R ltRt	V ;t
# )TzPathUserMixina0  
Adds a setUp() and tearDown() to make TZPATH manipulations thread-safe.

Any tests that require manipulation of the TZPATH global are necessarily
thread unsafe, so we will acquire a lock and reset the TZPATH variable
to the default state before each test and release the lock after the test
is through.
c                	    R # r*   r%   selfs   &r'   tzpathTzPathUserMixin.tzpathK       r&   c                	    R # Tr%   r:   s   &r'   block_tzdataTzPathUserMixin.block_tzdataO   r>   r&   c           
     	^  < \         P                  ! 4       ;_uu_ 4       pVP                  V P                  V P                  V P
                  \        R 7      4       V P                  VP                  4       P                  4       RRR4       \        SV `-  4        R#   + '       g   i     L ; i))rA   lockN)
contextlib	ExitStackenter_contexttzpath_contextr<   rA   r   
addCleanuppop_allclosesupersetUpr;   stack	__class__s   & r'   rM   TzPathUserMixin.setUpS   s{    !!##u##KK!%!2!2) $  OOEMMO112 $ 	 $#s   A%BB,	r%   )r1   r2   r3   r4   __doc__propertyr<   rA   rM   r5   __classcell__rP   s   @r'   r8   r8   A   s:         r&   r8   c                  B   a  ] tR t^atRt ! R R]4      tV 3R ltRtV ;t	# )DatetimeSubclassMixinzH
Replaces all ZoneTransition transition dates with a datetime subclass.
c                  &    ] tR t^ft]R 4       tRtR# )&DatetimeSubclassMixin.DatetimeSubclassc                	    V ! VP                   VP                  VP                  VP                  VP                  VP
                  VP                  VP                  VP                  R 7	      # ))tzinfofold)	yearmonthdayhourminutesecondmicrosecondr[   r\   )clsdts   &&r'   from_datetime4DatetimeSubclassMixin.DatetimeSubclass.from_datetimeg   sN    				yyWW
 
r&   r%   N)r1   r2   r3   r4   classmethodrf   r5   r%   r&   r'   DatetimeSubclassrY   f   s    		 
	r&   ri   c              #  	   <"   \         SV `  V4      pV FE  pVP                  pV P                  P	                  V4      p\
        P                  ! W5R 7      pVx  KG  	  R# 5i))
transitionN)rL   load_transition_examplesrk   ri   rf   dataclassesreplace)r;   keytransition_examplesztre   new_dtnew_ztrP   s   &&     r'   rl   .DatetimeSubclassMixin.load_transition_examplesu   sT     #g>sC%BB**88<F ((?FL	 &s   AA r%   )
r1   r2   r3   r4   rR   r   ri   rl   r5   rT   rU   s   @r'   rW   rW   a   s    8  r&   rW   c                     a  ] tR t^~t]tRtV 3R lt]R 4       t	]R 4       t
R tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tRtV ;t# )ZoneInfoTestZoneInfoc                	X   < \         SV `  4        V P                  P                  4        R # r*   )rL   rM   klassclear_cacher;   rP   s   &r'   rM   ZoneInfoTest.setUp   s     	

 r&   c                	    \         # r*   r#   r:   s   &r'   zoneinfo_dataZoneInfoTest.zoneinfo_data       r&   c                	0    V P                   P                  .# r*   r   r<   r:   s   &r'   r<   ZoneInfoTest.tzpath       ""))**r&   c                	$    V P                  V4      # r*   ry   r;   ro   s   &&r'   zone_from_keyZoneInfoTest.zone_from_key   s    zz#r&   c                	*    \         P                  4       # r*   )ZoneDumpDatatransition_keysr:   s   &r'   zonesZoneInfoTest.zones   s    ++--r&   c                	*    \         P                  4       # r*   )r   fixed_offset_zonesr:   s   &r'   r   ZoneInfoTest.fixed_offset_zones   s    ..00r&   c                	,    \         P                  V4      # r*   )r   rl   r   s   &&r'   rl   %ZoneInfoTest.load_transition_examples   s    44S99r&   c           
     	   V P                  4        FQ  pV P                  V4      ;_uu_ 4        V P                  V4      pV P                  \	        V4      V4       R R R 4       KS  	  V P
                  P                  ^ ,          pV P
                  P                  V4      p\        VR4      ;_uu_ 4       pV P                  RVR7      ;_uu_ 4        V P                  P                  V4      pV P                  \	        V4      \        V4      4       R R R 4       R R R 4       R #   + '       g   i     EK!  ; i  + '       g   i     L/; i  + '       g   i     R # ; i)Nrbz	Repr test)	test_namepath)r   subTestr   assertEqualstrr   keyspath_from_keyopenry   	from_filerepr)r;   ro   zifile_key	file_pathfzi_ffs   &      r'   test_strZoneInfoTest.test_str   s    ::<Cc""'',  R#. #"   %%**1-&&44X>	)T""a)DD

,,Q/  UT%[9 E #" #"" ED #""s0   -D 2EA D5	E D25E EE	c                	   \        \        V P                  4       4      4      pV P                  V4      pV P                  pV P                  R R7      ;_uu_ 4        V P                  \        V4      V4       RRR4       V P                  P                  ^ ,          pV P                  P                  V4      p\        VR4      ;_uu_ 4       pV P                  P                  WdR7      pRRR4       V P                  RR7      ;_uu_ 4        V P                  \        X4      V4       RRR4       \        VR4      ;_uu_ 4       pV P                  P                  V4      pRRR4       V P                  RR7      ;_uu_ 4        V P                  \        X4      V4       RRR4       R#   + '       g   i     EL8; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)zfrom key)nameNr   ro   zfrom file with keyzfrom file without key)nextiterr   ry   
class_namer   assertRegexr   r   r   r   r   r   )	r;   ro   r   r   r   r   r   r   zi_ff_nks	   &        r'   	test_reprZoneInfoTest.test_repr   sl    4

%&ZZ___
\\z\**T"Xz2 + %%**1-&&44X>	)T""aJJ(((9E # \\3\44T%[*5 5 )T""azz++A.H # \\6\77T(^Z8 87 +**
 #" 54 #" 877s<   F%
F9	GG?G2%F6	9G		G	G/	2H	c           
     	l  a  \        \        S P                  4       4      4      pV 3R  lpRS P                  V3RS P                  P                  V3RVR33pV F  w  rEpV! V4      pS P                  V4      ;_uu_ 4        S P                  VP                  V4       RRR4       S P                  V R24      ;_uu_ 4        S P                  \        4      ;_uu_ 4        RVn        RRR4       RRR4       K  	  R#   + '       g   i     Lh; i  + '       g   i     L1; i  + '       g   i     K  ; i)c                   < \        SP                  P                  V 4      R 4      ;_uu_ 4       pSP                  P	                  V4      uuRRR4       #   + '       g   i     R# ; i)r   N)r   r   r   ry   r   )ro   r   r;   s   & r'   from_file_nokey8ZoneInfoTest.test_key_attribute.<locals>.from_file_nokey   sE    d((66s;TBBazz++A. CBBBs   AA&	zPrimary constructorno_cacher   Nz
: readonlyz
Some/Value)
r   r   r   ry   r   r   r   ro   assertRaisesAttributeError)r;   ro   r   constructorsmsgconstructorexpectedr   s   f       r'   test_key_attributeZoneInfoTest.test_key_attribute   s    4

%&	/
 #DJJ4,,c2/40
 +7&ChS!B c""  2 # Z011&&~66)BF 7 21 +7 #"
 76 211s0   ?C< D"D&D"<DDD""D3c                	    . ROpV FJ  pV P                  V P                  P                  4      ;_uu_ 4        V P                  V4       RRR4       KL  	  R#   + '       g   i     Ka  ; i)Eurasia/BadzoneN)r   BZQzAmerica.Los_Angelesu   🇨🇦u   America/NewYorkEurope)r   moduleZoneInfoNotFoundErrorry   r;   bad_keysbad_keys   &  r'   test_bad_keysZoneInfoTest.test_bad_keys   sO    
  G""4;;#D#DEE

7# FE  EEEs   AA(c                	    . ROpV F:  pV P                  \        4      ;_uu_ 4        V P                  V4       RRR4       K<  	  R#   + '       g   i     KQ  ; i)/America/Los_AngelesN)r   zAmerica/Los_Angeles/z../zoneinfo/America/Los_AngeleszAmerica/../America/Los_AngeleszAmerica/./Los_Angeles)r   
ValueErrorry   r   s   &  r'   test_bad_keys_paths ZoneInfoTest.test_bad_keys_paths   sD    
  G"":..

7# /.  ...s   AAc                	    R R.pV FZ  p\         P                  ! V4      pV P                  \        4      ;_uu_ 4        V P                  P                  V4       RRR4       K\  	  R#   + '       g   i     Kq  ; i)r&   Ns   AAAA3               )ioBytesIOr   r   ry   r   )r;   	bad_zonesbad_zonefobjs   &   r'   test_bad_zonesZoneInfoTest.test_bad_zones   s^     
	
 "H::h'D"":..

$$T* /. "...s   A''A8c           
     	H   \        \        V P                  4       4      4      pV P                  V4      p\	        R ^^\
        P                  R7      \        3\	        R ^^4      \        3\        R ^^4      \        3\        ^ 4      \        3^ \        3R\        3.pV F[  w  rEV P                  VR7      ;_uu_ 4        V P                  V4      ;_uu_ 4        VP                  V4       RRR4       RRR4       K]  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)  r[   z
2019-01-01)valN)r   r   r   r   r   r   utcr   r   	TypeErrorr   r   r   fromutc)r;   ro   zone
bad_valuesr   exc_types   &     r'   test_fromutc_errors ZoneInfoTest.test_fromutc_errors  s    4

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

 (MC#&&&&x00LL% 1 '& (00 '&&s$   ;DC='D=DDD!c                	   V P                  R 4      p\        R^^VR7      pV P                  VP                  4       \        4       V P                  VP                  4       \        4       V P                  VP                  4       R 4       R# )UTC  r   N)ry   r   r   	utcoffsetZEROdsttzname)r;   r   re   s   &  r'   test_utcZoneInfoTest.test_utc  sb    ZZdAq,.4(e,r&   c           
     	   . pV P                  4        F  pV P                  V4       Fu  pVP                  VVP                  \	        ^R7      ,
          VP
                  34       VP                  VVP                  \	        ^R7      ,           VP                  34       Kw  	  K  	  V F  w  r$pV P                  W$VR7      ;_uu_ 4        V P                  V4      pVP                  VR7      pV P                  VP                  4       VP                  V4       V P                  VP                  4       VP                  V4       V P                  VP                  4       VP                  V4       RRR4       K  	  R#   + '       g   i     K  ; i)   )days)ro   re   offsetr   N)r   rl   appendrk   r   offset_beforeoffset_afterr   r   rn   r   r   r   r   )r;   
test_casesro   zone_transitionre   r   tzis   &      r'   test_unambiguousZoneInfoTest.test_unambiguous  s>   
::<C#'#@#@#E!!'22YA5FF'55 !!'22YA5FF'44 $F  $  *OCV#V<<((-ZZsZ+  fmmR@  1A1A2F  6::r: =<  *<<<s   B%E::Fc           	     	    . pV P                  4        EF  pR . R. /pV P                  V4       EF4  pVP                  '       d   VR ,          pM VP                  '       d   VR,          pMRpK@  VP                  \        ^R7      ,
          pVP                  V^ VP                  34       VP                  V^VP                  34       VP                  pVP                  V^ VP                  34       VP                  V^VP                  34       VP                  \        ^R7      ,           pVP                  V^ VP                  34       VP                  V^VP                  34       VP                  \        ^R7      ,
          pVP                  V^ VP                  34       VP                  V^VP                  34       VP                  pVP                  V^ VP                  34       VP                  V^VP                  34       VP                  \        ^R7      ,           pVP                  V^ VP                  34       VP                  V^VP                  34       EK7  	  VP                  4        F  w  rVP                  W(3V34       K  	  EK  	  V F  w  w  r(pV P                  W(R7      ;_uu_ 4        V P                  V4      p	V F  w  rzpVP                  WR7      pV P                  VP                  4       VP                  V4       V P                  VP!                  4       VP                   V4       V P                  VP#                  4       VP"                  V4       K  	  RRR4       K  	  R#   + '       g   i     K  ; i)foldsgapsNseconds)ro   grpr\   r[   )r   rl   r\   gapanomaly_startr   r   r   r   anomaly_enditemsr   r   rn   r   r   r   r   )r;   r   ro   testsrq   
test_groupno_peephole_optre   r   r   r\   r   s   &           r'   test_folds_and_gaps ZoneInfoTest.test_folds_and_gaps<  s   
::<Cb&"-E33C8777!&wJVVV!&vJ
 '+O %%	!(<<!!2q"*:*:";<!!2q"*:*:";<%%!!2q"*:*:";<!!2q"//":;%%	!(<<!!2q"*:*:";<!!2q"//":;^^i&::!!2q"*:*:";<!!2q"//":;^^!!2q"//":;!!2q"//":;^^i&::!!2q"//":;!!2q"//":;G 9J $);;=!!C:z":; $1O  T ",JS#//((-(-$Bf:B$$RYY[&--D$$R\\^V5E5ErJ$$RVVXvzz2> ). 0/ ",///s   =B1M<<Nc           
     	>   V P                  4        F  pV P                  V4      pV P                  VR 7      ;_uu_ 4        V P                  V4       F  pVP                  '       g   K  VP
                  pV\        ^R7      ,
          pV\        ^R7      ,           pVP                  V4      pV P                  VP                  ^ Wt34       VP                  V4      pV P                  VP                  ^W34       K  	  RRR4       K  	  R#   + '       g   i     EK  ; i)r   r   N)	r   r   r   rl   r\   transition_utcr   
astimezoner   )	r;   ro   r   rq   dt_utcdt_before_utcdt_after_utc	dt_beforedt_afters	   &        r'   test_folds_from_utc ZoneInfoTest.test_folds_from_utcs  s    ::<C##C(B#&&77<B777 ..F$*Yq-A$AM#)Ia,@#@L - 8 8 <I$$Y^^Q8KL+66r:H$$X]]A7IJ = '&  &&&s   B=D

Dc           	     	   V P                  4        F  pV P                  V4      p\        ^^^RVR7      pV P                  VR7      ;_uu_ 4        V P	                  VP                  4       R4       V P	                  VP                  4       R4       V P	                  VP                  4       R4       RRR4       K  	  R#   + '       g   i     K  ; i   i  r   r   N)r   r   r   r   assertIsr   r   r   )r;   ro   r   ts   &   r'   test_time_variable_offset&ZoneInfoTest.test_time_variable_offset  s    ::<C##C(BRQb1A#&&ahhj$/akkmT2aeegt, '&	   '&&s   A!B>>Cc           	     	   V P                  4        F  w  rV P                  V4      p\        ^^^RVR7      pV P                  VR7      ;_uu_ 4        V P	                  VP                  4       VP
                  4       V P	                  VP                  4       VP                  4       V P	                  VP                  4       VP                  4       RRR4       K  	  R#   + '       g   i     K  ; ir  )r   r   r   r   r   r   r   r   )r;   ro   r   r   r  s   &    r'   test_time_fixed_offset#ZoneInfoTest.test_time_fixed_offset  s    224KC##C(BRQb1A#&&  V]];  0@0@A  &**5 '& 5
 '&&s   A?CC/c                	0    ! R  R\         4      pRpV P                  V4      pV! V4      p V P                  V4      pV P                  VP                  4       V P	                  WC4       R#   \
         d     T P                  TP                  4        R# i ; i)c                  8    ] tR tRtRtR t]P                  tRtR# )7ZoneInfoTest.test_cache_exception.<locals>.Incomparablei  Fc                	    R V n         \        hr@   )	eq_calledr/   )r;   others   &&r'   __eq__>ZoneInfoTest.test_cache_exception.<locals>.Incomparable.__eq__  s    !%!!r&   )r   N)	r1   r2   r3   r4   r   r"  r   __hash__r5   r%   r&   r'   Incomparabler    s    I" ||Hr&   r%  America/Los_AngelesN)r   ry   assertFalser   r  r/   
assertTrue)r;   r%  ro   tz1tz2s   &    r'   test_cache_exception!ZoneInfoTest.test_cache_exception  s    	$3 	$ $jjo3	$**S/C S]]+MM##	  	+OOCMM*	+s   A+ +&BBr%   )r1   r2   r3   r4   py_zoneinfor   r   rM   rS   r   r<   r   r   r   rl   r   r   r   r   r   r   r   r   r   r  r  r  r  r+  r5   rT   rU   s   @r'   rv   rv   ~   s    FJ!   + +.1::"90*2$$	+&$-;:5?nK$	-	6$ $r&   rv   c                  R    ] tR tRt]t]P                  ! ]R4      R 4       t	R t
RtR# )CZoneInfoTesti  z6Signature information for builtins requires docstringsc                F   ^ RI pV P                  P                  V P                  P                  V P                  P                  3pV FA  pV P                  VR7      ;_uu_ 4        VP                  P                  V4       RRR4       KC  	  R#   + '       g   i     KX  ; i)z1Ensure that C module has valid method signatures.N)method)inspectry   rz   r   r   r   	Signaturefrom_callable)r;   r2  must_have_signaturesr1  s   &   r'   test_signaturesCZoneInfoTest.test_signatures  s{     	 JJ""JJJJ   

 +FV,,!!//7 -, +,,,s   %BB c                D   R pRR.pRpV P                  V4      pV P                  V4       FT  pVP                  '       g   K  VP                  P                  \
        8X  g   K8  VP                  P                  VR7      p M	  R F  pV'       d
   V! X4      pMXpV P                  VR7      ;_uu_ 4        VP                  V4      pV P                  VP                  ^4       V P                  VP                  ^ 4       RRR4       K  	  R#   + '       g   i     K  ; i)	a  Test that fold isn't mutated when no change is necessary.

The underlying C API is capable of mutating datetime objects, and
may rely on the fact that addition of a datetime object returns a
new datetime; this test ensures that the input datetime to fromutc
is not mutated.
c                     ! R  R\        V 4      4      pV! V P                  V P                  V P                  V P                  V P
                  V P                  V P                  V P                  V P                  R7	      # )c                  (   a  ] tR tRtV 3R ltRtV ;t# )LCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclassi  c                	F   < V\        ^ 4      8X  d   V # \        SV `	  V4      # r   )r   rL   __add__r;   r!  rP   s   &&r'   r>  TCZoneInfoTest.test_fold_mutate.<locals>.to_subclass.<locals>.SameAddSubclass.__add__  s#    	!,# 7?511r&   r%   )r1   r2   r3   r4   r>  r5   rT   rU   s   @r'   SameAddSubclassr;    s    2 2r&   rA  r   )
typer]   r^   r_   r`   ra   rb   rc   r\   r[   )re   rA  s   & r'   to_subclass3CZoneInfoTest.test_fold_mutate.<locals>.to_subclass  s`    2$r( 2 #				WWyy
 
r&   FTEurope/Londonr   )subclassN)FT)r   rl   r\   r   r   r   r	  rn   r   r   r   )	r;   rC  rF  ro   r   rq   examplere   
dt_fromutcs	   &        r'   test_fold_mutateCZoneInfoTest.test_fold_mutate  s    	( 4=$//4Bwww2??44<++3323> 5
 &H )x00ZZ^
  !4  !,	 10 & 100s   6A
DDr%   N)r1   r2   r3   r4   
c_zoneinfor   unittestskipIfr
   r6  rI  r5   r%   r&   r'   r/  r/    s/    F__)MO8O80-r&   r/  c                      ] tR tRtRtR# )ZoneInfoDatetimeSubclassTesti  r%   Nr0   r%   r&   r'   rO  rO    r6   r&   rO  c                      ] tR tRtRtR# )CZoneInfoDatetimeSubclassTesti  r%   Nr0   r%   r&   r'   rQ  rQ    r6   r&   rQ  c                  8   a  ] tR tRt]V 3R l4       tR tRtV ;t# )ZoneInfoSubclassTesti  c                	   < \         SV `  4         ! R  RV P                  4      pRV n        V P                  V n        Wn        R# )c                      ] tR tRtRtR# )3ZoneInfoSubclassTest.setUpClass.<locals>.ZISubclassi  r%   Nr0   r%   r&   r'   
ZISubclassrV    s    r&   rW  N)rL   
setUpClassry   r   parent_klass)rd   rW  rP   s   & r'   rX  ZoneInfoSubclassTest.setUpClass  s8    	 	 &99	r&   c                	    V P                  R 4      pV P                  R 4      pV P                  W4       V P                  WP                   4       V P                  W P                  4       R# )rE  N)rY  ry   assertIsNotassertIsInstance)r;   base_objsub_objs   &  r'   test_subclass_own_cache,ZoneInfoSubclassTest.test_subclass_own_cache  sT    $$_5**_-+h(9(9:gzz2r&   r%   )	r1   r2   r3   r4   rh   rX  r`  r5   rT   rU   s   @r'   rS  rS    s     3 3r&   rS  c                      ] tR tRt]tRtR# )CZoneInfoSubclassTesti  r%   Nr1   r2   r3   r4   rK  r   r5   r%   r&   r'   rc  rc        Fr&   rc  c                  ,    ] tR tRt]R 4       tR tRtR# )ZoneInfoV1Testi  c                	    \         # r*   )r$   r:   s   &r'   r   ZoneInfoV1Test.zoneinfo_data  s    r&   c              #  	   "   \        R ^^4      p\        RR7      pW#,
          pW#,           p\        P                  V4       F%  pWFP                  u;8:  d
   V8:  g   K  M K!  Vx  K'  	  R# 5i)  r   N        )r   r   r   rl   rk   )r;   ro   epochmax_offset_32min_dtmax_dtrq   s   &&     r'   rl   'ZoneInfoV1Test.load_transition_examples  s[      q!$!'2&&77<B0&00 =s   AA,A,r%   N)r1   r2   r3   r4   rS   r   rl   r5   r%   r&   r'   rg  rg    s       
r&   rg  c                      ] tR tRt]tRtR# )CZoneInfoV1Testi'  r%   Nrd  r%   r&   r'   rs  rs  '  re  r&   rs  z4Skipping tzdata-specific tests: tzdata not installedc                  @    ] tR tRtRt]R 4       t]R 4       tR tRt	R# )TZDataTestsi+  a!  
Runs all the ZoneInfoTest tests, but against the tzdata package

NOTE: The ZoneDumpData has frozen test data, but tzdata will update, so
some of the tests (particularly those related to the far future) may break
in the event that the time zone policies in the relevant time zones change.
c                	    . # r*   r%   r:   s   &r'   r<   TZDataTests.tzpath7  s    	r&   c                	    R # Fr%   r:   s   &r'   rA   TZDataTests.block_tzdata;  s    r&   c                	&    V P                  VR 7      # )r   r   r   s   &&r'   r   TZDataTests.zone_from_key?  s    zzcz""r&   r%   N)
r1   r2   r3   r4   rR   rS   r<   rA   r   r5   r%   r&   r'   ru  ru  +  s4        #r&   ru  c                      ] tR tRt]tRtR# )CTZDataTestsiC  r%   Nrd  r%   r&   r'   r~  r~  C  s	     Fr&   r~  c                  N    ] tR tRt]tR tR tR tR t	R t
R tR tRR
 ltRtR	# )WeirdZoneTestiJ  c                	   \        R \        ^^^R7      ) 4      p\        R\        ^R7      ) 4      p\        \        R^^	^4      W4      .pRpV P	                  W44      pV P
                  P                  V4      p\        R^^	^VR7      p\        R^^
^VR7      pWq3W33 F  w  rV P                  RV	R7      ;_uu_ 4        V P                  V	P                  4       V
P                  4       V P                  V	P                  4       V
P                  4       V P                  V	P                  4       V
P                  4       R	R	R	4       K  	  \        R^^	^VR7      \        R^^	^^^\        P                  R7      3\        R
^^^VR7      \        R
^^^\        P                  R7      3.pV F{  w  rV P                  RVR7      ;_uu_ 4        VP                  V4      pV P                  W4       VP                  \        P                  4      pV P                  W4       R	R	R	4       K}  	  R	#   + '       g   i     EK  ; i  + '       g   i     K  ; i)LMT)r   minutesr   STDr   [  STD6r   local)r   re   N  r   )
ZoneOffsetr   ZoneTransitionr   construct_zonery   r   r   r   r   r   r   r   r   r
  )r;   r  r  transitionsafterzfr   dt0dt1re   r   dtsdt_localr  	dt_actualdt_utc_actuals   &               r'   test_one_transition!WeirdZoneTest.test_one_transitionM  s   B!J JK!3 34 8D!Q3S>
   4ZZ!!"%tQ1R0tQAb1:z2JB7r22  fmm<  1A1AB  6::6 32 3 q!Qr2q!QAhllC
 q!R3q!R=	
 !$H9::"--b1	  5 ( 3 3HLL A  7 ;: !$! 322" ;::s   >A?H*	AH?*H<?Ic           	     	   \        R \        \        4      p\        \        R^^4      W4      .pRpV P	                  W#4      pV P
                  P                  V4      p\        R^^4      \        R^	^4      \        R^^4      \        R^^4      \        R^^4      .pV F  pVP                  VR7      pV P                  VR7      ;_uu_ 4        V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       R	R	R	4       K  	  R	#   + '       g   i     K  ; i)
DSTrk  zSTD0DST-1,0/0,J365/25l  i  r    r   re   N)r  ONE_Hr  r   r  ry   r   rn   r   r   r   r   r   )r;   r  r  r  r  r   r  re   s   &       r'   test_one_zone_dstWeirdZoneTest.test_one_zone_dstv  s'   u-8D!Q/:
 (  4ZZ!!"% T1a T1b!T1a T2q!T1a 
 B2&B$$  cjj9  ?  3773 %$ $$$s   A?EE)c                	   \        R \        \        4      p\        R^\        ,          \        4      p. p\        RR4       FQ  pVP	                  \        \        V^^^4      W4      4       VP	                  \        \        V^^^4      W!4      4       KS  	  RpV P                  W54      pV P                  P                  V4      p\        R^^4      V3\        R^^4      V3\        R^^4      V3\        R^^4      V3.pV F  w  rV	P                  VR7      p	V P                  V	R7      ;_uu_ 4        V P                  V	P                  4       V
P                  4       V P                  V	P                  4       V
P                  4       V P                  V	P                  4       V
P                  4       R	R	R	4       K  	  \!        ^ VR7      pV P                  R
4      ;_uu_ 4        V P#                  VP                  4       R	4       V P#                  VP                  4       R	4       V P#                  VP                  4       R	4       R	R	R	4       R	#   + '       g   i     EK_  ; i  + '       g   i     R	# ; i)r  r       i  i  r   r  NzTesting datetime.time)r  r  r   ranger   r  r   r  ry   r   rn   r   r   r   r   r   r   r  )r;   r  r  r  r]   r  r  r   casesre   r   r  s   &           r'   test_no_tz_strWeirdZoneTest.test_no_tz_str  s   t,E	51$%DxaA6A xb!Q7B	 &   4
 ZZ!!"% dAq!3'dAq!3'dB"C(dAq!3'	
  JB2&B$$  fmm<  1A1AB  6::6 %$   2\\122MM!((*d+MM!++-.MM!%%'4( 32 %$$ 322s   0A?I!A!I!I!I2	c           	     	   \        R \        \        4      \        R\        \        4      .pV EF!  p\        RW"4      .pRpV P	                  W44      pV P
                  P                  V4      p\        R^^4      \        R^^4      \        R^^4      .pV F  pVP                  VR7      pV P                  W(R7      ;_uu_ 4        V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       RRR4       K  	  EK$  	  R#   + '       g   i     K  ; i)	r  r  Nr  r  rk  r  r   )r   re   )r  r   r  r  r  ry   r   r   rn   r   r   r   r   r   )	r;   offsetsr   r  r  r  r   r  re   s	   &        r'   test_tz_before_only!WeirdZoneTest.test_tz_before_only  s+    udD)ueU+

 F tV4K E$$[8B%%b)B q!$q!$q!$C ZZrZ*\\\77$$RYY[&--@$$R\\^V5E5EF$$RVVXvzz: 87 # & 877s   A?E	E&c                	    V P                  . R 4      pV P                  \        4      ;_uu_ 4        V P                  P	                  V4       RRR4       R#   + '       g   i     R# ; i)r  N)r  r   r   ry   r   )r;   r  s   & r'   test_empty_zoneWeirdZoneTest.test_empty_zone  sF      R(z**JJ  $ +***s   AA'	c                   \        R\        RR7      4      p\        R\        4      pRW3\        \	        R^^4      W4      RW"3.pRpV P                  W44      pV P                  P                  VRR7      p\        P                  V3\        P                  V3\	        R	^^4      V3\	        R^^4      V3.pV F  w  rVP                  VR
7      p
V P                  RWR7      ;_uu_ 4        V P                  V
P                  4       V	P                  4       V P                  V
P                  4       V	P                  4       V P                  V
P                  4       V	P                  4       RRR4       K  	  \        P                  \        P                  \        RR7      ,           3\	        R^^^^+^44      \	        R^^4      3\	        R	^^^^;^;R4      \	        R^^^ ^^R4      3\	        R^^^ ^^4      \	        R^^^ ^^4      3\	        R^^4      \	        R^^4      3\        P                  \        P                  3.pV Fi  w  rVP                  VR
7      p
VP                  \         P"                  R
7      pV P                  VP%                  V4      V
4       V P                  W4       Kk  	  R#   + '       g   i     EK  ; i)a  Test when a transition is in the far past or future.

Particularly, this is a concern if something:

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

This actually occurs "in the wild", as some time zones on Ubuntu (at
least as of 2020) have an initial transition added at ``-2**58``.
r  i  r   GMTx  GMT0Africa/Abidjanr   iw  r   r   )r   re   r   Nij  ik  ?B rk  8l            l         )r  r   r   r  r   r  ry   r   minmaxrn   r   r   r   r   r   r   r   r
  )r;   r  r  r  r  r  r   offset_casesdt_naiver   re   	utc_casesnaive_dtnaive_dt_utcr  s   &              r'   test_zone_very_large_timestamp,WeirdZoneTest.test_zone_very_large_timestamp  s    	$ 78% "8D!Q/:!
   4ZZ!!"*:!; \\3\\3dB#S)dAq!3'	
 !-H!!!,B8BB  fmm<  1A1AB  6::6 CB !- \\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"H!!!,B!)))>FV..r2B7R( '0# CBBs   )A?J++J=c                	   \        R \        \        4      p\        \        R^^4      W4      .pRpV P	                  W#4      pV P
                  P                  VR R7      p\        R^^VR7      pV P                  R4      ;_uu_ 4        V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       RRR4       \        ^ VR7      pV P                  R4      ;_uu_ 4        V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	r   rk  UTC0r   r   r   zdatetime.datetimeNzdatetime.time)r  r   r  r   r  ry   r   r   r   r   r   r   r   )r;   r   r  r  r  r   re   r  s   &       r'   $test_fixed_offset_phantom_transition2WeirdZoneTest.test_fixed_offset_phantom_transition"  sQ   d+%htQ&:CEF  4ZZ!!"%!0dAq,\\-..RYY[#**5R\\^S]];RVVXsww/ /
 2\\/**QXXZ4Q[[]CMM:QUUWcgg. +* /. +**s   A?F<3A?G<G	G 	Nc                	(   . p. p. p. . .p. . .p. . .p	Rp
RpW.pR p\        \        W4      R R7      pV F  pVw  ppp\        V4       F  w  pw  ppVV,          pVV,          pV	V,          pVe   VTu;8:  d   V8:  g   M K;  VV9  d   VP                  V4       VV9  d   VP                  V4       Vf   Kq  VP                  V4       VP                  VP	                  V4      4       K  	  K  	  \        V4      p\        V4      p\        V4      p\        P                  ! 4       pRp\        \        V^34      4       EF  pVV,          pVV,          pV	V,          pVV,          p\        4       p. pV F  p \        V P                  P                  4       4      p!\        V P                  4      p"\        V4      p#VP                  V!V"V#34       VV P                   P#                  R4      R,           ,          pK  	  \%        V4      p\        V4      p$\        V4      p%\        V4      p&VP'                  R4       VP'                  RV,          4       VP'                  R4       VP'                  \(        P*                  ! R	VVVV%V$V&4      4       VP'                  \(        P*                  ! R
V% V 2.VO5!  4       VP'                  \(        P*                  ! R
V% R2.VO5!  4       V F*  p'VP'                  \(        P*                  ! R.V'O5!  4       K,  	  VP'                  \%        V4      4       VP'                  \(        P*                  ! V R2.VO5!  4       VP'                  \(        P*                  ! V R2.VO5!  4       VP'                  \(        P*                  ! R
V R2.VO5!  4       V^ 8  g   EKx  VP'                  R4       VP'                  VP#                  R4      4       VP'                  R4       EK  	  VP-                  ^ 4       V# )r   c                    \        V \        4      '       d   V # V P                  '       d%   \        V P                  P                  4       4      pMR pWP                  V P                  3# r*   )
isinstancetuplerk   intr	  	timestampr   r   )rq   
trans_times   & r'   zt_as_tuple1WeirdZoneTest.construct_zone.<locals>.zt_as_tupleF  sR    
 "e$$	}}} !2!2!<!<!>?
!
 0 0"//BBr&   c                    V ^ ,          # r=  r%   )xs   &r'   <lambda>.WeirdZoneTest.construct_zone.<locals>.<lambda>U  s    !A$r&   r   lascii       TZifs   %d>6l>Bz>lbbb   
)i   rl  )l         l            )r  q                  )sortedmap	enumerater   indexlenr   r   r  r  	bytearrayr  r   total_secondsboolr   r   encodebyteswritestructpackseek)(r;   r  r  versionisutcisstdleap_secondsoffset_liststrans_times_liststrans_idx_listsv1_rangev2_rangerangesr  rq   r  r   r   vdt_mindt_maxr  trans_times	trans_idxisutcntisstdcntleapcntzonefile
time_types	time_typeabbrstrttinfosr   utcoffisdstabbrindtypecnttimecntcharcntttinfos(   &&&&                                    r'   r  WeirdZoneTest.construct_zone7  s    BxHr(((%	C S:OB683J|'0'8##FF&q//2+A.	)j2F2 /NN=1w.NN<0)&&z2$$W]]<%@A% (9 . e*u:l#::<
sGQ<()A"1oG+A.K'*I"1I  kGG!V--;;=>VZZ(g,w786==//87BB " 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 *j 	ar&   r%   )N   )r1   r2   r3   r4   r-  r   r  r  r  r  r  r  r  r  r5   r%   r&   r'   r  r  J  s:    F'8R44))V";H%;)z/*t tr&   r  c                      ] tR tRt]tRtR# )CWeirdZoneTesti  r%   Nrd  r%   r&   r'   r	  r	    re  r&   r	  c                     a  ] tR tRt]t^ t^t^t]	V 3R l4       t
]	R 4       tR tR tR tR tR t]	R	 4       tR
tV ;t# )	TZStrTesti  c                	d   < \         SV `  4        V P                  4        V P                  4        R # r*   )rL   rX  _populate_test_casespopulate_tzstr_header)rd   rP   s   &r'   rX  TZStrTest.setUpClass  s&      "!!#r&   c                	    \        4       p\        ^4       FA  pVR,          pVR,          pVR,          pV\        P                  ! R^ ^ ^ ^ ^ ^ 4      ,          pKC  	  \	        V4      V n        R# )r   r     3r  Nr  )r  r  r  r  r  _tzif_header)rd   out_s   &  r'   r  TZStrTest.populate_tzstr_header  sd    k
 qA7NC4KC9C 6;;uaAq!Q77C  !:r&   c                D   \         P                  ! V P                  4      pVP                  ^ ^4       VP	                  R4       VP	                  VP                  R4      4       VP	                  R4       VP                  ^ 4       V P                  P                  W!R7      # )z/Creates a zoneinfo file following a POSIX rule.r  r  r   )r   r   r  r  r  r  ry   r   )r;   tzstrr  s   && r'   zone_from_tzstrTZStrTest.zone_from_tzstr  sw    ::d//0a 	wu||G,-wazz##H#88r&   c           	     	   V P                   P                  4        F  w  rV P                  VR 7      ;_uu_ 4        V P                  V4      pRRR4       V F  w  rEpVP	                  XR7      pV P                  WVR7      ;_uu_ 4        V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       V P                  VP                  4       VP                  4       RRR4       K  	  K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r  Nr   )r  re   r   )	r   r  r   r  rn   r   r   r   r   )r;   r  r  r   r  r   r  re   s   &       r'   test_tzstr_localizedTZStrTest.test_tzstr_localized  s     OO113LEE**))%0 + (-#!%%R%0\\V\DD$$RYY[&--@$$R\\^V5E5EF$$RVVXvzz: ED (-	 4** EDDs   D	A?D-	D*-D>c                	   V P                   P                  4        EFB  w  rV P                  VR 7      ;_uu_ 4        V P                  V4      pRRR4       V EF  w  rEpW`P                  8X  d   K  WEP
                  ,
          P                  \        P                  R7      pVP                  X4      pVP                  VR7      p	V P                  W4       W`P                  8X  d)   V P                  VP                  VP                  V4       MV P                  VP                  ^ 4       V	P                  \        P                  4      pV P                  W4       EK  	  EKE  	  R#   + '       g   i     EL ; i)r  Nr   )r   r  r   r  GAPr   rn   r   r   r
  r   FOLDr\   )
r;   r  r  r   r  r   dt_typer  dt_actdt_exps
   &         r'   test_tzstr_from_utcTZStrTest.test_tzstr_from_utc  s    OO113LEE**))%0 + .3)'hh&"%5%55>>#<< ? 
  **2.!)))4  0ii'$$V[[(--J$$V[[!4  **8<<8  0- .3	 4***s   E$$E5c                	   . R NRNRNRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NpV F7  pV P                  VR57      ;_uu_ 4        V P                  V4       R6R6R64       K9  	  R6#   + '       g   i     KN  ; i)7AAA24zAAA+24zAAA-24zAAA24BBB,J60/2,J300/2zAAA+24BBB,J60/2,J300/2zAAA-24BBB,J60/2,J300/2zAAA4BBB24,J60/2,J300/2zAAA4BBB+24,J60/2,J300/2zAAA4BBB-24,J60/2,J300/2zAAA4:00BBB,J60/2,J300/2zAAA4:59BBB,J60/2,J300/2zAAA4BBB5:00,J60/2,J300/2zAAA4BBB5:59,J60/2,J300/2zAAA4:00:00BBB,J60/2,J300/2zAAA4:00:59BBB,J60/2,J300/2zAAA4BBB5:00:00,J60/2,J300/2zAAA4BBB5:00:59,J60/2,J300/2zAAA24:59:59BBB5,J60/2,J300/2zAAA-24:59:59BBB5,J60/2,J300/2zAAA4BBB24:59:59,J60/2,J300/2zAAA4BBB-24:59:59,J60/2,J300/2zAAA4BBB,M12.1.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M12.1.1/2zAAA4BBB,M1.5.1/2,M1.1.1/2zAAA4BBB,M1.1.1/2,M1.5.1/2zAAA4BBB,M1.1.6/2,M2.1.1/2zAAA4BBB,M1.1.1/2,M2.1.6/2zAAA4BBB,0/2,20/2zAAA4BBB,0/2,0/14zAAA4BBB,20/2,365/2zAAA4BBB,365/2,365/14zAAA4BBB,J1/2,J20/2zAAA4BBB,J1/2,J1/14zAAA4BBB,J20/2,J365/2zAAA4BBB,J365/2,J365/14zAAA4BBB,J60/167,J300/2zAAA4BBB,J60/+167,J300/2zAAA4BBB,J60/-167,J300/2zAAA4BBB,J60/2,J300/167zAAA4BBB,J60/2,J300/+167zAAA4BBB,J60/2,J300/-167zAAA4BBB,J60/2:00,J300/2zAAA4BBB,J60/2:59,J300/2zAAA4BBB,J60/2,J300/2:00zAAA4BBB,J60/2,J300/2:59zAAA4BBB,J60/2:00:00,J300/2zAAA4BBB,J60/2:00:59,J300/2zAAA4BBB,J60/2,J300/2:00:00zAAA4BBB,J60/2,J300/2:00:59zAAA4BBB,J60/167:59:59,J300/2zAAA4BBB,J60/-167:59:59,J300/2zAAA4BBB,J60/2,J300/167:59:59zAAA4BBB,J60/2,J300/-167:59:59r  N)r   r  )r;   tzstrsr  s   &  r'   test_extreme_tzstrTZStrTest.test_extreme_tzstr	  s   C
C
 C
 	C

 $C
 %C
 %C
 %C
 &C
 &C
 &C
 &C
 'C
 'C
" )#C
$ )%C
& *'C
( *)C
, +-C
. ,/C
0 +1C
2 ,3C
6 )7C
8 )9C
< (=C
> (?C
B (CC
D (EC
H IC
J KC
L !MC
N #OC
R !SC
T !UC
V #WC
X %YC
\ %]C
^ &_C
` &aC
b %cC
d &eC
f &gC
j &kC
l &mC
n &oC
p &qC
t )uC
v )wC
x )yC
z ){C
~ +C
@ ,AC
B +CC
D ,EC
J EE**$$U+ +* ***s   B,,B=c           
     	4   . R NRNRNRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NpV Ft  pV P                  VR:7      ;_uu_ 4        \        P                  ! V4      pV P                  \        V4      ;_uu_ 4        V P                  V4       R;R;R;4       R;R;R;4       Kv  	  R;#   + '       g   i     L; i  + '       g   i     K  ; i)<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/2AAA168zAAA+168zAAA-168zAAA168BBB,J60/2,J300/2zAAA+168BBB,J60/2,J300/2zAAA-168BBB,J60/2,J300/2zAAA4BBB168,J60/2,J300/2zAAA4BBB+168,J60/2,J300/2zAAA4BBB-168,J60/2,J300/2zAAA4:0BBB,J60/2,J300/2zAAA4:100BBB,J60/2,J300/2zAAA4BBB5:0,J60/2,J300/2zAAA4BBB5:100,J60/2,J300/2zAAA4:00:0BBB,J60/2,J300/2zAAA4:00:100BBB,J60/2,J300/2zAAA4BBB5:00:0,J60/2,J300/2zAAA4BBB5:00:100,J60/2,J300/2zAAA4BBB,M1443339,M11.1.0/3zAAA4BBB,M3.2.0/2,0349309483959czAAA4BBB,,J300/2zAAA4BBB,z,J300/2zAAA4BBB,J60/2,zAAA4BBB,J60/2,zz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/2zAAA4BBB,J60/2/3,J300/2zAAA4BBB,J60/2,J300/2/3zAAA4BBB,J60/168,J300/2zAAA4BBB,J60/+168,J300/2zAAA4BBB,J60/-168,J300/2zAAA4BBB,J60/2,J300/168zAAA4BBB,J60/2,J300/+168zAAA4BBB,J60/2,J300/-168zAAA4BBB,J60/2:0,J300/2zAAA4BBB,J60/2:100,J300/2zAAA4BBB,J60/2,J300/2:0zAAA4BBB,J60/2,J300/2:100zAAA4BBB,J60/2:00:0,J300/2zAAA4BBB,J60/2:00:100,J300/2zAAA4BBB,J60/2,J300/2:00:0zAAA4BBB,J60/2,J300/2:00:100r  N)r   reescapeassertRaisesRegexr   r  )r;   invalid_tzstrsinvalid_tzstrtzstr_regexs   &   r'   test_invalid_tzstrTZStrTest.test_invalid_tzstrS  s5   H
H
H
 %H
 )	H

 H
 H
 H
 H
 %H
 &H
 &H
 &H
 'H
 'H
" %#H
$ '%H
& &'H
( ()H
, (-H
. */H
0 )1H
2 +3H
6 )7H
8 .9H
: ;H
< =H
> ?H
@ AH
D )EH
F )GH
H (IH
J (KH
N (OH
P (QH
T (UH
V (WH
Z  [H
\ ]H
^ _H
`  aH
d !eH
f #gH
j %kH
l %mH
p %qH
r &sH
t &uH
v %wH
x &yH
z &{H
~ %H
@ 'AH
B %CH
D 'EH
H (IH
J *KH
L (MH
N *OH
T ,MM22 !ii6++JDD((7 E	 32 ,
 ED	 322s$   5DC3D3D>DDc                	~  aaaa V3R  lpV P                   oV P                  oV P                  o/ oVVVVV3R l4       pVVVVV3R l4       pVVVVV3R l4       pVVVV3R l4       pVVV3R l4       pVVV3R l4       pVVV3R l4       pVVVVV3R l4       pVVVVV3R	 l4       pVVVVV3R
 l4       pSV n        R# )c                Z   < \        S4      pV ! 4        \        S4      V8  g   Q R4       hR# )zDecorator to call the addition methods.

This will call a function which adds at least one new entry into
the `cases` dictionary. The decorator will also assert that
something was added to the dictionary.
z!Function did not add a test case!N)r  )r   prev_lenr  s   & r'   call,TZStrTest._populate_test_cases.<locals>.call  s+     5zHCu:(M*MM(r&   c                   < R p \        R\        RR7      \        4      p\        R\        R	R7      \        4      p\	        R^^	4      VS3\	        R^^
^^;4      VS3\	        R^^
^^ ^ R7      VS3\	        R^^
^^ ^R7      VS3\	        R^^
^^^ R7      VS3\	        R^^
^^^R7      VS3\	        R^^4      VS3\	        R^^^^;^R7      VS3\	        R^^^^ ^ R7      VS3\	        R^^^^ ^R7      VS3\	        R^^^^;4      VS3\	        R^^^^ ^ R7      VS3\	        R^^^^ ^R7      VS3\	        R^^^^;^R7      VS3\	        R^^^^ ^ R7      VS3\	        R^^^^ ^R7      VS33SV &   R# )
z EST5EDT,M3.2.0/4:00,M11.1.0/3:00ESTr   EDTr   r\   r   Nr  r   r   r  r   )r  r=  r>  r   r  NORMALr  s      r'   _add,TZStrTest._populate_test_cases.<locals>._add  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                   < R p \        R\        \        4      p\        R\        \        4      p\        R^^4      VS3\        R^^^ ^;4      VS3\        R^^^^ 4      VS3\        R^
^4      VS3\        R^
^^ ^;^R7      VS3\        R^
^^^ ^ R7      VS3\        R^
^^^ ^R7      VS3\        R^^^ ^;4      VS3\        R^^^^ 4      VS3\        R^
^^ ^;^R7      VS3\        R^
^^^ ^ R7      VS3\        R^
^^^ ^R7      VS33SV &   R# )z"GMT0BST-1,M3.5.0/1:00,M10.5.0/2:00r  BSTr   r?  r   Nr  r   r  r   )r  r  rG  r   r  rC  r  s      r'   rD  rE    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                 |  < R p \        R\        ^
R7      \        4      p\        R\        ^R7      \        4      p\	        R^^4      VS3\	        R^^^^;4      VS3\	        R^^^^;^R7      VS3\	        R^^^^ ^ R7      VS3\	        R^^^^^ R7      VS3\	        R^^^^ ^R7      VS3\	        R^^^^^R7      VS3\	        R^^^^ ^ R7      VS3\	        R^^^^ ^R7      VS3\	        R^
^^ 4      VS3\	        R^
^^^;4      VS3\	        R^
^^^ ^ R7      VS3\	        R^
^^^ ^R7      VS3\	        R^
^^^ 4      VS33SV &   R# )zAEST-10AEDT,M10.1.0/2,M4.1.0/3AESTr   AEDTr   r?  NrB  )r  rJ  rK  r   r  rC  r  s      r'   rD  rE    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                 :  < R p \        R\        \        ) 4      p\        R\        \        4      p\        R^^4      VS3\        R^^^ ^;4      VS3\        R^^^^ 4      VS3\        R^
^4      VS3\        R^
^^ ^;^R7      VS3\        R^
^^^ ^ R7      VS3\        R^
^^^ ^R7      VS3\        R^
^^^ ^R7      VS3\        R^^^ ^;4      VS3\        R^^^^ 4      VS3\        R^
^^ ^;^R7      VS3\        R^
^^^ ^ R7      VS3\        R^
^^^ ^R7      VS33SV &   R# )zIST-1GMT0,M10.5.0,M3.5.0/1r  ISTr   r?  r   NrH  )r  r  rM  r   rC  r  s      r'   rD  rE    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                 \   < R p \        R^^4      \        R\        ^R7      4      S33SV &   R# )z<+11>-11r   r-  r   N)r   r  r   )r  rC  r  s    r'   rD  rE  )  s:     E T1a(uib&9:E%Lr&   c                    < R p \        R\        RR7      4      p\        R\        RR7      \        4      p\        R^^4      VS3\        R^^4      VS33SV &   R# )z<-04>4<-03>,M9.1.6/24,M4.1.6/24-04r   -03r   NrA  r  r   r  r   )r  M04M03rC  r  s      r'   rD  rE  6  sa     6EUIB$78CUIB$7?C $1%sF3$A&V4E%Lr&   c                   < R p \        R\        RR7      \        4      p\        R^^4      VS3\        R^^4      VS3\        R^^^^;^;R4      VS3\        R^^4      VS3\        R^^4      VS3\        R^^4      VS3\        R^^^^;^;R4      VS3\        R^^4      VS3\        R^^4      VS3\        R^^^^;^;R4      VS33
SV &   R# )	zEST5EDT,0/0,J365/25r>  r   r   r  r   i`	  NrA  rS  )r  r>  rC  r  s     r'   rD  rE  C  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                 d  < R p \        R\        R	R7      4      p\        R\        R
R7      \        4      p\        R^^4      VS3\        R^^4      VS3\        R^^^^;4      VS3\        R^^^^ R7      VS3\        R^^^^R7      VS3\        R^^^4      VS3\        R^^^
^;4      VS3\        R^^^^ R7      VS3\        R^^^^R7      VS3\        R^^^4      VS3\        R^^^^;^;R4      VS3\        R^^4      VS3\        R^^4      VS3\        R^^^^;4      VS3\        R^^^^ R7      VS3\        R^^^^R7      VS3\        R^^^4      VS3\        R^^^
^;4      VS3\        R^^^^ R7      VS3\        R^^^^R7      VS3\        R^^^4      VS3\        R^^^^;^;R4      VS33SV &   R# )zAAA3BBB,J60/12,J305/12AAAr   BBBr   r?  r  r   NrR  rS  r  rX  rY  r   r  rC  r  s      r'   rD  rE  X  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                   < R p \        R\        RR7      4      p\        R\        RR7      \        4      p\        R^^4      VS3\        R^^^^;^;4      VS3\        R^^^^ R7      VS3\        R^^^^R7      VS3\        R^^^4      VS3\        R^
^^4      VS3\        R^
^^^ R7      VS3\        R^
^^^R7      VS3\        R^
^^4      VS33	SV &   R# )	z <-03>3<-02>,M3.5.0/-2,M10.5.0/-1rQ  r   z-02r   r?  NrR  rZ  rS  )r  N03N02r   r  rC  r  s      r'   rD  rE  y  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                   < R p \        R\        RR7      4      p\        R\        R	R7      \        4      p\        R^^^^ 4      VS3\        R^^^^^ R7      VS3\        R^^^^^R7      VS3\        R^^^^4      VS3\        R^^^^^,R4      VS3\        R^^^^^-^ R7      VS3\        R^^^^^-^R7      VS3\        R^^^^^-4      VS33SV &   R# )
z%AAA3BBB,M3.2.0/01:30,M11.1.0/02:15:45rX  r   rY    r?  r  NrR  rZ  rS  r[  s      r'   rD  rE    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&   N)rC  r   r  r   )rd   r:  rD  r   r  rC  r  s   &  @@@@r'   r  TZStrTest._populate_test_cases  s    		N xxgg		 
	6 
	 
	. 
	 
	0 
	 
	. 

	 

	 

	 

	 
	 
	( 
	 
	@ 
	 
	, 
	 
	$ r&   r%   )r1   r2   r3   r4   r-  r   rC  r   r  rh   rX  r  r  r  r$  r)  r5  r  r5   rT   rU   s   @r'   r  r    sp    FFD
C$ $ & & 9;1:H,TQ8f | |r&   r  c                      ] tR tRt]tRtR# )
CTZStrTesti  r%   Nrd  r%   r&   r'   rc  rc    re  r&   rc  c                  |   a  ] tR tRt]tV 3R lt]R 4       t]R 4       t	R t
R tR tR tR	 tR
 tR tR tRtV ;t# )ZoneInfoCacheTesti  c                	X   < V P                   P                  4        \        SV `  4        R # r*   )ry   rz   rL   rM   r{   s   &r'   rM   ZoneInfoCacheTest.setUp  s    

 r&   c                	    \         # r*   r~   r:   s   &r'   r   ZoneInfoCacheTest.zoneinfo_data  r   r&   c                	0    V P                   P                  .# r*   r   r:   s   &r'   r<   ZoneInfoCacheTest.tzpath  r   r&   c                	f    V P                  V P                  R 4      V P                  R 4      4       R# )r&  N)r  ry   r:   s   &r'   test_ephemeral_zones&ZoneInfoCacheTest.test_ephemeral_zones  s'    JJ,-tzz:O/P	
r&   c                	l    V P                  R 4      pV P                  R 4      pV P                  W4       R# )Australia/SydneyN)ry   r  r;   tz0r)  s   &  r'   test_strong_refs"ZoneInfoCacheTest.test_strong_refs  s,    jj+,jj+,cr&   c                	    V P                  R 4      pV P                   P                  R 4      pV P                  W4       R# )Europe/LisbonN)ry   r   r\  rq  s   &  r'   test_no_cacheZoneInfoCacheTest.test_no_cache  s2    jj)jj!!/2"r&   c                    V P                  R4      pV P                  . 4      ;_uu_ 4        V P                  R4      pRRR4       V P                  VX4       R#   + '       g   i     L$; i)zTest that the cache persists when tzpath has been changed.

The PEP specifies that as long as a reference exists to one zone
with a given key, the primary constructor must continue to return
the same object.
r&  N)ry   rH   r  )r;   zi0zi1s   &  r'   test_cache_reset_tzpath)ZoneInfoCacheTest.test_cache_reset_tzpath  sQ     jj./  $$**23C % 	c3 %$s   AA)	c                	    V P                  R 4      pV P                   P                  RR7       V P                  R 4      pV P                  W4       R# )r&  N	only_keys)ry   rz   r\  )r;   la0la1s   &  r'   test_clear_cache_explicit_none0ZoneInfoCacheTest.test_clear_cache_explicit_none  sC    jj./

.jj./"r&   c                   V P                  R4      pV P                  R4      pV P                   P                  R.R7       V P                  R4      pV P                  R4      pV P                  W4       V P                  W$4       R# )z5Tests that you can clear a single key from the cache.r&  Europe/Dublinr  Nry   rz   r\  r  )r;   r  dub0r  dub1s   &    r'   test_clear_cache_one_key*ZoneInfoCacheTest.test_clear_cache_one_key  so    jj./zz/*

*?)@Ajj./zz/*"d!r&   c                	t   V P                  R 4      pV P                  R4      pV P                  R4      pV P                   P                  R R.R7       V P                  R 4      pV P                  R4      pV P                  R4      pV P                  W4       V P                  W%4       V P                  W64       R# )r&  r  
Asia/Tokyor  Nr  )r;   r  r  tok0r  r  tok1s   &      r'   test_clear_cache_two_keys+ZoneInfoCacheTest.test_clear_cache_two_keys  s    jj./zz/*zz,'

,o> 	 	
 jj./zz/*zz,'"$d!r&   c                	     ! R  R\         4      pV! R4      pV P                  V4       RVn         V P                  P                  RR7       R#   \         d     R# i ; i)c                  D   a  ] tR tRtRtV 3R lt]P                  tRtV ;t	# );ZoneInfoCacheTest.test_clear_cache_refleak.<locals>.Stringyi  Tc                	R   < V P                   '       g   \        h\        SV `  V4      # r*   )allow_comparisonsr/   rL   r"  r?  s   &&r'   r"  BZoneInfoCacheTest.test_clear_cache_refleak.<locals>.Stringy.__eq__   s$    ---%%w~e,,r&   r%   )
r1   r2   r3   r4   r  r"  r   r$  r5   rT   rU   s   @r'   Stringyr    s     $- ||Hr&   r  r&  Fr  N)r   ry   r  rz   r/   )r;   r  ro   s   &  r'   test_clear_cache_refleak*ZoneInfoCacheTest.test_clear_cache_refleak  s]    	$c 	$ +,

3 %	 JJ""-B"C 		s   A AAr%   )r1   r2   r3   r4   r-  r   rM   rS   r   r<   rm  rs  rw  r|  r  r  r  r  r5   rT   rU   s   @r'   re  re    sb    F   + +

 # #""" r&   re  c                      ] tR tRt]tRtR# )CZoneInfoCacheTesti  r%   Nrd  r%   r&   r'   r  r    re  r&   r  c                  j   a  ] tR tRt]tV 3R lt]R 4       t]R 4       t	R t
R tR tR tR	 tR
tV ;t# )ZoneInfoPickleTesti  c                	z  < V P                   P                  4        \        P                  ! 4       ;_uu_ 4       pVP	                  \
        P                  ! V P                  4      4       V P                  VP                  4       P                  4       R R R 4       \        SV `1  4        R #   + '       g   i     L ; ir*   )ry   rz   rE   rF   rG   test_supportset_zoneinfo_moduler   rI   rJ   rK   rL   rM   rN   s   & r'   rM   ZoneInfoPickleTest.setUp  sr    

 !!##u @ @ MNOOEMMO112 $ 		 $#s   AB**B:	c                	    \         # r*   r~   r:   s   &r'   r    ZoneInfoPickleTest.zoneinfo_data"  r   r&   c                	0    V P                   P                  .# r*   r   r:   s   &r'   r<   ZoneInfoPickleTest.tzpath&  r   r&   c           
     	   \        \        P                  ^,           4       F  pV P                  VR7      ;_uu_ 4        V P	                  R4      p\        P
                  ! W!R7      p\        P                  ! V4      pV P                  RR7      ;_uu_ 4        V P                  W$4       RRR4       \        P                  ! V4      pV P                  RR7      ;_uu_ 4        V P                  WE4       RRR4       RRR4       K  	  R#   + '       g   i     Lh; i  + '       g   i     L1; i  + '       g   i     EK   ; i)   protor  protocolzIs non-pickled ZoneInfotestNzIs unpickled ZoneInfo)r  pickleHIGHEST_PROTOCOLr   ry   dumpsloadsr  r;   r  zi_inpklzi_rtzi_rt2s   &     r'   test_cache_hit!ZoneInfoPickleTest.test_cache_hit*  s    622Q67EE**

?3ll59S)\\'@\AAMM%/ B  c*\\'>\??MM%0 @ +* 8 BA @? +**s<   AD/D	)8D/!D3D/	DD/D,'D//Ec                	   \        \        P                  ^,           4       F  pV P                  VR7      ;_uu_ 4        V P	                  R4      p\        P
                  ! W!R7      p?V P                  P                  4        \        P                  ! V4      p\        P                  ! V4      pV P                  WE4       RRR4       K  	  R#   + '       g   i     K  ; i)r  r  r  r  N)	r  r  r  r   ry   r  rz   r  r  r  s   &     r'   test_cache_miss"ZoneInfoPickleTest.test_cache_miss8  s    622Q67EE**

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

&&(S)c*e, +* 8***s   BCCc           
     	P   \        \        P                  ^,           4       EF2  pV P                  VR7      ;_uu_ 4        V P                  P                  R4      p\        P                  ! W!R7      p\        P                  ! V4      pV P                  RR7      ;_uu_ 4        V P                  WB4       RRR4       \        P                  ! V4      pV P                  RR7      ;_uu_ 4        V P                  WE4       RRR4       V P	                  R4      pV P                  RR7      ;_uu_ 4        V P                  WF4       RRR4       RRR4       EK5  	  R#   + '       g   i     L; i  + '       g   i     Lw; i  + '       g   i     LE; i  + '       g   i     EK  ; i)	r  r  r  r  zNot the pickled objectr  NzNot a second unpickled objectzNot a cached object)	r  r  r  r   ry   r   r  r  r\  )r;   r  zi_no_cacher  r  r  zi_caches   &      r'   rw   ZoneInfoPickleTest.test_no_cacheE  s   622Q67EE**"jj11/Bll;?S)\\'?\@@$$U8 A  c*\\'F\GG$$U3 H  ::o6\\'<\==$$U5 > +* 8 A@ HG >= +**sT   A#F"E48F,E->3F1F FE*%F-E=8F FFF%c                	   R p\        V P                  P                  V4      R4      ;_uu_ 4       pV P                  P	                  V4      pVP                  ^ 4       V P                  P	                  W!R7      pRRR4       XR3XR3.pV F  w  rg\        \        P                  ^,           4       Fm  pV P                  WxR7      ;_uu_ 4        V P                  \        P                  4      ;_uu_ 4        \        P                  ! WhR7       RRR4       RRR4       Ko  	  K  	  R#   + '       g   i     L; i  + '       g   i     L5; i  + '       g   i     K  ; i)r  r   r   NzZoneInfo with keyzZoneInfo without key)r   r  r  )r   r   r   ry   r   r  r  r  r  r   r   PicklingErrorr  )	r;   ro   r   zi_nokeyzi_keyr   r   r   r  s	   &        r'   test_from_file!ZoneInfoPickleTest.test_from_fileX  s   $$$2237>>!zz++A.HFF1IZZ))!)5F	 ? ()-.


 (MBv66:;\\I\CC**6+?+?@@R8 A DC < ( ?> A@ DCCs0   A	D'(E	5D:E	'D7	:E
E	Ec           
     	   \        \        P                  ^,           4       EF  pV P                  VR7      ;_uu_ 4        RpV P	                  V4      p\        P
                  ! W1R7      p\        P                  ! V4      pV P                  W54       \        V P                  P                  V4      R4      ;_uu_ 4       pV P                  P                  WbR7      pRRR4       \        P
                  ! W1R7      p\        P                  ! V4      p	V P                  W94       V P                  \        P                  4      ;_uu_ 4        \        P
                  ! XVR7       RRR4       \        P
                  ! W1R7      p
\        P                  ! V
4      pV P                  W;4       RRR4       EK  	  R#   + '       g   i     L; i  + '       g   i     Lp; i  + '       g   i     EK  ; i)r  r  r  r  r   r   N)r  r  r  r   ry   r  r  r  r   r   r   r   r   r  )r;   r  ro   r   pkl_0zi_rt_0r   r   pkl_1zi_rt_1pkl_2zi_rt_2s   &           r'   test_pickle_after_from_file.ZoneInfoPickleTest.test_pickle_after_from_filek  sK   
 622Q67EE**%ZZ_R8 ,,u-b*$,,::3?FF! JJ000<E G R8 ,,u-b*&&v';';<<LL7 = R8 ,,u-b*) +* 8 GF =< +**s>   A?G>F6A-GG	!AG6GG	GGG.r%   )r1   r2   r3   r4   r-  r   rM   rS   r   r<   r  r  rw  r  r  r5   rT   rU   s   @r'   r  r    sS    F   + +1-6&9&+ +r&   r  c                      ] tR tRt]tRtR# )CZoneInfoPickleTesti  r%   Nrd  r%   r&   r'   r  r    re  r&   r  c                  :    ] tR tRtRt]t]R 4       tR t	R t
RtR# )CallingConventionTesti  z8Tests for functions with restricted calling conventions.c                	    \         # r*   r~   r:   s   &r'   r   #CallingConventionTest.zoneinfo_data  r   r&   c           	     	D   \        V P                  P                  R 4      R4      ;_uu_ 4       pV P                  \        4      ;_uu_ 4        V P
                  P                  VR7       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   r   )r   N)r   r   r   r   r   ry   r   )r;   r   s   & r'   r  $CallingConventionTest.test_from_file  sj    $$$22594@@A""9--

$$!$, . A@-- A@@s#   BA;	)B;BBB	c                	    V P                  \        4      ;_uu_ 4        V P                  P                  R .4       RRR4       R#   + '       g   i     R# ; ir   N)r   r   ry   rz   r:   s   &r'   test_clear_cache&CallingConventionTest.test_clear_cache  s6    y))JJ""E7+ *)))s   AA	r%   N)r1   r2   r3   r4   rR   r-  r   rS   r   r  r  r5   r%   r&   r'   r  r    s&    BF -
,r&   r  c                      ] tR tRt]tRtR# )CCallingConventionTesti  r%   Nrd  r%   r&   r'   r  r    re  r&   r  c                  r    ] tR tRt]t]]P                  R 4       4       t	R t
R tR tR tR tR tR	 tR
tR# )
TzPathTesti  c              #  	|   "   \        4       ;_uu_ 4       pWR &   Rx  RRR4       R#   + '       g   i     R# ; i5i)PYTHONTZPATHNr   )valueenvs   & r'   python_tzpath_context TzPathTest.python_tzpath_context  s+      !""c"' #"""s   <	(
<9		<c           
        R. 3\          R2\          R2.3\          R\        P                   \          R2\          R2\          R2.3.pV F  w  r#V P                  V4      ;_uu_ 4        V P	                  VR7      ;_uu_ 4        V P
                  P                  4        V P
                  P                  pV P                  WC4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)z<Tests that the environment variable works with reset_tzpath.r  z/etc/zoneinfo/a/b/cz/d/e/fr<   N)	DRIVEospathsepr  r   r   reset_tzpathTZPATHassertSequenceEqual)r;   	new_pathsnew_path_varexpected_resultr<   s   &    r'   test_env_variableTzPathTest.test_env_variable  s     Hwm$%'>&?@wfRZZLv6E7&9IeWTZK[8\]
	 .7)L++L99\\\66KK,,.![[//F,,VE 7 :9 .766 :99s%   )C/ACC/C,'C//D c                	   RR.\          R2R 3\          R23.R	R.\          R2R3\          R23.R
R.\          R2R R3\          R23..pV EF7  w  r#\        P                  P                  V4      pV P	                  V4      ;_uu_ 4        V P                  RVR7      ;_uu_ 4        V P                  V P                  P                  4      ;_uu_ 4       pV P                  P                  4        RRR4       V P                  XP                  ^ ,          P                  \        4       RRR4       V P                  P                  pV P                  RVR7      ;_uu_ 4        V P                  Wc4       RRR4       RRR4       EK:  	  R#   + '       g   i     L; i  + '       g   i     L}; i  + '       g   i     LE; i  + '       g   i     EK  ; i)path/to/somewhere/usr/share/zoneinfo../relative/pathwarning)path_varNfilteredr  r%   r  r  r  )r  r  r  joinr  r   assertWarnsr   InvalidTZPathWarningr  r   warningsfilename__file__r  r  )r;   r   input_pathsexpected_pathsr  wr<   s   &      r'    test_env_variable_relative_paths+TzPathTest.test_env_variable_relative_paths  s   #R(7-.0CE7-.0 #B'7-.0BD7-.0 8< g01'&
 7-.0

, ,6'Kzz{3H++H55\\)h\?? ))$++*J*JKKq002 L$$QZZ]%;%;XF @ ++\\*x\@@,,VD A 65 ,6 LK @? A@ 655sT   	G%.FF	.9F'9G F/2G	FFF,'G/F?:GGc                	$   R pV P                  V4      ;_uu_ 4        \        RR4      ;_uu_ 4        V P                  \        4      ;_uu_ 4       p^ RIpRRR4       XP
                  pRRR4       V P                  XP                  ^ ,          P                  X4       V P                  VP                  ^ ,          P                  \        4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)r  r   zzoneinfo._tzpathN)r  r   r  RuntimeWarningr   r   r]  r  messager   r  r  )r;   r  r  r   r   s   &    r'   1test_env_variable_relative_paths_warning_location<TzPathTest.test_env_variable_relative_paths_warning_location  s    &''11Z);<<%%n55# 6'/'D'D$ = !!!**Q-"7"79MNQZZ]33X> 2155 =< 211s;   C>C+	CC+	(A&C>C(#C+	+C;6C>>D	c                	    V P                   P                  \         R 2.R7       V P                  V P                   P                  \         R 234       R# )r  toN)r   r  r  r  r  r:   s   &r'   test_reset_tzpath_kwarg"TzPathTest.test_reset_tzpath_kwarg  sE      wf%5$6 7  !3!3v6F5HIr&   c           
     	8   . ROpV Fh  pV P                  VR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        V P                  P	                  VR7       RRR4       RRR4       Kj  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r  )r  r  N)r  )r  r  r  )r  r  r  )r  r  r  )r   r   r   r   r  )r;   r   r  s   &  r'    test_reset_tzpath_relative_paths+TzPathTest.test_reset_tzpath_relative_paths  sl    

 &K+66&&z22KK,,,< 3 76 &22 766s#   BA5B5B BBc           
     	6   . ROpV Fg  pV P                  VR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        V P                  P	                  V4       RRR4       RRR4       Ki  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)!/etc/zoneinfo:/usr/share/zoneinfo)r  N)r  s!   /etc/zoneinfo:/usr/share/zoneinfor   )r   r   r   r   r  )r;   r   	bad_values   &  r'   test_tzpath_type_error!TzPathTest.test_tzpath_type_error   si    

 $II..&&y11KK,,Y7 2 /. $11 /..s#   BA4B4B?BBc                	   \          R 2\          R2.p\          R2.pV P                  V4      ;_uu_ 4        V P                  P                  pRRR4       V P                  V4      ;_uu_ 4        V P                  P                  pRRR4       V P	                  VX4       V P	                  VX4       R#   + '       g   i     Ln; i  + '       g   i     LI; i)z/onez/twoz/threeN)r  rH   r   r  r  )r;   tzpath_0tzpath_1query_0query_1s   &    r'   test_tzpath_attribute TzPathTest.test_tzpath_attribute  s    gTNugTN3gV$%  **kk((G +   **kk((G + 	  73  73 +* +*s   B3.C3C	C	r%   N)r1   r2   r3   r4   r-  r   staticmethodrE   contextmanagerr  r  r  r  r  r  r  r   r5   r%   r&   r'   r  r    sN    F  
F#EJ
?J
=
84r&   r  c                      ] tR tRt]tRtR# )CTzPathTesti  r%   Nrd  r%   r&   r'   r%  r%    re  r&   r%  c                  j    ] tR tRt]t]R 4       t]R 4       t	R t
R tR tR tR tR	 tR
 tR tRtR# )
TestModulei  c                	    \         # r*   r~   r:   s   &r'   r   TestModule.zoneinfo_data!  r   r&   c                	    V P                   P                  R 4      p\        VR4      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i)r   r   N)r   r   r   read)r;   	zone_filer   s   &  r'   
_UTC_bytesTestModule._UTC_bytes%  s?    &&44U;	)T""a668 #"""s   AA	c                   \         P                  P                  V4      '       g   \        V R24      hVP	                  R^4      vr4V'       d6   \         P
                  ! \         P                  P                  W#4      RR7       \         P                  P                  W!4      p\        VR4      ;_uu_ 4       pVP                  V P                  4       RRR4       R#   + '       g   i     R# ; i)zCreates a valid TZif file at key under the zoneinfo root tz_root.

tz_root must exist, but all folders below that will be created.
z does not exist./T)exist_okwbN)
r  r   existsFileNotFoundErrorrsplitmakedirsr  r   r  r-  )r;   ro   tz_rootroot_dirtailzonefile_pathr   s   &&&    r'   
touch_zoneTestModule.touch_zone+  s    
 ww~~g&&#wi/?$@AA**S!,KKW7$GW2-&&!GGDOO$ '&&&s   7CC.	c                	    V P                  \        4      ;_uu_ 4        V P                  P                   R R R 4       R #   + '       g   i     R # ; ir*   )r   r   r   NOATTRIBUTEr:   s   &r'   test_getattr_errorTestModule.test_getattr_error;  s/    ~..KK## /...s	   ?A	c                    \        V P                  P                  4      p\        \        V P                  4      4      pW,
          pV P	                  V4       R# )z?dir(self.module) should at least contain everything in __all__.N)setr   __all__dirr'  )r;   module_all_setmodule_dir_set
differences   &   r'   test_dir_contains_all TestModule.test_dir_contains_all?  s?    T[[001S-.#4
$r&   c                h    \        V P                  4      p\        V4      pV P                  W4       R# )z5Test that there are no duplicates in dir(self.module)N)rD  r   rB  assertCountEqual)r;   
module_dirmodule_uniques   &  r'   test_dir_uniqueTestModule.test_dir_uniqueH  s'    %
Jj8r&   c                	   V P                  V P                  P                  .4      ;_uu_ 4        V P                  V P                  P                  4       V P
                  P                  4       p\        V P                  P                  4      pW!,          pV P                  W#4       R R R 4       R #   + '       g   i     R # ; ir*   )	rH   r   r<   r(  r   r   available_timezonesrB  r   )r;   available_keyszoneinfo_keysunions   &   r'   test_available_timezones#TestModule.test_available_timezonesO  s      $"4"4";";!<==OOD..334![[<<>N 2 2 7 78M "2E]2 >===s   A8B11C	c           	     	b   \         P                  ! 4       ;_uu_ 4       pV P                  R V4       V P                  V.4      ;_uu_ 4        V P                  P                  4       pV P                  R V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zMars/Olympus_MonsN)r   TemporaryDirectoryr;  rH   r   rQ  assertIn)r;   tdrR  s   &  r'   "test_available_timezones_weirdzone-TestModule.test_available_timezones_weirdzone[  sx    ((**bOO/4$$bT**!%!@!@!B1>B +	 +* +*	 +**s#   -B-B
	8B
BBB.	c                	.   0 Rmp\        V4      pV Uu. uF  pRV 2NK
  	  ppV Uu. uF  pRV 2NK
  	  ppRV3RW$,           3RW%,           3RW%,           V,           3.p\        P                  ! 4       ;_uu_ 4       pV F  w  r\        P                  P                  Wx4      p
\        P                  ! V
4       V	 F  pV P                  W4       K  	  V P                  V
.4      ;_uu_ 4        V P                  V4      ;_uu_ 4        V P                  P                  4       pV P                  W4       RRR4       RRR4       K  	  RRR4       R# u upi u upi   + '       g   i     L0; i  + '       g   i     EK  ; i  + '       g   i     R# ; i)	r&  zposix/zright/	base_treebase_and_posixbase_and_right	all_treesN>   r   r  Europe/ParisrE  America/Santiagorp  r&  America/Indiana/Indianapolis)listr   rX  r  r   r  mkdirr;  rH   r   r   rQ  r   )r;   r   r^  r  
posix_tree
right_treer  rZ  	case_nametreer7  ro   actuals   &            r'   test_folder_exclusions!TestModule.test_folder_exclusionsd  sT   	
 N	,56IqqclI
6,56IqqclI
6 )$y56y56)0:=>	
 ((**b#(	'',,r5!COOC1   (('33i00!%!@!@!B((: 1 43 $) +* 76$ 10 433 +**sG   EE<A1F-E.,E3E.;FE+&E..F 9
FF	c           	     	   R R0p\        V4      R.,           p\        P                  ! 4       ;_uu_ 4       pV F  pV P                  WC4       K  	  V P	                  V.4      ;_uu_ 4        V P
                  P                  4       pV P                  WQ4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zAmerica/New_YorkrE  
posixrulesN)re  r   rX  r;  rH   r   rQ  r   )r;   r   rj  rZ  ro   rk  s   &     r'   test_exclude_posixrules"TestModule.test_exclude_posixrules  s    

 H~.((**b(  $$bT**88:  2 +	 +* +*	 +**s#   5B;*,B(	B;(B83B;;C	r%   N)r1   r2   r3   r4   r-  r   rS   r   r	   r-  r;  r?  rH  rN  rU  r[  rl  rp  r5   r%   r&   r'   r'  r'    sW    F   
% $%9
3C";H3r&   r'  c                      ] tR tRt]tRtR# )CTestModule  r%   Nrd  r%   r&   r'   rs  rs    re  r&   rs  c                  &    ] tR tRtRtR tR tRtR# )ExtensionBuiltTesti  aq  Smoke test to ensure that the C and Python extensions are both tested.

Because the intention is for the Python and C versions of ZoneInfo to
behave identically, these tests necessarily rely on implementation details,
so the tests may need to be adjusted if the implementations change. Do not
rely on these tests as an indication of stable properties of these classes.
c                	    V P                  \        P                  R 4       V P                  \        P                  R 4       R# )_weak_cacheN)assertNotHasAttrrK  rw   assertHasAttrr-  r:   s   &r'   test_cache_location&ExtensionBuiltTest.test_cache_location  s0     	j11=A;//?r&   c                	    ^ RI pV P                  VP                  \        P                  4      4       V P                  VP                  \
        P                  4      4       R# )r   N)gcr(  
is_trackedr-  rw   rK  )r;   r~  s   & r'   test_gc_tracked"ExtensionBuiltTest.test_gc_tracked  s;    k&:&:;<j&9&9:;r&   r%   N)r1   r2   r3   r4   rR   r{  r  r5   r%   r&   r'   rv  rv    s    @<r&   rv  )frozenc                  :    ] tR tRt$ R]R&   R]R&   ]tR]R&   RtR# )	r  i  r   r   r   r   r   r%   N)r1   r2   r3   r4   __annotations__r   r   r5   r%   r&   r'   r  r    s    KCr&   r  c                      ] tR tRt$ R]R&   R]R&   R]R&   ]R 4       t]R 4       t]R	 4       t]R
 4       t	]R 4       t
]R 4       tRtR# )r  i  r   rk   r  r   r   c                	    V P                   V P                  P                  ,
          P                  \        P
                  R 7      # )r   )rk   r   r   rn   r   r   r:   s   &r'   r	  ZoneTransition.transition_utc  s7    $"4"4">">>GG<< H 
 	
r&   c                \    V P                   P                  V P                  P                  8  # )zWhether this introduces a foldr   r   r   r:   s   &r'   r\   ZoneTransition.fold  '     !!++d.?.?.I.IIIr&   c                \    V P                   P                  V P                  P                  8  # )zWhether this introduces a gapr  r:   s   &r'   r   ZoneTransition.gap  r  r&   c                	d    V P                   P                  V P                  P                  ,
          # r*   )r   r   r   r:   s   &r'   deltaZoneTransition.delta  s%      **T-?-?-I-IIIr&   c                	x    V P                   '       d   V P                  V P                  ,           # V P                  # r*   r\   rk   r  r:   s   &r'   r   ZoneTransition.anomaly_start  s(    999??TZZ//??"r&   c                	x    V P                   '       g   V P                  V P                  ,           # V P                  # r*   r  r:   s   &r'   r  ZoneTransition.anomaly_end  s(    yyy??TZZ//??"r&   r%   N)r1   r2   r3   r4   r  rS   r	  r\   r   r  r   r  r5   r%   r&   r'   r  r    s    
 

 J J J J J J # # # #r&   r  c                  8    ] tR tRtR	R ltR tR tR tR tRt	R# )
r!   r   c                	x    \         P                  ! V4      V n        . V n        W0n        V P                  V4       R # r*   )r   r   r<   r   r   _populate_tzpath)r;   source_jsonr<   r   s   &&&&r'   __init__ZoneInfoData.__init__  s,    ll6*	k*r&   c                	(    V P                   V,          # r*   r  r   s   &&r'   r   ZoneInfoData.path_from_key  s    {{S  r&   c                	Z   \        VR 4      ;_uu_ 4       p\        P                  ! V4      pRRR4       XR,          pVP                  4        F  w  rVV P                  P                  V4       V P                  V4      pV P                  '       d   V P                  V4      pMTpV P                  V4      p	V	P                  P                  RRR7       \        V	R4      ;_uu_ 4       pVP                  V4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r   Nr   T)r1  parentsr2  )r   jsonloadr  r   r   _decode_textr   _convert_to_v1r   parentrf  r  )
r;   r  r   zoneinfo_dictr   ro   r  raw_datar   destinations
   &&        r'   r  ZoneInfoData._populate_tzpath  s    +t$$ IIaLM % &f-'--/JCIIS!((/Hwww**84,,S1K$$dD$Ak4((A )( 0 %$  )((s   D&DD	D*c                	    R P                  \        \        P                  V4      4      p\        P
                  ! V4      p\        P                  V4      # )r&   )r  r  r   r  base64	b85decoder   
decompress)r;   contentsr  decodeds   &&  r'   r  ZoneInfoData._decode_text  s:    88C

H56""8,w''r&   c                	   VR ,          R8X  g   Q R4       h\        VR,          4      p^pV^,           pV^8  g   Q R4       h\        P                  ! RWV 4      w  rVrxrV^,          V	^,          ,           V
,           V^,          ,           V,           V,           pW,          pRV^V ,           pWV^,            R8X  g   Q R4       hV# ):r      Nr  zInvalid TZif data found!:r     Nz-Version 1 file found: no conversion necessaryr  z0Version 2 file not truncated at Version 2 headers   TZif )r  r  unpack)r;   r  r  header_start
header_endr  r  r  r  r  r  	file_sizer  s   &&           r'   r  ZoneInfoData._convert_to_v1  s    }'C)CC'hsm$!B&
!|LLL|@F84A
=7W
 aKk k 	
  	 		(1Y"77 )a-1W<	>=	>< 
r&   )r   r<   r   Nry  )
r1   r2   r3   r4   r  r   r  r  r  r5   r%   r&   r'   r!   r!     s    +!((r&   r!   c                  ~    ] tR tRt]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t	]R 4       t
RtRtR	tR# )
r   i$  c                	>    V P                  4       P                  4       # r*   )_get_zonedumpr   rd   s   &r'   r   ZoneDumpData.transition_keys%  s      "''))r&   c                	0    V P                  4       V,          # r*   )r  )rd   ro   s   &&r'   rl   %ZoneDumpData.load_transition_examples)  s      "3''r&   c                	z    V P                   '       g   V P                  4        V P                   P                  4       # r*   )_FIXED_OFFSET_ZONES_populate_fixed_offsetsr  r  s   &r'   r   ZoneDumpData.fixed_offset_zones-  s/    &&&'')&&,,..r&   c                	^    V P                   '       g   V P                  4        V P                   # r*   )_ZONEDUMP_DATA_populate_zonedump_datar  s   &r'   r  ZoneDumpData._get_zonedump4  s&    !!!'')!!!r&   c                	>    R \        R \        \        4      /V n        R# r  )r  r   r  r  s   &r'   r  $ZoneDumpData._populate_fixed_offsets:  s     :eT40#
r&   c                	    R  pR pR pR pR pR pR pR pR p	R	 p
R
V! 4       RV! 4       RV! 4       RV! 4       RV! 4       RV! 4       RV! 4       RV! 4       RV	! 4       RV
! 4       /
V n         R# )c                 ~    \        R \        RR7      4      p \        R\        4      p\        \	        R^^4      W4      .# )r  r   r  r  r  r  r   r   r  r   )r  r  s     r'   _Africa_Abidjan=ZoneDumpData._populate_zonedump_data.<locals>._Africa_AbidjanB  s>    UId$;<CUD)C xa3S> r&   c                    \        R \        \        4      p \        R\        \        4      p\        R \        \        ) 4      p\        R\        \        4      p\        \	        R^^^4      W4      \        \	        R^^^4      W4      \        \	        R^^^4      W4      \        \	        R^
^^4      W4      \        \	        R^^^4      W24      \        \	        R^^	^4      W#4      .# )z+00z+01i  r   )r  r   r  r  r   )P00_sP01_dP00_dP01_ss       r'   _Africa_Casablanca@ZoneDumpData._populate_zonedump_data.<locals>._Africa_CasablancaJ  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ExaA6E
 
r&   c                    \        R \        RR7      \        4      p \        R\        RR7      \        4      p\        R\        RR7      \        4      p\        R\        RR7      \        4      p\        R\        RR7      \        4      p\	        \        R^^^^^4      W4      \	        \        R^^^4      W4      \	        \        R^^^4      W4      \	        \        R^
^^4      W!4      \	        \        R	^^	^4      W4      \	        \        R
^^^4      W44      \	        \        R
^	^^4      WA4      \	        \        R^^^4      W4      \	        \        R^^^4      W!4      \	        \        R^^^4      W4      \	        \        R^^^4      W!4      .# )r  r   PSTr   PDTPWTPPTr  i~  i  rt  i  i	  i&iir  r   r   r  r  r   )r  r  r  r  r  s        r'   _America_Los_AngelesBZoneDumpData._populate_zonedump_data.<locals>._America_Los_Angeles\  sX   UIf$=tDCUIB$7>CUIB$7?CUIB$7?CUIB$7?C xb"b!Q?JxaQ7BxaQ7Bxb"a8#CxaA6AxaR8#CxaQ7BxaA6Axb!Q7BxaQ7Bxb!Q7B r&   c                 H   \        R \        RR7      \        4      p \        R\        RR7      \        4      p\        R\        RR7      \        4      p\        R\        RR7      \        4      p\        R\        RR7      \        4      p\	        \        R^^4      W4      \	        \        R^^
4      W4      \	        \        R^^4      W!4      \	        \        R	^^4      WC4      \	        \        R	^
^4      W44      \	        \        R
^^4      WC4      \	        \        R
^	^4      W44      .# )r  r   SMTz-05rP  rQ  ib  iv  |  i  r  iiiir  )r  r  N05N04r]  s        r'   _America_Santiago?ZoneDumpData._populate_zonedump_data.<locals>._America_Santiagot  s    UIf$=tDCUIf$=tDCUIf$=tDCUIf$=tDCUIf$=uEC xa3S>xa4c?xa3S>xa4c?xb"5s@xa3S>xa3S> r&   c            
         \        R \        RR7      \        4      p \        R\        RR7      \        4      p\	        \        R^^4      W4      \	        \        R^	^^4      W4      \	        \        R^	^	^4      W4      .# )JSTi~  r   JDT頌  i  i  r  )r  r  s     r'   _Asia_Tokyo9ZoneDumpData._populate_zonedump_data.<locals>._Asia_Tokyo  sq    UIe$<dCCUIe$<eDC xa3S>xaQ7BxaA6A r&   c                    \        R \        RR7      \        4      p \        R\        RR7      \        4      p\        R\        RR7      \        4      p\	        \        R^^4      W4      \	        \        R^^^ ^4      W4      \	        \        R^^^4      W!4      \	        \        R	^^^4      W!4      \	        \        R	^
^^4      W4      \	        \        R
^^^4      W!4      \	        \        R
^
^^4      W4      .# )r  ič  r   rJ  r  rK  i  ig  }  r`  r  r  )r  rJ  rK  s      r'   _Australia_Sydney?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DxaA6Cxb!Q7DxaA6Cxb!Q7D r&   c                    \        R \        RR7      \        4      p \        R\        RR7      \        4      p\        R\        RR7      \        4      p\        R\        \        4      p\        R\        \        4      p\        R\        \        ) 4      p\        R\        \        4      p\	        \        R^^^ 4      W4      \	        \        R^^^4      W4      \	        \        R^
^^4      W#4      \	        \        R	^^^4      W44      \	        \        R
^^^4      WV4      \	        \        R
^
^^4      We4      \	        \        R^^^4      WV4      \	        \        R^
^^4      We4      .# )r  r   DMTrM  i  r  rG  iX  r  r  i  i	  i$ir  )r  r  IST_0GMT_0rG  GMT_1IST_1s          r'   _Europe_Dublin<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Dublin  s)   UIe$<dCCUIe$<dCCui&=uEEudD1EUE51CudUF3EueT2E xaA6AxaQ7Dxb!Q7FxaA6CxaQ7Fxb"a8%GxaQ7Fxb"a8%G	 	r&   c                    \        R \        \        4      p \        R\        \        4      p\        R\        \        4      p\        R\        RR7      \        4      p\	        \        R^^^4      W4      \	        \        R^	^^4      W4      \	        \        R^^^4      W#4      \	        \        R^	^^4      W24      \	        \        R^^^4      W!4      \	        \        R^
^^4      W4      .# )	WETWESTCETCESTi   r   i  i  r  )r  r   r  r   r  r   )r  r  r  r  s       r'   _Europe_Lisbon<ZoneDumpData._populate_zonedump_data.<locals>._Europe_Lisbon  s    UD$/CfeU3DUE40Cfi&=uED xaQ7CxaQ7CxaQ7CxaQ7CxaQ7Cxb"a8$D r&   c                 t   \        R \        RR7      \        4      p \        R\        \        4      p\        R\        \        4      p\	        \        R^^4      W4      \	        \        R^^^4      W4      \	        \        R^
^^4      W!4      \	        \        R^^^4      W4      \	        \        R^
^^4      W!4      .# )r  r   r  rG  i7  i  i  ir  )r  r  rG  s      r'   _Europe_London<ZoneDumpData._populate_zonedump_data.<locals>._Europe_London  s    UIc$:DACUD$/CUE51C xb!4c?xaQ7Bxb"a8#CxaQ7Bxb"a8#C r&   c            	     b   \        R \        R	R7      \        4      p \        R\        R
R7      \        4      p\        R\        RR7      \        4      p\        R\        RR7      \        4      p\        \	        R^^4      W4      \        \	        R^
^4      W4      \        \	        R^^4      W#4      .# )r  r   z-1040z-10z+14i  im  i  i  ili ji`sr  )r  N1040N10P14s       r'   _Pacific_KiritimatiAZoneDumpData._populate_zonedump_data.<locals>._Pacific_Kiritimati  s    UIf$=tDCw	&(A4HEUIf$=tDCUIe$<dCC xa3S@xb!4eAxb"5s@	 r&   r  zAfrica/Casablancar&  rc  rp  r  r  rv  rE  zPacific/KiritimatiN)r  )rd   r  r  r  r  r  r  r  r  r  r  s   &          r'   r  $ZoneDumpData._populate_zonedump_data@  s    		$	0	"			(			 o/!3!5!#7#9 1 3 1 3+-^-^-^- "5"7
r&   Nr%   )r1   r2   r3   r4   rh   r   rl   r   r  r  r  r  r  r5   r%   r&   r'   r   r   $  s    * * ( ( / / " "
 
 

 i
 i
V Nr&   r   __main__)a
__future__r   r  rE   rm   importlib.metadata	importlibr   r  r  r   r  r/  r+   r  r   rL  r   r   r   r   r   	functoolsr	   test.supportr
   test.support.os_helperr   test.test_zoneinfor   r  test.test_zoneinfo._supportr   r   test.support.import_helperr   r   r   get_modulesr-  rK  metadataHAS_TZDATA_PKGPackageNotFoundErrorr#   r$   r    r   r  r  DATA_DIRr"   r   
splitdriver  r   r  r(   r-   	Exceptionr/   r8   rW   rv   r/  rO  rQ  rS  rc  rg  rs  rM  ru  r~  r  r	  r  rc  re  r  r  r  r  r  r  r%  r'  rs  TestCaserv  	dataclassr  r  r!   r   r1   mainr%   r&   r'   <module>r     sX   "     	  	   	     > > % - 6 7 J AV&224 Z)N  <<!((61//
4 # |M	) 	 @ :n$?$4 n$b	B-L B-J	#8, 		$9= 	3< 3*0 \ $n  
N#, ##* 
N; a$ aH] q  qh e)9 eP* o+*: o+d, ,, ,&2 t4"2 t4n* x3! x3v* <** <, d#  $ d#%# %# $%#P> >BI IX zMMO aF .. Ns   L L#"L#