
    .i 0                        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ej<                  eeg      d                              Z*d! Z+d" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2y))    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       e/var/www/app/trading-bot/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        j                  |       j                  t        j                  |      j                  cxk(  rdk(  rBn n?|||<   t        |t        t        dd            z   |      }t        j                  ||       y t        j                  t        d      5  |||<   d d d        y # 1 sw Y   y xY w)Nr
   r   )      @      @      @      @g      @r   fInvalid valuematch)r   r   r   r   kindr   r   r   r   pytestraises	TypeError)r   expected_dtyper   valuesr   r   s         r   test_where_unsafe_upcastr1   (   s     	ryy}E*A&Fq5D	xxrxx7<<CC$&4a#55^L
q(+]]9O< 	AdG	 	 	s   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        | j                  d      } || |<   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.   astyper   r   r   
ValueErrorwherenanfloatr   )r   r0   r   r   msgresults         r   test_where_unsaferE   A   s   ryy}G,A!Fq5Dd58nv-Y?H	y	8 $	AAdG 	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_normalr@   dropnar   r   absshaper=   reindexiloc)r   condrsrs2s2r   s         r   
test_whererS   z   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   rG   rH   rI   r,   r-   r?   r@   r0   r   r   )r   rO   rC   r   s       r   test_where_errorrV      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   rA   r@   r   r   )rW   r   rO   r   rD   s        r   test_where_array_likerZ      sI     	yADrvvq!n%HWWU4[!F68,r   rO   )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)NrY   z(Boolean array expected for the conditionr)   rU   T)r   r,   r-   r.   r@   r?   )rO   r   rC   s      r   test_where_invalid_inputr^      s}     	yA
4C	y	, 	 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)NrU   rY   Tr)   r7   )FTFTr   )
r   r,   r-   r?   r@   r   rA   r   r   array)rC   r   rO   r   outs        r   test_where_ndframe_alignrb      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'   )arl   cr   r7   r'   z	list-liker
   rl   rr   )r   r   objectr,   r-   r?   r   r   r   r>   r   r3   )rC   r   r   s      r   test_where_setitem_invalidrt      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                  ||       }t        j                  | t              }t	        t        |      D cg c]  \  }}|r|n||    c}}      }t	        |      }	||	|<   t        j                  |	|       t	        |      }	|	j                  |  ||g            }
t        j                  |
|       t	        |      }	|	j                  | ||g            }
t        j                  |
|       y c c}}w Nr   )
r   resizer   rB   r   	enumerater   r   r@   r   )ru   r   rv   rw   	selectionr    iuse_itemr   r   rD   s              r   test_broadcastr   !  s     		$%I99T'D :CI:NO;1htAw	&OH 	tAAiL1h'tAWWiZdV-F68,tAVVIsD6{+F68, 	Ps   C<
c                  
   t        t        j                  j                  d      j	                  d            } | dkD  }| j                         }|j                  |d      }||u sJ t        j                  |j                         | |          t        j                  || j                  |             | j                         }|j                  ||  d      }||u sJ t        j                  || j                  ||               y )Nr   r   r   T)inplace)
r   r   rG   rH   rI   copyr@   r   r   rJ   )r   rO   rP   rD   s       r   test_where_inplacer   C  s    ryy$$Q'77:;Aq5D	
BXXdDX)FR<<299;$02qwwt}-	
BXXdQBX-FR<<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concatr@   r   rA   r   r   )s1rR   combrD   r   s        r   test_where_dupsr   T  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 )NrY   r7   Xr   r   rs   )r   YZ)r   r@   r   
isinstancestrr   r   r`   )r   ws     r   test_where_numeric_with_stringr   i  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   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   r@   r   NaTr   r   )
timestampstserrP   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SparseArrayr@   r   r   )r   rD   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 ry   )r   rB   r@   r   r   )r   rD   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   rA   r@   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   r`   r@   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   )3numpyr   r,   pandas.core.dtypes.commonr   pandasr   r   r   r   r   pandas._testing_testingr   r   r!   markparametrizeint8r5   int16int32r3   float32r1   rE   rS   rV   r   tupler`   rZ   r   r^   rb   rt   r   rA   finforB   maxminr   r   r   r   r   r   r   r   r   re   r   r   <module>r      sB     0   
(( 	"**	2::	2::	2::	RZZ 	RZZ 

6-r):2 4&"AB- C- 
y!	<	 "&&)L*AB	

*.6(r q!-
/$H 
S"&&("((5/--xrxx/B/BC 4 78- 9 .-42"+*4)-(1r   