
    Owg9=                     <    d dl Zd dlZd dlZd dlmZ  G d d      Zy)    Nc                   8   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 Zd Z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 ej,                  dddej2                  gd      gddg      d        Zej&                  j7                  d      ej&                  j)                  ddddej2                  g ej,                  dddej2                  gd      gddg      d               Zd  Zd! Z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)d0 Z*d1 Z+y2)3BaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c                     t        j                  |      }|j                  d d }t        j                  |d d       }t        j                  ||       |j                  g d   }t        j                  ||       y )N   r            )pdSeriesiloctmassert_series_equalselfdataserresultexpecteds        Z/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/extension/base/getitem.pytest_iloc_seriesz!BaseGetitemTests.test_iloc_series   s`    iio"199T"1X&
vx0,'
vx0    c                    t        j                  |t        j                  t	        |      d      d      }t        j                  d|d d i      }|j
                  d ddgf   }t        j                  ||       |j
                  g ddgf   }t        j                  ||       t        j                  |d d d      }|j
                  d ddf   }t        j                  ||       |j
                  d ddf   }t        j                  ||       |j
                  d d d d d	f   }t        j                  ||dg          |d
dg   j
                  d d d d d	f   }t        j                  ||d
g          y )Nint64dtypeABr   r   r   r   namer	   r   )
r   	DataFramenparangelenr   r   assert_frame_equalr   r   r   r   dfr   r   s        r   test_iloc_framez BaseGetitemTests.test_iloc_frame   sT   \\299SYg+NOP<<d2Ah0 !aS!
fh/ s*+
fh/99T"1XC0 !Q
vx0 !Q
vx0 CaC
fb#i0S#J$$Q!V,
fb#i0r   c                 ^   t        j                  d|i      }|j                  d d d d f   }t        j                  ||       |j                  d d d df   }t        j                  ||       |j                  d d d df   }t        j                  ||       |j                  d d d d df   }t        j                  ||       |j                  d d ddf   }t        j                  ||j                  d d d df          |j                  d d dd f   }t        j                  ||       y )Nr   r   r	   r   )r   r"   r   r   r&   )r   r   r(   r   s       r   test_iloc_frame_single_blockz-BaseGetitemTests.test_iloc_frame_single_block0   s    \\3+&A
fb)BQB
fb)BQB
fb)CaC
fb)AaC
fbgga!en5BC
fb)r   c                     t        j                  |      }|j                  d d }t        j                  |d d       }t        j                  ||       |j                  g d   }t        j                  ||       y )Nr
   r   r   )r   r   locr   r   r   s        r   test_loc_seriesz BaseGetitemTests.test_loc_seriesF   s`    iio!99T"1X&
vx0&
vx0r   c                 $   t        j                  |t        j                  t	        |      d      d      }t        j                  d|d d i      }|j
                  d ddgf   }t        j                  ||       |j
                  g ddgf   }t        j                  ||       t        j                  |d d d      }|j
                  d ddf   }t        j                  ||       |j
                  d ddf   }t        j                  ||       y )	Nr   r   r   r   r   r
   r   r    )
r   r"   r#   r$   r%   r.   r   r&   r   r   r'   s        r   test_loc_framezBaseGetitemTests.test_loc_frameO   s    \\299SYg+NOP<<d2Ah0 SE	"
fh/ se+,
fh/99T"1XC0 C
vx0 C
vx0r   c                 ~   t        j                  d|i      }t        j                  |d   gdgd|j                        }|j                  d   }t        j                  ||       t        j                  |d   gdgt        |      dz
  |j                        }|j                  d   }t        j                  ||       y )Nr   r	   )indexr!   r   r+   r   )	r   r"   r   r   r.   r   r   r%   r   r'   s        r    test_loc_iloc_frame_single_dtypez1BaseGetitemTests.test_loc_iloc_frame_single_dtypee   s     \\3+&99d1gYse!4::N
