o
    _~#g                     @  s  d Z ddlmZ ddl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mZ ddlmZ ddlmZ dd	lmZ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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 g dZ7d~ddZ8ej9dd ej:D ddd Z;ej9dd ej:D ddd Z<ej9dd Z=ej9dd Z>G dd dZ?G d d! d!Z@G d"d# d#ZAd$d% ZBd&d' ZCG d(d) d)ZDd*d+ ZEG d,d- d-ZFd.d/ ZGejHId0eJejKd1d2 ZLd3d4 ZMejHId0eJejKd5d6 ZNejHId0eJejKd7d8 ZOd9d: ZPd;d< ZQd=d> ZRejHId?d@didAfd@dBidCfd@dDidEfdFdidGfdFdDidHfdIdidJfdIdDidKfdLdidMfdLdDidNfdOdidPfdOdDidQfdRdidSfdRdDidTfdUdidVfdUdDidWfdXdidYfdXdDidZfd[did\fd[dDid]fgd^d_ ZSd`da ZTejHIdbg dcddde ZUdfdg ZVejHIdhg didjdk ZWejHIdle.dmdndoedpfe.dqdredsfgdtdu ZXejHIdvg dwdxdy ZYdzd{ ZZd|d} Z[dS )z!
Tests of pandas.tseries.offsets
    )annotations)datetime	timedeltaN)NaT	Timedelta	Timestamp
conversion	timezones)_get_offset_offset_map	to_offset)INVALID_FREQ_ERR_MSG)PerformanceWarning)	DataFrameDatetimeIndexSeries
date_range)WeekDay)offsets)FY5253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 )
Nr/   last)nstartingMonthweekday	variation	normalize)r1   r2   r3   qtr_with_extra_weekr4   r5      )r1   r3   r5   )r1   weekr3   r5   )r)   r5   r5   )r   r   r    r%   r$   r   )klassvaluer5    r<   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/tseries/offsets/test_offsets.py_create_offsetI   sB   	r>   c                 C  s0   g | ]}t tt|tjr|d krtt|qS )MonthOffset)
issubclassgetattrr   
liboffsetsr?   .0or<   r<   r=   
<listcomp>j   s    rF   )paramsc                 C     | j S )zO
    Fixture for month based datetime offsets available for a time series.
    paramrequestr<   r<   r=   month_classesi   s   rM   c                 C  s   g | ]}|d vrt t|qS ))r#   
BaseOffset)rA   r   rC   r<   r<   r=   rF   y   s    c                 C  rH   )zK
    Fixture for all the datetime offsets available for a time series.
    rI   rK   r<   r<   r=   offset_typesx   s   	rO   c                   C  s   t tdddS )N  r/      )r   r   r<   r<   r<   r=   dt   s   rR   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=   	expecteds   s   	
 !"rh   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AttributeErrorr5   r1   )selfrO   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 )N20080101)r>   r   
isinstancer   _apply)rp   rO   rq   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 )Nr/      )r>   r1   )rp   rO   rq   
neg_offset
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 integerrj   r1   r<   )r>   nptimedelta64rm   rn   	TypeErrortypekwds)rp   rO   off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 )NrQ   rz      r/   )r>   r   arraytmassert_numpy_array_equal)rp   rO   r   expectedrw   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)rp   rO   rq   r   coder<   r<   r=   test_offset_freqstr   s   zTestCommon.test_offset_freqstrFc              	   C  s  |r	t |tr	d S t||d}t||}||}t|tsJ ||ks%J |t|}t|ts2J ||ks8J t|td }	td  ||	}W d    n1 sTw   Y  t|ts`J |du ro||td ksnJ n||ksuJ t|t	j
r}d S dD ]w}
||
}t|
}t||}||}t|tsJ ||ksJ |t||
d}t|tsJ ||ksJ t||
dtd }	td  ||	}W d    n1 sw   Y  t|tsJ |du r||td ksJ q||ksJ qd S )Nr9   r7   F)NUTCz
Asia/Tokyoz
US/Easternzdateutil/Asia/Tokyozdateutil/US/Pacifictz)r@   r#   r>   rA   ru   r   r"   r   assert_produces_warningr   
datetime64tz_localizer	   maybe_get_tzr   localize_pydatetime)rp   rq   funcnamerR   r   r5   offset_sfuncrw   tsr   expected_localizetz_objdt_tzr<   r<   r=   _check_offsetfunc_works   sN   




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  r/   	   r   2011-01-01 09:00rv   Tr9   )r   r   r   __name__r   dater   )rp   rO   rh   sdtndtr   expected_normrR   r<   r<   r=   
test_apply1  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rS   r!   rY   r[   r$   rc   rd   re   rf   rg   r"   r   2011/01/01 09:00rU   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rS   r   r!   rY   r[   r$   rc   rd   re   rf   rg   r   r/   r   r   r   rollforwardTr9   )	copyr   r   updater   r   r   r   r   )rp   rO   rh   
no_changesr1   norm_expectedk
normalizedr   r   rR   r   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 )-NrT   z2010-12-31 09:00:00r   r   r   z2010-12-01 09:00:00rV   rW   rX   rZ   r\   z2010-01-01 09:00:00r]   r^   r_   r`   ra   rb   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   r/   r   r   r   rollbackTr9   )	r   r   r   r   r   r   r   r   r   )rp   rO   rh   r1   r   r   r   r   r   rR   r   r<   r<   r=   test_rollbackv  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 )NTr9   )r   r>   is_on_offsetr@   r#   r   r   r   yearmonthday)rp   rO   rh   rR   r   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   r/   r   r   r   Tr9   )	r   r>   r   r   ru   r   r@   r#   r   )rp   rO   tz_naive_fixturerh   r   rR   r   r   	result_dt	result_tsrw   r   r<   r<   r=   test_add  s4   



