o
    d6                     @  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mZ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% ddl&mZ ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 eee)eeef f  Z:g dZ;doddZ<ej=dd Z>ej=dd Z?G dd dZ@G dd dZAG dd dZBdd ZCdd  ZDG d!d" d"ZEd#d$ ZFG d%d& d&ZGd'd( ZHejIJd)eKejLd*d+ ZMd,d- ZNejIJd)eKejLd.d/ ZOejIJd)eKejLd0d1 ZPd2d3 ZQd4d5 ZRd6d7 ZSejIJd8d9did:fd9d;id<fd9d=id>fd?did@fd?d=idAfdBdidCfdBd=idDfdEdidFfdEd=idGfdHdidIfdHd=idJfdKdidLfdKd=idMfdNdidOfdNd=idPfdQdidRfdQd=idSfdTdidUfdTd=idVfgdWdX ZTdYdZ ZUejIJd[g d\d]d^ ZVd_d` ZWejIJdag dbdcdd ZXejIJdee1dfdgdhedife1djdkedlfgdmdn ZYdS )pz!
Tests of pandas.tseries.offsets
    )annotations)datetime	timedelta)DictListTupleN)NaT	Timedelta	Timestamp
conversion	timezones)_get_offset_offset_map)INVALID_FREQ_ERR_MSG)PerformanceWarning)DatetimeIndexSeries
date_range)WeekDay)offsets)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microseconds   Fc                 C  s   | t u r| |ddd|d} | S | tu r| |dddd|d} | S | tu r,| |d|d} | S | tu r:| |dd|d} | S | tu rG| |d|d} | S | tu rS| ||d} | S | ||d	} | S )
Nr1   last)nstartingMonthweekday	variation	normalize)r3   r4   r5   Zqtr_with_extra_weekr6   r7      )r3   r5   r7   )r3   weekr5   r7   )r+   r7   r7   )r   r!   r"   r'   r&   r   )klassvaluer7    r=   ]/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/tseries/offsets/test_offsets.py_create_offsetO   sB   	r?   c                   C  s   t tdddS )N  r1      )r
   r   r=   r=   r=   r>   dto   s   rB   c                   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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/d0t d1d2t d3d4t d5d6t d7S )8N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.000000001)r
   r=   r=   r=   r>   	expectedst   s   	
 !"rX   c                   @  s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zd(ddZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zejd"ejd#g d$d%d& Zd'S ))
TestCommonc                 C  sz   t |}d}tjt|d d|_W d    n1 sw   Y  tjt|d d|_W d    d S 1 s6w   Y  d S )Nz8objects is not writable|DateOffset objects are immutablematchT[   )r?   pytestraisesAttributeErrorr7   r3   )selfoffset_typesoffsetmsgr=   r=   r>   test_immutable   s   "zTestCommon.test_immutablec                 C  sj   t |}td| }t|tsJ t| tu sJ |t tu s!J t| tu s)J | ttu s3J d S )NZ20080101)r?   r
   
isinstancer   _apply)r`   ra   rb   resultr=   r=   r>   test_return_type   s   zTestCommon.test_return_typec                 C  sF   t |}|jdksJ |d }|jdksJ |d }|jdks!J d S )Nr1      )r?   r3   )r`   ra   rb   Z
neg_offsetZ
mul_offsetr=   r=   r>   test_offset_n   s   zTestCommon.test_offset_nc                 C  s`   t |}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 integerrZ   r3   r=   )r?   npZtimedelta64r]   r^   	TypeErrortypekwds)r`   ra   offZtd64r=   r=   r>   test_offset_timedelta64_arg   s
   "z&TestCommon.test_offset_timedelta64_argc                 C  sz   t |}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 )NrA   rj      r1   )r?   rn   arraytmassert_numpy_array_equal)r`   ra   rr   expectedrg   r=   r=   r>   test_offset_mul_ndarray   s   "z"TestCommon.test_offset_mul_ndarrayc                 C  s4   t |}|j}|dvrt|}|j|ksJ d S d S )N)z<Easter>z<DateOffset: days=1>zLWOM-SAT)r?   freqstrr   	rule_code)r`   ra   rb   rz   coder=   r=   r>   test_offset_freqstr   s   zTestCommon.test_offset_freqstrFc              	   C  sT  |r	t |tr	d S t||d}t||}||}t|tsJ ||ks%J |t|}t|ts2J ||ks8J d }	t|td }