vx099"XJse#d)a-tzz
 
vx0r   c                     |d   }t        ||j                  j                        sJ t        j                  |      d   }t        ||j                  j                        sJ y Nr   )
isinstancer   typer   r   r   r   r   s      r   test_getitem_scalarz$BaseGetitemTests.test_getitem_scalart   sM    a&$**//2224#&$**//222r   c                 2   d}t        j                  t        |      5  |d    d d d        t        j                  t        |      5  |d    d d d        t        |      }dj	                  dddd	| d
| d|dz    d| d|dz    d| g      }t        j                  t        |      5  ||dz       d d d        t        j                  t        |      5  || dz
      d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   OxY w# 1 sw Y   y xY w)Nz{only integers, slices \(`:`\), ellipsis \(`...`\), numpy.newaxis \(`None`\) and integer or boolean arrays are valid indicesmatchfoog      @|zlist index out of rangezindex out of boundszOut of bounds accessz loc must be an integer between -z and zindex r   z' is out of bounds for axis 0 with size zindex -)pytestraises
IndexErrorr%   join)r   r   msgubs       r   test_getitem_invalidz%BaseGetitemTests.test_getitem_invalid{   s)   J 	 ]]:S1 	K	]]:S1 	I	 Yhh)%&22$eB4@AEbTJ"Q$FrdK	
 ]]:S1 	aL	]]:S1 	"qM	 	%	 		 		 		 	s/   C)C5*	D
D)C25C>D
Dc                 $    |d   } |||      sJ y r6    )r   data_missingna_cmpna_valuer   s        r   test_getitem_scalar_naz'BaseGetitemTests.test_getitem_scalar_na   s    afh'''r   c                     |g    }t        |      dk(  sJ t        |t        |            sJ |t        j                  g d         }t        j                  ||       y )Nr   r   r   )r%   r7   r8   r#   arrayr   assert_extension_array_equal)r   r   r   r   s       r   test_getitem_emptyz#BaseGetitemTests.test_getitem_empty   sV    b6{a&$t*---734
''9r   c                 Z   t        j                  t        |      t              }||   }t        |      dk(  sJ t	        |t        |            sJ t        j                  t        |      t              }t        j                  |      |   }t        |      dk(  sJ |j                  |j                  k(  sJ d|d<   ||   }t        |      dk(  sJ t	        |t        |            sJ t        j                  |      |   }t        |      dk(  sJ |j                  |j                  k(  sJ y )Nr   r   Tr   )	r#   zerosr%   boolr7   r8   r   r   r   )r   r   maskr   s       r   test_getitem_maskz"BaseGetitemTests.test_getitem_mask   s   xxD	.d6{a&$t*--- xxD	.4&6{a||tzz))) Qd6{a&$t*--- 4&6{a||tzz)))r   c                 P   t        j                  ddg      }dt        |       }t        j                  t
        |      5  ||    d d d        t        j                  |d      }t        j                  t
        |      5  ||    d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)NTFz-Boolean index has wrong length: 2 instead of r<   booleanr   )r#   rN   r%   r@   rA   rB   r   )r   r   rT   rD   s       r   test_getitem_mask_raisesz)BaseGetitemTests.test_getitem_mask_raises   s    xxu&=c$i[I]]:S1 	J	 xxI.]]:S1 	J	 			 		 	s   BBBB%c                 :   t        j                  t        j                  |j                  d      d      }||   }t        |      dk(  sJ t        |t        |            sJ t        j                  |      |   }t        |      dk(  sJ |j                  |j                  k(  sJ d|d d |j                  g d      }||   }t        j                  ||       t        j                  |      }t        j                  |      |   }t        j                  ||       y )NrS   r   rW   r   T   )r   r   r	   r
   r   )r   rN   r#   rR   shaper%   r7   r8   r   r   taker   rO   r   )r   r   rT   r   r   s        r   test_getitem_boolean_array_maskz0BaseGetitemTests.test_getitem_boolean_array_mask   s    xx6:)Ld6{a&$t*---4&6{a||tzz)))Ra99_-d
