o
    5cf                     @  s  d Z ddlmZ ddlmZmZ ddlmZmZmZ ddl	Z	ddl
ZddlZddlmZmZmZmZ ddlm  m  mZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZm Z  ddl!m"Z# ddl$m%Z%m&Z& ddl'm(  mZ ddl'm)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: eee*eeef f  Z;g dZ<G dd de%Z=G dd de%Z>G dd dZ?dd Z@dd ZAG dd dZBdd ZCG dd dZDdd ZEd d! ZFejGHd"eIejJd#d$ ZKd%d& ZLejGHd"eIejJd'd( ZMejGHd"eIejJd)d* ZNd+d, ZOd-d. ZPd/d0 ZQejGHd1d2d3id4fd2d5id6fd2d7id8fd9d3id:fd9d7id;fd<d3id=fd<d7id>fd?d3id@fd?d7idAfdBd3idCfdBd7idDfdEd3idFfdEd7idGfdHd3idIfdHd7idJfdKd3idLfdKd7idMfdNd3idOfdNd7idPfgdQdR ZRdSdT ZSejGHdUg dVdWdX ZTdYdZ ZUejGHd[g d\d]d^ ZVejGHd_e2d`dadbedcfe2dddeedffgdgdh ZWdS )iz!
Tests of pandas.tseries.offsets
    )annotations)datetime	timedelta)DictListTupleN)NaT	Timestamp
