o
    iG                     @   s"  d Z ddlmZ ddlZddlmZmZ ddlZddlZddl	m
Z
 ddlm  mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlm Z! ddl"m#Z# ddl$m%Z% e&d	Z'G d
d de%Z(G dd dZ)G dd dZ*G dd dZ+G dd dZ,G dd dZ-dS )z* test positional based indexing with iloc     )datetimeN)catch_warningssimplefilter)IndexingError)NACategoricalCategoricalDtype	DataFrameIndexIntervalNaTSeries	Timestamparrayconcat
date_rangeinterval_rangeisnato_datetime)	is_scalar)Basezuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indicesc                   @   s,   e Zd Zejdddg dgdd ZdS )TestiLockey   r      r   c                 C   s   | j d|g dtd d S )Niloc)labelsmixedtsfloatsempty)typsfails)check_result
IndexError)selfr    r(   Z/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/indexing/test_iloc.py"test_iloc_getitem_int_and_list_int-   s   
z+TestiLoc.test_iloc_getitem_int_and_list_intN)__name__
__module____qualname__pytestmarkparametrizer*   r(   r(   r(   r)   r   ,   s    r   c                   @   s  e Zd ZdZejdedededg de	ede
g dgejdejejgdd Zejd	eegd
d Zdd Zdd Zejde
dedfgejdedddggddgedfedddgedfgdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zejd(d)d*gg d+gd,d- Zd.d/ Z d0d1 Z!d2d3 Z"d4d5 Z#d6d7 Z$d8d9 Z%d:d; Z&d<d= Z'd>d? Z(d@dA Z)dBdC Z*dDdE Z+dFdG Z,ejddHgeddde
dHggejdIdJge
dJggdKdL Z-dMdN Z.dOdP Z/dQdR Z0dSdT Z1dUdV Z2dWdX Z3e4j5dYdZ Z6d[d\ Z7d]d^ Z8d_d` Z9ejdIde:e
j;gdadb Z<ejdce=dHddddegdfdg Z>dhdi Z?ejdejejgdjdk Z@dldm ZAdndo ZBejdpee
jgdqdr ZCejddgeddsgdtdu ZDdvdw ZEdxdy ZFdzd{ ZGd|d} ZHd~d ZIdd ZJejdee
jgejdee
jgdd ZKdd ZLdd ZMe4j5dd ZNdd ZOdS )TestiLocBaseIndependentzTests Independent Of Base Classr   N   r   indexerc                 C   s  t dtditd}tg d}|s|jjd |sJ | }|j}t	|t
o.|t
d k}d }	|r5t}	d}
tj|	|
d ||||df< W d    n1 sQw   Y  |rht d|i}t|j|rgJ nt d|it}|s~t|d j|s~J t|| d|jd< |d dksJ t tjg d	tdtdd
}| }|j}tjt|
d ||||df< W d    n1 sw   Y  t |tdd
}t|| d S )Nr   r2   dtype)alphabetagamma.will attempt to set the values inplace insteadmatchr8   r   r   r   r   r   )r	   rangeobjectr   _mgrblocks_can_hold_elementcopyvalues
isinstancesliceDeprecationWarningtmassert_produces_warningnpshares_memoryastypeassert_frame_equalr   r   )r'   r3   r   using_array_managerframecatdf	orig_vals	overwritewarnmsgexpectedr(   r(   r)   %test_iloc_setitem_fullcol_categorical=   s>   
 z=TestiLocBaseIndependent.test_iloc_setitem_fullcol_categoricalboxc                 C   s   t g d}||d}|tu r|j}n|jjd }|tu r-||dd  |jd d< n||dd  |jd ddf< |tj g ddd}t	|| |tu rZ|j|u sXJ d S t
|d j|seJ d S )Nr   r   r2      i8r   r   )r2   rZ   r2   rZ   r4   )r   to_numpyr   rD   r@   arraysr   rJ   rH   assert_equalrK   )r'   frame_or_seriesrX   arrobjrD   rV   r(   r(   r)   test_iloc_setitem_ea_inplacet   s   z4TestiLocBaseIndependent.test_iloc_setitem_ea_inplacec                 C   sH   t g d}ttd|d}|jdsJ | }|jds"J d S )N)r   r   r   r2   index)r   r   r   )r
   r   r>   r   _is_scalar_accessto_frame)r'   rd   serrQ   r(   r(   r)   test_is_scalar_access   s
   z-TestiLocBaseIndependent.test_is_scalar_accessc                 C   s  t tjdtdd}d}tjt|d |jd d g df  W d    n1 s+w   Y  tjt|d |jddg  W d    n1 sIw   Y  tjt|d |jdd	g  W d    n1 sgw   Y  tjt|d |jd
g  W d    n1 sw   Y  |d }tjt|d |jd
g  W d    n1 sw   Y  tjt|d |jdg  W d    n1 sw   Y  d}tjt|d |jd  W d    n1 sw   Y  tjt|d |jd	  W d    n1 sw   Y  tjt|d |jd  W d    n	1 sw   Y  tjt|d |jd	  W d    n	1 s6w   Y  |jd d ddf }|jd d dd f }t	
|| |jd d ddf }|jd d d df }t	
|| |jd d dddf }|jd d d ddf }t	
|| |jd d dddf }|jd d dd df }t	
|| |jd d ddf }|jd d d df }t	
|| |jd d ddf }|jd d d df }t	
|| |jd d dddf }|jd d d df }t	
|| |jd d ddf }|jd d d df }t	
|| |jdd }|jdd  }t	|| |jdd  }|jd d }t	|| |jdd d }|jd d d }t	|| dd }t tjddtdd}||jd d ddf t |jd ||jd d ddf |jd d dgf  ||jdd |jdg  d}tjt|d |jg d  W d    n	1 sw   Y  d}tjt|d |jd d df  W d    d S 1 sw   Y  d S ) N)      ABCDEcolumnsz%positional indexers are out-of-boundsr:   r   r   r   r2   rZ   rk   r      id   Aiz*single positional indexer is out-of-boundsrZ   
   ir   r   i      c                 S   s   t |  | j t| | d S N)strdtypesrH   rM   )resultrV   r(   r(   r)   check   s   z?TestiLocBaseIndependent.test_iloc_exceeds_bounds.<locals>.checkrk   r   ABr2   rc      rZ   rk   r}   )r	   rJ   randomrandom_samplelistr.   raisesr&   r   rH   rM   assert_series_equalrandnrd   )r'   rQ   rU   srz   rV   r{   dflr(   r(   r)   test_iloc_exceeds_bounds   s   $,$z0TestiLocBaseIndependent.test_iloc_exceeds_boundszindex,columnsrj   rl   zindex_vals,column_valsrr   D12i  r   c                 C   sf   t tjt|t|||d}d}tjt|d |j||f  W d    d S 1 s,w   Y  d S )Nrd   rn   z$.iloc requires numeric indexers, gotr:   )	r	   rJ   r   r   lenr.   r   r&   r   )r'   rd   rn   
index_valscolumn_valsrQ   rU   r(   r(   r)   test_iloc_non_integer_raises   s   "z4TestiLocBaseIndependent.test_iloc_non_integer_raisesc                 C   s`   t tddd}t||}tjtdd |j	d  W d    d S 1 s)w   Y  d S )Nrq   rs   zCannot index by location indexr:   a)
r	   rJ   arangereshaperH   get_objr.   r   	TypeErrorr   )r'   r_   ra   r(   r(   r)    test_iloc_getitem_invalid_scalar  s
   "z8TestiLocBaseIndependent.test_iloc_getitem_invalid_scalarc                 C   sr   t g d}| }tg dg dg ddg dd}|j|  t|| |jd d |f  t|| d S )N)r   r   r   )rq   e   f   )g   h   i   )j   k   l   rr   BCr   r   r2   rc   )rJ   r   rC   r	   r   rH   assert_numpy_array_equal)r'   array_with_neg_numbers
