o
    dD                     @   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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)"check_indexing_smoketest_or_raiseszuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indicesc                   @   sP   e Zd Zejdddg dgejdddgejdg d	d
d ZdS )TestiLockey   r      r   kindseriesframecol)labelsmixedtsZfloatsemptyc                 C   s(   | | d| }t|d|td d S )N_iloc)Zfails)Zgetfixturevaluer   
IndexError)selfr   r   r    requestobj r+   S/app/.heroku/python/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 Z3dYdZ Z4d[d\ Z5d]d^ Z6d_d` Z7ejdIde8e
j9gdadb Z:ejdce;dHddddegdfdg Z<dhdi Z=ejdejejgdjdk Z>dldm Z?dndo Z@ejdpee
jgdqdr ZAejddgeddsgdtdu ZBdvdw ZCdxdy ZDdzd{ ZEd|d} ZFd~d ZGdd ZHejdee
jgejdee
jgdd ZIdd ZJdd ZKeLjMdd 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}||||df< t d|i	t}|sBt
|d j|sBJ t|| d|jd< |d dksUJ t t
jg dtdtdd}| }|j}||||df< t |	ttdd}t|| d S )	Nr   r5   dtype)alphabetagammar;   r   r   r   r   r   )r	   rangeobjectr   _mgrblocksZ_can_hold_elementcopyvaluesastypenpshares_memorytmassert_frame_equalr&   r   )	r(   r6   r   using_array_managerr   catdfZ	orig_valsexpectedr+   r+   r,   %test_iloc_setitem_fullcol_categoricalC   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 rn|re|j|usZJ t
|j|scJ d S |j|u slJ d S t
|d j|syJ d S )Nr   r   r5      i8r   r   )r5   rP   r5   rP   r7   )r   Zto_numpyr   rC   r@   Zarraysr&   rE   rG   Zassert_equalrF   )r(   frame_or_seriesrN   using_copy_on_writearrr*   rC   rL   r+   r+   r,   test_iloc_setitem_ea_inplacep   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   r5   index)r   r   r   )r
   r   r>   r&   Z_is_scalar_accessto_frame)r(   rW   serrK   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g 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-boundsmatchr   r   r   r5   rP   r]   r      id   Aiz*single positional indexer is out-of-boundsrP   
   ir   r   i      c                 S   s   t |  | j t| | d S N)strdtypesrG   rH   )resultrL   r+   r+   r,   check   s   z?TestiLocBaseIndependent.test_iloc_exceeds_bounds.<locals>.checkr]   r   ZABr5   rW   r`      rP   r]   rq   )r	   rE   randomZrandom_samplelistr1   raisesr'   r&   rG   rH   assert_series_equalrandnrW   )r(   rK   msgsrn   rL   ro   Zdflr+   r+   r,   test_iloc_exceeds_bounds   s   &,$z0TestiLocBaseIndependent.test_iloc_exceeds_boundszindex,columnsr\   r^   zindex_vals,column_valsrf   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 )Nrp   z$.iloc requires numeric indexers, gotra   )	r	   rE   rs   rw   lenr1   ru   r'   r&   )r(   rW   r`   Z
index_valsZcolumn_valsrK   rx   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 )Nre   rg   zCannot index by location indexra   a)
r	   rE   arangereshaperG   get_objr1   ru   	TypeErrorr&   )r(   rR   r*   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   )re   e   f   )g   h   i   )j   k   l   rf   BCr   r   r5   rV   )rE   r   rB   r	   r&   rG   Zassert_numpy_array_equal)r(   Zarray_with_neg_numbersZ
array_copyrK   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   r5   r]   )   ri      rf   r   rf   r   r   rV   r   )r	   r&   rG   rv   rH   r   )r(   rK   ry   rL   rn   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   r5   rP   Zaxisr<   r   rf   r   rf   r   )rW   name)	r	   r   r&   r   r   rE   nanrG   rv   )r(   df1df2rK   rn   rL   r+   r+   r,   test_iloc_getitem_dups@  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   r5   r   re      ,        r   )r   r   rV   )r	   rG   rH   r&   r(   rK   rL   rn   r+   r+   r,   test_iloc_getitem_arrayN  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   r5   r   re   r   r   r   r   r   )TTFr   rV   c                 S   s   | j d dkS )Nr   r   rV   xr+   r+   r,   <lambda>q  s    z@TestiLocBaseIndependent.test_iloc_getitem_bool.<locals>.<lambda>r	   r&   rG   rH   r   r+   r+   r,   test_iloc_getitem_boola  s   


z.TestiLocBaseIndependent.test_iloc_getitem_boolrW   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 ra   )r   r~   r1   ru   r'   r&   )r(   rW   ry   rx   r+   r+   r,   test_iloc_getitem_bool_diff_lent  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   r5   r   re   r   r   r   r   r   r   rV   r   )rf   r   c                 S      ddgS )Nr   r   r+   )rK   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 )Nrg   rP   )rf   rf   r   r   r_   r   r\   sizer   rf   r   r   r   r5   )
r	   rE   rs   rw   randintr   r   rG   rH   r&   )r(   r   r   rK   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 )NrP   r      r      r5   rp   r   r   r   rr   rV   r   r   r   )
r	   rE   rs   rw   r   r&   rG   rH   r   rv   r(   rK   rn   rL   ry   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)rq   crg   )r   dri   )r   er   )r]   r]   r]   r]   r   r   r   )rq   r   r]   )r   r   r]   )r   r   r]   r   r   r(   rK   rL   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	   )r5   r5   r   rp   r   r   r   re   )	r   r   r   r5   r   r   rq   r   r   )r	   rE   r   r   r&   r   rG   rH   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   r5   )r   r   r5   r   r   r   r   )r   rB   r&   rG   rv   r
   )r(   Zs_origrL   ry   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   r5   rP   r   r   r=   r   rf   T)Zdrop)r	   r   ZfillnarE   isnanr&   rW   rG   rH   r`   Zreset_index)r(   r   r   rK   rL   Z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   r5   r   r_   Zf8g      ?)	r	   r&   rD   r~   r@   rA   rB   rG   rH   )r(   rI   rK   rL   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 )Nrg   rP   r   r\   r   r   rp   )r   r   )rP   rP      r5   r]   )r   r   r5   )r   r   rq   r   )r   r   r5   r   )rj   r   rq   rq   )r   r   r   r5   )rj   rj   r   rq   )rW   r8   )r   rP   rq   r   )r	   rE   rs   rw   r>   r&   locrG   rv   rH   r   r?   rW   )r(   rK   rn   r   rL   ry   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 )Nrg   rP   
