o
    g̿                     @   s   d dl m Z mZ d dl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 d dlZd dl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  mZ  dZ!G dd dZ"G d	d
 d
Z#dd Z$dZ%dZ&G dd dZ'dS )    )datetime	timedeltaN)iNaT)
is_integer)
Categorical	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp
date_rangeisnanotnazBslice indices must be integers or None or have an __index__ methodc                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zejd1d2 Zd3d4 Zd5d6 Zd7d8 Z ejd9d: Z!d;d< Z"ejd=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2e3j45d]d^d_gd`da Z6dbdc Z7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>drds Z?dtdu Z@dvdw ZAdxdy ZBdzS ){TestDataFrameIndexingc                 C   s   |d d }t |jdksJ | D ]\}}t |jdks J t|j|js*J q|j D ]\}}|| d us<J q0d|vsCJ tjtdd |d  W d    d S 1 sZw   Y  d S )N   randommatch)	lenindexitemstmequalContents_seriespytestraisesKeyError)selffloat_framesl_serieskey r$   g/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_indexing.pytest_getitem$   s   
"z"TestDataFrameIndexing.test_getitemc                 C   s   |  }tjt||d< tjt|}||d< tjtt	dd |
d W d    n1 s4w   Y  |d }t||j d S )Nz$10z@awesome_domainz'df["$10"]'r   z	df["$10"])copynpr   randnr   r   r   r   reescape__getitem__r   assert_numpy_array_equalvalues)r   r   dfadresr$   r$   r%   test_getitem25   s   z#TestDataFrameIndexing.test_getitem2c                 C   s   d|d< |ddg }||ddg< t j|d |d dd t j|d |d dd d}tjt|d |ddg |dg< W d    n1 sEw   Y  tt|jd	 }d
t| dt| d}tjt|d ||d< W d    d S 1 sww   Y  d S )NfooEABFcheck_namesz"Columns must be same length as keyr      zLength of values \(z$\) does not match length of index \(z\))r   assert_series_equalr   r   
ValueErrorranger   r   )r   r   datamsgnewcolumndatar$   r$   r%   test_setitem_listC   s"   
"z'TestDataFrameIndexing.test_setitem_listc                 C   s   t dtdddgtjd}ddg|jdddgf< |j|jd ddgf }tddg|jtjdd}t	|| d	 |d< |d< d
dg|j|jd ddgf< |j|jd ddgf }td
dg|jdd}t	|| d S )Nr      tt1tt2)r   columnsdtyper9      )rE   name012rG   )
r   r<   r(   int_locr   r   rD   r   r:   r   r/   resultexpectedr$   r$   r%   test_setitem_list2W   s   z(TestDataFrameIndexing.test_setitem_list2c                    s  |j d }|j |k}|t}|j | }|| }t||j  tjtdd ||d d   W d    n1 s9w   Y  || }	t|	| tjtdd ||  W d    n1 s^w   Y  t	||j }|| }	t|	| t
t ||j d d d }|| }	t|	| W d    n1 sw   Y  |||fD ]X}
|
  |
|
dk }t fdd jD  j  jd	}|
jD ]}||vr|
| ||< q|j|
jd
}tj||dd |
jD ]}|| j|| jkr|| j|
| jksJ qqd S )N
   zItem wrong lengthr   zBoolean array expectedr   c                    s*   i | ]}|t  | d k | t jqS )r   )r(   wherenan).0cr=   r$   r%   
<dictcomp>   s   * z>TestDataFrameIndexing.test_getitem_boolean.<locals>.<dictcomp>r   rD   rD   F)check_dtype)r   astypeobjectr   assert_index_equalr   r   r;   assert_frame_equalr   assert_produces_warningUserWarningreindex_get_numeric_datar   rD   rE   )r   mixed_float_framemixed_int_framedatetime_framedindexerindexer_objsubindexsubframesubframe_objr/   bifbifwrW   r$   rX   r%   test_getitem_booleanf   sZ   






z*TestDataFrameIndexing.test_getitem_booleanc                 C   s@  |  }d|d< |d d|d< |d   |d< d|d< |d d|d< |d   |d< ||dk }|j}ttd	gd
 tdgd  tdgd  g dd}t|| d|j|j	dd ddgf< ||dk }|j}ttd	gd
 tdg td	g tdg td	g g dd}t|| d S )Nr9   r4   int32E1Fint64F1r   float64   rF   )r5   r6   CDr4   rr   rs   ru   r   rA   )
r'   r]   dtypesr   r(   rE   r   r:   rM   r   )r   rg   r/   castedrO   rP   r$   r$   r%   test_getitem_boolean_casting   sD   



