a
    GGb                     @   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
  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 ddl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)NACategoricalCategoricalDtype	DataFrameIndexIntervalNaTSeriesarrayconcat
date_rangeisna)	is_scalar)IndexingError)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)labelsZmixedZtsZfloatsempty)ZtypsZfails)Zcheck_result
IndexError)selfr    r   >lib/python3.9/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 Z3ejj4dYdZd[d\ Z5d]d^ Z6d_d` Z7dadb Z8ejdIde9e
j:gdcdd Z;ejdee<dHddfdggdhdi Z=djdk Z>ejdejejgdldm Z?dndo Z@eAjBdpdq ZCejdree
jgdsdt ZDejddgeddugdvdw ZEdxdy ZFdzd{ ZGd|d} ZHd~d ZIdd ZJdd ZKejdee
jgejdee
jgdd ZLdd ZMdd ZNdS )TestiLocBaseIndependentzTests Independent Of Base Classr   N   r   indexerc           
      C   sH  t dtditd}tg d}|s:|jjd |s:J | }|j}||||df< t	|t
ol|t
d k}|sv|rt d|i}	t|j|rJ n,t d|it}	|st|d j|sJ t||	 d|jd< |d dksJ t tjg dtdtdd}| }|j}||||df< t |tdd}	t||	 d S )	Nr   r)   dtype)ZalphaZbetagammar-   r   r   r   r   r   )r   rangeobjectr   _mgrblocksZ_can_hold_elementcopyvalues
isinstanceslicenpshares_memoryastypetmassert_frame_equalr   r   )
r   r*   r   using_array_managerframecatdfZ	orig_valsZ	overwrite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 s&|s.|j}n
|d j}|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 r|j|u sJ n4|r|d j|u sJ n|jj|ju r|jd usJ d S )Nr   r   r)      Zi8r   r   )r)   rE   r)   rE   r+   )	r   Zto_numpyr   r5   r   r8   r;   Zassert_equalbase)r   frame_or_seriesrC   r=   arrobjr5   rA   r   r   r    test_iloc_setitem_ea_inplacem   s    
z4TestiLocBaseIndependent.test_iloc_setitem_ea_inplacec                 C   sH   t g d}ttd|d}|jds,J | }|jdsDJ d S )N)r   r   r   r)   index)r   r   r   )r	   r   r0   r   Z_is_scalar_accessto_frame)r   rL   serr@   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 sV0    Y  tjt|d |jddg  W d    n1 s0    Y  tjt|d |jdd	g  W d    n1 s0    Y  tjt|d |jd
g  W d    n1 s
0    Y  |d }tjt|d |jd
g  W d    n1 sN0    Y  tjt|d |jdg  W d    n1 s0    Y  d}tjt|d |jd  W d    n1 s0    Y  tjt|d |jd	  W d    n1 s0    Y  tjt|d |jd  W d    n1 s<0    Y  tjt|d |jd	  W d    n1 sv0    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 s0    Y  d}tjt|d" |jd d df  W d    n1 s0    Y  d S ) N)      ABCDEcolumnsz%positional indexers are out-of-boundsmatchr   r   r   r)   rE   rR   r      id   Aiz*single positional indexer is out-of-boundsrE   
   ir   r   i      c                 S   s   t |  | j t| | d S N)strdtypesr;   r<   )resultrA   r   r   r    check   s    z?TestiLocBaseIndependent.test_iloc_exceeds_bounds.<locals>.checkrR   r   ZABr)   rK      rE   rR   re   )r   r8   randomZrandom_samplelistr%   raisesr   r   r;   r<   assert_series_equalrandnrL   )r   r@   msgsrc   rA   rd   Zdflr   r   r    test_iloc_exceeds_bounds   s    4,,,,,****$,.z0TestiLocBaseIndependent.test_iloc_exceeds_boundszindex,columnsrQ   rS   zindex_vals,column_valsr[   D12i  r   c                 C   sd   t tjt|t|||d}d}tjt|d |j||f  W d    n1 sV0    Y  d S )NrL   rU   z$.iloc requires numeric indexers, gotrV   )	r   r8   rg   rk   lenr%   ri   r   r   )r   rL   rU   Z
index_valsZcolumn_valsr@   rl   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    n1 sP0    Y  d S )NrZ   r\   zCannot index by location indexrV   a)
r   r8   arangereshaper;   Zget_objr%   ri   	TypeErrorr   )r   rG   rI   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   )rZ   e   f   )g   h   i   )j   k   l   r[   BCr   r   r)   rK   )r8   r   r4   r   r   r;   Zassert_numpy_array_equal)r   Zarray_with_neg_numbersZ
array_copyr@   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sJ |jdg }|jdg }t|| tdgdgd}|jd	g }t|| d S )
N)r   r)   rR   )   r^      r[   r   r[   r   ru   rK   r   )r   r   r;   rj   r<   r   )r   r@   rm   rA   rc   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|sVJ |jdd d f }ttjdddgg d	dd
}t|| d S )Nr   r   r   r)   rE   Zaxisr.   r   r[   r   r[   r   )rL   name)	r   r   r   r   r   r8   nanr;   rj   )r   df1df2r@   rc   rA   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   r)   r   rZ      ,        r   )r   r   rK   )r   r;   r<   r   r   r@   rA   rc   r   r   r    test_iloc_getitem_arrayL  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   r)   r   rZ   r   r   r   r   r   )TTFr   rK   c                 S   s   | j d dkS )Nr   r   rK   xr   r   r    <lambda>o      z@TestiLocBaseIndependent.test_iloc_getitem_bool.<locals>.<lambda>r   r   r;   r<   r   r   r   r    test_iloc_getitem_bool_  s    


z.TestiLocBaseIndependent.test_iloc_getitem_boolrL   TF)TFTFc                 C   s`   t g d}dt| dt| }tjt|d |j|  W d    n1 sR0    Y  d S )Nr   z Boolean index has wrong length: z instead of rV   )r   rs   r%   ri   r   r   )r   rL   rm   rl   r   r   r    test_iloc_getitem_bool_diff_lenr  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   r)   r   rZ   r   r   r   r   r   r   rK   r   )r[   r   c                 S   s   ddgS )Nr   r   r   )r@   r   r   r    r     r   zATestiLocBaseIndependent.test_iloc_getitem_slice.<locals>.<lambda>r   r   r   r   r    test_iloc_getitem_slicez  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 )Nr\   rE   )r[   r[   r   r   rT   r   rQ   sizer   r[   r   r   r   r)   )
r   r8   rg   rk   randintrw   r   r;   r<   r   )r   r   r   r@   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sLJ 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 )NrE   r      r      r)   rr   r   r   r   rf   rK   r   r   r   )
r   r8   rg   rk   rv   r   r;   r<   r   rj   r   r@   rc   rA   rm   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)re   cr\   )r   dr^   )r   er   )rR   rR   rR   rR   r   r   r   )re   r   rR   )r   r   rR   )r   r   rR   r   r   r   r@   rA   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	   )r)   r)   r   rr   r   r   r   rZ   )	r   rz   r{   r)   r}   r~   re   r   r   )r   r8   rv   rw   r   r   r;   r<   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   r)   )r   r   r)   r   r   r   r   )r   r4   r   r;   rj   r	   )r   Zs_origrA   rm   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   r)   rE   r   r   r/   r   r[   T)Zdrop)r   r   Zfillnar8   Zisnanr   rL   r;   r<   rU   Zreset_index)r   r   r   r@   rA   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< |sZt|jjdksZJ |jd d df d |jd d df< |st|jjdksJ | }|jddgddgf |jddgddgf< t|| d S )	Nr   r   r   r)   r   rT   Zf8g      ?)	r   r   r:   rs   r2   r3   r4   r;   r<   )r   r=   r@   rA   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shJ |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 )Nr\   rE   r   rQ   r   r   rr   )r   r   )rE   rE      r)   rR   )r   r   r)   )r   r   re   r   )r   r   r)   r   )r_   r   re   re   )r   r   r   r)   )r_   r_   r   re   )rL   r,   )r   rE   re   r   )r   r8   rg   rk   r0   r   locr;   rj   r<   r   r1   rL   )r   r@   rc   r   rA   rm   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sJ d}t	j
t|d |jd  W d    n1 s0    Y  d}t	j
t|d |jd  W d    n1 s0    Y  d S )Nr\   rE   
abcdefghijABCDrr   r   )br   r   r)   r   )r   r   )jro   z/index 5 is out of bounds for axis 0 with size 4rV   )r\   rR   zLocation based indexing can only have \[integer, integer slice \(START point is INCLUDED, END point is EXCLUDED\), listlike of integers, boolean array\] types)r   r8   rg   rk   rh   r   r   r;   r<   r%   ri   r   
ValueError)r   r@   rc   r   rA   rl   r   r   r     test_iloc_getitem_labelled_frameP  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}|sJ|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 )Nre   rE   Z20130101)Zperiodsr   rr   r)   rR   r   r   ZaaaaZaar   r   r   )r8   rg   rk   r   rh   r   Zdescriber   ra   rb   r;   r<   rU   r0   r2   r3   Zmgr_locs)r   r=   rH   rL   rU   r@   rc   rA   r   r   r    test_iloc_getitem_doc_issueq  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sJ 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 )Nr\   rE   r   r   rr   r   r   r   r   r)   rQ   rK   r   re   )r   r   rE   )r   r)   rR   rX   )r   r8   rg   rk   rh   r   r;   r<   r   r0   rj   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 )NrR   int64r+   r\   r   r^   r   r   r   rE   )r   r   r\   r   rE   )rR   re   r^   r   r   ru   r   r   r   r   r   y)ru   r   r   r   r   )r   r8   rv   r   r;   r<   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|rD|d
ksHJ d S )Nr   r   r)   rE   r[   r   rT   r   r.   r   )r   r   r   )r   r*   r   r@   rc   r   r   r    #test_iloc_setitem_with_scalar_index  s    
z;TestiLocBaseIndependent.test_iloc_setitem_with_scalar_indexc                 C   sH  t ttdtddgd}|jd dk}d}tjt|d |j|  W d    n1 s\0    Y  tt||_	d	}tjt
|d |j|  W d    n1 s0    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 ]}	|jdkj}|	rlt|ttt||	}dD ]}
z:|
rt||
dd  }n|}tt|| d  }W n4 ttt
fy } zt|}W Y d }~n
d }~0 0 |	|
f}||}||krptd| d| d| dqpq>W d    n1 s:0    Y  d S )NrR   rS   ru   rr   r   r   zBiLocation based boolean indexing cannot use an indexable as a maskrV   zDiLocation based boolean indexing on an integer type is not availableTr+   rE   c                 S   s   g | ]}t |qS r   )bin).0Znumr   r   r    
<listcomp>  r   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)rL   r   )rL   r   )rL   r   )r   r   )r   r   )r   r   )recordignore)NrL   r   )r   r   r   r   r   [z] does not match [z], received [])r   rh   r0   ru   r%   ri   r   r   rs   rL   NotImplementedErrorr8   r   boolr;   r<   rv   r   r   UserWarningr   r5   r   reversedgetattrra   r   sumr   getAssertionError)r   r@   r   rl   rc   r   r   ZrepsrA   idxmethodZaccessorZanswerr   r   rr   r   r    test_iloc_mask  s^    ((



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    n1 s0    Y  d S )N皙?r   r   r   rY   c   r   r)   r   znot in indexrV   )r   r8   rv   r   r   r;   r<   r%   ri   KeyErrorr   )r   r@   r   rA   Zdf3rc   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 )NrR   r   r   T)Zcheck_index_typeZcheck_column_type)r;   ZmakeCustomDataframer<   r   r   r@   r   r   r    "test_iloc_empty_list_indexer_is_ok4  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sHJ t|d |d s`J g d|j	d d df< |d dk
 sJ tg d}|jd d  }||usJ g d|d d	< t
