
    OhV4                        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
 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j,                  ej&                  fej.                  ej.                  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j@                   ed      gg      d        Z!d Z"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jJ                   ejL                  e'      jP                   ejL                  e'      jR                  g      ej                   j#                  dd  d! d" g      d#                             Z*d$ Z+d% Z,d& Z-ej                   j#                  d'd(d)g      d*        Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3y)0    N)
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       o/var/www/html/diagnosisapp-backend/venv/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_upcastr1   (   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      r6   r   Kcannot set using a list-like indexer with a different length than the value)r   r6   r8   r   r7   )r7   r   r8   r6   r8      	   index)r   r   r   r   r   r   r-   r,   r   r   pytestraises
ValueErrorwherenanastypefloatr   )r   r/   r   r   msgresults         r   test_where_unsaferG   C   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<   r8   )r   r   randomdefault_rngstandard_normalrA   dropnar   r   absshaper=   reindexiloc)r   condrsrs2s2r   s         r   
test_whererU   {   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)   r7   r8   TFr9   )r   r   r8   )r   r   rI   rJ   rK   r>   r?   r@   rA   r/   r   r   )r   rQ   rE   r   s       r   test_where_errorrX      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r7   r   r8   )FTTr   r8   )r   r   rB   rA   r   r   )rY   r   rQ   r   rF   s        r   test_where_array_liker\      sI     	yADrvvq!n%HWWU4[!F68,r   rQ   )r7   r   r7   )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)   rW   T)r   r>   r?   r@   rA   )rQ   r   rE   s      r   test_where_invalid_inputr`      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)NrW   r[   Tr)   r7   )FTFTr   )
r   r>   r?   r@   rA   r   rB   r   r   array)rE   r   rQ   r   outs        r   test_where_ndframe_alignrd      s    
8CyA6D	z	- 	 q"&&"&&)*H
''&,
C3)88./D	z	- 	 rvvq"&&)*H
''&,
C3)  s   E	E	EEc                     d } t        t        d      t              }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              }t        j                  t
         | d            5  t        t        d            |ddd<   d d d        t        t        d
      t              }t        t        d            |ddd<   t        g d      }t        j                  ||       t        t        d
      t              }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              }t        j                  t
         | d            5  t        t        d            |g d	<   d d d        t        t        d      t              }t        j                  t
         | d            5  t        t        d            |g d	<   d d d        t        t        d      t              }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   x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   abcr   slicer)      r   r8   )r   r7   r   abcdefr6   r   )r   br7   der'   )aro   cr   r7   r'   z	list-liker
   ro   ru   )r   r   objectr>   r?   r@   r   r   r   rC   r   r3   )rE   r   r   s      r   test_where_setitem_invalidrw      s   
	* 
 	tE{&)A	zW	6 !eBi!A! %(^AaFi H188BHH-x8 	tH~V,A	zW	6 #b	?!Aa%# 	tH~V,AE!H~Aa!eH01H1h' 	tH~V,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;   L"1L/&L<;M	M"L,/L9<M	MMsizer   r4   r   )TFFFFTFitemg       @boxc                 .    t        j                  | g      S N)r   rb   rh   s    r   rj   rj   ,  s    bhhsm r   c                     | gS r|   rg   rh   s    r   rj   rj   ,  s    s r   c                     | fS r|   rg   rh   s    r   rj   rj   ,  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   rD   r   	enumerater   r   rA   r   )rx   r   ry   rz   	selectionr    iuse_itemr   r   rF   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   rI   rJ   rK   copyrA   r   r   rL   )r   rQ   rR   s      r   test_where_inplacer   H  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 )Nr8   r   r   r7   )r   r7   r   r   r7   r   r<   r   )r   r7   r   r   r7   r   r
   )r      r   r   r   r   )
r   r   r   pdconcatrA   r   rB   r   r   )s1rT   combrF   r   s        r   test_where_dupsr   W  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[   r7   Xr   r   rv   )r   YZ)r   rA   r   
isinstancestrr   r   rb   )r   ws     r   test_where_numeric_with_stringr   l  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)
Nr7   r   r   r
   Fz<Downcasting behavior in Series and DataFrame methods 'where'r)   g      $@rv   )	r   r   rb   r   r-   r,   rA   r   rB   )r   serr   r   rE   rR   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   FTr7   )r   r   rA   r   NaTr   r   )
timestampstr   rR   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 )Nr7   r   r   )r   r   arraysSparseArrayrA   r   r   )r   rF   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   rD   rA   r   r   )r   rF   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   rB   rA   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-01r8   )periodstzr   r7   r   )TTF)r   
_with_freqr   DatetimeIndexr   r   r   rb   rA   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   )4numpyr   r>   pandas.core.dtypes.commonr   pandasr   r   r   r   r   pandas._testing_testingr   r   r!   markparametrizeint8r5   int16int32r3   float32r1   rG   rU   rX   r   tuplerb   r\   r   r`   rd   rw   r   rB   finforD   maxminr   r   r   r   r   r   r   r   r   r   rg   r   r   <module>r      so     0   
(( 	"**	2::	2::	2::	RZZ 	RZZ 
(
( 5-p):2 4&"AB- C- 
y!	<	 "&&)L*AB	

*.6(r q!-
/$H 
S"&&("((5/--xrxx/B/BC
 	#]NC- .-42+*4 #46F"GH) I)6)-(1r   