z2TestDataFrameIndexing.test_getitem_boolean_castingc                    sJ   t tddd  fdd}|g d |g d |g d d S )	N   rA   rw   c                    s(    |  } j  j|   }t|| d S )N)rM   r   r   r`   )lstrO   rP   r/   r$   r%   _checkit   s   zATestDataFrameIndexing.test_getitem_boolean_list.<locals>._checkitTFT)TTT)FFF)r   r(   arangereshape)r   r   r$   r   r%   test_getitem_boolean_list   s
   z/TestDataFrameIndexing.test_getitem_boolean_listc                 C   s\   t jdd}t| g dd}||dk   d7  < ||dk   d7  < t|j| d S )N   )r5   r6   rx   ry   r4   r[   r   r9   )r(   r   r)   r   r'   r   assert_almost_equalr.   )r   arrr/   r$   r$   r%   test_getitem_boolean_iadd   s
   z/TestDataFrameIndexing.test_getitem_boolean_iaddc                 C   s>   t tddgdgtg d}tg t}||  d||< d S )Nr   r9   r5   rD   r   )r   r(   emptyr   arraybool)r   blahkr$   r$   r%   test_boolean_index_empty_corner   s   z5TestDataFrameIndexing.test_boolean_index_empty_cornerc                 C   s~   t tjddg dg dd}|jd d }|j|jd d  }t|| |jddg }|jt	ddg }t|| d S )	Nrw   rA   )r9   rR   rx   r4   r9   rF   rA   rZ   rS   r9   rR   )
r   r(   r   r)   ilocrM   r   r   r`   r	   rN   r$   r$   r%   test_getitem_ix_mixed_integer   s   z3TestDataFrameIndexing.test_getitem_ix_mixed_integerc                 C   s~   t dg dg dg ddg dd}|dg }|jd d dgf }t|| |d	g }|jd d d
gf }t|| d S )N)      ?g@g	@      @)      $   (   )rR      +   "   )r   rR   r      )rnar     r[   r   rA   r   r9   )r   r   r   r`   rN   r$   r$   r%   test_getitem_ix_mixed_integer2   s   
	
z4TestDataFrameIndexing.test_getitem_ix_mixed_integer2c                 C   sP   t |j|d  d}tjt|d |j W d    d S 1 s!w   Y  d S )Nr5   z6'DataFrame' object has no attribute 'NONEXISTENT_NAME'r   )r   r:   r5   r   r   AttributeErrorNONEXISTENT_NAME)r   r   r>   r$   r$   r%   test_getattr  s
   "z"TestDataFrameIndexing.test_getattrc                 C   s0   t dditdd}d|_|jdk sJ d S )Nfoobarr9   rR   rz   r   )r   r<   r   all)r   r/   r$   r$   r%   test_setattr_column
  s   z)TestDataFrameIndexing.test_setattr_columnc                 C   s  |d d d d }||d< d|v sJ t |dksJ t |dks#J tt|jtjgd f}t||jdd}t	|d | |d }||d< tj	||d dd	 tj
t |}||d
< |d
 |k sjJ d|d< |d dk sxJ d|d< |d dk sJ d|d< |d dk sJ |d d }d}tjtj|d ddg|d< W d    n1 sw   Y  |d jtjksJ |d ddgk sJ d S )Nr5   rF   col5   r   r   rG   col6Fr7   col9r   col7gQ	@col0r3   col8C\nA value is trying to be set on a copy of a slice from a DataFramer   rI   rJ   col10)r   r(   ravelcolumn_stackr.   rU   r   r   r   r:   r   r)   r   r   r   comSettingWithCopyErrorrE   object_)r   r   r"   expr   smallerr>   r$   r$   r%   test_setitem  s6   z"TestDataFrameIndexing.test_setitemc                 C   sb   t ddgg}tj|jd< t tjtjgg}t|| t ddgg}tj|jd< t|| d S )Nr   )r   r(   rU   r   r   r`   rM   r   r/   rP   r$   r$   r%   test_setitem2:  s   z#TestDataFrameIndexing.test_setitem2c                 C   s  |  }|j}d||d dk< d||d d df dk< t|j| |d dk}||jd d d }d||< d||d d df dk< t|j| d||dk< d||dk< t|j| d||dk< d||dk< t|j| d||d d dk < t|d d |d d dk d t|j| d||d d d dk< d||dk< t|j| d	}tj	t
|d
 d||d < W d    n1 sw   Y  |t|k}|  }tj||t|k< tj|j|j< t|| |  }|d ||t|k< t|j|j|jd  t|| d S )Nrw   r5   r   rS   r9   r   rF   rA   z;Must pass DataFrame or 2-d ndarray with boolean values onlyr   )r'   r.   r   r   rc   r   r(   putmaskr   r   	TypeErrorabsrU   r`   )r   r   r/   r.   r"   r>   maskrP   r$   r$   r%   test_setitem_booleanE  sF   "z*TestDataFrameIndexing.test_setitem_booleanc                 C   s  |d  d|d< |d jtjksJ d|d< |d jtjks!J tt||d< t|d jjtjs6J d|d< d|d< |d jtjksHJ d|d< d|d< |d jtj	ksZJ d|d< |d jtjkshJ d	|d< |d jtjksvJ d|d< |d jtj	ksJ d S )
