U
    f/e                     @   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dddggdd ZdS )	TestiLockey   r      c                 C   s    | j d|dddddgtd d S )NiloclabelsmixedtsZfloatsempty)ZtypsZfails)Zcheck_result
IndexError)selfr    r    C/tmp/pip-unpacked-wheel-tiezk1ph/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                   @   sj  e Zd ZdZejdedededdddge	ede
dddggejdejejgd	d
 Zej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ejdddgdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Z ejd*d+d,gd+d,d+d,ggd-d. Z!d/d0 Z"d1d2 Z#d3d4 Z$d5d6 Z%d7d8 Z&d9d: Z'd;d< Z(d=d> Z)d?d@ Z*dAdB Z+dCdD Z,dEdF Z-ejddgeddde
dggejdGdHge
dHggdIdJ Z.dKdL Z/dMdN Z0dOdP Z1dQdR Z2dSdT Z3dUdV Z4ejj5dWdXdYdZ Z6d[d\ Z7d]d^ Z8d_d` Z9ejdGde:e
j;gdadb Z<dcdd Z=ejdejejgdedf Z>dgdh Z?ejdidj Z@ejdkee
jgdldm ZAejddgeddgdndo ZBdpdq ZCdrds ZDdtdu ZEdvdw ZFdxdy ZGdzd{ ZHejd|ee
jgejd}ee
jgd~d ZIdS )TestiLocBaseIndependentzTests Independent Of Base Classr   N   r   r   r   indexerc           
      C   sd  t dtditd}tdddg}|s<|jjd |s<t| }|j	}||||df< t
|ton|td k}|sx|rt d|i}	t|j	|rtn,t d|it}	|st|d j	|stt||	 d|jd< |r|d dkstn|d dkstt tjddd	gtdtdd
}| }|j	}||||df< t |tdd
}	t||	 d S )Nr   r*   dtypealphabetagammar   r   r   r   r   r   )r   rangeobjectr   _mgrblocksZ_can_hold_elementAssertionErrorcopyvalues
isinstanceslicenpZshares_memoryastypetmassert_frame_equalr   r   )
r   r+   r   using_array_managerframecatdfZ	orig_vals	overwriteexpectedr    r    r!   %test_iloc_setitem_fullcol_categorical:   s2    
"z=TestiLocBaseIndependent.test_iloc_setitem_fullcol_categoricalboxc                 C   s   t ddddg}||d}|tks*|s2|j}n
|d j}|tkr`||dd  |jd d< n||dd  |jd ddf< |tj ddddgdd}t|| |tkr|j|kstn4|r|d j|kstn|jj	|j	kr|j	d k	std S )Nr   r   r*      i8r   r,   )
r   Zto_numpyr   r9   r   r<   r>   Zassert_equalr7   base)r   frame_or_seriesrG   r@   arrobjr9   rE   r    r    r!   test_iloc_setitem_ea_inplaceq   s    
z4TestiLocBaseIndependent.test_iloc_setitem_ea_inplacec                 C   sJ   t dddg}ttd|d}|jds.t| }|jdsFtd S )Nr   r   r*   index)r   r   r   )r	   r   r3   r   Z_is_scalar_accessr7   to_frame)r   rP   serrC   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 dddd	d
dgf  W 5 Q R X tjt|d |jddg  W 5 Q R X tjt|d |jddg  W 5 Q R X tjt|d |jdg  W 5 Q R X |d }tjt|d |jdg  W 5 Q R X tjt|d |jdg  W 5 Q R X d}tjt|d |jd  W 5 Q R X tjt|d |jd  W 5 Q R X tjt|d |jd  W 5 Q R X tjt|d |jd  W 5 Q R X |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d
ddg  W 5 Q R X d}tjt|d |jd d d
f  W 5 Q R X d S )N)      ABCDEcolumnsz%positional indexers are out-of-boundsmatchr   r   r   r*   rH   rV      id   Ai*single positional indexer is out-of-bounds
   ir   i      c                 S   s   t |  | j t| | d S N)strdtypesr>   r?   )resultrE   r    r    r!   check   s    z?TestiLocBaseIndependent.test_iloc_exceeds_bounds.<locals>.checkZABrO      )r   r<   randomZrandom_samplelistr&   raisesr   r   r>   r?   assert_series_equalrandnrP   )r   rC   msgsrg   rE   rh   Zdflr    r    r!   test_iloc_exceeds_bounds   s    ($,z0TestiLocBaseIndependent.test_iloc_exceeds_boundszindex,columnsrU   rW   zindex_vals,column_valsr^   D12i  c              	   C   sP   t tjt|t|||d}d}tjt|d |j||f  W 5 Q R X d S )NrP   rY   z$.iloc requires numeric indexers, gotrZ   )	r   r<   rj   rn   lenr&   rl   r   r   )r   rP   rY   Z
