
    Owg:                     <    d dl Zd dlZd dlZd dlmZ  G d d      Zy)    Nc                   n   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                  j                  dddg      d        Zd Zd Zd Zd Zd Zd Zej                  j                  d ej.                  g d       ej.                  g dd !       ej.                  dddej2                  ej2                  gd !      gg d"#      d$        Zd% Zd& Zej                  j                  d'g d( ej.                  g d(d)!       ej.                  g d(      gg d*#      d+        Zej                  j                  d,d-d.d/ej2                  gd0f ej<                  d-d.d/ej2                  gdej                  j?                  d12      3       ej.                  d-d.d/ej2                  gd)!      d0f ej.                  d-d.d/ej2                  gd)!      d0fgg d4#      d5        Z ej                  j                  d6dd0g      ej                  j                  ddd7g      d8               Z!ej                  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 Z3y7)KBaseSetitemTestsc                     | j                   S Nindexxs    Z/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/extension/base/setitem.py<lambda>zBaseSetitemTests.<lambda>   s
    agg     c                 ,    t        | j                        S r   )listr   r	   s    r   r   zBaseSetitemTests.<lambda>   s    d177m r   c                     t        d       S r   )slicer	   s    r   r   zBaseSetitemTests.<lambda>   s
    eDk r   c                 ,    t        dt        |             S )Nr   )r   lenr	   s    r   r   zBaseSetitemTests.<lambda>   s    eAs1v& r   c                 *    t        t        |             S r   )ranger   r	   s    r   r   zBaseSetitemTests.<lambda>   s    eCFm r   c                 <    t        t        t        |                   S r   )r   r   r   r	   s    r   r   zBaseSetitemTests.<lambda>   s    d5Q=) r   c                 J    t        j                  t        |       t              S Ndtype)nponesr   boolr	   s    r   r   zBaseSetitemTests.<lambda>   s    bggc!fD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                   rr|j                  }|j                  j                  d      d   dk(  ry |j                  j
                  j                  d      d   }|dk(  rt        j                  d       y y y )N[r   test_is_immutable.r   z4__setitem__ test not applicable with immutable dtype)_is_immutablenodenamesplitfunction__qualname__pytestskip)r%   r   r&   r.   
defined_ins        r   skip_if_immutablez"BaseSetitemTests.skip_if_immutable&   su    <<Dyys#A&*== 
 3399#>qAJ//RS 0 r   c                     |j                   j                  r+t        j                  t              5  |d   |d<   d d d        y |d   |d<   |d   |d   k(  sJ y # 1 sw Y   y xY w)Nr      )r   r-   r3   raises	TypeError)r%   datas     r   r+   z"BaseSetitemTests.test_is_immutable6   sg    ::##y) "q'Q" " 1gDG7d1g%%%	" "s   	AA!c                 \    |rt        j                  |      }|d   |d<   |d   |d   k(  sJ y Nr8   r   pdSeriesr%   r;   box_in_seriess      r   test_setitem_scalar_seriesz+BaseSetitemTests.test_setitem_scalar_series>   s5    99T?Dq'QAw$q'!!!r   c                     |rt        j                  |      }|j                         }|d   |d   g|ddg<   |d   |d   k(  sJ |d   |d   k(  sJ y r=   )r?   r@   copyr%   r;   rB   originals       r   test_setitem_sequencez&BaseSetitemTests.test_setitem_sequenceD   sc    99T?D99;Qa)aVAw(1+%%%Aw(1+%%%r   c                    t        j                  |      }|j                         }|d   g}|r|j                  ||j                        }d}t        j                  t        |j                  d            5  ||ddg<   d d d        t        j                  ||       t        j                  t        |j                  d            5  ||t        d      <   d d d        t        j                  ||       y # 1 sw Y   wxY w# 1 sw Y   ,xY w)	Nr   r   z5cannot set using a {} indexer with a different lengthz	list-likematchr8   r      )r?   r@   rE   _from_sequencer   r3   r9   
ValueErrorformattmassert_series_equalr   )r%   r;   as_arrayserrG   valuexprs          r   .test_setitem_sequence_mismatched_length_raisesz?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesM   s    iio88:a	''TZZ'@EE]]:SZZ-DE 	 CAK	  	sH-]]:SZZ-@A 	"!CaM	"
sH-	  	 
	" 	"s   7C5D5C>D
