
    j8                        S SK J r JrJr  S SKrS SKrS SKrS SKrS SKrS SK	r
S SKrS SKJrJr  S SKJrJr  S SKrS SKJrJrJrJrJr  S SKJr  \R8                  R:                  S 5       rS rS r S	 r!S
 r"S r#S r$S r%\RL                  " SS 4\RN                  RQ                  S5      S 4/S9S 5       r)S r*S r+\R8                  RY                  SSS/5      S 5       r-S r.\R8                  RY                  S/ SQ5      S 5       r/S r0S r1S  r2\R8                  RY                  S/ S!Q5      S" 5       r3S# r4S$ r5\R8                  Rm                  \(       + S%S&9\R8                  RY                  S/ S'Q5      S( 5       5       r7\R8                  RY                  S/ S'Q5      S) 5       r8\R8                  RY                  S*/ S+Q5      S, 5       r9S- r:S. r;g)/    )datetime	timedeltatimezoneN)
conversion	timezones)IS64is_platform_windows)Index	Timedelta	Timestamp
date_rangeto_datetimec                      Sn [         R                  " SU  S35      n[        R                  " [        R
                  SU/5        g )Nz-'No time zone found with key Europe/Brussels'a/          import sys, zoneinfo, pandas as pd
        sys.modules['tzdata'] = None
        zoneinfo.reset_tzpath(['/path/to/nowhere'])
        try:
            pd.to_datetime('2012-01-01').tz_localize('Europe/Brussels')
        except zoneinfo.ZoneInfoNotFoundError as err:
            assert str(err) == "z
"
        z-c)textwrapdedent