array_copyrQ   r(   r(   r)   -test_iloc_array_not_mutating_negative_indices  s   
zETestiLocBaseIndependent.test_iloc_array_not_mutating_negative_indicesc                 C   s   t g dg dd}|d }|jd }|jd }t|| |jdg }|jdg }t|| |jd }|jd }||ksAJ |jdg }|jdg }t|| tdgdgd}|jd	g }t|| d S )
N)r   r2   rk   )   ru      rr   r   rr   r   r   rc   r   )r	   r   rH   r   rM   r   )r'   rQ   r   rV   rz   r(   r(   r)   /test_iloc_getitem_neg_int_can_reach_first_index'  s"   



zGTestiLocBaseIndependent.test_iloc_getitem_neg_int_can_reach_first_indexc                 C   s   t d dddddg}t ddddddg}t||gdd}|jd }t|s+J |jdd d f }ttjdddgg d	dd
}t|| d S )Nr   r   r   r2   rZ   axisr<   r   rr   r   rr   r   )rd   name)	r	   r   r   r   r   rJ   nanrH   r   )r'   df1df2rQ   rz   rV   r(   r(   r)   test_iloc_getitem_dupsB  s   
z.TestiLocBaseIndependent.test_iloc_getitem_dupsc                 C   s   t dddddddddd	d
dg}t ddddg}t|jdg | t ddddddddg}t|jddg | t dddd	d
dgddgd}|jddgddgf }t|| d S )Nr   r   r2   r   rq      ,        r   )r   r   rc   )r	   rH   rM   r   r'   rQ   rV   rz   r(   r(   r)   test_iloc_getitem_arrayP  s   


 z/TestiLocBaseIndependent.test_iloc_getitem_arrayc                 C   s   t dddddddddd	d
dg}t ddddddddg}|jg d }t|| t dddddd	d
dgddgd}|jdd  }t|| d S )Nr   r   r2   r   rq   r   r   r   r   r   )TTFr   rc   c                 S   s   | j d dkS )Nr   r   rc   xr(   r(   r)   <lambda>s  s    z@TestiLocBaseIndependent.test_iloc_getitem_bool.<locals>.<lambda>r	   r   rH   rM   r   r(   r(   r)   test_iloc_getitem_boolc  s   


z.TestiLocBaseIndependent.test_iloc_getitem_boolrd   TF)TFTFc                 C   sb   t g d}dt| dt| }tjt|d |j|  W d    d S 1 s*w   Y  d S )Nr   z Boolean index has wrong length: z instead of r:   )r   r   r.   r   r&   r   )r'   rd   r   rU   r(   r(   r)   test_iloc_getitem_bool_diff_lenv  s
   "z7TestiLocBaseIndependent.test_iloc_getitem_bool_diff_lenc                 C   s   t dddddddddd	d