conversion	timezones)_get_offset_offset_map)INVALID_FREQ_ERR_MSG)PerformanceWarning)DatetimeIndexSeries
date_range)BaseWeekDay)FY5253
BaseOffsetBDay	BMonthEndBusinessHourCustomBusinessDayCustomBusinessHourCustomBusinessMonthBeginCustomBusinessMonthEnd
DateOffsetEasterFY5253QuarterLastWeekOfMonth
MonthBeginNanoTickWeekWeekOfMonth)	yearsmonthsweeksdayshoursminutessecondsmillisecondsmicrosecondsc                   @  s  e Zd Zi deddeddeddeddedd	edd
eddeddeddeddeddeddeddeddeddeddedi deddeddedded d!ed d"ed#d$ed%d&ed'd(ed'd)ed#d*ed+d,ed-d.ed/d0ed1d2ed3d4ed5d6ed7Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA Z	dBdC Z
dbdEdFZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zejd]g d^d_d` ZdaS )c
TestCommonDayz2011-01-02 09:00:00r   BusinessDay2011-01-03 09:00:00r   r   z2011-01-31 09:00:00r   r"   z2011-02-01 09:00:00BusinessMonthBeginMonthEndSemiMonthEndz2011-01-15 09:00:00SemiMonthBeginBusinessMonthEnd	YearBeginz2012-01-01 09:00:00
BYearBeginYearEndz2011-12-31 09:00:00BYearEndz2011-12-30 09:00:00QuarterBeginz2011-03-01 09:00:00BQuarterBegin
QuarterEndz2011-03-31 09:00:00BQuarterEndr   z2011-01-03 10:00:00r   r&   z2011-01-08 09:00:00r!   z2011-01-29 09:00:00r    z2011-01-25 09:00:00r   r%   r   z2011-04-24 09:00:00Hourz2011-01-01 10:00:00Minutez2011-01-01 09:01:00Secondz2011-01-01 09:00:01Milliz2011-01-01 09:00:00.001000Microz2011-01-01 09:00:00.000001r#   z2011-01-01T09:00:00.000000001c                 C  s|   |  |}d}tjt|d d|_W d    n1 sw   Y  tjt|d d|_W d    d S 1 s7w   Y  d S )Nz8objects is not writable|DateOffset objects are immutablematchT[   )r   pytestraisesAttributeError	normalizen)selfoffset_typesoffsetmsg rR   _/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/tseries/offsets/test_offsets.pytest_immutable{   s   
"zTestCommon.test_immutablec                 C  sl   |  |}td| }t|tsJ t| tu sJ |t tu s"J t| tu s*J | ttu s4J d S )N20080101)r   r	   
isinstancer   _apply)rN   rO   rP   resultrR   rR   rS   test_return_type   s   
zTestCommon.test_return_typec                 C  sH   |  |}|jdksJ |d }|jdksJ |d }|jdks"J d S )N      )r   rM   )rN   rO   rP   
neg_offset
mul_offsetrR   rR   rS   test_offset_n   s   
zTestCommon.test_offset_nc                 C  sb   |  |}tdd}tjtdd t|dd|i|j W d    d S 1 s*w   Y  d S )Ni  sargument must be an integerrF   rM   rR   )r   nptimedelta64rI   rJ   	TypeErrortypekwds)rN   rO   offtd64rR   rR   rS   test_offset_timedelta64_arg   s
   
"z&TestCommon.test_offset_timedelta64_argc                 C  s|   |  |}t||d g|d |d gg}tddgddgg| }t|| |tddgddgg }t|| d S )N   r\      rZ   )r   rb   arraytmassert_numpy_array_equal)rN   rO   rg   expectedrX   rR   rR   rS   test_offset_mul_ndarray   s   
"z"TestCommon.test_offset_mul_ndarrayc                 C  s6   |  |}|j}|dvrt |}|j|ksJ d S d S )N)z<Easter>z<DateOffset: days=1>zLWOM-SAT)r   freqstr	rule_code)rN   rO   rP   rq   coderR   rR   rS   test_offset_freqstr   s   
zTestCommon.test_offset_freqstrFc              	   C  s  |r	t |tr	d S | j||d}t||}||}t|ts J ||ks&J |t|}t|ts3J ||ks9J d }	t|td }
t|jdkrW|dv sP|rW|
j	dkrWt
}	t|	 ||
}W d    n1 skw   Y  |	d u r|dkrtjtdd ||
}W d    n1 sw   Y  t|t|u sJ ||ksJ t|tsJ |d	u r||td ksJ n||ksJ t|tjrd S | jD ]}||}t|}t||}||}t|tsJ ||ksJ |t||d
}t|tsJ ||ksJ d }	t||d
td }
t|jdkr(|dv s |r(|
j	dkr(t
}	t|	 ||
}W d    n	1 s=w   Y  t|tsJJ |d	u r[||td ksZJ q||ksbJ qd S )NrL      r   )applyrW   r   rW   zapply is deprecatedrF   Ftz)
issubclassr$   r   getattrrV   r	   r#   re   __name__
nanosecondUserWarningrm   assert_produces_warningFutureWarningrw   rb   
datetime64r   tz_localizemaybe_get_tzr
   localize_pydatetime)rN   rP   funcnamedtro   rL   offset_sfuncrX   exp_warningtsres2ry   expected_localizetz_objdt_tzrR   rR   rS   _check_offsetfunc_works   s   






z"TestCommon._check_offsetfunc_worksc                 C  sh   t ddddd}td}| j|j }t| }||fD ]}| |d|| | j|d||dd qd S )	N  rZ   	   r   2011-01-01 09:00rW   Tru   )r   rb   r   	expectedsr|   r	   dater   )rN   rO   sdtndtro   expected_normr   rR   rR   rS   
test_apply  s   

zTestCommon.test_applyc                 C  s  | j  }g d}|D ]}td||< qtd|d< td|d< | }|D ]}t||  ||< q&tdtdtdtdtd	td
tdtdtdtdtdd}|| tddddd}td}	||	fD ]}
||j }| 	|d|
| ||j }| j	|d|
|dd qmd S )Nr1   r"   r7   r9   r%   rA   rB   rC   rD   rE   r#   r   2011/01/01 09:00r3   r   r   z2011-01-02 00:00:00z2011-02-01 00:00:00z2011-01-15 00:00:00z2012-01-01 00:00:00z2011-01-08 00:00:002011-01-01 00:00:00r1   r   r"   r7   r9   r%   rA   rB   rC   rD   rE   r   rZ   r   r   r   rollforwardTru   )
r   copyr	   r   updater   rb   r   r|   r   )rN   rO   r   
no_changesrM   norm_expectedk
normalizedr   r   r   ro   rR   rR   rS   test_rollforward  s@   





zTestCommon.test_rollforwardc                 C  s  i dt ddt ddt ddt ddt ddt dd	t dd
t ddt ddt ddt ddt ddt ddt ddt ddt ddt dt dt dt dt dt dd}dD ]}t d||< qk| }|D ]}t ||  ||< qzt dt dt dt d t d!t d"t d#t d#t d#t d#t d#d$}|| td%d&d&d'd(}td)}||fD ]}	||j }
| |d*|	|
 ||j }
| j|d*|	|
d+d, qd S )-Nr2   z2010-12-31 09:00:00r   r   r   z2010-12-01 09:00:00r4   r5   r6   r8   r:   z2010-01-01 09:00:00r;   r<   r=   r>   r?   r@   r   z2010-12-31 17:00:00r   z2010-12-11 09:00:00z2010-12-25 09:00:00z2010-10-26 09:00:00z2010-01-26 09:00:00z2010-04-04 09:00:00)r&   r!   r    r   r   r   r   z2010-12-31 00:00:00z2010-12-01 00:00:00z2010-12-15 00:00:00z2010-01-01 00:00:00z2010-12-25 00:00:00r   r   r   rZ   r   r   r   rollbackTru   )	r	   r   r   r   r   rb   r   r|   r   )rN   rO   r   rM   r   r   r   r   r   r   ro   rR   rR   rS   test_rollbackR  s   	





zTestCommon.test_rollbackc                 C  s   | j |j }| |}||sJ t|trd S | j|dd}||r'J |ttfv r/d S t|j	|j
|j}||s?J d S )NTru   )r   r|   r   is_on_offsetrz   r$   r   r   r   yearmonthday)rN   rO   r   r   offset_nr   rR   rR   rS   test_is_on_offset  s   

zTestCommon.test_is_on_offsetc                 C  s6  |}t ddddd}| |}| j|j }|| }t|| }||fD ]}	t|	ts,J |	|ks2J q#||}
t||d| }	t|	tsGJ |	|
ksMJ t|trTd S | j|dd}t|	 }|| }t|| }||fD ]}	t|	tsxJ |	|ks~J qo||}
t||d| }	t|	tsJ |	|
ksJ d S )Nr   rZ   r   r   rx   Tru   )
r   r   r   r|   r	   rV   r   rz   r$   r   )rN   rO   tz_naive_fixturery   r   r   ro   	result_dt	result_tsrX   r   rR   rR   rS   test_add  s4   



zTestCommon.test_addc                 C  s>  |  |}tg |d}d }t|ttttttt	t
ttf
rt}t| || }W d    n1 s2w   Y  t|| t| || }W d    n1 sQw   Y  t|| |j}t| || }W d    n1 ssw   Y  t|| t| || }W d    n1 sw   Y  t|| d S )Nrx   )r   r   rV   r   r&   r!   r   r   r   r   r   r   r    r   rm   r   assert_index_equal_dataassert_equal)rN   rO   r   r   dtiwarnrX   dtarR   rR   rS   test_add_empty_datetimeindex  sF   




z'TestCommon.test_add_empty_datetimeindexc                 C  sb   |  |}t|}||ksJ t|tur-|jD ]}|dkr qt||t||ks,J qd S d S )Ncalendar)r   rm   round_trip_picklere   r   _attributesr{   )rN   rO   rg   resattrrR   rR   rS   test_pickle_roundtrip  s   


z TestCommon.test_pickle_roundtripc                 C  sD   t dd}t|}||ksJ tddd}|| || ks J d S )N   r(   i  rZ   )r   rm   r   r   )rN   rg   r   base_dtrR   rR   rS   !test_pickle_dateoffset_odd_inputs  s
   

z,TestCommon.test_pickle_dateoffset_odd_inputsc                 C  s\   |  |}|}tt ||}W d    n1 sw   Y  ||}||ks,J d S N)r   rm   r   r   onOffsetr   )rN   rO   fixed_now_tsrg   r   rX   ro   rR   rR   rS   test_onOffset_deprecated  s   

z#TestCommon.test_onOffset_deprecatedc                 C  sT   |  |}tt | }W d    n1 sw   Y  | }||ks(J d S r   )r   rm   r   r   
isAnchoredis_anchored)rN   rO   rg   rX   ro   rR   rR   rS   test_isAnchored_deprecated  s   

z%TestCommon.test_isAnchored_deprecatedc                 C  s   |  |}t|d usJ d S r   )r   hash)rN   rO   rg   rR   rR   rS   test_offsets_hashable&  s   
z TestCommon.test_offsets_hashableunit)r`   msusc                 C  s   |  |}tdddd}|jjd| d}t|jj||jd}tj	dd	}|j| }	|| }
W d    n1 s<w   Y  t
|rRtjjd
d}|j| t|
j|	j|j d S )Nz
2016-01-01#   D)periodsfreqzM8[]dtypeT)recordzVGoes through object dtype in DatetimeArray._add_offset, doesn't restore reso in result)reason)r   r   r   _ndarrayastypere   _simple_newr   warningscatch_warningslenrI   markxfailnode
add_markerrm   rn   )rN   rO   r   requestrg   r   arrr   wro   rX   r   rR   rR   rS   test_add_dt64_ndarray_non_nano+  s    


