
    dF                         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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S )    N)SettingWithCopyError)	DataFrame
MultiIndexSeries	Timestamp
date_rangeisnanotnac                     | |k    sJ d S N )abs     i/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyassert_equalr      s    666666    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d Zd Zd Zd Zd Zd ZdS )TestMultiIndexSetItemNc                 T    ||j         |<   |j         |         }||} |||           d S r   )loc)selftargetindexersvalue
compare_fnexpectedresults          r   checkzTestMultiIndexSetItem.check   s=    $
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        ||	          }|                     |||fd
fd           t	          d||	          }|                     |||fd
fd           t	          ||	          }|                     |||fd
fd           t	          d||	          }|                     |||fd
ft          j        d          d           d S )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   colsr0   tndfs         r   test_setitem_multiindexz-TestMultiIndexSetItem.test_setitem_multiindex    sT   <<<'Yq#	!R 0 01&&9I
 
 
 1F
 
 

 	

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

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

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

!fc](1++	 	 	
 	
 	
 	
 	
r   c                    t          t          j        d                              dd          d                    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         |           | 	                    |||f|d         t          j        |           d S )N      z	A,B,C,D,E,r/   dtypec   Fr    r-   r   BCg     X@)r   r-      r0   r/   r   r   r   r   r   )
r   r4   r5   reshapesplitfloatr   tmassert_frame_equalr   )r   r;   row_selectioncol_selectionoutputs        r   test_setitem_multiindex2z.TestMultiIndexSetItem.test_setitem_multiindex2>   s    IbMM!!!Q''1B1B31G1Gu
 
 
 33!q(c
/1#w}m+,4yyy3*EEE
bf]M%ABFKK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                            d
          ||          }t          j        dt          d          fdt          d          fg          }t          j        dt          d          fdt          d	          fg          }t          t          j                            d          ||          }|                     |||f|t          j
                   t          t          j                            d          ||          }|                     ||t          d d d           f|t          j
                   |                                }|                     ||j        |j        f|t          j
        |           d S )Nr    rE   rF   z
2015-01-01z
2015-04-01MS)freqfoobarz
2016-01-01z
2016-02-01)   rG   rH   r    z
2015-02-01)r-   r-   )r   r   r   r   )r-   rG   rI   )r   r3   r   r   r4   randomfrom_tuplesr   r   rM   rN   slicecopyr0   r/   )r   idxr8   r;   subidxsubcolsvalsr]   s           r   test_setitem_multiindex3z.TestMultiIndexSetItem.test_setitem_multiindex3Q   s   %__j|$OOOP
 
 &U^ZlNNNO
 
 ry''00TJJJ'9\**+c9\3J3J-KL
 
 (Y|,,-y7N7N/OP
 
 ))&11QQQ

g&,	 	 	
 	
 	
 ))&11NNN

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

h
+, 	 	
 	
 	
 	
 	
r   c                 ^   t          j        g d          t          j        g d          t          j        ddd          g}t          t           j                            dd          |g d                                          }|j        d	g         d
z  }|                                }|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            d S # 1 swxY w Y   d S )N)rX   rX   bazquxre   rX   )onetworf   rf   rg   rf   r      r1   r2   rT   rH   rX   r-   zAcannot align on a multi-index with out specifying the join levelsmatch)r4   r7   r5   r   rZ   randn
sort_indexr   r]   rM   rN   pytestraises	TypeError)r   arraysdf_origr   r;   msgs         r   test_multiindex_setitemz-TestMultiIndexSetItem.test_multiindex_setitem~   sq   
 H???@@H???@@IaA
 IOOAq!!
 
 

*,, 	 ;w'!+\\^^
w1
bfeWox888 R]9C000 	 	F5MMMQMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?D""D&)D&c           
      *   t          j        ddddddddi          }t          j        |j        g d	          |_        |                                }|j        g d
xx         dz  cc<   t          j        }|                                }|j	        |d d d d df         d d fxx         dz  cc<   t          j        ||           |                                }|j	        |d d d d df         dfxx         dz  cc<   t          j        ||           d S )Npricer-   rG   r1   r?   r   ))DECoalStock)rv   Gasrx   )rv   ElecDemand)FRry   rx   )r|   SolarSupIm)r|   Windr~   )SitComTyper+   )r   r-   r2   rx   )r   	from_dictr   r[   r0   r]   ilocpd
IndexSlicer   rM   rN   )r   rq   r   r^   r;   s        r   test_multiindex_setitem2z.TestMultiIndexSetItem.test_multiindex_setitem2   sQ    %-.,-./,-./-. 	
 
 #.M!7!7!7
 
 
 <<>>iii   A%   m\\^^
