
    bMh9=                     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                      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                            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 ej        dddej        gd          gddg          d             Zej                            d          ej                            ddddej        g ej        dddej        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                            d)d*d+g          d,             Z&d- Z'd. Z(d/ Z)d0 Z*d1 Z+d2S )3BaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c                     t          j        |          }|j        d d         }t          j        |d d                   }t          j        ||           |j        g d         }t          j        ||           d S )N   r            )pdSeriesiloctmassert_series_equalselfdataserresultexpecteds        c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/extension/base/getitem.pytest_iloc_seriesz!BaseGetitemTests.test_iloc_series   sq    ioo"1"9T"1"X&&
vx000,,,'
vx0000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                    d S )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   s   \29SYYg+N+N+NOOPP<d2A2h00 !aS!
fh/// s*+
fh///9T"1"XC000 !Q
vx000 !Q
vx000 CCaC
fb#i000S#J$QQQ!V,
fb#i00000r   c                 6   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        ||           d S )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+&&AAA
fb)))BQB
fb)))BQB
fb)))CCaC
fb)))AaC
fbgaaa!en555BCC
fb)))))r   c                     t          j        |          }|j        d d         }t          j        |d d                   }t          j        ||           |j        g d         }t          j        ||           d S )Nr
   r   r   )r   r   locr   r   r   s        r   test_loc_seriesz BaseGetitemTests.test_loc_seriesF   sq    ioo!9T"1"X&&
vx000&
vx0000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	        ||           d S )	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   \29SYYg+N+N+NOOPP<d2A2h00 SE	"
fh/// se+,
fh///9T"1"XC000 C
vx000 C
vx00000r   c                 n   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        ||           d S )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+&&9d1gYse!4:NNN
vx0009"XJse#d))a-tz
 
 
 
vx00000r   c                     |d         }t          ||j        j                  sJ t          j        |          d         }t          ||j        j                  sJ d S Nr   )
isinstancer   typer   r   r   r   r   s      r   test_getitem_scalarz$BaseGetitemTests.test_getitem_scalart   sW    a&$*/222224#&$*/2222222r   c                 v   d}t          j        t          |          5  |d          d d d            n# 1 swxY w Y   t          j        t          |          5  |d          d d d            n# 1 swxY w Y   t          |          }d                    dddd	| d
| d|dz    d| d|dz    d| g          }t          j        t          |          5  ||dz             d d d            n# 1 swxY w Y   t          j        t          |          5  || dz
            d d d            d S # 1 swxY w Y   d S )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{   se   J 	 ]:S111 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:S111 	 	II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 YYhh)%&@2@@B@@JAJJbJJK"Q$KKrKK	
 	
 ]:S111 	 	aLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:S111 	 	"qMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sB   	377	A..A25A2C..C25C2D..D25D2c                 2    |d         } |||          sJ d S r6    )r   data_missingna_cmpna_valuer   s        r   test_getitem_scalar_naz'BaseGetitemTests.test_getitem_scalar_na   s)    avfh'''''''r   c                     |g          }t          |          dk    sJ t          |t          |                    sJ |t          j        g d                   }t          j        ||           d S )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   sp    b6{{a&$t**-----73334
'99999r   c                    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 d S )Nr   r   Tr   )	r#   zerosr%   boolr7   r8   r   r   r   )r   r   maskr   s       r   test_getitem_maskz"BaseGetitemTests.test_getitem_mask   s?   xD		...d6{{a&$t**----- xD		...4&6{{a|tz)))) Qd6{{a&$t**----- 4&6{{a|tz))))))r   c                 p   t          j        ddg          }dt          |           }t          j        t
          |          5  ||          d d d            n# 1 swxY w Y   t          j        |d          }t          j        t
          |          5  ||          d d d            d S # 1 swxY w Y   d S )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   s3   xu&&Ic$iiII]:S111 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 xI...]:S111 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   	AA A	B++B/2B/c                 Z   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<   |
                    g d          }||         }t          j        ||           t          j        |          }t          j        |          |         }t          j        ||           d S )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   x6:::)LLLd6{{a&$t**-----4&6{{a|tz))))RaR99___--d