z)TestCommon.test_add_dt64_ndarray_non_nanoN)F)r|   
__module____qualname__r	   r   rT   rY   r_   ri   rp   rt   r   r   r   r   r   r   r   r   r   r   r   r   rI   r   parametrizer   rR   rR   rR   rS   r0   R   s    	
 !"%	
	
U7K#(	
r0   c                   @  s   e Zd Zdd Zdd Zdd Zejde	e
jdd	 Zd
d Zdd Zdd Zejdeeg ddd Zejdeeg ddd Zejdeeeddg ddd Zejdeeeddg ddd Zd d! Zd"d# Zd$S )%TestDateOffsetc                 C  s   t tddd| _t  d S )N  rZ   rj   )r	   r   dr   clearrN   rR   rR   rS   setup_methodI  s   zTestDateOffset.setup_methodc                 C  s:   t t  t td t dt   t dtdd  d S )Nrj   r   )reprr   r   rR   rR   rS   	test_reprM  s   
zTestDateOffset.test_reprc                 C  s4   t ddt d ksJ t dt dd ksJ d S Nrj   rZ   r   r   rR   rR   rS   test_mulS  s   zTestDateOffset.test_mulkwdc                 C  sZ   |dkr|j tjjtdd tdi |di}|j|diks"J t||dks+J d S )NmillisecondGConstructing DateOffset object with `millisecond` is not yet supported.rJ   r   rj   rR   )	r   r   rI   r   r   NotImplementedErrorr   rf   r{   )rN   r   r   rP   rR   rR   rS   test_constructorW  s   zTestDateOffset.test_constructorc                 C  s"   | j td tdddksJ d S )Nrj   r   rZ   rk   )r   r   r   r   rR   rR   rS   test_default_constructore  s   "z'TestDateOffset.test_default_constructorc                 C  s$   t d rJ t d sJ d S r   )r   r   r   rR   rR   rS   test_is_anchoredh  s   zTestDateOffset.test_is_anchoredc                 C  s<   t dd t ddksJ t dd t ddksJ d S )Nrj   r   rZ   r.   )r   r   r   rR   rR   rS   	test_copyl  s    zTestDateOffset.test_copyz arithmatic_offset_type, expected)	
2009-01-02z
2008-02-02z
2008-01-09z
2008-01-03z2008-01-02 01:00:00z2008-01-02 00:01:00z2008-01-02 00:00:01z2008-01-02 00:00:00.001000000z2008-01-02 00:00:00.000001000c                 C  sL   t di |di| j t|ksJ | jt di |di t|ks$J d S NrZ   rR   r   r   r	   rN   arithmatic_offset_typero   rR   rR   rS   r   p  s   $(zTestDateOffset.test_add)	
2007-01-02z
2007-12-02z
2007-12-26z
2008-01-01z2008-01-01 23:00:00z2008-01-01 23:59:00z2008-01-01 23:59:59z2008-01-01 23:59:59.999000000z2008-01-01 23:59:59.999999000c                 C  sp   | j tdi |di t|ksJ tjtdd tdi |di| j   W d    d S 1 s1w   Y  d S )NrZ   z$Cannot subtract datetime from offsetrF   rR   )r   r   r	   rI   rJ   rd   r   rR   rR   rS   test_sub  s   $"zTestDateOffset.test_subz#arithmatic_offset_type, n, expectedrZ   
   )	r   z
