
    zhh0                        d dl m Z  d dlZd dlZd dlmZ d dlmc mZ	 d dl
mZ d dlmZ d dlmZmZmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z( d dl)m*Z* d d	l+m,Z,  G d
 d          Z- G d d          Z. G d d          Z/ G d d          Z0 G d d          Z1 G d d          Z2 G d d          Z3d Z4d Z5dS )    )datetimeN)SettingWithCopyWarning)	_registry)is_object_dtype)CategoricalDtypeDatetimeTZDtypeIntervalDtypePeriodDtype)Categorical	DataFrameDatetimeIndexIndexIntervalIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timestampcut
date_rangenotnaperiod_range)SparseArray)BDayc                   j   e Zd Zd Zej                            dg d          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                            d ed           ed          f edd           edd          f edd           edd          fg          d             Zej                            d d! ej        D             d"d#gz             d$             Zd% Zej                            d&g d'          d(             Z ej                            d&g d'          d)             Z!d* Z"d+ Z#d, Z$d- Z%ej                            dg d.          d/             Z&ej                            d0d1d1gg          d2             Z'd3 Z(d4 Z)ej                            d5g d6g d7g          d8             Z*d9 Z+d: Z,d; Z-d< Z.d= Z/ej                            d>g d?g d@dAfg dBg d@dAfg dCg d@dAfg dDg dEdFfg dGg dHdIfg dJg dHdKfg          dL             Z0dM Z1ej                            dNg dOdP e2g dQg dQg dQgg dOR          fdSdTgdPdUg e2g dVg dWg dXgg dOR          fg dY e3j4        g dZe3j5        [           e2g dZg dZg dZgg dYR          fg d\g dZg d]g d^g e2g d_g d`g dagg dOR          fg db e3j4        g dZg d]g d^ge3j5        [           e2g dcg ddg degg dOR          fdfdSg e2dPdUgdgdhgdidjggdfdSgR           e2g dkg dlg dmgg dYR          fg          dn             Z6do Z7dp Z8dq Z9dr Z:ds Z;dt Z<e=j>        du             Z?ej                            dvi dwdxig          dy             Z@dz ZAd{ ZBd| ZCd} ZDd~ ZEd ZFdS )TestDataFrameSetItemc           	          G d dt                     }dg}t          |          }t          ddgi|          }d|d<   d	| |d
          <   t          ddgddg |d
          d	gi|          }t          j        ||           d S )Nc                       e Zd ZdS )@TestDataFrameSetItem.test_setitem_str_subclass.<locals>.mystringN)__name__
__module____qualname__     _/var/www/histauto/venv/lib/python3.11/site-packages/pandas/tests/frame/indexing/test_setitem.pymystringr!   .   s        Dr&   r(   z2020-10-22 01:21:00+00:00a   index   b   c)strr   r   tmassert_equal)selfr(   datar,   dfexpecteds         r'   test_setitem_str_subclassz.TestDataFrameSetItem.test_setitem_str_subclass,   s    	 	 	 	 	s 	 	 	 ,,d##aSz///388C==cA3aS((3--!EUSSS
H%%%%%r&   dtype)int32int64uint32uint64float32float64c                     t           j                            d                              ddt	          |                    }t          j        ||          ||<   ||         j        j        |k    sJ d S )Nr-   r*   
   r9   )nprandomdefault_rngintegerslenarrayr9   name)r4   r9   float_framearrs       r'   test_setitem_dtypez'TestDataFrameSetItem.test_setitem_dtype9   sn    
 i##A&&//2s;7G7GHHXc777E5!',555555r&   c                     t           j                            d                              t	          |          df          }||ddg<   t          j        |ddg         j        |           d S )Nr-   AB)rC   rD   rE   standard_normalrG   r2   assert_almost_equalvalues)r4   rJ   r5   s      r'   test_setitem_list_not_dataframez4TestDataFrameSetItem.test_setitem_list_not_dataframeC   se    y$$Q''77[9I9I18MNN"&S#J
{C:6=tDDDDDr&   c                    t          g dg ddt          g dd                    }t          g dt          g d	d          d
          }d}t          j        t
          |          5  ||d<   d d d            n# 1 swxY w Y   t          t          j                            d          	                    ddd          g d          }d}t          j        t
          |          5  |
                    ddg                                          |d<   d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t                      |d<   d d d            d S # 1 swxY w Y   d S )Nr*   r-   r/   )def)barbazr)   r.   r0   foorI   r+   )ghij)r)   r.   r0   r)   fizr,   rI   z/cannot reindex on an axis with duplicate labelsmatchnewcolr-   r   )   rg   r)   r.   r0   rV   columnszDCannot set a DataFrame with multiple columns to the single column grr.   r0   grz7Cannot set a DataFrame without columns to the column gr)r   r   r   pytestraises