Nry   i8r   r6   barr3         @	somethingrF   )
r]   rE   r(   rt   r   r   
issubclasstypeintegerrv   r   r   r$   r$   r%   test_setitem_castw  s$   z'TestDataFrameIndexing.test_setitem_castc                 C   sz  t g dg ddtdd}|d= g d|d< d|v sJ t|jdks(J d|d	< d
|d< d|d< d|t < d|t < t |jd}d
|d	< d|d< t|jdksWJ |jj	tj
ks`J d|d< |d j	tjksnJ d|d< |d j	tjks|J d|d	< d|d	 d ksJ t tdd}d|d	< d|d
< |d
= d|d
< |d
 j	tj
ksJ g d|d< |d j	tj
ksJ d S )N)      ?       @      @abrW   )r6   rx   rA   rz   r6   rF   	beginningr5   r3   r4   r   ry   date      @r9   rx   r   r   rI   rJ   3	coercible)r   r(   r   r   rD   r   nowr   r.   rE   r   rt   rv   )r   r   r/   dmr$   r$   r%   test_setitem_corner  s:    z)TestDataFrameIndexing.test_setitem_cornerc                 C   s   g ddgd  t jdd}t|}||d dk j}d|j|dgf< d|j|d	gf< |jd
 dks6J |jd dks?J d S )N)r   r   r   r      r   )titlecruftr   r   r   r   )r9   r   )r9   r   )r(   r   r   r   rM   )r   r=   r/   ixr$   r$   r%   test_setitem_corner2  s   
z*TestDataFrameIndexing.test_setitem_corner2c                    s   ddl m  ttdtdd}t fddtdD tdd}tg dtdd}td|d< t|jdks;J ||d	< t|jdksHJ ||d
< t|jdksUJ |d
 j	tj
ks_J d S )Nr   DecimalrA   rZ   c                    s   g | ]} d qS )r9   r$   )rV   r!   r   r$   r%   
<listcomp>  s    z<TestDataFrameIndexing.test_setitem_ambig.<locals>.<listcomp>rz   )r3   bzrbazr9   rF   )decimalr   r   r<   r   r(   onesr   rD   rE   r   )r   r   coercable_seriesuncoercable_seriesr$   r   r%   test_setitem_ambig  s   "z(TestDataFrameIndexing.test_setitem_ambigc                 C   st   |d |d < t j|jd d df |d dd t j|jd d d f |d dd t j|d  |d dd t| d S )Nr5   rS   Fr7   )r   r:   r   rM   reprr   r$   r$   r%   test_setitem_None  s   z'TestDataFrameIndexing.test_setitem_Nonec                 C   sJ   t g dg dg dd}| }|j|j|j df< t|| d S )Nr   )112233)111222333r   r   )r   r'   r   rM   r   r   r   r`   r   r/   rO   r$   r$   r%   &test_loc_setitem_boolean_mask_allfalse  s   z<TestDataFrameIndexing.test_loc_setitem_boolean_mask_allfalsec                 C   sV   t tjdd}|jd dd }tj|jd dd< t|jd dd j s)J d S )NrR   r      rF   )	r   r(   r   r)   r   rU   r   r.   r   r   r$   r$   r%   &test_getitem_fancy_slice_integers_step  s   "z<TestDataFrameIndexing.test_getitem_fancy_slice_integers_stepc                 C   sl  t tjddtdddd}| }d|jdd< |jdd dkj s(J | }d|jdd	< |jdd	 dkj sAJ |jdd
 }|j	dd	 }|
g d}t|| t|| |jttdttddd d d   }tjtdd |j	dd	  W d    n1 sw   Y  tjtdd d|j	dd	< W d    d S 1 sw   Y  d S )NrR   r   r   r   rF   rz   rw   rA   r      )rw   r   r   rR   rS   z^3$r   )r   r(   r   r)   r<   r'   r   r.   r   rM   rc   r   r`   listr   r   r   )r   r/   cprO   result2rP   df2r$   r$   r%   ,test_getitem_setitem_integer_slice_keyerrors  s&   *"zBTestDataFrameIndexing.test_getitem_setitem_integer_slice_keyerrorsc                 C   s   |j d d dd f }|d jtjksJ |j d d dd f }d}tjtj|d d|d< W d    n1 s9w   Y  |d dk sHJ d S )Nry   r   r         @rx   rw   )	r   rE   r(   rv   r   r   r   r   r   )r   r   float_string_frameslicedr>   r$   r$   r%   test_fancy_getitem_slice_mixed  s   
z4TestDataFrameIndexing.test_fancy_getitem_slice_mixedc                 C   s   t  }|jddg \}}|j|| }||| }|dd }t || t || | }d|j||< | }d|||< | }d|dd< t || t || d S )Nr   rR   r   r   )r   makeTimeDataFramer   rM   r`   r'   )r   r/   startendrO   r   rP   r$   r$   r%   "test_getitem_setitem_non_ix_labels)  s   z8TestDataFrameIndexing.test_getitem_setitem_non_ix_labelsc                 C   sF   t tjdd}|j|jdkd d f }|dg}t|| d S )NrA   rF   r   )	r   r(   r   r)   rM   r   rc   r   r`   )r   r/   rsxpr$   r$   r%   test_ix_multi_take=  s
   z(TestDataFrameIndexing.test_ix_multi_takec                 C   sP   |}|j }|jD ]}|| }|jd d d D ]}|||f || ks$J qqd S Nr   )rM   rD   r   )r   r   fr   coltsidxr$   r$   r%   test_getitem_fancy_scalarK  s   