2008-03-02z
2008-01-23z
2008-01-06z2008-01-02 05:00:00z2008-01-02 00:06:00z2008-01-02 00:00:07z2008-01-02 00:00:00.008000000z2008-01-02 00:00:00.000009000c                 C  s   t di |di| | j t|ksJ |t di |di | j t|ks(J | jt di |di|  t|ks<J | j|t di |di  t|ksPJ d S r   r   rN   r  rM   ro   rR   rR   rS   test_mul_add  s   


zTestDateOffset.test_mul_add)	r  z
2007-11-02z
2007-12-12z
2007-12-29z2008-01-01 19:00:00z2008-01-01 23:54:00z2008-01-01 23:59:53z2008-01-01 23:59:59.992000000z2008-01-01 23:59:59.999991000c                 C  sT   | j tdi |di|  t|ksJ | j |tdi |di  t|ks(J d S r   )r   r   r	   r  rR   rR   rS   test_mul_sub  s   
zTestDateOffset.test_mul_subc                 C  s.   t ddd}|tdd t dddksJ d S )Nr   rZ      r   rj      )r   r   )rN   r   rR   rR   rS   test_leap_year  s   "zTestDateOffset.test_leap_yearc                 C  s<   t dd}t dd}||ksJ t ddt ddksJ d S )NrZ   r*   im  r\   r      r   )rN   offset1offset2rR   rR   rS   test_eq  s   

