
    d@                     R    d dl Zd dlZd dlZd dlmZ d dlm	Z	  G d de	          Z
dS )    N)BaseExtensionTestsc                      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+d2 Z,d3S )4BaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c                     t          j        |          }|j        d d         }t          j        |d d                   }|                     ||           |j        g d         }|                     ||           d S )N   r            )pdSeriesilocassert_series_equalselfdataserresultexpecteds        _/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/extension/base/getitem.pytest_iloc_seriesz!BaseGetitemTests.test_iloc_series   sw    ioo"1"9T"1"X&&  222,,,'  22222    c                    t          j        |t          j        t	          |          d          d          }t          j        d|d d         i          }|j        d ddgf         }|                     ||           |j        g ddgf         }|                     ||           t          j        |d d         d          }|j        d ddf         }|                     ||           |j        d ddf         }|                     ||           |j        d d d d d	f         }|                     ||dg                    |d
dg         j        d d d d d	f         }|                     ||d
g                    d S )Nint64dtypeABr   r   r   r   namer
   r   )	r   	DataFramenparangelenr   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!111 s*+1119T"1"XC000 !Q  222 !Q  222 CCaCC5	222S#J$QQQ!V,C5	22222r   c                 B   t          j        d|i          }|j        d d d d f         }|                     ||           |j        d d d df         }|                     ||           |j        d d d df         }|                     ||           |j        d d d d df         }|                     ||           |j        d d ddf         }|                     ||j        d d d df                    |j        d d dd f         }|                     ||           d S )Nr   r	   r
   r   )r   r"   r   r&   )r   r   r(   r   s       r   test_iloc_frame_single_blockz-BaseGetitemTests.test_iloc_frame_single_block1   s=   \3+&&AAA+++BQB+++BQB+++CCaC+++AaC2A2777BCC+++++r   c                     t          j        |          }|j        d d         }t          j        |d d                   }|                     ||           |j        g d         }|                     ||           d S )Nr   r   r   )r   r   locr   r   s        r   test_loc_seriesz BaseGetitemTests.test_loc_seriesG   sw    ioo!9T"1"X&&  222&  22222r   c                 *   t          j        |t          j        t	          |          d          d          }t          j        d|d d         i          }|j        d ddgf         }|                     ||           |j        g ddgf         }|                     ||           t          j        |d d         d          }|j        d ddf         }|                     ||           |j        d ddf         }|                     ||           d S )	Nr   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_frameP   s   \29SYYg+N+N+NOOPP<d2A2h00 SE	"111 se+,1119T"1"XC000 C  222 C  22222r   c                 r   t          j        d|i          }t          j        |d         gdgd|j                  }|j        d         }|                     ||           t          j        |d         gdgt          |          dz
  |j                  }|j        d         }|                     ||           d S )Nr   r
   )indexr!   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_dtypef   s     \3+&&9d1gYse!4:NNN  2229"XJse#d))a-tz
 
 
   22222r   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_scalaru   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                   }|                     ||           d S )Nr   r   r   )r%   r7   r8   r#   arrayassert_extension_array_equal)r   r   r   r   s       r   test_getitem_emptyz#BaseGetitemTests.test_getitem_empty   ss    b6{{a&$t**-----73334))&(;;;;;r   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                 ^   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        |          |         }|                     ||           d S )NrS   r   rW   r   T   )r   r	   r
   r   r   )r   rN   r#   rR   shaper%   r7   r8   r   r   takerO   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))&(;;;9X&&4&  22222r   c                    t          j        t          j        |j        d          d          }t           j        |d d<   d|dd<   ||         }||                    d                   }|                     ||           t          j        |          }||         }||                    d                   }| 	                    ||           d S )NrS   r   rW   r
   Tr   F)