z/TestDataFrameIndexing.test_getitem_fancy_scalarc                 C   s   |}|  }|j}t|jD ]1\}}|| }|jd d d D ] }|j|}	tj }
|
|j	|	|f< |
|||f< t
|| qqd S r  )r'   rM   	enumeraterD   r   get_locr(   r   r)   r.   r   r`   )r   r   r  rP   r   jr  r	  r
  ivalr$   r$   r%   test_setitem_fancy_scalarU  s   
z/TestDataFrameIndexing.test_setitem_fancy_scalarc                 C   s  |}|j }|jddgd}|d d g df }t|| |j|jdd ddgd}||jdd g df }t|| |j|jd k}|j|j| d	}|| }t|| ||d d f }t|| |||jd
d  f }|j|j| ddgd}t|| d S )Nr6   ry   r[   )FTFTr   rR   rZ      rz   rF   rx   )rM   rc   r   r`   r   rD   )r   r   r  r   rP   rO   boolvecr$   r$   r%   test_getitem_fancy_booleanf  s"   z0TestDataFrameIndexing.test_getitem_fancy_booleanc                 C   s   |  }|  }|d dk}d|j|< d|j|j< t|| |  }|  }d|j|ddgf< d|j|jd df< t|| d S )Nr5   r           r6   rF   )r'   rM   r.   r   r`   )r   r   framerP   r   r$   r$   r%   test_setitem_fancy_boolean}  s   
z0TestDataFrameIndexing.test_setitem_fancy_booleanc                 C   sp   |j g d }|j|jg d  }t|| |j d d g df }|jd d |jg d f }t|| d S )N)r9   rw   r  )rF   r   r9   )r   rM   r   r   r`   rD   )r   r   rO   rP   r$   r$   r%   test_getitem_fancy_ints  s   z-TestDataFrameIndexing.test_getitem_fancy_intsc                 C   st   |d d d d dk}|j | }|j |d d d  }t|| | }| }d|j |< d|j |< t|| d S )Nr5   rS   r9   r   )rM   r   r`   r'   )r   r   r   rO   rP   r   r$   r$   r%   'test_getitem_setitem_boolean_misaligned  s   


z=TestDataFrameIndexing.test_getitem_setitem_boolean_misalignedc                 C   s   t tjdd}tg d}tddg}|j||f }|jddgdgf }t|| | }d|jtg dtddgf< d|jddgdgf< t|| d S )	NrA   rF   r   FTr   r9   r   )	r   r(   r   r)   r   rM   r   r`   r'   )r   r/   k1k2rO   rP   r$   r$   r%   "test_getitem_setitem_boolean_multi  s   "z8TestDataFrameIndexing.test_getitem_setitem_boolean_multic                 C   s  t g d}ttjdd|d}|jdd }|g d}t|| t	|dks-J |jdd }|ddg}tj||dd t	|d	ksKJ |jdd }|d
dg}t|| t	|d	ksgJ |jdd	 }|j
dd	 }t|| d|jdd	< |dd	 }|dk  sJ t g d}ttjdd|d}d}tjt|d |j
dd  W d    n1 sw   Y  |j
dd }|dg}t|| t	|dksJ | }tjttd d|j
dd< W d    n1 sw   Y  tjt|d |j
dd dk}W d    n	1 sw   Y  |j s)J |j
dd |j
dd kj s=J | }d|j
dd< |j
dd dkj sWJ |j
dd |j
dd kj skJ |jdd }|}t|| t	|dksJ |jdd }|g d}t|| t	|dksJ |jdd }|dg}t|| t	|dksJ |jdd }|g d}t|| t	|dksJ | }d|jdd< |jdd }|dkj sJ d S )N)r   rF   rA   rw   r   r   rz   r   rw   )r   rF   rA   rw   F)check_index_typerF   r   r   r9   r   )r   r         @r   r   zWcannot do positional indexing on Float64Index with these indexers \[1.0\] of type floatr   r   g?)r   r  r   r   g
ףp=
@)r	   r   r(   r   r)   rM   rc   r   r`   r   r   r   r   r   r   r'   
_slice_msgr.   )r   r   r/   rO   rP   r>   r   r$   r$   r%   !test_getitem_setitem_float_labels  s   ((z7TestDataFrameIndexing.test_getitem_setitem_float_labelsc                 C   s   t tjddg dg dd}td|d< |j}ttdgd td	g g d
d}t	|| t
|jd< t|jd rAJ |d jtjksKJ |jd t
ksTJ tj|jd< t|jd scJ tj|jdd d f< t|jdd d f  r|J d S )Nr   rA   )r   r   rW   rh   e)r3   r   r   rZ   20010102	timestamprv   datetime64[ns])r3   r   r   r#  rz   )r   r#  )rW   r#  rh   rW   )r   r(   r   r)   r   r{   r   rE   r   r:   r   rM   r   r   rU   r   rN   r$   r$   r%   )test_setitem_single_column_mixed_datetime  s(   
"z?TestDataFrameIndexing.test_setitem_single_column_mixed_datetimec                 C   s   t g dtddddddtdddtdddgd}t d	td
tdd}tj|d< tddd|jd< d|jd< d|jddgdf< tdt	dgdt	dgg}||jddgddgf< t
|| d S )N)r   r   r   r         i  r9   xyi  i  r   r   r   abr   r   r   r   r   )r9   r   )r(  r)  rF   rA   r&  z2013-01-01T00:00:00r'  z2014-01-01T00:00:00rw   r   r   )r   r   r   r<   pdNaTrM   r(   r   
datetime64r   r`   )r   rP   r/   r5   r$   r$   r%   test_setitem_mixed_datetime0  s.   




z1TestDataFrameIndexing.test_setitem_mixed_datetimec                 C   sn   |j |jd d ddgf }|j|j |jd d ddgf< |j |jdd  ddgf j}|j}t|| d S NrF   r5   r6   )rM   r   r.   r   r   r   r   piecerO   rP   r$   r$   r%   test_setitem_frame_floatM  s
   z.TestDataFrameIndexing.test_setitem_frame_floatc                 C   s~   |  }tddgddgg|jdd ddgd	}|jtd d ddgf}||j|< t|j|jdd ddgf j|j d S )
Nr   r   r   r   r   rF   r5   r6   rZ   )r'   r   r   slicerM   r   r   r.   r   r   r  r4  r#   r$   r$   r%   test_setitem_frame_mixedT  s    
,z.TestDataFrameIndexing.test_setitem_frame_mixedc                 C   s   |  }tddgddgddgddggt|jd	d
 ddg ddgd}|jtd d
 ddgf}||j|< t|j|jd	d
 ddgf j|jd	d
  d S )Nr   r   r   r   r   g      @g      @g       @r   rF   r3   r   r5   r6   rZ   )	r'   r   r   r   r6  rM   r   r   r.   r7  r$   r$   r%   'test_setitem_frame_mixed_rows_unaligned`  s   
