
    Owg                        d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlZ	d dlm
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ  ej.                  g d      d	        Zd
 Z G d d      Zd Zd Zd Zd Zd Zd Z d Z!ejD                  jG                  dddg      d        Z$d Z% ee      d        Z&d Z'd Z(d Z)d Z*ejD                  jG                  dd dd!d e d"d#d$      g      d%        Z+d& Z,y)'    )datetime)givenN)	is_scalar)	DataFrameDatetimeIndexIndexSeriesStringDtype	Timestamp
date_rangeisna)OPTIONAL_ONE_OF_ALL)defaultfloat_stringmixed_float	mixed_int)paramsc                     | j                   dk(  r;t        t        j                  j	                  d      j                  d      g d      S | j                   dk(  r|S | j                   dk(  r|S | j                   dk(  r|S y )	Nr            ABCcolumnsr   r   r   )paramr   nprandomdefault_rngstandard_normal)requestfloat_string_framemixed_float_framemixed_int_frames       ]/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/indexing/test_where.pywhere_framer)      sw    }}	!II!!!$44V<o
 	
 }}&!!}}%  }}# $    c                 `    d t        t        fd| j                         D                    S )Nc                     t        | j                  j                  t        j                  t        j
                  f      xr | j                  dk7  S )Nuint8)
issubclassdtypetyper    integerfloating)ss    r(   is_okz_safe_add.<locals>.is_ok(   s4    qww||bjj"++%>?VAGGwDV	
r*   c              3   J   K   | ]  \  }} |      r||d z   fn||f  yw)   N ).0cr3   r4   s      r(   	<genexpr>z_safe_add.<locals>.<genexpr>-   s,     TAa1a!e*q!f<Ts    #)r   dictitems)dfr4   s    @r(   	_safe_addr>   &   s&    

 TTTTUUr*   c                   ,   e Zd Zd Zd Zej                  j                  d      d        Zej                  j                  d      d        Z	ej                  j                  d      d        Z
d Zej                  j                  d	eeej                   g      d
        Zej                  j                  ddgdgdgg edgdgdgg       edg di      dgdgdgg ed      gej,                  g ed      ggg      d        Zej                  j                  dddgddgddgg eddgddgddgg      ddgddgddgg eg dg dd      ej,                   ed      g ed      ej,                  g ed       ed      ggg      d        Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Z d% Z!d& Z"d' Z#d( Z$d) Z%d* Z&d+ Z'd, Z(ej                  j                  d-i d.d/ig      d0        Z)d1 Z*d2 Z+d3 Z,d4 Z-ej                  j                  d5g d6      d7        Z.y/)8TestDataFrameIndexingWherec                     dd}|}||u r,d}t        j                  t        |      5  |dkD   d d d        y |dkD  } |||       y # 1 sw Y   y xY w)Nc           	         t        |       }| j                  ||      }| j                  |j                  |      }|j                         D ]R  \  }}t	        t        j                  ||   | |   ||         |j                        }t        j                  ||d       T t        j                  ||       |r*|j                  | j                  k(  j                         sJ y y )NindexF)check_names)r>   wherevaluesr<   r	   r    rD   tmassert_series_equalassert_frame_equaldtypesall)	r=   condcheck_dtypesother1rsrs2kvexps	            r(   
_check_getz=TestDataFrameIndexingWhere.test_where_get.<locals>._check_get2   s    r]F$'B((4;;/C
 B1RXXd1gr!ufQi@P&&q#5AB !!"c* 		RYY.33555 r*   6'>' not supported between instances of 'str' and 'int'matchr   T)pytestraises	TypeError)selfr)   r%   rU   r=   msgrM   s          r(   test_where_getz)TestDataFrameIndexingWhere.test_where_get1   sZ    	6 ##JCy4 QAv2t	s   AAc           
         t        dD ci c]  }|t        dgdz  |       c}      }d|j                  dd d f<   |j                  }t        t	        j
                  d      t	        j
                  d      t	        j
                  d      t	        j
                  d	      gg d
      }t        j                  ||       y c c}w )N)float32float64int32int64r6   r   r/   r   ra   rb   rc   rd   rC   )r   r	   ilocrK   r    r/   rH   rI   )r]   r9   r=   resultexpecteds        r(   test_where_upcastingz/TestDataFrameIndexingWhere.test_where_upcastingI   s     B 61#'++
 1##!!	 ;
 	vx0+s   B?z4ignore:Downcasting object dtype arrays:FutureWarningc                 x   dd}|}||u r,d}t        j                  t        |      5  |dkD   d d d        y |dkD  dd  } |||t        |             |dkD  } |||t        |      j                         |dkD  }t        d |j                  D              } |||t        j                  |       y # 1 sw Y   y xY w)	Nc                    | j                  ||      }t        |j                        D ]  \  }}||   }| |   j                  }||   j	                  | |   j
                        j                  d      j                  }	t        |      r|}
nRt        |t        j                        r)t        |d d |f   |j
                        j                  }
n||   j                  }
|	j                         r|nt        j                   |	||
      }t        ||j
                  |      }t        j                  ||d        |rEt        |t        j                        s*|j                  | j                  k(  j                         sJ y y y )NFrC   )rD   name)check_dtype)rF   	enumerater   rG   reindexrD   fillnar   
