
    Owg4                     >   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 Zd Zej$                  j'                  dej(                  ej*                  fej,                  ej*                  fej.                  ej*                  fej0                  ej*                  fej2                  ej2                  fej*                  ej*                  fg      d        Zd	 Zd
 Zd Zej$                  j'                  deeej@                  e	g      d        Z!ej$                  j'                  dg d e	g d      g d e
d      ejD                   e
d      gg      d        Z#d Z$ej$                  jK                   e       d      d        Z&ej$                  j'                  d e'dd            ej$                  j'                  dg dddgdgg      ej$                  j'                  d d!ejP                   ejR                  e*      jV                   ejR                  e*      jX                  g      ej$                  j'                  d"d# d$ d% g      d&                             Z-d' Z.d( Z/d) Z0ej$                  j'                  d*d+d,g      d-        Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6y)3    N)using_pyarrow_string_dtype)
is_integer)Series	Timestamp
date_rangeisnac           	         t        t        j                  d      |       }|dk  }t        dd      ||<   t        t	        t        dd            t	        t        dd            z   |       }t        j                  ||       y N
   dtype         r   nparangerangelisttmassert_series_equal)any_signed_int_numpy_dtypesmaskexpecteds       ^/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/series/indexing/test_where.pytest_where_unsafe_intr      sl    ryy}$>?Aq5DAqkAdGU1a[Dq"..(H
 1h'    c                    t        t        j                  d      |       }|dk  }t        dd      ||<   t	        t        dd            t	        t        dd            z   }t        ||       }t        j                  ||       y r
   r   )float_numpy_dtyper   r   datar   s        r   test_where_unsafe_floatr"      sl    ryy}$56Aq5DAqkAdGatE!RL11Dd"34H1h'r   zdtype,expected_dtypec           	         t        t        j                  d      |       }g d}|dk  }t        |t        t	        dd            z   |      }t        j
                  |       j                  t        j
                  |      j                  cxk(  rdk(  rn nd nt        }t        j                  |d      5  |||<   d d d        t        j                  ||       y # 1 sw Y    xY w)Nr   r   )      @      @      @      @g      @r   fincompatible dtypematch)r   r   r   r   r   r   kindFutureWarningr   assert_produces_warningr   )r   expected_dtyper   valuesr   r   warns          r   test_where_unsafe_upcastr2   *   s     	ryy}E*A&Fq5DftE!RL11HH 88E?288N#;#@#@GCG 	 	
 
	#	#D0D	E $1h' s   4CC"c            	         t        t        j                  d      d      } g d}| dkD  }t        t        t	        d            |z   d      }t        j                  t        d	      5  || |<   d d d        t        j                  | |       t        t        j                  d      d      } | dk  }t	        d
d      | |<   t        t        t	        d
d            t        t	        dd            z   d      }t        j                  | |       | j                  |j                  k(  sJ t        t        j                  d      d      } | dkD  }dgdz  | |<   t        g ddgdz  z   d      }t        j                  | |       t        t        j                  d            } | dkD  }d}t        j                  t        |	      5  g d| |<   d d d        t        j                  t        |	      5  dgdz  | |<   d d d        t        g d      } | j                  | d
kD  t        j                        }t        t        j                  t        j                  ddg      }t        j                  ||       t        t	        d            j                  t               } d | d<   | d   }t#        |      sJ t        t	        d            j                  t               } d | | dkD  <   | t#        |          }t        t        j                  dg      }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   CxY w)Nr   int64r   )r$   r%   r&   r'   r      float64r)   r*   r   r   r      )r      r      r7   r   Kcannot set using a list-like indexer with a different length than the value)r   r7   r9   r   r8   )r8   r   r9   r7   r9      	   index)r   r   r   r   r   r   r.   r-   r   r   pytestraises
ValueErrorwherenanastypefloatr   )r   r0   r   r   msgresults         r   test_where_unsaferH   E   s   ryy}G,A!Fq5Dd58nv-Y?H		#	#M9M	N $1h' 	ryy}G,Aq5DAqkAdGd5A;'$uQ|*<<GLH1h'77hnn$$$ryy}G,Aq5DcAgAdG(A372'BH1h'ryy}Aq5D
WC	z	- "!$" 
z	- #'$ 	|AWWQUBFF#Frvvrvvq!,-H68, 	uRy  'AAaDqTF<<uRy  'AAa!eHtAwZFbffQC(H68,[ ," " s$   'L L)+
L6L&)L36M c                  z   t        t        j                  j                  d      j	                  d            } | dkD  }| j                  |      j                         }| |   }t        j                  ||       | j                  ||        }t        j                  || j                                | j                  |      }| j                  |j                  k(  sJ || usJ t        g d| j                        }| j                          }||   j                  |j                  d d       j                  |j                        }|j                  |d d       }t        j                  ||       |j                         }|d   |j                  d<   |j                  |d d |       }t        j                  ||       y )Nr   r   r   )TFFTFr=   r9   )r   r   randomdefault_rngstandard_normalrB   dropnar   r   absshaper>   reindexiloc)r   condrsrs2s2r   s         r   
test_whererV   }   sk   ryy$$Q'77:;Aq5D	
			B