zTestCommon.test_addc           	      C  sZ  t |}tg |dd}d }t|tttttt	t
tttf
r t}|d u }tj||d || }W d    n1 s:w   Y  t|| tj||d || }W d    n1 s[w   Y  t|| |j}tj||d || }W d    n1 sw   Y  t|| tj||d || }W d    n1 sw   Y  t|| d S )Nr   ns)check_stacklevel)r>   r   as_unitru   r   r%   r    r   r   r   r   r   r   r   r   r   r   assert_index_equal_dataassert_equal)	rp   rO   r   r   dtiwarnr   rw   dtar<   r<   r=   test_add_empty_datetimeindex  sH   



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>   r   round_trip_pickler   r   _attributesrA   )rp   rO   r   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  r/   )r   r   r   r   )rp   r   r   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)rp   rO   r   r<   r<   r=   test_offsets_hashable8  s   z TestCommon.test_offsets_hashablezIignore:Non-vectorized DateOffset being applied to Series or DatetimeIndexunit)r~   msusc                   sx   t | tddd|d}|  d }|}t tr& j|jjkr&t j}t	 fdd|D 
|}t|| d S )Nz
2016-01-01#   D)periodsfreqr   c                   s   g | ]}|  qS r<   r<   )rD   xr   r<   r=   rF   O      z=TestCommon.test_add_dt64_ndarray_non_nano.<locals>.<listcomp>)r>   r   
_with_freqru   r#   _cresor   r   r   r   r   r   r   )rp   rO   r   r   rw   exp_unitr   r<   r   r=   test_add_dt64_ndarray_non_nano>  s   
z)TestCommon.test_add_dt64_ndarray_non_nanoN)F)r   
__module____qualname__rs   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   markfilterwarningsparametrizer   r<   r<   r<   r=   ri      s,    	
	
?7K#+	ri   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rp   r<   r<   r=   setup_methodU     zTestDateOffset.setup_methodc                 C  s:   t t  t td t dt   t dtdd  d S )NrQ   r   )reprr   r   r<   r<   r=   	test_reprX  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 )NrQ   r/   r   r   r<   r<   r=   test_mul^  s   zTestDateOffset.test_mulkwdc                 C  sX   |dkr| 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.rn   reasonrQ   r<   )applymarkerrm   r   xfailNotImplementedErrorr   r   rA   )rp   r   rL   rq   r<   r<   r=   test_constructorb  s   zTestDateOffset.test_constructorc                 C  s    |t d tdddksJ d S )NrQ   rP   r/   r   )r   r   )rp   rR   r<   r<   r=   test_default_constructorp  s    z'TestDateOffset.test_default_constructorc                 C  sX   d}t jt|d td rJ td sJ W d    d S 1 s%w   Y  d S )Nz%DateOffset.is_anchored is deprecated rj   rQ   r/   )r   r   FutureWarningr   is_anchoredrp   rr   r<   r<   r=   test_is_anchoreds  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 )NrQ   r   r/   r-   )r   r   r   r<   r<   r=   	test_copyz  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 Nr/   r<   r   r   rp   arithmatic_offset_typer   rR   r<   r<   r=   r   ~  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 )Nr/   z$Cannot subtract datetime from offsetrj   r<   )r   r   rm   rn   r   r  r<   r<   r=   test_sub  s   ""zTestDateOffset.test_subz#arithmatic_offset_type, n, expectedr/   
   )	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
  rp   r  r1   r   rR   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 )NrP   r/      r   rQ      )r   r   )rp   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 )Nr/   r)   im  rz   r     r   )rp   offset1offset2r<   r<   r=   test_eq  s   