dg}t ddddddddg}|jd d }t|| t dddgdgd}|jddddf }t|| t dddddddd
dg}|jd d dd f }t|| d S )Nr   r   r2   r   rq   r   r   r   r   r   r   rc   r   )rr   r   c                 S      ddgS )Nr   r   r(   )rQ   r(   r(   r)   r         zATestiLocBaseIndependent.test_iloc_getitem_slice.<locals>.<lambda>r   r   r(   r(   r)   test_iloc_getitem_slice~  s"   


z/TestiLocBaseIndependent.test_iloc_getitem_slicec                 C   s  t tjddg dd}t tjjddddddd	d
gd}t||gdd}t|j	d d d df | t|j	d d dd f | t||gdd}t|j	d d d df | t|j	d d dd f | t||j	d d dgf gdd}t|j	d d ddf | t||gdd}t|j	ddd df | t|j	dddd f | t|j	dd d df | t|j	dd dd f | d S )Nrs   rZ   )rr   rr   r   r   rm   r   rj   sizer   rr   r   r   r   r2   )
r	   rJ   r   r   randintr   r   rH   rM   r   )r'   r   r   rQ   expr(   r(   r)   test_iloc_getitem_slice_dups  s"    "z4TestiLocBaseIndependent.test_iloc_getitem_slice_dupsc                 C   s   t tjddtdddtdddd}d|jd	< |jd	 }|dks&J d|jd d ddf< |jd d ddf }|jd d ddf }t|| tdg d
d}|jdd  d7  < tg dg d
d}t	|| d S )NrZ   r      r      r2   r   r   r   r   r~   rc   r   r   r   )
r	   rJ   r   r   r   r   rH   rM   r   r   r'   rQ   rz   rV   r   r(   r(   r)   test_iloc_setitem  s   $

z)TestiLocBaseIndependent.test_iloc_setitemc                 C   s   t g dg dg dg}t g dg dg dg}d|jddd< t|| t g dg dg dg}t g d	g d
g dg}d|jddd< t|| d S )N)r}   crs   )r   dru   )r   er   )rk   rk   rk   rk   r   r   r   )r}   r   rk   )r   r   rk   )r   r   rk   r   r   r'   rQ   rV   r(   r(   r)   test_iloc_setitem_axis_argument  s   z7TestiLocBaseIndependent.test_iloc_setitem_axis_argumentc                 C   s   t tddg dg dd}|jddgddgf  |jddgddgf  d7  < t tg d	dg dg dd}t|| d S )
N	   )r2   r2   r   r   r   r   r   rq   )	r   r   r   r2   r   r   r}   r   r   )r	   rJ   r   r   r   r   rH   rM   r   r(   r(   r)   test_iloc_setitem_list  s   z.TestiLocBaseIndependent.test_iloc_setitem_listc                 C   sp   t g d}t g d}| }ddg|jt ddg< t|| | }ddg|jtddg< t|| d S )N)r   r   r   r2   )r   r   r2   r   r   r   r   )r   rC   r   rH   r   r
   )r'   s_origrV   r   r(   r(   r)   test_iloc_setitem_pandas_object  s   z7TestiLocBaseIndependent.test_iloc_setitem_pandas_objectc                 C   sf  t d dddddg}t ddddddg}t||gdd}|d}t|jd d df }|| j}|j|df |j|df< t|| t ddgddgd}d	d	g|_	|d
= t|| |jddgddgf |jddgddgf< t|| |jddgddgf j
dd|jddgddgf< |jddgddgf j
dd|jddgddgf< t|| d S )Nr   r   r   r2   rZ   r   r   r=   r   rr   T)drop)r	   r   fillnarJ   isnanr   rd   rH   rM   rn   reset_index)r'   r   r   rQ   rV   indsmaskr(   r(   r)   test_iloc_setitem_dups  s"   


(00z.TestiLocBaseIndependent.test_iloc_setitem_dupsc                 C   s   t ddgddggddgd}|jd d df d|jd d df< |s-t|jjdks-J |jd d df d |jd d df< |sKt|jjdksKJ | }|jddgddgf |jddgddgf< t|| d S )	Nr   r   r   r2   r   rm   f8g      ?)	r	   r   rL   r   r@   rA   rC   rH   rM   r'   rN   rQ   rV   r(   r(   r)   9test_iloc_setitem_frame_duplicate_columns_multiple_blocks	  s   &$(zQTestiLocBaseIndependent.test_iloc_setitem_frame_duplicate_columns_multiple_blocksc                 C   s  t tjddtdddtdddd}|jd }|jd }t|| |jd }|jd	 }||ks4J |jdd }|jdd
 }t	|| |jd d ddf }|jd d ddf }t	|| |jg d }|jg d }t	|| |jg dddgf }|jg dddgf }t	|| |jg dddgf }|jg dddgf }t	|| |jg dddgf }|jg dddgf }t	|| t
tddtd}|j|j }|jg d }t	|| d S )Nrs   rZ   r   rj   r   r   r   )r   r   )rZ   rZ      r2   rk   )r   r   r2   )r   r   r}   r   )r   r   r2   r   )rv   r   r}   r}   )r   r   r   r2   )rv   rv   r   r}   )rd   r5   )r   rZ   r}   r   )r	   rJ   r   r   r>   r   locrH   r   rM   r   r?   rd   )r'   rQ   rz   r   rV   r   r(   r(   r)   test_iloc_getitem_frame%  s>    



z/TestiLocBaseIndependent.test_iloc_getitem_framec                 C   s  t tjddtdtdd}|jd }|jd }||ks J |jd d dd	f }|jd d d
gf }t|| |jd }|jd }||ksKJ d}t	j
t|d |jd  W d    n1 sdw   Y  d}t	j
t|d |jd  W d    d S 1 sw   Y  d S )Nrs   rZ   
abcdefghijABCDr   r   )br   r   r2   r   )r   r   )jr   z/index 5 is out of bounds for axis 0 with size 4r:   )rs   rk   zLocation based indexing can only have \[integer, integer slice \(START point is INCLUDED, END point is EXCLUDED\), listlike of integers, boolean array\] types)r	   rJ   r   r   r   r   r   rH   rM   r.   r   r&   
ValueError)r'   rQ   rz   r   rV   rU   r(   r(   r)    test_iloc_getitem_labelled_frameT  s*   



