
    o[we9                     D    d dl Zd dlZd dlZd dlmZ  G d d          ZdS )    Nc                   2   e Zd Z ej        d d d d d d d gg d	          d
             Z ej        d          d             Zd Zd Zd Z	d Z
d Zd Zej                            dddg          d             Zd Zd Zd Zd Zd Zd Zej                            d ej        g d           ej        g dd !           ej        dddej        ej        gd !          gg d"#          d$             Zd% Zd& Zej                            d'g d( ej        g d(d)!           ej        g d(          gg d*#          d+             Zej                            d,d-d.d/ej        gd0f ej        d-d.d/ej        gdej                            d12          3           ej        d-d.d/ej        gd)!          d0f ej        d-d.d/ej        gd)!          d0fgg d4#          d5             Z ej                            d6dd0g          ej                            ddd7g          d8                         Z!ej                            ddd7g          d9             Z"d: Z#d; Z$d< Z%d= Z&d> Z'd? Z(d@ Z)dA Z*dB Z+dC Z,dD Z-dE Z.dF Z/dG Z0dH Z1dI Z2dJ Z3d7S )KBaseSetitemTestsc                     | j         S Nindexxs    Clib/python3.11/site-packages/pandas/tests/extension/base/setitem.py<lambda>zBaseSetitemTests.<lambda>   s    ag     c                 *    t          | j                  S r   )listr   r	   s    r   r   zBaseSetitemTests.<lambda>   s    d17mm r   c                      t          d           S r   )slicer	   s    r   r   zBaseSetitemTests.<lambda>   s    eDkk r   c                 <    t          dt          |                     S )Nr   )r   lenr	   s    r   r   zBaseSetitemTests.<lambda>   s    eAs1vv&& r   c                 :    t          t          |                     S r   )ranger   r	   s    r   r   zBaseSetitemTests.<lambda>   s    eCFFmm r   c                 T    t          t          t          |                               S r   )r   r   r   r	   s    r   r   zBaseSetitemTests.<lambda>   s    d5Q==)) r   c                 R    t          j        t          |           t                    S Ndtype)nponesr   boolr	   s    r   r   zBaseSetitemTests.<lambda>   s    bgc!ffD111 r   )r   zlist[index]
null_slice
full_slicer   zlist(range)mask)paramsidsc                     |j         S )z
        Fixture for an indexer to pass to obj.loc to get/set the full length of the
        object.

        In some cases, assumes that obj.index is the default RangeIndex.
        )param)selfrequests     r   full_indexerzBaseSetitemTests.full_indexer	   s    6 }r   T)autousec                     |j         rC|j        }|j                            d          d         dk    rd S t	          j        d           d S d S )N[r   test_is_immutablez4__setitem__ test not applicable with immutable dtype)_is_immutablenodenamesplitpytestskip)r%   r   r&   r-   s       r   skip_if_immutablez"BaseSetitemTests.skip_if_immutable&   s^     	P<Dys##A&*=== KNOOOOO	P 	Pr   c                     |j         j        r?t          j        t                    5  |d         |d<   d d d            d S # 1 swxY w Y   d S |d         |d<   |d         |d         k    sJ d S )Nr      )r   r,   r0   raises	TypeError)r%   datas     r   r+   z"BaseSetitemTests.test_is_immutable0   s    :# 	&y)) " "q'Q" " " " " " " " " " " " " " " " " " 1gDG7d1g%%%%%%s   ?AAc                 p    |rt          j        |          }|d         |d<   |d         |d         k    sJ d S Nr4   r   pdSeriesr%   r7   box_in_seriess      r   test_setitem_scalar_seriesz+BaseSetitemTests.test_setitem_scalar_series8   sC     	#9T??Dq'QAw$q'!!!!!!r   c                     |rt          j        |          }|                                }|d         |d         g|ddg<   |d         |d         k    sJ |d         |d         k    sJ d S r9   )r;   r<   copyr%   r7   r>   originals       r   test_setitem_sequencez&BaseSetitemTests.test_setitem_sequence>   sv     	#9T??D99;;Qa)aVAw(1+%%%%Aw(1+%%%%%%r   c                 8   t          j        |          }|                                }|d         g}|r|                    |          }d}t	          j        t          |                    d                    5  ||ddg<   d d d            n# 1 swxY w Y   t          j	        ||           t	          j        t          |                    d                    5  ||t          d          <   d d d            n# 1 swxY w Y   t          j	        ||           d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-likematchr4   r      )r;   r<   rA   _from_sequencer0   r5   