zTestDateOffset.test_eqoffset_kwargs, expected_arg)r.   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
  )rp   offset_kwargsexpected_argrq   r   rw   r   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 argumentsrj   r/   )picoseconds)rm   rn   
ValueErrorr   r  r<   r<   r=   test_offset_invalid_arguments     "z,TestDateOffset.test_offset_invalid_argumentsN)r   r   r   r   r   r   rm   r   r   sortedrB   _relativedelta_kwdsr   r  r  r  zip_ARITHMETIC_DATE_OFFSETr   r  ranger  r  r  r  r   r#  r<   r<   r<   r=   r   T  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BrQ   2BBMEr   r3   W-MONr/   W-TUEW-WEDrz   W-THUr   W-FRIzLWOM-SUN)r   r   r   r$   r    r   SUNr   r<   r<   r=   test_get_offset_name   s   z$TestOffsetNames.test_get_offset_nameN)r   r   r   r6  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 )Nrj   	gibberishzQS-JAN-Br,  bbmeBmer0  r   r/  r1  r/   r2  rQ   r3  rz   r4  r   z	Expected z
 to yield z
 (actual: ))	rm   rn   r"  r   r
   r   r   r$   r   )pairsnamer   rq   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@Satr7   r/  rj   )r$   rm   rn   r"  r   r
   )r=  r>  r   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   )rp   r   vr<   r<   r=   test_alias_equality2  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)MEMSr.  BMSr   r,  hminr~   r   r   rz   MONTUEWEDTHUFRISATr5  W-r7   JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC)YEYSBYEBYSQEQSBQEBQS)r
   r   r   join)rp   lstr   