t|jdkrV|dv sO|rV|
j	dkrVt
}	t|	 ||
}W d    n1 sjw   Y  t|tsvJ |du r||td ksJ n||ksJ t|tjrd S dD ]}||}t|}t||}||}t|tsJ ||ksJ |t||d}t|tsJ ||ksJ d }	t||dtd }
t|jdkr|dv s|r|
j	dkrt
}	t|	 ||
}W d    n	1 sw   Y  t|tsJ |du r ||td ksJ q||ks'J qd S )	Nr:   r8   r   )applyrf   r   F)NUTCz
Asia/Tokyoz
US/Easternzdateutil/Asia/Tokyozdateutil/US/Pacifictz)
issubclassr%   r?   getattrre   r
   r$   rp   __name__Z
nanosecondUserWarningrv   assert_produces_warningrn   
datetime64tz_localizer   Zmaybe_get_tzr   Zlocalize_pydatetime)r`   rb   funcnamerB   rx   r7   offset_sfuncrg   Zexp_warningtsr   expected_localizeZtz_objZdt_tzr=   r=   r>   _check_offsetfunc_works   sv   





z"TestCommon._check_offsetfunc_worksc                 C  sf   t ddddd}td}||j }t| }||fD ]}| |d|| | j|d||dd qd S )	N  r1   	   r   2011-01-01 09:00rf   Tr:   )r   rn   r   r   r
   dater   )r`   ra   rX   sdtndtrx   Zexpected_normrB   r=   r=   r>   
test_apply.  s   


zTestCommon.test_applyc                 C  s  |  }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 qld S )NrC   r#   rI   rK   r&   rS   rT   rU   rV   rW   r$   r   2011/01/01 09:00rE   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rC   r   r#   rI   rK   r&   rS   rT   rU   rV   rW   r   r1   r   r   r   ZrollforwardTr:   )	copyr
   r   updater   rn   r   r   r   )r`   ra   rX   Z
no_changesr3   norm_expectedk
normalizedr   r   rB   rx   r=   r=   r>   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 )-NrD   z2010-12-31 09:00:00r   r   r   z2010-12-01 09:00:00rF   rG   rH   rJ   rL   z2010-01-01 09:00:00rM   rN   rO   rP   rQ   rR   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   r1   r   r   r   rollbackTr:   )	r
   r   r   r   r   rn   r   r   r   )r`   ra   rX   r3   r   r   r   r   r   rB   rx   r=   r=   r>   test_rollbacks  s   	





zTestCommon.test_rollbackc                 C  s|   ||j  }t|}||sJ t|trd S t|dd}||r$J |ttfv r,d S t|j|j	|j
}||s<J d S )NTr:   )r   r?   Zis_on_offsetr   r%   r   r   r   yearmonthday)r`   ra   rX   rB   r   Zoffset_nr   r=   r=   r>   test_is_on_offset  s   

zTestCommon.test_is_on_offsetc                 C  s0  |}t ddddd}t|}||j }|| }t|| }	||	fD ]}
t|
ts*J |
|ks0J q!||}t||d| }
t|
tsEJ |
|ksKJ t|trRd S t|dd}t| }|| }t|| }	||	fD ]}
t|
tsuJ |
|ks{J ql||}t||d| }
t|
tsJ |
|ksJ d S )Nr   r1   r   r   r   Tr:   )	r   r?   r   r
   re   r   r   r%   r   )r`   ra   tz_naive_fixturerX   r   rB   r   rx   Z	result_dtZ	result_tsrg   r   r=   r=   r>   test_add  s4   