ValueErrorrC   rD   rE   rF   groupbycount)r4   r6   sermsgs       r'   test_setitem_error_msmgsz-TestDataFrameSetItem.test_setitem_error_msmgsH   sZ   IIooo66e444
 
 
    ,,,5999
 
 

 @]:S111 	 	BxL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 I!!!$$--aF;;(((
 
 

 U]:S111 	6 	6zz3*--3355BtH	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 H]:S111 	# 	# {{BtH	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s6   ,A>>BB+-D$$D(+D(E++E/2E/c                    d}d}t          t          |                    }t          j                            d                              |          }t          |          D ]}|||<   t          t          j        ||                              ||          t          |                    }t          j	        ||           d S )NrA      r+   r-   )
r   rangerC   rD   rE   rP   repeatreshaper2   assert_frame_equal)r4   NKr6   new_colr`   r7   s          r'   test_setitem_benchmarkz+TestDataFrameSetItem.test_setitem_benchmarkf   s    U1XX&&&)''**::1==q 	 	ABqEERYw22::1a@@aQQQ
b(+++++r&   c                 4   t          t          j                            d                              d          t          j        d          g d          }|                    dd|d                    |                    dd	|d
                    |d                             d          |d<   |j        }t          t          j
        d          gdz  t          j
        d          gz   g d          }t          j        ||           |d                             d          |d<   |j        }t          t          j
        d          gdz  t          j
        d          gdz  z   g d          }t          j        ||           |d                             d          |d<   |j        }t          t          j
        d          gdz  t          j
        d          gdz  z   t          j
        d          gz   g d          }t          j        ||           d S )Nr-   ru   r/   ru   )r0   r.   r)   r,   rj   r   r\   r)   rY   r0   r>   xr?   )r\   r0   rY   r.   r)   r   r+   rg   r:   y)r\   r0   rY   r.   r)   r   r   )r   rC   rD   rE   rP   arangeinsertastypedtypesr   r9   r2   assert_series_equalr4   r6   resultr7   s       r'   test_setitem_different_dtypez1TestDataFrameSetItem.test_setitem_different_dtypeq   s   I!!!$$44V<<)A,,#OO
 
 

 			!UBsG$$$
		!UBsG$$$
 S'..++3Xi  !A%))<)<(==444
 
 
 	vx000 S'..++3Xi  !A%))<)<(=(AA444
 
 
 	vx000S'..))3Xi  !A%))<)<(=(AARXgEVEVDWW999
 
 
 	vx00000r&   c                     t          g d          }|j        |d<   g d|d<   t          dg dig ddg          }t          j        ||           d S )NrN   rO   Cr+   Xr   r   z)r5   r,   rj   )r   r,   r2   ry   r4   r6   exps      r'   test_setitem_overwrite_indexz1TestDataFrameSetItem.test_setitem_overwrite_index   su     ___---(3!//3'
 
 
 	b#&&&&&r&   c                    t                      }g d|d<   t          dg di          }t          j        ||           t          t          g                     }g d|d<   t          dg di          }t          j        ||           d S )NrU   r\   ri   )r   r2   ry   r   r4   r6   r7   s      r'   test_setitem_empty_columnsz/TestDataFrameSetItem.test_setitem_empty_columns   s    
 [[II5	eYYY/00
b(+++uRyy)))II5	eYYY/00
b(+++++r&   c                     t          ddd          }t          t          j        t	          |                              }||d<   |d         j        t          j        d          k    sJ d S )Nz1/1/2000 00:00:00z1/1/2000 1:59:5010s)freqr+   rN   M8[ns])r   r   rC   r   rG   r9   )r4   rngr6   s      r'   %test_setitem_dt64_index_empty_columnsz:TestDataFrameSetItem.test_setitem_dt64_index_empty_columns   sh    ,.@uMMMRYs3xx001113#w} 2 2222222r&   c                     t          t          d                    }t          dd                              d          |d<   t          t          dd          ggdz  t          d          dg          }t	          j        ||           d S )	Nr/   r+   20130101UTCtznsnowr   )r   rv   r   as_unitr2   ry   r   s      r'   $test_setitem_timestamp_empty_columnsz9TestDataFrameSetItem.test_setitem_timestamp_empty_columns   s    U1XX&&&jU333;;DAA5	
u---./!3588eW
 
 
 	b(+++++r&   c                 .   t          j        g dg d          }t          t          d          dg          }dt	          |           dt	          |           d}t          j        t          |	          5  ||d
<   d d d            d S # 1 swxY w Y   d S )N)r   r*   r*   r   r*   r-   r[   rA   rY   ri   zLength of values \(z$\) does not match length of index \(z\)rd   r\   )r   
from_codesr   rv   rG   rl   rm   rn   )r4   catr6   rr   s       r'   2test_setitem_wrong_length_categorical_dtype_raiseszGTestDataFrameSetItem.test_setitem_wrong_length_categorical_dtype_raises   s    $%7%7%7IIuRyy5'222=3s88 = =14R= = = 	 ]:S111 	 	BuI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7B

BBc                     t          g dg dd          }t          g d          }||d<   t          |d          }t          j        |d         |           d S )Nr[         ?       @      @c_1n_1r   r   r*   
new_columnr]   )r   r   r   r2   r   )r4   r6   sp_arrayr7   s       r'   test_setitem_with_sparse_valuez3TestDataFrameSetItem.test_setitem_with_sparse_value   sj    GGHHyyy))#<(666
r,/:::::r&   c                     t          g dg dd          }t          t          g d          g d          }||d<   t          t          g d          d	          }t          j        |d         |           d S )
Nr[   r   r   r   )r-   r*   r   r+   r   )r*   r   r   r]   )r   r   r   r2   r   )r4   r6   	sp_seriesr7   s       r'   (test_setitem_with_unaligned_sparse_valuez=TestDataFrameSetItem.test_setitem_with_unaligned_sparse_value   s    GGHH;yyy11CCC	$<+iii00|DDD
r,/:::::r&   c                     t          dd          g}t          g           }||d<   t          d|idg          }t          j        ||           d S )Nz2003-12Dr)   ri   )r   r   r2   ry   )r4   r5   r   r7   s       r'   #test_setitem_period_preserves_dtypez8TestDataFrameSetItem.test_setitem_period_preserves_dtype   sY    y#&&'2sc4[3%888
fh/////r&   c           	      |   t          t          g dd          t          g dt                    t          g dt                    t          g dd          d          }t          t          g d          t          g t                    t          g t                    t          g d          d          }t          g d          D ]X\  }}t	          |          t          |          t          |          t          j        |          d|j        |j        d         <   Yt          j
        ||           d S )N)r   r*   r-   r;   rB   rU   r<   rh   r   )r   r   float	enumerateintrC   r<   locshaper2   ry   )r4   r7   r6   idxr.   s        r'   "test_setitem_dict_preserves_dtypesz7TestDataFrameSetItem.test_setitem_dict_preserves_dtypes   sD   IIIW555IIIU333IIIU333IIIX666	 
 
 Bg...Be,,,Be,,,Bh///	 
 
  			** 	 	FCXX1XX1XXYq\\	# #BF28A; 	b(+++++r&   z	obj,dtypez2020-01Mr   ru   )leftrightr;   r   z
2011-01-01z
US/Easternr   s)unitr   c                     t          g dt          |gdz  |          d          }t          dg di          }||d<   t          j        ||           d S )NrU   r/   rB   )r   objr   r   r   r   r2   ry   )r4   r   r9   r7   r6   s        r'   test_setitem_extension_typesz1TestDataFrameSetItem.test_setitem_extension_types  sh     YYYvseaiu7U7U7UVVWWyyy)**5	
b(+++++r&   ea_namec                 P    g | ]#}t          |j        t                    |j        $S r%   )
isinstancerI   property).0r9   s     r'   
<listcomp>zTestDataFrameSetItem.<listcomp>  s<     	
 	
 	
ej(33		
J	
 	
 	
r&   zdatetime64[ns, UTC]	period[D]c                     t          dg          }dg||<   t          ddg|dgi          }t          j        ||           d S )Nr   r*   r   r2   ry   )r4   r   r   r7   s       r'   test_setitem_with_ea_namez.TestDataFrameSetItem.test_setitem_with_ea_name  sO     A3#wa!gs344
fh/////r&   c                    t          j        ddgd          }t          |                                          }||d<   t	          dd gdd gdd          }t          j        ||           t          j        ddgd          }||d<   t          j        |d         |d                    t          j        |d         	                                |           d S )	Nr*   natdatetime64[ns]rB   new)r   r   datetime64[s]r   )
rC   rH   r   to_framer   r2   ry   r   assert_numpy_array_equalto_numpy)r4   data_nsr   r7   data_ss        r'   6test_setitem_dt64_ndarray_with_NaT_and_diff_time_unitszKTestDataFrameSetItem.test_setitem_dt64_ndarray_with_NaT_and_diff_time_units(  s    (Au:-=>>>))++u!TAt9==EUVVV
fh/// 1e*O<<<u
vay(1+666
#F5M$:$:$<$<fEEEEEr&   r   )r_   mr   msr   r   Yc                    d}t          j        d| d          }t          j        |t           j                                      |          }|dv r|}n|                    d          }t          dt          j        |          it          j        |                    }|||<   ||         j        |j        k    sJ ||         j        |k                                    sJ d S )	Nd   M8[]rB   )r   r   r   intsr+   	rC   r9   r   r;   viewr   r   rR   allr4   r   nr9   valsex_valsr6   s          r'   -test_frame_setitem_datetime64_col_other_unitszBTestDataFrameSetItem.test_frame_setitem_datetime64_col_other_units6  s     t''y"(+++0077;GG kk/22G	!-RYq\\BBB4$x~....47*//1111111r&   c                    d}t          j        d| d          }t          j        |t           j                                      |          }|                    d          }t          dt          j        |          it          j        |                    }t          j        |t           j                                      d          |d	<   ||d	<   |d	         j        |k                                    sJ d S )
Nr   r   r   rB   r   r   r+   r   datesr   r   s          r'   6test_frame_setitem_existing_datetime64_col_other_unitszKTestDataFrameSetItem.test_frame_setitem_existing_datetime64_col_other_unitsK  s     t''y"(+++0077++.//	!-RYq\\BBBi22277AA7 77"g-224444444r&   c                 X   |}|d                              d          }||d<   t          j        |d         t          |d                     d|d<   ||d<   t          j        |d         t          |d                     |d= |j        j        d         }|j        j        d         }t          j        ||           |j        j        }|j        j        }|s%|"t          |          t          |          k    sJ n"t          |          t          |          k    sJ |
                                }	t          |	j        d<   t          |	j        d	<   |	d         }
t          j        t          |
          t          g d
d                     t          j        |	j        |j                   d S )NrO   r\   r   r]   r   r*   r-   )r*   r*   r*   r-   )TFT)renamer2   r   r   _mgrarraysassert_extension_array_equal_ndarraybaseidcopyr   ilocr   r   )r4   timezone_frameusing_copy_on_writer6   r   v1v2v1basev2basedf2r   s              r'   test_setitem_dt64tzz(TestDataFrameSetItem.test_setitem_dt64tz\  s   gnnU## 3
r#ws(=(=(=>>>33
r#ws(=(=(=>>>sG
 W^AW^A
'B///!!" 	,>bjjBvJJ&>&>&>&>f::F++++ ggiiS
uV}}f5H5H5Hs.S.S.STTT
sz2955555r&   c                    t          ddd          }t          t          j                            d                              d          |          }||d<   t          |d                   }t          j        ||d	
           |j	        dk    sJ |j	        dk    sJ |
                                                    d          }t          |j        t                    sJ t          j        |j        |           d S )Nz1/1/2000ru   r,   )periodsrI   r-   r   r+   r   Fcheck_names)r   r   rC   rD   rE   rP   r   r2   assert_index_equalrI   reset_index	set_indexr   r,   r   )r4   r   r6   rss       r'   test_setitem_periodindexz-TestDataFrameSetItem.test_setitem_periodindex~  s    :qw???ry,,Q//??GGsSSS72g;
b#59999w'!!!!x7""""^^''00"(K00000
bh,,,,,r&   c                    t          g dg dd          }t          j        ddgddgddgg          }||ddg<   t          g dg dg d	g d
d          }|d                             |j                  |d<   |d                             |j                  |d<   |d         j        |j        k    sJ |d         j        |j        k    sJ t          j        ||           d S )N)onetwothreerU   r)   r.   r*   r/   ru   r0   rV   r*   r/   ru   r*   r*   r*   rh   )r   rC   rH   r   r9   r2   ry   r4   r6   rK   r7   s       r'   'test_setitem_complete_column_with_arrayz<TestDataFrameSetItem.test_setitem_complete_column_with_array  s   444999EEFFhAAA/00C:,,,YYYYYY	 
 
 !,,SY77 ,,SY77}"ci////}"ci////
b(+++++r&   c                     t          dddd          }t          |          }t          dg did          }|j        |j        d d <   t	          j        ||           d S )	Nz
2016-01-01	   r   rN   )r	  r   rI   )	r   r   r   r   r   r   r   r   r   r   rB   )r   r   	_na_valuer   r2   ry   )r4   r   r   r7   s       r'   test_setitem_period_d_dtypez0TestDataFrameSetItem.test_setitem_period_d_dtype  su    <3GGG3QQQR
 
 
 AAA
fh/////r&   )f8i8u8c                 \   t          g d|          }t          t          j                            d                              d          |          }g d|d<   t          g dt                    }|d	k    rt          g d
t                    }t          j        |j	        |           d S )NrU   rB   r-   )r/   r/   ri   r[   F)r*   r-   r/   Fr  )r   r   r   F)
r   r   rC   rD   rE   rP   objectr2   r  rj   )r4   r9   colsr6   expected_colss        r'   $test_setitem_bool_with_numeric_indexz9TestDataFrameSetItem.test_setitem_bool_with_numeric_index  s     YYYe,,,ry,,Q//??GGQUVVV#OO5	...f===D==!"8"8"8GGGM
bj-88888r&   indexerrO   c                    t          ddg          }t          dddgi          }|||<   t          t          j        gdz  ddgd          }|d                             d          |d<   t	          j        ||           d S )NrN   rO   ri   r*   r-   rN   rO   r"  )r   rC   nanr   r2   ry   )r4   r&  r6   otherr7   s        r'   #test_setitem_frame_length_0_str_keyz8TestDataFrameSetItem.test_setitem_frame_length_0_str_key  s     Sz***3A-((7BF8a<q!f==>> ,,X66
b(+++++r&   c           
         g ddz  }t          t          d          |          }d|j        d<   d|j        d d df<   d	|d
<   t          g dt          j        ddt          j        ddgt          j        ddt          j        ddggd          }|d                             t          j                  |d<   |d                             t          j                  |d<   ||_        t          j	        ||           d S )Nr   r-   r/   r   )r   r/   )r   rN   )r*   rg   rO   r-   ru   r   )r   r*   r-   r/   rg   ru   r*   rg   ru   r"  rB   )
r   rv   r   rC   r)  r   r;   rj   r2   ry   )r4   r#  r6   r7   s       r'   $test_setitem_frame_duplicate_columnsz9TestDataFrameSetItem.test_setitem_frame_duplicate_columns  s    "U1XXt444vqqq#v3"""Arvq!,Arvq!,
 
 
 
 qk((22qk((22
b(+++++r&   c                 \   g ddz  }t          t          d          |          }t          j        t          d          5  d|dg<   d d d            n# 1 swxY w Y   |j        d d d df         }t          j        t          d          5  d|dg<   d d d            d S # 1 swxY w Y   d S )	Nr   r-   r/   r   "Columns must be same length as keyrd   )r   r/   ru   rN   )r   rv   rl   rm   rn   r   )r4   r#  r6   r  s       r'   2test_setitem_frame_duplicate_columns_size_mismatchzGTestDataFrameSetItem.test_setitem_frame_duplicate_columns_size_mismatch  s<   "U1XXt444]:-QRRR 	" 	"!BuI	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" gaaa!en]:-QRRR 	# 	#"CJ	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s$   AAAB!!B%(B%r#  r[   )r)   r)   r)   c                     t          g dg|          }t          ddggddg          }d}t          j        t          |          5  ||d	<   d d d            d S # 1 swxY w Y   d S )
NrU   ri   rA      rV   rW   r0  rd   r)   r   rl   rm   rn   )r4   r#  r6   rhsrr   s        r'   #test_setitem_df_wrong_column_numberz8TestDataFrameSetItem.test_setitem_df_wrong_column_number  s     			{D111"b
S#J7772]:S111 	 	BsG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"Ac                 &   t          g dgg d          }t          g dgg d          }||ddg<   t          g dgg d          }t          j        ||           ||ddg<   t          g dgg d	          }t          j        ||           d S )
NrU   r)   r.   r.   ri   rA   r3     r)   r.   r0   )rA   r3  r:  rA   )r)   r.   r.   r0   r   r4   r6   r5  r7   s       r'   /test_setitem_listlike_indexer_duplicate_columnszDTestDataFrameSetItem.test_setitem_listlike_indexer_duplicate_columns  s    			{OOO<<<@@@C:lll^___EEE
b(+++C:.../9M9M9MNNN
b(+++++r&   c                     t          g dgg d          }t          ddggddg          }d}t          j        t          |	          5  ||ddg<   d d d            d S # 1 swxY w Y   d S )
NrU   r8  ri   rA   r3  r)   r.   r0  rd   r4  )r4   r6   r5  rr   s       r'   @test_setitem_listlike_indexer_duplicate_columns_not_equal_lengthzUTestDataFrameSetItem.test_setitem_listlike_indexer_duplicate_columns_not_equal_length  s    			{OOO<<<"b
S#J7772]:S111 	! 	! BSzN	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   
AA#&A#c                    t          dt          d          i          }t          |d         d          }t          |j        j        t                    sJ ||d<   t          j        |          |d<   |j	        |d<   t          j        |j	                  |d<   |
                    t                    |d<   t          |d         j        t                    sJ t          |d         j        j        j        t                    sJ t          |d         j        t                    sJ t          |d         j        j        j        t                    sJ t          |d         j        t                    sJ t          |d         j        t                    sJ t          |d                   sJ d	 }t!          j         ||j                   ||j                             t!          j         ||j                   ||j                  d
           t!          j         ||j                   ||j                  d
           t!          j         ||j                   ||j                  d
           t!          j        |d         |d                    t!          j        |d         |d         d
           t!          j        |d         |d                    t!          j        |d         |d         d
           d S )NrN   rA   ru   rO   r   r   EFc                 D    t          t          j        |                     S N)r   rC   rH   r   s    r'   <lambda>z=TestDataFrameSetItem.test_setitem_intervals.<locals>.<lambda>  s    eBHQKK(( r&   Fr
  )r   rv   r   r   r   
categoriesr   rC   rH   rR   r   r"  r9   r   r	   r   r2   r  rO   r   r   r   )r4   r6   rq   r0   s       r'   test_setitem_intervalsz+TestDataFrameSetItem.test_setitem_intervals  s   U2YY'(("S'1oo#',m<<<<<
 3(3--3*3(3:&&3**V$$3"S'-)9:::::"S'+06FFFFF"S'-)9:::::"S'+06FFFFF "S'-77777"S'-77777 r#w''''' )(
aaggqqww///
aaggqqwwEBBBB
aaggqqwwEBBBB
aaggqqwwEBBBB 	r#w3000
r#w3UCCCC 	r#w3000
r#w3UCCCCCCr&   c                 b   t          dt          t          d                                        d          i          }|j        j                            ddg          |_        t          dt          ddg                              ddg          i          }t          j	        ||           d S )Nr_   mncategoryr   r   )
r   r   listr   r_   r   reorder_categoriesr   r2   ry   r   s      r'   test_setitem_categoricalz-TestDataFrameSetItem.test_setitem_categorical-  s    VDJJ//66zBBCDDtx**C:66+sCj))<<c3ZHHI
 
 	b(+++++r&   c                     t          g d          }t          dg|          }g |d<   t          dg|          }t          j        |j        |j                   d S )Nr   r]   rN   rj   r,   )r   r   r2   r  r,   )r4   r,   r   r7   s       r'    test_setitem_with_empty_listlikez5TestDataFrameSetItem.test_setitem_with_empty_listlike6  sb    bu%%%C5666scU%888
flHN;;;;;r&   zcols, values, expected)r   r   r   r)   r*   r-   r/   rg   rg   )r   r   r   r)   )r   rO   rO   r)   )r   rO   r)   rU   r/   )rO   r   r)   )r/   r-   r*   r*   )r   r)   rO   r-   c                 v    t          |g|          }|d         |d<   |d         j        d         }||k    sJ d S )Nri   r)   r   )r   rR   )r4   r#  rR   r7   r6   r   s         r'   test_setitem_same_columnz-TestDataFrameSetItem.test_setitem_same_column>  sL     x...S'3C"!!!!!!r&   c                    g dddgg df}t          j        |          }t          dd          }t          j                            d                              d	d
t          |          t          |          f          }t          |||          }|j	        j
                                        |d         d d          }}t          j                            d                              |           |d         j        |d d df         |d<   t          j        |d         |d                    t          j                            d                              |           |d         j        ||f         |d<   t          j        |d         |d                    t          j                            d                              |           |d         j        ||f         |d<   t          j        |d         |d                    d S )N)jimjoejoliefirstlast)r   centerr   20141006   )r	  r-   r*   i  rO  rW  rU  )rW  rY  )rV  rX  )rW  rX  )rV  rY  )r   from_productr   rC   rD   rE   rF   rG   r   r,   rR   r   shuffler   r2   ry   )r4   itr#  r,   r   r6   r`   ra   s           r'   test_setitem_multi_indexz-TestDataFrameSetItem.test_setitem_multi_indexP  s    %$$w&79T9T9TT&r**:r222y$$Q''00D3u::s4yy:QRRtT777x##%%r"vaaay1
	a  ((+++wKOAtttG,5	
biG555
	a  ((+++!"348A>
b!12B7H4IJJJ
	a  ((+++ !348A>?
b126H3IJJJJJr&   zcolumns,box,expectedrN   rO   r   r      )rc  rc  rc  rc  ri   r   r      )r*   r-   rc  rd  )r/   rg   rc  rd  ru      rc  rd  r   )rc  rd  r  rB   rO   r   r   r9  )         )r*   rc  rd  r  )r/   rA   r3  r:  )ru   rh  ri  rj  )r   rN   r   )rd  r-   rc  r  )r3  rg   rA   r:  )ri  rf  rh  rj  rN   r  rA   r3  r:  )rc  r-   rd  )r  rg   rA   )r3  rf  r:  c                 r    t          ddgddgddggddg	          }|||<   t          j        ||           d S )
Nr*   r-   r/   rg   ru   rf  rN   rO   ri   r   )r4   rj   boxr7   r6   s        r'   !test_setitem_list_missing_columnsz6TestDataFrameSetItem.test_setitem_list_missing_columnsh  sP    f AAA/#sDDD7
b(+++++r&   c                     t          t          |d         |d                             }||d<   |d         }t          ||j        d          }t	          j        ||           d S )NrN   rO   tuplesrc   )rK  zipr   r,   r2   r   )r4   rJ   ro  r   r7   s        r'   test_setitem_list_of_tuplesz0TestDataFrameSetItem.test_setitem_list_of_tuples  sg    c+c*K,<==>> &HX&&(9III
vx00000r&   c                     t          g dg dd          }d dD             }d|j        |<   t          g dg dd          }t          j        ||           d S )	NrU   rg   ru   rf  r  c              3      K   | ]}|V  d S rC  r%   r   r   s     r'   	<genexpr>zCTestDataFrameSetItem.test_setitem_iloc_generator.<locals>.<genexpr>  "      %%1%%%%%%r&   r   r*   r  rg   r*   r*   r   r   r2   ry   r4   r6   r&  r7   s       r'   test_setitem_iloc_generatorz0TestDataFrameSetItem.test_setitem_iloc_generator  st    YYYYYY7788%%f%%%999999==>>
b(+++++r&   c                     t          g dg dd          }d dD             }d|j        |df<   t          g dg dd          }t          j        ||           d S )NrU   rs  r  c              3      K   | ]}|V  d S rC  r%   ru  s     r'   rv  zSTestDataFrameSetItem.test_setitem_iloc_two_dimensional_generator.<locals>.<genexpr>  rw  r&   r   r*   rx  ry  rz  s       r'   +test_setitem_iloc_two_dimensional_generatorz@TestDataFrameSetItem.test_setitem_iloc_two_dimensional_generator  sx    YYYYYY7788%%f%%%
999999==>>
b(+++++r&   c                    t          dd          }t          |t          g d                    }t          d|t          j                  |d<   t          d	|d
          |d	<   t          d|d
          |d<   t          d|t          j                  |d<   |j        }t          t          j        t          t          t          j        gt          d                    }t          j
        ||           d S )Nr   S24)rI   r9   r1   rB   r   r)   )rI   r,   r9   r.   S64r0   rV   abcdr+   )r   r   r   rC   r<   uint8r   r"  rK  r2   r   )r4   r,   r6   r   r7   s        r'   (test_setitem_dtypes_bytes_type_to_objectz=TestDataFrameSetItem.test_setitem_dtypes_bytes_type_to_object  s    D...UE"E,B,B,BCCCcbi@@@3ce<<<3ce<<<3cbh???329ffbh?tF||TTT