zTestDateOffset.test_eqN)r|   r   r   r   r   r   rI   r   r   sorted
liboffsets_relativedelta_kwdsr   r   r   r   zip_ARITHMETIC_DATE_OFFSETr   r  ranger  r  r
  r  rR   rR   rR   rS   r   H  sZ    




r   c                   @     e Zd Zdd ZdS )TestOffsetNamesc                 C  s   t  jdksJ t djdksJ t jdksJ tddjdks#J tddjd	ks-J tddjd
ks7J tddjdksAJ tddjdksKJ ttjdjdksVJ d S )NBrj   2BBMr   weekdayW-MONrZ   W-TUEW-WEDr\   W-THUrk   W-FRIzLWOM-SUN)r   rq   r   r%   r!   r   SUNr   rR   rR   rS   test_get_offset_name  s   z$TestOffsetNames.test_get_offset_nameN)r|   r   r   r#  rR   rR   rR   rS   r        r  c                  C  s  t jttd td W d    n1 sw   Y  t jttd td W d    n1 s1w   Y  dt fdt fdt fdt fdtd	d
fdtdd
fdtdd
fdtdd
fdtdd
fg	} | D ] \}}t|}||ksJ dt| dt| dt| dqhd S )NrF   	gibberishzQS-JAN-Br  bbmBmr  r   r  r  rZ   r  rj   r   r\   r!  rk   z	Expected z
 to yield z
 (actual: ))	rI   rJ   
ValueErrorr   r   r   r   r%   r   )pairsnamero   rP   rR   rR   rS   test_get_offset  s0   


r-  c               	   C  sX   dt ddfg} | D ]\}}tjttd t| W d    n1 s$w   Y  q
d S )Nzw@Satrv   r  rF   )r%   rI   rJ   r*  r   r   )r+  r,  ro   rR   rR   rS   test_get_offset_legacy
  s   