isinstancer    ndarrayr	   rL   rH   rI   rK   )r=   rM   otherrN   rP   irR   rg   dr9   o
new_valuesrh   s                r(   _check_alignzETestDataFrameIndexingWhere.test_where_alignment.<locals>._check_alignf   s2   $&B!"**- L1AqELLGOOBqEKK077>EEU#Arzz2uQT{&,,?FFAaA"#%%'Qrxx1a/@
!*FLLqI &&vxUK#L, Jubjj$A		RYY.33555 %B|r*   rV   rW   r   r6   c              3   f   K   | ])  }t        |j                  t        j                          + y w)N)r.   r0   r    r1   )r8   r3   s     r(   r:   zBTestDataFrameIndexingWhere.test_where_alignment.<locals>.<genexpr>   s"     Q!z!&&"**==Qs   /1)rN   rY   )	rZ   r[   r\   r>   rG   rL   rK   r    nan)r]   r)   r%   rx   r=   r^   rM   rN   s           r(   test_where_alignmentz/TestDataFrameIndexingWhere.test_where_alignmentc   s    	66 ##JCy4 Q Q|Ry}- AvR	" 4 46 AvQryyQQRrvvLAs   B00B9zignore::DeprecationWarningc                    t        t        j                  j                  d      j	                  d      g d      }|dkD  }|dz   j
                  ddd d f   }d}t        j                  t        |      5  |j                  ||       d d d        |j                  d dd d f   j
                  }t        |      }d	}t        j                  t        |      5  |j                  ||       d d d        t        j                  t        |      5  |j                  d
       d d d        t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Nr   r   r   r   r   r6   z4other must be the same shape as self when an ndarrayrW   ,Array conditional must be same shape as selfT)r   r    r!   r"   r#   rG   rZ   r[   
ValueErrorrF   rf   r>   mask)r]   r=   rM   err1r^   err2rO   s          r(   test_where_invalidz-TestDataFrameIndexingWhere.test_where_invalid   sH    II!!!$44V<o
 AvQqsAv&D]]:S1 	!HHT4 	! yy!Q&&2<]]:S1 	#HHT6"	# ]]:S1 	GGDM	]]:S1 	GGAJ	 		! 	!	# 	#	 		 	s0   6EE*E6FE'*E36E?Fc                    dd}|}||u r,d}t        j                  t        |      5  |dkD   d d d        y ||u r|j                  d      }|dkD  } |||       |dk\  } |||       |dk\  dd  } |||       y # 1 sw Y   y xY w)Nc                 *   | j                         }|j                  |       j                  d      j                  d      }|j	                  |       }|j                  |t        j                  d      }|J t        j                  ||       |r| j                  j                         D ]e  \  }}t        |j                  t        j                        r(||   j                         st        j                   d      }||   j                   |k(  reJ  y y )NTF)copyinplacerb   )r   reindex_likerp   infer_objectsr   rF   r    rz   rH   rJ   rK   r<   r.   r0   r1   rL   r/   )	r=   rM   rN   dfiecondrh   return_valuerR   rS   s	            r(   
_check_setz=TestDataFrameIndexingWhere.test_where_set.<locals>._check_set   s    '')C%%b)006DD%DPExx'H99T26649@L'''!!#x0 IIOO- -DAq!!&&"**5d1gkkmHHY/q6<<1,,,- r*   rV   rW   r   rb   r6   rY   )rZ   r[   r\   astype)r]   r)   r%   r'   r   r=   r^   rM   s           r(   test_where_setz)TestDataFrameIndexingWhere.test_where_set   s    	-  ##JCy4 Q 9%BAv2tQw2t a}2ts   A::Bc                     t        t        d      t        dd      d      }|j                  |d   dk(        }||d   dk(     j                  |j                        }t        j                  ||       y )Nr         abr   r6   )r   rangerF   ro   rD   rH   rJ   r]   r=   rg   rh   s       r(   test_where_series_slicingz4TestDataFrameIndexingWhere.test_where_series_slicing   sd     U1XE!QK89"S'Q,'bgl#++BHH5
fh/r*   klassc                 n   t        dg di      }dgdgdgg}t        dt        j                  ddgi      }|j                   ||            }t	        j
                  ||       d|d<   dt        j                  dg|d<   ddgddgddgg}|j                   ||            }t	        j
                  ||       y )Nr   r6   r   r   FTr   r   r   )r   r    rz   rF   rH   rJ   )r]   r   r=   rM   rh   rg   s         r(   test_where_array_likez0TestDataFrameIndexingWhere.test_where_array_like   s     Y'($$(cBFFAq>23%+&
fh/3BFFAe}tTl;%+&
fh/r*   rM   r6   r   r   r   r   r   )r   r   r   TrueFalsez
2017-01-01z
2017-01-02c                     t        dg di      }d}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)Nr   r   (Boolean array expected for the conditionrW   r   rZ   r[   r~   rF   r]   rM   r=   r^   s       r(   test_where_invalid_input_singlez:TestDataFrameIndexingWhere.test_where_invalid_input_single   sF     Y'(8]]:S1 	HHTN	 	 	s   AAr   )r      	   r   z
2017-01-03c                     t        g dg dd      }d}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)Nr   )r   r   r   r   r   rW   r   r   s       r(   !test_where_invalid_input_multiplez<TestDataFrameIndexingWhere.test_where_invalid_input_multiple   sF      YY788]]:S1 	HHTN	 	 	s   AAc                    t        g dg dg      }t        g dg dg      }|j                  |      }t        dt        j                  dgt        j                  t        j                  dgg      }t	        j
                  ||       g d|_        |j                  |      }t        t        j                  |j                  |j                  	      }t	        j
                  ||       y )
