a
    Pf4                     @   s.  d dl Zd dlZd dl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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$ejj%e dd 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. d0d. gd1d2 Z-d3d4 Z.d5d6 Z/d7d8 Z0ejd9d:d;gd<d= Z1d>d? Z2d@dA Z3dBdC Z4dDdE Z5dFdG Z6dS )H    N)using_pyarrow_string_dtype)
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)Zany_signed_int_numpy_dtypesmaskexpected r   `/var/www/ai-form-bot/venv/lib/python3.9/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   )Zfloat_numpy_dtyper   r   datar   r   r   r   test_where_unsafe_float   s    r   zdtype,expected_dtypec                 C   s   t td| d}g d}|dk }t |ttdd |d}t| jt|j  kr`dkrhn nd nt}tj	|dd |||< W d    n1 s0    Y  t
|| d S )Nr	   r
   )      @      @      @      @g      @r   fincompatible dtypematch)r   r   r   r   r   r   kindFutureWarningr   assert_produces_warningr   )r   Zexpected_dtyper   valuesr   r   warnr   r   r   test_where_unsafe_upcast*   s    &r+   c                  C   s~  t tddd} g d}| dk}t ttd| dd}tjtdd	 || |< W d    n1 sf0    Y  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sJ 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 s~0    Y  t
jt|d	 dgd | |< W d    n1 s0    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|s4J 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      r/   r   Kcannot set using a list-like indexer with a different length than the value)r   r/   r1   r   r0   )r0   r   r1   r/   r1      	   index)r   r   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_unsafeE   sL    &$,.r@   c                  C   s  t tjdd} | dk}| | }| | }t|| | ||  }t|| 	  | |}| j
|j
ksxJ || usJ t g d| jd}| 	  }|| |jd d |j}||d d }t|| |	 }|d |jd< ||d d | }t|| d S )Nr   r   r   )TFFTFr5   r1   )r   r   randomdefault_rngstandard_normalr:   dropnar   r   absshaper6   ZreindexZiloc)r   condrsZrs2s2r   r   r   r   
test_where}   s&    

 rJ   c                  C   sX  t tjdd} | dk}d}tjt|d | d W d    n1 sP0    Y  tjt|d( | |d d j	|   W d    n1 s0    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 s0    Y  tjt|d g | dd	g< W d    n1 sJ0    Y  d S )Nr   r   r   ,Array conditional must be same shape as selfr$   r0   r1   TFr2   )r   r   r1   )r   r   rA   rB   rC   r7   r8   r9   r:   r)   r   r   )r   rG   r>   r   r   r   r   test_where_error   s     (60rL   klassc                 C   sB   t g d}g d}t tjddg}|| |}t|| d S )Nr0   r   r1   )FTTr   r1   )r   r   r;   r:   r   r   )rM   r   rG   r   r?   r   r   r   test_where_array_like   s
    rO   rG   )r0   r   r0   )r   r   r   )TrueFalserP   z
