
    .iH                         d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d Z G d d      Z G d d      Zd Zd	 Zd
 Zd Zy)    N)	DataFrame
MultiIndexSeries
date_rangeisnanotnac                     | |k(  sJ y N )abs     k/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyassert_equalr      s    6M6    c                       e Zd Zedf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      d        Zd Zd Zd Zd Zd Zy)TestMultiIndexSetItemNc                 Z    ||j                   |<   |j                   |   }||} |||       y r
   )loc)selftargetindexersvalue
compare_fnexpectedresults          r   checkzTestMultiIndexSetItem.check   s3    $

8H%H68$r   c                    g d}t        j                  t        j                  dd      t        j                  dd      gddg      }d\  }}t	        t        j
                  ||	      }| j                  |||fd
fd       t	        d||	      }| j                  |||fd
fd       t	        ||	      }| j                  |||fd
fd       t	        d||	      }| j                  |||fd
ft        j                  d      d       y )N)Awlr   xXdprofitr   d   P   timefirmnames)r      columnsindexr"   )r   r   r   i   r+      )r   r   r   r   )r   from_productnparanger   nanr   array)r   colsr.   tndfs         r   test_setitem_multiindexz-TestMultiIndexSetItem.test_setitem_multiindex   s   <''YYq#		!R 01&&9I
 1FF

 	

"A}A
>tT7

"A}A
>t51

"A}A
> tT7

!fc]((1+	 	 	
r   c                    t        t        j                  d      j                  dd      dj	                  d      t
              }d|d<   |d   d	z  d
k(  }ddg}|d   |j                  ||f<   t        dg dddg      }t        j                  |j                  ||f   |       | j                  |||f|d   t        j                  |       y )N      z	A,B,C,D,E,r-   dtypec   Fr   r+   r   BCg     X@)r   r+      r.   r-   r   r   r   r   r   )
r   r2   r3   reshapesplitfloatr   tmassert_frame_equalr   )r   r9   row_selectioncol_selectionoutputs        r   test_setitem_multiindex2z.TestMultiIndexSetItem.test_setitem_multiindex2:   s    IIbM!!!Q'1B1B31Gu
 33!q(c
/1#w}m+,4y3*E
bff]M%ABFK

#]3S',, 	 	
r   c           	         t        j                  g dt        ddd      g      }t        j                  ddgt        dd	d      g      }t        t        j
                  j                  d
      j                  d      ||      }t        j                  ddgt        ddd      g      }t        j                  ddgt        dd	d      g      }t        t        j
                  j                  d
      j                  d      ||      }| j                  |||f|t        j                         t        t        j
                  j                  d
      j                  d      ||      }| j                  ||t        d d d       f|t        j                         |j                         }| j                  ||j                  |j                  f|t        j                  |       y )Nr   rC   rD   z
2015-01-01z
2015-04-01MS)freqfoobarz
2016-01-01z
2016-02-01r+   )   rE   rF   r   z
2015-02-01)r+   r+   )r   r   r   r   )r+   rE   rG   )r   r1   r   r   r2   randomdefault_rngfrom_arraysr   rK   rL   slicecopyr.   r-   )r   idxr6   r9   subidxsubcolsvalsr\   s           r   test_setitem_multiindex3z.TestMultiIndexSetItem.test_setitem_multiindex3M   s   %%j|$OP
 &&U^ZlNO
 II!!!$++G4C
 ''3ZL,TJK
 ((U^ZlNO
 II!!!$++F367
 	

g&,,	 	 	
 II!!!$++F364
 	

eD$56,,	 	 	
 wwy

hh

+,, 	 	
r   c                 p   t        j                  g d      t        j                  g d      t        j                  ddd      g}t        t         j                  j                  d      j                  d      |g d	      j                         }|j                  d
g   dz  }|j                         }|j                  d
gxx   dz  cc<   t        j                  |j                  d
g   |       d}t        j                  t        |      5  |j                  d
xx   dz  cc<   d d d        y # 1 sw Y   y xY w)N)rV   rV   bazquxrd   rV   )onetwore   re   rf   re   r      r/   r+   )rg   r0   rR   rF   rV   zAcannot align on a multi-index with out specifying the join levelsmatch)r2   r5   r3   r   rX   rY   standard_normal
sort_indexr   r\   rK   rL   pytestraises	TypeError)r   arraysdf_origr   r9   msgs         r   test_multiindex_setitemz-TestMultiIndexSetItem.test_multiindex_setitem~   s     HH?@HH?@IIaA
 II!!!$44V<#
 *,	 	 ;;w'!+\\^
