o
    g                     @   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$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   b/home/ubuntu/cloudmapper/venv/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   
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 sFJ |j| |j| k sTJ qd S )N     ))   )r   r   )	r   nprandomrandnr
   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j||d	d
 t g dg dgg dd}|j}|jddj}t|| d S )Nr   r      g      ?      @)ABr   r   )r   r   r          @T)
check_like)r   r   g333333@)r+      gffffff@)foobarbazcolumnsr+   )r   )r   r   nanr
   tmassert_frame_equal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 }| }|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s`J |j	|	|f }t
j|||	 dd |j|ksxJ t
|j	|
|f |j	|
|f  q*d S )Nr   r   r   r   )axisr   F)check_names)r   r   r   r   r   r	   r
   range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+   r1   zaxis,resr   )r/   r/   r,   )      @      @      @)      @rJ   rJ   r   )r/   r,   rG   )rH   rI   rJ   c           	      C   sP   |j dd}|j|g d||d}t||j|jd}|r|}tj||dd d S )NT)deep)         )r   r   r?   r   )r6   index)check_exact)r	   r
   r   r6   rO   r8   r9   )	r   simple_framer   r   r?   resr   r<   r=   r   r   r   test_clip_against_list_likeZ   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
   r8   r9   )	r   r?   r"   r#   r$   r%   r&   r'   r(   r   r   r   test_clip_against_framen   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   r1   )r-   r.   CDr5   )rV   r-   r.   rU   r   )r.   rV   rU   r-   r   )r   r   r+   )	r   r   r   r   r   r
   r6   r8   r9   )
r   df1df2df3result_upperexpected_upperresult_lowerexpected_lowerresult_lower_upper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}|jddtjgdd	}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}|j|dd	}tg dg dd}t || dS )z&Should process np.nan argument as Noner   r*   )r1   rL   rM   )rN      	   )col_0col_1col_2r1   rL   r   )r   r?   )r1   rL   r+   r   )r1   r1   r1   )rL   rL   rM   )rb   r   r   rL   )irM   ra   )rc   rd   r   rM   r+   )rb   rf   r   rM   rL   )r   ri   rM   ra   r+   N)r8   r9   r
   r   r7   r   r   NaN)r   r   r"   r<   r=   datatr   r   r   test_clip_with_na_args   s&   z(TestDataFrameClip.test_clip_with_na_argsc                 C   sp   t dg di}d}tjt|d |ddd}W d    n1 s#w   Y  t dg di}t|| d S )Nar*   zIn a future version of pandas all arguments of DataFrame.clip except for the arguments 'lower' and 'upper' will be keyword-only)matchr   r   )r   r   r   )r   r8   assert_produces_warningFutureWarningr
   r9   )r   r"   msgr<   r=   r   r   r   test_clip_pos_args_deprecation   s   z0TestDataFrameClip.test_clip_pos_args_deprecationN)__name__
__module____qualname__r   r   r)   r>   pytestmarkparametrizerF   r   asarrayrS   rT   r`   rm   rs   r   r   r   r   r      s*    
	

r   )
numpyr   rw   pandasr   r   pandas._testing_testingr8   r   r   r   r   r   <module>   s
    