Nr   r   r      )TFTFFT      ?r   r   )r   r   r9   rD   r   )r   rF   r    rz   rH   rJ   r   rD   )r]   r=   rM   rg   rh   s        r(   test_where_dataframe_col_matchz9TestDataFrameIndexingWhere.test_where_dataframe_col_match  s    	9-.-/CDE$sBFFA.0CDE
fh/ '$RVV288RZZH
fh/r*   c                    d}t        g dg dg      }dg}t        j                  t        |      5  |j	                  |       d d d        t        g dt
        j                  t
        j                  t
        j                  gg      }|j	                  t        |            }t        j                  ||       t        j                  g d      }t        j                  t        |      5  |j	                  |       d d d        t        t
        j                  t
        j                  t
        j                  gg dg      }|j	                  t        |            }t        j                  ||       y # 1 sw Y   /xY w# 1 sw Y   xY w)Nr}   r   r   TrW   )FTFT)r   rZ   r[   r~   rF   r    rz   r	   rH   rJ   array)r]   r^   r=   rM   rh   outs         r(   test_where_ndframe_alignz3TestDataFrameIndexingWhere.test_where_ndframe_align$  s   <	9-.v]]:S1 	HHTN	 i"&&"&&"&&)ABChhvd|$
c8,xx23]]:S1 	HHTN	 rvvrvvrvv6	BChhvd|$
c8,	 		 	s   E1*E>1E;>Fc                    t        g dg ddd      }t        t        j                  t        j                  ddgddt        j                  t        j                  gdd      }|j                  |dkD  t        j                        }t	        j
                  ||       |j                         }|j                  |dkD  t        j                  d	
      }|J t	        j
                  ||       y )N)r          @      @      @r   r   r   r   r   rb   re   r   r   r   Tr   )r   r    rz   rF   rH   rJ   r   )r]   r=   rh   rg   r   s        r(   test_where_bugz)TestDataFrameIndexingWhere.test_where_bug:  s    &-AB)
 662663,Cbffbff3MN
 "q&"&&)
fh/||FQJ|E###
fh/r*   c                    t        t        j                  g d|      t        j                  g dd      d      }t        g dg dd      j                  |dd      }|j	                  |dkD  d	      }t        j                  ||       |j                         }|j	                  |dkD  d	d
      }|J t        j                  ||       y )Nr6   r   r   r   re   r   rb   r   )r   r   r   )r   r   r   r   r   r   Tr   )r   r    r   r   rF   rH   rJ   r   )r]   any_signed_int_numpy_dtyper=   rh   rg   r   s         r(   test_where_bug_mixedz/TestDataFrameIndexingWhere.test_where_bug_mixedK  s    XXl2LMXX2)D
  '9:

&1	B
C 	 "q&"%
fh/||FQJD|A###
fh/r*   c                 \   t        ddgddgddgd      }t        t        j                  dgd	t        j                  gt        j                  t        j                  gd      }|j                         ||kD  z  }|j	                         }||| <   d
}t        j                  t        |      5  |j                  ||      }d d d        t        j                  |       t        ddgddgd      }t        t        j                  dgdt        j                  gd      }|j                         ||kD  z  }|j	                         }||| <   t        j                  t        |      5  |j                  ||      }d d d        t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   ,xY w)Nr6   r   r   r   r   r   )r   r6   r   r   r   <Downcasting behavior in Series and DataFrame methods 'where'rW   r   r   r6   )
r   r    rz   r   r   rH   assert_produces_warningFutureWarningrF   rJ   )r]   r   r   do_not_replacerh   r^   rg   s          r(   test_where_bug_transpositionz7TestDataFrameIndexingWhere.test_where_bug_transposition`  sh   1a&aVA782661+1bff+266266:JKLQU+668$%.!L''SA 	0WW^Q/F	0
fh/1a&aV,-2661+1bff+67QU+668$%.!''SA 	0WW^Q/F	0
fh/	0 	0	0 	0s   ,F$F"F"F+c                 4   t        t        dd      t        dd      t        j                  j	                  d      j                  d      d      }t        ddd	      }d
}t        j                  t        |      5  ||kD   d d d        ||j                  d d d df   |kD     }|j                         }t        j                  |j                  ddgdf<   t        j                  |j                  d d df<   t        j                  ||       y # 1 sw Y   xY w)N20130102r   periods20130104r   r   i  r6   r   zF'>' not supported between instances of 'float' and 'datetime.datetime'rW   r   r   r   r   )r   r   r    r!   r"   r#   r   rZ   r[   r\   rf   r   rz   locrH   rJ   )r]   r=   stampr^   rg   rh   s         r(   test_where_datetimez.TestDataFrameIndexingWhere.test_where_datetimey  s    
A6
A6YY**1-==a@
 q!$V]]9C0 	J	 BGGAssFOe+,779$&FFaVS[!!vvQV
fh/	 	s   <DDc                    t        dt        t        d            i      j                  t              }d ||dkD  <   t        dt        dddddd	d
dt
        j                  t
        j                  g
      i      }t        j                  ||       t        dt
        j                  ddt
        j                  dt
        j                  dg      }|j                         }t        |       }|j                  |d d       t        dt
        j                  gd dgdd gd      }t        j                  ||       |j                         }d || <   t        j                  ||       y )Nseries
   r   r   r6   r   r   r   r   r   Testr   Tr   r   )r   r	   r   r   floatr    rz   rH   rJ   r   r   rF   )r]   r=   rh   origr   s        r(   test_where_nonez*TestDataFrameIndexingWhere.test_where_none  s5    &r"345<<UC26
vq!Q1aArvvrvvFGH
 	b(+ bff62ff67
 wwyRy
tT*266]F^d^
 	b(+YY[D5	
b(+r*   c                     t        dg      }|}|j                  t        k(  j                         sJ |j	                  |      }t        j                  ||       y )Nr   r   )r   rK   objectrL   rF   rH   rJ   )r]   r=   rM   rg   s       r(   9test_where_empty_df_and_empty_cond_having_non_bool_dtypeszTTestDataFrameIndexingWhere.test_where_empty_df_and_empty_cond_having_non_bool_dtypes  sK    u%v%**,,,$
fb)r*   c                    d } |       }|j                  |j                               }|j                  t        j                  |      |j                         d      }t        j                  ||       |j                  t        j                  |      |j                         dd      }|J t        j                  ||        |       j                  d      }|j                  d |d         }|j                  |dkD  |d   d	      }t        j                  ||       |j                  |dkD  |d   d
      }t        j                  ||        |       }|j                  d      }|j                  t        j                  |      t        d|j                  |j                              }t        j                  ||       y )Nc                  :   t        t        j                  j                  d      j	                  d            } t        j
                  | j                  dddf<   t        j
                  | j                  dddf<   t        j
                  | j                  dd	df<   | S )
Nr   )r   r   r   r   r   r   r   r6   r   )r   r    r!   r"   r#   rz   rf   )r=   s    r(   createz;TestDataFrameIndexingWhere.test_where_align.<locals>.create  sv    299003CCGLMB ffBGGAaCFO ffBGGAaCFO ffBGGAaCFOIr*   r   axisTr   r   r   c                 ,    | j                  | dkD  |      S Nr   )rF   )xys     r(   <lambda>z=TestDataFrameIndexingWhere.test_where_align.<locals>.<lambda>  s    Q): r*   r   rD   rowsr6   r   )rp   meanrF   pdnotnarH   rJ   applyr   rD   r   )r]   r   r=   rh   rg   r   s         r(   test_where_alignz+TestDataFrameIndexingWhere.test_where_align  si   	 X99RWWY'"((2,		B
fh/xxbggiIxV###
b(+X__Q88:be8D"q&"Q%g6
fh/"q&"Q%f5
fh/ X99Q<HHRL)ARXXrzzJ
 	fh/r*   c                     t        ddgt        j                  dggddg      }t        ddgddggddg      }t        j                  ||j                         dk\  <   t	        j
                  ||       y )	Ny      ?      ?r   y      @      ?r   r   r   y      @      ?r   )r   r    rz   absrH   rJ   )r]   rh   r=   s      r(   test_where_complexz-TestDataFrameIndexingWhere.test_where_complex  sj    vqkBFFF+;<sCjQff%56c
KFF2668q=
b(+r*   c                    t        t        j                  j                  d      j	                  d            }t        ddgddgg      }t        ddg      }t        ddgddggd      }|j                  ||d	      }t        j                  ||       |j                         }|j                  ||dd
      }|J t        j                  ||       t        ddgddggd      }|j                  ||d	      }t        j                  ||       |j                         }|j                  ||dd
      }|J t        j                  ||       y )Nr   )r   r   Fr   r6   rb   re   rD   r   Tr   r   r   )
r   r    r!   r"   r#   r	   rF   rH   rJ   r   r]   r=   r   serrh   rg   r   s          r(   test_where_axisz*TestDataFrameIndexingWhere.test_where_axis  s>   ryy,,Q/??GH5%.5%.9:aVnq!fq!f-Y?$'2
fh/||D#GT|J###
fh/q!fq!f-Y?$)4
fh/||D#It|L###
fh/r*   c                 P   t        ddgddggd      }t        ddgddgg      }t        dt        j                  g      }t        ddgt        j                  t        j                  ggd	      }|j	                  ||d
      }t        j                  ||       |j                         }t        j                  t        d      5  |j	                  ||d
d      }d d d        J t        j                  ||       t        dt        j                  gdt        j                  gg      }|j	                  ||d      }t        j                  ||       t        t        j                  ddgd      t        j                  t        j                  t        j                  gd	      d      }|j                         }t        j                  t        d      5  |j	                  ||dd      }d d d        |J t        j                  ||       y # 1 sw Y   7xY w# 1 sw Y   1xY w)Nr6   r   r   r   rd   re   Fr   rb   rD   r   incompatible dtyperW   Tr   r   r   )r   r	   r    rz   rF   rH   rJ   r   r   r   r   r   s          r(   test_where_axis_with_upcastz6TestDataFrameIndexingWhere.test_where_axis_with_upcast  s   AA'w75%.5%.9:a[!q!frvvrvv&67yI$'2
fh/''=QR 	O!<<c<NL	O###
fh/q"&&kArvv;78$)4
fh/88QF'288RVVRVV,I>
 ''=QR 	Q!<<c	4<PL	Q###
fh/'	O 	O 	Q 	Qs   HHHH%c           
       
   t        j                  t        t        j                  j                  d      j                  d            t        t        j                  j                  d      j                  ddd      d      gdd	
      }t        d|j                  |j                        }t        d	|j                        }t        d|j                        }|j                  ||d      }t        d|j                  |j                        }|d   j                  d      |d<   |d   j                  d      |d<   t        j                  ||       |j                         }|j                  ||dd      }|J t        j                  ||       |j                  ||d      }t        d|j                  |j                        }|d   j                  d      |d<   |d   j                  d      |d<   t        j                  ||       |j                         }|j                  ||dd      }|J t        j                  ||       |j                         j!                  d	d      }|j                         j                  d      }t        j"                  |j$                  d	d d f<   |j                  ||      }t        j                  ||       |j                  ||d      }t        j                  ||       |j                         }t        j&                  t(        d      5  |j                  ||d      }d d d        |J t        j                  ||       |j                         }t        j&                  t(        d      5  |j                  ||dd      }d d d        |J t        j                  ||       |j                         j!                  d	d	      }	|j                         }t        j"                  |j$                  d d d	f<   |j                  ||	      }t        j                  ||       |j                  ||	d      }t        j                  ||       |j                         }|j                  ||	d      }|J t        j                  ||       |j                         }|j                  ||	dd      }|J t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   SxY w)Nr   )r   r   r   r   )sizerd   re   Tr6   )ignore_indexr   F)r   rD   rC   r   r   r   r   r   rD   r   r   r   rW   r   r   )r   concatr   r    r!   r"   r#   integersr   rD   r	   rF   r   rH   rJ   r   droprz   r   r   r   )
r]   r=   r   s1s2rg   rh   r   d1d2s
             r(   test_where_axis_multiple_dtypesz:TestDataFrameIndexingWhere.test_where_axis_multiple_dtypes  s?   YY"))//2BB7KLII))!,55a'5J! 

 

"((CARZZ(ARXX&$3S"**BHHEqk((1qk((1
fh/||D"9d|K###
fh/$1S"**BHHEqk((1qk((1
fh/||D"7D|I###
fh/ WWY^^AA^&779##G,VVQT$#
fh/$1
fh/''=QR 	@!<<b$<?L	@###
fh/''=QR 	N!<<b$W<ML	N###
fh/WWY^^AA^&779VVQT$#
fh/$3
fh/||D"d|;###
fh/||D"d|K###
fh/3	@ 	@
	N 	Ns   *S&S3&S03S=c                    t        g dg dg dg      }|j                  d d       }t        g dg dg dg      }t        j                  ||       t        j                  ||j                  |dkD  |d	z                |j                  d
 d       }t        g dg dg dg      }t        j                  ||       t        j                  ||j                  |dz  dk(  d             |dz   j                  d d       }t        g dg dg dg      }t        j                  ||       t        j                  ||dz   j                  |dz   dkD  |dz   dz                y )Nr   r   )r   r   r   c                     | dkD  S )Nr   r7   r   s    r(   r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>l  s
    AE r*   c                     | dz   S Nr6   r7   r  s    r(   r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>l  s
    QU r*   )r   r   r   )r   r   r   r   r6   c                 &    | dz  dk(  j                   S )Nr   r   )rG   r  s    r(   r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>r  s    QUaZ$7$7 r*   c                      y)Nc   r7   r  s    r(   r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>r  s    r*   )r  r   r  )r   r  r   )r  r   r  r   r   r  c                     | dkD  S )Nr   r7   r  s    r(   r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>x  s
    !a% r*   c                     | dz   S )Nr   r7   r  s    r(   r   z@TestDataFrameIndexingWhere.test_where_callable.<locals>.<lambda>x  s
    1r6 r*   )         )         )r   r      r   r   )r   rF   rH   rJ   )r]   r=   rg   rT   s       r(   test_where_callablez.TestDataFrameIndexingWhere.test_where_callablei  s%   	9i89/?;Iy9:
fc*
fbhhrAvrAv&>? 7Fj+>?
fc*
fbhhrAv{B&?@ q&1AB|[AB
fc*
frAvnnb1f\BFb=&QRr*   c                 N   t        t        g d|      dg      }t        t        g d|      dg      }t        g ddg      }t        t        g d|      dg      }|t        u r|d   }|d   }|d   }|d   }|j                  ||      }t	        j
                  ||       y )N)201501012015010220150103)tzdater   )r  2015010420150105TTF)r  r  r  )r   r   r	   rF   rH   assert_equal)r]   tz_naive_fixtureframe_or_seriesobj1obj2r   rT   rg   s           r(   test_where_tz_valuesz/TestDataFrameIndexingWhere.test_where_tz_values}  s    >CSTH
 >CSTH
 ,vh?>CSTH
 f$<D<D<Df+CD$'
V$r*   c                    t        t        j                  d      j                  dd      t	        d            }t        j
                  g dg dg      }|j                  |      }t        dt        j                  t        j                  gt        j                  t        j                  d	ggt	        d            }t        j                  ||       y )
Nr   r   r   ABCr   TFFr   r   r   )
r   r    arangereshapelistr   rF   rz   rH   rJ   )r]   r=   r   rg   rh   s        r(   test_df_where_change_dtypez5TestDataFrameIndexingWhere.test_df_where_change_dtype  s    ryy'//15tE{Kxx-/CDE$ 2662661"56U
 	fh/r*   kwargsrs   Nc                    t        j                  dt         j                        j                  dd      }t	        |t        d            }t        j                  g dg dg      }|j                  j                  d	      |_        |j                  j                  d	      |_	        |j                  j                  d	      |_
         |j                  |fi |}t        j                  d
t         j                  gd
dg      }t        j                  t         j                  t         j                  gddg      }t        j                  t         j                  dgddg      }t	        |||d      }	t        j                   ||	        |j                  j                  |d d d
f   fi |}t#        |d      }	t        j$                  ||	       y )Nr   re   r   r   r!  r   r"  r   categoryr   )
categoriesr6   r   r   r   r   )rl   )r    r#  rd   r$  r   r%  r   r   r   r   r   rF   r   Categoricalrz   rH   rJ   r	   rI   )
r]   r'  datar=   r   rg   r   r   r   rh   s
             r(   test_df_where_with_categoryz6TestDataFrameIndexingWhere.test_df_where_with_category  sV    yybhh/771=tT%[1xx-/CDE tt{{:&tt{{:&tt{{:&$)&)NNArvv;Aq6:NNBFFBFF+A?NNBFFA;Aq6:11156
fh/ DAJ1&1!#&
vx0r*   c                 :   t        ddgddggddg      }|d   j                  d      |d<   |j                  |d   dkD        }|j                         j                  ddi      }t        j
                  |j                  dd d f<   t        j                  ||       y )Nr   r6   r   r   r,  r   r)  r   )	r   r   rF   r   r    rz   r   rH   r  r   s       r(    test_where_categorical_filteringz;TestDataFrameIndexingWhere.test_where_categorical_filtering  s    aVaV,sCjAS'..,3"S'A+&779##S'N3VVQT
)r*   c                 T   t        g dg dd      }t        j                  dt        j                  dg      }t	        |      }t        j                  |j                  t              }d|dd d f<   |j                  ||d	
      }t        dt
        j                  dgdt
        j                  dgd      }t        j                  ||       t	        |d d ddg      }t        g ddt
        j                  dgd      }|j                  ||d
      }t        j                  ||       y )Nr   r   r   r   r   r   re   Fr6   r   r   r   r   r   r   r   r   rC   )r6   r   r   )r   r   r   NAr	   r    onesshapeboolrF   rz   rH   rJ   )r]   r=   arrr   r   rg   rh   ser2s           r(   test_where_ea_otherz.TestDataFrameIndexingWhere.test_where_ea_other  s    YY78hh255!}%Skwwrxxt,QT
 $!,Arvvq>BFFAGH
fh/c"1gc3Z09Arvvq>BC$1-
fh/r*   c                 "   t        t        j                  dd      g      }|j                  |j	                               }t        j                  ||       |d   }|j                  |j	                               }t        j                  ||       y r   )r   r   IntervalrF   r   rH   rJ   rI   )r]   r=   resr   s       r(   test_where_interval_noopz3TestDataFrameIndexingWhere.test_where_interval_noop  sk    Aq)*+hhrxxz"
c2&eii		$
sC(r*   c                 Z    |t        j                  dd      gdz        } |ddg      }d}t        j                  t        |      5  |j                  |j                          |      }d d d        t        j                  |j                  t        j                               t        j                  t        d      5  |j                  |j                         |d	       d d d        t        j                  ||j                  t                     y # 1 sw Y   xY w# 1 sw Y   ?xY w)
Nr   r   r   r   r   rW   %Setting an item of incompatible dtypeTr   )r   r;  rH   r   r   rF   r   r  r   r    rd   r   r   )r]   r  objrs   r^   r<  s         r(   #test_where_interval_fullop_downcastz>TestDataFrameIndexingWhere.test_where_interval_fullop_downcast  s    r{{1a01A56c
+L''SA 	1))SYY[L%0C	1
 	U\\"((34 ''!H
 	7 HHSYY[%H6	7 	U\\&12	1 	1	7 	7s   "D #D!D!D*r/   )ztimedelta64[ns]zdatetime64[ns]zdatetime64[ns, Asia/Tokyo]z	Period[D]c                 p   t        j                  t        d      5  t        t	        j
                  d      dz  t        j                        j                  |      }d d d        j                         }t	        j                  g d      }|j                  | d      }t        j                  ||       |j                  dd	      }|j                  | d      }t        j                  ||       |j                  |d      }t        j                  ||       |j                  |d      }	t        j                  |	|       d
}
t        j                  t        |
      5  |j                  |d      }d d d        t        d|j                   |j"                        }t        j                  |       t        j                  t        d      5  |j                  | dd       d d d        t        j                  ||j%                  t&                     y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w)Nzis deprecatedrW   r   i ʚ;re   FFFfoor   r6   r   r   r   r?  Tr   )rH   r   r   r	   r    r#  rd   viewto_framer   rF   rI   r$  rJ   r   r   rD   r   r   r   )r]   r/   r   r=   r   r<  mask2res2res3res4r^   res5rh   s                r(   test_where_datetimelike_noopz7TestDataFrameIndexingWhere.test_where_datetimelike_noop  s    ''_M 	K1-RXX>CCEJC	K\\^xx-.iiu%
sC(R#xx&
dB'xxe$
tS)wwue$
dB' M''SA 	&88E1%D	&Qbhh

C
dH- ''!H
 	- GGUFAtG,	- 	b(//&"9:?	K 	K*	& 	&	- 	-s$   AHH H,H H),H5)/__name__
__module____qualname__r_   ri   rZ   markfilterwarningsr{   r   r   r   parametrizer%  tupler    r   r   r	   r   r   r   NaTr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r&  r-  r0  r9  r=  rA  rL  r7   r*   r(   r@   r@   0   s   014 [[ VW/B X/Bd [[ <= >. [[ VW$ X$L0 [[WtUBHH&=>0 ?0  [[S1#sOQC!qc?#sI&'Xy6(+%&9\3J2KL	
		 [[VaVaV$QFQFQF+,v 1FF3CDII67<01<("&&1<()L*AB
	
0-,0"0*020.!,F*0B,000@K0ZS(%.
0 [[XWdO'<=1 >12
*0$)3( [[	
#;#;r*   r@   c                     t        j                  d      j                  t         j                        j	                  dd      } t        |       }t        j                  | j                  t              }d|d d df<   |j                  |d      }t        | d d df   t        j                  dgdz  t         j                        d      }t        j                  ||       y )	Nr   r   r   re   Tr   i   r   )r    r#  r   int16r$  r   zerosr5  r6  rF   r   rc   rH   rJ   )r7  r=   r   r<  rh   s        r(   %test_where_int_downcasting_deprecatedrX  %  s    
))A,

bhh
'
/
/1
5C	3B88CIIT*DDAJ
((4
CSAY288UGaKrxx+PQRH#x(r*   c                     | g d      }|j                         }| t        u r|d   n|}|j                  |dk        }|dz  }t        j                  ||       |j                  |dkD  g d      }|dz  }t        j                  ||       y )Nr   r   r   r   )r   r   rF   rH   r  )r  rg   rh   col	where_ress        r(   test_where_copies_with_noopr\  3  s}    \*F{{}H&)3&)CS1W%INIOOFH%S1Wl3INIOOFH%r*   c                     | g dg dt                     } | ddgddgt                     }t        g d      }|j                  ||      } | t        j                  ddt        j                  gg dt                     }t        j                  ||       |j                  | |      }t        j                  ||       |j                  | |d	
       t        j                  ||       y )N)r   r   r9   ru   )id1id2id3id4)rD   r/   r   r9   r_  r`  )FTTFTr   )r
   r	   rF   r   r3  rH   r  r   )r  r@  filtered_obj