w1
bffeWox8 R]]9C0 	FF5MQM	 	 	s   D,,D5c           
      *   t        j                  ddddddddi      }t        j                  |j                  g d	      |_        |j                         }|j                  g d
xx   dz  cc<   t        j                  }|j                         }|j                  |d d d d df   d d fxx   dz  cc<   t        j                  ||       |j                         }|j                  |d d d d df   dfxx   dz  cc<   t        j                  ||       y )Npricer+   rE   r/   r=   r   ))DECoalStock)ru   Gasrw   )ru   ElecDemand)FRrx   rw   )r{   SolarSupIm)r{   Windr}   )SitComTyper)   )r   r/   r0   rw   )r   	from_dictr   from_tuplesr.   r\   ilocpd
IndexSlicer   rK   rL   )r   rp   r   r]   r9   s        r   test_multiindex_setitem2z.TestMultiIndexSetItem.test_multiindex_setitem2   s     %%-.,-./,-./-.	
 #..MM!7
 <<>i A% mm\\^
s1a=!1$%*%
b(+\\^
s1a=!7*+q0+
b(+r   c                    t        t        j                  j                  d      j	                  ddd      j                  dd      t        d      g dg d	g
      }t        j                  |d<   t        j                  ddg      }||j                  d<   t        j                  |j                  d   t        |ddgd             y )Nr+   r=   
   	   sizer0   abcrE   rE      r   r   rW   r,   r#                 ?)rE   r#   r   )r.   name)r   r2   rX   rY   integersrH   listr4   r5   r   rK   assert_series_equalr   )r   r9   arrs      r   test_multiindex_assignmentz0TestMultiIndexSetItem.test_multiindex_assignment   s     II!!!$--a!-<DDQJKk*

 &&3hhSz"v
rvvf~vc!Rs/STr   c                 X   t        j                  ddg      }t        t         j                  j	                  d      j                  ddd      j                  dd      t        d	      g d
g dgt         j                        }||j                  d<   t        |ddgdd      }|j                  d   }t        j                  ||       t        j                  t        d      5  |dz   |j                  d<   d d d        |j!                  ddi      }|dz   |j                  d<   d|j                  d<   t        dddgdd      }t        j                  |j                  d   |       d}t        j                  t"        |      5  g d|j                  d<   d d d        t        j                  t"        |      5  dg|j                  d<   d d d        dg|j                  ddgf<   |j                  d   dk(  j%                         sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w)Nr   r   r+   r=   r   r   r   r0   r   r   r   )r-   r.   r@   )rE   cr   r   int64)r.   r   r@   zInvalid valuerh   g      ?float64z@Must have equal len keys and value when setting with an iterable)r   r/   r+   r0   r   rE   )r2   r5   r   rX   rY   r   rH   r   r   r   r   rK   r   rl   rm   rn   astype
ValueErrorall)r   r   r9   expr   rq   s         r   'test_multiindex_assignment_single_dtypez=TestMultiIndexSetItem.test_multiindex_assignment_single_dtype   s    hhSz"II!!!$--a!-<DDQJKk*((	
 vSBcA
vs+ ]]9O< 	' 3YBFF6N	' YYY'(sv vR2wS	B
rvvf~s3 Q]]:S1 	*)BFF6N	* ]]:S1 	!SBFF6N	!
 3q3%xv!#((***-	' 	'	* 	*	! 	!s$   #HH8H HH H)c                 B   d}d}t        t        t        j                  |      j	                               D cg c]  }d|z   	 }}|d d }t        t        j                  j                  d      j                  d||f      t        j                  |      }|j                  |      j                         }|j                  |d d 	      }t        j                  |d