D'C2s#	
r	B2quuw'	
B77bhhQ;; 3177CD557B$x!-55bhh?H	$r(	B2x(vvxH!uHMM!	$r(RC	 B2x(r   c                     t        t        j                  j                  d      j	                  d            } | dkD  }d}t        j                  t        |      5  | j                  d       d d d        t        j                  t        |      5  | j                  |d d j                  |         d d d        t        ddg      } ddg| dd	g<   t        ddg      }t        j                  | |       d
}t        j                  t        |      5  g d| dd	g<   d d d        t        j                  t        |      5  g | dd	g<   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr   r   r   ,Array conditional must be same shape as selfr*   r8   r9   TFr:   )r   r   r9   )r   r   rJ   rK   rL   r?   r@   rA   rB   r0   r   r   )r   rR   rF   r   s       r   test_where_errorrY      sN   ryy$$Q'77:;Aq5D
8C	z	- 	
	z	- %	Ra!$% 	1vA1vAtUmq!f~H1h' XC	z	- %$4-% 
z	- 4- ! % %% % s0   E!E
E$;E0EE!$E-0E9klassc                     t        g d      }g d}t        t        j                  ddg      }|j                   | |            }t	        j
                  ||       y )Nr8   r   r9   )FTTr   r9   )r   r   rC   rB   r   r   )rZ   r   rR   r   rG   s        r   test_where_array_liker]      sI     	yADrvvq!n%HWWU4[!F68,r   rR   )r8   r   r8   )r   r   r   )TrueFalser^   z
2017-01-01z
2017-01-02c                 ,   t        g d      }d}t        j                  t        |      5  |j	                  |        d d d        d}t        j                  t        |      5  |j	                  dg       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nr\   z(Boolean array expected for the conditionr*   rX   T)r   r?   r@   rA   rB   )rR   r   rF   s      r   test_where_invalid_inputra      s}     	yA
4C	z	- 	 9C	z	- 	 	  s   A>"B
>B
Bc                     d} t        g d      }dg}t        j                  t        |       5  |j	                  |       d d d        t        dt
        j                  t
        j                  g      }|j	                  t        |            }t        j                  ||       t        j                  g d      }t        j                  t        |       5  |j	                  |       d d d        t        t
        j                  dt
        j                  g      }|j	                  t        |            }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   qxY w)NrX   r\   Tr*   r8   )FTFTr   )