'9999X&&4&
vx00000r   c                    t          j        t          j        |j        d          d          }t           j        |d d<   d|dd<   ||         }||                    d                   }t          j        ||           t          j	        |          }||         }||                    d                   }t          j
        ||           d S )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    x6:::)LLL5RaRQqS	dE**+
'999IdOO4T[[''(
vx00000r   idxr   r   r	   Int64r   )listinteger-arrayznumpy-array)idsc                 \   ||         }t          |          dk    sJ t          |t          |                    sJ |                    g d          }t	          j        ||           t          j        |          }t          j        |          |         }t	          j        ||           d S )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**-----99YYY''
'9999X&&4%
vx00000r   r   r   r	   rf   rg   c                     d}t          j        t          |          5  ||          d d d            d S # 1 swxY w Y   d S )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   s     J]:S111 	 	II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	488zSTries label-based and raises KeyError; in some cases raises when calling np.asarray)reasonc           	          d}t          j        |d t          t          |                    D                       }t	          j        t          |          5  ||          d d d            d S # 1 swxY w Y   d S )Nrl   c                 2    g | ]}t          d |z             S )d   )chr.0is     r   
<listcomp>zTBaseGetitemTests.test_getitem_series_integer_with_missing_raises.<locals>.<listcomp>  s"    $L$L$LaSq\\$L$L$Lr   r3   r<   )r   r   ranger%   r@   rA   rm   )r   r   rc   rD   r   s        r   /test_getitem_series_integer_with_missing_raisesz@BaseGetitemTests.test_getitem_series_integer_with_missing_raises  s     J i$L$L5T;K;K$L$L$LMMM]:S111 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	A..A25A2c                     |t          d                   }t          |t          |                    sJ |t          d                   }t          |t          |                    sJ d S )Nr   r   )slicer7   r8   r9   s      r   test_getitem_slicez#BaseGetitemTests.test_getitem_slice  s^    eAhh&$t**-----eAhh&$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                    d S )N.r
   r	   )r   rO   r9   s      r   test_getitem_ellipsis_and_slicez0BaseGetitemTests.test_getitem_ellipsis_and_slice  s   c111f
'555aaaf
'555c2A2g
'RaR999bqb#g
'RaR999c33Q3h
'SSqS	:::ccc3h
'SSqS	:::::r   c           	         t          j        |d t          t          |                    D                       }|                    d          |j        d         k    sJ |                    ddg          }|j        ddg         }t          j        ||           |                    t          d                    }|j        ddg         }t          j        ||           |                    d	          J |                    |j	        
                                dz             J t          j        |d d         t          d
                    }|                    d          |j        d         k    sJ |                    t          dd                    }|j        g d         }t          j        ||           |                    d          }|J d}t          j        t          |          5  |                    d          |j        d         k    sJ |                    d	          |j        d	         k    sJ |                    t          |                    J 	 d d d            n# 1 swxY w Y   t          j        |          }t          j        d           5  |d d d         }d d d            n# 1 swxY w Y   |                    d          J d S )Nc                     g | ]}d |z  S )r	   rH   rt   s     r   rw   z-BaseGetitemTests.test_get.<locals>.<listcomp>4  s    "C"C"CQ1q5"C"C"Cr   rx   r   r	      r
   r   r   r+   abcdefcbd)r   r	   r
   Zz;Series.__getitem__ treating keys as positions is deprecatedr<   )r   r   ry   r%   getr   r   r   r|   r3   maxrf   assert_produces_warningFutureWarning)r   r   ra   r   r   rD   s2s          r   test_getzBaseGetitemTests.test_get2  s   Id"C"C%D		2B2B"C"C"CDDDuuQxx16!9$$$$1v61a&>