(z=TestDataFrameIndexing.test_setitem_frame_mixed_rows_unalignedc                 C   s   |  }|j|jd d dgf }|jdd  |_|jtdd  ddgf}||j|< tj|d< t|j|jdd  ddgf j|j d S )NrF   r5   r2  r6   )	r'   rM   r   r6  r(   rU   r   r   r.   r7  r$   r$   r%   &test_setitem_frame_mixed_key_unalignedn  s   

,z<TestDataFrameIndexing.test_setitem_frame_mixed_key_unalignedc                 C   st   |  }|j|jd d ddgf }|jtdd  ddgf}|j|j|< t|j|jdd  ddgf j|j d S r1  )r'   rM   r   r6  r.   r   r   r7  r$   r$   r%    test_setitem_frame_mixed_ndarrayx  s
   ,z6TestDataFrameIndexing.test_setitem_frame_mixed_ndarrayc                 C   s   t g dg dgg dd}| }|jd d ddgf d |jd d ddgf< |jddgd}|d7 }|d |d< t|| d S )	N)r9   rF   r3   )rA   rw   r   r5   r6   rx   r[   r5   r6         ?rx   )r   r'   rM   rc   r   r`   )r   r/   r   rP   r$   r$   r%   test_setitem_frame_upcast  s   ,z/TestDataFrameIndexing.test_setitem_frame_upcastc                 C   s   |j |jd d ddgf }|jdd  |_ddg|_||j |jdd  ddgf< |j |jdd  ddgf j}|j}t|| d S r1  )rM   r   rD   r.   r   r   r3  r$   r$   r%   test_setitem_frame_align  s   
z.TestDataFrameIndexing.test_setitem_frame_alignc                 C   s   t tjddg dd}|jd }|d d }t|| |jd }|jddg }t|| |jd	 }|jd }t|| d S )
Nr   rA   r3   r3   r   r   r   rz   r3   rF   r   rw   r   )	r   r(   r   r)   rM   r   r`   r   r:   rN   r$   r$   r%   "test_getitem_setitem_ix_duplicates  s   



z8TestDataFrameIndexing.test_getitem_setitem_ix_duplicatesc                 C   s   t tjddg dd}|jdg }|jddg }t|| |j|d d	k }||d d	k }t|| |j|d	 d	k }||d	 d	k }t|| d S )
Nr   rA   r@  rz   r   rF   rw   r9   r   )r   r(   r   r)   rM   r   r   r`   )r   r/   rO   r   r$   r$   r%   +test_getitem_ix_boolean_duplicates_multiple  s   zATestDataFrameIndexing.test_getitem_ix_boolean_duplicates_multiple
bool_valueTFc                 C   s   t dg di}| d}tjt|d |j|  W d    n1 s$w   Y  d}tjt|d d|j|< W d    d S 1 sCw   Y  d S )Nr   r   z7: boolean label can not be used without a boolean indexr   z.cannot use a single bool to index into setitemr   )r   r   r   r   rM   )r   rC  r/   messager>   r$   r$   r%   %test_getitem_setitem_ix_bool_keyerror  s   
"z;TestDataFrameIndexing.test_getitem_setitem_ix_bool_keyerrorc                 C   s   d|d< t |d jjttjfsJ |j|jd df }t|s"J t	ddgi}d|d< |jd }t|s8J t
dgd	gdd
}|jd	gdf }t|| d S )Nr9   r4   r   r   gGz?i  r   r,  r   rK   )r   rE   r   intr(   r   rM   r   r   r   r   r   r:   )r   r   rO   r/   rP   r$   r$   r%   "test_single_element_ix_dont_upcast  s   
z8TestDataFrameIndexing.test_single_element_ix_dont_upcastc                 C   s   t tjddtdddd}|jd }|jd }t|| |jd }|jd }t|| |jt	dd }|jdd	 }t
|| |jg d
 }||jg d
 }t