"z8TestiLocBaseIndependent.test_iloc_getitem_labelled_framec                 C   s  t jdd}tddd}td}t|||d}|  |jddd	d
f }t| |j	 t|ddd	d
f |dd |d	d
 d}t
|| td|_|jddd	d
f }t| |j	 t|ddd	d
f |dd tdd}t
|| t jdd}ttd	dd
}ttd	dd
}t|||d}|s|jjd	 j |jddd
df }t| |j	 t|ddd
df |dd |d
d d}t
|| d S )Nr}   rZ   20130101)periodsr   r   r2   rk   r   r   aaaaaar   r   r   )rJ   r   r   r   r   r	   describer   rx   ry   rH   rM   rn   r>   r@   rA   mgr_locs)r'   rN   r`   rd   rn   rQ   rz   rV   r(   r(   r)   test_iloc_getitem_doc_issueu  s6   .
*.z3TestiLocBaseIndependent.test_iloc_getitem_doc_issuec                 C   sV  t tjddtdtdd}d|jd< |jd }|dks J d|jd d d	d
f< |jd d d	d
f }|jd d d	d
f }t|| ttjdt	ddd	d}d|jd< |jd }|dkseJ d|jd d< |jd d }|jd d }t
|| tdgd }g d|jdd d	< g d|jdd d	< |}tg d}t
|| d S )Nrs   rZ   r   r   r   r   r   r   r   r2   rj   rc   r   r}   )r   r   rZ   )r   r2   rk   ro   )r	   rJ   r   r   r   r   rH   rM   r   r>   r   r   r(   r(   r)   test_iloc_setitem_series  s0   



z0TestiLocBaseIndependent.test_iloc_setitem_seriesc                 C   s   t tjdddtjddddd}ddgddgg|jd	d
< t g dg dd}t|| t g dtjddddd}ddgddgg|jd	d
< t g dg dd}t|| d S )Nrk   int64r4   rs   r   ru   r   r   r   rZ   )r   r   rs   r   rZ   )rk   r}   ru   r   r   r   r   r   r   r   r   y)r   r   r   r   r   )r	   rJ   r   r   rH   rM   r   r(   r(   r)   test_iloc_setitem_list_of_lists  s   z7TestiLocBaseIndependent.test_iloc_setitem_list_of_listsr   valueZc                 C   sL   t ddgddggddgd}||jd|f< |jd	 }t|r"|d
ks$J d S )Nr   r   r2   rZ   rr   r   rm   r   r<   r   )r	   r   r   )r'   r3   r   rQ   rz   r(   r(   r)   #test_iloc_setitem_with_scalar_index  s   
z;TestiLocBaseIndependent.test_iloc_setitem_with_scalar_indexc                 C   s>  t ttdtddgd}|jd dk}d}tjt|d |j|  W d    n1 s.w   Y  tt||_	d	}tjt
|d |j|  W d    n1 sSw   Y  |jtjd
gt| td }t|| td}d| }dd |D }t ||d|}ddddddddd	d	}td
d~ tdt dD ]m}	|jdkj}|	rt|ttt||	}dD ]T}
z|
rt||
dd  }n|}tt|| d  }W n ttt
fy } z
t|}W Y d }~nd }~ww |	|
f}||}||kr
td| d| d| dqqW d    d S 1 sw   Y  d S )Nrk   rl   r   r   r   r   zBiLocation based boolean indexing cannot use an indexable as a maskr:   zDiLocation based boolean indexing on an integer type is not availableTr4   rZ   c                 S   s   g | ]}t |qS r(   )bin).0numr(   r(   r)   
<listcomp>  s    z:TestiLocBaseIndependent.test_iloc_mask.<locals>.<listcomp>)locsnums0b11000b11ztUnalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).)	)N )N.loc)N.iloc)rd   r  )rd   r  )rd   r  )r   r  )r   r  )r   r  )recordignore)Nrd   r   )r  r  r  r   r   [z] does not match [z], received [])r	   r   r>   r   r.   r   r   r   r   rd   NotImplementedErrorrJ   r   boolrH   rM   r   r   r   UserWarningr   rD   r   reversedgetattrrx   r   sumr   getAssertionError)r'   rQ   r   rU   rz   r   r   repsrV   idxmethodaccessoranswerr   r   rr(   r(   r)   test_iloc_mask  sn   



$z&TestiLocBaseIndependent.test_iloc_maskc                 C   s   t dgd dgd d}tdd }|j| }t|d| d| g}|j| }t|| t dgd	 dgd	 d}t|d| d| g}tjt	d
d |j
|  W d    d S 1 s_w   Y  d S )N皙?r   r   r   rp   c   r   r2   r   znot in indexr:   )r	   rJ   r   r   r   rH   rM   r.   r   KeyErrorr   )r'   rQ   r  rV   df3rz   r   r(   r(   r)   test_iloc_non_unique_indexing&  s   

"z5TestiLocBaseIndependent.test_iloc_non_unique_indexingc                 C   s   t dd}t j|jd d g f |jd d d df ddd t j|jg d d f |jd dd d f ddd t j|jg  |jd dd d f ddd d S )Nrk   r   r   T)check_index_typecheck_column_type)rH   makeCustomDataframerM   r   r'   rQ   r(   r(   r)   "test_iloc_empty_list_indexer_is_ok8  s     
z:TestiLocBaseIndependent.test_iloc_empty_list_indexer_is_okc           	      C   s"  |rt jjdd}|j| tdg di}|jd d  }||us$J t|d |d s0J g d|j	d d df< |rJ|d g dk
 sIJ n