r   r?   r@   rA   rB   r   rC   r   r   array)rF   r   rR   r   outs        r   test_where_ndframe_alignre      s    
8CyA6D	z	- 	 q"&&"&&)*H
''&,
C3)88./D	z	- 	 rvvq"&&)*H
''&,
C3)  s   E	E	EEzcan't set ints into string)reasonc                  n   d } t        t        d            }t        j                  t         | d            5  t        t        d            |dd d d d        t        t        d            |dd t        g d      }t        j                  |j                  t        j                        |       t        t        d	            }t        j                  t         | d            5  t        t        d            |dd
d<   d d d        t        t        d	            }t        t        d            |dd
d<   t        g d      }t        j                  ||       t        t        d	            }t        j                  t         | d            5  t        t        d            |d d d d d        t        t        d            |dd t        g d      }t        j                  ||       t        t        d            }t        j                  t         | d            5  t        t        d            |g d<   d d d        t        t        d            }t        j                  t         | d            5  t        t        d            |g d<   d d d        t        t        d            }t        t        d            |d<   t        t        t        d            ddg      }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                     d|  dS )Nzcannot set using a z/ indexer with a different length than the value xs    r   <lambda>z,test_where_setitem_invalid.<locals>.<lambda>   s    's +* * r   abcslicer*      r   r9   )r   r8   r   abcdefr7   r   )r   br8   der(   )arq   cr   r8   r(   z	list-liker   rq   rw   )r   r   r?   r@   rA   r   r   r   rD   r   r4   )rF   r   r   s      r   test_where_setitem_invalidrx      sy   	* 
 	tE{A	zW	6 !eBi!A! %(^AaFi H188BHH-x8 	tH~A	zW	6 #b	?!Aa%# 	tH~AE!H~Aa!eH01H1h' 	tH~A	zW	6 !eBi#2! E!H~AbH01H1h' 	tE{A	z[)9	: 'E"I)' 	tE{A	z[)9	: &E!H~)& 	tE{Ab	?AaDtE"IS12H1h'W! !# #! !' '
& &s;   K8%LLL4L+8LLLL(+L4sizer   r5   r   )TFFFFTFitemg       @boxc                 .    t        j                  | g      S N)r   rc   rj   s    r   rl   rl   /  s    bhhsm r   c                     | gS r}   ri   rj   s    r   rl   rl   /  s    s r   c                     | fS r}   ri   rj   s    r   rl   rl   /  s    qd r   c                     t        j                  ||       }t        j                  | t              }t	        t        |      D cg c]  \  }}|r|n||    c}}      }t	        |      }	||	|<   t        j                  |	|       t	        |      }	|	j                  |  ||            }
t        j                  |
|       t	        |      }	|	j                  | ||            }
t        j                  |
|       y c c}}w Nr   )
r   resizer   rE   r   	enumerater   r   rB   r   )ry   r   rz   r{   	selectionr!   iuse_itemr   r   rG   s              r   test_broadcastr   %  s     		$%I99T'D :CI:NO;1htAw	&OH 	tAAiL1h'tAWWiZT+F68,tAVVIs4y)F68, 	Ps   C:
c                     t        t        j                  j                  d      j	                  d            } | dkD  }| j                         }|j                  |d       t        j                  |j                         | |          t        j                  || j                  |             | j                         }|j                  ||  d       t        j                  || j                  ||               y )Nr   r   r   T)inplace)
r   r   rJ   rK   rL   copyrB   r   r   rM   )r   rR   rS   s      r   test_where_inplacer   K  s    ryy$$Q'77:;Aq5D	
BHHT4H 299;$02qwwt}-	
BHHTA2tH$2qwwtaR01r   c                  (   t        t        t        d                  } t        t        t        d                  }t        j                  | |g      }|j                  |dk        }t        ddt        j                  ddt        j                  gg d      }t        j                  ||       d||dk  <   t        g dg d      }t        j                  ||       ||dk  xx   d	z  cc<   t        g d
g d      }t        j                  ||       y )Nr9   r   r   r8   )r   r8   r   r   r8   r   r=   r   )r   r8   r   r   r8   r   r   )r      r   r   r   r   )
r   r   r   pdconcatrB   r   rC   r   r   )s1rU   combrG   r   s        r   test_where_dupsr   Z  s     
U1X	B	U1X	B99b"XDZZq!Fq!RVVQ2662:LMH68, DN(0BCH4*NbN*2DEH4*r   c                     t        g d      } | j                  | dkD  d      }t        |d         rJ t        |d         sJ t        |d         sJ t        |d   t              sJ |j
                  dk(  sJ | j                  | dkD  g d      }t        |d         rJ t        |d         sJ t        |d         sJ t        |d   t              sJ |j
                  dk(  sJ | j                  | dkD  t        j                  g d            }t        |d         rJ t        |d         sJ t        |d         sJ t        |d   t              sJ |j
                  dk(  sJ y )Nr\   r8   Xr   r   object)r   YZ)r   rB   r   
isinstancestrr   r   rc   )r   ws     r   test_where_numeric_with_stringr   o  se   yA	AsA!A$adadadC   77h	A'A!A$adadadC   77h	Arxx01A!A$adadadC   77hr   r   ztimedelta64[ns]zdatetime64[ns]c                    t        ddg|       }t        ddg      }t        j                  ddg      }d}t        j                  t
        |      5  |j                  |ddg      }d d d        t        j                  |       t        j                  t
        |      5  |j                  |d      }d d d        t        j                  ||       t        j                  t
        |      5  |j                  |d      }d d d        t        j                  ||       t        j                  t
        |      5  |j                  |ddg      }d d d        t        j                  ||       |j                  |dt        j                  g      }t        dt        j                  gd	      }t        j                  ||       y # 1 sw Y   \xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)