r.  c                   @  s$   e Zd Zdd Zdd Zdd ZdS )TestOffsetAliasesc                 C  s   t   d S r   )r   r   r   rR   rR   rS   r     s   zTestOffsetAliases.setup_methodc                 C  s0   t  D ]\}}|d u rq|| ksJ qd S r   )r   itemsr   )rN   r   vrR   rR   rS   test_alias_equality  s
   z%TestOffsetAliases.test_alias_equalityc                 C  s   g d}|D ]}|t |jksJ |tv sJ |t |d jks"J qg d}d}|D ]}d||g}|t |jks=J |t |d jksHJ q+g d}g d}|D ]"}|D ]}d||g}|t |jksiJ |t |d jkstJ qWqSd S )	N)MMSr  BMSr   r  HTSLUr\   MONTUEWEDTHUFRISATr"  W-rv   JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC)AASBABASQQSBQBQS)r   rr   r   join)rN   lstr   
suffix_lstbaser1  aliasbase_lstrR   rR   rS   test_rule_code  s(   z TestOffsetAliases.test_rule_codeN)r|   r   r   r   r2  r_  rR   rR   rR   rS   r/    s    r/  c                  C  sD   t dtddd} | jdksJ t dtddd} | jdks J d S )NrZ   r   i  )rP   zB+30MinizB-30Min)r   r   rq   )rg   rR   rR   rS   test_freq_offsets@  s   r`  c                   @  r  )TestReprNamesc                   sr   g d}dd |D }g d |dd  D 7 }| fdddD 7 }t   |D ]}t|}|j|ks6J q)d S )N)rQ  rR  rS  rT  rU  rW  rX  rV  c                 S  s"   g | ]}d D ]}|d | qqS )rD  rC  rR   ).0prefixr   rR   rR   rS   
<listcomp>L  s    
z<TestReprNames.test_str_for_named_is_name.<locals>.<listcomp>r;  c                 S  s   g | ]}d | qS )zW-rR   )rb  r   rR   rR   rS   rd  _  s    c                   s"   g | ]} D ]}d | | qqS )zWOM-rR   )rb  weekr   r  rR   rS   rd  `  s   " )1234)r   r   r   rq   )rN   month_prefixesnamesr,  rP   rR   r  rS   test_str_for_named_is_nameI  s   z(TestReprNames.test_str_for_named_is_nameN)r|   r   r   rl  rR   rR   rR   rS   ra  H  r$  ra  c                 C  s    |   }|jd d |j d S )N   i  g      @)	utcoffsetr*   r-   )r   orR   rR   rS   get_utc_offset_hoursg  s   rp  c                 C  s   | }|  d S r   rR   rO   clsrR   rR   rS   test_valid_default_argumentsp  s   
rs  r   c                 C  V   |}d|  d}t jt|d |di | di W d    d S 1 s$w   Y  d S Nz1__init__\(\) got an unexpected keyword argument ''rF   r\   rR   rI   rJ   rd   )r   month_classesrr  rQ   rR   rR   rS   test_valid_month_attributesw  
   "ry  c                 C  s$   | d}| d}|j |j ksJ d S )NrZ   rj   )r,  )rx  objobj2rR   rR   rS   test_month_offset_name  s   r}  c                 C  s6   | dkr|j tjjtdd tdi | di d S )Nr   r   r   rZ   rR   )r   r   rI   r   r   r   r   )r   r   rR   rR   rS   test_valid_relativedelta_kwargs  s   	r~  c                 C  rt  ru  rw  )r   tick_classesrr  rQ   rR   rR   rS   test_valid_tick_attributes  rz  r  c                   C  s   t jtdd tdd W d    n1 sw   Y  t jtdd ttdd W d    n1 s5w   Y  t jtdd ttjddgtj	dd W d    d S 1 sZw   Y  d S )Nra   rF   zDoh!rM   rZ   rj   r   )