r   rN   r#   rR   r[   NAfillnarO   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**+))&(;;;IdOO4T[[''(  22222r   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        |          |         }|                     ||           d S )Nr   rd   )r%   r7   r8   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''))&(;;;9X&&4%  22222r   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                 6    g | ]}t          j        d           S )r   )tmrands).0_s     r   
<listcomp>zTBaseGetitemTests.test_getitem_series_integer_with_missing_raises.<locals>.<listcomp>  s     $K$K$KQRXa[[$K$K$Kr   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$K$K%D		:J:J$K$K$KLLL]: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         }|                      ||           |d d df         }|                      ||           |dd df         }|                      ||d d                    |d ddf         }|                      ||d d                    |dd d df         }|                      ||d d d                    |d d ddf         }|                      ||d d d                    d S )N.r   r
   )rO   r9   s      r   test_getitem_ellipsis_and_slicez0BaseGetitemTests.test_getitem_ellipsis_and_slice  s   c111f))&$777aaaf))&$777c2A2g))&$rr(;;;bqb#g))&$rr(;;;c33Q3h))&$sss)<<<ccc3h))&$sss)<<<<<r   c           	      d   t          j        |d t          t          |                    D                       }|                    d          |j        d         k    sJ |                    ddg          }|j        ddg         }|                     ||           |                    t          d                    }|j        ddg         }|                     ||           |                    d	          J |                    |j        	                                dz             J t          j        |d d         t          d
                    }|                    d          |j        d         k    sJ |                    t          dd                    }|j        g d         }|                     ||           |                    d          }|J |                    d          |j        d         k    sJ |                    d	          |j        d	         k    sJ |                    t          |                    J 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   is     r   rv   z-BaseGetitemTests.test_get.<locals>.<listcomp>5  s    "C"C"CQ1q5"C"C"Cr   rw   r   r
      r   r   r	   r+   abcdefcbd)r	   r
   r   Z)r   r   rx   r%   getr   r   r{   r3   maxrf   rr   assert_produces_warning)r   r   ra   r   r   s2s         r   test_getzBaseGetitemTests.test_get3  s   Id"C"C%D		2B2B"C"C"CDDDuuQxx16!9$$$$1v61a&>  222uQxx61a&>  222uuRyy   uuQW[[]]Q&''///Id2A2hd8nn555uuSzzQVAY&&&&uS#''6)))$  222s~~~uuQxx16!9$$$$uuRyyAF2J&&&&uuSVV}}$$$ IdOO'-- 	 	33Q3B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 vvayy     s   6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 d S )Nr   r	   r   r   r	   r
   r   )r   r   r   r9   s      r   test_take_sequencez#BaseGetitemTests.test_take_sequenceX  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_emptyk  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          }|                     ||           d S )Nr   r	   r+   )r%   r\   rO   )r   r   nr   r   s        r   test_take_negativez#BaseGetitemTests.test_take_negativey  sk    IIAr1q5"-..99aAE1q5122))&(;;;;;r   c                     |d         }|d         }|                     |||g|j                  }|                    ddg|d          }|                    ddg          }|                     ||           d S )Nr	   r   r   r+   Tr   r   )_from_sequencer   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##))&(;;;;;r   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           	      H   t          j        |          }|                    ddg          }t          j        |                    |d         |t	          |          dz
           g|j                  dt	          |          dz
  g          }|                     ||           d S )Nr   r+   r	   r   rw   )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$
 
 
 	  22222r   c                    t          j        |          }|                    g d          }t          j        |                    g d          g d          }|                     ||           t          |          }|                    dd|g          }t          j        |                    ||d         |g|j                  dd|g          }|                     ||           |                    ||dz   g          }t          j        |                    ||g|j                  ||dz   g          }|                     ||           d S )Nr   rw   r+   r   r   r	   )r   r   reindexr\   r   r%   r   r   )r   r   rK   ra   r   r   r   s          r   test_reindexzBaseGetitemTests.test_reindex  sU   IdOO999%%9TYYyyy11CCC  222IIB1:&&947H =QWMMq!*
 
 
 	  222Aq1u:&&98 4AGDDQPQTUPUJ
 
 
 	  22222r   c                 J   |d         }|d         }|                     ||g|j                  }t          j        |          }|                    g d|          }t          j        |                     |||g|j                            }|                     ||           d S )Nr	   r   r   rd   )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
 
 	  22222r   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c           	      8    G d dt           j        j                  }t          j        d |t	          j        ddgt                              i          }|j        d d         }|                     t          |d         j        j
                  d           d S )	Nc                   "     e Zd ZdZ fdZ xZS )BBaseGetitemTests.test_ellipsis_index.<locals>.CapturingStringArrayz6Extend StringArray to capture arguments to __getitem__c                 T    || _         t                                          |          S )N)last_item_argsuper__getitem__)r   r   	__class__s     r   r   zNBaseGetitemTests.test_ellipsis_index.<locals>.CapturingStringArray.__getitem__  s#    %)"ww**4000r   )__name__
__module____qualname____doc__r   __classcell__)r   s   @r   CapturingStringArrayr     s>        HH1 1 1 1 1 1 1 1 1r   r   col1helloworldr   r	   zslice(None, 1, None))r   r   StringArrayr"   r#   rN   objectr   assert_equalstrr   )r   r   r(   ru   s       r   test_ellipsis_indexz$BaseGetitemTests.test_ellipsis_index  s    	1 	1 	1 	1 	129#8 	1 	1 	1 \))"(GW3EV*T*T*TUUV
 
 GBQBK
 	#bj.<==?UVVVVVr   N)-r   r   r   r   r   r)   r,   r/   r1   r4   r:   rF   rL   rP   rU   rX   r]   rb   r@   markparametrizer   rN   r#   rj   r_   rn   xfailry   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r   	   s       //3 3 33 3 38, , ,,3 3 33 3 3,3 3 33 3 3  8( ( (< < <* * *0  3 3 3&3 3 3$ [	HBHYYYg6668K8KL444   
	3 	3 
	3 [
Q25	828Q1be$4GDDDE_%   
  

 [7    [
Q25	828Q1be$4GDDDE_%   
  	 . . .= = =(#! #! #!J) ) )' ' '  < < <	< 	< 	<E E E [\D%=99@ @ :9@3 3 33 3 3(3 3 3- - -  W W W W Wr   r   )numpyr#   r@   pandasr   pandas._testing_testingrr    pandas.tests.extension.base.baser   r   rH   r   r   <module>r      s                   ? ? ? ? ? ?_W _W _W _W _W) _W _W _W _W _Wr   