o
    Eh#+                     @   s  d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ ejdg dejdejg i d	d
ejdgi dd
ejg ddidd
ejg ddidd
ejddgddidd
gejdddgdd Zejdg ddd Zejdg dejdddgdd Zejdg dejdd dgd!d" Zejd#eee
ejd$d%d&ejfd'ejfd(d)d*ejfd+d,ejfd-ejfd.ejfg
ee
ejdd/d0gg d1ee
d2 g d3d4d5 Zejd#eee
ejd$d6e
g ejd$fd7e
g ejd$fgee
ejdd/d0gd6e
ejdd/d8gfd7e
ejdd0d8gfgee
d2 d7e
g d9fgd:d; Zejd<eee	 d=e
d>d$fd&e
d>d$fd'e
d>d$fd?e
ed$fd@e
ed$fd*e
d>d$fdAe
d>d$fd,e
d>d$fd-e
d>d$fd.e
d>d$fg
ee	ejdgdd/ggd=e
dBd0gfd&e
dBd/gfd'e
dBdgfd?e
ddgfd@e
ddgfd*e
ddCgfdAe
dBd/gfd,e
ejdDgfd-e
ejdEgfd.e
ddCgfg
dFdG Zejd<eee	 d6e	 fd7e	 fgee	ejdgdd/ggd6e	ejdgdd/ggfd7e	ejdgdd0ggfgdHdI Z ejdedJdK Z!ejdedLdM Z"ejdNg dOdPdQ Z#dS )R    )chainN)	is_number)	DataFrameSeries)frame_transform_kernelsseries_transform_kernelsfunc)summeanminmaxstdz	args,kwdsZno_args_or_kwds)id   Zaxis_from_argsaxisZaxis_from_kwdsZnumeric_onlyTZoptional_kwdsZargs_and_kwdshowaggapplyc                 C   sj   t |dkr|dkr| tjjtdd t|||g|R i |}t|||i |}t|| d S )Nr   r   z>agg/apply signature mismatch - agg passes 2nd argument to funcZraisesreason)	lenapplymarkerpytestmarkxfail	TypeErrorgetattrtmassert_series_equal)requestfloat_framer   argskwdsr   resultexpected r%   ;lib/python3.10/site-packages/pandas/tests/apply/test_str.pytest_apply_with_string_funcs   s   r'   argc                 C   s&   |  |}t| | }||ksJ d S )N)r   r   )Zdatetime_seriesr(   r#   r$   r%   r%   r&   test_with_string_args.   s   
r)   op)r
   medianr   varc                 C   sl   t ddgddgd}t||| }| dv rddini }ttt| |fdd	i||jd
}t|| d S )Nr            )ab)r   r,   Zddofr   r   )index)r   r   r   npcolumnsr   r   )r*   r   r    r#   kwargsr$   r%   r%   r&   test_apply_np_reducer5   s   r6   )absZceilZcoscumsumZexplogsqrtZsquare	transformc                 C   st   d| j d< d }|dv rt}tj|dd t| ||}tt|| }W d    n1 s-w   Y  t|| d S )Ng      )r   r   )r9   r:   F)Zcheck_stacklevel)ZilocRuntimeWarningr   assert_produces_warningr   r3   assert_frame_equal)r    r*   r   warnr#   r$   r%   r%   r&   test_apply_np_transformerC   s   
	r@   zseries, func, expected)Zdtype)r	   r   r   r   allT)anyFr
   )prodr   r   r,   r+   r-   r.   )
)r	      )r   r.   )r   r   rA   rC   T)r
   r-   )rD   rE   )r   r   )r,   r   )r+   r-   za b c))r	   abc)r   c)r   r0   rA   rF   c                 C   sz   t |trd nt}tj|dd | |}W d    n1 s w   Y  t|r5tj||dds3J d S ||ks;J d S )Nis currently using Series.*matchT)Z	equal_nan)	
isinstancestrFutureWarningr   r=   r   r   r3   ZiscloseZseriesr   r$   r?   r#   r%   r%   r&   test_agg_cython_table_seriesY   s   1rP   Zcumprodr8   rE   )r0   abrG   c                 C   sZ   t |trd nt}tj|dd | |}W d    n1 s w   Y  t|| d S )NrI   rJ   rL   rM   rN   r   r=   r   r   rO   r%   r%   r&   &test_agg_cython_table_transform_series   s
   rS   zdf, func, expectedr	   float64rB   rC   rD   g      ?g      ?g۞?g      ?c                 C   s^   t |trd nt}tj|dd | j||d}W d    n1 s"w   Y  t|| d S )Nis currently using DataFrame.*rJ   r   rR   dfr   r$   r   r?   r#   r%   r%   r&   test_agg_cython_table_frame   s
   'rY   c                 C   sp   |dv r	| d}t|trd nt}tj|dd | j||d}W d    n1 s+w   Y  t|| d S )N)r4   r   rT   rU   rJ   rV   )ZastyperL   rM   rN   r   r=   r   r>   rW   r%   r%   r&   %test_agg_cython_table_transform_frame   s   
rZ   c           	      C   s   |dkr|  tjjtdd |dkrdgng }t|jd }|dkr&tnd }d}t	j
||d ||j|g|R  }W d    n1 sHw   Y  |j|dg|R  }t	|| d S )	Nngroupngroup not valid for NDFramer   fillna        r   z"SeriesGroupBy.fillna is deprecatedrJ   )r   r   r   r   
ValueErrorr3   onesshaperN   r   r=   groupbyr;   r   )	r   Zstring_seriesr*   r!   r`   r?   msgr$   r#   r%   r%   r&   $test_transform_groupby_kernel_series   s   rd   c                 C   s"  |dkr|  tjjtdd |dkrdgng }|dv r't|jd }d}n
t|jd	 }d
}tj	t
|d |j||d}W d    n1 sJw   Y  |dkrUt
nd }d}	tj	||	d |j|g|R  }
W d    n1 stw   Y  |j||g|R  }t||
 d|jvsJ |d  |d< t|jjd	ksJ |dv rt|jd }nt|jd	 }tj	t
|d |j||d}W d    n1 sw   Y  |dkrt
nd }d}	tj	||	d |j|g|R  }W d    n1 sw   Y  |j||g|R  }t|| d S )Nr[   r\   r   r]   r^   )r   r2   r   z5The 'axis' keyword in DataFrame.groupby is deprecatedr   z+DataFrame.groupby with axis=1 is deprecatedrJ   rV   z%DataFrameGroupBy.fillna is deprecatedEA)r   r   r   r   r_   r3   r`   ra   r   r=   rN   rb   r;   r>   r4   copyr   Z_mgrZarrays)r   r   r    r*   r!   r`   rc   Zgbr?   Zop_msgr$   r#   Zgb2Z	expected2Zresult2r%   r%   r&   #test_transform_groupby_kernel_frame  sH   rh   method)r7   shiftZ
pct_changer8   Zrankc                 C   s8   t dddgi}|| }t| |}t|| d S )Nrf   r-   )r   r;   operatormethodcallerr   r>   )ri   rX   r#   r$   r%   r%   r&   test_transform_method_name@  s   
rn   )$	itertoolsr   rl   Znumpyr3   r   Zpandas.core.dtypes.commonr   Zpandasr   r   Zpandas._testingZ_testingr   Zpandas.tests.apply.commonr   r   r   ZparametrizeZparamr'   r)   r6   r@   Zget_cython_table_paramsrT   nansplitrP   rS   boolrY   rZ   rd   rh   rn   r%   r%   r%   r&   <module>   s   




-



#


.