|d dk
 sTJ tg d}|jd d  }||usgJ g d|d d	< |rt
|d d	 g dksJ d S t
|d d	 g dksJ d S )
Nz0setting with .loc[:, 'a'] does not alter inplace)reasonr   r   )rZ   rZ   rZ   rZ   )r   r   r2   rZ   rk   r}   r   r   r   r2   )r.   r/   xfailnode
add_markerr	   r   rJ   rK   r   allr   )	r'   rN   using_copy_on_writerequestr/   original_df	sliced_dforiginal_seriessliced_seriesr(   r(   r)   &test_identity_slice_returns_new_objectN  s(     z>TestiLocBaseIndependent.test_identity_slice_returns_new_objectc                 C   sD   t ddgddgg}|jtd }tddgdd}t|| d S )Nr   r   r2   rZ   r   r   )r	   r   rJ   r   r   rH   r   )r'   rQ   rz   r   r(   r(   r)   test_indexing_zerodim_np_arrays  s   z6TestiLocBaseIndependent.test_indexing_zerodim_np_arrayc                 C   s,   t ddg}|jtd }|dksJ d S )Nr   r   r   )r   r   rJ   r   )r'   r   rz   r(   r(   r)   %test_series_indexing_zerodim_np_arrayz  s   z=TestiLocBaseIndependent.test_series_indexing_zerodim_np_arrayc                 C   s   t g d}| }t|g dddd}t|d |sJ d}tjt|d |d d d	 |jd d d
f< W d    n1 sAw   Y  |s]t|d |sRJ t g dg dd}n|}t|| d S )Nr   r   )r   r   F)rC   r   r9   r:   r   r   )r   r   rr   
categories)	r   rC   r	   rH   rK   rI   rG   r   assert_categorical_equal)r'   r(  rP   cat_originalrQ   rU   rV   r(   r(   r)   -test_iloc_setitem_categorical_updates_inplace  s   zETestiLocBaseIndependent.test_iloc_setitem_categorical_updates_inplacec                 C   s:  t ddgddgddgdtjgg}|j|jdk  d9  < t ddgddgdd	gdtjgg}t|| |j|jdk  d9  < t ddgddgdd	gd
tjgg}t|| |jg d  d9  < t ddgdd
gdd	gd
tjgg}t|| |jg d  d  < t ddgddgddgdtjgg}t|| d S )Nr   r   r   r2   rZ   rk   r}   r   rs   r   )TTFF)FFTTg      @g      (@g      @)r	   rJ   r   r   rd   rH   rM   r'   rz   rV   r(   r(   r)    test_iloc_with_boolean_operation  s   """""z8TestiLocBaseIndependent.test_iloc_with_boolean_operationc                 C   sR   t dtd i}|jd }tdgg dd}t|dgddd}t|| d S )	Nr   z	a b c d er   r   r   r2  category)rd   r   r5   )r	   r   splitr   r   rH   r   )r'   rQ   rz   raw_catrV   r(   r(   r)   ?test_iloc_getitem_singlerow_slice_categoricaldtype_gives_series  s
   
zWTestiLocBaseIndependent.test_iloc_getitem_singlerow_slice_categoricaldtype_gives_seriesc                 C   s   t g dd}|jdd }t ddgtg d}t|| |jddg }t ddgtg d}t|| |jg d }t dgtg d}t|| d S )Nr   r9  r   r   r   TFF)r   rL   r   r   rH   r   )r'   rh   rz   rV   r(   r(   r)   $test_iloc_getitem_categorical_values  s   z<TestiLocBaseIndependent.test_iloc_getitem_categorical_valuesc                 C   s<   t g ddd}||jd< t tddgdd}t|| d S )Nr   ztimedelta64[ns]r4   r   r   r   )r   r   r   rH   r   )r'   r   seriesrV   r(   r(   r)   %test_iloc_setitem_td64_values_cast_na  s   
z=TestiLocBaseIndependent.test_iloc_setitem_td64_values_cast_nanot_nar   g      ?c                 C   sX   t |gd}t||||g|d}|||g|jd d< t||||g|d}t|| d S )Nr2  r4   r2   )r   r   r   rH   r   )r'   rA  nulls_fixturer5   rh   r   r(   r(   r)   $test_setitem_mix_of_nan_and_interval  s   z<TestiLocBaseIndependent.test_setitem_mix_of_nan_and_intervalc                 C   s   t g }ttjt|t|||d}tjjddd}d|j }tj	t
|d d|j|< W d    d S 1 s:w   Y  d S )Nr   rk   )r   r   r   r   zCannot set values with ndim > r:   r   )r
   r	   rJ   r   r   r   r   ndimr.   r   r   r   )r'   r  ra   nd3rU   r(   r(   r)   4test_iloc_setitem_empty_frame_raises_with_3d_ndarray  s    "zLTestiLocBaseIndependent.test_iloc_setitem_empty_frame_raises_with_3d_ndarrayc                 C   s   t d}t|}t d}|jdd t|}t||g d ||g d  t||dg ||dg  t||d ||d  t||dd ||dd  d S )Nrs   F)writer   r   r2   )rJ   eyer	   setflagsrH   rM   r   )r'   r3   rw_arrayrw_dfro_arrayro_dfr(   r(   r)   "test_iloc_getitem_read_only_values  s   

$ (z:TestiLocBaseIndependent.test_iloc_getitem_read_only_valuesc                 C   s   t dtjdddi}tg d}d|j_|j| }|jg d }t	|| |d j| }|d jg d }t
|| d S )Ndatarq   float64r4   )r   r2   r}   F)r	   rJ   onesr   flags	writeabler   r   rH   rM   r   )r'   rQ   indicesrz   rV   r(   r(   r)   test_iloc_getitem_readonly_key  s   
z6TestiLocBaseIndependent.test_iloc_getitem_readonly_keyc                 C   sR   t dgdgd}tg d|jd< t dtg dgidgdgd}t|| d S )Nr   r   rn   rd   r   r<   )r	   r   r   rH   rM   r   r(   r(   r)   "test_iloc_assign_series_to_df_cell  s    z:TestiLocBaseIndependent.test_iloc_assign_series_to_df_cellklassc                 C   sd   t g dg dd}|g d}|j|df d |j|df< t g dg dd}t|| d S )N)r   r   z)r   r2   rZ   )flagr   r=  r   r   )r   r2   rZ   r   )r'   rX  rQ   r3   rV   r(   r(   r)   test_iloc_setitem_bool_indexer  s
   z6TestiLocBaseIndependent.test_iloc_setitem_bool_indexerr   c                 C   s   t g dg dd}t g dg dg dd}|jd d dgf |jd d |f< t g dg dg dd}t|| d S )	N)ru   r   r   )r         )a2b2r   r~   r#  r   r   r   r   r   )r'   r3   r   r   rV   r(   r(   r)   %test_iloc_setitem_pure_position_based  s
   "z=TestiLocBaseIndependent.test_iloc_setitem_pure_position_basedc                 C   s   t ddgddgd}ddd}||jd< t ddgddgd}t|| t ddgddgd}||jd< t ddgddgd}t|| d S )Nr   r   )r   r   r   r  g       @g     X@r   )r'   rQ   rhsrV   r(   r(   r)   "test_iloc_setitem_dictionary_value  s   