zTestCommon.test_addc                 C  s<  t |}tg |d}d }t|ttttttt	t
ttf
rt}t| || }W d    n1 s1w   Y  t|| t| || }W d    n1 sPw   Y  t|| |j}t| || }W d    n1 srw   Y  t|| t| || }W d    n1 sw   Y  t|| d S )Nr   )r?   r   re   r    r'   r"   r   r   r   r   r   r   r!   r   rv   r   Zassert_index_equal_dataZassert_equal)r`   ra   r   r   dtiwarnrg   dtar=   r=   r>   test_add_empty_datetimeindex  sF   



z'TestCommon.test_add_empty_datetimeindexc                 C  s`   t |}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?   rv   round_trip_picklerp   r   _attributesr   )r`   ra   rr   resattrr=   r=   r>   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  r1   )r   rv   r   r   )r`   rr   r   Zbase_dtr=   r=   r>   !test_pickle_dateoffset_odd_inputs)  s
   

z,TestCommon.test_pickle_dateoffset_odd_inputsc                 C  s   t |}t|d usJ d S N)r?   hash)r`   ra   rr   r=   r=   r>   test_offsets_hashable2  s   z TestCommon.test_offsets_hashablezIignore:Non-vectorized DateOffset being applied to Series or DatetimeIndexunit)rl   msusc                 C  s   t |}tdddd}|jjd| d}t|jj||jd}|j| }|| }	|}
t|t	r<|j
|j
kr<t|j}
||
}t|	j|j d S )Nz
2016-01-01#   D)ZperiodsfreqzM8[]dtype)r?   r   r   Z_ndarrayZastyperp   Z_simple_newr   re   r%   Z_cresor	   r   Zas_unitrv   rw   )r`   ra   r   requestrr   r   Zarrr   rx   rg   Zexp_unitr=   r=   r>   test_add_dt64_ndarray_non_nano7  s   


z)TestCommon.test_add_dt64_ndarray_non_nanoN)F)r   
__module____qualname__rd   rh   rk   rs   ry   r}   r   r   r   r   r   r   r   r   r   r   r]   markfilterwarningsparametrizer   r=   r=   r=   r>   rY      s,    	
	
Q7K#(	rY   c                   @  sv  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ejd$ddd%d&fddd'd(fddd)d*fddd+d,fddd-d.fddd/d0fddd1d2fddd3d4fgd5d6 Zd7d8 Zd9S ):TestDateOffsetc                 C     t   d S r   r   clearr`   r=   r=   r>   setup_methodQ     zTestDateOffset.setup_methodc                 C  s:   t t  t td t dt   t dtdd  d S )NrA   r   )reprr   r   r=   r=   r>   	test_reprT  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 NrA   r1   r   r   r=   r=   r>   test_mulZ  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.r^   reasonrA   r=   )	node
add_markerr]   r   xfailNotImplementedErrorr   rq   r   )r`   r   r   rb   r=   r=   r>   test_constructor^  s   zTestDateOffset.test_constructorc                 C  s    |t d tdddksJ d S )NrA   r@   r1   rt   )r   r   )r`   rB   r=   r=   r>   test_default_constructorl  s    z'TestDateOffset.test_default_constructorc                 C  s$   t d rJ t d sJ d S r   )r   Zis_anchoredr   r=   r=   r>   test_is_anchoredo  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 )NrA   r   r1   r/   )r   r   r   r=   r=   r>   	test_copys  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  sH   t di |di| t|ksJ |t di |di t|ks"J d S Nr1   r=   r   r
   r`   arithmatic_offset_typerx   rB   r=   r=   r>   r   w  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  sl   |t di |di t|ksJ tjtdd t di |di|  W d    d S 1 s/w   Y  d S )Nr1   z$Cannot subtract datetime from offsetrZ   r=   )r   r
   r]   r^   ro   r   r=   r=   r>   test_sub  s   ""zTestDateOffset.test_subz#arithmatic_offset_type, n, expectedr1   
   )	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| | t|ksJ |t di |di | t|ks&J |t di |di|  t|ks9J ||t di |di  t|ksLJ d S r   r   r`   r   r3   rx   rB   r=   r=   r>   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  sP   |t di |di|  t|ksJ ||t di |di  t|ks&J d S r   r   r   r=   r=   r>   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@   r1      r   rA      )r   r   )r`   dr=   r=   r>   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 )Nr1   r+   im  rj   r      r   )r`   Zoffset1Zoffset2r=   r=   r>   test_eq  s   

