
    MhM                         S SK rS SKrS SKJr  S SKJs  Jr  S SK	r
S SK	JrJrJrJrJrJr  S SKJr  S r " S S5      r " S S5      r\R.                  S	 5       rS
 rS rS rg)    N)SettingWithCopyError)	DataFrame
MultiIndexSeries
date_rangeisnanotnac                     X:X  d   eg N )abs     _/var/www/html/env/lib/python3.13/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyassert_equalr      s    6M6    c                       \ rS rSr\S4S jrS rS rS r\	R                  S 5       rS rS	 rS
 rS rS rS rS rS rS rS r\R.                  R1                  S5      S 5       rS rS rS rS rS rSrg)TestMultiIndexSetItem   Nc                 X    X1R                   U'   UR                   U   nUc  UnU" Xe5        g r   )loc)selftargetindexersvalue
compare_fnexpectedresults          r   checkTestMultiIndexSetItem.check   s/    $

8H%H6$r   c                    / SQn[         R                  " [        R                  " SS5      [        R                  " SS5      /SS/S9nSu  p4[	        [        R
                  UUS	9nU R                  XSU4S
4SS9  [	        SXS	9nU R                  XSU4S
4SS9  [	        XS	9nU R                  XSU4S
4SS9  [	        SXS	9nU R                  UX44S
4[        R                  " S5      SS9  g )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   colsr1   tndfs         r   test_setitem_multiindex-TestMultiIndexSetItem.test_setitem_multiindex   s    <''YYq#		!R 01&&9I
 FF

 	

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

"A}A
>t1

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

fc]((1+	 	 	
r   c                    [        [        R                  " S5      R                  SS5      SR	                  S5      [
        S9nSUS'   US   S	-  S
:H  nSS/nUS   UR                  X#4'   [        S/ SQSS/S9n[        R                  " UR                  X#4   U5        U R                  UX#4US   [        R                  US9  g )N      z	A,B,C,D,E,r0   dtypec   Fr!   r.   r   BCg     X@)r   r.      r1   r0   r   r   r   r   r   )
r   r5   r6   reshapesplitfloatr   tmassert_frame_equalr   )r   r<   row_selectioncol_selectionoutputs        r   test_setitem_multiindex2.TestMultiIndexSetItem.test_setitem_multiindex2=   s    IIbM!!!Q'1B1B31Gu
 33!q(c
/1#w}+,4y3*E
bff]%ABFK

#3S',, 	 	
r   c           	         [         R                  " / SQ[        SSSS9/5      n[         R                  " SS/[        SS	SS9/5      n[        [        R
                  R                  S
5      R                  S5      XS9n[         R                  " SS/[        SSSS9/5      n[         R                  " SS/[        SS	SS9/5      n[        [        R
                  R                  S
5      R                  S5      XES9nU R                  UXE4U[        R                  S9  [        [        R
                  R                  S
5      R                  S5      XBS9nU R                  UU[        S S S 5      4U[        R                  S9  UR                  5       nU R                  UUR                  UR                  4U[        R                  US9  g )Nr!   rG   rH   z
2015-01-01z
2015-04-01MS)freqfoobarz
2016-01-01z
2016-02-01r.   )   rI   rJ   r!   z
2015-02-01)r.   r.   )r   r   r   r   )r.   rI   rK   )r   r4   r   r   r5   randomdefault_rngfrom_arraysr   rO   rP   slicecopyr1   r0   )r   idxr9   r<   subidxsubcolsvalsra   s           r   test_setitem_multiindex3.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36
 	

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

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

hh

+,, 	 	
r   c                 x   [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " SSS5      /n[        [         R                  R                  S5      R                  S5      U/ SQS	9R                  5       nUR                  S
/   S-  nUR                  5       nUR                  S
/==   S-  ss'   [        R                  " UR                  S
/   U5        Sn[        R                  " [        US9   UR                  S
==   S-  ss'   S S S 5        g ! , (       d  f       g = f)N)r[   r[   bazquxrj   r[   )onetwork   rk   rl   rk   r      r2   r.   )rm   r3   rW   rJ   r[   zAcannot align on a multi-index with out specifying the join levelsmatch)r5   r8   r6   r   r]   r^   standard_normal
sort_indexr   ra   rO   rP   pytestraises	TypeError)r   arraysdf_origr   r<   msgs         r   test_multiindex_setitem-TestMultiIndexSetItem.test_multiindex_setitem   s    
 HH?@HH?@IIaA
 II!!!$44V<#
 *,	 	 ;;w'!+\\^
w1
bffeWox8 R]]9C0FF5MQM 100s   
D++
D9c           
      (   [         R                  " SSSSSSSS.05      n[        R                  " UR                  / SQS	9Ul        UR                  5       nUR                  / S
Q==   S-  ss'   [        R                  nUR                  5       nUR                  US S 2S S 2S4   S S 24==   S-  ss'   [        R                  " XB5        UR                  5       nUR                  US S 2S S 2S4   S4==   S-  ss'   [        R                  " XB5        g )Npricer.   rI   r2   rA   r   ))DECoalStock)r|   Gasr~   )r|   ElecDemand)FRr   r~   )r   SolarSupIm)r   Windr   )SitComTyper,   )r   r2   r3   r~   )r   	from_dictr   from_tuplesr1   ra   ilocpd
IndexSlicer   rO   rP   )r   rv   r   rb   r<   s        r   test_multiindex_setitem2.TestMultiIndexSetItem.test_multiindex_setitem2   s     %%-.,-./,-./-.	
 #..MM!7
 <<>i A% mm\\^
s1a=!1$%*%
b+\\^
s1a=!7*+q0+
b+r   c           	         [        [        R                  R                  S5      R	                  SSSS9R                  SS5      [        S5      / SQ/ S	Q/S
9n[        R                  US'   [        R                  " SS/5      nX!R                  S'   [        R                  " UR                  S   [        USS/SS95        g )Nr.   rA   
   	   sizer3   abcrI   rI      r   r   r\   r/   r&                 ?)rI   r&   r   )r1   name)r   r5   r]   r^   integersrL   listr7   r8   r   rO   assert_series_equalr   )r   r<   arrs      r   test_multiindex_assignment0TestMultiIndexSetItem.test_multiindex_assignment   s     II!!!$--a!-<DDQJKk*

 &&3hhSz"v
rvvf~vc!Rs/STr   c                    [         R                  " SS/5      n[        [         R                  R	                  S5      R                  SSSS9R                  SS5      [        S	5      / S
Q/ SQ/[         R                  S9nUS   R                  S S R                  nX4R                  S'   [        USS/SSS9nUR                  S   n[        R                  " Xv5        U(       d   [        R                  " XVR                  5        [        R                   " ["        SS9   US-   UR                  S'   S S S 5        UR                  S   nUS-   n[        R                  " Xv5        [        R$                  " U5         SUR                  S'   S S S 5        [        SSS/SSS9n[        R                  " UR                  S   U5        Sn[&        R(                  " [*        US9   / SQUR                  S'   S S S 5        [&        R(                  " [*        US9   S/UR                  S'   S S S 5        [        R$                  " U5         S/UR                  SS/4'   S S S 5        UR                  S   S:H  R-                  5       (       d   eg ! , (       d  f       GNZ= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f)Nr   r   r.   rA   r   r   r   r3   r   r   r   )r0   r1   rD   c)rI   r   r   int64)r1   r   rD   zitem of incompatible dtypern   g      ?float64z@Must have equal len keys and value when setting with an iterable)r   r2   r.   r3   r   rI   )r5   r8   r   r]   r^   r   rL   r   r   r   valuesr   r   rO   r   assert_numpy_array_equalassert_produces_warningFutureWarningassert_cow_warningrr   rs   
ValueErrorall)	r   using_copy_on_writewarn_copy_on_writer   r<   viewexpr   rw   s	            r   'test_multiindex_assignment_single_dtype=TestMultiIndexSetItem.test_multiindex_assignment_single_dtype   sB   
 hhSz"II!!!$--a!-<DDQJKk*((	
 #w||BQ&&
 vSBcA
v+ #''jj9 ''!=
 !3YBFF6N
 Ci
v+ ""#56BFF6N 7R2wS	B
rvvf~s3 Q]]:S1)BFF6N 2 ]]:S1SBFF6N 2
 ""#56 !sBFF1se8 7v!#((****5
 
 76 21 21
 76s<   J6JJ%J6=K
J
J"%
J36
K
Kc                 8   SnSn[        [        [        R                  " U5      R	                  5       5       Vs/ s H  nSU-   PM
     nnUS S n[        [        R                  R                  S5      R                  SX4S9[        R                  US9nUR                  U5      R                  5       nUR                  US S S	9n[        R                  US
'   U H8  u  p[        R                  " U	R                  S   5      n
XR                  US
4'   M:     g s  snf )Nr(   r   r!   rA   r.   r   )rD   r0   rI   )levelnew_colr   )mapstrr5   r6   tolistr   r]   r^   r   r   	set_indexrq   groupbyr7   shaper   )r   NUM_ROWSNUM_COLSnum	col_names
index_colsr<   grpr   df2new_valss              r   test_groupby_example*TestMultiIndexSetItem.test_groupby_example  s    *-c299X3F3M3M3O*PQ*P3S3Y*P	Qr]
II!!!$--ax6J-K((

 \\*%002jjz"1~j.9 IDyy1.H&.FF4?#  Rs   Dc                    UnUS   n[         R                  " U5         [        R                  US'   S S S 5        [	        UR
                  SS 5      R                  5       (       d   e[        UR
                  S S 5      R                  5       (       d   e[        UR
                  SS  5      R                  5       (       d   e[         R                  " U5         [        R                  US'   S S S 5        [	        UR                  S   5      (       d   e[        R                  " [        SS9   US     S S S 5        g ! , (       d  f       GN= f! , (       d  f       Ng= f! , (       d  f       g = f)	Nr!   )  r3   *   A   )r   r3   r   1   49rn   )rO   r   r5   r7   r   r   r   r	   r   rr   rs   KeyError)r   /multiindex_year_month_day_dataframe_random_datar   ymdss        r   test_series_setitem)TestMultiIndexSetItem.test_series_setitem  s    >H""#56AgJ 7AHHRO$((****QXXcr]#''))))QXXbc]#''))))""#56VVAkN 7AFF2J]]840bE 10 76 76 10s#   D:E+E:
E	
E
E+c                    UnUR                   R                  5       nUR                  R                  5       nX3S:     nUR                  US:  5      n[        R
                  " XV5        SX3S:  '   SXDS:  '   [        R                  " UR                  U5        SX3S:H  '   SXDS:H  '   [        R                  " UR                  U5        SX3S S S:  '   [        R                  " US S US S S:  S5        [        R                  " UR                  U5        [        R                  " [        SS9   SX3S-  '   S S S 5        g ! , (       d  f       g = f)Nr   rA   r.   zboolean values onlyrn   )Tra   r   whererO   rP   assert_almost_equalr5   putmaskrr   rs   rt   )r    multiindex_dataframe_random_dataframer<   r   r   r   s          r   "test_frame_getitem_setitem_boolean8TestMultiIndexSetItem.test_frame_getitem_setitem_boolean-  s   0WW\\^!F88BF#
f/6
z
ryy&17{
ryy&1 cr7Q;


6#2;sa3
ryy&1]]9,ABBAvJ CBBs   +D<<
E
c                 4   SS// SQ/n/ SQ/ SQ/n[        X!S S/S9n[        S/ S	Q0US
9nUR                  S S 2S4   n[        R                  " US   U5        UR                  UR
                  SS S4   n[        R                  " US   SS U5        UR                  S S 2S S 24   n[        R                  " XE5        UnSUR                  S S 2S4'   SUS'   [        R                  " XE5        SUR                  S S 2S S 24'   [        R                  " XE5        g )Nt1t2r   r   r   )r   r   r   r2   r2   )r   r2   r.   r   r2   id)codeslevelsr-   r   )r2   r.   r3      r   r1   r2   r3   r   )r   r   r   rO   r   r1   rP   )r   r   r   midxr<   r   s         r   %test_frame_getitem_setitem_multislice;TestMultiIndexSetItem.test_frame_getitem_setitem_multisliceF  s   ,0 /2T4LI1>7
#
r'{F31w./
r'{1Q/81
b)q'zw
b)q!t
b)r   c                 d   [        [        R                  R                  S5      R	                  S5      / SQ/ SQ/S9nUR                  5       nUS   US'   [        R                  " US   US   5        UR                  5       nUS   R                  US'   [        R                  " US   US   5        g )Nr.   )r   rI   )r   r   r   r   )r   r2   r   r2   r0   r   r   )	r   r5   r]   r^   rp   ra   rO   rP   r   )r   r<   cps      r   test_frame_setitem_multi_column5TestMultiIndexSetItem.test_frame_setitem_multi_column]  s    II!!!$44W=)<8

 WWYS'3
bgr#w/ WWYS'..3
bgr#w/r   c                    [         R                  " / SQ5      n[        / SQUS9nSUS'   US   R                  S:H  R	                  5       (       d   e/ SQUS'   US   US'   US	   nUS
   nUS   n[
        R                  " X5SS9  [
        R                  " XESS9  UR                  S	:X  d   eUR                  S
:X  d   eUR                  S:X  d   eg )N)r!   1r!   2rG   r   )r2   r3   rA   rJ   r   r!   r   r2   r.   r3   r   r   r   F)check_names)r   r   r   r   r   rO   r   r   )r   r0   r<   	sliced_a1	sliced_a2	sliced_b1s         r    test_frame_setitem_multi_column26TestMultiIndexSetItem.test_frame_setitem_multi_column2l  s     (()MNY8 33!#((**** !8X,3xL	xL	xL	
yG
yG~~+++~~+++~~+++r   c                     UnUS S nUR                   S/ SQ4   nUR                   S   / SQ   n[        R                  " XE5        g )NrA   )r   r2   rm   rW   )r   rO   r   )r   r   r   r<   r   r   s         r   #test_loc_getitem_tuple_plus_columns9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columns  sH     >!Wo5666*%o6
v0r   z.ignore:Setting a value on a view:FutureWarningc                    [        / SQSS/// SQ/ SQ/S9n[        [        R                  R	                  S5      R                  [        U5      S45      U/ SQS	9n[        R                  " X15      nUR                  S
S nUR                  UR                  SS  5      n[        R                  " XE5        SUR                  S
S& UR                  S
S S:H  R                  R                  5       (       d   eg )Nr   r2   r.   r   r.   )r   r   r2   r2   r.   r.   )r   r2   r   r2   r   r2   )r   r   rI   r   r   r   r&   rJ   r2   r   )r   r   r5   r]   r^   rp   lenrO   get_objr   reindexr1   r   r   r   )r   frame_or_seriesr1   objresr   s         r   'test_loc_getitem_setitem_slice_integers=TestMultiIndexSetItem.test_loc_getitem_setitem_slice_integers  s    1v&/ACU.V
 II!!!$44c%j!_E(

 jj.ggalkk#))AB-(
!!!!))--////r   c                    UnUR                   nUS   nXDR                  5       :  US'   [        R                  " US   XDR                  5       :  5        UR	                  S/S9n[        R                  " US   XDR                  5       :  5        g )N)rZ   rl   r   )r   medianrO   r   r  )r   r   r   dftr   	reindexeds         r   test_setitem_change_dtype/TestMultiIndexSetItem.test_setitem_change_dtype  s{    0gg
NL
s<0!hhj.A KK(8K9	
y6HHJGr   c                    UnUR                   / SQ   nSUR                  U'   UR                  U   R                  S:H  R                  5       (       d   eUR	                  5       nUS   n[
        R                  " U5         SXu'   S S S 5        U(       a  [
        R                  " XF5        g UR                  US4   S:H  R                  5       (       d   eg ! , (       d  f       NV= f)N)r2   rI   rA   rE   rG   a   )r1   r   r   r   ra   rO   r   rP   )r   r   r   r   r   subsetframe_originalcols           r   test_set_column_scalar_with_loc5TestMultiIndexSetItem.test_set_column_scalar_with_loc  s     1Y'		&		&!((B.335555Cj""#56CK 7!!%8IIfck*b0557777 76s   ?C
C"c                 
   [        / SQ/ SQ/ SQ/[        S5      S9nUR                  SS/5      n[        R                  " S/5      nS	UR
                  US
4'   UR                  S5      S
   S	:H  R                  5       (       d   eg )N)r2   r2   r$   r%   )r2   r2   yY)r2   r.   zZABCDr   r!   rG   r2   r2   _rH   )r   r   r   r   r   r   xsr   )r   r<   mis      r   test_nonunique_assignment_17504TestMultiIndexSetItem.test_nonunique_assignment_1750  s}    /1ABDQWL
 \\3*%##VH-r3wfc"c)..0000r   c                 X   [         R                  " / SQ5      n[        [        R                  " S5      R                  S5      U[        S9nUR                  R                  5       nUS   R                  [        R                  5      US'   [        R                  " UR                  U5        g )N)r   r   r   r3   )r2   r3   rC   r!   )r   r   r   r5   r6   rL   objectr1   ra   astyper   rO   assert_index_equal)r   r9   r<   r1   s       r    test_astype_assignment_with_dups6TestMultiIndexSetItem.test_astype_assignment_with_dups  ss     %%&JKryy|++F3TPS'..,3
bhh.r   c                     [         R                  " / SQSS/S9n[        / SQUS/S9n[        R                  " SS	S
S9UR
                  S'   [        S/ SQ0US9n[        R                  " X#5        g )N))r   r   )r   r$   )r   r&   l1l2r,   r   edatar1   r0   rE   e   r   )rD   )r   r*  )rE   r2   r(   r   )r   r   r   r5   r6   r   rO   rP   )r   r1   r<   r   s       r   test_setitem_nonmonotonic/TestMultiIndexSetItem.test_setitem_nonmonotonic  sg    &&0t
 IUSEB99RG<xc<0>
b+r   r   ) __name__
__module____qualname____firstlineno__r   r   r=   rT   rf   td&skip_array_manager_not_yet_implementedrx   r   r   r   r   r   r   r   r   r   r   rr   markfilterwarningsr  r  r  r  r%  r.  __static_attributes__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                   &    \ rS rSrS rS rS rSrg)"TestSetitemWithExpansionMultiIndexi  c                 \   / SQ/ SQ/ SQ/n[        [        U6 5      n[        R                  " U5      n[	        [
        R                  R                  S5      R                  S5      US9nUR                  5       nUR                  5       n/ SQUS'   / SQUS	'   [        R                  " XV5        g )
N)r   topr<  routine1r=  routine2) ODr@  result1result2rA  )r?  wxwyr?  r?  r?  r.   )rI   rm   r   )r2   r.   r3   rI   r   )r   r?  r?  )sortedzipr   r   r   r5   r]   r^   rp   ra   rO   rP   )r   ru   tuplesr1   r<   r   r   s          r   #test_setitem_new_column_mixed_depthFTestSetitemWithExpansionMultiIndex.test_setitem_new_column_mixed_depth  s    C=(
 V%&&v.ryy,,Q/??GQVW779"s ,