abcdefghijABCDrp   r   )br   r   r5   r   )r   r   )jr{   z/index 5 is out of bounds for axis 0 with size 4ra   )rg   r]   zLocation based indexing can only have \[integer, integer slice \(START point is INCLUDED, END point is EXCLUDED\), listlike of integers, boolean array\] types)r	   rE   rs   rw   rt   r&   r   rG   rH   r1   ru   r'   
ValueError)r(   rK   rn   r   rL   rx   r+   r+   r,    test_iloc_getitem_labelled_frameO  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 )Nrq   rP   Z20130101)Zperiodsr   rp   r5   r]   r   r   ZaaaaZaar   r   r   )rE   rs   rw   r   rt   r	   Zdescriber&   rl   rm   rG   rH   r`   r>   r@   rA   Zmgr_locs)r(   rI   rT   rW   r`   rK   rn   rL   r+   r+   r,   test_iloc_getitem_doc_issuep  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 )Nrg   rP   r   r   rp   r   r   r   r   r5   r\   rV   r   rq   )r   r   rP   )r   r5   r]   rc   )r	   rE   rs   rw   rt   r&   rG   rH   r   r>   rv   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 )Nr]   int64r7   rg   r   ri   r   r   r   rP   )r   r   rg   r   rP   )r]   rq   ri   r   r   r   r   r   r   r   r   y)r   r   r   r   r   )r	   rE   r   r&   rG   rH   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   r5   rP   rf   r   r_   r   r<   r   )r	   r&   r   )r(   r6   r   rK   rn   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 )Nr]   r^   r   rp   r   r   zBiLocation based boolean indexing cannot use an indexable as a maskra   zDiLocation based boolean indexing on an integer type is not availableTr7   rP   c                 S   s   g | ]}t |qS r+   )bin).0numr+   r+   r,   
<listcomp>  s    z:TestiLocBaseIndependent.test_iloc_mask.<locals>.<listcomp>)locsnumsZ0b1100Z0b11ztUnalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).)	)N )N.loc)N.iloc)rW   r   )rW   r   )rW   r   )r   r   )r   r   )r   r   )recordignore)NrW   r   )r   r   r   r   r   [z] does not match [z], received [])r	   rt   r>   r   r1   ru   r   r&   r~   rW   NotImplementedErrorrE   r   boolrG   rH   r   r   r   UserWarningr   rC   r   reversedgetattrrl   r   sumr   getAssertionError)r(   rK   r   rx   rn   r   r   ZrepsrL   idxmethodaccessorZ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   rd   c   r   r5   r   znot in indexra   )r	   rE   r   r&   r   rG   rH   r1   ru   KeyErrorr   )r(   rK   r   rL   Zdf3rn   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 )Nr]   r   r   T)Zcheck_index_typeZcheck_column_type)rG   ZmakeCustomDataframerH   r&   r(   rK   r+   r+   r,   "test_iloc_empty_list_indexer_is_ok/  s     
z:TestiLocBaseIndependent.test_iloc_empty_list_indexer_is_okc                 C   s  t dg di}|jd d  }||usJ t|d |d s!J g d|jd d df< |r;|d g dk s:J n
|d dk sEJ tg d}|jd d  }||usXJ g d|d d< |rrt|d d g dkspJ d S t|d d g dksJ d S )Nr   r   )rP   rP   rP   rP   )r   r   r5   rP   r]   rq   r   r   r   r5   )r	   r&   rE   rF   r   allr   )r(   rS   Zoriginal_dfZ	sliced_dfZoriginal_seriesZsliced_seriesr+   r+   r,   &test_identity_slice_returns_new_objectD  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   r5   rP   r   r   )r	   r&   rE   r   r   rG   rv   )r(   rK   rn   ry   r+   r+   r,   test_indexing_zerodim_np_arraya  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&   rE   r   )r(   ry   rn   r+   r+   r,   %test_series_indexing_zerodim_np_arrayh  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 d d |jd d df< t|d |s3J t g d	g dd
}t|| d S )Nr   r   )r   r   F)rB   r   r   r   )r   r   rf   
categories)r   r	   rG   rF   r&   Zassert_categorical_equal)r(   rJ   rK   rL   r+   r+   r,   -test_iloc_setitem_categorical_updates_inplacen  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   r5   rP   r]   rq   r   rg   r   )TTFF)FFTTg      @g      (@g      @)r	   rE   r   r&   rW   rG   rH   r(   rn   rL   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   r   category)rW   r   r8   )r	   r   splitr&   r   rG   rv   )r(   rK   rn   Zraw_catrL   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   r  r   r   r   TFF)r   rD   r&   r   rG   rv   )r(   rZ   rn   rL   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]r7   r   r   r   )r   r&   r   rG   rv   )r(   r   r   rL   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 )Nr   r7   r5   )r   r   r&   rG   rv   )r(   r
  Znulls_fixturer8   rZ   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 )Nrp   r]   )r   r   r   r   zCannot set values with ndim > ra   r   )r
   r	   rE   rs   rw   r~   r   ndimr1   ru   r   r&   )r(   r   r*   Znd3rx   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 )Nrg   F)writer   r   r5   )rE   eyer	   ZsetflagsrG   rH   rv   )r(   r6   Zrw_arrayZrw_dfZro_arrayZ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datare   float64r7   )r   r5   rq   F)r	   rE   Zonesr   flagsZ	writeabler&   r   rG   rH   rv   )r(   rK   indicesrn   rL   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   r`   rW   r   r<   )r	   r   r&   rG   rH   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   r5   rP   )flagr   r  r   r   )r   r5   rP   r   )r(   r  rK   r6   rL   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)ri   r   r   )r         )Za2b2r   rr   r   r   r   r   r   r   )r(   r6   r   r   rL   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(   rK   rhsrL   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 )Nr5   )r   皙?r#  abcrp   r   r#  r   )r#  r   )r   r#  r#  rP   )r   r#  r#  r   r   )r   r#  r   r#  )r	   rE   rs   rw   rt   r&   rG   rH   r   rv   rW   )r(   rK   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 rk   r   )r(   r   r+   r+   r,   __init__3  s   
zLTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__init__c                 S   s   d| j  dS )Nr   r   r(  r(   r+   r+   r,   __str__6  s   zKTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__str__c                 S   s   | j |j kS rk   r(  )r(   otherr+   r+   r,   __eq__;  s   zJTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__eq__c                 S   s   | S rk   r+   r*  r+   r+   r,   view>  s   zHTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.view)r'  N)
r.   r/   r0   r)  rl   r+  __repr__r   r-  r.  r+   r+   r+   r,   TO2  s    
r0  r   r   rp   rX   r   )r	   r&   rG   rH   rE   r   )r(   r0  rK   rn   r+   r+   r,   test_iloc_setitem_custom_object0  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 )Nr5   ABCZaabr  r   )r	   rE   rs   Zrandrt   r&   
isinstancer   rG   assert_almost_equalrC   T)r(   rK   rn   r+   r+   r,   !test_iloc_getitem_with_duplicatesR  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   rr   )r   r   r   r_   r   r   r   )r	   r&   ZtakerG   rH   r(   rK   rn   rL   r+   r+   r,   "test_iloc_getitem_with_duplicates2]  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   r5   )r	   r   r&   r   rG   rv   rB   rH   r7  r+   r+   r,   test_iloc_intervald  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   r]   rg   TFT)r]   r   rg   r   )r   r&   rG   rv   r	   rH   )r(   r;  r:  rZ   rL   rK   r+   r+   r,   test_loc_setitem_boolean_listu  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 )	Nrf   r   Int64r7   r   Zfoor   )r   rf   r   )r(   rK   resrL   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  r  r7   r   r   r   )r   r   r   )r	   rE   r   r&   r8   rG   rH   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   Z_valuesr	   r&   )r(   rT   rK   rZ   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 d S )Nz
2022-01-01z
2022-01-02Z2021Z2022r   rf   r   z2021-01-01 00:00:00z2022-01-01 00:00:00F)Zcheck_dtype)r	   r   r&   r   rG   rH   r   r+   r+   r,   )test_iloc_setitem_multicolumn_to_datetime  s   $	zATestiLocBaseIndependent.test_iloc_setitem_multicolumn_to_datetime)Pr.   r/   r0   __doc__r1   r2   r3   slicer>   r
   rE   ZasarrayrG   r   r&   rM   r   r   rU   r[   rz   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r	  r   r  r  r  r  r  r  r   r"  r&  r1  r6  r8  r9  r=  r@  rB  tdZ&skip_array_manager_not_yet_implementedrC  rD  r+   r+   r+   r,   r4   @   s    
!

e		
/!* $F	


	


!"
r4   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 keyra   g      @r   )r	   rY   r1   ru   r   r&   r'   _slice_iloc_msg)r(   Zseries_with_simple_indexrR   r*   rx   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 indexersra   ztoo many indices for arrayr   )r1   ru   r   r&   r'   )r(   Z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}d}tjt|d d|j|< W d    n1 s)w   Y  d}tjt|d |j|  W d    d S 1 sHw   Y  d S )Nr   r   r<  zADataFrame indexer for .iloc is not supported. Consider using .locra   r   zWDataFrame indexer is not allowed for .iloc
Consider using .loc for automatic alignment.)r	   r1   ru   r   r&   r'   )r(   rK   r6   rx   r+   r+   r,   test_iloc_frame_indexer  s   "z&TestILocErrors.test_iloc_frame_indexerN)r.   r/   r0   rJ  rK  rL  r+   r+   r+   r,   rH    s    rH  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   r5   rP   r   r   r<   )r   r   )r	   r   r&   rm   rE   r   )r(   r   r   rK   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   rl   str2r   r   r   r_   str3r   )r   rl   rQ  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   r7   r   rP   r   r_   r   )	r	   rE   r   r   r   r&   rD   r  rm   r   r+   r+   r,   *test_iloc_setitem_series_duplicate_columns  s
   (zJTestILocSetItemDuplicateColumns.test_iloc_setitem_series_duplicate_columns)rm   
init_valueexpected_value)r   0r   )floatz1.2g333333?c                 C   sh   t |ddggg dd}|jd d df ||jd d df< t |ddggg dtd}t|| d S )Nrl   rO  rP  r_   r   )r`   r8   )r	   r&   rD   r?   rG   rH   )r(   rm   rT  rU  rK   Zexpected_dfr+   r+   r,   *test_iloc_setitem_dtypes_duplicate_columns  s   &
zJTestILocSetItemDuplicateColumns.test_iloc_setitem_dtypes_duplicate_columnsN)
r.   r/   r0   rN  rR  rS  r1   r2   r3   rX  r+   r+   r+   r,   rM    s    	rM  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 )NrO   aabbXYr   rV   c                 S   r   Nr   r5   r+   r   r+   r+   r,   r     r   zCTestILocCallable.test_frame_iloc_getitem_callable.<locals>.<lambda>r   r5   c                 S   r   r^  r+   r   r+   r+   r,   r      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   *  ra  c                 S   rb  r`  r+   r   r+   r+   r,   r   -  rc  c                 S   r   r^  r+   r   r+   r+   r,   r   0  r   c                 S   r   r^  r+   r   r+   r+   r,   r   3  r   )r	   rt   r&   rG   rH   rv   )r(   rK   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 )NrO   rZ  r[  r   rV   r   c                 S   r   r^  r+   r   r+   r+   r,   r   <  r   zCTestILocCallable.test_frame_iloc_setitem_callable.<locals>.<lambda>r   r5   r   c                 S   r   r^  r+   r   r+   r+   r,   r   B  r   r]   c                 S   r   r^  r+   r   r+   r+   r,   r   H  r   c                 S   r_  r`  r+   r   r+   r+   r,   r   H  ra     c                 S   r   r^  r+   r   r+   r+   r,   r   N  r   c                 S   rb  r`  r+   r   r+   r+   r,   r   N  rc  r   c                 S   r_  r`  r+   r   r+   r+   r,   r   U  ra  c                 S   rb  r`  r+   r   r+   r+   r,   r   [  rc  rg   c                 S   r   r^  r+   r   r+   r+   r,   r   a  r   c                 S   r   r^  r+   r   r+   r+   r,   r   g  r   )r	   rt   rB   r&   rG   rH   )r(   rK   r?  r   r+   r+   r,    test_frame_iloc_setitem_callable6  sR   z1TestILocCallable.test_frame_iloc_setitem_callableN)r.   r/   r0   rd  rg  r+   r+   r+   r,   rY    s    rY  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 )
Nrg   r   r\   r   rV   r   r5   rP   )r   r   r5   rP   r]   )r   rE   rs   rw   rt   r>   rB   r~   r&   rW   rG   r4  rF  r   rv   Zassert_produces_warningr   Zreindex)r(   rS   rZ   Zser_originalirn   r   rL   r+   r+   r,   	test_ilocn  s$    
zTestILocSeries.test_ilocc                 C   s*   t g dg dd}|jd dksJ d S )Nr   r   rV   r   )r   r&   )r(   rZ   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   rr   )r   r   r   rV   r   r5   )r   r]   rq   )r   r&   rG   rv   )r(   Zser1Zser2rL   r+   r+   r,   r     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>  r7   )	r	   rE   r   r   rD   r   r   rG   rH   r  r+   r+   r,   #test_iloc_nullable_int64_size_1_nan  s   &z2TestILocSeries.test_iloc_nullable_int64_size_1_nanN)r.   r/   r0   rj  rk  r   rm  r+   r+   r+   r,   rh  m  s
    rh  ).rE  r   rewarningsr   r   numpyrE   r1   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsrG  Zpandasr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrG   Zpandas.api.typesr   Zpandas.tests.indexing.commonr   escaperI  r   r4   rH  rM  rY  rh  r+   r+   r+   r,   <module>   s:    D        .2V