filter_serrg   rh   s         r(   test_where_string_dtyperd  D  s    
$@C #	c
5%.L 23JYYz<0F	S"%% *mH
 OOFH%XXzk<0FOOFH%HHj[,H5OOFH%r*   c                  F   t        dgdz  dgdz  g dd      } | j                  | dk(        }t        t        j                  t        j                  gdz  t
              dgdz  t        j                  dt        j                  dgd      }t        j                  ||       y )NTr   F)TFTF)AAABBBCCCre   )r   rF   r    r   rz   r   rH   rJ   )df_maskrg   rh   s      r(   test_where_bool_comparisonrj  ]  s    
E7Q;7QRG ]]7e+,F88RVVHqL77Q;FFE26651	
H &(+r*   c                      t        t        d      t        j                  t        d      gddt        j
                  gd      } | j                  | j                         d       }t        j                  ||        y )N2013010120130103r6   r   r2  )
r   r   r   rT  r    rz   rF   notnullrH   rJ   )rh   rg   s     r(   test_where_none_nan_coercero  m  sa    J':1FGQ	
H ^^H,,.5F&(+r*   c                     t        dt        j                  ggt        ddg            } | j                  \  }}t        ddgg||      }| j                  t              j                  |      }| j                  d      j                  |      }| j                  j                  |j                        j                  }| j                  |      }t        j                  |j                  d      |j                  d             t        j                  |j                  d      |j                  d             t        j                  |j                  d      |j                  d             y )Nr   r   r/  T)r,  r   rD   f8)r   r    rz   r   axesr   r   rF   TrH   rJ   )rg   rD   r   r   r   r   r9   ru   s           r(   &test_where_duplicate_axes_mixed_dtypesrt  y  s     a[M5#s3DEF[[NE7D$<.'GDf##D)Ad!!$'Atvv  ATA!((4.!((4.9!((4.!((4.9!((4.!((4.9r*   c                      t        ddgdt        j                  gd      } | j                         }| j	                  t        j                  |       d       }t        j                  ||       y )Nr   r   r   r   )	r   r    rz   r   rF   r   rn  rH   rJ   )r=   rh   rg   s      r(   test_where_columns_castingrv    sR     
#s1bff+6	7BwwyHXXbjjnd+F(F+r*   as_catTFc                    t        j                  ddd      }|r|j                  d      } | |      }t         j                  j	                  d      }t        j                  g d|j                        j                  }|rd	}nd
}|rt        j                  t        |      5  |j                  ||       d d d        t        j                  t        |      5  |j                  ||       d d d        t        j                  t        |      5  |j                  ||d       d d d        y |j                  t              j                  ||      }|j                  ||      }	t        j                   |	|       |j                  t              j                  ||      }|j                  ||      }	t        j                   |	|       t        j"                  t$        d      5  |j                  ||d       d d d        t        j                   ||       y # 1 sw Y   bxY w# 1 sw Y   9xY w# 1 sw Y   y xY w# 1 sw Y   FxY w)N
2016-01-01r   D)r   freqr)  m8[ns]r  ndminzUCannot setitem on a Categorical with a new category \(NaT\), set the categories firstzvalue should be a 'Period'rW   Tr   r?  )r   period_ranger   rT  to_numpyr    r   ndimrs  rZ   r[   r\   rF   r   r   rH   r  r   r   )
r  rw  r$   idxr@  tdnatr   r^   rh   rg   s
             r(   test_where_period_invalid_nar    s    //,
<Cjj$
#
C FFOOH%E88'sxx8::D' 	
 +]]9C0 	#IIdE"	# ]]9C0 	"HHT5!	" ]]9C0 	0HHT5$H/	0 	0 ::f%++D%84'
)::f%**47$&
)''!H
 	0 HHT5$H/	0 	X&1	# 	#	" 	"	0 	0	0 	0s0   $HH$H1#H=H!$H.1H:=Ic                    t        j                  g d|      } | |      }t        j                  g d|j                        j                  }d}t
        j                  t         j                  gz   D ]n  }t        j                  t        |      5  |j                  ||       d d d        t        j                  t        |      5  |j                  ||       d d d        p y # 1 sw Y   BxY w# 1 sw Y   xY w)Nr   re   r  r}  z1Invalid value '.*' for dtype (U?Int|Float)\d{1,2}rW   )r   r   r    r  rs  rH   NP_NAT_OBJECTSrT  rZ   r[   r\   rF   r   )r  any_numeric_ea_dtyper7  r@  r   r^   nulls          r(   test_where_nullable_invalid_nar    s    