f/r   c                     [         R                  " / SQ5      n[        SS/SS/SS//US9n[        SSS	.5      nX2S
'   US
   R	                  5       R                  5       (       d   eg )N))1a2a)rK  2b)rK  2cr2   r.   r3   rI   rA   rm   r   )r  )r2   r.   new)r   r   r   r   r   r   )r   mixr<   r   s       r   test_setitem_new_column_all_naATestSetitemWithExpansionMultiIndex.test_setitem_new_column_all_na  sh    $$%OPAAA/s;Aq)*5	%y~~##%%%%r   c                    [         R                  " S// SQS9n[        / SQ/U/ SQS9nUR                  S   UR                  S'   [         R                  " SS// SQS9n[        / SQ/ SQ/U/ SQS9n[        R
                  " X$5        g )Nr   )i1i2i3r,   )r         rW   r+  )r   r   r   )r   r   r   r   rO   rP   )r   r  r<   mi_expectedr   s        r   )test_setitem_enlargement_keep_index_namesLTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_keep_index_names  s    ##YK7IJ\N"oNFF9-y ,,	"*<
 -#

 	b+r   r   N)r0  r1  r2  r3  rH  rQ  rZ  r8  r   r   r   r:  r:    s    0"&,r   r:  c                 v   U R                   nU(       a\  [        R                  " [        SS9   SUS   R                  S S & S S S 5        US   R                  S:g  R                  5       (       d   eg SUS   R                  S S & US   R                  S:H  R                  5       (       d   eg ! , (       d  f       Np= f)Nz	read-onlyrn   r   rZ   )r   rr   rs   r   r   r   )r   r   r<   s      r   test_frame_setitem_view_directr]    s     