ValueErrorformattmassert_series_equalr   )r%   r7   as_arrayserrC   valuexprs          r   .test_setitem_sequence_mismatched_length_raisesz?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesG   s}   ioo88::a	 	/''..EE]:SZZ-D-DEEE 	  	 CAK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	sH---]:SZZ-@-@AAA 	" 	"!CaM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
sH-----s$   9BBBC::C>C>c                     |rt          j        |          }|                                }g |t          j        g t
                    <   t          j        ||           d S r   )r;   r<   rA   r   arrayintrL   assert_equalrB   s       r   test_setitem_empty_indexerz+BaseSetitemTests.test_setitem_empty_indexerX   sU     	#9T??D99;;(*RXb$$$%
h'''''r   c                     |rt          j        |          }|d         |ddg<   |d         |d         k    sJ |d         |d         k    sJ d S )N   r   r4   r:   r=   s      r    test_setitem_sequence_broadcastsz1BaseSetitemTests.test_setitem_sequence_broadcasts_   s`     	#9T??DAwaVAw$q'!!!!Aw$q'!!!!!!r   setterlocilocc                     t          j        |          }t          ||          }|d         |d<   |d         |d         k    sJ d S r9   )r;   r<   getattr)r%   r7   r[   arrs       r   test_setitem_scalarz$BaseSetitemTests.test_setitem_scalarf   sJ    ioof%%Gq	1va      r   c                     t          j        t          j        t	          |                    |d          }|d         |j        d<   |j        d         |d         k    sJ d S )NABr4   r   re   )r;   	DataFramer   aranger   r\   r%   r7   dfs      r   test_setitem_loc_scalar_mixedz.BaseSetitemTests.test_setitem_loc_scalar_mixedm   sY    \	#d)) 4 44@@AAavvf~a((((((r   c                     t          j        d|i          }|d         |j        d<   |j        d         |d         k    sJ d S )Nre   r4   
   re   r;   rg   r\   ri   s      r   test_setitem_loc_scalar_singlez/BaseSetitemTests.test_setitem_loc_scalar_singler   sE    \3+&&q'wvg$q'))))))r   c                     t          j        ||d          }|d         |j        d<   |j        d         |d         k    sJ d S )Nrc   r4   rm   ro   ri   s      r   ,test_setitem_loc_scalar_multiple_homogoneousz=BaseSetitemTests.test_setitem_loc_scalar_multiple_homogoneousw   sI    \40011q'wvg$q'))))))r   c                     t          j        t          j        t	          |                    |d          }|d         |j        d<   |j        d         |d         k    sJ d S )Nrc   r4   r   r4   rf   )r;   rg   r   rh   r   r]   r\   ri   s      r   test_setitem_iloc_scalar_mixedz/BaseSetitemTests.test_setitem_iloc_scalar_mixed|   sY    \	#d)) 4 44@@AAQvf~a((((((r   c                     t          j        d|i          }|d         |j        d<   |j        d         |d         k    sJ d S )Nre   r4   )rn   r   rm   r;   rg   r]   r\   ri   s      r   test_setitem_iloc_scalar_singlez0BaseSetitemTests.test_setitem_iloc_scalar_single   sE    \3+&&avg$q'))))))r   c                     t          j        ||d          }|d         |j        d<   |j        d         |d         k    sJ d S )Nrc   r4   )rn   r4   rm   rw   ri   s      r   -test_setitem_iloc_scalar_multiple_homogoneousz>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneous   sI    \40011avg$q'))))))r   r    )TTTFFbooleanr   )numpy-arrayzboolean-arrayzboolean-array-na)r"   c                     |d d                                          }|                    g d          }|r(t          j        |          }t          j        |          }|d         ||<   t	          j        ||           d S N   r   r   r   rH      r   rA   taker;   r<   rL   rV   )r%   r7   r    r>   r`   expecteds         r   test_setitem_maskz"BaseSetitemTests.test_setitem_mask   sw     2A2hmmoo88OOO,, 	+)C..Cy**HGD	
#&&&&&r   c                    t          j        ddg          }|rt          j        |          }t	          j        t          d          5  |d         ||<   d d d            n# 1 swxY w Y   t          j        |d          }t	          j        t          d          5  |d         ||<   d d d            d S # 1 swxY w Y   d S )NTFzwrong lengthrF   r   r{   r   )r   rT   r;   r<   r0   r5   
IndexErrorr%   r7   r>   r    s       r   test_setitem_mask_raisesz)BaseSetitemTests.test_setitem_mask_raises   s=   xu&& 	#9T??D]:^<<< 	! 	!aDJ	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! xI...]:^<<< 	! 	!aDJ	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s$   A  A$'A$B55B9<B9c                 &   t          j        t          j        |j        d          d          }d|d d<   t           j        |dd<   |rt          j        |          }|d         ||<   |d d         |d         k                                    sJ d S )Nr   r   r{   TrH   r   r   )r;   rT   r   zerosshapeNAr<   allr   s       r   'test_setitem_mask_boolean_array_with_naz8BaseSetitemTests.test_setitem_mask_boolean_array_with_na   s    x6:::)LLLRaREQqS	 	#9T??D!WT
RaRDG#((*******r   idx)r   r4   rY   Int64)r   zinteger-arrayr|   c                     |d d                                          }|                    g d          }|r(t          j        |          }t          j        |          }|d         ||<   t	          j        ||           d S r~   r   )r%   r7   r   r>   r`   r   s         r   test_setitem_integer_arrayz+BaseSetitemTests.test_setitem_integer_array   sw     2A2hmmoo99___-- 	+)C..Cy**Hq6C
X&&&&&r   zidx, box_in_seriesr   r4   rY   FzGH-31948)reason)marks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec           	      (   |                                 }|r:t          j        |d t          t	          |                    D                       }d}t          j        t          |          5  |d         ||<   d d d            d S # 1 swxY w Y   d S )Nc                 2    g | ]}t          d |z             S )d   )chr).0is     r   
<listcomp>zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>   s"    (P(P(P!S1W(P(P(Pr   r   z9Cannot index with an integer indexer containing NA valuesrF   r   )rA   r;   r<   r   r   r0   r5   rJ   )r%   r7   r   r>   r`   msgs         r   (test_setitem_integer_with_missing_raisesz9BaseSetitemTests.test_setitem_integer_with_missing_raises   s     iikk  	R)D(P(PuSYY?O?O(P(P(PQQQCI]:S111 	 	1vCH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   .BBBas_callableNc                 P   t          j        |          }t          j        t	          |          t
                    dd d<   |rfd}n}|rt          ||          }n|}|dd         ||<   |dd         ||<   |d         |d         k    sJ |d         |d	         k    sJ d S )
Nr   TrY   c                     S r    )r
   r    s    r   r   z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>   s    d r   r      r   r4      r;   r<   r   r   r   r   r_   )r%   r7   r   r[   rO   mask2targetr    s          @r   test_setitem_mask_alignedz*BaseSetitemTests.test_setitem_mask_aligned   s     iooxD		...RaR 	"NNNEEE 	S&))FF FQqS	u!A#YE
1va    1va      r   c                    t          j        |          }t          j        t	          |          t
                    }d|d d<   |rt          ||          }n|}|d         ||<   |d         |d         k    sJ |d         |d         k    sJ d S )Nr   TrY   rn   r   r4   r   )r%   r7   r[   rO   r    r   s         r   test_setitem_mask_broadcastz,BaseSetitemTests.test_setitem_mask_broadcast   s    iooxD		...RaR 	S&))FFFBxt1vb!!!!1vb!!!!!!r   c                    t          j        d|i          }|                                }d|d<   t          j        |dgt          |          z  d          }t	          j        ||           |                                }d|j        d d df<   t	          j        ||           ||d<   t          j        ||d          }t	          j        ||           d S Nrd   r4   re   rc   )r;   rg   rA   r   rL   assert_frame_equalr\   r%   r7   rj   resultr   s        r   test_setitem_expand_columnsz,BaseSetitemTests.test_setitem_expand_columns  s    \3+&&s<d!s4yy A ABB
fh///
111c6
fh/// s<d 6 677
fh/////r   c                 n   t          j        ddgt          |          z  i          }|                                }||d<   t          j        dgt          |          z  |d          }t	          j        ||           |                                }||j        d d df<   t	          j        ||           d S r   )r;   rg   r   rA   rL   r   r\   r   s        r   "test_setitem_expand_with_extensionz3BaseSetitemTests.test_setitem_expand_with_extension  s    \3c$ii011s<qcCIIoD A ABB
fh///!
111c6
fh/////r   c                 ,   t          j        ddgt          |          z  i          }dt          |d d                    dt          |           d}t          j        t
          |          5  |d d         |d<   d d d            d S # 1 swxY w Y   d S )	Nrd   r4   zLength of values \(r   z$\) does not match length of index \(z\)rF   re   )r;   rg   r   r0   r5   rJ   )r%   r7   rj   rQ   s       r   !test_setitem_frame_invalid_lengthz2BaseSetitemTests.test_setitem_frame_invalid_length"  s    \3c$ii011=3tBQBx== = =14R= = = 	 ]:S111 	 	2A2hBsG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   .B		BBc                     t          j        |d d         ddg          }t          j        |                    ddg          |j                  }|d         |d<   t	          j        ||           d S )NrY   )r   r   rt   r   r4   )r;   r<   r   r   rL   rM   )r%   r7   rO   r   s       r   test_setitem_tuple_indexz)BaseSetitemTests.test_setitem_tuple_index+  so    iRaR(89999TYY1v..ci@@@1gF
sH-----r   c                    |d d                                          }|                    g d          }|r(t          j        |          }t          j        |          }|d         |d d<   t	          j        ||           d S )Nr   r   r   rH   r   )r%   r7   r>   r`   r   s        r   test_setitem_slicez#BaseSetitemTests.test_setitem_slice1  sy    2A2hmmoo99___-- 	+)C..Cy**Hq'BQB
X&&&&&r   c                    |d d                                          }t          j        |g d          }t          j        |                    g d          |j                  }|                                 }|d         |j        d d<   t          j        ||           |                                 }|d         |j        d d<   t          j        ||           d S )Nr   )abcder   r   r   rH   r   )	rA   r;   r<   r   r   r]   rL   rV   r\   )r%   r7   r`   sr   r   s         r   test_setitem_loc_iloc_slicez,BaseSetitemTests.test_setitem_loc_iloc_slice;  s    2A2hmmooIc!:!:!:;;;9TYY77qwGGGq'BQB
)))7
4C4
)))))r   c                     |d d         }t          j        t                    5  |d d         |d d<   d d d            d S # 1 swxY w Y   d S )Nr   rY   r4   )r0   r5   rJ   r%   r7   r`   s      r   )test_setitem_slice_mismatch_length_raisesz:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesH  s    2A2h]:&& 	 	"1"gCG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     |d d                                          }|dd          |d d<   t          j        ||dd                     d S )Nr   )rA   rL   assert_extension_array_equalr   s      r   test_setitem_slice_arrayz)BaseSetitemTests.test_setitem_slice_arrayM  sM    2A2hmmoorss)BQB
'T"##Y77777r   c                     |d d                                          }t          j        t                    5  |ddg         |d<   d d d            d S # 1 swxY w Y   d S )Nr   r   r4   )rA   r0   r5   rJ   r   s      r   &test_setitem_scalar_key_sequence_raisez7BaseSetitemTests.test_setitem_scalar_key_sequence_raiseR  s    2A2hmmoo]:&& 	! 	!!Q[CF	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAc                     |                                 }|d d          }|d         |d<   |d         |d         k    sJ |d         |d         k    sJ d S r9   )view)r%   r7   view1view2s       r   test_setitem_preserves_viewsz-BaseSetitemTests.test_setitem_preserves_viewsW  sa    		QQQq'QQx47""""Qx47""""""r   c                     t          j        dt          j        |          i          x}}t          j        |j                  } ||          }|d         |j        |df<   t          j        ||           d S )Nr7   r   )r;   rg   r<   r   r\   rL   r   )r%   r7   r'   rj   r   r   keys          r   ,test_setitem_with_expansion_dataframe_columnz=BaseSetitemTests.test_setitem_with_expansion_dataframe_column`  ss    fbioo%>???XBH---l2"$V*
3;
fh/////r   c                    t          j        d|d d         i          }|d         |j        d<   t          j        d|d d         i          }t          j        ||           ||j        d<   t          j        dt          j        |d         |d         |g|j                  i          }t          j        ||           d S )Nr7   r4   )r4   r7   rY   )rY   r7   r   r   )r;   rg   r\   rL   r   r<   r   )r%   r7   na_valuerj   r   s        r   test_setitem_with_expansion_rowz0BaseSetitemTests.test_setitem_with_expansion_rowj  s    \648,-- Gy<bqb 233
b(+++ %y<RYQa(;4:NNNO
 
 	b(+++++r   c                 <   t          j        |d          }t          j        |j        t          d          } ||          }||j        |<   t          j        |                    t                    |j        dt                    }t          j        ||           d S )Nr7   r.   )r   r   r.   )r   r.   r   )r;   r<   r   objectr\   astyperL   rM   )r%   r7   r'   rO   r   r   r   s          r   test_setitem_seriesz$BaseSetitemTests.test_setitem_seriesx  s    i6***&vFFF l3
39KKsyvV
 
 
 	vx00000r   c                 v   t          j        d|i          }t          |j        t           j        j        j                  }t           j        j        j	        }|j        j
        d         }|                                }||j        d d <   t          j        ||           |j        d d         |j        d d<   t          j        ||           |j        |j        d d <   t          j        ||           |s|s|j        j
        d         |u sJ |j        d d         |j        d d<   t          j        ||           d S )Nrd   r   )r;   rg   
isinstance_mgrcore	internalsArrayManageroptionsmodecopy_on_writearraysrA   r]   rL   r   values)r%   r7   rj   using_array_managerusing_copy_on_writeblk_dataorigs          r   test_setitem_frame_2d_valuesz-BaseSetitemTests.test_setitem_frame_2d_values  s)   \3+&& )"'2C2PQQ jo;7>!$wwyy

b$'''wss|
b$'''Y

b$'''" 	1+> 	1 7>!$0000y"~
b$'''''r   c                     t          j        |d          }t          j        t	          |                    }t          j        |d          }||         }|d= t          j        ||           d S )Nr7   r   r4   )r;   r<   r   rh   r   deleterL   rM   )r%   r7   rO   takerr   s        r   test_delitem_seriesz$BaseSetitemTests.test_delitem_series  se    i6***	#c((##	%##u:F
sH-----r   c                    d}t          j        t          t          f|          5  ||d<   d d d            n# 1 swxY w Y   t          j        t          t          f|          5  ||d d <   d d d            d S # 1 swxY w Y   d S )N rF   r   )r0   r5   rJ   r6   )r%   r7   invalid_scalarr   s       r   test_setitem_invalidz%BaseSetitemTests.test_setitem_invalid  s   ]J	2#>>> 	% 	%$DG	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]J	2#>>> 	% 	%$DG	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   7;;$A99A= A=c                 d   |                                 }t          j        ||d          }|j        ddgd d f         j        |j        ddgd d f<   |j        dd d f         |d         k                                    sJ |j        dd d f         |d         k                                    sJ d S )N)r   r   r4   r   )rA   r;   rg   r\   r   r   )r%   r7   rC   rj   s       r   test_setitem_2d_valuesz'BaseSetitemTests.test_setitem_2d_values  s    99;;\40011FAq61119-41vqqqyq!!!t+0022222q!!!t+002222222r   )4__name__
__module____qualname__r0   fixturer'   r2   r+   r?   rD   rR   rW   rZ   markparametrizera   rk   rp   rr   ru   rx   rz   r   rT   r;   r   r   r   r   r   r$   xfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s)       V^##!!&&##))11

 
 
  ( ) ( V^D!!!P P "!P& & &" " "& & &. . ."( ( (" " " [Xv77! ! 87!) ) )
* * *
* * *
) ) )
* * *
* * *
 [BH55566BH555YGGGBHdD$ru5YGGG	

 A@@   ' ' '! ! !
+ 
+ 
+ [	HBHYYYg6668K8KL444   
	' 	' 
	' [Aruu%FLAq"% $fk.?.?z.?.R.R   RXq!Q&g666>RXq!Q&g666>	
 UTT   
 
 
 []T5M::[Xt}55! ! 65 ;:!. [Xt}55" " 65"0 0 0 	0 	0 	0  . . .' ' '* * *  
8 8 8
! ! !
# # #0 0 0, , ,1 1 1( ( (:	. 	. 	.% % %3 3 3 3 3r   r   )	numpyr   r0   pandasr;   pandas._testing_testingrL   r   r   r   r   <module>r      st                  u3 u3 u3 u3 u3 u3 u3 u3 u3 u3r   