
    OwgM                         d dl Zd dlZd dlmZ d dlmc m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ej.                  d	        Zd
 Zd Zd Zy)    N)SettingWithCopyError)	DataFrame
MultiIndexSeries
date_rangeisnanotnac                     | |k(  sJ y N )abs     d/var/www/horilla/myenv/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ej                  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   r3   r4   reshapesplitfloatr   tmassert_frame_equalr   )r   r:   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   rD   rE   z
2015-01-01z
2015-04-01MS)freqfoobarz
2016-01-01z
2016-02-01r,   )   rF   rG   r   z
2015-02-01)r,   r,   )r   r   r   r   )r,   rF   rH   )r   r2   r   r   r3   randomdefault_rngfrom_arraysr   rL   rM   slicecopyr/   r.   )r   idxr7   r:   subidxsubcolsvalsr]   s           r   test_setitem_multiindex3z.TestMultiIndexSetItem.test_setitem_multiindex3P   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)rW   rW   bazquxre   rW   )onetworf   rf   rg   rf   r      r0   r,   )rh   r1   rS   rG   rW   zAcannot align on a multi-index with out specifying the join levelsmatch)r3   r6   r4   r   rY   rZ   standard_normal
sort_indexr   r]   rL   rM   pytestraises	TypeError)r   arraysdf_origr   r:   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,   rF   r0   r>   r   ))DECoalStock)rv   Gasrx   )rv   ElecDemand)FRry   rx   )r|   SolarSupIm)r|   Windr~   )SitComTyper*   )r   r0   r1   rx   )r   	from_dictr   from_tuplesr/   r]   ilocpd
IndexSlicer   rL   rM   )r   rq   r   r^   r:   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>   
   	   sizer1   abcrF   rF      r   r   rX   r-   r$                 ?)rF   r$   r   )r/   name)r   r3   rY   rZ   integersrI   listr5   r6   r   rL   assert_series_equalr   )r   r:   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                    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                        }|d   j                  d d j                  }||j                  d<   t        |ddgdd      }|j                  d   }t        j                  ||       |s t        j                  ||j                         t        j                   t"        d      5  |dz   |j                  d<   d d d        |j                  d   }|dz   }t        j                  ||       t        j$                  |      5  d|j                  d<   d d 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        t        j$                  |      5  dg|j                  ddgf<   d d d        |j                  d   dk(  j-                         sJ y # 1 sw Y   Tx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)Nr   r   r,   r>   r   r   r   r1   r   r   r   )r.   r/   rA   c)rF   r   r   int64)r/   r   rA   zitem of incompatible dtyperi   g      ?float64z@Must have equal len keys and value when setting with an iterable)r   r0   r,   r1   r   rF   )r3   r6   r   rY   rZ   r   rI   r   r   r   valuesr   r   rL   r   assert_numpy_array_equalassert_produces_warningFutureWarningassert_cow_warningrm   rn   
ValueErrorall)	r   using_copy_on_writewarn_copy_on_writer   r:   viewexpr   rr   s	            r   'test_multiindex_assignment_single_dtypez=TestMultiIndexSetItem.test_multiindex_assignment_single_dtype   sh   
 hhSz"II!!!$--a!-<DDQJKk*((	
 #w||BQ&&
 vSBcA
vs+ #''cjj9 ''!=
 	' !3YBFF6N	' Ci
vs+ ""#56 	 BFF6N	 R2wS	B
rvvf~s3 Q]]:S1 	*)BFF6N	* ]]:S1 	!SBFF6N	!
 ""#56 	# !sBFF1se8	#v!#((***5	' 	'	  	 	* 	*	! 	!
	# 	#s<   !J;J$J J,J8JJ J),J58K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   )rA   r.   rF   )levelnew_colr   )mapstrr3   r4   tolistr   rY   rZ   r   r   	set_indexrl   groupbyr5   shaper   )r   NUM_ROWSNUM_COLSnum	col_names