vx00000r&   c                 T   t          ddgddgd                              ddd          }t          d|j        	          }|d
         |j        |d
f<   |d         |j        |df<   t          ddgddgd                              ddd          }t          j        ||           d S )Nr/   rg   ru   rf  r  r;   Int64Fr+   r)   r.   )r   r   r   r,   r   r2   ry   )r4   r   maskr7   s       r'    test_boolean_mask_nullable_int64z5TestDataFrameSetItem.test_boolean_mask_nullable_int64  s    !Qq!f5566==((
 
 e6<000 &s
49 &s
49Aq6A7788??((
 
 	fh/////r&   c                     t          dddgi          }t          ddgd          |d<   t          dddgid          }t          j        ||           d S )Nr)   r*   r-   r  rB   r   r   s      r'    test_setitem_ea_dtype_rhs_seriesz5TestDataFrameSetItem.test_setitem_ea_dtype_rhs_series  sd    aV}%%!Qw///3cAq6]':::
b(+++++r&   c                    t          t          j        d          t          j        d          dt          j        d                    }t          j        d          }t          t          j        d          t	          g d                    }||d<   t          j        t                    5  t          j        |          |d	<   d d d            n# 1 swxY w Y   t          j	        ||           d S )
NrA   )np-array	np-matrixr+   )rA   r*   r1   rB   r   r  r  )
r   rC   onesr   r   r2   assert_produces_warningPendingDeprecationWarningmatrixry   )r4   r7   r)   r6   s       r'   test_setitem_npmatrix_2dz-TestDataFrameSetItem.test_setitem_npmatrix_2d  s    272;;??ryQS}}
 
 
 GGRYr]]E"E4J4J4JKKK: '(ABB 	+ 	+ illB{O	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	b(+++++s   /CCCr   rV   r)   c                    t          ddgddgd|          }ddd|j        d d d	f<   d