c                     |rt        j                  |      }|j                         }g |t        j                  g t
              <   t        j                  ||       y r   )r?   r@   rE   r   arrayintrP   assert_equalrF   s       r   test_setitem_empty_indexerz+BaseSetitemTests.test_setitem_empty_indexer^   s@    99T?D99;(*RXXb$%
h'r   c                 z    |rt        j                  |      }|d   |ddg<   |d   |d   k(  sJ |d   |d   k(  sJ y )N   r   r8   r>   rA   s      r    test_setitem_sequence_broadcastsz1BaseSetitemTests.test_setitem_sequence_broadcastse   sO    99T?DAwaVAw$q'!!!Aw$q'!!!r   setterlocilocc                 p    t        j                  |      }t        ||      }|d   |d<   |d   |d   k(  sJ y r=   )r?   r@   getattr)r%   r;   r_   arrs       r   test_setitem_scalarz$BaseSetitemTests.test_setitem_scalarl   s>    iiof%Gq	1va   r   c                     t        j                  t        j                  t	        |            |d      }|d   |j
                  d<   |j
                  d   |d   k(  sJ y )NABr8   r   ri   )r?   	DataFramer   aranger   r`   r%   r;   dfs      r   test_setitem_loc_scalar_mixedz.BaseSetitemTests.test_setitem_loc_scalar_mixeds   sM    \\		#d) 44@Aavvvf~a(((r   c                     t        j                  d|i      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nri   r8   
   ri   r?   rk   r`   rm   s      r   test_setitem_loc_scalar_singlez/BaseSetitemTests.test_setitem_loc_scalar_singlex   s?    \\3+&q'wvvg$q')))r   c                     t        j                  ||d      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nrg   r8   rq   rs   rm   s      r   ,test_setitem_loc_scalar_multiple_homogoneousz=BaseSetitemTests.test_setitem_loc_scalar_multiple_homogoneous}   s@    \\401q'wvvg$q')))r   c                     t        j                  t        j                  t	        |            |d      }|d   |j
                  d<   |j                  d   |d   k(  sJ y )Nrg   r8   r   r8   rj   )r?   rk   r   rl   r   ra   r`   rm   s      r   test_setitem_iloc_scalar_mixedz/BaseSetitemTests.test_setitem_iloc_scalar_mixed   sM    \\		#d) 44@AQvvf~a(((r   c                     t        j                  d|i      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nri   r8   )rr   r   rq   r?   rk   ra   r`   rm   s      r   test_setitem_iloc_scalar_singlez0BaseSetitemTests.test_setitem_iloc_scalar_single   s?    \\3+&avvg$q')))r   c                     t        j                  ||d      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nrg   r8   )rr   r8   rq   r{   rm   s      r   -test_setitem_iloc_scalar_multiple_homogoneousz>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneous   s@    \\401avvg$q')))r   r    )TTTFFbooleanr   )numpy-arrayzboolean-arrayzboolean-array-na)r"   c                     |d d j                         }|j                  g d      }|r*t        j                  |      }t        j                  |      }|d   ||<   t	        j
                  ||       y N   r   r   r   rL      r   rE   taker?   r@   rP   rZ   )r%   r;   r    rB   rd   expecteds         r   test_setitem_maskz"BaseSetitemTests.test_setitem_mask   s\     2Ahmmo88O,))C.Cyy*HGD	
#&r   c                 n   t        j                  ddg      }|rt        j                  |      }t	        j
                  t        d      5  |d   ||<   d d d        t        j                  |d      }t	        j
                  t        d      5  |d   ||<   d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)NTFzwrong lengthrJ   r   r   r   )r   rX   r?   r@   r3   r9   
IndexErrorr%   r;   rB   r    s       r   test_setitem_mask_raisesz)BaseSetitemTests.test_setitem_mask_raises   s    xxu&99T?D]]:^< 	!aDJ	! xxI.]]:^< 	!aDJ	! 	!		! 	!	! 	!s   
	B	B+B(+B4c                    t        j                  t        j                  |j                  d      d      }d|d d t         j
                  |dd |rt        j                  |      }|d   ||<   |d d |d   k(  j                         sJ y )Nr   r   r   TrL   r   r   )r?   rX   r   zerosshapeNAr@   allr   s       r   'test_setitem_mask_boolean_array_with_naz8BaseSetitemTests.test_setitem_mask_boolean_array_with_na   sy    xx6:)LRaEEQq	99T?D!WT
RaDG#((***r   idx)r   r8   r]   Int64)r   zinteger-arrayr   c                     |d d j                         }|j                  g d      }|r*t        j                  |      }t        j                  |      }|d   ||<   t	        j
                  ||       y r   r   )r%   r;   r   rB   rd   r   s         r   test_setitem_integer_arrayz+BaseSetitemTests.test_setitem_integer_array   s\     2Ahmmo99_-))C.Cyy*Hq6C