''999X&4&
vx0r   c                    t        j                  t        j                  |j                  d      d      }t         j
                  |d d d|dd ||   }||j                  d         }t        j                  ||       t        j                  |      }||   }||j                  d         }t        j                  ||       y )NrS   r   rW   r	   Tr   F)r   rN   r#   rR   r[   NAfillnar   rO   r   r   )r   r   rT   r   r   ss         r   (test_getitem_boolean_na_treated_as_falsez9BaseGetitemTests.test_getitem_boolean_na_treated_as_false   s    xx6:)L55RaQq	dE*+
''9IIdO4T[['(
vx0r   idxr   r   r	   Int64r   )listinteger-arrayznumpy-array)idsc                 4   ||   }t        |      dk(  sJ t        |t        |            sJ |j                  g d      }t	        j
                  ||       t        j                  |      }t        j                  |      |   }t	        j                  ||       y )Nr
   rd   )	r%   r7   r8   r\   r   rO   r   r   r   )r   r   rc   r   r   s        r   test_getitem_integer_arrayz+BaseGetitemTests.test_getitem_integer_array   s     c6{a&$t*---99Y'
''999X&4%
vx0r   r   r   r	   rf   rg   c                 r    d}t        j                  t        |      5  ||    d d d        y # 1 sw Y   y xY w)N9Cannot index with an integer indexer containing NA valuesr<   )r@   rA   
ValueError)r   r   rc   rD   s       r   (test_getitem_integer_with_missing_raisesz9BaseGetitemTests.test_getitem_integer_with_missing_raises   s4     J]]:S1 	I	 	 	s   -6zSTries label-based and raises KeyError; in some cases raises when calling np.asarray)reasonc           
         d}t        j                  |t        t        |            D cg c]  }t	        d|z          c}      }t        j                  t        |      5  ||    d d d        y c c}w # 1 sw Y   y xY w)Nrl   d   r3   r<   )r   r   ranger%   chrr@   rA   rm   )r   r   rc   rD   ir   s         r   /test_getitem_series_integer_with_missing_raisesz@BaseGetitemTests.test_getitem_series_integer_with_missing_raises  sm     J ii5T;K$LaSq\$LM]]:S1 	H	 	 %M	 	s   A0
!A55A>c                     |t        d         }t        |t        |            sJ |t        d         }t        |t        |            sJ y )Nr   r   )slicer7   r8   r9   s      r   test_getitem_slicez#BaseGetitemTests.test_getitem_slice  sD    eAh&$t*---eAh&$t*---r   c                    |dd d f   }t        j                  ||       |d d df   }t        j                  ||       |dd df   }t        j                  ||d d        |d ddf   }t        j                  ||d d        |dd d df   }t        j                  ||d d d          |d d ddf   }t        j                  ||d d d          y )N.r
   r	   )r   rO   r9   s      r   test_getitem_ellipsis_and_slicez0BaseGetitemTests.test_getitem_ellipsis_and_slice  s    c1f
''5af
''5c2A2g
''Ra9bqb#g
''Ra9c3Q3h
''SqS	:cc3h
''SqS	:r   c                 X   t        j                  |t        t        |            D cg c]  }d|z  	 c}      }|j	                  d      |j
                  d   k(  sJ |j	                  ddg      }|j
                  ddg   }t        j                  ||       |j	                  t        d            }|j
                  ddg   }t        j                  ||       |j	                  d      J |j	                  |j                  j                         dz         J t        j                  |d d t        d	            }|j	                  d
      |j
                  d   k(  sJ |j	                  t        dd            }|j
                  g d   }t        j                  ||       |j	                  d      }|J d}t        j                  t        |      5  |j	                  d      |j
                  d   k(  sJ |j	                  d      |j
                  d   k(  sJ |j	                  t        |            J 	 d d d        t        j                  |      }t        j                  d       5  |d d d   }d d d        j	                  d      J y c c}w # 1 sw Y   ]xY w# 1 sw Y   .xY w)Nr	   rr   r      r
   r   r   r+   abcdefcbd)r   r	   r
   Zz;Series.__getitem__ treating keys as positions is deprecatedr<   )r   r   rs   r%   getr   r   r   rx   r3   maxrf   assert_produces_warningFutureWarning)r   r   ru   ra   r   r   rD   s2s           r   test_getzBaseGetitemTests.test_get2  s?   IId%D	2B"CQ1q5"CDuuQx166!9$$$1v661a&>
