
    .iE                     H    d dl Zd dlZd dlmZ d dlZd dlmZ	  G d d      Z
y)    N)is_hashablec                      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'g d, ej.                  g d,d)!       ej.                  g d,      gg d*#      d-        Zej                  j                  d'd.d/d0ej2                  g ej.                  d.d/d0ej2                  gd)!      gd1d2g#      ej                  j                  d3dd4g      d5               Zej                  j                  d6dd4g      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 Z/dH Z0dI Z1dJ Z2dK Z3dL Z4dM Z5dN Z6y7)OBaseSetitemTestsc                     | j                   S Nindexxs    a/var/www/app/trading-bot/venv/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.   r4   raises	TypeError)r&   datas     r   r,   z"BaseSetitemTests.test_is_immutable8   sg    ::##y) "q'Q" " 1gDG7d1g%%%	" "s   	AA!c                 \    |rt        j                  |      }|d   |d<   |d   |d   k(  sJ y Nr9   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@   rA   copyr&   r<   rC   originals       r   test_setitem_sequencez&BaseSetitemTests.test_setitem_sequenceF   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matchr9   r      )r@   rA   rF   _from_sequencer   r4   r:   
ValueErrorformattmassert_series_equalr   )r&   r<   as_arrayserrH   valuexprs          r   .test_setitem_sequence_mismatched_length_raisesz?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesO   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@   rA   rF   r   arrayintrQ   assert_equalrG   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   r9   r?   rB   s      r    test_setitem_sequence_broadcastsz1BaseSetitemTests.test_setitem_sequence_broadcastsg   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@   rA   getattr)r&   r<   r`   arrs       r   test_setitem_scalarz$BaseSetitemTests.test_setitem_scalarn   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Br9   r   rj   )r@   	DataFramer   aranger   ra   r&   r<   dfs      r   test_setitem_loc_scalar_mixedz.BaseSetitemTests.test_setitem_loc_scalar_mixedu   sM    \\		#d) 44@Aavvvf~a(((r   c                     t        j                  d|i      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nrj   r9   
   rj   r@   rl   ra   rn   s      r   test_setitem_loc_scalar_singlez/BaseSetitemTests.test_setitem_loc_scalar_singlez   s?    \\3+&q'wvvg$q')))r   c                     t        j                  ||d      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nrh   r9   rr   rt   rn   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 )Nrh   r9   r   r9   rk   )r@   rl   r   rm   r   rb   ra   rn   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 )Nrj   r9   )	   r   r|   rj   r@   rl   rb   ra   rn   s      r   test_setitem_iloc_scalar_singlez0BaseSetitemTests.test_setitem_iloc_scalar_single   s?    \\3+&Qvvf~a(((r   c                     t        j                  ||d      }|d   |j                  d<   |j                  d   |d   k(  sJ y )Nrh   r9   )r|   r9   r}   r~   rn   s      r   -test_setitem_iloc_scalar_multiple_homogoneousz>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneous   s@    \\401Qvvf~a(((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   rM      r   rF   taker@   rA   rQ   r[   )r&   r<   r!   rC   re   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 lengthrK   r   r   r   )r   rY   r@   rA   r4   r:   
IndexErrorr&   r<   rC   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   TrM   r   r   )r@   rY   r   zerosshapeNArA   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   r9   r^   Int64)r   integer-arrayr   c                     |d d j                         }|j                  g d      }|r*t        j                  |      }t        j                  |      }|d   ||<   t	        j
                  ||       y r   r   r&   r<   r   rC   re   r   s         r   test_setitem_integer_arrayz+BaseSetitemTests.test_setitem_integer_array   s\     2Ahmmo99_-))C.Cyy*Hq6C
X&r   )r   r   r9   c                     |d d j                         }|j                  g d      }|r*t        j                  |      }t        j                  |      }|d   |d   |d   g||<   t	        j
                  ||       y )Nr   )r^   rM   r^   rM   r   r^   rM   r   r   s         r   'test_setitem_integer_array_with_repeatsz8BaseSetitemTests.test_setitem_integer_array_with_repeats   sk     2Ahmmo99_-))C.Cyy*HFCFCF+C
X&r   r   r9   r^   r   r   rC   Fc           
      @   |j                         }d}t        }|rKt        j                  |t	        t        |            D cg c]  }t        d|z          c}      }d}t        }t        j                  ||      5  |d   ||<   d d d        y c c}w # 1 sw Y   y xY w)Nz9Cannot index with an integer indexer containing NA valuesd   r   0rK   r   )
rF   rO   r@   rA   r   r   chrKeyErrorr4   r:   )r&   r<   r   rC   re   msgerris           r   (test_setitem_integer_with_missing_raisesz9BaseSetitemTests.test_setitem_integer_with_missing_raises   s     iikI ))DuSY?O(P!S1W(PQCCC]]3c* 	1vCH	 		 )Q	 	s   B
=	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   r9      r@   rA   r   r   r   r   rd   )r&   r<   r   r`   rT   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^   r|   r   r9   r   )r&   r<   r`   rT   r!   r   s         r   test_setitem_mask_broadcastz,BaseSetitemTests.test_setitem_mask_broadcast  s{    iioxxD	.RaS&)FFAwt1va   1va   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 Nri   r9   rj   rh   )r@   rl   rF   r   rQ   assert_frame_equalra   r&   r<   ro   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@   rl   r   rF   rQ   r   ra   r   s        r   "test_setitem_expand_with_extensionz3BaseSetitemTests.test_setitem_expand_with_extension0  s    \\3c$i01s<<qcCIoD AB
fh/!

1c6
fh/r   c                    t        |d         st        j                  d       |j                         }t	        j
                  dt        t        |            i|      }|j                  d d }|d   }|d   }t        |      dz
  |j                  |<   t        j                  ||       t        |      dz
  |j                  |<   t        j                  ||d          y )Nr   z)Test does not apply to non-hashable data.ri   r   r9   )r   r4   r5   uniquer@   rl   r   r   rb   ra   rQ   r   rR   )r&   r<   r   ro   rT   items         r   8test_loc_setitem_with_expansion_preserves_ea_index_dtypezIBaseSetitemTests.test_loc_setitem_with_expansion_preserves_ea_index_dtype;  s    47#KKCD{{}<<eCI&6 7tD]]3BgBx4y1}t
b(+D	A
sHSM2r   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)	Nri   r9   zLength of values \(r   z$\) does not match length of index \(z\)rK   rj   )r@   rl   r   r4   r:   rO   )r&   r<   ro   rV   s       r   !test_setitem_frame_invalid_lengthz2BaseSetitemTests.test_setitem_frame_invalid_lengthK  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   ry   r   r9   )r@   rA   r   r	   rQ   rR   )r&   r<   rT   r   s       r   test_setitem_tuple_indexz)BaseSetitemTests.test_setitem_tuple_indexT  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   rM   r   )r&   r<   rC   re   r   s        r   test_setitem_slicez#BaseSetitemTests.test_setitem_sliceZ  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   rM   r   )	rF   r@   rA   r   r	   rb   rQ   r[   ra   )r&   r<   re   sr   r   s         r   test_setitem_loc_iloc_slicez,BaseSetitemTests.test_setitem_loc_iloc_sliced  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^   r9   )rQ   external_error_raisedrO   r&   r<   re   s      r   )test_setitem_slice_mismatch_length_raisesz:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesq  sA    2Ah%%j1 	"1gCG	 	 	s   	1:c                 l    |d d j                         }|dd  |d d t        j                  ||dd         y )Nr   )rF   rQ   assert_extension_array_equalr   s      r   test_setitem_slice_arrayz)BaseSetitemTests.test_setitem_slice_arrayv  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   r9   )rF   rQ   r   rO   r   s      r   &test_setitem_scalar_key_sequence_raisez7BaseSetitemTests.test_setitem_scalar_key_sequence_raise{  sG    2Ahmmo%%j1 	!!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                  t        j                  |            x}}t        j                  |j                        } ||      }|d   |j                  |df<   t        j                  ||       y )Nr   r   )r@   rl   rA   r	   ra   rQ   r   )r&   r<   r(   ro   r   r   keys          r   ,test_setitem_with_expansion_dataframe_columnz=BaseSetitemTests.test_setitem_with_expansion_dataframe_column  s_    RYYt_55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<   r9   )r9   r<   r^   )r^   r<   r   r   )r@   rl   ra   rQ   r   rA   r   )r&   r<   na_valuero   r   s        r   test_setitem_with_expansion_rowz0BaseSetitemTests.test_setitem_with_expansion_row  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<   r0   )r	   r   r0   )r	   r0   r   )r@   rA   r	   objectra   astyperQ   rR   )r&   r<   r(   rT   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      }|j                         }|j                         |j                  d d  t	        j
                  ||       |j                  d d j                         |j                  d d t	        j
                  ||       |j                  |j                  d d  t	        j
                  ||       |j                  d d |j                  d d t	        j
                  ||       y )Nri   r   )r@   rl   rF   rb   rQ   r   values)r&   r<   ro   origs       r   test_setitem_frame_2d_valuesz-BaseSetitemTests.test_setitem_frame_2d_values  s    \\3+&wwyWWY

b$'wws|((*
b$'YY

b$'yy"~
b$'r   c                     t        j                  |d      }t        j                  t	        |            }t        j
                  |d      }||   }|d= t        j                  ||       y )Nr<   r   r9   )r@   rA   r   rm   r   deleterQ   rR   )r&   r<   rT   takerr   s        r   test_delitem_seriesz$BaseSetitemTests.test_delitem_series  sT    ii6*		#c(#		%#u:F
sH-r   c                     t        j                  t        t        fd       5  ||d<   d d d        t        j                  t        t        fd       5  ||d d  d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)NrK   r   )r4   r:   rO   r;   )r&   r<   invalid_scalars      r   test_setitem_invalidz%BaseSetitemTests.test_setitem_invalid  sk    ]]J	2$? 	%$DG	% ]]J	2$? 	%$DG	% 	%	% 	%	% 	%s   A A, A),A5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   r9   r   )rF   r@   rl   ra   r   r   )r&   r<   rH   ro   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   c           	      N   |j                   du sJ d|_         |j                   du sJ |j                         }|j                   du sJ t        j                  t        d      5  |d   |d<   d d d        t        j                  t        d      5  |d   |dd d d d        t        j                  t        d      5  |d   |t        j                  dgt        |      z        <   d d d        t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   8xY w)NFTzCannot modify read-only arrayrK   r9   r   rM   )
	_readonlyrF   r4   r:   rO   r   rY   r   rQ   r   )r&   r<   	data_origs      r   test_readonly_propertyz'BaseSetitemTests.test_readonly_property  s   ~~&&&~~%%%IIK	""e+++]]:-LM 	1gDG	 ]]:-LM 	 QD1I	  ]]:-LM 	915aD4&3t9,-.	9 	''i8	 		  	 	9 	9s$   #	D	D;)DDDD$c                 N   d|_         t        j                  |      }|j                  j                  sJ t        j
                  |      }t        j
                  |      }t        j                  ||      r|j                  j                  rJ y |j                  j                  sJ y )NT)r   r   rY   flags	writeableasarrayshares_memoryr&   r<   re   arr1arr2s        r   'test_readonly_propagates_to_numpy_arrayz8BaseSetitemTests.test_readonly_propagates_to_numpy_array  s     hhtnyy"""" zz$zz$D$'zz+++++::''''r   c                    d|_         |j                  d      }|j                  j                  sJ |j                  d      }|j                  d      }t	        j
                  ||      r|j                  j                  rJ |j                  j                  sJ |j                         j                         r|j                  d|d         }t        |j                  t        j                        r2|j                  j                  dk(  r|j                  j                  rJ y |j                  j                  sJ y y )NT)rF   Fr   )rF   r   f)r   to_numpyr   r   r   r   isnaany
isinstancer   r@   
ArrowDtypekindr   s        r   .test_readonly_propagates_to_numpy_array_methodz?BaseSetitemTests.test_readonly_propagates_to_numpy_array_method   s     mmm&yy"""" }}%}(}}%}(D$'zz++++::'''' 99;??--UT!W-=C$**bmm4C9O 99.....yy**** r   )7__name__
__module__r3   r4   fixturer(   r7   r,   rD   rI   rW   r\   r_   markparametrizerf   rp   ru   rw   rz   r   r   r   rY   r@   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   
   sE   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  
	'
	' [[	HBHHYg68KL4  
	'
	' [[1beeBHHaAruu%W5	
 _%   [[_tUm< =  [[]T5M:[[Xt}5! 6 ;!. [[Xt}5! 6!0 	03 .'*
8
!
#0,1("	.%39(( +r   r   )numpyr   r4   pandas.core.dtypes.commonr   pandasr@   pandas._testing_testingrQ   r   r   r   r   <module>r     s       1  N+ N+r   