zTestDateOffset.test_eqoffset_kwargs, expected_arg)r0   r/   z2022-01-01 00:00:00.001001)r.   r/   z2022-01-01 00:00:01.001)r-   r/   z2022-01-01 00:01:00.001)r,   r/   z2022-01-01 01:00:00.001)r+   r/   z2022-01-02 00:00:00.001)r*   r/   z2022-01-08 00:00:00.001)r)   r/   z2022-02-01 00:00:00.001)r(   r/   z2023-01-01 00:00:00.001c                 C  s6   t di |}td}|| }t|}||ksJ d S )N
2022-01-01r=   r   )r`   offset_kwargsexpected_argrb   r   rg   rx   r=   r=   r>   test_milliseconds_combination  s
   z,TestDateOffset.test_milliseconds_combinationc                 C  sB   d}t jt|d tdd W d    d S 1 sw   Y  d S )Nz3^Invalid argument/s or bad combination of argumentsrZ   r1   )Zpicoseconds)r]   r^   
ValueErrorr   )r`   rc   r=   r=   r>   test_offset_invalid_arguments     "z,TestDateOffset.test_offset_invalid_argumentsN)r   r   r   r   r   r   r]   r   r   sorted
liboffsets_relativedelta_kwdsr   r   r   r   zip_ARITHMETIC_DATE_OFFSETr   r   ranger   r   r   r   r   r   r=   r=   r=   r>   r   P  sv    





	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BrA   Z2BBMr   r5   W-MONr1   W-TUEW-WEDrj   W-THUrt   W-FRIzLWOM-SUN)r   rz   r   r&   r"   r   SUNr   r=   r=   r>   test_get_offset_name  s   z$TestOffsetNames.test_get_offset_nameN)r   r   r   r  r=   r=   r=   r>   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 )NrZ   Z	gibberishzQS-JAN-Br  bZbmZBmr  r   r  r	  r1   r
  rA   r  rj   r  rt   z	Expected z
 to yield z
 (actual: ))	r]   r^   r   r   r   r   r   r&   r   )pairsnamerx   rb   r=   r=   r>   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@Satr8   r  rZ   )r&   r]   r^   r   r   r   )r  r  rx   r=   r=   r>   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  r   r   r   r   r=   r=   r>   r   (  r   zTestOffsetAliases.setup_methodc                 C  s0   t  D ]\}}|d u rq|| ksJ qd S r   )r   itemsr   )r`   r   vr=   r=   r>   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)MZMSr  ZBMSr   r  HTSLUrj   ZMONZTUEZWEDZTHUZFRIZSATr  W-r8   ZJANZFEBZMARZAPRZMAYZJUNZJULZAUGZSEPZOCTZNOVZDEC)AASBABASQQSBQBQS)r   r{   r   join)r`   lstr   Z