((9$8
9C
#
C88'sxx8::D
>C!!RVVH, !]]9C0 	"IIdD!	" ]]9C0 	!HHT4 	! 	!!	" 	"	! 	!s   C%C1%C.	1C:	)r,  c                     t        d| i      }|j                  t        j                  |      d       j	                         }|j                  t        j                  |      d d       t        j                  ||       y )Nr   Tr   )r   rF   r   rn  r   rH   r  )r,  r=   df_copys      r(   test_where_inplace_castingr    s[     
C;	Bhhrzz"~t,113GHHRZZ^T4H0OOB r*   c                  t   t        g d      } t        j                  g d      }t        j                  d      }d}t        j                  t        |      5  | j                  ||      }d d d        t        |||gd      }t        j                  |       t        j                  d	d
      5  t        j                  d |      5  | j                  ||      }d d d        d d d        |j                  t              }t        j                  |       y # 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   MxY w)Nr   rC  r6   )daysr   rW   r|  re   zfuture.no_silent_downcastingT)r	   r    r   r   	TimedeltarH   r   r   rF   rI   option_contextr   r   )r   r   tdr^   r<  rh   rH  	expected2s           r(   test_where_downcast_to_td64r    s    

C88)*D	1	B
HC		#	#M	= "iib!"r2rl(3H3)			94	@ '''C8 	'99T2&D	'' 'I4+" "	' 	'' 's0   D/D.D"D.D"D+	'D..D7c                    | j                  ||      }t        j                  ||       | j                  | |      }t        j                  ||       | j	                         } | j                  | |d       |j                         s+|j	                         }|d   j                  t              |d<   t        j                  | |       y )NTr   r   )rF   rH   rJ   r   r   rL   r   r   )r=   r   rs   rh   r<  s        r(   _check_where_equivalencesr    s     ((4
C#x(
''4%
C#x(
 