index_valsZcolumn_valsrC   ro   r    r    r!   test_iloc_non_integer_raises   s      z4TestiLocBaseIndependent.test_iloc_non_integer_raisesdimsc              	   C   sV   |dkrt td}nttddd}tjtdd |jd  W 5 Q R X d S )Nr   r`   r]   zCannot index by location indexrZ   a)	r   r<   aranger   reshaper&   rl   	TypeErrorr   )r   rx   rp   r    r    r!    test_iloc_getitem_invalid_scalar  s
    z8TestiLocBaseIndependent.test_iloc_getitem_invalid_scalarc                 C   s|   t dddg}| }tdddgddd	gd
ddgddddgd}|j|  t|| |jd d |f  t|| d S )Nr   r   r   r]   e   f   g   h   i   j   k   l   r^   BCr*   rO   )r<   r   r8   r   r   r>   Zassert_numpy_array_equal)r   Zarray_with_neg_numbersZ
array_copyrC   r    r    r!   -test_iloc_array_not_mutating_negative_indices  s    
zETestiLocBaseIndependent.test_iloc_array_not_mutating_negative_indicesc                 C   s   t dddgdddgd}|d }|jd	 }|jd
 }t|| |jd	g }|jd
g }t|| |jd	 }|jd
 }||kst|jd	g }|jd
g }t|| tdgdgd}|jdg }t|| d S )Nr   r*   rV      rb      r^   r   r^   r   ry   rO   r   )r   r   r>   rm   r?   r7   r   )r   rC   rp   rE   rg   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|sVt|jdd d f }ttjdddgd	d
d	d
gdd}t	|| d S )Nr   r   r   r*   rH   Zaxisr1   r   r^   r   )rP   name)
r   r   r   r   r7   r   r<   nanr>   rm   )r   df1df2rC   rg   rE   r    r    r!   test_iloc_getitem_dupsF  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   r]      ,        r   )r   r   rO   )r   r>   r?   r   r   rC   rE   rg   r    r    r!   test_iloc_getitem_arrayT  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dddg }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   r]   r   r   r   r   r   TFr   rO   c                 S   s   | j d dkS )Nr   r   rO   xr    r    r!   <lambda>w      z@TestiLocBaseIndependent.test_iloc_getitem_bool.<locals>.<lambda>r   r   r>   r?   r   r    r    r!   test_iloc_getitem_boolg  s    


 z.TestiLocBaseIndependent.test_iloc_getitem_boolrP   TFc              	   C   sN   t dddg}dt| dt| }tjt|d |j|  W 5 Q R X d S )Nr   r   r*   z Boolean index has wrong length: z instead of rZ   )r   rv   r&   rl   r   r   )r   rP   rp   ro   r    r    r!   test_iloc_getitem_bool_diff_lenz  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   r]   r   r   r   r   r   r   rO   r   )r^   r   c                 S   s   ddgS )Nr   r   r    )rC   r    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ddddg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`   rH   r^   r   rX   r   rU   sizer   r   r   r   r*   )
r   r<   rj   rn   randintr{   r   r>   r?   r   )r   r   r   rC   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sLtd|jd d ddf< |jd d ddf }|jd d ddf }t|| t	ddd
dgd}|jdd  d7  < t	dddgdd
dgd}t
|| d S )NrH   r      r      r*   ru   r   r   r   rV   ri   rO   )r   r<   rj   rn   rz   r   r7   r>   r?   r   rm   r   rC   rg   rE   rp   r    r    r!   test_iloc_setitem  s       