|| d S )NrR   rw   r   r   rF   rz   r9   r   r'  r9   rF   rw   r   )r   r(   r   r)   r<   r   rM   r   r:   r6  r`   rc   r   r   r/   rO   r   rP   r$   r$   r%   test_iloc_row  s   



z#TestDataFrameIndexing.test_iloc_rowc                 C   s   t tjddtdddd}| }|jtdd }d}tj	t
j|d	 d
|d< W d    n1 s4w   Y  |d  }|sGd
|dd< t|d | d S )NrR   rw   r   r   rF   rz   r   r   r   r  )r   r(   r   r)   r<   r'   r   r6  r   r   r   r   r   r:   )r   using_array_managerr/   originalsubsetr>   exp_colr$   r$   r%   test_iloc_row_slice_view  s   
z.TestDataFrameIndexing.test_iloc_row_slice_viewc                 C   s   t tjddtdddd}|jd d df }|jd d df }t|| |jd d df }|jd d df }t|| |jd d t	ddf }|jd d dd	f }t
|| |jd d g d
f }|j|jg d
 d}t
|| d S )Nrw   rR   r   r   rF   r[   r9   r   r'  rH  )r   r(   r   r)   r<   r   rM   r   r:   r6  r`   rc   rD   rI  r$   r$   r%   test_iloc_col  s   z#TestDataFrameIndexing.test_iloc_colc                 C   s   t tjddtdddd}| }|jd d tddf }|sKd}tj	t
j|d	 d
|d< W d    n1 s:w   Y  |d dk sIJ d S d
|d< |d dk sYJ t|| d S )Nrw   rR   r   r   rF   r[   r   r   r   r  )r   r(   r   r)   r<   r'   r   r6  r   r   r   r   r   r   r`   )r   rK  r/   rL  rM  r>   r$   r$   r%   test_iloc_col_slice_view  s   
z.TestDataFrameIndexing.test_iloc_col_slice_viewc                 C   s   t tddddtddddd}|jdtddddd}td|dd	gd
}tg d}d|j|| df< tg dg dd|d}t|| td|dd	gd
}|j|| df  d7  < t|| d S )Ni  r9   )yearmonthdayr   )r   r  )rM   itemr   r5   r6   rZ   )FFFFFTr   )r   r   r   r   r   r   )r   r   r   r   r   r   )r5   r6   rz   )	r   r   insertr   r(   r   rM   r   r`   )r   tranger/   bool_idxrP   r$   r$   r%   test_loc_duplicates$  s   z)TestDataFrameIndexing.test_loc_duplicatesc                 C   s|   t tdddddd}td|i}|g d |d< t|d | td|i}|g d |jg ddf< t|d | d S )	Nz
2015-01-01rA   utc)periodstzdatesrK   )r9   r   rF   )r   r9   rF   )r   r   r   r   r:   rM   )r   columnr/   r$   r$   r%   4test_setitem_with_unaligned_tz_aware_datetime_column?  s   zJTestDataFrameIndexing.test_setitem_with_unaligned_tz_aware_datetime_columnc                 C   s  t dd}ttdddd}tjd| gd dd|d	< tjd
| gd dd|jd d df< tjd| gd dd|j|jd d df< tjd| gd dd|jd d df< tjd| gd dd|j|jd d df< td|d< tjd| gd dd|j|jd d df< tddd|j|jd d df< td|d< |j	}t
tdgd tdgd
  tdd}t|| d S )Nr9   )hours20130101rw   r[  rz   m8[ns])rE   r5   rF   r6   rA   rx   ry   r   r4   r.  rs   r   rS   r   GHztimedelta64[ns]r$  ABCDEFGH)r   r   r   r(   r   rM   r   timedelta64r/  r{   r   rE   r   r   r:   )r   one_hourr/   rO   rP   r$   r$   r%   ,test_loc_setitem_datetimelike_with_inferenceL  s"   
&,&,, zBTestDataFrameIndexing.test_loc_setitem_datetimelike_with_inferencec                 C   s"  t tjtjtjtjtjdtjdtjdddtjtjdtjtjdtjtjtjtjtjddtjtjtjtjdddddddd}| }d||d	k< | }d|jd
< d|jd< d|jd< d|jd< t|| d|d< d}tjt	|d d||d	k< W d    d S 1 sw   Y  d S )N)#   r   r   1   2   gjBz?g% t?gk?g?r   r9   )r   r9   rF   rA   rw   r)  g333333?)r   r9   )rk  r9   )rl  r9   )rj  rw   testr3   z1not supported between instances|unorderable typesr   )
r   r(   rU   r'   rM   r   r`   r   r   r   )r   r/   r   rP   r>   r$   r$   r%   #test_getitem_boolean_indexing_mixedb  sJ   