X&r   zidx, box_in_seriesr   r8   r]   FzGH-31948)reason)marks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec           
      ,   |j                         }|rCt        j                  |t        t	        |            D cg c]  }t        d|z          c}      }d}t        j                  t        |      5  |d   ||<   d d d        y c c}w # 1 sw Y   y xY w)Nd   r   z9Cannot index with an integer indexer containing NA valuesrJ   r   )	rE   r?   r@   r   r   chrr3   r9   rN   )r%   r;   r   rB   rd   imsgs          r   (test_setitem_integer_with_missing_raisesz9BaseSetitemTests.test_setitem_integer_with_missing_raises   s     iik ))DuSY?O(P!S1W(PQCI]]:S1 	1vCH	 	 )Q	 	s   B
3	B

Bas_callableNc                    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 y )
Nr   Tr]   c                     S r    )r
   r    s    r   r   z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>   s    d r   r      r   r8      r?   r@   r   r   r   r   rc   )r%   r;   r   r_   rS   mask2targetr    s          @r   test_setitem_mask_alignedz*BaseSetitemTests.test_setitem_mask_aligned   s     iioxxD	.Ra"EES&)F FQq	u!AY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 y )Nr   Tr]   rr   r   r8   r   )r%   r;   r_   rS   r    r   s         r   test_setitem_mask_broadcastz,BaseSetitemTests.test_setitem_mask_broadcast   s{    iioxxD	.RaS&)FFBxt1vb!!!1vb!!!r   c                    t        j                  d|i      }|j                         }d|d<   t        j                  |dgt        |      z  d      }t	        j
                  ||       |j                         }d|j                  d d df<   t	        j
                  ||       ||d<   t        j                  ||d      }t	        j
                  ||       y Nrh   r8   ri   rg   )r?   rk   rE   r   rP   assert_frame_equalr`   r%   r;   rn   resultr   s        r   test_setitem_expand_columnsz,BaseSetitemTests.test_setitem_expand_columns  s    \\3+&s<<d!s4y AB
fh/

1c6
fh/ s<<d 67
fh/r   c                 ^   t        j                  ddgt        |      z  i      }|j                         }||d<   t        j                  dgt        |      z  |d      }t	        j
                  ||       |j                         }||j                  d d df<   t	        j
                  ||       y r   )r?   rk   r   rE   rP   r   r`   r   s        r   "test_setitem_expand_with_extensionz3BaseSetitemTests.test_setitem_expand_with_extension  s    \\3c$i01s<<qcCIoD AB
fh/!

1c6
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        y # 1 sw Y   y xY w)	Nrh   r8   zLength of values \(r   z$\) does not match length of index \(z\)rJ   ri   )r?   rk   r   r3   r9   rN   )r%   r;   rn   rU   s       r   !test_setitem_frame_invalid_lengthz2BaseSetitemTests.test_setitem_frame_invalid_length(  s~    \\3c$i01"3tBQx=/ 2114R	= 	 ]]:S1 	2AhBsG	 	 	s   	A00A9c                     t        j                  |d d ddg      }t        j                  |j                  ddg      |j                        }|d   |d<   t	        j
                  ||       y )Nr]   )r   r   rx   r   r8   )r?   r@   r   r   rP   rQ   )r%   r;   rS   r   s       r   test_setitem_tuple_indexz)BaseSetitemTests.test_setitem_tuple_index1  s[    iiRa(8999TYY1v.cii@1gF
sH-r   c                     |d d j                         }|j                  g d      }|r*t        j                  |      }t        j                  |      }|d   |d d t	        j
                  ||       y )Nr   r   r   rL   r   )r%   r;   rB   rd   r   s        r   test_setitem_slicez#BaseSetitemTests.test_setitem_slice7  s\    2Ahmmo99_-))C.Cyy*Hq'BQ
X&r   c                    |d d j                         }t        j                  |g d      }t        j                  |j                  g d      |j                        }|j                         }|d   |j
                  d d t        j                  ||       |j                         }|d   |j                  d d t        j                  ||       y )Nr   )abcder   r   r   rL   r   )	rE   r?   r@   r   r   ra   rP   rZ   r`   )r%   r;   rd   sr   r   s         r   test_setitem_loc_iloc_slicez,BaseSetitemTests.test_setitem_loc_iloc_sliceA  s    2AhmmoIIc!:;99TYY7qwwGq'BQ
)7

4C
)r   c                 z    |d d }t        j                  t              5  |d d |d d d d d        y # 1 sw Y   y xY w)Nr   r]   r8   )r3   r9   rN   r%   r;   rd   s      r   )test_setitem_slice_mismatch_length_raisesz:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesN  s?    2Ah]]:& 	"1gCG	 	 	s   	1:c                 l    |d d j                         }|dd  |d d t        j                  ||dd         y )Nr   )rE   rP   assert_extension_array_equalr   s      r   test_setitem_slice_arrayz)BaseSetitemTests.test_setitem_slice_arrayS  s:    2Ahmmors)BQ
''T"#Y7r   c                     |d d j                         }t        j                  t              5  |ddg   |d<   d d d        y # 1 sw Y   y xY w)Nr   r   r8   )rE   r3   r9   rN   r   s      r   &test_setitem_scalar_key_sequence_raisez7BaseSetitemTests.test_setitem_scalar_key_sequence_raiseX  sE    2Ahmmo]]:& 	!!Q[CF	! 	! 	!s   AA
c                 r    |j                         }|d d  }|d   |d<   |d   |d   k(  sJ |d   |d   k(  sJ y r=   )view)r%   r;   view1view2s       r   test_setitem_preserves_viewsz-BaseSetitemTests.test_setitem_preserves_views]  sO    		Qq'QQx47"""Qx47"""r   c                     t        j                  dt        j                  |      i      x}}t        j                  |j                        } ||      }|d   |j                  |df<   t        j                  ||       y )Nr   r   )r?   rk   r@   r   r`   rP   r   )r%   r;   r'   rn   r   r   keys          r   ,test_setitem_with_expansion_dataframe_columnz=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnf  sd    a4%9::XBHH-2U