BGGTE5$G'88:==? ,,V4"h'r*   c                     t        dd      } | j                  j                  dd      }||d   z
  }t        |ddg	      }t	        j
                  |j                               j                         }d
|d d df<   t        |d d df   |d d df   d      }t        j                  t        d      5  t        ||||       d d d        d
|d<   t        t	        j                  |d   |d   |d   gt              |d d df   d      }t        j                  t        d      5  t        ||||       d d d        d
|d d  |}t        ||||       y # 1 sw Y   xY w# 1 sw Y   +xY w)Nry  r   r   r   r   )r   r   r   r   r   Tr6   r   r2  r?  rW   )r6   r   )r   r   re   )r   _datar$  r   r    asarrayr   r   rH   r   r   r  r   r   )dtidtars   r=   r   rh   s         r(   test_where_dt64_2dr    sd   
\1
-C
))

Aq
!C#d)OE	3c
	+B::bggi %%'DDAJ uQT{QT;<H		#	#D
 = 	""dE8<= DJ5;D	5;?vNQT	
H 
	#	#D
 = 	""dE8<= DGHb$x8+= == =s   2E#EEE%c                  >   t        t        dt        j                  dgd      g dd      } | j	                  d       }t        t        t        j                  t        j                  dgd      t
        j                  ddgd      }t        j                  ||       y )	Nr6   r   Int64re   r   r   c                 *    | j                  d d      S )Nc                     | dkD  S r  r7   r   s    r(   r   zMtest_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>.<locals>.<lambda>.  s
    !a% r*   r6   r   )r   r  s    r(   r   z;test_where_producing_ea_cond_for_np_dtype.<locals>.<lambda>.  s    a @ r*   r   )	r   r	   r   r3  rF   r    rz   rH   rJ   )r=   rg   rh   s      r(   )test_where_producing_ea_cond_for_np_dtyper  +  su    	BEE1W=IN	OBXX@AFbeeRUUA&g6bffa^LH &(+r*   replacementgMbP?snakei  r   r   c                 \   t        g dt        j                  dd gg      }|r=| dvr9|j                  j	                  t
        j                  j                  d             |j                  t        j                  |      |       }t        g d| d| gg      }t        j                  ||       y )N)r   g(,*0Enineg?)Nr  z'Can't set non-string into string column)reason)r   r    rz   node