"z9TestDataFrameIndexing.test_getitem_boolean_indexing_mixedc                 C   s2  t g dg dg dg dg dgd}|jddd	d
gd}tjtdd |d d df  W d    n1 s8w   Y  ttddd}td	d
gddggddgddggd dgd}t ddgddgg||d}|jd d t	d dff }t
|| d}ttddd}tddg||d}|d }t
|| d S )N)r  rW   r(  r)  )r   r   r9   rF   )r9   r   rA   rw   )r   r9   r9   rF   )r9   r9   rA   rw   )rD   r=   r  rW   r(  r)  )r   rD   r.   zunhashable typer   r   rF   rK   r9   )levelscodesnamesrA   rw   r   )r(  r   r   )r   pivot_tabler   r   r   r	   r<   r
   rM   r6  r   r`   r   r:   )r   r/   dgr   rD   rP   rO   rG   r$   r$   r%   test_type_error_multiindex  s(   "z0TestDataFrameIndexing.test_type_error_multiindexc                 C   sh   t tdtjtdd}|jd d df }|d }t	|| |j
d d df }t	|| d S )N)rA   rw   r   r[   r   r=  )r   r(   r   r-  IntervalIndexfrom_breaksr   r   r   r:   rM   )r   r/   rP   r1   r$   r$   r%   ,test_getitem_interval_index_partial_indexing  s   zBTestDataFrameIndexing.test_getitem_interval_index_partial_indexingc                 C   sZ   t ddgtd}tdtdd|jd< t tdgtdgd}t|| d S )Nr   r   )rD   rE   )rF   )rF   rF   r*  r   )r   r^   r(   zerosrM   r   r`   r   r$   r$   r%    test_setitem_array_as_cell_value  s   z6TestDataFrameIndexing.test_setitem_array_as_cell_valueN)C__name__
__module____qualname__r&   r2   r@   rQ   rp   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   tdskip_array_manager_invalid_testr   r  r  r  r  r  r  r  r  r  r   r%  r0  r5  r8  r9  r:  r;  r>  r?  rA  rB  r   markparametrizerE  rG  rJ  rO  rP  rQ  rY  r_  ri  rn  rt  rw  ry  r$   r$   r$   r%   r   #   s    <#

*2*




	W%

	
.r   c                   @   s   e Zd Zdd ZdS )TestDataFrameIndexingUInt64c              	   C   s   |}|d  d}d|jvsJ ||d< t|d t|dd d|jvs'J d|d< ||d< t|d t|dd |d= | }tj|jd< tj|jd< |d }tt	|tg d	dd t|j
ttd
tdtdgg dd d S )Nr5   r3   rx   rK   ry   )r9   r9   )r9   rF   r6   r   uint64Or<  rz   )renamerD   r   r:   r   r'   r-  r.  r   r   r{   r(   rE   )r   uint64_framer/   r
  r   rO   r$   r$   r%   r     s,   z(TestDataFrameIndexingUInt64.test_setitemN)rz  r{  r|  r   r$   r$   r$   r%   r    s    r  c                 C   s~  t ddgtdddtjdddd}|jd }t|jd ts"J t|jd tjs-J |j	d }t|jd ts<J t|jd tjsGJ |j
ddd}t|jd tsXJ t|jd tjscJ | rgd S |j}|  |d}t|d ts|J t|d tjsJ |j|jd  }|jd	ksJ |d
}t|tsJ |j|jd  }|jdksJ |d
}t|tjsJ d S )Nr9   rF   2000rb  z1 Dayr<  r   )axiszM8[ns])r   r   rc  )r   r   r-  timedelta_rangerM   
isinstancer.   r   	Timedeltar   xs_mgr_rebuild_blknos_and_blklocsfast_xsblocksblknosrE   iget)rK  r/   sermgrr   blkr  r$   r$   r%   /test_object_casting_indexing_wraps_datetimelike  s<   





r  zMCannot setitem on a Categorical with a new category, set the categories firstzCCannot set a Categorical with another, without identical categoriesc                   @   s  e Zd Zejdd Zejdd Zejdd Zejdd Zejd	d
 Z	ej