<   |D ]8  \  }}	t        j                  |	j                  d         }
|
|j                  |d
f<   : y c c}w )Nr%   r   r   r=   r+   r   )r@   r-   rE   )levelnew_colr   )mapstrr2   r3   tolistr   rX   rY   r   r   	set_indexrk   groupbyr4   shaper   )r   NUM_ROWSNUM_COLSnum	col_names
index_colsr9   grpr   df2new_valss              r   test_groupby_examplez*TestMultiIndexSetItem.test_groupby_example   s   *-c299X3F3M3M3O*PQ3S3YQ	Qr]
II!!!$--ax6J-K((

 \\*%002jjz"1~j.9  	/ID#yy1.H&.BFF4?#	/ Rs   Dc                    |}|d   }t         j                  |d<   t        |j                  dd       j	                         sJ t        |j                  d d       j	                         sJ t        |j                  dd        j	                         sJ t         j                  |d<   t        |j                  d         sJ t        j                  t        d      5  |d    d d d        y # 1 sw Y   y xY w)	Nr   )  r0   *   A   )r   r0   r   1   49rh   )
r2   r4   r   valuesr   r   r   rl   rm   KeyError)r   /multiindex_year_month_day_dataframe_random_dataymdss       r   test_series_setitemz)TestMultiIndexSetItem.test_series_setitem  s    =HVV'
AHHRO$((***QXXcr]#'')))QXXbc]#'')))+AFF2J]]840 	bE	 	 	s   C**C3c                    |}|j                   j                         }|j                  j                         }||dkD     }|j                  |dkD        }t	        j
                  ||       d||dkD  <   d||dkD  <   t	        j                  |j                  |       d||dk(  <   d||dk(  <   t	        j                  |j                  |       d||d d dk  <   t        j                  |d d |d d dk  d       t	        j                  |j                  |       t        j                  t        d      5  d||dz  <   d d d        y # 1 sw Y   y xY w)Nr   r=   r+   zboolean values onlyrh   )Tr\   r   whererK   rL   assert_almost_equalr2   putmaskrl   rm   rn   )r    multiindex_dataframe_random_dataframer9   r   r   r   s          r   "test_frame_getitem_setitem_booleanz8TestMultiIndexSetItem.test_frame_getitem_setitem_boolean  s-   0WW\\^!BF88BF#
fh/26
vz
ryy&127v{
ryy&1 2cr7Q;


6#2;sa3
ryy&1]]9,AB 	BrAvJ	 	 	s   /	EE
c                 >   ddgg dg}g dg dg}t        ||d dg      }t        dg d	i|
      }|j                  d d df   }t        j                  |d   |       |j                  |j
                  dd df   }t        j                  |d   dd |       |j                  d d d d f   }t        j                  ||       |}d|j                  d d df<   d|d<   t        j                  ||       d|j                  d d d d f<   t        j                  ||       y )Nt1t2r   r   r   )r   r   r   r/   r/   )r   r/   r+   r   r/   id)codeslevelsr*   r   )r/   r+   r0      r   r.   r/   r0   r   )r   r   r   rK   r   r.   rL   )r   r   r   midxr9   r   s         r   %test_frame_getitem_setitem_multislicez;TestMultiIndexSetItem.test_frame_getitem_setitem_multislice/  s   ,0 /2fT4LI1>7
#
r'{F31w./
r'{1Q/81
b&)q'zw
b&)q!t
b&)r   c                 f   t        t        j                  j                  d      j	                  d      g dg dg      }|j                         }|d   |d<   t        j                  |d   |d          |j                         }|d   j                  |d<   t        j                  |d   |d          y )Nr+   )r   rE   )r   r   r   r   )r   r/   r   r/   r-   r   r   )	r   r2   rX   rY   rj   r\   rK   rL   r   )r   r9   cps      r   test_frame_setitem_multi_columnz5TestMultiIndexSetItem.test_frame_setitem_multi_columnF  s    II!!!$44W=)<8

 WWYS'3
