o
    թZh                     @   s>   d dl Zd dlZd dlmZmZ d dlmZ G dd dZ	dS )    N)	DataFrameSeriesc                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgdd Z
ej	d	d
dgej	dg deg dgej	ddg dg dg dgfdg dg dg dgfgdd Zej	dg ddd Zdd Zd d! Zd"d# Zd$d% Zd&S )'TestDataFrameClipc                 C   sL   |    }| }|j||d}|j|k rJ |j|jk s$J d S )Nupperlower)mediancopyclipvaluesanyall)selffloat_framer   originaldouble r   [/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_clip.py	test_clip   s
   zTestDataFrameClip.test_clipc                 C   sF   |    }| }|j||dd}|d u sJ |j|k r!J d S )NT)r   r   inplace)r   r	   r
   r   r   )r   r   r   Z
frame_copyreturn_valuer   r   r   test_inplace_clip   s
   z#TestDataFrameClip.test_inplace_clipc                 C   s   t tjdd}dD ]I\}}|||}t||t||}}|j|k}|j|k}| | @ }|j| |k	 s=J |j| |k	 sHJ |j| |j| k	 sVJ qd S )N     r   ))   )r   r   )
r   nprandomdefault_rngstandard_normalr
   minmaxr   r   )r   dflbub
clipped_dflb_maskub_maskmaskr   r   r   test_dataframe_clip   s   

z%TestDataFrameClip.test_dataframe_clipc                 C   s   t g ddtjdgd}|dd}t g ddtjdgd}t|| t g d	g d
gg dd}|j}|jddj}t|| d S )Nr   r            ?      @)ABr   r   )r   r   r          @)r   r   g333333@)r,      gffffff@)ZfoobarZbazcolumnsr,   r   )r   r   nanr
   tmassert_frame_equalZdtypesassert_series_equalr   r#   resultexpectedr   r   r   test_clip_mixed_numeric.   s   z)TestDataFrameClip.test_clip_mixed_numericr   TFc                 C   s   t tjdd}ttjdd}|d }| }|j||d|d}|r+|}tdD ]^}|j	d d |f |k}|j	d d |f |k}	| |	 @ }
|j
||f }tj||| dd |j|kseJ |j
|	|f }tj|||	 dd |j|ks}J t|j
|
|f |j
|
|f  q/d S )	Nr   r   r   r   r   )axisr   F)Zcheck_names)r   r   r   r   r    r   r	   r
   rangeZiloclocr8   r:   name)r   r   r#   r$   r%   r   r&   ir'   r(   r)   r<   r   r   r   test_clip_against_series;   s&   "z*TestDataFrameClip.test_clip_against_seriesr   )r   r,   r2   zaxis,resr   )r1   r1   r.         @      @      @)      @rI   rI   r   )r1   r.   rF   )rG   rH   rI   c           	      C   sv   t g dg dg dg}t|g dg dd}|j|g d||d}t||j|jd}|r1|}tj||d	d
 d S )N)r-   r1   r.   rE   )rI   g       @g      "@)onetwothree)abc)r5   index)         )r   r   r?   r   T)Zcheck_exact)r   arrayr   r
   r5   rP   r8   r9   )	r   r   r   r?   resZarrr   r<   r=   r   r   r   test_clip_against_list_likeX   s   z-TestDataFrameClip.test_clip_against_list_liker?   )r   r   Nc           	      C   s   t tjdd}t tjdd}|d }|j|||d}||k}||k}| | @ }t|| ||  t|| ||  t|| ||  d S )Nr   r   r   )r?   )r   r   r   r   r    r
   r8   r9   )	r   r?   r#   r$   r%   r&   r'   r(   r)   r   r   r   test_clip_against_framep   s   z)TestDataFrameClip.test_clip_against_framec           
      C   s   t tjddg dd}t tjddg dd}t |jd g dd}|jd|d	}|jd||j d	}|j|d
d	}|j||j d
d	}|j||d	}|j||j ||j d	}	t	|| t	|| t	||	 d S )Nr   )r   r2   )r/   r0   CDr4   )rY   r/   r0   rX   r   )r0   rY   rX   r/   r   )r   r   r,   )
r   r   r   r   r    r   r
   r5   r8   r9   )
r   Zdf1Zdf2Zdf3Zresult_upperZexpected_upperZresult_lowerZexpected_lowerZresult_lower_upperZexpected_lower_upperr   r   r   #test_clip_against_unordered_columns   s$   z5TestDataFrameClip.test_clip_against_unordered_columnsc                 C   s  t |tj| t |jtjtjd| tg dg dg dd}d}t jt|d |jdd	tjgd
d}W d   n1 sDw   Y  tg dg dg dd}t || |jdd	tjgdd}tg dg dg dd}t || g dg dd}t|}tddtjddg}t jt|d |j|d
d}W d   n1 sw   Y  tg dg dd}t || dS )z&Should process np.nan argument as Noner   r+   )r2   rQ   rR   )rS      	   )col_0col_1Zcol_2z<Downcasting behavior in Series and DataFrame methods 'where')matchr2   rQ   r   )r   r?   N)r2   rQ   r,   r   )r2   r2   r2   )rQ   rQ   rR   )r\   r   r   rQ   )irR   r[   )r]   r^   r   rR   r,   )r\   r`   r   rR   rQ   )r   rc   rR   r[   r,   )	r8   r9   r
   r   r7   r   Zassert_produces_warningFutureWarningr   )r   r   r#   msgr<   r=   datatr   r   r   test_clip_with_na_args   s0   z(TestDataFrameClip.test_clip_with_na_argsc                 C   s<   t dg di}|jdd}t dg di}t|| d S )NrM   r+         ?)r   )ri   r1   r.   r   r
   r8   r9   r;   r   r   r   #test_clip_int_data_with_float_bound   s   z5TestDataFrameClip.test_clip_int_data_with_float_boundc                 C   sZ   t ddg}t ddg}|dg}t|| t ddg}|jdgd}t|| d S )Nr   rQ   r,   r6   rj   )r   r#   r=   r<   r   r   r   test_clip_with_list_bound   s   z+TestDataFrameClip.test_clip_with_list_boundN)__name__
__module____qualname__r   r   r*   r>   pytestmarkZparametrizerD   r   ZasarrayrV   rW   rZ   rh   rk   rl   r   r   r   r   r      s,    
	

"r   )
numpyr   rp   Zpandasr   r   Zpandas._testingZ_testingr8   r   r   r   r   r   <module>   s
    