s111aaa=!111$%%%*%%%
b(+++\\^^
s111aaa=!7*+++q0+++
b(+++++r   c                 z   t          t          j                            ddd                              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
                     d S )Nr?   
   	   sizer2   abcrG   rG      r   r   rY   r.   r%                 ?)rG   r%   r   )r0   name)r   r4   rZ   randintrJ   listr6   r7   r   rM   assert_series_equalr   )r   r;   arrs      r   test_multiindex_assignmentz0TestMultiIndexSetItem.test_multiindex_assignment   s     Ia!,,44Q::KK99kkk*
 
 

 &3hSz""v
rvf~vc!Rs/S/S/STTTTTr   c                 2   t          j        ddg          }t          t           j                            ddd                              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	                   |dz   |j
        d<   |j
        d         }|dz   }t          j        ||           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            n# 1 swxY w Y   t          j        t"          |          5  dg|j
        d<   d d d            n# 1 swxY w Y   dg|j
        ddgf<   |j
        d         dk                                    sJ d S )Nr   r   r?   r   r   r   r2   r   r   r   )r/   r0   rB   cr-   )rG   r   r   int64)r0   r   rB   g      ?float64z@Must have equal len keys and value when setting with an iterableri   )r   r1   r-   r2   r   rG   )r4   r7   r   rZ   r   rJ   r   r   r   valuesr   r   rM   r   assert_numpy_array_equalrm   rn   
ValueErrorall)r   using_copy_on_writer   r;   viewexpr   rr   s           r   'test_multiindex_assignment_single_dtypez=TestMultiIndexSetItem.test_multiindex_assignment_single_dtype   s    hSz""Ia!,,44Q::KK99kkk*(	
 
 
 #w|BQB& vSBcAAA
vs+++ # 	:'cj999 svCi
vs+++ vR2wS	BBB
rvf~s333 Q]:S111 	* 	*)\\BF6N	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ]:S111 	! 	!SBF6N	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
 3q3%xv!#((*******s$   FF"FGG Gc                 0   d}d}d t          t          t          j        |                                                    D             }|d d         }t          t          j                            d||f          t          j        |          }|	                    |          
                                }|                    |d d                   }t          j        |d	<   |D ]0\  }}t          j        |j        d
                   }	|	|j        |d	f<   1d S )Nr'   r   c                     g | ]}d |z   S )r    r   ).0nums     r   
<listcomp>z>TestMultiIndexSetItem.test_groupby_example.<locals>.<listcomp>   s    QQQ3S3YQQQr   r?   r   )rB   r/   rG   )levelnew_colr   )mapstrr4   r5   tolistr   rZ   r   r   	set_indexrl   groupbyr6   shaper   )
r   NUM_ROWSNUM_COLS	col_names
index_colsr;   grpr   df2new_valss
             r   test_groupby_examplez*TestMultiIndexSetItem.test_groupby_example   s   QQ#c29X3F3F3M3M3O3O*P*PQQQ	rr]
Iax&:;;(
 
 

 \\*%%0022jjz"1"~j..9  	/ 	/ID#y1..H&.BF4?##	/ 	/r   c                 &   |}|d         }t           j        |d<   t          |j        dd                                                   sJ t          |j        d d                                                   sJ t          |j        dd                                                    sJ t           j        |d<   t          |j        d                   sJ t          j        t          d          5  |d          d d d            d S # 1 swxY w Y   d S )	Nr    )  r2   *   A   )r   r2   r   1   49ri   )
r4   r6   r	   r   r   r
   r   rm   rn   KeyError)r   /multiindex_year_month_day_dataframe_random_dataymdss       r   test_series_setitemz)TestMultiIndexSetItem.test_series_setitem	  s@   =HV'
AHRUO$$((*****QXcrc]##'')))))QXbcc]##'')))))+AF2J]84000 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0	DD
D
c                    |}|j                                         }|j                                        }||dk             }|                    |dk              }t	          j        ||           d||dk    <   d||dk    <   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            d S # 1 swxY w Y   d S )Nr   r?   r-   zboolean values onlyri   )Tr]   r   whererM   rN   assert_almost_equalr4   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W\\^^!!BF88BF##
fh///26
vz
ry&11127v{
ry&111 2crc7Q;

6#2#;ssa333
ry&111]9,ABBB 	 	BrAvJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7	E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        ||           d S )Nt1t2)r   r   r   )r   r   r   r1   r1   )r   r1   r-   r   r1   id)codeslevelsr,   r   )r1   r-   r2      r   r0   r1   r2   r   )r   r   r   rM   r   r0   rN   )r   r   r   midxr;   r   s         r   %test_frame_getitem_setitem_multislicez;TestMultiIndexSetItem.test_frame_getitem_setitem_multislice2  sN   ,0 ///2fT4LIII1>>>7
#
r'{F3331w./
r'{1Q3/888111
b&)))qqq'zw
b&)))qqq!!!t
b&)))))r   c                 z   t          t          j                            dd          g dg dg          }|                                }|d         |d<   t          j        |d         |d                    |                                }|d         j        |d<   t          j        |d         |d                    d S )Nr   rG   )r   r   r   r   )r   r1   r   r1   r/   r   r   )r   r4   rZ   rk   r]   rM   rN   r   )r   r;   cps      r   test_frame_setitem_multi_columnz5TestMultiIndexSetItem.test_frame_setitem_multi_columnI  s    IOOB""-A-A-A<<<,P
 
 
 WWYYS'3