z:TestiLocBaseIndependent.test_iloc_setitem_dictionary_valuec                 C   sh  t tjddg dtdd}|jdd  }t|jd | |jdd df }t	|jd | g d	|_
|jdd  }t|jd | |jdd df }t	|jd | t tjd
dg dtdd}|jdd }t|jd | |jdddf }t	|jd | g d|_
|jddg }t|jd | |jddgdf }t	|jd | d S )Nr2   )r  皙?rd  abcr   r   rd  r   )rd  r   )r   rd  rd  rZ   )r   rd  rd  r   r   )r  rd  r   rd  )r	   rJ   r   r   r   r   rH   rM   r   r   rd   )r'   rQ   expectr(   r(   r)   "test_iloc_getitem_float_duplicates(  s0   

z:TestiLocBaseIndependent.test_iloc_getitem_float_duplicatesc                 C   s   G dd d}t ddgdgd}|d|jd< |d|jd< t ddgdgd}|d|jd< t|| t ddgdgd}|d|jd< tj|jd< t ddgdgd}t|| d S )Nc                   @   s>   e Zd ZdddZdefddZeZdefddZd	d
 Z	dS )zCTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TOreturnNc                 S   s
   || _ d S rw   r   )r'   r   r(   r(   r)   __init__L  s   
zLTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__init__c                 S   s   d| j  dS )Nr  r  ri  r'   r(   r(   r)   __str__O  s   zKTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__str__c                 S   s   | j |j kS rw   ri  )r'   otherr(   r(   r)   __eq__T  s   zJTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__eq__c                 S   s   | S rw   r(   rk  r(   r(   r)   viewW  s   zHTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.view)rh  N)
r+   r,   r-   rj  rx   rl  __repr__r
  rn  ro  r(   r(   r(   r)   TOK  s    
rq  r   r   r   re   r   )r	   r   rH   rM   rJ   r   )r'   rq  rQ   rz   r(   r(   r)   test_iloc_setitem_custom_objectI  s   z7TestiLocBaseIndependent.test_iloc_setitem_custom_objectc                 C   s   t tjddtdtdd}|jd }t|tsJ t	|j
|j
d  |jjd d df }t|ts7J t	|j
|j
d  d S )Nr2   ABCaabrV  r   )r	   rJ   r   randr   r   rE   r   rH   assert_almost_equalrD   T)r'   rQ   rz   r(   r(   r)   !test_iloc_getitem_with_duplicatesk  s    
z9TestiLocBaseIndependent.test_iloc_getitem_with_duplicatesc                 C   sP   t g dg dgg dd}|jd d dgf }|jdgdd}t|| d S )Nr   r~   )r   r   r   rm   r   r   r   )r	   r   takerH   rM   r'   rQ   rz   rV   r(   r(   r)   "test_iloc_getitem_with_duplicates2w  s   z:TestiLocBaseIndependent.test_iloc_getitem_with_duplicates2c                 C   s   t tddddgi}|jd }ttdddidd}t|| |jd d df }tddgtddd}t|| | }|jd d df  d7  < t tddddgi}t|| d S )Nr   r   r   r/  r2   )r	   r   r   r   rH   r   rC   rM   rz  r(   r(   r)   test_iloc_interval~  s   
z*TestiLocBaseIndependent.test_iloc_intervalindexing_funcrhs_funcc                 C   s   t g d}|ddg|j|g d< t g d}t|| tdg di}|dgdgg|j|g d< tdg di}t|| d S )Nr   rk   rs   TFT)rk   r   rs   r   )r   r   rH   r   r	   rM   )r'   r~  r}  rh   rV   rQ   r(   r(   r)   test_loc_setitem_boolean_list  s   z5TestiLocBaseIndependent.test_loc_setitem_boolean_listc                 C   s~   t dg didd}|jd d d d df }t|| d|d< |jd d d d df }t |d |d d}t|| d S )	Nrr   r   Int64r4   r   foor   )r   rr   r   )r'   rQ   resrV   r(   r(   r)   .test_iloc_getitem_slice_negative_step_ea_block  s   zFTestiLocBaseIndependent.test_iloc_getitem_slice_negative_step_ea_blockc                 C   sl   t dg didd}tdgdgg|jtddgtdgf< t dg di|d jd}t|| d S )	Nstatusr`  r9  r4   r   r   r   )r   r   r   )r	   rJ   r   r   r5   rH   rM   r   r(   r(   r)   *test_iloc_setitem_2d_ndarray_into_ea_block  s   .zBTestiLocBaseIndependent.test_iloc_setitem_2d_ndarray_into_ea_blockc                 C   sV   t ddj}t|}|jd }|d |d ksJ |d |d< |d |d ks)J d S )Nr   g      $@r   r   r   )r   _valuesr	   r   )r'   r`   rQ   rh   r(   r(   r)   *test_iloc_getitem_int_single_ea_block_view  s   
zBTestiLocBaseIndependent.test_iloc_getitem_int_single_ea_block_viewc                 C   sl   t ddgddgd}t dtddgi|jd d dgf< t tdtd	gddgd}tj|||d
 d S )Nz