|d d	 g dksJ d S )
Nz0setting with .loc[:, 'a'] does not alter inplacereasonru   r   )rE   rE   rE   rE   )r   r   r)   rE   rR   re   r   r   r   r)   )r%   r&   xfailZnodeZ
add_markerr   r   r8   r9   r   allr   )r   r=   Zrequestr&   Zoriginal_dfZ	sliced_dfZoriginal_seriesZsliced_seriesr   r   r    &test_identity_slice_returns_new_objectJ  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   r)   rE   r   r   )r   r   r8   r   r   r;   rj   )r   r@   rc   rm   r   r   r    test_indexing_zerodim_np_arraye  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   r8   r   )r   rm   rc   r   r   r    %test_series_indexing_zerodim_np_arrayl  s    z=TestiLocBaseIndependent.test_series_indexing_zerodim_np_arrayz1https://github.com/pandas-dev/pandas/issues/33457r   c                 C   sV   t g d}t|g dd}|d d d |jd d df< t g d}t|| d S )Nr   r   )r   r   r   r   )r   r   r[   )r   r   r   r;   Zassert_categorical_equal)r   r?   r@   rA   r   r   r    -test_iloc_setitem_categorical_updates_inplacer  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   r)   rE   rR   re   r   r\   r   )TTFF)FFTTg      @g      (@g      @)r   r8   r   r   rL   r;   r<   r   rc   rA   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   ru   r   Z
categoriescategory)rL   r   r,   )r   r   splitr   r   r;   rj   )r   r@   rc   Zraw_catrA   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   r:   r   r   r;   rj   )r   rO   rc   rA   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]r+   r   r   r   )r   r   r   r;   rj   )r   r   ZseriesrA   r   r   r    %test_iloc_setitem_td64_values_cast_na  s    
z=TestiLocBaseIndependent.test_iloc_setitem_td64_values_cast_nanot_naru   g      ?c                 C   sX   t |gd}t||||g|d}|||g|jd d< t||||g|d}t|| d S )Nr   r+   r)   )r   r   r   r;   rj   )r   r   Znulls_fixturer,   rO   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    n1 sr0    Y  d S )Nrr   rR   )r   r   r   r   zCannot set values with ndim > rV   r   )r	   r   r8   rg   rk   rs   r   ndimr%   ri   r   r   )r   r   rI   Znd3rl   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 )Nr\   F)writer   r   r)   )r8   Zeyer   Zsetflagsr;   r<   rj   )r   r*   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datarZ   float64r+   )r   r)   re   F)r   r8   Zonesr   flagsZ	writeabler   r   r;   r<   rj   )r   r@   indicesrc   rA   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 )Nru   r   rU   rL   r   r.   )r   r   r   r;   r<   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   r)   rE   )flagr   r   r   r   )r   r)   rE   r   )r   r	  r@   r*   rA   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)r^   r   r   )r         )Za2Zb2r   rf   r   ru   r   r   r   r   )r   r*   r   r   rA   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   r@   ZrhsrA   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 )Nr)   )r   皙?r  abcrr   r   r  r   )r  ru   )r   r  r  rE   )r   r  r  r   r   )r   r  r   r  )r   r8   rg   rk   rh   r   r;   r<   r   rj   rL   )r   r@   Z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 ZedddZeZedddZdd	 Z	d
S )zCTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TOc                 S   s
   || _ d S r`   r   )r   r   r   r   r    __init__7  s    zLTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__init__)returnc                 S   s   d| j  dS )Nr   r   r  r   r   r   r    __str__:  s    zKTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__str__c                 S   s   | j |j kS r`   r  )r   otherr   r   r    __eq__?  s    zJTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__eq__c                 S   s   | S r`   r   r  r   r   r    viewB  s    zHTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.viewN)
r"   r#   r$   r  ra   r  __repr__r   r  r  r   r   r   r    TO6  s
   r  r   r   rr   rM   r   )r   r   r;   r<   r8   r   )r   r  r@   rc   r   r   r    test_iloc_setitem_custom_object4  s    z7TestiLocBaseIndependent.test_iloc_setitem_custom_objectc                 C   s   t tjddtdtdd}|jd }t|ts8J t	|j
|j
d  |jjd d df }t|tsnJ t	|j
|j
d  d S )Nr)   ABCZaabr  r   )r   r8   rg   Zrandrh   r   r6   r   r;   assert_almost_equalr5   T)r   r@   rc   r   r   r    !test_iloc_getitem_with_duplicatesV  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   rf   )r   r   r   rT   r   r   r   )r   r   Ztaker;   r<   r   r@   rc   rA   r   r   r    "test_iloc_getitem_with_duplicates2b  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   r)   )r   r
   r   r   r;   rj   r4   r<   r$  r   r   r    test_iloc_intervali  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   rR   r\   TFT)rR   r   r\   ru   )r   r   r;   rj   r   r<   )r   r(  r'  rO   rA   r@   r   r   r    test_loc_setitem_boolean_listz  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 )	Nr[   r   Int64r+   r   Zfoor   )r   r[   r   )r   r@   resrA   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 )	NZstatusr  r   r+   ru   r   r   )ru   ru   r   )r   r8   r   r   r,   r;   r<   r   r   r   r    *test_iloc_setitem_2d_ndarray_into_ea_block  s    .zBTestiLocBaseIndependent.test_iloc_setitem_2d_ndarray_into_ea_block)Or"   r#   r$   __doc__r%   r&   r'   r7   r0   r	   r8   Zasarrayr;   r   r   rB   r   r   rJ   rP   rn   rv   rh   r   rt   ry   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  td&skip_array_manager_not_yet_implementedr  r  r  r  r  r  r#  r%  r&  r*  r-  r.  r   r   r   r    r(   7   s   
'

f		
/!+ $G
	


	



!"r(   c                   @   s*   e Zd Zdd Zdd Zejdd ZdS )TestILocErrorsc                 C   s   |}|t u r| }d}tjt|d |jd  W d    n1 sF0    Y  tjttd d|jd< W d    n1 s~0    Y  d S )Nz5Cannot index by location index with a non-integer keyrV   g      @r   )r   rN   r%   ri   rx   r   r   _slice_iloc_msg)r   Zseries_with_simple_indexrG   rI   rl   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@0    Y  t jtdd, d|jd d d d d d f< W d    n1 s0    Y  d S )NzToo many indexersrV   ztoo many indices for arrayr   )r%   ri   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}tt d|j|< W d    n1 sJ0    Y  d}tjt|d |j|  W d    n1 s0    Y  d S )Nru   r   r)  r   zWDataFrame indexer is not allowed for .iloc
Consider using .loc for automatic alignment.rV   )r   r;   Zassert_produces_warningFutureWarningr   r%   ri   r   )r   r@   r*   rl   r   r   r    test_iloc_frame_indexer  s    (z&TestILocErrors.test_iloc_frame_indexerN)r"   r#   r$   r4  r5  r0  r1  r7  r   r   r   r    r2    s   	r2  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snJ |jjd tjksJ d S )
Nr   r   r   r)   rE   r   r   r.   )r   r   )r   r   r   rb   r8   r   )r   r   r   r@   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   ra   str2ru   r   r   rT   str3r   )r   ra   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sbJ d S )Nr   r+   r   rE   r   rT   r   )	r   r8   rv   r   rw   r   r:   r  rb   r   r   r   r    *test_iloc_setitem_series_duplicate_columns  s
    (zJTestILocSetItemDuplicateColumns.test_iloc_setitem_series_duplicate_columns)rb   
init_valueexpected_value)r   0r   )floatz1.2g333333?c                 C   sf   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d}t|| d S )Nra   r:  r;  rT   r   )r   r   r:   r;   r<   )r   rb   r?  r@  r@   Zexpected_dfr   r   r    *test_iloc_setitem_dtypes_duplicate_columns  s    &zJTestILocSetItemDuplicateColumns.test_iloc_setitem_dtypes_duplicate_columnsN)
r"   r#   r$   r9  r=  r>  r%   r&   r'   rC  r   r   r   r    r8    s   	r8  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 )NrD   aabbXYr   rK   c                 S   s   ddgS Nr   r)   r   r   r   r   r    r     r   zCTestILocCallable.test_frame_iloc_getitem_callable.<locals>.<lambda>r   r)   c                 S   s   ddgS rI  r   r   r   r   r    r     r   c                 S   s   ddgS rI  r   r   r   r   r    r     r   c                 S   s   dS Nr   r   r   r   r   r    r     r   r   c                 S   s   ddgS rI  r   r   r   r   r    r     r   c                 S   s   dgS rJ  r   r   r   r   r    r     r   c                 S   s   dS rJ  r   r   r   r   r    r     r   c                 S   s   dgS rJ  r   r   r   r   r    r     r   c                 S   s   ddgS rI  r   r   r   r   r    r     r   c                 S   s   ddgS rI  r   r   r   r   r    r     r   )r   rh   r   r;   r<   rj   )r   r@   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 )NrD   rE  rF  r   rK   r   c                 S   s   ddgS rI  r   r   r   r   r    r     r   zCTestILocCallable.test_frame_iloc_setitem_callable.<locals>.<lambda>r   r)   r   c                 S   s   ddgS rI  r   r   r   r   r    r   #  r   rR   c                 S   s   ddgS rI  r   r   r   r   r    r   )  r   c                 S   s   dS rJ  r   r   r   r   r    r   )  r      c                 S   s   ddgS rI  r   r   r   r   r    r   /  r   c                 S   s   dgS rJ  r   r   r   r   r    r   /  r   r   c                 S   s   dS rJ  r   r   r   r   r    r   6  r   c                 S   s   dgS rJ  r   r   r   r   r    r   <  r   r\   c                 S   s   ddgS rI  r   r   r   r   r    r   B  r   c                 S   s   ddgS rI  r   r   r   r   r    r   H  r   )r   rh   r4   r   r;   r<   )r   r@   r,  r   r   r   r     test_frame_iloc_setitem_callable  sR    z1TestILocCallable.test_frame_iloc_setitem_callableN)r"   r#   r$   rK  rN  r   r   r   r    rD    s   rD  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	|| d|d d < |dd dk sJ |jg d	 }||jg d	 }t	|| d S )
Nr\   r   rQ   r   rK   r   r)   rE   )r   r   r)   rE   rR   )r   r8   rg   rk   rh   r0   rs   r   rL   r;   r!  r7   r   rj   r   Zreindex)r   rO   irc   r   rA   r   r   r    	test_ilocO  s     
zTestILocSeries.test_ilocc                 C   s*   t g dg dd}|jd dks&J d S )Nr   r   rK   r   )r   r   )r   rO   r   r   r    test_iloc_getitem_nonuniquee  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   rf   )r   r   r   rK   r   r)   )r   rR   re   )r   r   r;   rj   )r   Zser1Zser2rA   r   r   r    r  i  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)ru   r   r   r+  r+   )	r   r8   r   r   r:   r   r   r;   r<   r   r   r   r    #test_iloc_nullable_int64_size_1_nanq  s    &z2TestILocSeries.test_iloc_nullable_int64_size_1_nanN)r"   r#   r$   rQ  rR  r  rT  r   r   r   r    rO  N  s   rO  )+r/  r   rewarningsr   r   Znumpyr8   r%   Zpandas.util._test_decoratorsutilZ_test_decoratorsr0  Zpandasr   r   r   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingr;   Zpandas.api.typesr   Zpandas.core.indexingr   Zpandas.tests.indexing.commonr   escaper3  r   r(   r2  r8  rD  rO  r   r   r   r    <module>   s8   8        n/,V