bgr#w/// WWYYS'.3
bgr#w/////r   c                    t          j        g d          }t          g d|          }d|d<   |d         j        dk                                    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 d S )N)r    1r    2rE   r   )r1   r2   r?   rH   r   r    r   r1   r-   r2   r   r   r   F)check_names)r   r[   r   r   r   rM   r   r   )r   r/   r;   	sliced_a1	sliced_a2	sliced_b1s         r    test_frame_setitem_multi_column2z6TestMultiIndexSetItem.test_frame_setitem_multi_column2W  s    ()M)M)MNNYYY888 33!#((***** !yy8X,3xL	xL	xL	
y)GGGG
y)GGGG~++++~++++~++++++r   c                     |}|d d         }|j         dg df         }|j         d         g d         }t          j        ||           d S )Nr?   )r   r1   rh   rT   )r   rM   r   )r   r   r   r;   r   r   s         r   #test_loc_getitem_tuple_plus_columnsz9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsn  sY     >!Wooo566*%ooo6
vx00000r   c                    t          g dddggg dg dg          }t          t          j                            t          |          d          |g d	          }t          j        ||          }|j        d
d         }|	                    |j
        dd                    }t          j        ||           d|j        d
d<   |j        d
d         dk    j                                        sJ d S )Nr   r1   r-   r   r-   )r   r   r1   r1   r-   r-   )r   r1   r   r1   r   r1   )r   r   rG   )r   r   r   r%   rH   r1   r   )r   r   r4   rZ   rk   lenrM   get_objr   reindexr0   r   r   r   )r   frame_or_seriesr0   objresr   s         r   'test_loc_getitem_setitem_slice_integersz=TestMultiIndexSetItem.test_loc_getitem_setitem_slice_integersy  s   II1v&/A/A/ACUCUCU.V
 
 
 IOOCJJ**%AUAUAU
 
 
 jo..gaclkk#)ABB-((
S!!!!!!)--///////r   c                 P   |}|j         }|d         }||                                k    |d<   t          j        |d         ||                                k               |                    dg          }t          j        |d         ||                                k               d S )N)rW   rg   r   )r   medianrM   r   r   )r   r   r   dftr   	reindexeds         r   test_setitem_change_dtypez/TestMultiIndexSetItem.test_setitem_change_dtype  s    0g

NL
s<0!ahhjj.AAA KK(8K99	
y6AHHJJGGGGGr   c                 R   |}|j         g d         }d|j        |<   |j        |         j        dk                                    sJ |                                }|d         }d||<   |rt          j        ||           d S |j        |df         dk                                    sJ d S )N)r1   rG   r?   rC   rE   a   )r0   r   r   r   r]   rM   rN   )r   r   r   r   subsetframe_originalcols          r   test_set_column_scalar_with_locz5TestMultiIndexSetItem.test_set_column_scalar_with_loc  s     1YYY'	&	&!(B.3355555CjF 	8!%88888Ifck*b0557777777r   c                 *   t          g dg dg dgt          d                    }|                    ddg          }t          j        dg          }d	|j        |d
f<   |                    d          d
         d	k                                    sJ d S )N)r1   r1   r#   r$   )r1   r1   yY)r1   r-   zZABCDr   r    rE   r1   r1   _rF   )r   r   r   r   r[   r   xsr   )r   r;   mis      r   test_nonunique_assignment_1750z4TestMultiIndexSetItem.test_nonunique_assignment_1750  s    ///1A1A1ABDQWLL
 
 
 \\3*%%#VH--r3wfc"c)..0000000r   c                 `   t          j        g d          }t          t          j        d                              d          |t                    }|j                                        }|d         	                    t          j
                  |d<   t          j        |j        |           d S )N)r   r   r   r2   )r1   r2   rA   r    )r   r[   r   r4   r5   rJ   objectr0   r]   astyper   rM   assert_index_equal)r   r8   r;   r0   s       r    test_astype_assignment_with_dupsz6TestMultiIndexSetItem.test_astype_assignment_with_dups  s     %&J&J&JKKry||++F33TPPPS'..,,3