Nr8   r   r   r   Fz<Downcasting behavior in Series and DataFrame methods 'where'r*   g      $@r   )	r   r   rc   r   r.   r-   rB   r   rC   )r   serr   r   rF   rS   s         r   test_where_datetimelike_coercer     s   
!Qu
%Cr2hH88UEN#D
HC		#	#M	= 'YYtb"X&'2x(		#	#M	= !YYtR !2x(		#	#M	= #YYtT"#2x(		#	#M	= +YYtdD\*+2x(	4$	(Br266l(3H2x(%' '! !# #+ +s0   G G+G7G& G
GG#&G/c                     ddg} t        | D cg c]  }t        |       c}d      }|j                  t        ddg            }t        t        j                  |d   gd      }t        j                  ||       y c c}w )Nz2016-12-31 12:00:04+00:00z 2016-12-31 12:00:04.010000+00:00zdatetime64[ns, UTC]r   FTr8   )r   r   rB   r   NaTr   r   )
timestampstr   rS   r   s        r   test_where_datetimetzr     so    -/QRJ

31)A,3;P
QC	65$-(	)Brvvs1v&.CDH2x( 4s   A<c                     t        t        j                  j                  ddg            } | j	                  | dk\  d      }t        t        j                  j                  ddg            }t        j                  ||       y )Nr8   r   r   )r   r   arraysSparseArrayrB   r   r   )r   rG   r   s      r   test_where_sparser     s`    
&&1v.
/CYYsax#Fbii++QF34H68,r   c                  t    t        g t              } | j                  g       }t        j                  ||        y r   )r   rE   rB   r   r   )r   rG   s     r   =test_where_empty_series_and_empty_cond_having_non_bool_dtypesr     s+    
5
!CYYr]F63'r   c           	           | t        j                  ddddt        j                  gg d      d      } | g dd      }|j	                  |dk7        }t        j                  ||       y )	NAB)r   r   C)
categoriescategoryr   )r   r   r   r   r   r   )r   Categoricalr   rC   rB   r   assert_equal)frame_or_seriesexpdfress       r   test_where_categoricalr     s[    

S#sBFF3PC 
2*	EB
((29
COOCr   c                 ,   | }t        dd|      j                  d       }t        j                  |d   |d   t        j                  g      }t        j
                  |d   t        j                  |d   g      }t        j                  g d      }|j                  ||      }t        j                  ||       |j                  j                  ||      }t        j                  ||j                         t        |      j                  ||      }t        j                  |t        |             t        j                   |      j                  |d d d f   t        j                   |            }t        j"                  |t        j                   |             y )Nz
2001-01-01r9   )periodstzr   r8   r   )TTF)r   
_with_freqr   DatetimeIndexr   r   r   rc   rB   r   assert_index_equal_data_whereassert_datetime_array_equalr   r   	DataFrameassert_frame_equal)tz_naive_fixturer   drlvalsrvalsr   r   s          r   #test_where_datetimelike_categoricalr     s4   	B	L!	3	>	>t	DBbeRUBFF34ENNBqE2662a512E88'(D ++dE
"C#r" ++

T5
)C""31 -

dE
*C3r
+ ,,u

#
#DDM2<<3F
GC#r||B/0r   )7numpyr   r?   pandas._configr   pandas.core.dtypes.commonr   pandasr   r   r   r   r   pandas._testing_testingr   r   r"   markparametrizeint8r6   int16int32r4   float32r2   rH   rV   rY   r   tuplerc   r]   r   ra   re   xfailrx   r   rC   finforE   maxminr   r   r   r   r   r   r   r   r   r   ri   r   r   <module>r      s     5 0   
(( 	"**	2::	2::	2::	RZZ 	RZZ 
(
( 5-p):2 4&"AB- C- 
y!	<	 "&&)L*AB	

*. -/8TU6( V6(r q!-
/$H 
S"&&("((5/--xrxx/B/BC
 	#]NC- .-42+*4 #46F"GH) I)6)-(1r   