index_colsr:   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                  |      5  t        j                  |d<   d d d        t	        |j
                  dd       j                         sJ t        |j
                  d d       j                         sJ t        |j
                  dd        j                         sJ t        j                  |      5  t        j                  |d<   d d d        t	        |j                  d         sJ t        j                  t        d      5  |d    d d d        y # 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)	Nr   )  r1   *   A   )r   r1   r   1   49ri   )rL   r   r3   r5   r   r   r   r	   r   rm   rn   KeyError)r   /multiindex_year_month_day_dataframe_random_datar   ymdss        r   test_series_setitemz)TestMultiIndexSetItem.test_series_setitem  s    >H""#56 	 AgJ	 AHHRO$((***QXXcr]#'')))QXXbc]#'')))""#56 	$VVAkN	$AFF2J]]840 	bE	 		  	 	$ 	$	 	s#   D&D2D>&D/2D;>E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 onlyri   )Tr]   r   whererL   rM   assert_almost_equalr3   putmaskrm   rn   ro   )r    multiindex_dataframe_random_dataframer:   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   r0   r0   )r   r0   r,   r   r0   id)codeslevelsr+   r   )r0   r,   r1      r   r/   r0   r1   r   )r   r   r   rL   r   r/   rM   )r   r   r   midxr:   r   s         r   %test_frame_getitem_setitem_multislicez;TestMultiIndexSetItem.test_frame_getitem_setitem_multisliceF  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   rF   )r   r   r   r   )r   r0   r   r0   r.   r   r   )	r   r3   rY   rZ   rk   r]   rL   rM   r   )r   r:   cps      r   test_frame_setitem_multi_columnz5TestMultiIndexSetItem.test_frame_setitem_multi_column]  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rD   r   )r0   r1   r>   rG   r   r   r   r0   r,   r1   r   r   r   F)check_names)r   r   r   r   r   rL   r   r   )r   r.   r:   	sliced_a1	sliced_a2	sliced_b1s         r    test_frame_setitem_multi_column2z6TestMultiIndexSetItem.test_frame_setitem_multi_column2l  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   r0   rh   rS   )r   rL   r   )r   r   r   r:   r   r   s         r   #test_loc_getitem_tuple_plus_columnsz9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columns  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   r0   r,   r   r,   )r   r   r0   r0   r,   r,   )r   r0   r   r0   r   r0   )r   r   rF   r   r   r   r$   rG   r0   r   )r   r   r3   rY   rZ   rk   lenrL   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_integers  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)rV   rg   r   )r   medianrL   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   }t        j                  |      5  d||<   d d d        |rt        j                  ||       y |j                  |df   dk(  j                         sJ y # 1 sw Y   GxY w)N)r0   rF   r>   rB   rD   a   )r/   r   r   r   r]   rL   r   rM   )r   r   r   r   r   subsetframe_originalcols           r   test_set_column_scalar_with_locz5TestMultiIndexSetItem.test_set_column_scalar_with_loc  s     1Y'		&		&!((B.33555Cj""#56 	CK	!!%8IIfck*b055777	 	s   9CC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)r0   r0   r"   r#   )r0   r0   yY)r0   r,   zZABCDr   r   rD   r0   r0   _rE   )r   r   r   r   r   r   xsr   )r   r:   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   r1   )r0   r1   r@   r   )r   r   r   r3   r4   rI   objectr/   r]   astyper   rL   assert_index_equal)r   r7   r:   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.   rB   e   r   )rA   )r   r  )rB   r0   r&   r   )r   r   r   r3   r4   r   rL   rM   )r   r/   r:   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;   rQ   rb   td&skip_array_manager_not_yet_implementedrs   r   r   r   r   r   r   r   r   r   r   rm   markfilterwarningsr   r   r  r  r  r  r   r   r   r   r      s    8Dt %
<
&/
f .. /2,>U6+p/,(2*.0,.	1 [[ PQ0 R0&	H8&
1/,r   r   c                       e 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,   )rF   rh   r   )r0   r,   r1   rF   r   )r   r'  r'  )sortedzipr   r   r   r3   rY   rZ   rk   r]   rL   rM   )r   rp   tuplesr/   r:   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)r2  2b)r2  2cr0   r,   r1   rF   r>   rh   r   )r  )r0   r,   new)r   r   r   r   r   r   )r   mixr:   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         rS   r  )r   r   r   )r   r   r   r   rL   rM   )r   r  r:   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   N)r  r  r  r0  r8  r@  r   r   r   r"  r"    s    0"&,r   r"  c                 R   | j                   }|rYt        j                  t        d      5  d|d   j                  d d  d d d        |d   j                  dk7  j                         sJ y d|d   j                  d d  |d   j                  dk(  j                         sJ y # 1 sw Y   axY w)Nz	read-onlyri   r   rV   )r   rm   rn   r   r   r   )r   r   r:   s      r   test_frame_setitem_view_directrB    s     
*	+	+B]]:[9 	$"#BuIQ	$5	  A%**,,,5	5	  A%**,,,	$ 	$s   BB&c                 N   | j                   }|s|r&t        j                         5  d|d   d<   d d d        y d}t        j                  t
        |      5  t        j                         5  d|d   d<   d d d        d d d        y # 1 sw Y   y xY w# 1 sw Y   xY w# 1 sw Y   y xY wNr,   rV   rf   zAA value is trying to be set on a copy of a slice from a DataFrameri   )r   rL   raises_chained_assignment_errorrm   rn   r   )r   r   r   r:   rr   s        r   test_frame_setitem_copy_raisesrF    s     
*	+	+B0//1 	! BuIe	! 	! R]]/s; 	%335 %#$5	% %	% 	%		! 	!
% %	% 	%s/   	BB)	B2BBB	BB$c                    | j                   }|}|j                         }|s|r&t        j                         5  d|d   d<   d d d        nKd}t	        j
                  t        |      5  t        j                         5  d|d   d<   d d d        d d d        |}t        j                  ||       y # 1 sw Y   "xY w# 1 sw Y   6xY w# 1 sw Y   :xY wrD  )r   r]   rL   rE  rm   rn   r   rM   )r   r   r   r   r   r:   rr   r   s           r    test_frame_setitem_copy_no_writerH  +  s     -..EH	B0//1 	! BuIe	! 	! R]]/s; 	%335 %#$5	% %	% F&(+	! 	!
% %	% 	%s/   	B-&C;	B9C-B69C	>CC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   )r1   rF   r>   rh   r   r   r   r   r   r   r$   )r   r   r   r/   	droplevelr]   rL   rM   )r:   serr   r   s       r   %test_frame_setitem_partial_multiindexrL  >  s    			

 i   "((,,S1
2CWWYFF3KwwyHHSM&(+r   )numpyr3   rm   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr   r   r   r   r   r   r	   pandas._testing_testingrL   r   r   r"  skip_array_manager_invalid_testrB  rF  rH  rL  r   r   r   <module>rV     sl      . ) )   G, G,T', ',T ##- $-%,&,r   