dd|j        d d df<   dd
i|j        d d df<   t          ddgddgd|d
dgt          j        d
gd          }t	          j        ||           d S )Nr*   r-   r/   rg   r  r      )r*   r   r)   ru   rf  r   r*   r0   rW   )r0   rW   )r   r   rC   r)  r2   ry   )r4   r   r6   r7   s       r'   %test_setitem_aligning_dict_with_indexz:TestDataFrameSetItem.test_setitem_aligning_dict_with_index  s     aV1a&99D9:: S))qqq#v1qqq#vQqqq#v*Aq6QQTQAbfa[QQQ
 
 	b(+++++r&   c                 j   t          dddgi          }t          dddgiddg          |d<   t          dt          j        dgi          }t          j        ||           t          dddgi          }|                    dt          dddgiddg                     t          j        ||           d S )Nr)   r*   r-   rA   r3  r+   r   )r   rC   r)  r2   ry   isetitemr   s      r'   test_setitem_rhs_dataframez/TestDataFrameSetItem.test_setitem_rhs_dataframe  s    aV}%%S2r(OAq6:::3cBFB<011
b(+++aV}%%
Ay#BxA???@@@
b(+++++r&   c                     t          ddgddgddgg          }t          ddd	gi|
          |d<   t          t          dd	g|
          ddgd          }t          j        ||           d S )Nr)   r.   r*   r-   r/   rg   rj   r5   rA   r3  rB   r  r   r4   any_numeric_ea_dtyper6   r7   s       r'   *test_setitem_frame_overwrite_with_ea_dtypez?TestDataFrameSetItem.test_setitem_frame_overwrite_with_ea_dtype   s    Sz!Q!Q0@AAAS2r(O3GHHH3RH,@AAAV 
 
 	b(+++++r&   c                 b   t          j        d           t          dddgi          }t          j        dd          5  t          ddgt                    |d<   d d d            n# 1 swxY w Y   t          ddgt          ddgt                    d	          }t          j	        ||           d S )
Npyarrowr)   r*   r-   zfuture.infer_stringTr.   rB   r  )
rl   importorskipr   pdoption_contextr   r"  r   r2   ry   r   s      r'   'test_setitem_string_option_object_indexz<TestDataFrameSetItem.test_setitem_string_option_object_index  s    I&&&aV}%%4d;; 	6 	6S#Jf555BsG	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6Aq6Sz0P0P0PQQRR
b(+++++s   A%%A),A)c                     t          ddgi          }|                                }d}||g         ||<   t          j        ||           d S )Nr  rA   r   r   r2   ry   )r4   r6   r7   col_names       r'   test_setitem_frame_midx_columnsz4TestDataFrameSetItem.test_setitem_frame_midx_columns  sP    
RD)**77998*~8
b(+++++r&   c                    t          dt          j        dgd          i          }t          dgd          |j        d d df<   t          dt          j        dgd          i          }t          j        ||           t          dt          j        dgd          i          }t          dgd          |j        d d df<   t          j        ||           d S )Nr)   rA   r  rB   r3  r  r   )r   rC   rH   r   r   r2   ry   r   r   s      r'   test_loc_setitem_ea_dtypez.TestDataFrameSetItem.test_loc_setitem_ea_dtype  s    RXrd$777899G444qqq#vc28RD#=#=#=>??
b(+++RXrd$777899t73331
b(+++++r&   c           	      *   t          t          d          gt                    }t          ddgi          }t	          j        t          d          5  ||j        d d df<   d d d            n# 1 swxY w Y   t	          j        t          d          5  ||d<   d d d            n# 1 swxY w Y   t          dgt          t          d          gd	          t          t          d          gd	          d
          }t	          j	        ||           d S )Nz