bgr#w/ WWYS'..3
bgr#w/r   c                    t        j                  g d      }t        g d|      }d|d<   |d   j                  dk(  j	                         sJ g d|d<   |d   |d<   |d	   }|d
   }|d   }t        j                  ||d       t        j                  ||d       |j                  d	k(  sJ |j                  d
k(  sJ |j                  dk(  sJ y )N)r   1r   2rC   r   )r/   r0   r=   rF   r   r   r   r/   r+   r0   r   r   r   F)check_names)r   r   r   r   r   rK   r   r   )r   r-   r9   	sliced_a1	sliced_a2	sliced_b1s         r    test_frame_setitem_multi_column2z6TestMultiIndexSetItem.test_frame_setitem_multi_column2U  s     (()MNY8 33!#((*** !8X,3xL	xL	xL	
y)G
y)G~~+++~~+++~~+++r   c                     |}|d d }|j                   dg df   }|j                   d   g d   }t        j                  ||       y )Nr=   )r   r/   rg   rR   )r   rK   r   )r   r   r   r9   r   r   s         r   #test_loc_getitem_tuple_plus_columnsz9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsl  sJ     >!Wo5666*%o6
vx0r   z.ignore:Setting a value on a view:FutureWarningc                    t        g dddggg dg dg      }t        t        j                  j	                  d      j                  t        |      df      |g d	      }t        j                  ||      }|j                  d
d }|j                  |j                  dd        }t        j                  ||       d|j                  d
d |j                  d
d dk(  j                  j                         sJ y )Nr   r/   r+   r   r+   )r   r   r/   r/   r+   r+   )r   r/   r   r/   r   r/   )r   r   rE   r   r   r   r#   rF   r/   r   )r   r   r2   rX   rY   rj   lenrK   get_objr   reindexr.   r   r   r   )r   frame_or_seriesr.   objresr   s         r   'test_loc_getitem_setitem_slice_integersz=TestMultiIndexSetItem.test_loc_getitem_setitem_slice_integersw  s    1v&/ACU.V
 II!!!$44c%j!_E(

 jjo.ggalkk#))AB-(
S!!!!))--///r   c                 $   |}|j                   }|d   }||j                         kD  |d<   t        j                  |d   ||j                         kD         |j	                  dg      }t        j                  |d   ||j                         kD         y )N)rU   rf   r   )r   medianrK   r   r   )r   r   r   dftr   	reindexeds         r   test_setitem_change_dtypez/TestMultiIndexSetItem.test_setitem_change_dtype  s    0gg
NL
s<0!ahhj.A KK(8K9	
y6AHHJGr   c                     |}|j                   g d   }d|j                  |<   |j                  |   j                  dk(  j                         sJ |j	                         }|d   }d||<   t        j                  ||       y )N)r/   rE   r=   rA   rC   a   )r.   r   r   r   r\   rK   rL   )r   r   r   subsetframe_originalcols         r   test_set_column_scalar_with_locz5TestMultiIndexSetItem.test_set_column_scalar_with_loc  sv    0Y'		&		&!((B.33555CjF
e^4r   c                    t        g dg dg dgt        d            }|j                  ddg      }t        j                  dg      }d	|j
                  |d
f<   |j                  d      d
   d	k(  j                         sJ y )N)r/   r/   r!   r"   )r/   r/   yY)r/   r+   zZABCDr   r   rC   r/   r/   _rD   )r   r   r   r   r   r   xsr   )r   r9   mis      r   test_nonunique_assignment_1750z4TestMultiIndexSetItem.test_nonunique_assignment_1750  sz    /1ABDQWL
 \\3*%##VH-r3wfc"c)..000r   c                 X   t        j                  g d      }t        t        j                  d      j                  d      |t              }|j                  j                         }|d   j                  t        j                        |d<   t        j                  |j                  |       y )N)r   r   r   r0   )r/   r0   r?   r   )r   r   r   r2   r3   rH   objectr.   r\   r   r   rK   assert_index_equal)r   r6   r9   r.   s       r    test_astype_assignment_with_dupsz6TestMultiIndexSetItem.test_astype_assignment_with_dups  ss     %%&JKryy|++F3TPS'..,3
bhh.r   c                     t        j                  g dddg      }t        g d|dg      }t        j                  dd	d
      |j
                  d<   t        dg di|      }t        j                  ||       y )N))r   r   )r   r!   )r   r#   l1l2r)   r   edatar.   r-   rA   e   r   )r@   )r   r  )rA   r/   r%   r   )r   r   r   r2   r3   r   rK   rL   )r   r.   r9   r   s       r   test_setitem_nonmonotonicz/TestMultiIndexSetItem.test_setitem_nonmonotonic  si    &&0t
 IUSEB99RG<xc<0>
b(+r   )__name__
__module____qualname__r   r   r:   rP   ra   rr   r   r   r   r   r   r   r   r   r   r   rl   markfilterwarningsr   r   r   r  r	  r  r   r   r   r   r      s    8Dt %
<
&/
b2,>U)+V/, 2*.0,.	1 [[ PQ0 R0&	H5
1/,r   r   c                   $    e Zd Zd Zd Zd Zd Zy)"TestSetitemWithExpansionMultiIndexc                 `   g dg dg dg}t        t        |       }t        j                  |      }t	        t
        j                  j                  d      j                  d      |      }|j                         }|j                         }g d|d<   g d|d	<   t        j                  ||       y )