36
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                  ||       y )Nr;   r8   )r8   r;   r]   )r]   r;   r   r   )r?   rk   r`   rP   r   r@   r   )r%   r;   na_valuern   r   s        r   test_setitem_with_expansion_rowz0BaseSetitemTests.test_setitem_with_expansion_rowp  s    \\648,- Gy<<bq 23
b(+ %y<<RYYQa(;4::NO
 	b(+r   c                 L   t        j                  |d      }t        j                  |j                  t        d      } ||      }||j                  |<   t        j                  |j                  t              |j                  dt              }t        j                  ||       y )Nr;   r/   )r   r   r/   )r   r/   r   )r?   r@   r   objectr`   astyperP   rQ   )r%   r;   r'   rS   r   r   r   s          r   test_setitem_seriesz$BaseSetitemTests.test_setitem_series~  sw    ii6*&vF 3

399KKsyyvV
 	vx0r   c                 &   t        j                  d|i      }t        |j                  t         j                  j
                  j                        }t         j                  j                  j                  }|j                  j                  d   }|j                         }|j                         |j                  d d  t        j                  ||       |j                  d d j                         |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                  ||       y )Nrh   r   )r?   rk   
isinstance_mgrcore	internalsArrayManageroptionsmodecopy_on_writearraysrE   ra   rP   r   values)r%   r;   rn   using_array_managerusing_copy_on_writeblk_dataorigs          r   test_setitem_frame_2d_valuesz-BaseSetitemTests.test_setitem_frame_2d_values  s*   \\3+& )"''2C2C2P2PQ jjoo;;77>>!$wwyWWY

b$'wws|((*
b$'YY

b$'"+> 77>>!$000yy"~
b$'r   c                     t        j                  |d      }t        j                  t	        |            }t        j
                  |d      }||   }|d= t        j                  ||       y )Nr;   r   r8   )r?   r@   r   rl   r   deleterP   rQ   )r%   r;   rS   takerr   s        r   test_delitem_seriesz$BaseSetitemTests.test_delitem_series  sT    ii6*		#c(#		%#u:F
sH-r   c                     d}t        j                  t        t        f|      5  ||d<   d d d        t        j                  t        t        f|      5  ||d d  d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)N rJ   r   )r3   r9   rN   r:   )r%   r;   invalid_scalarr   s       r   test_setitem_invalidz%BaseSetitemTests.test_setitem_invalid  sp    ]]J	2#> 	%$DG	% ]]J	2#> 	%$DG	% 	%	% 	%	% 	%s   A"A."A+.A7c                 \   |j                         }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(  j                         sJ |j                  dd d f   |d   k(  j                         sJ y )N)r   r   r8   r   )rE   r?   rk   r`   r   r   )r%   r;   rG   rn   s       r   test_setitem_2d_valuesz'BaseSetitemTests.test_setitem_2d_values  s    99;\\401FFAq619-441vqyq!t+00222q!t+00222r   )4__name__
__module__r2   r3   fixturer'   r6   r+   rC   rH   rV   r[   r^   markparametrizere   ro   rt   rv   ry   r|   r~   r   rX   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

()( V^^D!T "T&"&."(" [[Xv7! 8!)
*
*
)
*
*
 [[BHH56BHH5YGBHHdD$ruu5YG	

 A  ''!
+ [[	HBHHYg68KL4  
	'
	' [[Aruuu%FLLAq"%% $fkk.?.?z.?.R RXXq!Q&g6>RXXq!Q&g6>	
 U  

 [[]T5M:[[Xt}5! 6 ;!. [[Xt}5" 6"0 	0.'*
8
!
#0,1(:	.%3r   r   )	numpyr   r3   pandasr?   pandas._testing_testingrP   r   r   r   r   <module>r      s       {3 {3r   