2019-12-31rB   r)   r*   inferrd   r.   r0   r   r[   )
r   r   r"  r   r2   r  FutureWarningr   r   ry   )r4   r   r6   r7   s       r'   test_setitem_object_inferringz2TestDataFrameSetItem.test_setitem_object_inferring(  s   Y|,,-V<<<aSz""'WEEE 	! 	! BF111c6N	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!'WEEE 	 	BsG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 SY|445=MNNNY|445=MNNN 
 
 	b(+++++s$   A--A14A1B%%B),B)N)Gr"   r#   r$   r8   rl   markparametrizerL   rS   rs   r}   r   r   r   r   r   r   r   r   r   r   r   r
   r   r	   r   r   r   ea_registryr   r   r   r   r   r  r  r  r  r%  r+  r.  r1  r6  r<  r>  rG  rM  rP  rS  ra  r   rC   rH   r;   rm  rq  r{  r~  r  r  r  td&skip_array_manager_not_yet_implementedr  r  r  r  r  r  r  r  r%   r&   r'   r   r   +   s       & & & [MMM 6 6 6E E E
# # #<	, 	, 	,#1 #1 #1J	' 	' 	', , ,3 3 3, , ,
 
 
; ; ;; ; ;0 0 0, , ,6 [VIC 0 01X1A&&&gw(G(GH	,<888S\:::	

 
, ,
 
, [	
 	
$+	
 	
 	
 !+
.	/	 	0 0	 	0F F F [V%I%I%IJJ2 2 KJ2( [V%I%I%IJJ5 5 KJ5  6  6  6D- - -, , ,&	0 	0 	0 [W&8&8&8999 9 :99 [Yse55, , 65,, , ,.	# 	# 	# [Vooo%GHH  IH
, 
, 
,! ! !*D *D *DX, , ,< < < [ !!!<<<3!!!<<<3!!!<<<3__iii+__iii+__iii+	

 
" "
 
"K K K0 [ %$$	!\\<<<>000   c
A	!\\<<<>000    "(333	999iii;___UUU  LLL,,,7	!\\???OOOD000    )))\\\<<<@QQQ	!\\???OOOD000   c
	Aq6Ar7RH5SzJJJ	YY


KKK8///  M-	
0 0b, ,c0 0b,1 1 1, , ,, , ,
1 
1 
10 0 0, , , ., , /.," [Vb3*%566	, 	, 76	,	, 	, 	,
, 
, 
,, , ,, , ,	, 	, 	,, , , , ,r&   r   c                   `    e Zd Zej        d             Zej        d             Zd Zd Zd Z	dS )TestSetitemTZAwareValuesc                 V    t          ddgd          }|                    d          }|S )Nz2013-1-1 13:00z2013-1-2 14:00rO   r]   z
US/Pacific)r   tz_localize)r4   naiver   s      r'   r   zTestSetitemTZAwareValues.idx<  s3    /1ABMMM--
r&   c                     t          t          j        |                                d          d          }|j        |j        k    sJ |S )Nr"  rB   rO   r]   )r   rC   rH   tolistr9   )r4   r   r7   s      r'   r7   z!TestSetitemTZAwareValues.expectedB  sE    "(3::<<x@@@sKKK~****r&   c                    t          t          j                            d                              d          dg          }||d<   |                    ddg          j                            d           |d<   |d         }t          |                    d	          	                    d           d
          }t          j        ||           d S )Nr-   r-   r*   rN   ri   rO   r   r*   r+   r   r]   )r   rC   rD   rE   rP   	to_seriesdt
tz_convertr   r  r2   r   )r4   r   r7   r6   r   comps         r'   test_setitem_dt64seriesz0TestSetitemTZAwareValues.test_setitem_dt64seriesH  s    ry,,Q//??GGRUQVWWW3--q!f---0;;DAA3CcnnU++77==CHHH
vt,,,,,r&   c                     t          t          j                            d                              d          dg          }||d<   |d         }t          j        ||           d S Nr-   r  rN   ri   rO   )r   rC   rD   rE   rP   r2   r   r4   r   r7   r6   r   s        r'   test_setitem_datetimeindexz3TestSetitemTZAwareValues.test_setitem_datetimeindexR  sc    ry,,Q//??GGRUQVWWW 3C
vx00000r&   c                     t          t          j                            d                              d          dg          }|                                |d<   |d         }t          j        ||           d S r  )r   rC   rD   rE   rP   to_pydatetimer2   r   r  s        r'   .test_setitem_object_array_of_tzaware_datetimeszGTestSetitemTZAwareValues.test_setitem_object_array_of_tzaware_datetimes[  so    ry,,Q//??GGRUQVWWW ##%%3C
vx00000r&   N)
r"   r#   r$   rl   fixturer   r7   r  r  r  r%   r&   r'   r  r  ;  sy        ^  ^
 ^  ^
- - -1 1 11 1 1 1 1r&   r  c                   J    e 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 )!TestDataFrameSetItemWithExpansionc                 n   t          g dg dd          }|d         }t          j        ddgddgdd	gg          |d
dg<   t          j        |          5  d|j        d<   d d d            n# 1 swxY w Y   |rt          g dd          }nt          g dd          }t          j        ||           d S )NrU   )rg   rg   rf  r  r)   g?g?g333333?g?      ?r0   rV   r   )r   r   r]   )r   r-   r/   )r   rC   rH   r2   assert_cow_warningr   r   r   )r4   r  warn_copy_on_writer6   rq   r7   s         r'   test_setitem_listlike_viewsz=TestDataFrameSetItemWithExpansion.test_setitem_listlike_viewsf  s   YYYYYY7788 g C:SzC:"FGGC: "#566 	  	 BGDM	  	  	  	  	  	  	  	  	  	  	  	  	  	  	   	5iiic222HHkkk444H
sH-----s   A,,A03A0c                     t          ddgddgg          }ddg|d<   t          g dg d	gg d
          }t          j        ||           d S )Nr*   r-   r/   rg   ru   rf  0 - Name)r*   r-   ru   )r/   rg   rf  )r   r*   r  ri   r   r   s      r'   .test_setitem_string_column_numpy_dtype_raisingzPTestDataFrameSetItemWithExpansion.test_setitem_string_column_numpy_dtype_raisingz  sh    AA'((Q:iii3=O=O=OPPP
b(+++++r&   c                 ,   t          g dd          }t          t          d                    |j        d d df<   t          dt          j        t          j        gdt          j        t          j        ggg d          }t          j        ||           d S )	Nr8  r?   rj   r9   r-   r)   r   r*   ri   )r   rK  rv   r   rC   r)  r2   ry   )r4   r  r6   r7   s       r'   'test_setitem_empty_df_duplicate_columnszITestDataFrameSetItemWithExpansion.test_setitem_empty_df_duplicate_columns  s    i@@@eAhhqqq#v 1bfbf"56
 
 
 	b(+++++r&   c           
         t          dt          j        t          j                            d                              ddd          d          i          }t          d t          ddd	          D                       }|                    dgd
          }t          |j
        t          ddd	          d|          }|j        }||d<   |j        }t          t          j        d          t          |d          gddg          }t!          j        ||           ||d<   |j        }t          t          j        d          t          |d          t          |d          gg d          }t!          j        ||           |d         }|d         }t!          j        |j        j        |           d|_        t!          j        |                                |                                           d S )Nvaluer-   r   i'  r   r:   rB   c                 "    g | ]}| d |dz    S )z - i  r%   r   r`   s     r'   r   zcTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtype.<locals>.<listcomp>  s*    OOOQ00q3w00OOOr&   i  T)by	ascendingi)  F)r   labelsr   )rF  orderedr+   r@  )r  r   r@  )r   rC   rH   rD   rE   rF   r   rv   sort_valuesr   r  rR   r   r   r9   r   r2   r   assert_categorical_equalr   rI   
sort_index)	r4   r6   r  rq   r   r   r7   result1result2s	            r'   -test_setitem_with_expansion_categorical_dtypezOTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtype  s   I))!,,55aDDG  
 
 OO%5#:N:NOOOPP^^yD^99"(E!UC00fMMMj 3Xg 0FE R R RSC.
 
 
 	vx000 3!! FEBBB FEBBB
 &%%
 
 
 	vx000S'S'
#GL$6<<< 
w1133S^^5E5EFFFFFr&   c                     t                      }d|d<   t          dg                              t          j                  }t	          j        ||           d S )Nr*   r\   ri   )r   r   rC   r;   r2   ry   r   s      r'   test_setitem_scalars_no_indexz?TestDataFrameSetItemWithExpansion.test_setitem_scalars_no_index  sO    [[5	eW---44RX>>
b(+++++r&   c                     d|j         vsJ |d         |d<   d|j         v sJ |d         }|d         }t          j        ||d           d S )Nr(  rN   Fr
  )rj   r2   r   )r4   rJ   r   r7   s       r'   test_setitem_newcol_tuple_keyz?TestDataFrameSetItemWithExpansion.test_setitem_newcol_tuple_key  sz    
 $% % % % !,C 0H[00000X&s#
vxUCCCCCCr&   c                 8   t          ddt                                }t          |t          d                    }t	          ddd          }t          |          }t          j        ||<   t          j        ||                   	                                sJ d S )	Nz1/1/2012z2/1/2012)startendr   rA   rO  i  r3  r*   )
r   r   r   rv   r   r   rC   r)  isnanr   )r4   rj   r5   ttss        r'   #test_frame_setitem_newcol_timestampzETestDataFrameSetItemWithExpansion.test_frame_setitem_newcol_timestamp  s    ::DFFKKKb		:::T2q!!q\\6RxR!!%%'''''''r&   c                     t          dddgi          }|j        |d<   d|j        ddgdf<   |j        dgd d f         }t          dgdgddg          }t          j        ||           d S )	Nr)   r.   r   FTr*   r  r+   )r   r,   r   r2   ry   r   s       r'   *test_frame_setitem_rangeindex_into_new_colzLTestDataFrameSetItemWithExpansion.test_frame_setitem_rangeindex_into_new_col  s    c3Z())(3%(t}c!"QQQC5u55aSAAA
fh/////r&   c                     t          ddgddgddgg          }t          ddd	gi|
          |d<   t          ddgddgt          dd	g|
          d          }t          j        ||           d S )Nr)   r.   r*   r-   r/   rg   r  rA   r3  rB   r0   r[   r   r  s       r'    test_setitem_frame_keep_ea_dtypezBTestDataFrameSetItemWithExpansion.test_setitem_frame_keep_ea_dtype  s    Sz!Q!Q0@AAAS2r(O3GHHH3VVRH,@AAA 
 
 	b(+++++r&   c                 j   t          t          d                    }t          j        dd          t          j        dd          dd|j        d	<   t          t          j        d
          t          j        d          dggt          d	g          g d          }t          j        ||           d S )Nabcri   ru   r   )r   H   23r[   r   z0 days 00:00:05z0 days 00:01:12r   )	r   rK  r  to_timedeltar   	Timedeltar   r2   ry   )r4   r   r7   s      r'   &test_loc_expansion_with_timedelta_typezHTestDataFrameSetItemWithExpansion.test_loc_expansion_with_timedelta_type  s    4;;///---#...
 