vx0uQx661a&>
vx0uuRy   uuQWW[[]Q&'///IId2Ahd8n5uuSzQVVAY&&&uS#'66)$
vx0s~~K''SA 	)558qvvay(((559r
***55Q=(((	) IIdO''- 	3Q3B	 vvay   G #D2	) 	)	 	s   J
A#J*	J J J)c                     t        j                  |      g d   }|j                  d   |d   k(  sJ |j                  d   |d   k(  sJ |j                  d   |d   k(  sJ y )Nr   r   r
   r   r   r	   r
   )r   r   r   r9   s      r   test_take_sequencez#BaseGetitemTests.test_take_sequenceY  sb    4+{{1~a((({{1~a((({{1~a(((r   c                    |j                  ddg      }|j                  |j                  k(  sJ |d   |d   k(  sJ |d   |d   k(  sJ |j                  ddgd|      }|d   |d   k(  sJ  ||d   |      sJ t        j                  t        d      5  |j                  t        |      dz   g       d d d        y # 1 sw Y   y xY w)Nr   r+   r   T)
allow_fill
fill_valuezout of boundsr<   )r\   r   r@   rA   rB   r%   )r   r   rK   rJ   r   s        r   	test_takezBaseGetitemTests.test_take_  s    Ar7#||tzz)))ayDG###ayDH$$$Ar7tIayDG###fQi***]]:_= 	'IIs4y1}o&	' 	' 	's   B==Cc                 `   |d d }|j                  dgd      } ||d   |      sJ d}t        j                  t        |      5  |j                  dg       d d d        t        j                  t        d      5  |j                  ddg       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)	Nr   r+   Tr   z;cannot do a non-empty take from an empty axes|out of boundsr<   zcannot do a non-empty taker   )r\   r@   rA   rB   )r   r   rK   rJ   emptyr   rD   s          r   test_take_emptyz BaseGetitemTests.test_take_emptyl  s    RaRDT2fQi***K]]:S1 	JJt	 ]]:-IJ 	JJ1v	 		 		 	s   B;B$B!$B-c                     t        |      }|j                  d| |dz
  dg      }|j                  dd|dz
  |dz
  g      }t        j                  ||       y )Nr   r   r+   )r%   r\   r   rO   )r   r   nr   r   s        r   test_take_negativez#BaseGetitemTests.test_take_negativez  sW    IAr1q5"-.99aAE1q512
