a
    PfT                     @   s  d dl Zd dl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 Zdd Zejd	ejgd
gfejejgdd
gfeejgd
gfeejejgdd
gfgdd Zejdg eg gdd Zdd Zejdeegdd Zdd Zejdi dg ig dddg dg dgddgg dgdd Zejdddgd d! Zg d"Zd#d$ eD Zejd%g ed&d' d(d) Zejd%ed*d+ Z d,d- Z!ejdddgd.d/ Z"d0d1 Z#dS )2    N)	DataFrame
MultiIndexSeries)frame_transform_kernels)
zip_framesc                 C   s,   |t ur(| d } |dkr(td|  | S )zm
    Helper to ensure we have the right type of object for a test parametrized
    over frame_or_series.
    Ar   z%Test is only for DataFrame with axis=)r   pytestskip)objklassaxis r   `/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/apply/test_frame_transform.py
unpack_obj   s
    r   c                 C   sf   t ||| }tjdd t|}W d    n1 s80    Y  |jtj| d}|}t|| d S )Nignoreallr   )r   nperrstatesqrt	transformtmassert_equal)r   float_frameframe_or_seriesr
   Zf_sqrtresultexpectedr   r   r   test_transform_ufunc   s    (r   z
ops, namesr   absolutec                    s   | dv rdnd}t jdd* t fdd|D |d}W d    n1 sL0    Y  | dv rrt j|g|_nt j|g|_ j|| d}t	|| d S )	N>   r   index   r   r   r   c                    s   g | ]}| qS r   r   ).0opr   r   r   
<listcomp>4       z+test_transform_listlike.<locals>.<listcomp>r   )
r   r   r   r   Zfrom_productcolumnsr    r   r   assert_frame_equal)r   r   opsnamesZ
other_axisr   r   r   r$   r   test_transform_listlike'   s    8r+   r)   c                 C   sH   t | |d}tjtdd || W d    n1 s:0    Y  d S Nr   z$No transform functions were providedmatchr   r   raises
ValueErrorr   r   r)   r   r
   r   r   r   test_transform_empty_listlike=   s    r3   c                  C   s   t dg di} ddd}ddd	}d
}tjt|d( | j||gddddd W d    n1 sd0    Y  | j||gdddd}t ddgddgddggtddgd}t|| d S )Nxr!         r!   r   c                 S   s   | | | S Nr   )r4   acr   r   r   foo1I   s    z4test_transform_listlike_func_with_args.<locals>.foo1r6   c                 S   s   | | | S r8   r   )r4   br:   r   r   r   foo2L   s    z4test_transform_listlike_func_with_args.<locals>.foo2z/foo1\(\) got an unexpected keyword argument 'b'r-   r7      r<   r:   )r:      	   
   )r4   r;   )r4   r=   r'   )r!   r   )r6   r   )	r   r   r0   	TypeErrorr   r   from_tuplesr   r(   )dfr;   r=   msgr   r   r   r   r   &test_transform_listlike_func_with_argsE   s    

6rH   boxc                 C   sl   | dv r&|j d }||g tj}n|jd }|jdg tj}|j||tji| d}t|| d S )N)r   r    r   r   )r'   r   r   absr    Zilocr   r(   )r   r   rI   er   r   r   r   r   test_transform_dictlike[   s    

rL   c                  C   sf   t ddgddgddgd} | ddgdd}t g dg d	gtdd
gddgd}t|| d S )Nr!   r6   r>   )r9   r<   r:   r   rJ   r?   )      ?r!   rM   )       @r>   rN   )r   rJ   )r   r   r!   )r   r!   r   rC   )r   r   r   r   r(   )rF   r   r   r   r   r   test_transform_dictlike_mixedh   s    rO   r   Zcumsumr   Bc                 C   sH   t | |d}tjtdd || W d    n1 s:0    Y  d S r,   r/   r2   r   r   r   test_transform_empty_dictlikes   s    rR   	use_applyTFc                    s@   t | | } fdd}|j|| d}|d }t|| d S )Nc                    s   t |  krt| d S Nr!   
isinstancer1   r4   r   rS   r   r   func   s    z test_transform_udf.<locals>.funcr   r!   )r   r   r   r   )r   r   rS   r   r
   rY   r   r   r   rX   r   test_transform_udf   s
    rZ   )ZffillZbfillZfillnapadZbackfillshiftc                 C   s   g | ]}|t vr|qS r   )	wont_fail)r"   r4   r   r   r   r%      r&   r%   r#   c                 C   s   | d S rT   r   rW   r   r   r   <lambda>   r&   r^   c                 C   s@  | dkr| tjjtdd tddtg i}t||}t	}d
ddg}tj||d	 ||  W d    n1 s|0    Y  tj||d	 || g W d    n1 s0    Y  tj||d	 |d| i W d    n1 s0    Y  tj||d	  |d| gi W d    n1 s20    Y  d S )
Nngroupngroup not valid for NDFramer0   reasonr   r7   |4not supported between instances of 'type' and 'type'unsupported operand typer-   )applymarkerr   markxfailr1   r   objectr   get_objrD   joinr0   r   )r#   r   requestr
   errorrG   r   r   r   test_transform_bad_dtype   s(    (*,rn   c                 C   sL  |dkr|  tjjtdd tdtg g dd}t}ddd	g}tj	||d
 |
|g W d    n1 sx0    Y  tj	||d
  |
||d W d    n1 s0    Y  tj	||d
$ |
|g|gd W d    n1 s0    Y  tj	||d
& |
|dg|gd W d    n1 s>0    Y  d S )Nr_   r`   ra   r7   r5   rP   rc   rd   re   r-   r\   )rf   r   rg   rh   r1   r   ri   rD   rk   r0   r   )rl   r#   rF   rm   rG   r   r   r    test_transform_failure_typeerror   s&    *.2ro   c                  C   s&  dd } t g dg dd}d}tjt|d || g W d    n1 sR0    Y  tjt|d  || | d W d    n1 s0    Y  tjt|d$ || g| gd W d    n1 s0    Y  tjt|d& || dg| gd W d    n1 s0    Y  d S )	Nc                 S   s   t t | dk rt| S NrB   )r   sumr1   rW   r   r   r   r#      s    z-test_transform_failure_valueerror.<locals>.opr5   )i  i  iX  rP   zTransform function failedr-   r\   )r   r   r0   r1   r   )r#   rF   rG   r   r   r   !test_transform_failure_valueerror   s    *.2rr   c                    sF   ddg ddi fdd}dgj |dg R i  d S )Nr!   r6   r:   r7   c                    s6   t | krt||g ks"J |d ks2J | S )Nr:   rU   )r4   r9   r<   r:   Zexpected_argsZexpected_kwargsr   rS   r   r   f   s
    z%test_transform_passes_args.<locals>.fr   )r   )rS   r   rt   r   rs   r   test_transform_passes_args   s    	ru   c                  C   sP   t g ddgd} | dd }t||  | d dd }t|| d  d S )NZcol1Zcol2rC   c                 S   s   | d S rp   r   rW   r   r   r   r^     r&   z0test_transform_empty_dataframe.<locals>.<lambda>c                 S   s   | d S rp   r   rW   r   r   r   r^     r&   )r   r   r   r(   Zassert_series_equal)rF   r   r   r   r   test_transform_empty_dataframe  s
    rv   )$numpyr   r   Zpandasr   r   r   Zpandas._testingZ_testingr   Zpandas.tests.apply.commonr   Zpandas.tests.frame.commonr   r   r   rg   Zparametrizer   rJ   arrayr+   r3   rH   dictrL   rO   rR   rZ   r]   Zframe_kernels_raisern   ro   rr   ru   rv   r   r   r   r   <module>   sZ   	