1
 l,--r|<M/N/NPTUV**$__
 
 

 	fh/////r&   N)r"   r#   r$   r  r  r  r  r  r  r  r  r  r  r%   r&   r'   r  r  e  s        . . .(, , ,, , ,+G +G +GZ, , ,
D 
D 
D( ( (0 0 0, , ,0 0 0 0 0r&   r  c                      e Zd Zd Zej                            dej        ej	        g          ej                            de
ej        eej        g          ej                            dg d          d                                     Zej                            de
ej        eej        g          ej                            dg d          d                         Zej                            dej        ej	        g          ej                            de
ej        eej        g          ej                            dg d          d                                     Zd	S )
TestDataFrameSetItemSlicingc                     t          t          j        d                    }d|dd <   t          j        d          }d|dd <   t          |          }t          j        ||           d S )N)r   r*   r*   )r   rC   zerosr2   ry   r  s       r'   test_setitem_slice_positionz7TestDataFrameSetItemSlicing.test_setitem_slice_position  sf    rx))**233hx  BCCS>>
b(+++++r&   r&  rl  r   rU   c                     t          g dgg dg|z  z   g d          } |g d           ||          dd <   t          g dgg dg|z  z   g d          }t          j        ||           d S Nr  r-   rg   rf  r[   ri   r9  r*   r   r4   r   rl  r&  r6   r7   s         r'   +test_setitem_slice_indexer_broadcasting_rhszGTestDataFrameSetItemSlicing.test_setitem_slice_indexer_broadcasting_rhs  s    
 			{iii[1_4oooNNN#lll++ABBiii[LLL>A+==WWW
b(+++++r&   c           	         t          g dgg dg|z  z   g d          } |g d          |j        t          t          d|dz                       <   t          g dgg dg|z  z   g d          }t	          j        ||           d S r  )r   r   rK  rv   r2   ry   )r4   r   rl  r6   r7   s        r'   *test_setitem_list_indexer_broadcasting_rhszFTestDataFrameSetItemSlicing.test_setitem_list_indexer_broadcasting_rhs  s     			{iii[1_4oooNNN),\\\):):U1a!e__%%&iii[LLL>A+==WWW
b(+++++r&   c                     t          g dg dgg dg|z  z   g d          } |g d           ||          dd <   t          g dgg dg|dz   z  z   g dd	          }t          j        ||           d S )
Nr  r   r  r[   ri   r9  r*   r"  r  r   r  s         r'   0test_setitem_slice_broadcasting_rhs_mixed_dtypeszLTestDataFrameSetItemSlicing.test_setitem_slice_broadcasting_rhs_mixed_dtypes  s    
 YY(III;?:OOO
 
 
 #lll++ABBYYK<<<.AE22#OO
 
 

 	b(+++++r&   N)r"   r#   r$   r   rl   r  r  r2   setitemr   r   rC   rH   rK  r  r  r  r	  r%   r&   r'   r  r    s       , , , [YRW(=>>[UVRXtRX$FGG[S))),,, , -, HG ?>, [UVRXtRX$FGG[S))),,, , -, HG, [YRW(=>>[UVRXtRX$FGG[S))),,, , -, HG ?>, , ,r&   r  c                       e Zd Zd Zd ZdS )TestDataFrameSetItemCallablec                     t          g dg dd          }g d|d <   t          g dg dd          }t          j        ||           d S )NrQ  re  r(  )r3  r:  rh  ri  c                     dS )NrN   r%   rD  s    r'   rE  zDTestDataFrameSetItemCallable.test_setitem_callable.<locals>.<lambda>*  s    S r&   r   r   s      r'   test_setitem_callablez2TestDataFrameSetItemCallable.test_setitem_callable'  sj    \\\==>>,,,==...\\\BBCC
b#&&&&&r&   c                     d }t          ddgddggt                    }|||dk    <   t          d|g|dgg          }t          j        ||           d S )Nc                     | dz   S )Nr*   r%   rD  s    r'   inczETestDataFrameSetItemCallable.test_setitem_other_callable.<locals>.inc1  s    q5Lr&   r]  r*   rB   r   )r   r"  r2   ry   )r4   r  r6   r7   s       r'   test_setitem_other_callablez8TestDataFrameSetItemCallable.test_setitem_other_callable/  sr    	 	 	 Q!R)88826
r3i#r344
b(+++++r&   N)r"   r#   r$   r  r  r%   r&   r'   r  r  &  s2        ' ' '
, 
, 
, 
, 
,r&   r  c                      e Zd Zej        ej                            dd d gddg          d                         Zej        	                    d	          ej                            d
e
ej        eg          d                         Zej                            d
e
ej        eg          d             Zej                            dej        ej        g          d             Zd Zej                            dddg          ej                            di ddgiddgig          d                         Zd Zd Zd ZdS )TestDataFrameSetItemBooleanMask	mask_typec                 8    | t          j        |           dz  k    S Nr-   )rC   absr6   s    r'   rE  z(TestDataFrameSetItemBooleanMask.<lambda>@  s    Ba' r&   c                 B    | t          j        |           dz  k    j        S r  )rC   r  rR   r  s    r'   rE  z(TestDataFrameSetItemBooleanMask.<lambda>@  s    R"&**q.5H4P r&   	dataframerH   )idsc                 `   |                                 } ||          }|                                 }t          j        ||<   |j                                         }t          j        |t          j        |          <   t          ||j        |j                  }t          j	        ||           d S )Nr   )
r   rC   r)  rR   rH   r   r,   rj   r2   ry   )r4   r  rJ   r6   r  r   r7   s          r'   test_setitem_boolean_maskz9TestDataFrameSetItemBooleanMask.test_setitem_boolean_mask=  s     y}} vt9>>###%6$ XRXrzJJJ
fh/////r&   z1Currently empty indexers are treated as all False)reasonrl  c                    t          dgdgdgd          }|t          k    r |g d          }n |g           }d}t          j        t          |          5  dg|j        |dgf<   d d d            d S # 1 swxY w Y   d S )	Nr)   r*   r[   r"  rB   z@Must have equal len keys and value when setting with an iterablerd   r.   )r   r   rl   rm   rn   r   )r4   rl  r6   r&  rr   s        r'   :test_setitem_loc_empty_indexer_raises_with_non_empty_valuezZTestDataFrameSetItemBooleanMask.test_setitem_loc_empty_indexer_raises_with_non_empty_valueQ  s     cU!A37788&==c"H---GGc"ggGP]:S111 	) 	)&'SBF7SE>"	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   A44A8;A8c                    t          dgdgdgd          } |dg          }d|d         z
  |j        |dgf<   t          dgdgdgd          }t          j        ||           d|j        |dgf<   t          j        ||           d S )	Nr)   r*   r[   FrA   r0   r.   r  )r   r   r2   ry   )r4   rl  r6   r&  r7   s        r'   1test_setitem_loc_only_false_indexer_dtype_changedzQTestDataFrameSetItemBooleanMask.test_setitem_loc_only_false_indexer_dtype_changed^  s    
 cU!A37788#ug,,!#bgw~C5s!==>>
b(+++!"w~
b(+++++r&   r&  c                     t          g dg dd          }|                                }|d         dk    } ||          |                             d           ||          |<   t          j        ||           d S )N)r*   rg   r-   r/   re  r  r)   r/   )r   r   r  r2   ry   )r4   r&  r6   r7   r  s        r'   "test_setitem_boolean_mask_aligningzBTestDataFrameSetItemBooleanMask.test_setitem_boolean_mask_aligningl  s     \\\==>>7799#w!|#GBKK-99#>>D
b(+++++r&   c                    t          g dddg          }t          g d          }g d}t          ||d|          }t          g d	g d
          }t          g d          }g d}t          ||d|          }|                                }	|	d         j                            g d
          |	d<   |d         dk    }