2022-01-01z
2022-01-0220212022r   rr   r   z2021-01-01 00:00:00z2022-01-01 00:00:00)check_dtype)r	   r   r   r   rH   rM   r   r(   r(   r)   )test_iloc_setitem_multicolumn_to_datetime  s   $	zATestiLocBaseIndependent.test_iloc_setitem_multicolumn_to_datetime)Pr+   r,   r-   __doc__r.   r/   r0   rF   r>   r
   rJ   asarrayrH   r   r   rW   r   r   rb   ri   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.  r0  r1  td&skip_array_manager_not_yet_implementedr6  r8  r<  r>  r   r   r@  r   rC  rF  rN  rU  rW  r[  ra  rc  rg  rr  rx  r{  r|  r  r  r  r  r  r(   r(   r(   r)   r1   :   s    
+

f		
/!+ $G%
	


	


!"
r1   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestILocErrorsc                 C   s   |}|t u r
| }d}tjt|d |jd  W d    n1 s#w   Y  tjttd d|jd< W d    d S 1 s@w   Y  d S )Nz5Cannot index by location index with a non-integer keyr:   g      @r   )r	   rg   r.   r   r   r   r&   _slice_iloc_msg)r'   series_with_simple_indexr_   ra   rU   r(   r(   r)   test_iloc_float_raises  s   "z%TestILocErrors.test_iloc_float_raisesc                 C   s   t jtdd |jd d d d d d f  W d    n1 s w   Y  t jtdd d|jd d d d d d f< W d    d S 1 sFw   Y  d S )NzToo many indexersr:   ztoo many indices for arrayr   )r.   r   r   r   r&   )r'   float_framer(   r(   r)   *test_iloc_getitem_setitem_fancy_exceptions  s   "z9TestILocErrors.test_iloc_getitem_setitem_fancy_exceptionsc                 C   s   t dg di}t dg di}tt d|j|< W d    n1 s%w   Y  d}tjt|d |j|  W d    d S 1 sDw   Y  d S )Nr   r   r  r   zWDataFrame indexer is not allowed for .iloc
Consider using .loc for automatic alignment.r:   )r	   rH   rI   FutureWarningr   r.   r   r&   )r'   rQ   r3   rU   r(   r(   r)   test_iloc_frame_indexer  s   "z&TestILocErrors.test_iloc_frame_indexerN)r+   r,   r-   r  r  r  r(   r(   r(   r)   r    s    r  c                   @   sB   e Zd Zdd Zdd Zdd Zejg ddd	gd
d Z	dS )TestILocSetItemDuplicateColumnsc                 C   s   t d dddddg}t ddddddg}t||gdd}d|jd< |jd dks.J |jd	 dks7J |jjd tjksBJ d S )
Nr   r   r   r2   rZ   r   r   r<   )r   r   )r	   r   r   ry   rJ   r   )r'   r   r   rQ   r(   r(   r)   *test_iloc_setitem_scalar_duplicate_columns   s   
zJTestILocSetItemDuplicateColumns.test_iloc_setitem_scalar_duplicate_columnsc                 C   sP   t g dgg dd}dg|jd d df< t g dgg dd}t|| d S )N)r   rx   str2r   r   r   rm   str3r   )r   rx   r  r   r   r(   r(   r)   (test_iloc_setitem_list_duplicate_columns  s   zHTestILocSetItemDuplicateColumns.test_iloc_setitem_list_duplicate_columnsc                 C   sf   t tjdtjdddg dd}|jd d df tj|jd d df< |jjd tjks1J d S )Nr   r4   r   rZ   r   rm   r   )	r	   rJ   r   r   r   r   rL   rP  ry   r   r(   r(   r)   *test_iloc_setitem_series_duplicate_columns  s
   (zJTestILocSetItemDuplicateColumns.test_iloc_setitem_series_duplicate_columns)ry   
init_valueexpected_value)r   0r   )floatz1.2g333333?c                 C   s   t |ddggg dd}d}tjt|d |jd d df ||jd d df< W d    n1 s3w   Y  t |ddggg dd}t|| d S )Nrx   r  r  rm   r9   r:   r   )r	   rH   rI   rG   r   rL   rM   )r'   ry   r  r  rQ   rU   expected_dfr(   r(   r)   *test_iloc_setitem_dtypes_duplicate_columns  s   (zJTestILocSetItemDuplicateColumns.test_iloc_setitem_dtypes_duplicate_columnsN)
r+   r,   r-   r  r  r  r.   r/   r0   r  r(   r(   r(   r)   r    s    	r  c                   @   s   e Zd Zdd Zdd ZdS )TestILocCallablec                 C   s  t g dtddtdd}|jdd  }t||jdd	g  |jd
d d d f }t||jdd	gd d f  |jdd dd f }t||jdd	gdf  |jdd dd f }t||jdd	gdgf  |jdd	gdd f }t||jdd	gdf  |jdd	gdd f }t||jdd	gdgf  |jdd df }t||jdd	gdf  |jdd dgf }t||jdd	gdgf  d S )NrY   aabbXYr   rc   c                 S   r   Nr   r2   r(   r   r(   r(   r)   r   4  r   zCTestILocCallable.test_frame_iloc_getitem_callable.<locals>.<lambda>r   r2   c                 S   r   r  r(   r   r(   r(   r)   r   7  r   c                 S   r   r  r(   r   r(   r(   r)   r   :  r   c                 S      dS Nr   r(   r   r(   r(   r)   r   :      r   c                 S   r   r  r(   r   r(   r(   r)   r   =  r   c                 S      dgS r  r(   r   r(   r(   r)   r   =      c                 S   r  r  r(   r   r(   r(   r)   r   A  r  c                 S   r  r  r(   r   r(   r(   r)   r   D  r  c                 S   r   r  r(   r   r(   r(   r)   r   G  r   c                 S   r   r  r(   r   r(   r(   r)   r   J  r   )r	   r   r   rH   rM   r   )r'   rQ   r  r(   r(   r)    test_frame_iloc_getitem_callable/  s"    z1TestILocCallable.test_frame_iloc_getitem_callablec                 C   sB  t g dtddtdd}| }d|jdd < | }d|jd	d
g< t|| | }d|jdd d d f< | }d|jd	d
gd d f< t|| | }d|jdd dd f< | }d|jd	d
gdf< t|| | }d|jdd dd f< | }d|jd	d
gdgf< t|| | }d|jd	d
gdd f< | }d|jd	d
gdf< t|| | }d|jd	d
gdd f< | }d|jd	d
gdgf< t|| | }d|jdd df< | }d|jd	d
gdf< t|| | }ddg|jdd dgf< | }ddg|jd	d
gdgf< t|| d S )NrY   r  r  r   rc   r   c                 S   r   r  r(   r   r(   r(   r)   r   S  r   zCTestILocCallable.test_frame_iloc_setitem_callable.<locals>.<lambda>r   r2   r   c                 S   r   r  r(   r   r(   r(   r)   r   Y  r   rk   c                 S   r   r  r(   r   r(   r(   r)   r   _  r   c                 S   r  r  r(   r   r(   r(   r)   r   _  r     c                 S   r   r  r(   r   r(   r(   r)   r   e  r   c                 S   r  r  r(   r   r(   r(   r)   r   e  r  r   c                 S   r  r  r(   r   r(   r(   r)   r   l  r  c                 S   r  r  r(   r   r(   r(   r)   r   r  r  rs   c                 S   r   r  r(   r   r(   r(   r)   r   x  r   c                 S   r   r  r(   r   r(   r(   r)   r   ~  r   )r	   r   rC   r   rH   rM   )r'   rQ   r  r   r(   r(   r)    test_frame_iloc_setitem_callableM  sR   z1TestILocCallable.test_frame_iloc_setitem_callableN)r+   r,   r-   r  r  r(   r(   r(   r)   r  .  s    r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestILocSeriesc                 C   s  t tjdttdddd}| }tt|D ]}|j| }||j	|  }t
|| q|jtdd }|jdd }t
|| t
d  d|d d < W d    n1 sZw   Y  |rht
|| n|jdd dk suJ |jg d	 }||j	g d	 }t
|| d S )
Nrs   r   rj   r   rc   r   r2   rZ   )r   r   r2   rZ   rk   )r   rJ   r   r   r   r>   rC   r   r   rd   rH   rv  rF   r   r   rI   r'  reindex)r'   r(  rh   ser_originalirz   r   rV   r(   r(   r)   	test_iloc  s$    
zTestILocSeries.test_ilocc                 C   s*   t g dg dd}|jd dksJ d S )Nr   r   rc   r   )r   r   )r'   rh   r(   r(   r)   test_iloc_getitem_nonunique  s   z*TestILocSeries.test_iloc_getitem_nonuniquec                 C   sT   t g d}t g dg dd}|jdd |jdd< t g d}t|| d S )Nr   r~   )r   r   r   rc   r   r2   )r   rk   r}   )r   r   rH   r   )r'   ser1ser2rV   r(   r(   r)   ra    s
   z4TestILocSeries.test_iloc_setitem_pure_position_basedc                 C   sd   t dgtjgd}|jd d df d|jd d df< t dgttgddd}t|| d S )Ntest)r   r   r   r  r4   )	r	   rJ   r   r   rL   r   r   rH   rM   r7  r(   r(   r)   #test_iloc_nullable_int64_size_1_nan  s   &z2TestILocSeries.test_iloc_nullable_int64_size_1_nanN)r+   r,   r-   r  r  ra  r  r(   r(   r(   r)   r    s
    r  ).r  r   rewarningsr   r   numpyrJ   r.   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingrH   pandas.api.typesr   pandas.tests.indexing.commonr   escaper  r   r1   r  r  r  r  r(   r(   r(   r)   <module>   s<    D         !-/V