''9r   c                     |d   }|d   }|j                  |||g|j                        }|j                  ddg|d      }|j                  ddg      }t        j                  ||       y )Nr   r   r   r+   Tr   r   )_from_sequencer   r\   r   rO   )r   rI   r   naarrr   r   s          r   test_take_non_na_fill_valuez,BaseGetitemTests.test_take_non_na_fill_value  sw    !!_
!_))R (:(: * 
 2q'jTJ88QF#
''9r   c                     t        j                  t        d      5  |j                  ddg|d       d d d        y # 1 sw Y   y xY w)N r<   r   Tr   )r@   rA   rm   r\   )r   r   rK   s      r   &test_take_pandas_style_negative_raisesz7BaseGetitemTests.test_take_pandas_style_negative_raises  s?    ]]:R0 	EIIq"g(tID	E 	E 	Es	   <Ar   TFc                     |d d }t        j                  t        d      5  |j                  t	        j
                  ddg      |       d d d        y # 1 sw Y   y xY w)Nr
   zout of bounds|out-of-boundsr<   r   r   )r@   rA   rB   r\   r#   asarray)r   r   r   r   s       r   test_take_out_of_bounds_raisesz/BaseGetitemTests.test_take_out_of_bounds_raises  sR    2Ah]]:-JK 	@HHRZZA'JH?	@ 	@ 	@s   )AAc           	      (   t        j                  |      }|j                  ddg      }t        j                  |j                  |d   |t	        |      dz
     g|j
                        dt	        |      dz
  g      }t        j                  ||       y )Nr   r+   r   r   rr   )r   r   r\   r   r%   r   r   r   )r   r   ra   r   r   s        r   test_take_seriesz!BaseGetitemTests.test_take_series  s}    IIdOB99a$s4y1}*= >aggNc$i!m$
 	vx0r   c                 ~   t        j                  |      }|j                  g d      }t        j                  |j                  g d      g d      }t	        j
                  ||       t        |      }|j                  dd|g      }t        j                  |j                  ||d   |g|j                        dd|g      }t	        j
                  ||       |j                  ||dz   g      }t        j                  |j                  ||g|j                        ||dz   g      }t	        j
                  ||       y )Nr   rr   r+   r   r   r   )	r   r   reindexr\   r   r   r%   r   r   )r   r   rK   ra   r   r   r   s          r   test_reindexzBaseGetitemTests.test_reindex  s   IIdO9%99TYYy1C
vx0IB1:&9947H =QWWMq!*
 	vx0Aq1u:&998 4AGGDQPQTUPUJ
 	vx0r   c                 <   |d   }|d   }|j                  ||g|j                        }t        j                  |      }|j	                  g d|      }t        j                  |j                  |||g|j                              }t        j                  ||       y )Nr   r   r   rd   )r   )r   r   r   r   r   r   r   )r   rI   validr   r   r   r   r   s           r   test_reindex_non_na_fill_valuez/BaseGetitemTests.test_reindex_non_na_fill_value  s    Q!_))2u+\=O=O)PiinY5999''UE(:,BTBT'U
 	vx0r   c                 @   t        j                  d|i      }|j                  dgdf   }|j                  dk(  sJ |j                  j
                  d   j                  dk(  sJ t        |j                  d      r&|j                  j                  j                  dk(  sJ y y )Nr   r   r   blocks)r   r"   r.   ndim_mgrarrayshasattr_block)r   r   r(   ress       r   test_loc_len1zBaseGetitemTests.test_loc_len1  s    \\3+&ffaS#Xxx1}}xxq!&&!+++388X&88??''1,,, 'r   c                 r   t        j                  |      }|d d j                         }||d   k(  sJ d}t        j                  t
        |      5  |d d j                          d d d        t        j                  t
        |      5  |j                          d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr   r   z6can only convert an array of size 1 to a Python scalarr<   )r   r   itemr@   rA   rm   )r   r   ra   r   rD   s        r   	test_itemzBaseGetitemTests.test_item  s    IIdO2Aa   F]]:S1 	bqEJJL	 ]]:S1 	FFH	 		 		 	s   B!B-!B*-B6N),__name__
__module____qualname____doc__r   r)   r,   r/   r1   r4   r:   rF   rL   rP   rU   rX   r]   rb   r@   markparametrizer   rN   r#   rj   r_   rn   xfailrv   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r      s   /118*,11,138(:*01&1$ [[	HBHHYg68KL4  
	1
	1 [[
Q255	8288Q1bee$4GDE_%  


 [[7   [[
Q255	8288Q1bee$4GDE_%  
	.;(%!N)':	:E [[\D%=9@ :@11(1-r   r   )	numpyr#   r@   pandasr   pandas._testing_testingr   r   rH   r   r   <module>r      s       M Mr   