ddg||
<   t          j        ||	           d S )N)r)   r)   r.   r.   r)   r)   r)   r)   r.   )rF  )r_   r`   ra   klr   r   )r*   r*   r-   r-   r*   r*   r*   )catsrR   r+   )r)   r)   r0   r0   r)   r)   r)   r[   )r*   r*   r/   r/   r*   r*   r*   r*  r0   r-   )r   r   r   r   r   set_categoriesr2   ry   )r4   cats2idx2values2exp_multi_rowcatsfidxfvaluesfr6   	exp_fancyr  s              r'   test_setitem_mask_categoricalz=TestDataFrameSetItemBooleanMask.test_setitem_mask_categoricalu  s"    ???SRUJWWW88899'''!5G"D"DDQQQ///OOO
 
 
 88899'''99FFF!&&((	%f-1@@QQ	&&zS 84
b),,,,,r&   r9   r   r;   kwargsr,   r*   rj   rN   c                     ||d<   t          di |}|                                }d|||k    <   t          j        ||           d S )Nr9   /   r%   r  )r4   r9   r5  r6   r  s        r'   %test_setitem_empty_frame_with_booleanzETestDataFrameSetItemBooleanMask.test_setitem_empty_frame_with_boolean  sS      w    ggii28
b#&&&&&r&   c           
      l   t          t          d                    }g d}t          ||t          j        g dg dg dgt
                              }t          ||t          j        t          |          t          |          f                    }t          ||t          j        g dg dg d	gt
                              }d
||d|z  k    <   t          j	        ||           t          j        t          d          5  d
||j        d d
         dk    <   d d d            d S # 1 swxY w Y   d S )Nr/   r   )        r  r   )      ?r         @)r         @      @rB   )r,   rj   r5   )r;  r   r]  )r]  r]  r]  r]  r   zItem wrong lengthrd   r-   )rK  rv   r   rC   rH   r   r  rG   r2   ry   rl   rm   rn   r,   )r4   r   r#  df1r  r7   s         r'   test_setitem_boolean_indexingz=TestDataFrameSetItemBooleanMask.test_setitem_boolean_indexing  s   588nn ///???C5  
 
 
 c4bgs3xxT>S6T6TUUU???NNNLLLIQVWWW
 
 
  "C#)O
c8,,,]:-@AAA 	) 	)&(C	#2#"#	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   D))D-0D-c                     t          ddgddgdd          }|                                }t          ddgd	          }t          d
ddgiddg          |j        |d
gf<   t	          j        ||           d S )Nr*   r-   r/   rg   r)   r[   Fr0   r]   r.   ru   rf  r   r+   )r   r   r   r   r2   ry   )r4   r6   r7   r&  s       r'   -test_loc_setitem_all_false_boolean_two_blockszMTestDataFrameSetItemBooleanMask.test_loc_setitem_all_false_boolean_two_blocks  s    aV1a&s;;<<7799%c222!*C!Q=A!G!G!Gw~
b(+++++r&   c                 
   t          ddgddgg          }t          ddgddgg          }t          t          ddgd	          t          t          j        dgd	          d
          }d||<   t	          j        ||           d S )Nr]  r-   r/   r  r   TFbooleanrB   r  )r   r   r  NAr2   ry   )r4   r6   r7   boolean_indexers       r'   test_setitem_ea_boolean_maskz<TestDataFrameSetItemBooleanMask.test_setitem_ea_boolean_mask  s    Q!R)**q!fq!f-..#4-y99925$-y999 
 
  ?
b(+++++r&   N)r"   r#   r$   r  skip_array_manager_invalid_testrl   r  r  r  xfailrK  rC   rH   r   r"  r$  r2   r
  r   r&  r4  r8  r@  rB  rG  r%   r&   r'   r  r  <  s       '[	'	')P)PQ'"   
0 0  ('0 [QRR[UT28V$<==	) 	) >= SR	) [UT28V$<==, , >=, [YRV(<==, , >=,- - -. [Ww&899[XWqcNY<N'OPP' ' QP :9') ) )., , ,, , , , ,r&   r  c                      e Zd Zd Zej                            dddg          d             Zd Zej                            dd e	j
        dgdggd	
          dgdggg          d             Zej                            dd e	j
        dgdgg          dgdggg          d             Zej                            dddg ej        ddgej                            dd                    g          ej                            ddd ed           ed          fdg          d                         Zej        d             Zd Zej                            dd	dg          d             Zd Zd  Zd! Zej                            d"d#d$g ed%          fg d&g d&gf ed%           ed%          fd$fd#dd'gfd$d$gfd#gdfd$gfd#g e	j        d          fd$gf ed%           e	j        d          fg d(f ed%d$           e	j        d          fd$d$gf e	j
        g d)           e	j
        g d*          fd$d$gfg          d+             Zd%S ),%TestDataFrameSetitemCopyViewSemanticsc                    d|j         vsJ |d                                         }||d<   t          j        |j        dd|j                             d          f<   t          |dd                                                   sJ d S )Nr@  rN   ru   rA   )rj   r   rC   r)  r   get_locr   r   )r4   rJ   r   s      r'   test_setitem_always_copyz>TestDataFrameSetitemCopyViewSemantics.test_setitem_always_copy  s    +-----!!##CCE62{2::3???@QqtW~~!!#######r&   consolidateTFc                 t   t          g dg ddg d          }|                    ddt          j                   |sU|r4|                                 t          |j        j                  dk    sJ nt          |j        j                  dk    sJ |d         j        }d	|j	        dd df<   t          t          j        t          j        d	d	g|j        d
          }t          j        |d         |           |s<t          j        ||j                   t          j        ||d         j                  sJ d S d S )N)g?g @g@gffffff@)gffffff@gffffff@gffffff@g333333 @)r   r   )r   r*   r-   r/   r+   r-   r   r*   *   rc   )r   r   rC   r)  _consolidate_inplacerG   r   blocks_valuesr   r   r,   r2   r   r   rR   shares_memory)r4   rO  using_array_managerr  r6   zvalsr7   s          r'   #test_setitem_partial_column_inplacezITestDataFrameSetitemCopyViewSemantics.test_setitem_partial_column_inplace  sU    &&&-A-A-ABB,,,
 
 
 			!S"&!!!" 	0 0'')))27>**a/////27>**a////3qrr3w26262r2"(MMM
r#w111 # 	<'x???#E2c7?;;;;;	< 	<;;r&   c                     ddgdz  }t          ddg|          }|                                }|d d          }d|d<   t          g dg|	          }t          j        ||           t          j        ||           d S )
NrN   rO   r-   r:  r   r   r-  )r:  r-   r:  ru   ri   r  )r4   r#  r6   df_copydf_viewr7   s         r'   *test_setitem_duplicate_columns_not_inplacezPTestDataFrameSetitemCopyViewSemantics.test_setitem_duplicate_columns_not_inplace  s    SzA~s1#t444''))QQQ%3.../>>>
gw///
b(+++++r&   r  r*   r;   rB   c                     ddg}t          dddg|          }|                                }|d d          }||dg<   t          ddgddgg|          }t          j        ||           t          j        ||           d S )NrN   rO   r   r*   r   ri   r  )r4   r  rV  r#  r6   rZ  r[  r7   s           r'   #test_setitem_same_dtype_not_inplacezITestDataFrameSetitemCopyViewSemantics.test_setitem_same_dtype_not_inplace  s    
 SzqA555''))QQQ%C5	q!fq!f-t<<<
b(+++
gw/////r&   r   c                     ddg}t          dddg|          }|                                }|d d          }||dg<   t          ddgddgg|          }t          j        ||           t          j        ||           d S )NrN   rO   r   r*   r   r   ri   r  )r4   r  r#  r6   rZ  r[  r7   s          r'   2test_setitem_listlike_key_scalar_value_not_inplacezXTestDataFrameSetitemCopyViewSemantics.test_setitem_listlike_key_scalar_value_not_inplace  s     SzqA555''))QQQ%C5	q#hC14@@@
gw///
b(+++++r&   r&  r)   z+Boolean indexer incorrectly setting inplace)r   strict)markszvalue, set_value)r*   ru   )r   g      @z
2020-12-31z
2021-12-31r  c                     t          d|iddg          }|                                }|d d          }|||<   t          j        ||           d S )Nr)   r   r*   r+   r  )r4   r  	set_valuer&  r6   r7   r   s          r'   "test_setitem_not_operating_inplacezHTestDataFrameSetitemCopyViewSemantics.test_setitem_not_operating_inplace  sZ    2 U|Aq62227799!!!u7
dH-----r&   c                 D   d t          d          D             t          fdD                       }|j        j        d         j        }t          j                    5  |j        D ]}d||         |<   	 d d d            n# 1 swxY w Y   |sHt          j	        |t          j
        d          t          j
        d          f         dk              sJ d S t          j	        |t          j
        d          t          j
        d          f         dk              sJ d S )Nc                     g | ]}d | S )r0   r%   r  s     r'   r   z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<listcomp>:  s    ---a'a''---r&   rA   c                 T    i | ]$}|t          j        t                              %S r%   )rC   r  rG   )r   colr  s     r'   
<dictcomp>z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<dictcomp>;  s+    EEEsRXc&kk22EEEr&   r+   r   r*   )rv   r   r   rS  rR   r2   raises_chained_assignment_errorrj   rC   r   r   )r4   r  r  r6   rR   labelr  s         @r'   "test_setitem_column_update_inplacezHTestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace4  sd    .-599---EEEEfEEEVTTT")/11 	% 	% % %#$5	%  %	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% # 	E6&2	"!=>!CDDDDDDD 6&2	"!=>!CDDDDDDDs   "BB	B	c                     t          g d          }t          g dd          |d<   t          g dd          |d<   t          g dg dt                    }t          j        |j        |           d S )	NrU   rJ  rB   col1col2)r;   rJ  rJ  )r   ro  rp  )r,   r9   )r   r   r"  r2   r   r   )r4   r6   expected_typess      r'   %test_setitem_column_frame_as_categoryzKTestDataFrameSetitemCopyViewSemantics.test_setitem_column_frame_as_categoryH  s    yyy!!yyy
;;;6
IIIZ8886
---5H5H5HPV
 
 
 	ry.99999r&   r9   r  c                 0   t          dt          j        d          i|          }t          j        dgg          |j        t          j        dg          t          j        dg          f<   t          dg di|          }t          j        ||           d S )Nr)   r/   rB   r-   r   )r-   r*   r*   )r   rC   r  rH   r   r2   ry   )r4   r9   r6   r7   s       r'   "test_setitem_iloc_with_numpy_arrayzHTestDataFrameSetitemCopyViewSemantics.test_setitem_iloc_with_numpy_arrayS  s     RWQZZ(666021#!rx}},-c999-U;;;
b(+++++r&   c                    t          g dg dgg d          }t          ddgddggd	d	g          }||d	<   t          g d
g dgg d          }t          j        ||           t          g dg dgg d          }t          ddgddggd	d	g          }||d	<   t          g dg dgg d          }t          j        ||           d S )NrQ  )rg   ru   rf  rc  )r)   r.   r)   r0   ri   r   r;  r-   r<  r)   )r   r-   r;  rg   )r-   ru   r<  rc  rU   rs  )r)   r)   r.   )r   r;  r/   )r-   r<  rf  r   r;  s       r'   !test_setitem_frame_dup_cols_dtypezGTestDataFrameSetitemCopyViewSemantics.test_setitem_frame_dup_cols_dtype\  s!   lll3=Q=Q=QRRR!SAs8,sCjAAA3^^^^^,6J6J6J
 
 
 	b(+++			999-GGG!SAs8,sCjAAA3kkk;;;7QQQ
b(+++++r&   c                 "   t          dgdd          }t          d|i                              d          }|dd                                         }d |d<   d |d<   t          g ddg|d d                   }t	          j        ||           d S )	Nz
2000-01-01r   date)r9   rI   r   30102010rO  )r   r   r  r   r2   ry   )r4   dtir6   r7   s       r'   "test_frame_setitem_empty_dataframezHTestDataFrameSetitemCopyViewSemantics.test_frame_setitem_empty_dataframel  s    \N(HHH}%%//77!W\\^^6
6
V$bqb'
 
 

 	b(+++++r&   c                    t          g dg dg dg dd          }|                                }|ddg         }|r,ddgddgg|j        d	d
gd d f<   t          j        ||           n|rddgddgg|j        d	d
gd d f<   ntt          j        dd          5  t          j        t                    5  ddgddgg|j        d	d
gd d f<   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          g dg dd|j	                  }t          j        ||           |g d         }|s|r-ddgddgg|j        d	d
gdd
df<   t          j        ||           nut          j        dd          5  t          j        t                    5  ddgddgg|j        d	d
gdd
df<   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          g dg dg dd|j	                  }t          j        ||           d S )N)r*   rg   r*   ru   )r-   ru   r-   rf  )r/   rf  r*   rc  )rd  r  rA   r3  rb  rO   r   r-   r*   r/   chained_assignmentwarnr-   r-   r-   r-   )r/   r-   r*   r-   )rO   r   r+   rg  r   )rd  r-   rA   r-   )
r   r   r   r2   ry   r  r  r  r   r,   )r4   r  r  	df_parentdf_origr6   r7   s          r'   test_iloc_setitem_view_2dblockzDTestDataFrameSetitemCopyViewSemantics.test_iloc_setitem_view_2dblock|  s   !\\!\\!\\#^^	 
 
	 ..""Sz"  	:#$a&1a&!1BGQFAAAI !)W5555 	: $%a&1a&!1BGQFAAAI"#7@@ : :/0FGG : :+,a&1a&)9BGQFAAAI&: : : : : : : : : : : : : : :: : : : : : : : : : : : : : :
 <<<lllCC28TTT
b(+++ ' 	>"4 	>'(!fq!f%5BGQFAaEM"!)W5555"#7@@ > >/0FGG > >/0!fq!f-=BGQFAaEM*> > > > > > > > > > > > > > >> > > > > > > > > > > > > > > ,,\\\FFbh
 
 
 	b(+++++sl   C+1CC+C	C+C	C++C/2C/8GF6*G6F:	:G=F:	>GGGzindexer, valuer   r-   Nr  r/   )r-   r-   r-   )FTF)FTFTc                    t          j        d                              dd          }t          |                                t          d                    }|j        j        sJ |                                }|d d          }t          j	        |          5  ||j
        |<   d d d            n# 1 swxY w Y   |rt          j        ||           |||<   t          |t          d                    }	t          j        ||	           d S )Nr:  r/   rg   ABCDri   )rC   r   rx   r   r   rK  r   is_single_blockr2   r  r   ry   )
r4   r&  r  r  r  rK   r  r  r6   r7   s
             r'   test_setitem_2dblock_with_refzCTestDataFrameSetitemCopyViewSemantics.test_setitem_2dblock_with_ref  s<   ( imm##Aq))chhjj$v,,???	 ~----..""qqq\"#566 	% 	%$BGG	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%  	6!)W555 GS$v,,777
b(+++++s   B00B47B4)r"   r#   r$   rN  rl   r  r  rX  r\  rC   rH   r^  r`  paramrI  r   re  r  rH  rm  rr  rt  rv  r|  r  slicer;   r  r%   r&   r'   rK  rK    s       $ $ $ []T5M::< < ;:<>
, 
, 
, [!XRXsQCj888A3*E 
0 
0 
0 [WsHBHsecU^,D,Dusen&UVV
, 
, WV
, [EFLuk''H  (    
	
  [Y|$$ii&=&=>		
 . .  .. 'E E ('E&	: 	: 	: [Ww&899, , :9,, , , , , , -, -, -,^ [!feeDkk"\\\<<<$@AeDkk55;;'+!Q[1a&!c1XsOc828A;;!%eDkk828A;;'3eD!nnhbhqkk*QF3...//:T:T:T1U1UVA	
  , ,!  , , ,r&   rK  c                     t          dddgi          } t          j        t          d          5  d| j        d d df<   d d d            n# 1 swxY w Y   t          dddgi          }t          j        | |           t          dddgi          } t          j        t          d          5  ddd	| j        d d df<   d d d            n# 1 swxY w Y   t          dddgi          }t          j        | |           t          dddgi          } d
dd	| j        d d df<   t          dd
dgi          }t          j        | |           d S )Nr)   r*   r-   zincompatible dtyperd   Tr=  g      @r  r/   rg   )r   r2   r  r  r   ry   r6   r7   s     r'   'test_full_setter_loc_incompatible_dtyper    s   	C!Q=	!	!B		#M9M	N	N	N  qqq#v              #d|,--H"h'''	C!Q=	!	!B		#M9M	N	N	N * * S))qqq#v* * * * * * * * * * * * * * *#Sz*++H"h'''	C!Q=	!	!Bq\\BF111c6N#1v''H"h'''''s#   A

AA+C		CCc            
          t          g dg dd          } d| j        | j        dk    ddgf<   t          g dg dddt          d	          gd
d
t          d	          gd          }t	          j        | |           d S )NrU   )r>  ru   rf  r(  )r*   r  r*   rA  Gr   r)  r  )rN   rO   rA  r  )r   r   r,   r   r2   ry   r  s     r'   )test_setitem_partial_row_multiple_columnsr    s    	55	6	6B(2BF28q=3*$%q%,,'e-		
 	
 H "h'''''r&   )6r   numpyrC   rl   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr  pandas.core.dtypes.baser   r  pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   r   r	   r
   pandasr  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr2   pandas.core.arraysr   pandas.tseries.offsetsr   r   r  r  r  r  r  rK  r  r  r%   r&   r'   <module>r     s              0 0 0 0 0 0 ) ) ) ) ) ) ) ) ) < < < < < < 5 5 5 5 5 5                                                  $       * * * * * * ' ' ' ' ' 'M, M, M, M, M, M, M, M,`'1 '1 '1 '1 '1 '1 '1 '1TP0 P0 P0 P0 P0 P0 P0 P0f+, +, +, +, +, +, +, +,\, , , , , , , ,,E, E, E, E, E, E, E, E,PN, N, N, N, N, N, N, N,b( ( ((( ( ( ( (r&   