add_markerrZ   rP  xfailrF   r   rn  rH   rJ   )r  using_infer_stringr$   r=   rg   rh   s         r(   test_where_int_overflowr  5  s    
 
'"&&#t)<=	>Bk@KK%NO	
 XXbjjnk2F-S+/NOPH&(+r*   c                      t        ddgddgd      } t        ddgddgd      }| j                  |d       t        d	t        j                  gt        j                  dgd      }t	        j
                  | |       y )
Nr   r   r   r   r   TFr   r6   )r   rF   r    rz   rH   rJ   )r=   rM   rh   s      r(   test_where_inplace_no_otherr  E  so    	#s3*5	6BD%=t}=>DHHT4H 266{"&&#?@H"h'r*   )-r   
hypothesisr   numpyr    rZ   pandas.core.dtypes.commonr   pandasr   r   r   r   r	   r
   r   r   r   pandas._testing_testingrH   pandas._testing._hypothesisr   fixturer)   r>   r@   rX  r\  rd  rj  ro  rt  rv  rP  rR  r  r  r  r  r  r  r  r  r  r7   r*   r(   <module>r     s$       / 	 	 	  ; NO
 P
Vr; r;j)&"&2, 	,:, D%=1-' 2-'`!$  ! !!,((*!9H, E4$q!0DE
,
,(r*   