o
    $jT                     @   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   h/var/www/html/Deteccion_Ine/venv/lib/python3.10/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 sw   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 s&w   Y  | dv r9t 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   s    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   r*   r(   c                 C   J   t | |d}tjtdd || W d    d S 1 sw   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 s2w   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 Nr   )r4   acr   r   r   foo1I      z4test_transform_listlike_func_with_args.<locals>.foo1r6   c                 S   r8   r9   r   )r4   br;   r   r   r   foo2L   r=   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   

rJ   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   rK   er   r   r   r   r   test_transform_dictlike[   s   

rN   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@   )r:   r>   r;   r   rL   rA   )      ?r!   rO   )       @r@   rP   )r   rL   )r   r   r!   )r   r!   r   rE   )r   r   r   r   r'   )rH   r   r   r   r   r   test_transform_dictlike_mixedh   s   rQ   r   Zcumsumr   Bc                 C   r+   r,   r/   r2   r   r   r   test_transform_empty_dictlikes   s   "rT   	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   rU   r   r   func   s   z test_transform_udf.<locals>.funcr   r!   )r   r   r   r   )r   r   rU   r   r
   r[   r   r   r   rZ   r   test_transform_udf   s
   r\   )ZffillZbfillZfillnapadZbackfillshiftc                 C   s   g | ]}|t vr|qS r   )	wont_fail)r"   r4   r   r   r   r%      s    r%   r#   c                 C      | d S rV   r   rY   r   r   r   <lambda>       ra   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>w   Y  tj||d	 || g W d    n1 s[w   Y  tj||d	 |d| i W d    n1 syw   Y  tj||d	 |d| gi W d    d S 1 sw   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_objrF   joinr0   r   )r#   r   requestr
   errorrI   r   r   r   test_transform_bad_dtype   s0   "rr   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 s<w   Y  tj	||d
 |
||d W d    n1 s[w   Y  tj	||d
 |
|g|gd W d    n1 s|w   Y  tj	||d
 |
|dg|gd W d    d S 1 sw   Y  d S )Nrc   rd   re   r7   r5   rR   rg   rh   ri   r-   r^   )rj   r   rk   rl   r1   r   rm   rF   ro   r0   r   )rp   r#   rH   rq   rI   r   r   r    test_transform_failure_typeerror   s.   "rs   c                  C   s&  dd } t g dg dd}d}tjt|d || g W d    n1 s)w   Y  tjt|d || | d W d    n1 sHw   Y  tjt|d || g| gd W d    n1 siw   Y  tjt|d || dg| gd W d    d S 1 sw   Y  d S )	Nc                 S   s   t t | dk rt| S NrD   )r   sumr1   rY   r   r   r   r#      s   z-test_transform_failure_valueerror.<locals>.opr5   )i  i  iX  rR   zTransform function failedr-   r^   )r   r   r0   r1   r   )r#   rH   rI   r   r   r   !test_transform_failure_valueerror   s   "rv   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sJ | S )Nr;   rW   )r4   r:   r>   r;   Zexpected_argsZexpected_kwargsr   rU   r   r   f   s
   z%test_transform_passes_args.<locals>.fr   )r   )rU   r   rx   r   rw   r   test_transform_passes_args   s   $	ry   c                  C   sP   t g ddgd} | dd }t||  | d dd }t|| d  d S )NZcol1Zcol2rE   c                 S   r`   rt   r   rY   r   r   r   ra     rb   z0test_transform_empty_dataframe.<locals>.<lambda>c                 S   r`   rt   r   rY   r   r   r   ra     rb   )r   r   r   r'   Zassert_series_equal)rH   r   r   r   r   test_transform_empty_dataframe  s
   rz   )$numpyr   r   Zpandasr   r   r   Zpandas._testingZ_testingr   Zpandas.tests.apply.commonr   Zpandas.tests.frame.commonr   r   r   rk   Zparametrizer   rL   arrayr*   r3   rJ   dictrN   rQ   rT   r\   r_   Zframe_kernels_raiserr   rs   rv   ry   rz   r   r   r   r   <module>   s\    
	