dejejgdd Zej
dejejejejgdd Zej
dejejgdd Zej
dejejgdd Zej
dejejgdd Zej
dejejgdd ZdS )TestLocILocDataFrameCategoricalc                 C   >   t g dddgd}tg d}g d}t||d|d}|S )	N)r   r   r   r   r   r   r   r   r   
categorieshr  r  r   lmnr9   r9   r9   r9   r9   r9   r9   catsr.   rz   r   r	   r   )r   r  r
  r.   origr$   r$   r%   r    s
   z$TestLocILocDataFrameCategorical.origc                 C   r  )	Nr   r   r   r   r   r   r   r   r   r  r  )r9   r9   rF   r9   r9   r9   r9   r  rz   r  )r   cats1idx1values1exp_single_rowr$   r$   r%   r    
   z.TestLocILocDataFrameCategorical.exp_single_rowc                 C   r  )	Nr   r   r   r   r   r   r   r   r   r  r  )r9   r9   rF   rF   r9   r9   r9   r  rz   r  )r   cats2idx2values2exp_multi_rowr$   r$   r%   r  #  s
   z-TestLocILocDataFrameCategorical.exp_multi_rowc                 C   r  )	Nr  r   r   r  r  r  r  rz   r  )r   cats3idx3values3exp_parts_cats_colr$   r$   r%   r  -  r  z2TestLocILocDataFrameCategorical.exp_parts_cats_colc                 C   r  )	Nr  r   r   r  r  r  r  rz   r  )r   cats4idx4values4exp_single_cats_valuer$   r$   r%   r  6  s   
z5TestLocILocDataFrameCategorical.exp_single_cats_valueri   c                 C   s   |  }tdd}|tju rtdd}ddgddgg|||d d f< t|| |  }tjttd ddgddgg|||d d f< W d    d S 1 sPw   Y  d S )NrF   rw   r  r   r   r   rW   )	r'   r6  r   rM   r`   r   r   r;   msg1)r   r  r  ri   r/   r#   r$   r$   r%   #test_loc_iloc_setitem_list_of_listsA  s   


 ""zCTestLocILocDataFrameCategorical.test_loc_iloc_setitem_list_of_listsc                 C   s   |  }d}|tjtjfv r|jd |jd f}d|||< t|| tjt	t
d d|||< W d    d S 1 s=w   Y  d S )N)rF   r   rF   r   r   r   rW   )r'   r   rM   atr   rD   r`   r   r   r;   r  )r   r  r  ri   r/   r#   r$   r$   r%   7test_loc_iloc_at_iat_setitem_single_value_in_categoriesQ  s   "zWTestLocILocDataFrameCategorical.test_loc_iloc_at_iat_setitem_single_value_in_categoriesc                 C   sJ   |  }|jdk}d}|tju r|j| }d||||f< t|| d S )Nr  r   r   )r'   r   r   rM   rD   r`   )r   r  r  ri   r/   r   r#   r$   r$   r%   5test_loc_iloc_setitem_mask_single_value_in_categoriesd  s   


zUTestLocILocDataFrameCategorical.test_loc_iloc_setitem_mask_single_value_in_categoriesc                 C   s   |  }d}|tju r|jd }ddg|||d d f< t|| tjttd ddg|||d d f< W d    d S 1 sAw   Y  d S )NrF   r   r   rW   )	r'   r   rM   r   r`   r   r   r;   r  )r   r  r  ri   r/   r#   r$   r$   r%   2test_loc_iloc_setitem_full_row_non_categorical_rhss  s   

"zRTestLocILocDataFrameCategorical.test_loc_iloc_setitem_full_row_non_categorical_rhsc           	      C   s  |  }tdddf}|tju rtdd|jd f}tddgddgd}||||< t|| ttd	td
d}tj	t
td ||||< W d    n1 sRw   Y  ttdtd
d}tj	t
td ||||< W d    d S 1 szw   Y  d S )NrF   rw   r   r  r   r   r   r  bbabcr   cc)r'   r6  r   rM   rD   r   r`   r   r   r   r;   msg2)	r   r  r  ri   r/   r#   compatsemi_compatincompatr$   r$   r%   1test_loc_iloc_setitem_partial_col_categorical_rhs  s   
"zQTestLocILocDataFrameCategorical.test_loc_iloc_setitem_partial_col_categorical_rhsc                 C   s   |  }tdddf}|tju rtdd|jd f}ddg|||< t|| tjtt	d ddg|||< W d    d S 1 sCw   Y  d S )	NrF   rw   r   r  r   r   r   rW   )
r'   r6  r   rM   rD   r`   r   r   r;   r  )r   r  r  ri   r/   r#   r$   r$   r%   )test_loc_iloc_setitem_non_categorical_rhs  s   
"zITestLocILocDataFrameCategorical.test_loc_iloc_setitem_non_categorical_rhsN)rz  r{  r|  r   fixturer  r  r  r  r  r  r  r   rM   r   r  r  iatr  r  r  r  r  r$   r$   r$   r%   r    s.    


	







r  )(r   r   r*   numpyr(   r   pandas._libsr   pandas.util._test_decoratorsutil_test_decoratorsr}  pandas.core.dtypes.commonr   pandasr-  r   r   r   r	   r
   r   r   r   r   r   pandas._testing_testingr   pandas.core.commoncorecommonr   r  r   r  r  r  r  r  r$   r$   r$   r%   <module>   s6    0         '!+