vx000uQxx61a&>
vx000uuRyy   uuQW[[]]Q&''///Id2A2hd8nn555uuSzzQVAY&&&&uS#''6)))$
vx000s~~~K'SAAA 	) 	)5588qvay((((5599r
****55Q==((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) IdOO'-- 	 	33Q3B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 vvayy     s%   8A1I66I:=I:)KKKc                     t          j        |          g d         }|j        d         |d         k    sJ |j        d         |d         k    sJ |j        d         |d         k    sJ d S )Nr   r   r
   r   r   r	   r
   )r   r   r   r9   s      r   test_take_sequencez#BaseGetitemTests.test_take_sequenceY  so    4+{1~a(((({1~a(((({1~a((((((r   c                    |                     ddg          }|j        |j        k    sJ |d         |d         k    sJ |d         |d         k    sJ |                     ddgd|          }|d         |d         k    sJ  ||d         |          sJ t          j        t          d          5  |                     t          |          dz   g           d d d            d S # 1 swxY w Y   d S )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_  sE   Ar7##|tz))))ayDG####ayDH$$$$Ar7tIIayDG####vfQi*****]:_=== 	' 	'IIs4yy1}o&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   /'C##C'*C'c                    |d d         }|                     dgd          } ||d         |          sJ d}t          j        t          |          5  |                     dg           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddg           d d d            d S # 1 swxY w Y   d S )	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  sW   RaRRDT22vfQi*****K]:S111 	 	JJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:-IJJJ 	 	JJ1v	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A77A;>A;CC	Cc                     t          |          }|                    d| |dz
  dg          }|                    dd|dz
  |dz
  g          }t          j        ||           d S )Nr   r   r+   )r%   r\   r   rO   )r   r   nr   r   s        r   test_take_negativez#BaseGetitemTests.test_take_negativez  sh    IIAr1q5"-..99aAE1q5122
'99999r   c                     |d         }|d         }|                     |||g|j                  }|                    ddg|d          }|                    ddg          }t          j        ||           d S )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  s    !!_
!_))R (: * 
 
 2q'jTJJ88QF##
'99999r   c                     t          j        t          d          5  |                    ddg|d           d d d            d S # 1 swxY w Y   d S )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00 	E 	EIIq"g(tIDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   AAAr   TFc                     |d d         }t          j        t          d          5  |                    t	          j        ddg          |           d d d            d S # 1 swxY w Y   d S )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  s    2A2h]:-JKKK 	@ 	@HHRZA''JH???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   ,AA#&A#c           	      F   t          j        |          }|                    ddg          }t          j        |                    |d         |t	          |          dz
           g|j                  dt	          |          dz
  g          }t          j        ||           d S )Nr   r+   r   r   rx   )r   r   r\   r   r%   r   r   r   )r   r   ra   r   r   s        r   test_take_seriesz!BaseGetitemTests.test_take_series  s    IdOOB9a$s4yy1}*= >agNNc$ii!m$
 
 
 	vx00000r   c                    t          j        |          }|                    g d          }t          j        |                    g d          g d          }t	          j        ||           t          |          }|                    dd|g          }t          j        |                    ||d         |g|j                  dd|g          }t	          j        ||           |                    ||dz   g          }t          j        |                    ||g|j                  ||dz   g          }t	          j        ||           d S )Nr   rx   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  sL   IdOO999%%9TYYyyy11CCC
vx000IIB1:&&947H =QWMMq!*
 
 
 	vx000Aq1u:&&98 4AGDDQPQTUPUJ
 
 
 	vx00000r   c                 H   |d         }|d         }|                     ||g|j                  }t          j        |          }|                    g d|          }t          j        |                     |||g|j                            }t          j        ||           d S )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)PPinnYYY5999''UE(:,BT'UU
 
 	vx0000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 d S d S )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+&&faS#Xx1}}}}xq!&!++++38X&& 	-8?'1,,,,	- 	-,,r   c                    t          j        |          }|d d                                         }||d         k    sJ d}t          j        t
          |          5  |d d                                          d d d            n# 1 swxY w Y   t          j        t
          |          5  |                                 d d d            d S # 1 swxY w Y   d S )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  sE   IdOO2A2a    F]:S111 	 	bqbEJJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   BB	B	+CCC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   xfailrz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r      st       //1 1 11 1 18* * *,1 1 11 1 1,1 1 13 3 3  8( ( (: : :* * *0  1 1 1&1 1 1$ [	HBHYYYg6668K8KL444   
	1 	1 
	1 [
Q25	828Q1be$4GDDDE_%   
  

 [7    [
Q25	828Q1be$4GDDDE_%   
  	 . . .; ; ;(%! %! %!N) ) )' ' '  : : :	: 	: 	:E E E [\D%=99@ @ :9@1 1 11 1 1(1 1 1- - -    r   r   )	numpyr#   r@   pandasr   pandas._testing_testingr   r   rH   r   r   <module>r      st                  M M M M M M M M M Mr   