z)TestiLocBaseIndependent.test_iloc_setitemc                 C   s   t tdddddgdddgd}|jddgdd	gf  |jddgdd	gf  d
7  < t tdddddddddg	ddddgdddgd}t|| d S )N	   )r*   r*   r^   r   r   ru   r   r   r   r]   r~   r   r*   r   r   ri   r   r   )r   r<   rz   r{   r   r   r>   r?   r   rC   rE   r    r    r!   test_iloc_setitem_list  s       z.TestiLocBaseIndependent.test_iloc_setitem_listc                 C   sx   t ddddg}t ddddg}| }ddg|jt ddg< t|| | }ddg|jtddg< t|| d S )Nr   r   r   r*   r   )r   r8   r   r>   rm   r	   )r   Zs_origrE   rp   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*   rH   r   r   r2   r   r^   T)Zdrop)r   r   Zfillnar<   isnanr   rP   r>   r?   rY   Zreset_index)r   r   r   rC   rE   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sZt| }|jddgddgf |jddgddgf< t	|| d S )Nr   r   r   r*   r   rX   Zf8)
r   r   r=   rv   r5   r6   r7   r8   r>   r?   )r   r@   rC   rE   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sht	|jdd }|jdd
 }t
|| |jd d ddf }|jd d ddf }t
|| |jdddg }|jdddg }t
|| |jdddgddgf }|jdddgddgf }t
|| |jdddgddgf }|jdddgddgf }t
|| |jddddgddgf }|jddddgddgf }t
|| ttddtd}|j|j }|jddddg }t
|| d S )Nr`   rH   r   rU   r   r   ru   )r   r   )rH   rH      r*   rV   r   ri   r   rc   )rP   r-   )r   r<   rj   rn   r3   r   locr>   rm   r7   r?   r   r4   rP   )r   rC   rg   r   rE   rp   r    r    r!   test_iloc_getitem_frame  sB     
 




z/TestiLocBaseIndependent.test_iloc_getitem_framec              	   C   s   t tjddtdtdd}|jd }|jd }||ks@t|jd d dd	f }|jd d d
gf }t	|| |jd }|jd }||kstd}t
jt|d |jd  W 5 Q R X d}t
jt|d |jd  W 5 Q R X d S )Nr`   rH   
abcdefghijABCDru   r   )br   r   r*   r   )r   r   )jrr   r_   rZ   )r`   rV   zLocation based indexing can only have \[integer, integer slice \(START point is INCLUDED, END point is EXCLUDED\), listlike of integers, boolean array\] types)r   r<   rj   rn   rk   r   r   r7   r>   r?   r&   rl   r   
ValueError)r   rC   rg   r   rE   ro   r    r    r!    test_iloc_getitem_labelled_frameC  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 )Nri   rH   Z20130101)Zperiodsr   ru   r*   rV   r   r   ZaaaaZaar   r   r   )r<   rj   rn   r   rk   r   Zdescriber   re   rf   r>   r?   rY   r3   r5   r6   Zmgr_locs)r   r@   rL   rP   rY   rC   rg   rE   r    r    r!   test_iloc_getitem_doc_issued  s6    .
*.z3TestiLocBaseIndependent.test_iloc_getitem_doc_issuec                 C   sb  t tjddtdtdd}d|jd< |jd }|dks@t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std|jd d< |jd d }|jd d }t|| t	dgd }dd	dg|jdd d	< dd
dg|jdd d	< |}t	ddd	d
ddg}t|| d S )Nr`   rH   r   r   ru   r   r   r   r   r*   rU   rO   r   ri   rV   )r   r<   rj   rn   rk   r   r7   r>   r?   r   r3   rm   r   r    r    r!   test_iloc_setitem_series  s4      



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 ddddd
gdddddgd}t|| t dddddgtjddddd}ddgddgg|jd	d
< t dddddgdddddgd}t|| d S )NrV   int64r,   r`   r   rb   r   r   r   rH   r   r   ri   r   ry   r   cder   y)r   r<   rz   r   r>   r?   r   r    r    r!   test_iloc_setitem_list_of_lists  s    ""z7TestiLocBaseIndependent.test_iloc_setitem_list_of_lists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sHtd S )Nr   r   r*   rH   r^   r   rX   r   r1   r   )r   r   r   r7   )r   r+   r   rC   rg   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 5 Q R X tt||_	d	}tjt
|d |j|  W 5 Q R X |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}|	rBt|ttt||	}dD ]}
z:|
rft||
dd  }n|}tt|| d  }W n2 ttt
fk
r } zt|}W 5 d }~X Y nX |	|
f}||}||krFtd| d| d| dqFqW 5 Q R X d S )NrV   rW   ry   ru   r   r   zBiLocation based boolean indexing cannot use an indexable as a maskrZ   zDiLocation based boolean indexing on an integer type is not availableTr,   rH   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)rP   r   )rP   r   )rP   r   )r   r   )r   r   )r   r   )recordignore)NrP   r   )r   r   r   r   r   [z] does not match [z], received [])r   rk   r3   ry   r&   rl   r   r   rv   rP   NotImplementedErrorr<   r   boolr>   r?   rz   r   r   UserWarningr   r9   r   reversedgetattrre   r   sumr   getr7   )r   rC   r   ro   rg   r   r   ZrepsrE   idxmethod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 5 Q R X d S )N皙?r   r   r   r\   c   r   r*   r   znot in indexrZ   )r   r<   rz   r   r   r>   r?   r&   rl   KeyErrorr   )r   rC   r   rE   Zdf3rg   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 )NrV   r   r   T)Zcheck_index_typeZcheck_column_type)r>   ZmakeCustomDataframer?   r   r   rC   r    r    r!   "test_iloc_empty_list_indexer_is_ok'  s&       z:TestiLocBaseIndependent.test_iloc_empty_list_indexer_is_okc                 C   s   t ddddgi}|jd d  }||k	s,tdddg|d< |rT|d dk rhtn|d dk shttddddddg}|jd d  }||k	stdd	d
g|d d< t|d d dd	d
gkstd S )Nry   r   r   r*   rH   rV   ri   r   r   r   )r   r   r7   allr   )r   r@   Zoriginal_dfZ	sliced_dfZoriginal_seriesZsliced_seriesr    r    r!   &test_identity_slice_returns_new_object=  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*   rH   r   r   )r   r   r<   r   r   r>   rm   )r   rC   rg   rp   r    r    r!   test_indexing_zerodim_np_arrayT  s    z6TestiLocBaseIndependent.test_indexing_zerodim_np_arrayc                 C   s,   t ddg}|jtd }|dks(td S )Nr   r   r   )r   r   r<   r   r7   )r   rp   rg   r    r    r!   %test_series_indexing_zerodim_np_array[  s    z=TestiLocBaseIndependent.test_series_indexing_zerodim_np_arrayz1https://github.com/pandas-dev/pandas/issues/33457)reasonc                 C   s\   t dddg}t|dddgd}|d d d |jd d d	f< t dddg}t|| d S )
Nr^   r   r   r   r   r*   )r   r   r   r   )r   r   r   r>   Zassert_categorical_equal)r   rB   rC   rE   r    r    r!   -test_iloc_setitem_categorical_updates_inplacea  s
    zETestiLocBaseIndependent.test_iloc_setitem_categorical_updates_inplacec                 C   sB  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ddddg  d9  < t ddgdd
gdd	gd
tjgg}t|| |jddddg  d  < t ddgddgddgdtjgg}t|| d S )Nr   r   r   r*   rH   rV   ri   r   r`   r   TFg        g      @g       @g      (@g      @g      @)r   r<   r   r   rP   r>   r?   r   rg   rE   r    r    r!    test_iloc_with_boolean_operationm  s    """""z8TestiLocBaseIndependent.test_iloc_with_boolean_operationc                 C   sX   t dtd i}|jd }tdgdddddgd	}t|dgdd
d}t|| d S )Nr   z	a b c d er   ry   r   r   r   r   )
categoriescategory)rP   r   r-   )r   r   splitr   r   r>   rm   )r   rC   rg   Zraw_catrE   r    r    r!   ?test_iloc_getitem_singlerow_slice_categoricaldtype_gives_series  s
    
zWTestiLocBaseIndependent.test_iloc_getitem_singlerow_slice_categoricaldtype_gives_seriesc                 C   s   t dddgd}|jdd }t ddgtdddg}t|| |jddg }t ddgtdddg}t|| |jdddg }t dgtdddg}t|| d S )Nr   r   r*   r   r   TF)r   r=   r   r   r>   rm   )r   rS   rg   rE   r    r    r!   $test_iloc_getitem_categorical_values  s    z<TestiLocBaseIndependent.test_iloc_getitem_categorical_valuesc                 C   s>   t dddgdd}||jd< t tddgdd}t|| d S )Nr   r   r   ztimedelta64[ns]r,   )r   r   r   r>   rm   )r   r   ZseriesrE   r    r    r!   %test_iloc_setitem_td64_values_cast_na  s    
z=TestiLocBaseIndependent.test_iloc_setitem_td64_values_cast_nac              	   C   sl   t g }ttjt|t|||d}tjjddd}d|j }tj	t
|d d|j|< W 5 Q R X d S )Nru   rV   )r   r   r   r   zCannot set values with ndim > rZ   r   )r	   r   r<   rj   rn   rv   r   ndimr&   rl   r   r   )r   r   rM   Znd3ro   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||dddg ||dddg  t||dg ||dg  t||d ||d  t||dd ||dd  d S )Nr`   F)writer   r   r*   )r<   Zeyer   Zsetflagsr>   r?   rm   )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dddg}d|j_|j| }|jdddg }t	|| |d j| }|d jdddg }t
|| d S )	Ndatar]   float64r,   r   r*   ri   F)r   r<   Zonesr   flagsZ	writeabler   r   r>   r?   rm   )r   rC   indicesrg   rE   r    r    r!   test_iloc_getitem_readonly_key  s    
z6TestiLocBaseIndependent.test_iloc_getitem_readonly_keyc                 C   sV   t dgdgd}tdddg|jd< t dtdddggidgdgd}t|| d S )Nry   r   rY   rP   r   r   r*   r1   )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   sn   t dddgdddgd}|dd	d	g}|j|df d
 |j|df< t dddgd
ddgd}t|| d S )Nr   r   zr   r*   rH   )flagr   TFr   r   )r   r  rC   r+   rE   r    r    r!   test_iloc_setitem_bool_indexer  s
    z6TestiLocBaseIndependent.test_iloc_setitem_bool_indexerc                 C   s   t dddgdddgd}t dd	d
gdddgdddgd}|jd d dgf |jd d |f< t dd	d
gdddgdddgd}t|| d S )Nrb   r   r   r         )Za2Zb2r   r   r*   rH   rV   ri   r   r   r   )ry   r   r   r   r   )r   r+   r   r   rE   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   rC   rhsrE   r    r    r!   "test_iloc_setitem_dictionary_value  s    


z:TestiLocBaseIndependent.test_iloc_setitem_dictionary_valuec                 C   st  t tjdddddgtdd}|jdd  }t|jd | |jdd df }t	|jd | dddg|_
|jdd  }t|jd | |jdd df }t	|jd | t tjd	dddddgtdd}|jdd
 }t|jd | |jdd
df }t	|jd | ddddg|_
|jdd
g }t|jd | |jdd
gdf }t	|jd | d S )Nr*   r   皙?abcru   r   r   )r  ry   rH   r   r   )r   r<   rj   rn   rk   r   r>   r?   r   rm   rP   )r   rC   expectr    r    r!   "test_iloc_getitem_float_duplicates  s8       
 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 rd   r   )r   r   r    r    r!   __init__  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 rd   r  )r   otherr    r    r!   __eq__#  s    zJTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.__eq__c                 S   s   | S rd   r    r  r    r    r!   view&  s    zHTestiLocBaseIndependent.test_iloc_setitem_custom_object.<locals>.TO.viewN)
r#   r$   r%   r  re   r  __repr__r   r  r  r    r    r    r!   TO  s
   r  r   r   ru   rQ   r   )r   r   r>   r?   r<   r   )r   r  rC   rg   r    r    r!   test_iloc_setitem_custom_object  s    z7TestiLocBaseIndependent.test_iloc_setitem_custom_objectc                 C   s   t tjddtdtdd}|jd }t|ts8tt	
|j|jd  |jjd d df }t|tsntt	
|j|jd  d S )Nr*   ABCZaabr  r   )r   r<   rj   Zrandrk   r   r:   r   r7   r>   assert_almost_equalr9   T)r   rC   rg   r    r    r!   !test_iloc_getitem_with_duplicates:  s     
z9TestiLocBaseIndependent.test_iloc_getitem_with_duplicatesc                 C   sV   t dddgdddggdddgd}|jd d dgf }|jdgdd	}t|| d S )
Nr   r   r*   rH   rV   ri   rX   r   r   )r   r   Ztaker>   r?   r   rC   rg   rE   r    r    r!   "test_iloc_getitem_with_duplicates2F  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>   rm   r8   r?   r   r    r    r!   test_iloc_intervalM  s    
z*TestiLocBaseIndependent.test_iloc_intervalindexing_funcrhs_funcc                 C   s   t dddg}|ddg|j|dddg< t dddg}t|| tddddgi}|dgdgg|j|dddg< tddddgi}t|| d S )	Nr   r   r   rV   r`   TFry   )r   r   r>   rm   r   r?   )r   r$  r#  rS   rE   rC   r    r    r!   test_loc_setitem_boolean_list^  s     z5TestiLocBaseIndependent.test_loc_setitem_boolean_list)Jr#   r$   r%   __doc__r&   r'   r(   r;   r3   r	   r<   Zasarrayr>   r   r   rF   td&skip_array_manager_not_yet_implementedr   r   rN   rT   rq   rz   rk   r   rw   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   Zxfailr   r   r   r   r   r   r   r   r   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   sd   |}|t kr| }d}tjt|d |jd  W 5 Q R X tjttd d|jd< W 5 Q R X d S )Nz5Cannot index by location index with a non-integer keyrZ   g      @r   )r   rR   r&   rl   r|   r   r   _slice_iloc_msg)r   Zseries_with_simple_indexrK   rM   ro   r    r    r!   test_iloc_float_raisesp  s    z%TestILocErrors.test_iloc_float_raisesc              	   C   sp   t jtdd" |jd d d d d d f  W 5 Q R X t jtdd" d|jd d d d d d f< W 5 Q R X d S )NzToo many indexersrZ   ztoo many indices for arrayr   )r&   rl   r   r   r   )r   Zfloat_framer    r    r!   *test_iloc_getitem_setitem_fancy_exceptions  s    &z9TestILocErrors.test_iloc_getitem_setitem_fancy_exceptionsc              	   C   sp   t ddddgi}t ddddgi}tt d|j|< W 5 Q R X d}tjt|d |j|  W 5 Q R X d S )	Nry   r   r   r*   TFzWDataFrame indexer is not allowed for .iloc
Consider using .loc for automatic alignment.rZ   )r   r>   Zassert_produces_warningFutureWarningr   r&   rl   r   )r   rC   r+   ro   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    r!   r)  m  s   	r)  c                   @   sD   e Zd Zdd Zdd Zdd Zejddd	g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\t|jd	 dksnt|jjd tjkstd S )
Nr   r   r   r*   rH   r   r   r1   )r   r   )r   r   r   r7   rf   r<   r   )r   r   r   rC   r    r    r!   *test_iloc_setitem_scalar_duplicate_columns  s    
zJTestILocSetItemDuplicateColumns.test_iloc_setitem_scalar_duplicate_columnsc                 C   sX   t dddggdddgd}dg|jd d df< t dddggdddgd}t|| d S )	Nr   re   str2ry   r   rX   Zstr3r   r   r   r    r    r!   (test_iloc_setitem_list_duplicate_columns  s    zHTestILocSetItemDuplicateColumns.test_iloc_setitem_list_duplicate_columnsc                 C   sj   t tjdtjdddddddgd}|jd d df tj|jd d df< |jjd tjksft	d S )	Nr   r,   r   rH   r^   r   rX   r   )
r   r<   rz   r   r{   r   r=   r   rf   r7   r   r    r    r!   *test_iloc_setitem_series_duplicate_columns  s     
(zJTestILocSetItemDuplicateColumns.test_iloc_setitem_series_duplicate_columnsrf   
init_valueexpected_value)r   0r   )floatz1.2g333333?c                 C   sj   t |ddggdddgd}|jd d df ||jd d df< t |ddggdddgd}t|| d S )Nre   r1  ry   r   rX   r   )r   r   r=   r>   r?   )r   rf   r4  r5  rC   Zexpected_dfr    r    r!   *test_iloc_setitem_dtypes_duplicate_columns  s    &
 zJTestILocSetItemDuplicateColumns.test_iloc_setitem_dtypes_duplicate_columnsN)
r#   r$   r%   r0  r2  r3  r&   r'   r(   r8  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 ddddg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 )Nr   r   r*   rH   aabbXYr   rO   c                 S   s   ddgS Nr   r*   r    r   r    r    r!   r     r   zCTestILocCallable.test_frame_iloc_getitem_callable.<locals>.<lambda>c                 S   s   ddgS r>  r    r   r    r    r!   r     r   c                 S   s   ddgS r>  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 r>  r    r   r    r    r!   r     r   c                 S   s   dgS r?  r    r   r    r    r!   r     r   c                 S   s   dS r?  r    r   r    r    r!   r     r   c                 S   s   dgS r?  r    r   r    r    r!   r     r   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   )r   rk   r   r>   r?   rm   )r   rC   resr    r    r!    test_frame_iloc_getitem_callable  s"    "z1TestILocCallable.test_frame_iloc_getitem_callablec                 C   sF  t ddddg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 )Nr   r   r*   rH   r:  r;  r   rO   r   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   zCTestILocCallable.test_frame_iloc_setitem_callable.<locals>.<lambda>r   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   rV   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   c                 S   s   dS r?  r    r   r    r    r!   r     r      c                 S   s   ddgS r>  r    r   r    r    r!   r     r   c                 S   s   dgS r?  r    r   r    r    r!   r     r   r   c                 S   s   dS r?  r    r   r    r    r!   r     r   c                 S   s   dgS r?  r    r   r    r    r!   r     r   r`   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   c                 S   s   ddgS r>  r    r   r    r    r!   r     r   )r   rk   r8   r   r>   r?   )r   rC   r@  r   r    r    r!    test_frame_iloc_setitem_callable  sR    "z1TestILocCallable.test_frame_iloc_setitem_callableN)r#   r$   r%   rA  rD  r    r    r    r!   r9    s   r9  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 st|jddddd	g }||jddddd	g }t	|| d S )
Nr`   r   rU   r   rO   r   r*   rH   rV   )r   r<   rj   rn   rk   r3   rv   r   rP   r>   r  r;   r   rm   r   r7   Zreindex)r   rS   irg   r   rE   r    r    r!   	test_iloc  s     
zTestILocSeries.test_ilocc                 C   s.   t dddgdddgd}|jd dks*td S )Nr   r   r   rO   )r   r   r7   )r   rS   r    r    r!   test_iloc_getitem_nonunique5  s    z*TestILocSeries.test_iloc_getitem_nonuniquec                 C   s\   t dddg}t dddgdddgd}|jdd |jdd< t dddg}t|| d S )	Nr   r   r*   rH   rV   ri   r   rO   )r   r   r>   rm   )r   Zser1Zser2rE   r    r    r!   r
  9  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)ry   r   r   ZInt64r,   )	r   r<   r   r   r=   r   r   r>   r?   r   r    r    r!   #test_iloc_nullable_int64_size_1_nanA  s    &z2TestILocSeries.test_iloc_nullable_int64_size_1_nanN)r#   r$   r%   rG  rH  r
  rJ  r    r    r    r!   rE    s   rE  )+r&  r   rewarningsr   r   Znumpyr<   r&   Zpandas.util._test_decoratorsutilZ_test_decoratorsr'  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   escaper*  r   r)   r)  r/  r9  rE  r    r    r    r!   <module>   s8   8        >/,V