o
    gS7                     @   s:  d dl Zd dlZd dlm  mZ d dlmZ d dl	Z
d dl	mZmZmZmZ d dlmZ dd Zdd Zejdejejfejejfejejfejejfejejfejejfgd	d
 Zdd Zdd Zdd Zdd Z ejde!e"ej#egdd Z$ejdg deg dg dede
j%edggdd Z&dd Z'd d! Z(ejd"e)d#d$ejd%g d&d'd(gd(ggejd)d*ej*e+e,j-e+e,j.gejd+d,d- d.d- d/d- gd0d1 Z/d2d3 Z0d4d5 Z1d6d7 Z2d8d9 Z3d:d; Z4d<d= Z5d>d? Z6d@dA Z7ejdee
j8gdBdC Z9ej:dDdE Z;dS )F    N)
is_integer)Series	Timestamp
date_rangeisnac                 C   s\   t td| d}|dk }tdd||< t ttddttdd | d}t|| d S N
   dtype         r   nparangerangelisttmassert_series_equal)
sint_dtypesmaskexpected r   e/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/series/indexing/test_where.pytest_where_unsafe_int   s
   $r   c                 C   s`   t td| d}|dk }tdd||< ttddttdd }t || d}t|| d S r   r   )float_dtyper   r   datar   r   r   r   test_where_unsafe_float   s   r   zdtype,expected_dtypec                 C   sT   t td| d}g d}|dk }t |ttdd |d}|||< t|| d S )Nr   r	   )      @      @      @      @g      @r   )r   r   r   r   r   r   r   )r
   expected_dtyper   valuesr   r   r   r   r   test_where_unsafe_upcast'   s   r%   c                  C   sL  t tddd} g d}| dk}t ttd| dd}|| |< t| | t tddd} | dk }tdd	| |< t ttdd	ttdd dd}t| | | j|jks[J t tddd} | dk}d
gd | |< t g dd
gd  dd}t| | t td} | dk}d}tj	t
|d g d| |< W d    n1 sw   Y  tj	t
|d d
gd | |< W d    n1 sw   Y  t g d} | | dktj}t tjtjddg}t|| t tdt} d | d< | d }t|sJ t tdt} d | | dk< | t|  }t tjdgd}t|| d S )Nr   int64r	   )r   r    r!   r"   r      float64r   r   r      )r      r      r)   r   -cannot assign mismatch length to masked arraymatch)r   r)   r+   r   r*   )r*   r   r+   r)   r+      	   index)r   r   r   r   r   r   r   r
   pytestraises
ValueErrorwherenanastypefloatr   )r   r$   r   r   msgresultr   r   r   test_where_unsafe<   sN   $r<   c                  C   s  t tjd} | dk}| | }| | }t|| | ||  }t||   | |}| j	|j	ks9J || us?J t g d| j
d}|   }|| |j
d d |j
}||d d }t|| | }|d |jd< ||d d | }t|| d S )Nr   r   )TFFTFr1   r+   )r   r   randomrandnr6   dropnar   r   absshaper2   reindexiloc)r   condrsrs2s2r   r   r   r   
test_wheres   s&   

 rH   c                  C   sl   t td} d}tjt|d | | dkdd}W d    n1 s#w   Y  t g d}t|| d S )Nr   z|In a future version of pandas all arguments of Series.where except for the arguments 'cond' and 'other' will be keyword-onlyr-   r*   r   F)r   r   r   r+   r)   )r   r   r   assert_produces_warningFutureWarningr6   r   )r   r:   r;   r   r   r   r   "test_where_non_keyword_deprecation   s   rK   c                  C   sT  t tjd} | dk}d}tjt|d | d W d    n1 s%w   Y  tjt|d | |d d j|   W d    n1 sHw   Y  t ddg} ddg| dd	g< t ddg}t	
| | d
}tjt|d g d| dd	g< W d    n1 sw   Y  d}tjt|d g | dd	g< W d    d S 1 sw   Y  d S )Nr   r   ,Array conditional must be same shape as selfr-   r*   r+   r   TFr,   )r   r   r+   zrNumPy boolean array indexing assignment cannot assign 0 input values to the 1 output values where the mask is true)r   r   r=   r>   r3   r4   r5   r6   r$   r   r   )r   rD   r:   r   r   r   r   test_where_error   s,   "rM   klassc                 C   sB   t g d}g d}t tjddg}|| |}t|| d S )Nr*   r   r+   )FTTr   r+   )r   r   r7   r6   r   r   )rN   r   rD   r   r;   r   r   r   test_where_array_like   s
   rP   rD   )r*   r   r*   )r   r   r   )TrueFalserQ   z
2017-01-01z
2017-01-02c                 C   s   t g d}d}tjt|d ||  W d    n1 sw   Y  d}tjt|d |dg W d    d S 1 s?w   Y  d S )NrO   z(Boolean array expected for the conditionr-   rL   T)r   r3   r4   r5   r6   )rD   r   r:   r   r   r   test_where_invalid_input   s   "rS   c                  C   s   d} t g d}dg}tjt| d || W d    n1 s"w   Y  t dtjtjg}|t |}t|| t	g d}tjt| d || W d    n1 s[w   Y  t tjdtjg}|t |}t|| d S )NrL   rO   Tr-   r*   )FTFTr   )
r   r3   r4   r5   r6   r   r7   r   r   array)r:   r   rD   r   outr   r   r   test_where_ndframe_align   s    rV   c                  C   s  dd } t td}tjt| dd ttd|dd< W d    n1 s(w   Y  ttd|dd< t g d	}t|t	j
| t td
}tjt| dd ttd|ddd< W d    n1 slw   Y  t td
}ttd|ddd< t g d}t|| t td
}tjt| dd ttd|d d< W d    n1 sw   Y  ttd|dd< t g d}t|| t td}tjt| dd ttd|g d	< W d    n1 sw   Y  t td}tjt| dd ttd|g d	< W d    n	1 sw   Y  t td}ttd|d< t ttdddg}t|| d S )Nc                 S   s   d|  dS )Nzcannot set using a z/ indexer with a different length than the valuer   xr   r   r   <lambda>       z,test_where_setitem_invalid.<locals>.<lambda>abcslicer-      r   r+   )r   r*   r   abcdefr)   r   )r   br*   def)ar_   cr   r*   rb   z	list-liker   r_   rf   )r   r   r3   r4   r5   r   r   r   r8   r   r&   )r:   r   r   r   r   r   test_where_setitem_invalid   sH   rg   sizer   r'   r   )TFFFFTFitemg       @boxc                 C   s   t | gS N)r   rT   rW   r   r   r   rY   5  rZ   rY   c                 C   s   | gS rk   r   rW   r   r   r   rY   5      c                 C   s   | fS rk   r   rW   r   r   r   rY   5  rl   c                    s   t || }t j| td t fddt|D }t }|||< t|| t }|| |}t|| t }|	||}t|| d S )Nr	   c                    s    g | ]\}}|r
n | qS r   r   ).0iuse_itemr   ri   r   r   
<listcomp>?  s     z"test_broadcast.<locals>.<listcomp>)
r   resizer   r9   r   	enumerater   r   r6   r   )rh   r   ri   rj   	selectionr   r   r;   r   rp   r   test_broadcast+  s   ru   c                  C   s   t tjd} | dk}|  }|j|dd t| | |  t|| | |  }|j||  dd t|| ||   d S )Nr   r   T)inplace)	r   r   r=   r>   copyr6   r   r   r?   )r   rD   rE   r   r   r   test_where_inplaceO  s   rx   c                  C   s   t ttd} t ttd}t| |g}||dk }t ddtjddtjgg dd}t	|| d||dk < t g dg dd}t	|| ||dk   d	7  < t g d
g dd}t	|| d S )Nr+   r   r   r*   )r   r*   r   r   r*   r   r1   r   )r   r*   r   r   r*   r   r   )r      r   r   ry   r   )
r   r   r   pdconcatr6   r   r7   r   r   )s1rG   combr;   r   r   r   r   test_where_dups^  s    r~   c                  C   s>  t g d} | | dkd}t|d rJ t|d sJ t|d s&J t|d ts/J |jdks6J | | dkg d}t|d rHJ t|d sPJ t|d sXJ t|d tsaJ |jdkshJ | | dktg d}t|d r}J t|d sJ t|d sJ t|d tsJ |jdksJ d S )NrO   r*   Xr   r   object)r   YZ)r   r6   r   
isinstancestrr
   r   rT   )r   wr   r   r   test_where_numeric_with_strings  s&   r   c                  C   s   t ddgdd} t ddg}tddg}| |ddg}t|| | |d}t|| | |d}t|| | |ddg}t|| | |dtjg}t dd gdd}t|| d S )	Nr*   r   ztimedelta64[ns]r	   r   F      $@r   )r   r   rT   r6   r   r   r7   )r   r   r   rE   r   r   r   test_where_timedelta_coerce  s   r   c                  C   s  t tddd} t ddg}tddg}| |ddg}t|| | |d}t|| | |d}t|| | |ddg}t|| | |dtjg}t dd gdd}t|| d	d
g}t dd |D } | t ddg}t tj	| d g}t|| d S )N20130102r   )periodsr   Fr   r   r	   z2016-12-31 12:00:04+00:00z 2016-12-31 12:00:04.010000+00:00c                 S   s   g | ]}t |qS r   )r   )rm   tr   r   r   rq     s    z2test_where_datetime_conversion.<locals>.<listcomp>Tr*   )
r   r   r   rT   r6   r   r   r7   rz   NaT)r   r   r   rE   
timestampsr   r   r   test_where_datetime_conversion  s&   r   c                 C   sj   t tjg d| d}t tjg d| d}t g d}|||}t tjg d| d}t|| d S )N)201501012015010220150103)tz)201605142016051520160516TTF)r   r   r   )r   rz   DatetimeIndexr6   r   r   )tz_naive_fixtureser1ser2r   r;   expr   r   r   test_where_dt_tz_values  s   r   c                  C   sH   t tjddg} | | dkd}t tjddg}t|| d S )Nr*   r   r   )r   rz   arraysSparseArrayr6   r   r   )serr;   r   r   r   r   test_where_sparse  s   r   c                  C   s&   t g td} | g }t||  d S )Nr	   )r   r9   r6   r   r   )r   r;   r   r   r   =test_where_empty_series_and_empty_cond_having_non_bool_dtypes  s   
r   c                 C   sT   | t jddddtjgg dddd}| g ddd}||dk}t|| d S )	NAB)r   r   C)
categoriescategoryr	   )r   r   r   r   r   r   )rz   Categoricalr   r7   r6   r   assert_equal)rN   r   dfresr   r   r   test_where_categorical  s   r   c                 C   s   | }t dd|dd }t|d |d tjg}t|d tj|d g}tg d}|||}t	
|| |j||}t	||j t|||}t	|t| t||d d d f t|}t	|t| d S )Nz
2001-01-01r+   )r   r   r   r*   r   r   )r   
_with_freqrz   r   r   r   r   rT   r6   r   assert_index_equal_dataassert_datetime_array_equalr   r   	DataFrameassert_frame_equal)r   r   drlvalsrvalsr   r   r   r   r   #test_where_datetimelike_categorical  s   $r   )<numpyr   r3   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.commonr   pandasrz   r   r   r   r   pandas._testing_testingr   r   r   markparametrizeint8r(   int16int32r&   float32r%   r<   rH   rK   rM   r   tuplerT   rP   r   rS   rV   rg   r   r7   finfor9   maxminru   rx   r~   r   r   r   r   r   r   r   r   &skip_array_manager_not_yet_implementedr   r   r   r   r   <module>   sx    








7



	9
