
    d&                     p    d dl m Z mZmZ d dlZd dlZd dlmZmZm	Z	m
Z
mZmZ d dlmZ  G d d          ZdS )    )datetime	timedeltatimezoneN)OutOfBoundsDatetimeOutOfBoundsTimedelta	Timedelta	Timestampoffsets	to_offsetc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                            d ed           ej        dd           ed          g          d             Zej                            d ej        dd          df ej        dd          df ej        dd          df ej        dd          dfg          d             Zej                            d ed           edd          g          ej                            dd ej        d           ej        dd gej        !           ej        dd"gej        !          g          d#                         Zej                            d$d%d&g          d'             Zej                            d$d%d&g          d(             Zd) Zd*S )+TestTimestampArithmeticc                     t          d          }t          d          dz  }t          d          }||z   |k    sJ ||z   |k    sJ t          d          }||z
  |k    sJ d S )N2000/1/1Dd   z
2000/04/10z
1999/09/23)r	   r   )selfstampoffset_no_overflowexpecteds       i/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/scalar/timestamp/test_arithmetic.pytest_overflow_offsetz,TestTimestampArithmetic.test_overflow_offset   s     *%%&s^^c1\**))X5555!E)X5555\**))X555555    c                    t          d                              d          }dt          j        d          z  }d}d}t	          j        t          |          5  ||z    d d d            n# 1 swxY w Y   t	          j        t          |          5  ||z    d d d            n# 1 swxY w Y   t	          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   t          d                              d          }t          d	          d
z  }d}t	          j        t          |          5  ||z    d d d            n# 1 swxY w Y   t	          j        t          |          5  ||z    d d d            n# 1 swxY w Y   t	          j        t          |          5  ||z
   d d d            d S # 1 swxY w Y   d S )Nz2017-01-13 00:00:00nsi3   zathe add operation between \<-?\d+ \* Days\> and \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} will overflowzECannot cast -?20169940 days \+?00:00:00 to unit='ns' without overflowmatchr   r   l    d(	 zHCannot cast -?10000000000 days \+?00:00:00 to unit='ns' without overflow)	r	   as_unitr
   Daypytestraisesr   OverflowErrorr   )r   r   offset_overflowmsglmsg2lmsg3s         r   test_overflow_offset_raisesz3TestTimestampArithmetic.test_overflow_offset_raises%   sW    /0088>>"W[^^3 	
 Y]/u=== 	$ 	$O##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]=444 	$ 	$e##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]/u=== 	$ 	$O##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ *%%--d33#C..61 X 	 ]/u=== 	$ 	$O##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]=444 	$ 	$e##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]/u=== 	$ 	$O##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$sl   A++A/2A/B##B'*B'	CC"C7E		EE/FFF'F::F>F>c                 f   d}t          d                              d          }t          d                              d          }t          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   ||                                z
  |                                |z
  k    sJ d S )NzResult is too largez2101-01-01 00:00:00r   z1688-01-01 00:00:00r   )r	   r   r    r!   r   to_pydatetime)r   r$   abs       r   test_overflow_timestamp_raisesz6TestTimestampArithmetic.test_overflow_timestamp_raisesM   s    #+,,44T::+,,44T::].c::: 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 AOO%%%1??+<+<q+@AAAAAAs   "A44A8;A8c                 l    t          d          }|t          d          z   }|j        |j        k    sJ d S )Nl   { |%*x r   )r	   r   
nanosecond)r   valresults      r   test_delta_preserve_nanosz1TestTimestampArithmetic.test_delta_preserve_nanosY   s<    +,,y||# CN222222r   c                 |   t          d          }t          d|          }||z   }||z
  |k    sJ |                                |z
  |k    sJ ||                                |z
  |k    sJ d S d}t	          j        t          |          5  |                                |z
   d d d            d S # 1 swxY w Y   d S )Nl   @~z