N)r   topr  routine1r  routine2) ODr  result1result2r  )r  wxwyr  r  r  r+   )rE   rg   r   )r/   r+   r0   rE   r   )r   r  r  )sortedzipr   r   r   r2   rX   rY   rj   r\   rK   rL   )r   ro   tuplesr.   r9   r   r   s          r   #test_setitem_new_column_mixed_depthzFTestSetitemWithExpansionMultiIndex.test_setitem_new_column_mixed_depth  s    C=(
 V%&&v.ryy,,Q/??GQVW779"s ,
fh/r   c                     t        j                  g d      }t        ddgddgddgg|      }t        ddd	      }||d
<   |d
   j	                         j                         sJ y )N))1a2a)r(  2b)r(  2cr/   r+   r0   rE   r=   rg   r   )r  )r/   r+   new)r   r   r   r   r   r   )r   mixr9   r   s       r   test_setitem_new_column_all_nazATestSetitemWithExpansionMultiIndex.test_setitem_new_column_all_na  sg    $$%OPAAA/s;Aq)*5	%y~~##%%%r   c                 $   t        j                  dgg d      }t        g dg|g d      }|j                  d   |j                  d<   t        j                  ddgg d      }t        g dg dg|g d      }t	        j
                  ||       y )Nr   )i1i2i3r)   )r         rR   r  )r   r   r   r   r   r   r   rK   rL   )r   r  r9   mi_expectedr   s        r   )test_setitem_enlargement_keep_index_nameszLTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_keep_index_names  s    ##YK7IJ\N"oNFF9-y ,,	"*<
 -#

 	b(+r   c                    t        j                  g d      }t        g d|      }ddg|j                  dd d f<   t        j                  g d      }t        dd	gd
dgddgddgddgg|ddg      }t	        j
                  ||d       y )N)r   a1r   a2rC   b1rC   N))r         @)r         @)       @      @)      @      @r   g      (@g      *@r   N)r9  r;  r=  r?  rF  r   r@  r   rA  rB  rC  rD  rE  r   r/   rF   F)check_index_typer5  )r   r.   r9   expected_indexr   s        r   -test_setitem_enlargement_multiindex_with_nonezPTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_multiindex_with_none  s     &&@
 GuU"&{A~#//M
 3Z#sc3Z#sdD\J F

 	b(UCr   N)r  r  r  r&  r.  r7  rI  r   r   r   r  r    s    0"&,Dr   r  c                     | j                   }t        j                  t        d      5  d|d   j                  d d  d d d        |d   j                  dk7  j                         sJ y # 1 sw Y   ,xY w)Nz	read-onlyrh   r   rU   )r   rl   rm   r   r   r   r   r9   s     r   test_frame_setitem_view_directrL     sg     
*	+	+B	z	5  5	 uI!&&(((   s   A&&A/c                 ~    | j                   }t        j                         5  d|d   d<   d d d        y # 1 sw Y   y xY wNr+   rU   re   )r   rK   raises_chained_assignment_errorrK  s     r   test_frame_setitem_copy_raisesrP  	  s<    	)	+	+B		+	+	- 5	%  s   	3<c                     | j                   }|}|j                         }t        j                         5  d|d   d<   d d d        t        j                  ||       y # 1 sw Y    xY wrN  )r   r\   rK   rO  rL   )r   r   r   r9   s       r    test_frame_setitem_copy_no_writerR    s^    ,..EH	B		+	+	- 5	% "h' s   	AA$c                     t        g dg dddd      j                  g d      } t        d| j                  j	                  d      	      }| j                         }||d
<   | j                         }d|d
<   t        j                  ||       y )Nr   )r0   rE   r=   rg   r   r   r   r   r   r   r#   )r   r   r   r.   	droplevelr\   rK   rL   )r9   serr   r   s       r   %test_frame_setitem_partial_multiindexrV    s    			

 i   "((,,S1
2CWWYFF3KwwyHHSM&(+r   )numpyr2   rl   pandasr   r   r   r   r   r   r   pandas._testing_testingrK   r   r   r  rL  rP  rR  rV  r   r   r   <module>r[     sP        m, m,`9D 9Dx)(,r   