suffix_lstbaserC  aliasbase_lstr<   r<   r=   test_rule_code8  s(   z TestOffsetAliases.test_rule_codeN)r   r   r   r   rD  rn  r<   r<   r<   r=   rA  .  s    rA  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 )Nr/   r   i  )rq   zB+30MinizB-30Min)r   r   r   r   r<   r<   r=   test_freq_offsets]  s   ro  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`  ra  rb  rc  rd  rf  rg  re  c                 S  s"   g | ]}d D ]}|d | qqS )rS  rR  r<   )rD   prefixr   r<   r<   r=   rF   i  s    
z<TestReprNames.test_str_for_named_is_name.<locals>.<listcomp>rJ  c                 S  s   g | ]}d | qS )zW-r<   )rD   r   r<   r<   r=   rF   |  r   c                   s"   g | ]} D ]}d | | qqS )zWOM-r<   )rD   r8   r   r  r<   r=   rF   }  s   " )1234)r   r   r
   r   )rp   month_prefixesnamesr>  rq   r<   r  r=   test_str_for_named_is_namef  s   z(TestReprNames.test_str_for_named_is_nameN)r   r   r   rx  r<   r<   r<   r=   rp  e  r7  rp  c                 C  s   | }|  d S r   r<   rO   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 ''rj   rz   r<   rm   rn   r   )r   rM   rz  rr   r<   r<   r=   test_valid_month_attributes  
   "r  c                 C  s$   | d}| d}|j |j ksJ d S )Nr/   rQ   )r>  )rM   objobj2r<   r<   r=   test_month_offset_name  s   r  c                 C  s4   | dkr| tjjtdd tdi | di d S )Nr   r   r   r/   r<   )r   rm   r   r   r   r   )r   rL   r<   r<   r=   test_valid_relativedelta_kwargs  s   	r  c                 C  r|  r}  r  )r   tick_classesrz  rr   r<   r<   r=   test_valid_tick_attributes  r  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 )Nr   rj   zDoh!r1   r/   rQ   )dtype)
rm   rn   r   r   r!   r   r   r   r   int64r<   r<   r<   r=   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 )Nr   rj   g      ?r  rm   rn   r"  ry  r<   r<   r=   test_require_integers  r$  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.rj   rz   T)r1   r5   r  )r  rz  rr   r<   r<   r=   test_tick_normalize_raises  s
   "r  r  nanosecondsz1970-01-01 00:00:00.000000001r7   z1970-01-01 00:00:00.000000005ry   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   r<   r
  )r  r  rq   r   rw   r   r<   r<   r=   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 t dddd}|js8J td  || }W d    n1 sLw   Y  td}||ks[J d S )	NrQ   r   r+   r  r   z1970-01-01 00:02:00.000000013r/   )r+   r  hourz1970-01-01 01:02:00.000000013)r   r   _use_relativedeltar   r   )rq   r   rw   r   r  result2	expected2r<   r<   r=   +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 immutablerj   r7   r<   )r   rm   rn   ro   setattr)r  rq   rr   r<   r<   r=   test_dateoffset_immutable
  s
   "r  c                  C  s,   t jddd} | j t jdddkrJ d S )NrQ   r   )r'   r)   r   )r   r   r   )osetr<   r<   r=   test_dateoffset_misc  s   r  r1   )ry   r/   rz   c                 C  sJ   t | }|jtdksJ tddd| }tddd|  }||ks#J d S )Nr/   i  rQ   )r   _offsetr   r   )r1   rq   rw   r   r<   r<   r=   -test_construct_int_arg_no_kwargs_assumed_days#  s
   r  zoffset, expectedr     r  z2022-01-01 00:07:00.000000018rz   )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 )Nr  r   )r   r   )rq   r   
start_time	teststamp
testseriesr<   r<   r=   2test_dateoffset_add_sub_timestamp_series_with_nano-  s   
r  z=n_months, scaling_factor, start_timestamp, expected_timestamp))r/   rQ   
2020-01-30
2020-03-30)rQ   r/   r  r  )r/   r   r  r  )rQ   r   r  r  )r/   ry   r  z
2019-12-30)rQ   ry   r  z
2019-11-30c                 C  sb   t | d}t|}t|g}|||  }|||  }t|}	t|	g}
||	ks)J t||
 d S )Nr   )r   r   r   r   assert_series_equal)n_monthsscaling_factorstart_timestampexpected_timestampmo1startscalar
startarrayresultscalarresultarrayexpectedscalarexpectedarrayr<   r<   r=   test_offset_multiplicationD  s   


r  c                  C  s   t tdgtddgd} | d d| d   }t tdtdgtddtddgd}td}tt |d d|d   }W d    n1 sKw   Y  |d	 |ksXJ |d	 |ks`J d S )
Nz
2019-04-30r/   r   )Tr   r     r   z
2021-06-30r   )r   r   r   r   r   r   )dfframeresult1df2expecteddateframeresult2r<   r<   r=   (test_dateoffset_operations_on_dataframesb  s   r  c            
      C  s  t d} t d}t d}t d}t d}t d}t d}g | tdd	f|tdd
f| tdd
f|tdd	f|tdd	f|tdd	f|tdd	f|tdd	f|tdd	f|tdd	f|tdd	f|tdd
f|tdd
f|tdd	f|tdd	f|tdd	f|tdd
f|tdd
f|tdd
f|tdd	f|tdd	f|tdd
f|tdd
f|tdd
f|tdd
f|tdd	f|tdd	f|tdd	f|tdd	f|tdd	ftdjdftdjdf}|D ]\}}	||	ksGJ q<d S )NrE  r.  zQE-FEBzQS-FEBrf  zBQS-APRzYS-NOVz
2013-06-01r/   r   z
2013-06-03z
2013-02-28z
2013-03-01z
2013-03-31z
2013-02-01z
2013-06-30z
2013-06-28z
2013-03-29z
2013-11-01z
2013-10-31z
2012-02-01r     )	r   is_month_startr   is_month_endis_quarter_endis_year_endis_quarter_startis_year_startdays_in_month)
freq_mbmqfebqsfebbqbqs_apras_novtestsr   r;   r<   r<   r=   test_is_yqm_start_endt  s   	
 #r  )r/   F)\__doc__
__future__r   r   r   numpyr   rm   pandas._libs.tslibsr   r   r   r   r	   pandas._libs.tslibs.offsets_libstslibsr   rB   r
   r   r   pandas._libs.tslibs.periodr   pandas.errorsr   pandasr   r   r   r   pandas._testing_testingr   #pandas.tests.tseries.offsets.commonr   pandas.tseriespandas.tseries.offsetsr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r(  r>   fixture__all__rM   rO   rR   rh   ri   r   r+  r?  r@  rA  ro  rp  r{  r   r   r%  r&  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<   r<   r<   r=   <module>   s    L
 



*   # ,/"
	

		





















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