rI   rJ   rd   r   r"   r   r   rb   rl   int64rR   rR   rR   rS   test_validate_n_error  s   "r  c                 C  sB   | }t jtdd |dd W d    d S 1 sw   Y  d S )Nra   rF   g      ?r  rI   rJ   r*  rq  rR   rR   rS   test_require_integers  s   "r  c                 C  sH   | }d}t jt|d |ddd W d    d S 1 sw   Y  d S )Nz2Tick offset with `normalize=True` are not allowed.rF   r\   T)rM   rL   r  )r  rr  rQ   rR   rR   rS   test_tick_normalize_raises  s
   "r  zoffset_kwargs, expected_argnanosecondsrZ   z1970-01-01 00:00:00.000000001rv   z1970-01-01 00:00:00.000000005r[   z1969-12-31 23:59:59.999999999r/   z1970-01-01 00:00:00.000001z1969-12-31 23:59:59.999999r-   z1970-01-01 00:00:01z1969-12-31 23:59:59r,   z1970-01-01 00:01:00z1969-12-31 23:59:00r+   z1970-01-01 01:00:00z1969-12-31 23:00:00r*   z1970-01-02 00:00:00z1969-12-31 00:00:00r)   z1970-01-08 00:00:00z1969-12-25 00:00:00r(   z1970-02-01 00:00:00z1969-12-01 00:00:00r'   z1971-01-01 00:00:00z1969-01-01 00:00:00c                 C  s^   t di | }td}|| }t|}||ksJ ||8 }||ks#J || }||ks-J d S )Nr   rR   r   r	   )offset_kwargsexpected_argrP   r   rX   ro   rR   rR   rS   test_dateoffset_add_sub  s   r  c                  C  s\   t ddd} td}||  }td}||ksJ || 8 }||ks"J | | }||ks,J d S )Nrj   r   r,   r  rk   z1970-01-01 00:02:00.000000013r  )rP   r   rX   ro   rR   rR   rS   +test_dateoffset_add_sub_timestamp_with_nano  s   r  	attribute)r+   r*   r)   r(   r'   c                 C  sV   t di | di}d}tjt|d t|| d W d    d S 1 s$w   Y  d S )Nr   z DateOffset objects are immutablerF   rv   rR   )r   rI   rJ   rK   setattr)r  rP   rQ   rR   rR   rS   test_dateoffset_immutable  s
   "r  c                  C  s,   t jddd} | j t jdddkrJ d S )Nrj   rk   )r(   r*   r   )offsetsr   rq   )osetrR   rR   rS   test_dateoffset_misc  s   r  rM   )r[   rZ   r\   c                 C  sJ   t | }|jtdksJ tddd| }tddd|  }||ks#J d S )NrZ   i  rj   )r   _offsetr   r	   )rM   rP   rX   ro   rR   rR   rS   -test_construct_int_arg_no_kwargs_assumed_days  s
   r  zoffset, expectedr     r  z2022-01-01 00:07:00.000000018r\   )r  z2022-01-01 00:00:00.000000003c                 C  sb   t d}|}t|g}||  }|d |ksJ || 8 }|d |ks#J | | }|d |ks/J d S )Nz
2022-01-01r   )r	   r   )rP   ro   
start_time	teststamp
testseriesrR   rR   rS   2test_dateoffset_add_sub_timestamp_series_with_nano  s   
r  )X__doc__
__future__r   r   r   typingr   r   r   r   numpyrb   rI   pandas._libs.tslibsr   r	   r
   r   pandas._libs.tslibs.offsets_libstslibsr  r  r   r   pandas._libs.tslibs.periodr   pandas.errorsr   pandasr   r   r   pandas._testing_testingrm   #pandas.tests.tseries.offsets.commonr   r   pandas.tseries.offsetstseriesr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   _ApplyCasesr  r0   r   r  r-  r.  r/  r`  ra  rp  rs  r   r   r  r  ry  r}  r~  r  r  r  r  r  r  r  r  r  r  rR   rR   rR   rS   <module>   s    P   y /	
	

		






















	