bh.....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        ||           d S )N))r   r   )r   r#   )r   r%   l1l2r+   r   edatar0   r/   rC   e   r   )rB   )r   r  )rC   r1   r'   r   )r   r[   r   r4   r5   r   rM   rN   )r   r0   r;   r   s       r   test_setitem_nonmonotonicz/TestMultiIndexSetItem.test_setitem_nonmonotonic  s    &000t
 
 
 IIIUSEBBB9RG<<<xc<<<0>>>
b(+++++r   )__name__
__module____qualname__r   r   r<   rR   rb   td&skip_array_manager_not_yet_implementedrs   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r   r      sq       8Dt % % % %
 
 
<
 
 
&)
 )
 )
Z .  /.., , ,>U U U-+ -+ -+^/ / /,     2* * *.0 0 0, , ,.	1 	1 	10 0 0"	H 	H 	H8 8 8$
1 
1 
1/ / /, , , , ,r   r   c                        e Zd Zd Zd Zd ZdS )"TestSetitemWithExpansionMultiIndexc                 d   g dg dg dg}t          t          |           }t          j        |          }t	          t
          j                            dd          |          }|                                }|                                }g d|d<   g d|d	<   t          j
        ||           d S )
N)r   topr  routine1r  routine2) ODr"  result1result2r#  )r!  wxwyr!  r!  r!  rG   rh   r   )r1   r-   r2   rG   r   )r   r!  r!  )sortedzipr   r[   r   r4   rZ   rk   r]   rM   rN   )r   rp   tuplesr0   r;   r   r   s          r   #test_setitem_new_column_mixed_depthzFTestSetitemWithExpansionMultiIndex.test_setitem_new_column_mixed_depth  s    CCC===(((
 V%%&v..ryq!,,e<<<7799"ll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
                                                                         sJ d S )N))1a2a)r,  2b)r,  2cr1   r-   r2   rG   r?   rh   r   )r  )r1   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  s    $%O%O%OP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        ||           d S )Nr   )i1i2i3r+   )r         rT   r  )r   r   r   )r   r[   r   r   rM   rN   )r   r  r;   mi_expectedr   s        r   )test_setitem_enlargement_keep_index_nameszLTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_keep_index_names  s    #YK7I7I7IJJJ\\\N"oooNNNF9-y ,	"*<*<*<
 
 
 ,,-#OO
 
 

 	b(+++++r   N)r  r  r  r*  r2  r:  r   r   r   r  r    sA        0 0 0"& & &, , , , ,r   r  c                 ^   | j         }|rlt          j        t          d          5  d|d         j        d d <   d d d            n# 1 swxY w Y   |d         j        dk                                    sJ d S d|d         j        d d <   |d         j        dk                                    sJ d S )Nz	read-onlyri   r   rW   )r   rm   rn   r   r   r   )r   r   r;   s      r   test_frame_setitem_view_directr<    s     
*	+B -]:[999 	$ 	$"#BuIQQQ	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$5	 A%**,,,,,,,5	5	 A%**,,,,,,,s   AAAc                    | j         }|r9t          j                    5  d|d         d<   d d d            d S # 1 swxY w Y   d S d}t          j        t
          |          5  d|d         d<   d d d            d S # 1 swxY w Y   d S Nr-   rW   rf   zAA value is trying to be set on a copy of a slice from a DataFrameri   )r   rM   raises_chained_assignment_errorrm   rn   r   )r   r   r;   rr   s       r   test_frame_setitem_copy_raisesr@    s%    
*	+B !/11 	! 	! BuIe	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! R]/s;;; 	! 	! BuIe	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   6:: A99A= A=c                 `   | j         }|}|                                }|r7t          j                    5  d|d         d<   d d d            n# 1 swxY w Y   n@d}t	          j        t          |          5  d|d         d<   d d d            n# 1 swxY w Y   |}t          j        ||           d S r>  )r   r]   rM   r?  rm   rn   r   rN   )r   r   r   r   r;   rr   r   s          r    test_frame_setitem_copy_no_writerB    s:    -.EH	B !/11 	! 	! BuIe	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! R]/s;;; 	! 	! BuIe	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! F&(+++++s#   AAA4BBB)numpyr4   rm   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr   r   r   r   r   r   r	   r
   pandas._testing_testingrM   r   r   r  skip_array_manager_invalid_testr<  r@  rB  r   r   r   <module>rL     sq        . . . . . . ) ) ) ) ) ) ) ) )                             m, m, m, m, m, m, m, m,`', ', ', ', ', ', ', ',T #- - $#-! ! !, , , , ,r   