suffix_lstbaser  aliasZbase_lstr=   r=   r>   test_rule_code1  s(   z TestOffsetAliases.test_rule_codeN)r   r   r   r   r  r0  r=   r=   r=   r>   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 )Nr1   r   i  )rb   zB+30MinizB-30Min)r   r   rz   )rr   r=   r=   r>   test_freq_offsetsV  s   r1  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)r$  r%  r&  r'  r(  r*  r+  r)  c                 S  s"   g | ]}d D ]}|d | qqS )r#  r"  r=   ).0prefixr   r=   r=   r>   
<listcomp>b  s    
z<TestReprNames.test_str_for_named_is_name.<locals>.<listcomp>r   c                 S  s   g | ]}d | qS )zW-r=   )r3  r   r=   r=   r>   r5  u  s    c                   s"   g | ]} D ]}d | | qqS )zWOM-r=   )r3  r9   r   r   r=   r>   r5  v  s   " )1234)r   r   r   rz   )r`   Zmonth_prefixesnamesr  rb   r=   r   r>   test_str_for_named_is_name_  s   z(TestReprNames.test_str_for_named_is_nameN)r   r   r   r;  r=   r=   r=   r>   r2  ^  r  r2  c                 C  s   | }|  d S r   r=   ra   clsr=   r=   r>   test_valid_default_arguments  s   
r>  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 ''rZ   rj   r=   r]   r^   ro   )r   month_classesr=  rc   r=   r=   r>   test_valid_month_attributes  
   "rD  c                 C  s$   | d}| d}|j |j ksJ d S )Nr1   rA   )r  )rC  objobj2r=   r=   r>   test_month_offset_name  s   rH  c                 C  s6   | dkr|j tjjtdd tdi | di d S )Nr   r   r   r1   r=   )r   r   r]   r   r   r   r   )r   r   r=   r=   r>   test_valid_relativedelta_kwargs  s   	rI  c                 C  r?  r@  rB  )r   tick_classesr=  rc   r=   r=   r>   test_valid_tick_attributes  rE  rK  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 )Nrm   rZ   zDoh!r3   r1   rA   r   )
r]   r^   ro   r   r#   r   r   rn   ru   Zint64r=   r=   r=   r>   test_validate_n_error  s   "rM  c                 C  sB   | }t jtdd |dd W d    d S 1 sw   Y  d S )Nrm   rZ   g      ?rL  r]   r^   r   r<  r=   r=   r>   test_require_integers  r   rO  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.rZ   rj   T)r3   r7   rN  )rJ  r=  rc   r=   r=   r>   test_tick_normalize_raises  s
   "rP  r   nanosecondsz1970-01-01 00:00:00.000000001r8   z1970-01-01 00:00:00.000000005ri   z1969-12-31 23:59:59.999999999r0   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   r=   r   )r   r   rb   r   rg   rx   r=   r=   r>   test_dateoffset_add_sub  s   rR  c                  C  s\   t ddd} td}||  }td}||ksJ || 8 }||ks"J | | }||ks,J d S )NrA   r   r-   rQ  rt   z1970-01-01 00:02:00.000000013r   )rb   r   rg   rx   r=   r=   r>   +test_dateoffset_add_sub_timestamp_with_nano  s   rT  	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 immutablerZ   r8   r=   )r   r]   r^   r_   setattr)rU  rb   rc   r=   r=   r>   test_dateoffset_immutable  s
   "rW  c                  C  s,   t jddd} | j t jdddkrJ d S )NrA   rt   )r)   r+   r   )r   r   rz   )Zosetr=   r=   r>   test_dateoffset_misc  s   rX  r3   )ri   r1   rj   c                 C  sJ   t | }|jtdksJ tddd| }tddd|  }||ks#J d S )Nr1   i  rA   )r   _offsetr   r
   )r3   rb   rg   rx   r=   r=   r>   -test_construct_int_arg_no_kwargs_assumed_days  s
   rZ  zoffset, expectedr      rS  z2022-01-01 00:07:00.000000018rj   )rQ  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 )Nr   r   )r
   r   )rb   rx   
start_timeZ	teststampZ
testseriesr=   r=   r>   2test_dateoffset_add_sub_timestamp_series_with_nano  s   
r]  )r1   F)Z__doc__
__future__r   r   r   typingr   r   r   numpyrn   r]   Zpandas._libs.tslibsr   r	   r
   r   r   Zpandas._libs.tslibs.offsetsZ_libsZtslibsr   r   r   r   Zpandas._libs.tslibs.periodr   Zpandas.errorsr   Zpandasr   r   r   Zpandas._testingZ_testingrv   Z#pandas.tests.tseries.offsets.commonr   Zpandas.tseriesZpandas.tseries.offsetsr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Z_ApplyCasesr  r?   ZfixturerB   rX   rY   r   r  r  r  r  r1  r2  r>  r   r   r   r   rD  rH  rI  rK  rM  rO  rP  rR  rT  rW  rX  rZ  r]  r=   r=   r=   r>   <module>   s    P
 

*   4 )/"
	

		





















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