*	+	+B]]:[9"#BuIQ :5	  A%**,,,,5	5	  A%**,,,, :9s   B**
B8c                    U R                   nU(       d  U(       a'  [        R                  " 5          SUS   S'   S S S 5        g Sn[        R                  " [
        US9   [        R                  " 5          SUS   S'   S S S 5        S S S 5        g ! , (       d  f       g = f! , (       d  f       N(= f! , (       d  f       g = fNr.   rZ   rk   zAA value is trying to be set on a copy of a slice from a DataFramern   )r   rO   raises_chained_assignment_errorrr   rs   r   )r   r   r   r<   rw   s        r   test_frame_setitem_copy_raisesra    s     
*	+	+B0//1 BuIe 21 R]]/s;335#$5	%  6 <;	 21
 65 <;s/   	BB/3	B<B/
B
B,	(B//
B=c                    U R                   nUnUR                  5       nU(       d  U(       a'  [        R                  " 5          SUS   S'   S S S 5        OJSn[        R
                  " [        US9   [        R                  " 5          SUS   S'   S S S 5        S S S 5        Un[        R                  " Xt5        g ! , (       d  f       N'= f! , (       d  f       N@= f! , (       d  f       NI= fr_  )r   ra   rO   r`  rr   rs   r   rP   )r   r   r   r   r   r<   rw   r   s           r    test_frame_setitem_copy_no_writerc  +  s     -..EH	B0//1 BuIe 21 R]]/s;335#$5	%  6 < F&+ 21
 65 <;s0   	B7/C	CC7
C
C	C
C'c                     [        / SQ/ SQSSS.5      R                  / SQ5      n [        SU R                  R	                  S5      S	9nU R                  5       nXS
'   U R                  5       nSUS
'   [        R                  " X#5        g )Nr   )r3   rI   rA   rm   r   r   r   r   r   r   r&   )r   r   r   r1   	droplevelra   rO   rP   )r<   serr   r   s       r   %test_frame_setitem_partial_multiindexrg  >  s}    			

 i   "((,,S1
2CWWYF3KwwyHHSM&+r   )numpyr5   rr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr4  pandasr   r   r   r   r   r   r	   pandas._testing_testingrO   r   r   r:  skip_array_manager_invalid_testr]  ra  rc  rg  r   r   r   <module>rq     sl      . ) )   G, G,T', ',T ##- $-%,&,r   