2017-01-01z
2017-01-02c                 C   s   t g d}d}tjt|d ||  W d    n1 s>0    Y  d}tjt|d |dg W d    n1 s|0    Y  d S )NrN   z(Boolean array expected for the conditionr$   rK   T)r   r7   r8   r9   r:   )rG   r   r>   r   r   r   test_where_invalid_input   s    (rR   c                  C   s   d} t g d}dg}tjt| d || W d    n1 sD0    Y  t dtjtjg}|t |}t|| t	g d}tjt| d || W d    n1 s0    Y  t tjdtjg}|t |}t|| d S )NrK   rN   Tr$   r0   )FTFTr   )
r   r7   r8   r9   r:   r   r;   r   r   array)r>   r   rG   r   outr   r   r   test_where_ndframe_align   s    ((rU   zcan't set ints into string)reasonc                  C   s  dd } t td}tjt| dd$ ttd|dd< W d    n1 sP0    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 s0    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 sf0    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 s0    Y  t td}tjt| dd$ ttd|g d	< W d    n1 s:0    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   r1   )r   r0   r   Zabcdefr/   r   )r   br0   der"   )ar^   cr   r0   r"   z	list-liker	   r^   rd   )r   r   r7   r8   r9   r   r   r   r<   r   r,   )r>   r   r   r   r   r   test_where_setitem_invalid   s>    24444re   sizer   r-   r   )TFFFFTFitemg       @boxc                 C   s   t | gS N)r   rS   rW   r   r   r   rY   /  rZ   rY   c                 C   s   | gS ri   r   rW   r   r   r   rY   /  rZ   c                 C   s   | fS ri   r   rW   r   r   r   rY   /  rZ   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iZuse_itemr   rg   r   r   
<listcomp>:  rZ   z"test_broadcast.<locals>.<listcomp>)
r   resizer   r=   r   	enumerater   r   r:   r   )rf   r   rg   rh   Z	selectionr   r   r?   r   rl   r   test_broadcast%  s    rp   c                  C   s   t tjdd} | dk}|  }|j|dd t|	 | |  t|| | |  }|j||  dd t|| ||   d S )Nr   r   r   T)Zinplace)
r   r   rA   rB   rC   copyr:   r   r   rD   )r   rG   rH   r   r   r   test_where_inplaceK  s    rr   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 )Nr1   r   r   r0   )r   r0   r   r   r0   r   r5   r   )r   r0   r   r   r0   r   r	   )r      r   r   rs   r   )
r   r   r   pdconcatr:   r   r;   r   r   )s1rI   combr?   r   r   r   r   test_where_dupsZ  s     rx   c                  C   sF  t g d} | | dkd}t|d r,J t|d s<J t|d sLJ t|d ts^J |jdkslJ | | dkg d}t|d rJ t|d sJ t|d sJ t|d tsJ |jdksJ | | dktg d}t|d rJ t|d sJ t|d sJ t|d ts2J |jdksBJ d S )NrN   r0   Xr   r   object)ry   YZ)r   r:   r   
isinstancestrr   r   rS   )r   wr   r   r   test_where_numeric_with_stringo  s&    r   r   ztimedelta64[ns]zdatetime64[ns]c                 C   s  t ddg| d}t ddg}tddg}d}tjt|d  ||ddg}W d    n1 sb0    Y  t|| tjt|d ||d}W d    n1 s0    Y  t|| tjt|d ||d}W d    n1 s0    Y  t|| tjt|d  ||ddg}W d    n1 s:0    Y  t|| ||dtjg}t dtjgd	d}t|| d S )
Nr0   r   r
   r	   Fz<Downcasting behavior in Series and DataFrame methods 'where'r$   g      $@rz   )	r   r   rS   r   r(   r'   r:   r   r;   )r   serr   r   r>   rH   r   r   r   test_where_datetimelike_coerce  s&    .**0r   c                  C   sV   ddg} t dd | D dd}|t ddg}t tj|d	 gdd}t|| d S )
Nz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   )rj   tr   r   r   rm     rZ   z)test_where_datetimetz.<locals>.<listcomp>zdatetime64[ns, UTC]r
   FTr0   )r   r:   rt   NaTr   r   )Z
timestampsr   rH   r   r   r   r   test_where_datetimetz  s
    r   c                  C   sH   t tjddg} | | dkd}t tjddg}t|| d S )Nr0   r   r   )r   rt   ZarraysZSparseArrayr:   r   r   )r   r?   r   r   r   r   test_where_sparse  s    r   c                  C   s&   t g td} | g }t||  d S )Nr
   )r   r=   r:   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   )rt   Categoricalr   r;   r:   r   Zassert_equal)Zframe_or_seriesexpZ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-01r1   )Zperiodstzr   r0   r   )TTF)r   Z
_with_freqrt   ZDatetimeIndexr   r   r   rS   r:   r   Zassert_index_equal_dataZ_whereZassert_datetime_array_equalr   r   Z	DataFrameZassert_frame_equal)Ztz_naive_fixturer   ZdrZlvalsZrvalsr   r   r   r   r   #test_where_datetimelike_categorical  s    $r   )7numpyr   r7   Zpandas._configr   Zpandas.core.dtypes.commonr   Zpandasrt   r   r   r   r   Zpandas._testingZ_testingr   r   r   markZparametrizeZint8r.   Zint16Zint32r,   Zfloat32r+   r@   rJ   rL   r   tuplerS   rO   r   rR   rU   Zxfailre   r   r;   Zfinfor=   maxminrp   rr   rx   r   r   r   r   r   r   r   r   r   r   r   <module>   sr   






8


	

9
	