subprocess
check_callsys
executable)msgcodes     Z/var/www/html/KUNJ/venv/lib/python3.13/site-packages/pandas/tests/tslibs/test_timezones.pytest_no_timezone_datar   #   sH     :C??! "% &		
D 3>>467    c                 j    [         R                  " U 5      n[         R                  " U5      (       d   eg N)r   maybe_get_tzis_utc)utc_fixturetzs     r   test_is_utcr!   6   s)    				,BBr   c                  x   [         R                  " S5      n U R                   H2  n[        R                  " U5      n[        R                  " SU-   5      nM4     Wc  [         R
                  " WS-   5        WS:X  a  [        5       (       d1  [        R                  " W5      [        R                  " U5      :w  d   eg g )Npytzz	dateutil/z': dateutil does not know about this oneUTC)pytestimportorskipcommon_timezonesr   r   skipr	   _p_tz_cache_key)r#   tz_nametz_ptz_ds       r   1test_cache_keys_are_distinct_for_pytz_vs_dateutilr-   ;   s    v&D((%%g.%%kG&;< ) |GGGHu!4!6!6((.)2K2KD2QQQQ "7r   c                      [        S[        R                  R                  5       S9n U R                  [        R                  R                  5       :X  d   eS[	        U 5      ;   d   eg )N
2011-01-01r    ztz='tzlocal()'))r   dateutilr    tzlocalrepr)tss    r   test_tzlocal_reprr5   I   sL    	<HKK$7$7$9	:B55HKK''))))R(((r   c                  x    [         R                  " S5      n U [        R                  R	                  5       :X  d   eg )Nz	tzlocal())r   r   r1   r    r2   r0   s    r   test_tzlocal_maybe_get_tzr7   P   s-    				,B$$&&&&r   c                  l   [        S[        R                  R                  5       S9R	                  S5      n [        R                  R                  5       R                  [        SSS5      5      nUR                  5       nU R                  U-   [        S5      R	                  S5      R                  :X  d   eg )Nr/   r0   si     )	r   r1   r    r2   as_unit	utcoffsetr   total_seconds_value)r4   offsets     r   test_tzlocal_offsetr@   V   s     
<HKK$7$7$9	:	B	B3	GB[[  ",,XdAq-ABF!!#F99v<!8!@!@!E!L!LLLLr   c                      [         R                  R                  5       n [        R                  " U 5      (       a   e[        R
                  " U [         R                  R                  5       5      (       a   eg r   )r1   r    r2   r   r   
tz_comparetzutcr0   s    r   test_tzlocal_is_not_utcrD   b   sT    				B######B(9(9(;<<<<<r   c                     [         R                  " U 5      n[         R                  " U5      n[         R                  " X#5      (       d   eg r   )r   r   rB   )r   utc_fixture2r    tz2s       r   test_tz_compare_utcrH   j   s9    				,B

 
 
.C((((r   zpytz/US/Easternc                 $    U R                  U5      $ r   )localizer    xs     r   <lambda>rM   r   s    "++a.r   
US/Easternc                      UR                  U S9$ )Ntzinfo)replacerK   s     r   rM   rM   s   s    			8Lr   )paramsc                 >   U R                   u  p[        U[        5      (       aL  UR                  S5      (       a6  [        R
                  " S5      nUR                  UR                  S5      5      n[        SSS5      n[        SSS5      nU" X5      nU" X5      nXXgXE4$ )Nzpytz/r#   i  r:   i  )	param
isinstancestr
startswithr%   r&   r   removeprefixr   )requesteasternrJ   r#   start_naive	end_naivestartends           r   infer_setupr`   p   s      G'3G$6$6w$?$?""6*-- 4 4W =>4A&Kq!$IW*E
7
&Ce+@@r   c                 j   U u  pp4pV[         R                  " X45      [        R                  " XQ5      R                  L d   e[         R                  " US 5      [        R                  " XQ5      R                  L d   e[         R                  " S U5      [        R                  " Xa5      R                  L d   eg r   )r   infer_tzinfor   localize_pydatetimerQ   )r`   r[   _r^   r_   r\   r]   s          r   test_infer_tz_compatre      s    5@2GK 	u*))+?FF	G	G 	ud+))+?FF	G	G 	tS))))=DD	E	Er   c                     U u    pp4n[         R                  nUR                  U5      nUR                  U5      n[        R                  " X#5      UL d   eg r   )r   utc
astimezoner   rb   )r`   rd   r^   r_   r\   r]   rg   s          r   test_infer_tz_utc_localizeri      sR    /:,Aq9
,,C""3'E


s
#C!!%-444r   orderedTFc                 ,   U u  n    p4nSn[         R                  nUR                  U5      n[        R                  " XR5      n	U(       a  X4OX4n
[
        R                  " [        US9   [        R                  " U
6   S S S 5        g ! , (       d  f       g = f)Nz'Inputs must both have the same timezonematch)
r   rg   rh   r   rc   r%   raisesAssertionErrorr   rb   )r`   rj   r[   rd   r\   r]   r   rg   r^   r_   argss              r   test_infer_tz_mismatchrq      su    /:,GQ19
3C
,,C""3'E

(
(
<C"E<D	~S	1% 
2	1	1s   (B
Bc                     [         R                  " [        SS9   [        R                  " S5        S S S 5        [         R                  " [        SS9   [        R                  " [         5        S S S 5        Sn [         R                  " [        U S9   [        R                  " [        SSS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nb= f! , (       d  f       g = f)	Nz<class 'float'>rl   g      F@z<class 'module'>z<class 'pandas.Timestamp'>z
2021-01-01r$   r0   )r%   rn   	TypeErrorr   r   r   )r   s    r   test_maybe_get_tz_invalid_typesrt      s    	y(9	:t$ 
; 
y(:	;v& 
< 'C	y	,y%@A 
-	, 
;	: 
<	; 
-	,s#   B8C	C8
C	
C
C(r*   )r$   GMT	Etc/GMT+1z	Etc/GMT-5c                     [         R                  " S5      nUR                  " U 5      n[        R                  " U5      (       d   eg )Nzoneinfor%   r&   ZoneInfor   is_fixed_offset)r*   rx   r    s      r   test_zoneinfo_fixed_offsetr|      s;     "":.H			7	#B$$R((((r   c                      [         R                  " S5      n U R                  " S5      n[        R                  " U5      (       a   eg )Nrx   Africa/Lusakary   )rx   r    s     r   9test_zoneinfo_not_fixed_offset_with_historical_transitionr      s<    "":.H			?	+B((,,,,,r   c                     [         R                  " [        R                  5      n U [        [	        SSS95      :X  d   e[         R                  " S5      n U [        [	        SSS95      :X  d   e[         R                  " S5      n U [        [	        SSS9* 5      :X  d   e[         R                  " S5      n U [        [	        SS	S95      :X  d   e[         R                  " S
5      n U [        [	        SS	S9* 5      :X  d   eg )Nr   )hoursminutesz+01:15r:      z-01:15z	UTC+02:45   -   z	UTC-02:45)r   r   r   rg   r   r0   s    r   test_maybe_get_tz_offset_onlyr      s     
			-B)!Q78888 
			)B)!R89999				)B91b99:::: 
			,B)!R89999				,B91b99::::r   c                     [         R                  " S5      n [        SSSSS9nUR                  U 5      n[        R
                  " [        S5       Vs/ s H7  n[        SSS	U[        R                  S
9R                  U 5      R                  PM9     sn[        R                  S9n[        R                  " UR                  R                  5       U5        g s  snf )Nz
US/Pacificz
2040-07-01   hr$   )periodsfreqr    i     r:   rP   dtype)rx   rz   r   
tz_convertnparrayranger   r   rg   rh   hourint32tmassert_numpy_array_equalto_numpy)r    	utc_timeslocalr   expected_hourss        r   $test_zoneinfo_utc_to_local_post_2037r      s     
		<	(B<#%HI  $EXX b		
! T1ahll;FFrJOO!	
 hhN 

 3 3 5~F	
s   >C)America/New_YorkAustralia/MelbournezEurope/Kaliningradc                 &   [         R                  " U 5      n/ SQn[        USS9nUR                  U5      nU Vs/ s HC  n[        R
                  " U5      R                  [        R                  S9R                  U5      PME     nn[        R                  " UR                  5       [        R                  " U5      5        U Vs/ s H  owR                  5       PM     snU Vs/ s H  oR                  5       PM     sn:X  d   eg s  snf s  snf s  snf )N)z
2038-01-01z
2038-07-01z
2100-01-01z
2100-07-01z
2200-01-01z
2200-07-01Trg   rP   )rx   rz   r   r   r   fromisoformatrR   r   rg   rh   r   r   to_pydatetimer   r   r<   )	r*   r    datar   r   dateexpectedr4   dts	            r   $test_zoneinfo_utc_to_local_post_2100r      s     
		7	#BD Dd+I  $E D 	t$,,HLL,ALLRP  
  3 3 5rxx7IJ%*+UrLLNU+/R2/RRRR ,/Rs   A
DD	"Dc                     [        [        R                  " SS/SS9SS9n U R                  S5      n[        R
                  " S5      n[        SS	S	[        R                  S
9R                  U5      [        SSS	[        R                  S
9R                  U5      /nUR                  S:X  d   e[        R                  " UR                  5       [        R                  " U5      5        g )N3000-01-01T00:00:003000-07-01T00:00:00M8[s]r   Tr   Europe/Brussels  r:   rP   r   zdatetime64[s, Europe/Brussels])r   r   r   r   rx   rz   r   r   rg   rh   r   r   r   r   )r   r   r    r   s       r   8test_zoneinfo_utc_to_local_far_future_seconds_resolutionr     s     
')>?wOI   !23E			,	-Bq!HLL1<<R@q!HLL1<<R@H
 ;;:::: 3 3 5rxx7IJr   c                     [        [        R                  " SS/SS95      n U R                  S5      nUR	                  S5      n[
        R                  " S5      n[        SSSUS	9R                  [        R                  5      [        SS
SUS	9R                  [        R                  5      /nUR                  S:X  d   e[        R                  " UR                  5       [        R                  " U5      5        g )Nr   r   r   r   r   r$   r   r:   rP   r   zdatetime64[s, UTC])r   r   r   tz_localizer   rx   rz   r   rh   r   rg   r   r   r   r   )local_times	localized
result_utcr    expected_utcs        r   8test_zoneinfo_local_to_utc_far_future_seconds_resolutionr      s     
')>?wOK ''(9:I%%e,J			,	-Bq!B'228<<@q!B'228<<@L
 3333
 8 8 :BHH\<RSr   zEstdlib datetime.fromtimestamp fails on 32-bit platforms with overflow)reason)r   zAmerica/Santiagor   r   c                    [         R                  " U 5      nSSKJn  [        R                  " [        U" U 5      R                  R                  S5      5      5      nU[        SS9-
  R                  [        R                  S9n[        S5       Vs/ s H  oT[        SU-  S	9-   PM     nnU Vs/ s H  owR                  U5      PM     nnU Vs/ s H  n[        U5      PM     n	n[        U	 V
s/ s H  oS S
 PM	     sn
5      nUR!                  U SS9n["        R$                  " UR'                  S5      R)                  5       [*        R,                  " USS95        ["        R$                  " UR/                  [        5      [1        U	5      5        ["        R$                  " UR)                  5       [*        R,                  " USS95        g s  snf s  snf s  snf s  sn
f )Nr   rz   3  r:   )daysrP   `      r   iinfer	ambiguousr$   Or   )rx   rz   zoneinfo._zoneinfor   fromtimestampmax	_tz_aftertransitionsr   rR   r   rg   r   rh   rW   r   r   r   assert_equalr   r   r   r   astyper
   )r*   r    rz   transr^   ir   r4   expected_tzexpected_strvr   results                r   0test_zoneinfo_boundary_at_last_cached_transitionr   3  sr    
		7	#B+""3x'8'B'B'N'Nt'T#UVEYA&&//x||/DEAFzARSARAYrAv66ARLS/;<|==$|K<&12kCGkL26A3B67E w':F OO% ..0"((<s2S OOFMM#&l(;<OOF((*BHH[,LM! T<26s   G-G
G-Gc                    [         R                  " U 5      nSSKJn  U" U 5      R                  R	                  S5      u  p4X4:  Ga  [        USS9[        SS9-   n[        R                  " [        SS	9   UR                  U 5        S S S 5        UR                  U S
S9nU[        R                  L d   eUR                  U SS9nUR                  5       [        SS9-   R                  US9nUR                  5       U:X  d   eUR                  U SS9n	UR                  5       [        SSS9-
  R                  US9n
U	R                  5       U
:X  d   eg [        USS9[        SS9-
  n[        R                  " [        SS	9   UR                  U 5        S S S 5        UR                  U S
S9nU[        R                  L d   eUR                  U SS9nUR                  5       R                  SUS9nUR                  5       U:X  d   eUR                  U SS9nUR                  5       R                  SUS9nUR                  5       U:X  d   eg ! , (       d  f       GN= f! , (       d  f       N= f)Nr   r   r   r9   )unitr   r   znonexistent timerl   NaT)nonexistentshift_forwardrP   shift_backwardr:   )r   microsecondszCannot infer dst timer   T)foldrQ   F)rx   rz   r   r   r   r   r   r%   rn   
ValueErrorr   pdr   r   r   rR   )r*   r    rz   r^   r_   r4   r   
result_dstexpected_dst
result_stdexpected_stds              r   3test_zoneinfo_nonexistent_at_last_cached_transitionr   W  s=    
		7	#B+'",,88>JE{u3')B*??]]:-?@NN7# A U;^^G^I
((*Yr-BBKKSUKV'')\999^^G9I^J
2A!FF
''
 	 '')\999 s%	"(==]]:-DENN7# F 59^^Gt^<
'')11q1D'')\999^^Gu^=
'')11q1D'')\999A A@( FEs   3I;I
I
I#key)rN   r~   zAsia/Qyzylordac                     [         R                  " U 5      n[        SSS9R                  U5      n[	        SSS[
        R                  S9R                  U5      nUR                  UR                  :X  d   eg )Nz
1850-01-01r$   r0   i:  r:   rP   )	rx   rz   r   r   r   r   rg   rh   minute)r   r    r4   r   s       r   /test_zoneinfo_utc_to_local_pre_first_transitionr     s`     
		3	B	<E	*	5	5b	9Ba8<<8CCBGH99'''r   c                  `   [        [        R                  " SS5      5      n Sn[        R                  " [
        US9   U R                  S5        S S S 5        [        R                  " [
        US9   [        U R                  SSS9n S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)Nz10000-01-01T09:00:00usz;Localizing Timestamps which are outside the range of Pythonrl   r   )r   r    )r   r   
datetime64r%   rn   NotImplementedErrorr   r>   )r4   r   s     r   -test_zoneinfo_conversion_outside_range_stdlibr     s~     
2==!7>	?B
GC	*#	6
() 
7 
*#	6ryyt0AB 
7	6 
7	6 
7	6s   B/B
B
B-c                     [         R                  " S5      n SSKJn  U R                  [
        R                  4U R                  S5      [        [        SS95      4U R                  S5      [        R                  " S5      4U R                  S5      [        R                  " S5      44 H  u  p#U" U5      nXC:X  a  M   e   g )Nr#   r   )_normalize_pytz_timezoneZ   r   r   rv   )r%   r&   pandas.io._utilr   r$   r   rg   FixedOffsetr   rx   rz   )r#   r   r    r   r   s        r   test_normalize_pytz_timezoner     s    v&D8 
8<< 			"	x	"(=>?	)	*H,=,=>P,QR	{	#X%6%6{%CD	 *"-!!!r   )<r   r   r   r   r   r   rx   dateutil.tzr1   numpyr   r%   pandas._libs.tslibsr   r   pandas.compatr   r	   pandasr   r
   r   r   r   r   pandas._testing_testingr   mark
single_cpur   r!   r-   r5   r7   r@   rD   rH   fixturer    gettzr`   re   ri   parametrizerq   rt   r|   r   r   r   r   r   r   skipifr   r   r   r   r    r   r   <module>r      s    
  
     
    8 8$ 
R)'	M=) 	89			<	(*LMAA"5 T5M2& 3&	B $LM) N)-;,G" PSS2K&T& HR   VN		N8 V,:	,:^  QR	( S	(
C"r   