2021-01-01tzz;Cannot subtract tz-naive and tz-aware datetime-like objectsr   )r   r	   r)   to_datetime64r    r!   	TypeError)r   tz_naive_fixturetdtsotherr$   s         r   test_rsub_dtscalarsz+TestTimestampArithmetic.test_rsub_dtscalars^   s%   }%%|(8999RrzR""$$r)R////#&&((2-333333OCy444 + +##%%**+ + + + + + + + + + + + + + + + + +s   B11B58B5c                     t          ddd          }t          t          ddd                    }||z
  j        dk    sJ ||z
  j        dk    sJ d S )N  
         r   )r   r	   days)r   dtr9   s      r   test_timestamp_sub_datetimez3TestTimestampArithmetic.test_timestamp_sub_datetimem   s`    dB##xb"--..R~""""R~######r   c                     t          d          }t          ddddt          j                  }||z
  }t	          |t
                    sJ |t          d          k    sJ d S )Nz2020-10-22T22:00:00+00:00i  r>      tzinfoz0 days)r	   r   r   utc
isinstancer   r   t1t2r0   s       r   test_subtract_tzaware_datetimez6TestTimestampArithmetic.test_subtract_tzaware_datetimes   sh    233dBBx|<<<b&),,,,,8,,,,,,,,r   c                     t          d                              d          }t          d                              d          }||z
  }t          |t                    sJ |t          d          k    sJ d S )N20130101z
US/EasternCET0 days 06:00:00)r	   tz_localizerJ   r   rK   s       r   /test_subtract_timestamp_from_different_timezonezGTestTimestampArithmetic.test_subtract_timestamp_from_different_timezone|   sw    z""..|<<z""..u55b&),,,,,#455555555r   c           
      j   t          dddt          t          d                              }t          d                              d          }||z
  }t          |t                    sJ |t          d          k    sJ ||z
  }t          |t                    sJ |t          d	          k    sJ d S )
Nr=   r   hoursrG   rP   rQ   rR   z-1 days +18:00:00)r   r   r   r	   rS   rJ   r   rK   s       r   5test_subtracting_involving_datetime_with_different_tzzMTestTimestampArithmetic.test_subtracting_involving_datetime_with_different_tz   s    dAq)"2E2E2E)F)FGGGz""..u55b&),,,,,#4555555b&),,,,,#677777777r   c                     t          d          }|                    d          }|                    |          t          d          z   }||z
  }t	          |t                    sJ |t          d          k    sJ d S )NrP   UTCz0 days 05:00:00)r	   rS   
tz_convertr   rJ   )r   tz_aware_fixturet_rawt_UTCt_diffr0   s         r   $test_subtracting_different_timezonesz<TestTimestampArithmetic.test_subtracting_different_timezones   s    *%%!!%((!!"233i@Q6R6RR%&),,,,,#455555555r   c                    t          ddd          }t          d          }t          |          }d}t          j        t
          |          5  |dz    d d d            n# 1 swxY w Y   t          j        t
          |          5  |dz
   d d d            n# 1 swxY w Y   t          ||z
            t          k    sJ t          ||z             t          k    sJ t          ||z
            t          k    sJ t          j	        dd          }t          ||z             t          k    sJ t          ||z
            t          k    sJ d S )	Ni        r   )secondsz Addition/subtraction of integersr   r   )
r   r   r	   r    r!   r6   typer   nptimedelta64)r   rC   r8   r9   r$   td64s         r   test_addition_subtraction_typesz7TestTimestampArithmetic.test_addition_subtraction_types   s    dAq!!q!!!r]]0]9C000 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9C000 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 BG}}	))))BG}}	))))BG}}	)))) ~a%%BI)++++BI)++++++s$   A  A$'A$BBBr8   rc   rW   hc                 &    |}||z   ||z   k    sJ d S )N )r   r8   fixed_now_tsr9   s       r   test_radd_tdscalarz*TestTimestampArithmetic.test_radd_tdscalar   s(    
 Bw"r'!!!!!!r   zother,expected_differenceir   iIusimsi@+c                     t          j                    }t          |                              d          }||z   }|j        |j        z
  }||k    sJ t          |          }||z   |k    sJ d S )Nr   )r   utcnowr	   r   _value)r   r:   expected_differencenowr9   r0   valdiffts2s           r   #test_timestamp_add_timedelta64_unitz;TestTimestampArithmetic.test_timestamp_add_timedelta64_unit   sy     os^^##D))e-")+-----nnU{f$$$$$$r   r9   z
1776-07-04r[   r3   r:   r      dtyperd   c                    d}t          j        t          |          5  ||z    d d d            n# 1 swxY w Y   t          j        t          |          5  ||z    d d d            n# 1 swxY w Y   t          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   d}t          j        t          |          5  ||z
   d d d            d S # 1 swxY w Y   d S )Nz3Addition/subtraction of integers and integer-arraysr   zunsupported operand type)r    r!   r6   )r   r9   r:   r$   s       r   test_add_int_with_freqz.TestTimestampArithmetic.test_add_int_with_freq   s   " D]9C000 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	BJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9C000 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 )]9C000 	 	BJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sB   044A((A,/A,B  B$'B$CC"Cshape)   )rz   rc   c                 
   t          d                              d          t          j        d                              d                              |          }|z   }fdt          d          D             }t          j        d |D             d                              |          }t          j	        ||           |z   }t          j	        ||           |z
  }fd	t          d          D             }t          j        d
 |D             d                              |          }t          j	        ||           d}t          j        t          |          5  |z
   d d d            d S # 1 swxY w Y   d S )N2020-04-04 15:45r   r   m8[h]c                 6    g | ]}t          |           z   S rW   r   .0nr9   s     r   
<listcomp>zATestTimestampArithmetic.test_addsub_m8ndarray.<locals>.<listcomp>   )    ???R)!,,,,???r   c                     g | ]	}|j         
S rm   asm8r   xs     r   r   zATestTimestampArithmetic.test_addsub_m8ndarray.<locals>.<listcomp>       777QV777r   zM8[ns]r{   c                 6    g | ]}t          |           z
  S r   r   r   s     r   r   zATestTimestampArithmetic.test_addsub_m8ndarray.<locals>.<listcomp>   r   r   c                     g | ]	}|j         
S rm   r   r   s     r   r   zATestTimestampArithmetic.test_addsub_m8ndarray.<locals>.<listcomp>   r   r   Dunsupported operand type\(s\) for -: 'numpy.ndarray' and 'Timestamp'r   )r	   r   rg   arangeastypereshaperangearraytmassert_numpy_array_equalr    r!   r6   r   r   r:   r0   	ex_stampsr   r$   r9   s          @r   test_addsub_m8ndarrayz-TestTimestampArithmetic.test_addsub_m8ndarray   s    )**22488	!##G,,44U;;e????eAhh???	877Y777xHHHPPQVWW
#FH555
#FH555e????eAhh???	877Y777xHHHPPQVWW
#FH555U]9C000 	 	BJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   %E88E<?E<c                    t          dd          t          j        d                              d                              |          }|z   }fdt          d          D             }t          j        |                              |          }t          j        ||           |z   }t          j        ||           |z
  }fdt          d          D             }t          j        |                              |          }t          j        ||           d}t          j
        t          |	          5  |z
   d d d            d S # 1 swxY w Y   d S )
Nr   z
US/Pacificr3   r   r   c                 6    g | ]}t          |           z   S r   r   r   s     r   r   zITestTimestampArithmetic.test_addsub_m8ndarray_tzaware.<locals>.<listcomp>  r   r   c                 6    g | ]}t          |           z
  S r   r   r   s     r   r   zITestTimestampArithmetic.test_addsub_m8ndarray_tzaware.<locals>.<listcomp>  r   r   r   r   )r	   rg   r   r   r   r   r   r   r   r    r!   r6   r   s          @r   test_addsub_m8ndarray_tzawarez5TestTimestampArithmetic.test_addsub_m8ndarray_tzaware  s    )l;;;	!##G,,44U;;e????eAhh???	8I&&..u55
#FH555
#FH555e????eAhh???	8I&&..u55
#FH555U]9C000 	 	BJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   <EEEc                     t          ddd          }t          ||          }t          ||          }||z
  }t          d          }||k    sJ d S )Ni  r   r3   r   )r   r	   r   )r   utc_fixtureutc_fixture2rC   ts1rx   r0   r   s           r   #test_subtract_different_utc_objectsz;TestTimestampArithmetic.test_subtract_different_utc_objects   sb    dAq!!{+++|,,,sQ<<!!!!!!r   N) __name__
__module____qualname__r   r'   r,   r1   r;   rD   rN   rT   rY   ra   rj   r    markparametrizer   rg   rh   r   ro   ry   r	   int64r   int32uint64r~   r   r   r   rm   r   r   r   r      s       6 6 6&$ &$ &$P
B 
B 
B3 3 3
+ + +$ $ $- - -6 6 68 8 86 6 6, , ,4 [yyq!!!>2>!S#9#9991;M;M;MN " " "
 [#R^D$''.R^J--z:R^D$''1R^D$''4		
 % % % [Il##Ilu---	
  [BHQKKBHaV28,,,BHaV29---		
      [WtVn55  65. [WtVn55  650" " " " "r   r   )r   r   r   numpyrg   r    pandas._libs.tslibsr   r   r   r	   r
   r   pandas._testing_testingr   r   rm   r   r   <module>r      s                                      Q" Q" Q" Q" Q" Q" Q" Q" Q" Q"r   