U
    f/eu                 	   @   s  d Z ddlmZ ddlmZmZmZmZ ddlmZ ddl	Z	ddl
mZ ddlZddlZddlm  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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+ 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Z0G dd dZ1G dd dZ2G dd de+Z3G dd dZ4G dd dZ5ej67ddd d!gdd gdd"gfdd d#gdd gdd"gfdd d#gdd#gdd$gfgd%d& Z8d'd( Z9d)d* Z:d+d, Z;d-d. Z<d/d0 Z=d1d2 Z>d3d4 Z?d5d6 Z@G d7d8 d8ZAdS )9z$ test label based indexing with loc     )
namedtuple)datedatetimetime	timedelta)StringION)gettz)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndex
IndexSlice
MultiIndexPeriodSeriesSparseDtype	Timedelta	Timestamp
date_rangetimedelta_rangeto_datetimeto_timedelta)	is_scalar)Basec                   @   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S )TestLocc                 C   s   | j dddgtd d S )Nloc   labelstypsfailscheck_resultKeyErrorself r'   B/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/indexing/test_loc.pytest_loc_getitem_int+   s    zTestLoc.test_loc_getitem_intc                 C   s   | j dddgtd d S )Nr   cemptyr   r"   r%   r'   r'   r(   test_loc_getitem_label0   s    zTestLoc.test_loc_getitem_labelc                 C   s   | j dddddddgtd | j ddd	gtd | j ddd	gtd | j dd
dddgtd | j dd
dgtd | j dd
dgdtd | j dd
d	gdtd d S )Nr   fintsuintsr   mixedtsr   floats   r   r    Zaxesr!   r"   r%   r'   r'   r(   #test_loc_getitem_label_out_of_range5   s       z+TestLoc.test_loc_getitem_label_out_of_rangec                 C   s@   | j ddddgdddgtd | j ddd	d
gdddgtd d S )Nr   r      r   r.   r/   r2   r         @Ar"   r%   r'   r'   r(   test_loc_getitem_label_listB   s          z#TestLoc.test_loc_getitem_label_listc                 C   sz   | j ddddgdgtd | j ddddgdd	d
gdtd | j ddddgdd	d
gdtd | j ddddgdgdtd d S )Nr   r   r6   r   r+   r   
   r.   r/   r2   r4            )r6   r;   )r6      )r      Zmultir"   r%   r'   r'   r(   (test_loc_getitem_label_list_with_missingK   s,                z0TestLoc.test_loc_getitem_label_list_with_missingc                 C   s"   | j ddddgddgdtd d S )	Nr   r3      (   r.   r/   r6   r4   r"   r%   r'   r'   r(   !test_loc_getitem_label_list_failsZ   s        z)TestLoc.test_loc_getitem_label_list_failsc                 C   s   d S Nr'   r%   r'   r'   r(   !test_loc_getitem_label_array_like`   s    z)TestLoc.test_loc_getitem_label_array_likec                 C   s$   ddddg}| j d|dgtd d S )NTFr   r+   r   )r#   
IndexError)r&   br'   r'   r(   test_loc_getitem_boole   s    zTestLoc.test_loc_getitem_boolc                 C   s   | j dtdddddddgtd	 | j dtd
ddgdtd | j dtdddgdtd | j dtdddgdtd | j dtddddgdtd d S )Nr   r6   r;   r   r0   r+   r1   r2   r   Z20130102Z20130104r4   r      r   r>   )r#   slice	TypeErrorr$   r%   r'   r'   r(   test_loc_getitem_label_slicek   s,         
   z$TestLoc.test_loc_getitem_label_slicec                 C   st   t ddgddgddggddgdddgd}td	|jd
< t ddgddgddggddgdddgd}t|| d S )Nr3   a   col1col2r:   r6   columnsindexr   )r6   rO   r   )r   nparanger   tmassert_frame_equalr&   dfexpectedr'   r'   r(    test_setitem_from_duplicate_axis   s      z(TestLoc.test_setitem_from_duplicate_axisN)__name__
__module____qualname__r)   r,   r5   r9   r@   rC   rE   rH   rL   r[   r'   r'   r'   r(   r   *   s   	r   c                   @   s  e Zd Zejddedddffdedddffdeddd	ffd
ededdffdedddffdeddedffdedd	dffgdd Z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d#d$d#d$ggd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zejd1d2 Zejd3d4ejd4ejd5ejd4d4d4d4d4gejd5gd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZejdBdCdDdEdFdGdHdIdJgdKdL Z dMdN Z!dOdP Z"dQdR Z#dSdT Z$e%j&dUdV Z'dWdX Z(dYdZ Z)d[d\ Z*d]d^ Z+ejd_d`ge,dad`daed`ggejdbdcgedcggddde Z-ejdfd4dggd`dhdidEgfdje.djdjdjdjgdkdlej/ej/gdjdjdjdjggd`dhdidEgdmfdndidEgfdjdoge.dndgej/ej/gdkdldjdogdpdqej/ej/ggd`dhdidEgdmfdnd`dhdigfejdjdodrgejd5e.dndgej/gdjdodrgdpdqej/ggd`dhdigdmfe,dndkdadhdidEgfdjdodrgdsdtdugge.dndgej/ej/gdkdjdodrgdpdsdtduggd`dhdidEgdmfe,dndkdadid`dEgfejdjdodrgdsdtduggejd5e.dndgej/ej/gdodldjdrgdtdqdsduggd`dhdidEgdmfe,dadadad`digfe.djdogdrdsgdtduggd`digdme.djdgdogdrdldsgdtdqduggd`dhdigdmfgdvdw Z0dxdy Z1dzd{ Z2d|d} Z3ejj4d~d Z5dd Z6dd Z7dd Z8ejj9dddd Z:dd Z;dd Z<dd Z=dd Z>dd Z?e%j&dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEejddddgejdejejFeGge%jHdd ZIdd ZJe%jHdd ZKdd ZLejdeMejeNeOgdd ZPdd ZQejddeNdngfdeNdggfgdd ZRdd ZSejdd4ddndgdkdldpdqdjdodrg
fe,dldod4dndgdkdddddodrg
fdkdpgd4dndgddlddqdjdodrg
fgdd ZTdd ZUdd ZVdd ZWejdddggddƄ ZXddȄ ZYejdd`d`gd`e,dafgdd˄ ZZdd̈́ Z[ddτ Z\ddф Z]ddӄ Z^ddՄ Z_ejdddgddڄ Z`dd܄ Zaddބ Zbdd Zcdd ZddaS )TestLoc2zmsg, keyz'Period\('2019', 'A-DEC'\), 'foo', 'bar'  foobarz&Period\('2019', 'A-DEC'\), 'y1', 'bar'y1z&Period\('2019', 'A-DEC'\), 'foo', 'z1'z1z;Period\('2018', 'A-DEC'\), Period\('2016', 'A-DEC'\), 'bar'    z&Period\('2018', 'A-DEC'\), 'foo', 'y1'z;Period\('2017', 'A-DEC'\), 'foo', Period\('2015', 'A-DEC'\)    z&Period\('2017', 'A-DEC'\), 'z1', 'bar'c              	   C   sz   t tdddgtdtddgtddtd	gd
ddgdddgddddg}tjt|d |j|  W 5 Q R X dS )a  
        parse_time_string return parameter if type not matched.
        PeriodIndex.get_loc takes returned value from parse_time_string as a tuple.
        If first argument is Period and a tuple has 3 items,
        process go on not raise exception
        r`   x1Zx2re   rf   rc   rg   rd   rh   r6   r   r;   r:   r3   rA   )r8   BCZV1ZV2r8   rj   rk   matchN)r   r   	set_indexpytestraisesr$   r   )r&   msgkeyrY   r'   r'   r(   ;test_contains_raise_error_if_period_index_is_in_multi_index   s    	zDTestLoc2.test_contains_raise_error_if_period_index_is_in_multi_indexc              	   C   s>   t ddgi}tjtdd |jd d df  W 5 Q R X d S )NrM   r6   u   אrl   )r   ro   rp   r$   r   r&   rY   r'   r'   r(   $test_loc_getitem_missing_unicode_key   s    z-TestLoc2.test_loc_getitem_missing_unicode_keyc                 C   sT   t tjddd tdD d}|jd }|jd d df jd }t|| d S )	N)r3   r?   c                 S   s   g | ]}d |d  qS )ZABCDEr?   r'   .0xr'   r'   r(   
<listcomp>   s     z2TestLoc2.test_loc_getitem_dups.<locals>.<listcomp>r3   rS   )r8   r   r   r8   )r   rT   randomZrandom_sampleranger   rV   assert_series_equalr&   rY   rZ   resultr'   r'   r(   test_loc_getitem_dups   s    
 
zTestLoc2.test_loc_getitem_dupsc                 C   s   t ddddtdggdddddgdgd}tddddtdgdddddgdd}|jd	 }t|| |jd }t|| d S )
Nr6   r   ra   rb   20130101rM   rQ   rS   namer   )r   r   r   ilocrV   r}   r   r~   r'   r'   r(   test_loc_getitem_dups2   s    

zTestLoc2.test_loc_getitem_dups2c                 C   s  t tdtdtjdddd d tjdddd d d	d
}dddgf}| }|j|  d9  < t|j| d|j|   d}| }|j|  d9  < |j| d|j|  kst	dddgf}| }|j|  d9  < t
|j| d|j|   d S )NZrtttiZaaader?   float64dtypegq=
ףp?r   g(\տ)mera   rb   bar2r   rrb   r          @)r   rb   t)r   listrT   rU   rn   copyr   rV   r}   AssertionErrorrW   )r&   Zdf_origindexerrY   r'   r'   r(   test_loc_setitem_dups   s2    
zTestLoc2.test_loc_setitem_dupsc                 C   s   t dddgtdddgddd}|d	 dk}|j|d
f d }||j|d
f< t dddgtdddgddd}t|| t dddgdddgddd}|d	 dk}|j|d
f }||j|d
f< t dddgdddgddd}t|| d S )Nr   r6   d   rN   i,  Zuint32r   rM   rG   rM   rG      i-  uint64)r   r   r   rV   rW   )r&   Zdf1ixZnewb1rZ   df2Znewb2r'   r'   r(   test_loc_setitem_slice  s    "zTestLoc2.test_loc_setitem_slicec                 C   s   t dgdgdgdgd}dddg}|jd d |f d	|jd d |f< t dgtjdgd	d
tjdgd	d
tjdgd	d
d}t|| d S )Nr8   333333?        g      )idrM   rG   r*   rM   rG   r*   Zfloat32r   )r   r   astyperT   arrayrV   rW   )r&   rY   colsrZ   r'   r'   r(   test_loc_setitem_dtype  s    
&	zTestLoc2.test_loc_setitem_dtypec              	   C   sr   t tddddgd}tjtdd |ddg  W 5 Q R X t td}tjtdd |d	dg  W 5 Q R X d S )
Nr;   rM   rG   r*   rz   not in indexrl   dr   )r   r|   ro   rp   r$   r&   sr'   r'   r(   $test_getitem_label_list_with_missing)  s    z-TestLoc2.test_getitem_label_list_with_missingrS   TFc              	   C   sN   t dddg}dt| dt| }tjt|d |j|  W 5 Q R X d S )Nr6   r   r;   z Boolean index has wrong length: z instead of rl   )r   lenro   rp   rF   r   )r&   rS   r   rq   r'   r'   r(   test_loc_getitem_bool_diff_len4  s    z'TestLoc2.test_loc_getitem_bool_diff_lenc                 C   s   d S rD   r'   r%   r'   r'   r(   test_loc_getitem_int_slice<  s    z#TestLoc2.test_loc_getitem_int_slicec              	   C   s  t tjddddgdddgd}d	}tjt|d
 |jddgddgf  W 5 Q R X ttd}d|jd< d|jd< tjtdd
 |jd  W 5 Q R X d}tjt|d
 |jddg  W 5 Q R X d}tjt|d
 |jdg  W 5 Q R X d|jd< tjtdd
 |jddg  W 5 Q R X d|d< d}tjt|d
 |jdg  W 5 Q R X |d= tjt|d
 d|jdg< W 5 Q R X t dgdggddgdgd}d}tjt|d
 |jdgd d f  W 5 Q R X tjt|d
 |jdg  W 5 Q R X d S )N)r;   r;   rM   rG   r*   er-   grS   rR   zJ\"None of \[Int64Index\(\[1, 2\], dtype='int64'\)\] are in the \[index\]\"rl   r6   r   r   z^-1$zL\"None of \[Int64Index\(\[-1, -2\], dtype='int64'\)\] are in the \[index\]\"zE\"None of \[Index\(\['4'\], dtype='object'\)\] are in the \[index\]\"4r;   r   zH\"None of \[Int64Index\(\[-2\], dtype='int64'\)\] are in the \[index\]\"r   valuezG\"None of \[Int64Index\(\[3\], dtype='int64'\)\] are in the \[index\]\")	r   rT   r{   ro   rp   r$   r   r   object)r&   rY   rq   r   r'   r'   r(   test_loc_to_fail@  sN    
   



zTestLoc2.test_loc_to_failc              	   C   sr   t dddg}|jdg  tjttdd |jdg  W 5 Q R X tjtdd |jddg  W 5 Q R X d S )Nr6   r   r;   z="None of [Int64Index([3], dtype='int64')] are in the [index]"rl   r   )r   r   ro   rp   r$   reescaper   r'   r'   r(   test_loc_getitem_list_with_fail  s    z(TestLoc2.test_loc_getitem_list_with_failc                 C   s   t tjjdddddddgd}|jd	d
 }|jt| }|j| }t|| |j|j	 }t|| |jt
j|dd }t|| d S )N)r?   r:   sizeZalpha_0Zalpha_1Zalpha_2Zbeta_0Zbeta_1rz   c                 S   s   d| kS )Nalphar'   rx   r'   r'   r(   <lambda>      z)TestLoc2.test_loc_index.<locals>.<lambda>booleanr   )r   rT   r{   rS   mapr   r   rV   rW   valuespd)r&   rY   maskrZ   r   r'   r'   r(   test_loc_index  s    
zTestLoc2.test_loc_indexc                 C   s   t tjddddddgddddgd}|jd d ddf jddd d f }|jddgk sft|j	ddgk s|tt t
d	gd
gdjd }tt
d	d
gddgdd}t|| |jtkstd S )Nr>   r8   rj   rk   DrQ   r   r   r   r6   r   rM   rG   r   )r   rT   r{   randr   r   rR   allr   rS   r   r   rV   r}   r   r   r&   rY   r   rZ   r'   r'   r(   test_loc_general  s    

(zTestLoc2.test_loc_generalc                 C   s"   t tddttdtjddS )N
2000-01-01	2000-01-5r?   r   r   val)r   r   r   r|   rT   int64r%   r'   r'   r(   frame_for_consistency  s
    zTestLoc2.frame_for_consistencyr   r   r   c                 C   sV   t tdtdtjdttdtjdd}| }||jd d df< t|| d S )Nr   r?   rS   r   r   r   r   	r   r   r|   rT   r   r   r   rV   rW   )r&   r   r   rZ   rY   r'   r'   r(   test_loc_setitem_consistency  s    z%TestLoc2.test_loc_setitem_consistencyc                 C   sR   t tdtddttdtjdd}| }d|jd d df< t|| d S )Nra   r?   rz   r   r   r   r   r&   r   rZ   rY   r'   r'   r(   (test_loc_setitem_consistency_dt64_to_str  s    z1TestLoc2.test_loc_setitem_consistency_dt64_to_strc                 C   sR   t tdtddttdtjdd}| }d|jd d df< t|| d S )N      ?r?   rz   r   r   r   r   r   r'   r'   r(   *test_loc_setitem_consistency_dt64_to_float  s    z3TestLoc2.test_loc_setitem_consistency_dt64_to_floatc                 C   sJ   t dttdgi}d|jd d df< t dtdgi}t|| d S )Nr   Z20180101string)r   r   r   r   rV   rW   rX   r'   r'   r(   'test_loc_setitem_consistency_single_row  s    z0TestLoc2.test_loc_setitem_consistency_single_rowc                 C   st   t ddgd}|d tj|d< t ddgd}d|jd d df< t|| t ddgd}d|d< t|| d S )Nrx   yrR   r6   )r   r   rT   r   r   rV   rW   r&   rZ   rY   r'   r'   r(   "test_loc_setitem_consistency_empty  s    z+TestLoc2.test_loc_setitem_consistency_emptyc                 C   s   d}t jt|ddgdddgd}t|jd d df |jd d df< t|jd d df |jd d df< |jd d df |jd d df  |jd d df< |jd d df d	|jd d df< td
dddg|jdd}t	|d | d S )Na  Level_0,,,Respondent,Respondent,Respondent,OtherCat,OtherCat
Level_1,,,Something,StartDate,EndDate,Yes/No,SomethingElse
Region,Site,RespondentID,,,,,
Region_1,Site_1,3987227376,A,5/25/2015 10:59,5/25/2015 11:22,Yes,
Region_1,Site_1,3980680971,A,5/21/2015 9:40,5/21/2015 9:52,Yes,Yes
Region_1,Site_2,3977723249,A,5/20/2015 8:27,5/20/2015 8:41,Yes,
Region_1,Site_2,3977723089,A,5/20/2015 8:33,5/20/2015 9:09,Yes,Nor   r6   r   )headerZ	index_col)
RespondentZ	StartDate)r   ZEndDate)r   ZDurationztimedelta64[s]id  i  iH  g     @r   )
r   Zread_csvr   r   r   r   r   rS   rV   r}   )r&   datarY   rZ   r'   r'   r(   -test_loc_setitem_consistency_slice_column_len  s.    

  z6TestLoc2.test_loc_setitem_consistency_slice_column_lenunitYMr   hmr   msusc                 C   s   t dtdtdgi}|jd d df jd| d|jd d |f< |jd d df jd| d|d< t|jd d df |d}t|jd d |f | d S )N	timestampz2017-02-11 12:41:29z1991-11-07 04:22:37zdatetime64[]rZ   r   )	r   rT   
datetime64r   r   r   r   rV   r}   )r&   r   rY   rZ   r'   r'   r(   test_loc_assign_non_ns_datetime'  s    	0&z(TestLoc2.test_loc_assign_non_ns_datetimec                 C   s   t dddddgi}t|d ddd|d	< |jd d d	f |jd d d
f< |jddgd	f |jddgd
f< t dddgdddgdddgdddggdd	d
gd}d	d
g}|| t||< t|| d S )Nr   l   CO!gl   s~!gl    4	8l   A{?r   T)r   cacheZdate_dtZ
date_dt_cpr   r;   z2017-01-24 13:26:12.711z2017-01-24 13:52:05.110z2018-10-22 13:44:05.888z2018-10-23 08:08:41.025r   )r   	from_dictr   r   applyrV   rW   )r&   rY   rZ   rR   r'   r'   r(   test_loc_modify_datetime9  s"      
z!TestLoc2.test_loc_modify_datetimec                 C   s   t dddgdgtd}tjdddgdd	|jdddgdf< tdddgdddgtd
}|rrtdddgdddgdd
}t d|i}t|| d S )Nr;   r?   r>   r8   rS   rR   r   r6   r   r   r   r   r   floatrT   r   r   r   rV   rW   )r&   using_array_managerrY   serrZ   r'   r'   r(   #test_loc_setitem_frame_with_reindexS  s    $z,TestLoc2.test_loc_setitem_frame_with_reindexc                 C   s   t dddgddgtd}d|d< tjdd	dgd
d|jdddgdf< td	ddgdddgd
d}t d|i}d|d< t|| d S )Nr;   r?   r>   r8   rj   r   r   r6   r   r   r   r   r   )r&   rY   r   rZ   r'   r'   r(   )test_loc_setitem_frame_with_reindex_mixedb  s    $z2TestLoc2.test_loc_setitem_frame_with_reindex_mixedc                 C   st   t dddgddgtd}d|d< tjdddgdd	|jtdd
ddf< t dddgdddddgd}t|| d S )Nr6   r   r;   r8   rj   r   r   r   r   r   r   r8   rj   rz   )r   r   rT   r   r   rJ   rV   rW   rX   r'   r'   r(   *test_loc_setitem_frame_with_inverted_slicel  s
    &z3TestLoc2.test_loc_setitem_frame_with_inverted_slicec           
      C   s   dd t dD }tjddd}dd t dD }tjddd}tt||}t|d}tj|d	< ||j|d	f< tj|d
< ||j|d
f< t	||tj
d}t	||d}t||dj|d}	t||	 d S )Nc                 S   s   g | ]}d t | qS @strrw   ir'   r'   r(   ry   y  s     z9TestLoc2.test_loc_setitem_empty_frame.<locals>.<listcomp>r?   r   r   c                 S   s   g | ]}d t | qS r   r   r   r'   r'   r(   ry   |  s     r>   rz   r8   rj   r   r   )r|   rT   rU   r   setunionr   nanr   r   r   reindexrV   rW   )
r&   Zkeys1Zval1keys2Zval2rS   rY   ZseraZserbrZ   r'   r'   r(   test_loc_setitem_empty_framev  s    


z%TestLoc2.test_loc_setitem_empty_framec                 C   s   t tjddtdtdd}|jd }d|jd< |jd }|dksJt|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	|| d S )Nr>   ZabcdABCDr   r   r   r6   )rM   r8   r   rj   r   )
r   rT   r{   randnr   r   r   r   rV   rW   r   r'   r'   r(   test_loc_setitem_frame  s     



zTestLoc2.test_loc_setitem_framec                 C   sT   t dddgtjd}|j|j|j|jkdf< t dddgtjd}t|| d S )Nr6   r   r;   r   rj   )r   rT   r   r8   r   rj   rV   rW   rX   r'   r'   r(   /test_loc_setitem_frame_nan_int_coercion_invalid  s    z8TestLoc2.test_loc_setitem_frame_nan_int_coercion_invalidc                 C   s   t ddgddgddgd}|jdddgf }tddgddgtdd	}t|| t d
dgddgddgd}d
dg|jdddgf< t|| d S )Nr6   r   r;   r>   rM   rG   )r6   r   rM   r   )rS   r   r   r?   r<   )r   r   r   r   rV   r}   rW   r   r'   r'   r(   #test_loc_setitem_frame_mixed_labels  s    z,TestLoc2.test_loc_setitem_frame_mixed_labelsc                 C   s  t dddgttdtjdd}|jdd }|jd	d |_||jd	d< t dddgtdddgtjdd}t|| t t	d
dttdtjdd}t t
dt
dt
dt
dt
dgtd	dd	ddgtjdd}|jd	d }|jdd |_||jdd< t|| d S )Nra   rb   bazr;   r   r   r6   r   r   r   r   r?   r   Z20000101Z20000102Z20000103r>   )r   r   r|   rT   r   r   rS   rV   rW   r   r   )r&   rY   rhsrZ   r'   r'   r(    test_loc_setitem_frame_multiples  s:    z)TestLoc2.test_loc_setitem_frame_multiplesr   r8   Nr   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 )Nr6   r   r;   r>   r8   rj   r   r   )r   r8   r  )r   r   r   r   )r&   r   r   rY   r   r'   r'   r(   "test_loc_setitem_with_scalar_index  s    	
z+TestLoc2.test_loc_setitem_with_scalar_indexzindex,box,expectedr   rj   rk   r=   r;   r>   r   r6   rI   r?   r<   	   r:         c                 C   s<   t ddgddgddggddgd	}||j|< t|| d S )
Nr6   r   r;   r>   r?   r<   r8   rj   r   r   r   rV   rW   )r&   rS   boxrZ   rY   r'   r'   r(    test_loc_setitem_missing_columns  s    5"
z)TestLoc2.test_loc_setitem_missing_columnsc                 C   s  t dtddtjgi}|j}|jdg }t|j| |jdg }t|j| dd l	}t d|	ddd|	dddgi}|j}|jdg }t|j| |jdg }t|j| t d	d
gd gd  i}|j}|jdd }t|j| |jdd  }t|j| d S )Nr   r   UTCr   r6     i  r   textz
some wordsr  r;   )
r   r   tz_localizer   NaTdtypesr   rV   r}   r   )r&   rY   rZ   r   r   r'   r'   r(   test_loc_coercion!  s*    zTestLoc2.test_loc_coercionc                 C   sf   t ddt ddg}t|ddgd}ttd}|d ||d< |d	 ||d< t|| d S )
N*   r  i  ra   rb   rz   r   r   r6   )r   r  r   r   rV   r}   )r&   Z
indexer_slvalsrZ   r   r'   r'   r(   test_setitem_new_key_tzE  s    
z TestLoc2.test_setitem_new_key_tzc              	   C   s  t ddddddgddddddgd	d
dd
dddgd}d}tjt|d |jdd   W 5 Q R X d}tjt|d |jd
d   W 5 Q R X d}tjt|d |jdd  W 5 Q R X t ddddddgddddddgd	d
dd
dddgdjd
d}|jdd  }t ddddgddddgd	ddddgd}t|| |jd
d  }t|| |jdd }t dddgdddgd	dddgd}t|| d S )Nr6   r   r;   r>   r?   r<   r=   rI   r   r   rz   z5'Cannot get left slice bound for non-unique label: 1'rl   z5'Cannot get left slice bound for non-unique label: 0'Zaxis)r   ro   rp   r$   r   
sort_indexrV   rW   )r&   rY   rq   r   rZ   r'   r'   r(   test_loc_non_uniqueS  s6        *$zTestLoc2.test_loc_non_uniquec                    s   t d  fdd} fdd}|dd}|jjdks:ttd}|j| }|||}t|| |d	d
}|jjdks~ttd
}|j| }|||}t|| d S )NZABCDEFGc              	      sJ   t ttj| t t|  dtt|t fdg|  dgS )Nr   r   )	r   concatr   rT   r{   r  r   rU   ones)lengthl2r   r'   r(   gen_test}  s      z;TestLoc2.test_loc_non_unique_memory_error.<locals>.gen_testc              	      sL   t |}t| dgtt|t  fdg|  d| |dd  gS )Nr   r   r6   )r   r   r   taker   rT   r!  )rY   r   Zlen_maskr   r'   r(   gen_expected  s    
z?TestLoc2.test_loc_non_unique_memory_error.<locals>.gen_expected  r   Fi 順 )	r   rS   Z	is_uniquer   rT   rU   r   rV   rW   )r&   r$  r&  rY   r   r   rZ   r'   r   r(    test_loc_non_unique_memory_erroru  s    







z)TestLoc2.test_loc_non_unique_memory_errorc                 C   s\   t ddgddgg}d|j_|jddg jj}|dks:t|jddg jj}|dksXtd S )Nr6   Z
index_namer   )r   rS   r   r   r   r   r&   rY   r   r'   r'   r(   test_loc_name  s    zTestLoc2.test_loc_namec                 C   s   t dd}t j|jd d g f |jd d d df ddd t j|jg d d f |jd dd d f ddd t j|jg  |jd dd d f ddd d S )Nr?   r   r   T)check_index_typecheck_column_type)rV   ZmakeCustomDataframerW   r   r   rt   r'   r'   r(   !test_loc_empty_list_indexer_is_ok  s&             z*TestLoc2.test_loc_empty_list_indexer_is_okc                 C   sD  t ddddgi}|jd d  }||k	s,t|d d  |k	s@tdddg|d< |rh|d dk r|tn|d dk s|t||jd d d d f kstt tjdd}|d |jd d df ksttdddddd	g}|jd d  }||k	st|d d  |k	std
ddg|d d< t|d d d
ddgks@td S )NrM   r6   r   r;   r>   r:   r   r?   r<   r=   rI   r  )r   r   r   r   rT   r{   r  r   )r&   r   Zoriginal_dfZ	sliced_dfrY   Zoriginal_seriesZsliced_seriesr'   r'   r(   &test_identity_slice_returns_new_object  s"    z/TestLoc2.test_identity_slice_returns_new_objectz!accidental fix reverted - GH37497)reasonc                 C   s|   t ttdtdddgd}| }|jd d df }|d7 }t|| | }|j|jdf }|d7 }t|| d S )Nr;   rM   rG   r   r   )r   zipr|   r   r   rV   rW   rS   )r&   rx   r   qzr'   r'   r(   test_loc_copy_vs_view  s    zTestLoc2.test_loc_copy_vs_viewc                 C   s   t dj}tddg|d |gd}|j|d  }|jd }||ksHt|j|d g }|jdg }t|| |j|d |g }t|| d S )Nr   r6   r   rz   r   )	rT   iinfomaxr   r   r   r   rV   r}   )r&   umaxr   r   rZ   r'   r'   r(   test_loc_uint64  s    
zTestLoc2.test_loc_uint64c              	   C   sr   t dj}tddg|d |gd}tjtdd |jd  W 5 Q R X tjtdd |jdg  W 5 Q R X d S )Nr   r6   r   rz   z-1rl   r   )rT   r5  r6  r   ro   rp   r$   r   )r&   r7  r   r'   r'   r(   !test_loc_uint64_disallow_negative  s    z*TestLoc2.test_loc_uint64_disallow_negativec                 C   sR   dddg}t |d gt| d}t ddgd}||jd d df< t|| d S Nr6   r   r;   rx   r   rx   r   r   )r   r   r   rV   rW   r&   r   rZ   rY   r'   r'   r(   *test_loc_setitem_empty_append_expands_rows  s
    
z3TestLoc2.test_loc_setitem_empty_append_expands_rowsc                 C   sf   dddg}t |d gt| d}t ddgd}|d tj|d< ||jd d df< t|| d S r:  )r   r   r   rT   r   r   rV   rW   r<  r'   r'   r(   6test_loc_setitem_empty_append_expands_rows_mixed_dtype  s    
z?TestLoc2.test_loc_setitem_empty_append_expands_rows_mixed_dtypec                 C   sD   t dgtjgd}t ddgtd}|jd |jd< t|| d S )Nr   r;  rx   r   rR   r   )r   rx   )r   rT   r   r   r   rV   rW   r   r'   r'   r(   *test_loc_setitem_empty_append_single_value&  s    z3TestLoc2.test_loc_setitem_empty_append_single_valuec              	   C   s   ddg}t ddgd}|jtj|_d}tjt|d ||jddgdf< W 5 Q R X d		d
ddg}tjt
|d ||jdddf< W 5 Q R X d S )Nr6   r   rx   r   r   zFNone of \[Int64Index\(\[0, 1\], dtype='int64'\)\] are in the \[index\]rl   r   |z?cannot copy sequence with size 2 to array axis with dimension 0zCcould not broadcast input array from shape \(2,\) into shape \(0,\)z@Must have equal len keys and value when setting with an iterable)r   rS   r   rT   r   ro   rp   r$   r   join
ValueError)r&   r   rY   rq   r'   r'   r(   $test_loc_setitem_empty_append_raises/  s    z-TestLoc2.test_loc_setitem_empty_append_raisesc                 C   sD   t ddgddgg}|jtd }tddgdd}t|| d S )Nr6   r   r;   r>   r   r   )r   r   rT   r   r   rV   r}   )r&   rY   r   r   r'   r'   r(   test_indexing_zerodim_np_arrayG  s    z'TestLoc2.test_indexing_zerodim_np_arrayc                 C   s,   t ddg}|jtd }|dks(td S )Nr6   r   r   )r   r   rT   r   r   )r&   r   r   r'   r'   r(   %test_series_indexing_zerodim_np_arrayN  s    z.TestLoc2.test_series_indexing_zerodim_np_arrayc                 C   sl   ddddddgd gd  }t |tddd	}t tddtjd
}ddddddg|jddd< t|| d S )Nr6   r   r;   r>   r?   r<   i  i  rz   r   rh   r   )r   r|   rT   r   r   rV   r}   )r&   r   rZ   r   r'   r'   r(   test_loc_reverse_assignmentT  s
    z$TestLoc2.test_loc_reverse_assignmentc                 C   s   t jd dd tdD }t|dgd}t|dgtd}t|| dd |D |j|j	df< t|dgt
dt}t|| d	d |D |d< t|dgt
d}t|| d S )
N   c                 S   s   g | ]}t tj d  qS )g-q=)r   rT   r{   )rw   _r'   r'   r(   ry   a  s     zPTestLoc2.test_loc_setitem_str_to_small_float_conversion_type.<locals>.<listcomp>r?   r8   r   r?  c                 S   s   g | ]}t |qS r'   r   rv   r'   r'   r(   ry   h  s     c                 S   s   g | ]}t |qS r'   rJ  rv   r'   r'   r(   ry   n  s     )rT   r{   seedr|   r   r   rV   rW   r   rS   r   r   )r&   Zcol_datar   rZ   r'   r'   r(   3test_loc_setitem_str_to_small_float_conversion_type^  s    z<TestLoc2.test_loc_setitem_str_to_small_float_conversion_typec           	      C   s   t dddd}|jdk|jdk@ }ttjt|d|d}|tkrL|d	 }|j	t
dd }|j	| }t|| |j	d
d  }|j	t
dd }|dd  }|jd |_|jd |_t|| d S )N1/1/2000z1/5/2000Z5minfreqr  rA   r;   rz   r   z1/4/2000r   )r   hourminuter   rT   r{   r  r   r   r   r   rV   assert_equalrS   
_with_freq)	r&   frame_or_seriesrngr   objr   expchunkrZ   r'   r'   r(   test_loc_getitem_time_objectr  s    
z%TestLoc2.test_loc_getitem_time_object
spmatrix_tZ
coo_matrixZ
csc_matrixZ
csr_matrixr   c                 C   s   dd l }t|j|}d\}}|tj|||d|d}tj|}td|}|j| j	}	|
 | }
t|	|
 |j| jj	}	t|t|dd}
t|	|
 d S )Nr   )r?   r=   r   r   )Z
fill_value)scipy.sparsegetattrsparserT   eyer   from_spmatrixr|   r   r   ZtoarrayrV   Zassert_numpy_array_equalr  fullr   )r&   rZ  r   ZscipyZrowsr   ZspmatrixrY   Zitr_idxr   rZ   r'   r'   r(   $test_loc_getitem_range_from_spmatrix  s    
z-TestLoc2.test_loc_getitem_range_from_spmatrixc                 C   s<   t dtjddgtddi}|jddg }t|| d S )Nr8   r   r   r   r6   )r   r   r   r   r   rV   rW   r*  r'   r'   r(   ,test_loc_getitem_listlike_all_retains_sparse  s    z5TestLoc2.test_loc_getitem_listlike_all_retains_sparsec                 C   s   ddl m} tj|d}|jtd }tdddddgdddddggtddd}t	|| |jtd jtd	 }tdddddggtddd}t	|| d S )
Nr   )r^  r?   r   r   r   r   r   r6   )
r[  r^  r   r]  r_  r   r|   r   rV   rW   )r&   r^  rY   r   rZ   r'   r'   r(   test_loc_getitem_sparse_frame  s     z&TestLoc2.test_loc_getitem_sparse_framec                 C   s   t dddddgtddd}|jtd }t ddgtddd}t|| |jtd jtd }t ddgtddd}t|| d S )Nr   r   r   r   r   r;   )r   r   r   r|   rV   r}   )r&   r   r   rZ   r'   r'   r(   test_loc_getitem_sparse_series  s    z'TestLoc2.test_loc_getitem_sparse_serieskey_typec                 C   sH   |dddg}|j d d |f }|j d d dddgf }t|| d S )Nr8   rj   rk   )r   rV   rW   )r&   float_framere  idxr   rZ   r'   r'   r(   test_loc_getitem_iterable  s    z"TestLoc2.test_loc_getitem_iterablec                 C   sb   t tjjdd}tdddd|_|jtdd d d f }|jdd d d f }t	|| d S )Nr:   r>   r   Z0sr:   r   )startperiodsrO  )
r   rT   r{   normalr   rS   r   r   rV   rW   r~   r'   r'   r(   #test_loc_getitem_timedelta_0seconds  s
    z,TestLoc2.test_loc_getitem_timedelta_0secondsval,expected                c                 C   s4   t ddgddgd}|j| }||_t|| d S )Nr6   r   ro  rp  rz   )r   r   r   rV   r}   )r&   r   rZ   rY   r   r'   r'   r(   test_loc_getitem_uint64_scalar  s    
z'TestLoc2.test_loc_getitem_uint64_scalarc                 C   sD   t dddgdddgd}| }d|jd< d|jd	< t|| d S )
NrM   rG   r*   r         ?r6   rz   Zzoor   )r   r   r   r   rV   r}   r&   r   rZ   r'   r'   r(   ,test_loc_setitem_int_label_with_float64index  s
    

z5TestLoc2.test_loc_setitem_int_label_with_float64indexzindexer, expectedr3   c                 C   s\   t tddd}tdtdid|d}d|j|j| df< t||dgdd}t|| d S )	Nr:   r   r   rx   r   r   rS   r3   r   )r   r|   r   r   rS   rV   rW   )r&   r   rZ   tdirY   r'   r'   r(   /test_loc_setitem_listlike_with_timedelta64index  s    z8TestLoc2.test_loc_setitem_listlike_with_timedelta64indexc                 C   s   t dddddgtdd}t dddddgtdd}tddgddgd|jdddf< tddgddgd|jdd	df< t|| d S )
Nr6   Zaaaaar   rG   ZaabbarM   
categoriesr   r;   )r   r   r	   r   rV   rW   )r&   rY   rW  r'   r'   r(   8test_loc_setitem_categorical_values_partial_column_slice  s
    ""zATestLoc2.test_loc_setitem_categorical_values_partial_column_slicec                 C   sb   t dgdgd}t|d dddgd}||jd d df< |d }t||jdd}t|| d S )	NrM   r   )AlphaZNumericr|  rG   r*   ry  r   )r   r	   r   r   rS   rV   r}   )r&   rY   rz  r   rZ   r'   r'   r(   'test_loc_setitem_single_row_categorical  s    z0TestLoc2.test_loc_setitem_single_row_categoricalc              	   C   s   t dtdgd i}td|jdddf< td|jd ksDttd|jd ksZttd	d
d
|jd< tt	 td|jd kstW 5 Q R X td |jd kstd S )Nr*   z
2010-10-01r;   z
2008-08-08r   r6   )r   r*   )r6   r*   i  r?   )r   r*   z
2005-05-05)
r   r   rT   r   r   r   r   rV   assert_produces_warningFutureWarningrt   r'   r'   r(   "test_loc_setitem_datetime_coercion  s     z+TestLoc2.test_loc_setitem_datetime_coercionidxervarc                 C   sX   |}t ddd|d}td|dgd}t|dgtjd}||jd d |f< t|| d S )	Nz
2015-07-12r;   H)rj  rk  rO  tzr   r  r   r   )r   r   rT   r   r   rV   rW   )r&   r  Ztz_naive_fixturer  rg  rZ   r   r'   r'   r(   !test_loc_setitem_datetimeindex_tz"  s    z*TestLoc2.test_loc_setitem_datetimeindex_tzc           
      C   s|  t dddd}ttjt|d|d}tddd}ttd	ddtd
dd}ddddg}ddddddddddddg}| }d|j	|< |j	| }|j	|  }	d|	j	d d < |r|	
t}	t||	 | }d|j	|< |j| |j	|< t|| | }d|j	|< |j	| }|j	|  }	d|	j	d d < |r>|	
t}	t||	 | }d|j	|< |j| |j	|< t|| d S )Nz
2012-01-01z
2012-01-05Z30minrN  r?   rz   r  r   rH        H   x               J   K   L   z   {   |            )r   r   rT   r{   r  r   r   rJ   r   r   r   r   rV   rW   r   )
r&   r   rS   rY   ZakeyZbkeyZaindsZbindsr   rZ   r'   r'   r(   test_loc_setitem_time_key.  s<    







z"TestLoc2.test_loc_setitem_time_keyrr   c                 C   s   t dddg}tdddgddd	gg|d
}| }tjdtd|jd d |f< tdddgdddgg|d
}t	|| |j
dd}tjdtd|jd d |f< |j
dd}t	|| d S )N)r8   r>   )rj   3)r8   2r6   r   r;   r>   r?   r<   r   )r   r   r   r   r  )r   from_tuplesr   r   rT   zerosintr   rV   rW   r  )r&   rr   mirY   rV  rZ   r'   r'   r(   ,test_loc_setitem_unsorted_multiindex_columnsT  s    z5TestLoc2.test_loc_setitem_unsorted_multiindex_columnsc                 C   s>   t dddg|d}d|jd< t dddg|d}t|| d S )Nr6   r   r;   r   r>   r   )r   r   rV   r}   )r&   Zany_int_dtypeZseriesrZ   r'   r'   r(   test_loc_setitem_uint_dropc  s    
z#TestLoc2.test_loc_setitem_uint_dropc                 C   sp   t dtddg }tdd|jdddg< t dtddg }ttdd|jdddg< t|| d S )Nr:   r   r3   r6   r   r;   )r   rT   timedelta64r   r   rV   r}   rs  r'   r'   r(   test_loc_setitem_td64_non_nanok  s
    z'TestLoc2.test_loc_setitem_td64_non_nanoc              	   C   s   t jdd}ttd}dddg}tjt|d ||j	td< W 5 Q R X d}tjt|d ||j	d d < W 5 Q R X d S )Nr   rA  z,shape mismatch: value array of shape \(2,2\)z0cannot reshape array of size 4 into shape \(2,\)rl   zEcould not broadcast input array from shape \(2,2\) into shape \(2,?\))
rT   r{   r  r   r|   rB  ro   rp   rC  r   )r&   r   r   rq   r'   r'   r(    test_loc_setitem_2d_to_1d_raisess  s    z)TestLoc2.test_loc_setitem_2d_to_1d_raisesc                 C   sX   t jddd}tdddgdddgd	d
dgg|dddgd}d}|jd }t|| d S )Nr   r;   )rj  rk  r6   r   r>   r?   r<   r=   rI   r  r8   rj   rk   r   )rr  r8   )r   interval_ranger   r   rV   assert_almost_equal)r&   rS   rY   rZ   r   r'   r'   r(   test_loc_getitem_interval_index  s      
z(TestLoc2.test_loc_getitem_interval_indexc                 C   sz   t jdddd}tdddgddd	gd
ddgg|dddgd}t jddddd}tddg|dd}|jd }t|| d S )Nr   r;   Zboth)rj  rk  closedr6   r   r>   r?   r<   r=   rI   r  r8   rj   rk   r   )rj  rk  rO  r  r   r6   r8   )r   r  r   r   r   rV   r}   )r&   rS   rY   Z	index_exprZ   r   r'   r'   r(    test_loc_getitem_interval_index2  s      
z)TestLoc2.test_loc_getitem_interval_index2tplr6   r6   r   c                 C   sR   t ddgddd}t|d}|j|g }t |gddd}t|d}t|| d S )Nr  r  r8   Fr   Ztupleize_colsrz   )r   r   r   rV   rW   )r&   r  rg  rY   r   rZ   r'   r'   r(   +test_loc_getitem_index_single_double_tuples  s    

z4TestLoc2.test_loc_getitem_index_single_double_tuplesc                 C   sn   t dddg}|dd}|dd}t||gdd	d
}tddg|ddgd}|j|dd d }|dksjtd S )N	IndexTyperM   rG   ra   rb   r  ZbofZcomposite_indexFr  r  )r;   r>   r8   rj   r   r6   )r   r   r   r   r   )r&   r  Zidx1Zidx2rS   rY   r   r'   r'   r(   !test_loc_getitem_index_namedtuple  s    

z*TestLoc2.test_loc_getitem_index_namedtuplec                 C   s   t tjdddddddgdd	d
gd}d|d< tj|j|jd d d df< tjtjdtjdtjgtd}t	
|d j| d S )Nr?   r;   rM   rG   r*   r   r   ra   rb   r  r   quxr   r   r   )r   rT   r{   r  r   r   rS   r   r   rV   r  r   rX   r'   r'   r(   $test_loc_setitem_single_column_mixed  s    z-TestLoc2.test_loc_setitem_single_column_mixedc                 C   sp   t tjddtdd}tj|d< d|jd< |j}tt	dgd t	d	g d
dddgd}t
|| d S )NrA   r;   ABCr   eventra   )r:   r  r   r   r8   rj   rk   rz   )r   rT   r{   r   tupler   r   r  r   r   rV   r}   r   r'   r'   r(   test_loc_setitem_cast2  s    


zTestLoc2.test_loc_setitem_cast2c                 C   sb   t dtjdtjdi}d|jd< |jjttjks:ttd|_|jjttjks^td S )Noner<   r   )r6   r  r=   )	r   rT   rU   Zint8r   r  r  r   r   rt   r'   r'   r(   test_loc_setitem_cast3  s
    
zTestLoc2.test_loc_setitem_cast3)er\   r]   r^   ro   markparametrizer   rs   ru   r   r   r   r   r   r   r   r   r   r   r   r   Zfixturer   rT   r   r   r   r   r   r   r   r   r   r   r   r   r   tdZ&skip_array_manager_not_yet_implementedr  r  r  r  r
  rJ   r  r   r   r  r  r  r  Zarm_slowr)  r+  r.  r/  Zxfailr4  r8  r9  r=  r>  r@  rD  rE  rF  rG  rL  rY  r   complexZskip_if_no_scipyra  rb  rc  rd  iterr   r   rh  rm  rq  rt  rx  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'   r'   r'   r(   r_      sZ  

$
C
*




% $
	
(
	 $
	$
	  3
$"
3

	



 

 

	

&


r_   c                   @   s  e Zd Zejdddgddddgddddggfddgddddgddddggfddgddgfddddgddddggfddgddgfddddgddddggfddgddgfddddgddddggfddgddgfddddgddddggfddgddgfdddgdddggfgejddd	g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ejdddgdd  Zd!S )"TestLocWithMultiIndexzkeys, expectedrG   rM   r6   r   r*   dimrS   rR   c                 C   s   |dddddgdddddggi}t tdddf|}t|}|dkrn|j|d d f }t|j	| n(|d	kr|jd d |f }t|j
| d S )
Nr*   rM   rG   r6   r      r?   rS   rR   )r   rT   rU   reshaper   from_arraysr   rV   assert_index_equalrS   rR   )r&   r  keysrZ   kwargsrY   	exp_indexresr'   r'   r(   'test_loc_getitem_multilevel_index_order  s     
z=TestLocWithMultiIndex.test_loc_getitem_multilevel_index_orderc                 C   s   |}|j d }|d j d }|jj|jjdd  ks8t|jj|jjdd  ksTt|j d }|d j d }|jj|jjd kst|jj|jjd kstd S )N  r8   r6   )r  r   r   )r   rS   namesr   r   )r&   Z/multiindex_year_month_day_dataframe_random_dataZymdr   result2r'   r'   r(   test_loc_preserve_names  s    

z-TestLocWithMultiIndex.test_loc_preserve_namesc                 C   sf   t dgddgg}td|d}|jg  }|d d }t|| |j|jdd  }t|| d S )Nr   r6   rz   )r   from_productr   r   rV   r}   r   )r&   r  r   r  rZ   Zres2r'   r'   r(   .test_loc_getitem_multiindex_nonunique_len_zero  s    
zDTestLocWithMultiIndex.test_loc_getitem_multiindex_nonunique_len_zeroc                 C   s   t d gtdgdgg}|jd }|d ks0ttdgddgg}t d gt| t|d}|jd }|d ksrtt dgt| t|d}|jd }|dkstd S )	NLevel1Level2)r  r  Level2_aZLevel2_brv  )r  r  r6   )r   r   r  r   r   r  r   r   )r&   r   r   Zmidxr'   r'   r(   0test_loc_getitem_access_none_value_in_multiindex
  s    


zFTestLocWithMultiIndex.test_loc_getitem_access_none_value_in_multiindexc                 C   s   t jtddddddddgddddddddgddgd	}td
d
d
d
d
d
d
d
g|d}d|jdd< td
d
ddddd
d
g|d}t|| d S )Nrb   r  ra   r  r  twofirstsecondr  r6   rz   r   )r  r  )ra   r  )r   r  r1  r   r   rV   r}   )r&   rS   r   rZ   r'   r'   r(   !test_loc_setitem_multiindex_slice  s    z7TestLocWithMultiIndex.test_loc_setitem_multiindex_slicec                 C   sJ   t dddd}ttd|}|jtdddtddd }t|| d S )Nr   Z10minr(  rO  rk  il  r6   i4  )r   r   r|   r   r   rV   r}   )r&   timesr   r   r'   r'   r(   7test_loc_getitem_slice_datetime_objs_with_datetimeindex-  s    zMTestLocWithMultiIndex.test_loc_getitem_slice_datetime_objs_with_datetimeindexc                 C   sh   t tdtddtddd}|jddgddgf }t d	d
gd	d
gdtddgd}t|| d S )Nr:   r   z
2010-01-01z
2010-01-10rz   z
2010-01-05rM   rG   r   r>   )r   r|   r   r   r   rV   rW   r   r'   r'   r(   3test_loc_getitem_datetime_string_with_datetimeindex3  s    
zITestLocWithMultiIndex.test_loc_getitem_datetime_string_with_datetimeindexc                 C   s   t jddddddgddgd}tddgdd	gd
dgddgddgddgg|ddgd}|jdd}tddgdd	gddggddg|dddgd}|jd }t|| d S )N)ra   rb   )ZbahZbamr8   rj   r  r   r6   r   r   r7   r;         @r>         @r?         @r<   rk   r   r   r   )levelrQ   )r   r  r   r  r%  r   rV   rW   )r&   r  rY   rZ   r   r'   r'   r(   3test_loc_getitem_sorted_index_level_with_duplicates@  s:      
zITestLocWithMultiIndex.test_loc_getitem_sorted_index_level_with_duplicatesc                 C   s   t tdddttddgtdgdgd dgd  tdgd	d
gdd}tddgddgdd	dd}|jjd }t	|| |j
dg jjd }t	|| d S )Nr      rM   rG   r:   r   r?   r6   ZIndex1ZIndex2)levelscodesr  )r   rS   Fcategory)rz  orderedr   r   )r   rT   rU   r   r
   r|   rS   r  rV   r  r   r~   r'   r'   r(   5test_loc_getitem_preserves_index_level_category_dtypeb  s&    	zKTestLocWithMultiIndex.test_loc_getitem_preserves_index_level_category_dtypelt_valuerA   r:   c              	   C   sp   t dddddgitdddd	d
ggd}tjtdd0 |j|d |k d d f jdgd d f  W 5 Q R X d S )NrM   r     "   -   aabbr   r6   r   r;   rz   z\['b'\] not in indexrl   rG   )r   r   ro   rp   r$   r   )r&   r  rY   r'   r'   r(   >test_loc_multiindex_levels_contain_values_not_in_index_anymore{  s    (zTTestLocWithMultiIndex.test_loc_multiindex_levels_contain_values_not_in_index_anymoreN)r\   r]   r^   ro   r  r  r  r  r  r  r  r  r  r  r  r  r'   r'   r'   r(   r    s.   &&&&""r  c                	   @   s   e Zd Zejjdd Z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 Zejdddddddgdd ZdS )TestLocSetitemWithExpansionc                 C   sN   t dtdidd}t|d |jt|< t dtdidd}t|| d S )Nrx   i@B r   r   r6   iAB )r   r|   r   r   rV   rW   r&   r   rZ   r'   r'   r(   /test_loc_setitem_with_expansion_large_dataframe  s    zKTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_large_dataframec                 C   s$  t td}d|jd< t|t dgdgd d|jd< t|t ddgddgd t td}d|jd< t|t dgdgd d|jd< t|t ddgddgd t td}d|jd< t|t dgdgd d|jd< t|t ddgddgd d	|jd< t|t ddd	gdddgd d S )
Nr   r6   rz   r;   r   r7   ra   rb   r>   )r   r   r   rV   r}   r&   r   r'   r'   r(   test_loc_setitem_empty_series  s"    









z9TestLocSetitemWithExpansion.test_loc_setitem_empty_seriesc                    sn   t dddtdd  fddtdD }td	g|d	 gd
}|D ]}d|j|< qBtd|d
}t|| d S )Nrh   r  r6   
US/Pacific)tzinfoc                    s   g | ]} t |d  d qS )r'  )seconds)r   r   baser'   r(   ry     s     zUTestLocSetitemWithExpansion.test_loc_setitem_incremental_with_dst.<locals>.<listcomp>   r   rz   )r   r   r|   r   r   rV   r}   )r&   Zidxsr   r1   rZ   r'   r  r(   %test_loc_setitem_incremental_with_dst  s    zATestLocSetitemWithExpansion.test_loc_setitem_incremental_with_dstc                 C   s   t d}t d}dd dd dd dd fD ]R}t }d|j||d	f< d
|j||d	f< td	ddgi||gd}t|| q,d S )Nz20130101 09:00:00z20130101 10:00:00c                 S   s   | S rD   r'   r   r'   r'   r(   r     r   zQTestLocSetitemWithExpansion.test_loc_setitem_datetime_keys_cast.<locals>.<lambda>c                 S   s   |   S rD   )Zto_datetime64r   r'   r'   r(   r     r   c                 S   s   |   S rD   )Zto_pydatetimer   r'   r'   r(   r     r   c                 S   s
   t | S rD   )rT   r   r   r'   r'   r(   r     r   r   r  rN   g      Y@g      i@rz   )r   r   r   rV   rW   )r&   Zdt1Zdt2convrY   rZ   r'   r'   r(   #test_loc_setitem_datetime_keys_cast  s    z?TestLocSetitemWithExpansion.test_loc_setitem_datetime_keys_castc                 C   sT   t ddgi}tdg|d|jd d df< t dgtdg|dd}t|| d S )Nr8   r6   rG   )r  rj   r   )r   r	   r   rV   rW   )r&   r  r   rZ   r'   r'   r(   1test_loc_setitem_categorical_column_retains_dtype  s    zMTestLocSetitemWithExpansion.test_loc_setitem_categorical_column_retains_dtypec                 C   s   t ddd}t ddd}t ddd}t||ddd}||ks@tt|d	gd
}d|j|d	f< ttjgt| dg |t	|gd	gt
d}t|| d S )Nz2017-10-29 00:00:00+0200zEurope/Madridr  z2017-10-29 03:00:00+0100z2016-10-10 03:00:00leftr  )r  rO  r   r   r  r   )r   r   r   r   r   rT   r   r   appendr   r   rV   rW   )r&   rj  endr1   rg  r   rZ   r'   r'   r(   0test_loc_setitem_with_expansion_and_existing_dst  s    zLTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_and_existing_dstc                 C   s   t tddgdgd}ddg|d< |djd|_||jdk djd	}| }||j	|jdkdf< t
|d
 |j	d gdd}t|j| |j	|jdkdf td }||j	|jdkdf< t|j	|jdkdf | d S )Nz2015-03-30 20:12:32z2015-03-12 00:11:11r   )r   rR   newoldnew_colr  r  r   )r6   r   r   Z1s)r   r   rn   rS   r  r   r  Z
tz_convertr   r   r   rV   r}   r   )r&   rY   vr   rZ   r'   r'   r(   test_setitem_with_expansion  s    
z7TestLocSetitemWithExpansion.test_setitem_with_expansionc                 C   sR   t  }d|jd< d|jd< d|jdtjf< |j}tddtjg}t|| d S )Nr6   r  r   )r6   r6   r;   r   )	r   r   rT   infrR   r   ZFloat64IndexrV   r  r   r'   r'   r(   0test_loc_setitem_with_expansion_inf_upcast_empty  s    

zLTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_inf_upcast_emptyz"ignore:indexing past lexsort depthc                 C   s`  t |sd S |d}t |}t|tj}t||dgd}d}||ksPt|t ||}t	|t
r|d d |kstn|d |kstt|d tj}t||dgd}	| }
||
j|df< t|
|	 | d }||j|< |	d tj}	t||	 | }
||
j|df< tt|tjg tjg| t|g d|d}	t|
|	 d S )	Nr   r   r   Zkapowr   r6   r   r6   rz   )r   repeatrT   rU   r   r   r   r   insert
isinstancer   r   r   r   rV   rW   r}   r   r   r   )r&   rS   requestNarrorigrr   r  Zexp_datarZ   rY   r   r'   r'   r(   /test_loc_setitem_with_expansion_nonunique_index  s8    


&zKTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_nonunique_indexr   ZInt32ZInt64ZUInt32ZUInt64ZFloat32ZFloat64c                 C   sv   t ddddg|d}td|i}t|jd}||j|jdf< t|| t|jd}|j|j|jdf< t|| d S )Nr   r6   r   r;   r   r   rz   )r   r   rS   r   rV   rW   Z_values)r&   r   r   rY   r   r'   r'   r(   6test_loc_setitem_with_expansion_preserves_nullable_int)  s    zRTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_preserves_nullable_intN)r\   r]   r^   ro   r  Zslowr  r  r  r  r  r  r  r  filterwarningsr  r  r  r'   r'   r'   r(   r    s    



- r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestLocCallablec                 C   s  t ddddgtdddddgd}|jdd  }t||j|jdk  |jd	d d d f }t||j|jd
kd d f  |jdd dd f }t||j|jdkdddgf  |jdd dd f }t||j|jdkdf  |jdd dd f }t||j|jdkddgf  |jdd dd f }t||j|jdkddgf  |jdd dd f }||jd kstd S )Nr6   r   r;   r>   r  r8   rj   rk   c                 S   s
   | j dkS Nr   r8   r   r'   r'   r(   r   B  r   zATestLocCallable.test_frame_loc_getitem_callable.<locals>.<lambda>c                 S   s
   | j dkS )NrG   )rj   r   r'   r'   r(   r   E  r   rG   c                 S   s
   | j dkS r  r  r   r'   r'   r(   r   H  r   c                 S   s
   | j dkS Nrj   r   r   r'   r'   r(   r   H  r   FTc                 S   s
   | j dkS r  r  r   r'   r'   r(   r   K  r   c                 S   s   dS r  r'   r   r'   r'   r(   r   K  r   rj   c                 S   s
   | j dkS r  r  r   r'   r'   r(   r   N  r   c                 S   s   ddgS Nr8   rj   r'   r   r'   r'   r(   r   N  r   r8   c                 S   s
   | j dkS r  r  r   r'   r'   r(   r   Q  r   c                 S   s   ddgS r  r'   r   r'   r'   r(   r   Q  r   c                 S   s   dS )Nr6   r'   r   r'   r'   r(   r   U  r   c                 S   s   dS )Nr8   r'   r   r'   r'   r(   r   U  r   r  )	r   r   r   rV   rW   r8   rj   r}   r   r&   rY   r  r'   r'   r(   test_frame_loc_getitem_callable<  s    $ "  z/TestLocCallable.test_frame_loc_getitem_callablec                 C   s   t ddddgtdddddgd}|jdd d	d
gf }t||j|jdkd	d
gf  |jddgdd f }t||jddgd	d
gf  |jddd f }t||jdd	d
gf  d S )Nr6   r   r;   r>   r  r  c                 S   s
   | j dkS r  r  r   r'   r'   r(   r   \  r   zITestLocCallable.test_frame_loc_getitem_callable_mixture.<locals>.<lambda>r8   rj   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   b  r   )r   r   r   rV   rW   r8   r}   r  r'   r'   r(   'test_frame_loc_getitem_callable_mixtureX  s    $ z7TestLocCallable.test_frame_loc_getitem_callable_mixturec                 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 )Nr6   r   r;   r>   r  Xr   r  rz   c                 S   s   ddgS Nr8   rk   r'   r   r'   r'   r(   r   j  r   zHTestLocCallable.test_frame_loc_getitem_callable_labels.<locals>.<lambda>r8   rk   c                 S   s   ddgS r  r'   r   r'   r'   r(   r   m  r   c                 S   s   ddgS r  r'   r   r'   r'   r(   r   p  r   c                 S   s   dS Nr  r'   r   r'   r'   r(   r   p  r   r  c                 S   s   ddgS r  r'   r   r'   r'   r(   r   s  r   c                 S   s   dgS r  r'   r   r'   r'   r(   r   s  r   c                 S   s   dS r  r'   r   r'   r'   r(   r   w  r   c                 S   s   dgS r  r'   r   r'   r'   r(   r   z  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   r   r   rV   rW   r}   r  r'   r'   r(   &test_frame_loc_getitem_callable_labelse  s"    "z6TestLocCallable.test_frame_loc_getitem_callable_labelsc                 C   sZ  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dg|jdd dd f< | }ddg|jddgdgf< t|| | }tddg|jddgdd f< | }tddg|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|jdd dgf< | }d|jddgdgf< t|| d S )Nr6   r   r;   r>   r  r  r  rz   ic                 S   s   ddgS r  r'   r   r'   r'   r(   r     r   zATestLocCallable.test_frame_loc_setitem_callable.<locals>.<lambda>r8   rk   r3   c                 S   s   d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S r  r'   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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   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   r   r   r   rV   rW   rT   r   )r&   rY   r  rW  r'   r'   r(   test_frame_loc_setitem_callable  sR    " z/TestLocCallable.test_frame_loc_setitem_callableN)r\   r]   r^   r  r  r  r!  r'   r'   r'   r(   r  ;  s   r  c                   @   sF   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgdd Z
d
S )TestPartialStringSlicingc                 C   sd   t dddgdddgdtdd	d
gd}t ddgddgdtdd
gd}|jd }t|| d S )NrM   rG   r*   r6   r   r;   )rO   rP   z
2020-08-01z
2020-07-02z
2020-08-05rz   z2020-08)r   r   r   rV   rW   r~   r'   r'   r(   5test_loc_getitem_partial_string_slicing_datetimeindex  s    

zNTestPartialStringSlicing.test_loc_getitem_partial_string_slicing_datetimeindexc                 C   sD   t jdddd}| }|jd d }|jd d }t|| d S )N
2017-01-01
2018-01-01r   rj  r  rO  z2017-12r   )r   period_range	to_seriesr   r   rV   r}   )r&   pir   r   rZ   r'   r'   r(   8test_loc_getitem_partial_string_slicing_with_periodindex  s
    zQTestPartialStringSlicing.test_loc_getitem_partial_string_slicing_with_periodindexc                 C   sB   t dddd}| }|jd d }|jd d }t|| d S )N1 day2 days1Hr&  z1 daysr   )r   r(  r   r   rV   r}   )r&   r   r   r   rZ   r'   r'   r(   ;test_loc_getitem_partial_string_slicing_with_timedeltaindex  s
    zTTestPartialStringSlicing.test_loc_getitem_partial_string_slicing_with_timedeltaindexc                 C   sD   t dtdittdddd}|jd }|jd }t|| d S )Nrx   r;   daysru  rz   r   0 days)r   r|   r   r   r   rV   r}   )r&   rY   rZ   Zslicedr'   r'   r(   #test_loc_getitem_str_timedeltaindex  s     

z<TestPartialStringSlicing.test_loc_getitem_str_timedeltaindexindexer_endN2020-01-02 23:59:59.999999999c              	   C   s   |dgd t tdtdtdtdtdg|dd	}|dgd
 t tdtdg|dd	}td|}|| }t|| |j| }t|| d S )Nr6   r?   z
2019-12-30z
2020-01-01z
2019-12-25r3  z
2019-12-19r  rz   r   )r   r   rJ   rV   rR  r   )r&   Ztz_aware_fixturer2  rT  rV  rZ   r   r   r'   r'   r(   /test_loc_getitem_partial_slice_non_monotonicity  s4    


zHTestPartialStringSlicing.test_loc_getitem_partial_slice_non_monotonicity)r\   r]   r^   r#  r*  r.  r1  ro   r  r  r4  r'   r'   r'   r(   r"    s   r"  c                
   @   s   e Zd Zdd Zdd Zejdej	dddd	e
d
ddd	gdd Zdd Zdd Zejdedddeddgeddeddeddgdeddeddggdd Zejd d!d"gd#d$ Zejd%dd&gd'd( Zd)d* ZdS )+TestLabelSlicingc                 C   s  t tjddddd dD d}t tjdddd	d d
D d}||fD ]}|jtddddd  }t|| |jd tdddd }t|| |jtddddtdddd }t|| |jtddddd  }|jdd  }t|| |jdd  }t|| qHd S )Nr  r   r   c                 S   s   g | ]}t d d|ddqS   r6   r:   r   r   r   r'   r'   r(   ry     s     zMTestLabelSlicing.test_loc_getitem_slicing_datetimes_frame.<locals>.<listcomp>)r6   r   r;   r>   rz   r  c                 S   s   g | ]}t d d|ddqS r6  r8  r   r'   r'   r(   ry     s     )r6   r   r   r;   r>   r7  r6   r:   r>   r  z20010101 11)r   rT   rU   r   r   rV   rW   r   )r&   Z	df_uniqueZdf_dupsrY   r   rZ   r'   r'   r(   (test_loc_getitem_slicing_datetimes_frame  s(    "z9TestLabelSlicing.test_loc_getitem_slicing_datetimes_framec                 C   s   t ddddd}tdddd	d
g|d}tddd}tddd}|j|| }tdd	g|dd
 d}t|| || }d}||kstd S )Nz2017-10-29 01:30:00zEurope/Berlinr?   z30 min)r  rk  rO  r   r6   r   r;   r>   rz   z2017-10-29 02:30:00+02:00r  z2017-10-29 02:00:00+01:00)r   r   r   r   rV   r}   r   )r&   rg  Zseries2Zt_1Zt_2r   rZ   r'   r'   r(   'test_loc_getitem_label_slice_across_dst"  s       z8TestLabelSlicing.test_loc_getitem_label_slice_across_dstrS   r$  r%  r   r&  r+  r,  r-  c                 C   s8   |  }|jd |d  }|jd d }t|| d S )Nr   r   )r(  r   r   rV   r}   )r&   rS   r   r   rZ   r'   r'   r(   -test_loc_getitem_label_slice_period_timedelta3  s    z>TestLabelSlicing.test_loc_getitem_label_slice_period_timedeltac                 C   s~   dddg}t tjdd|d}|jdd }t|dks>t|jdd	 }t|dks\t|jdd
 }t|dksztd S )Ngx"p|@g\Va|@g|@r;   r   rz   g3333c|@g    |@g3333|@g|@)r   rT   r{   r   r   r   r   )r&   rS   rY   s1r'   r'   r(   %test_loc_getitem_slice_floats_inexactA  s    
z6TestLabelSlicing.test_loc_getitem_slice_floats_inexactc                 C   s   t tjdtjddtdd}t|jdd  dks:tt|jdd  dksTttjddtd}d	|d
< ||_	t|jdd  dkstt|jdd  dkstd S )Nr:   r3   r   rz   g      (@rI   g      )@r=   gffffff(@r   )
r   rT   r{   r   rU   r   r   r   r   rS   )r&   r   rg  r'   r'   r(   )test_loc_getitem_float_slice_float64indexN  s     z:TestLabelSlicing.test_loc_getitem_float_slice_float64indexzstart,stop, expected_slicer   nsNr  r6   r   r<   r=   r>   r?   c                 C   s>   t tdtdd}|jt|| }|j| }t|| d S )Nr  r0  z10 days)r   r|   r   r   rJ   r   rV   r}   )r&   rj  stopZexpected_slicer   r   rZ   r'   r'   r(   $test_loc_getitem_slice_label_td64objZ  s    

z5TestLabelSlicing.test_loc_getitem_slice_label_td64objrj  Z2018Z2020c              	   C   sL   |dddgt dt dt dgd}tt |j|d  W 5 Q R X d S )	Nr6   r   r;   Z2016Z2019Z2017rz   Z2022)r   rV   r~  r  r   )r&   rT  rj  rV  r'   r'   r(   )test_loc_getitem_slice_unordered_dt_indexi  s    z:TestLabelSlicing.test_loc_getitem_slice_unordered_dt_indexr   g      ?c                 C   sN   |t d|dddgd}|j|d }|t d|dddgd}t|| d S )Nr>   r  r   thirdrz   )r|   r   rV   rR  )r&   rT  r   rV  r   rZ   r'   r'   r(   1test_loc_getitem_slice_labels_int_in_object_indexr  s    zBTestLabelSlicing.test_loc_getitem_slice_labels_int_in_object_indexc                 C   sZ   t dddddgd}t ddggdgtddgtdd}t|jd d dd f | d S )	Nr6   r   r;   )testr6   r   r   rz   r   )r   rS   rR   )r   r   r   rV   rW   r   rX   r'   r'   r(   *test_loc_getitem_slice_columns_mixed_dtypez  s      z;TestLabelSlicing.test_loc_getitem_slice_columns_mixed_dtype)r\   r]   r^   r9  r:  ro   r  r  r   r'  r   r;  r=  r>  rT   r  rJ   rA  rB  rD  rF  r'   r'   r'   r(   r5    s0   



r5  c                   @   sH   e Zd Zejdddgdd Zejdddgdd Zdd	 Zd
S )TestLocBooleanLabelsAndSlices
bool_valueTFc              	   C   sH   | d}|j dkrD||dd}tjt|d |j|  W 5 Q R X d S )Nz7: boolean label can not be used without a boolean indexr   r   r   rl   )Zinferred_typero   rp   r$   r   )r&   rS   rT  rH  messagerV  r'   r'   r(   'test_loc_bool_incompatible_index_raises  s
    

zETestLocBooleanLabelsAndSlices.test_loc_bool_incompatible_index_raisesc                 C   s&   |t ddgdddd}|j|  d S )NTFr   r   r   r   )r   r   )r&   rT  rH  rV  r'   r'   r(   test_loc_bool_should_not_raise  s
     z<TestLocBooleanLabelsAndSlices.test_loc_bool_should_not_raisec              	   C   s<   d}||dd}t jt|d |jdd  W 5 Q R X d S )NzEslice\(True, False, None\): boolean values can not be used in a slicer   r   rl   TF)ro   rp   rK   r   )r&   rS   rT  rI  rV  r'   r'   r(   test_loc_bool_slice_raises  s
    z8TestLocBooleanLabelsAndSlices.test_loc_bool_slice_raisesN)	r\   r]   r^   ro   r  r  rJ  rK  rL  r'   r'   r'   r(   rG    s
   


rG  c                   @   sL   e Zd Zdd Zejdddgdd Zdd	 Zd
d Z	e
jdd ZdS )TestLocBooleanMaskc                 C   s   t dtdi}ttddd|_|d dk|d dk|d dk g}ddddddddddg
ddddd	d
ddddg
ddddd	d
ddddg
g}t||D ]H\}}| }d|j|df< t |ttddddgdd}t|| qd S )Nrx   r:   r   ru  r;   r   r6   r   r>   r?   r<   r=   rI   r  r   r   )	r   r|   r   rS   r1  r   r   rV   rW   )r&   rY   Z
conditionsexpected_dataZcondr   r   rZ   r'   r'   r(   )test_loc_setitem_bool_mask_timedeltaindex  s"    "z<TestLocBooleanMask.test_loc_setitem_bool_mask_timedeltaindexr  Nr  c                 C   s   t ddddg}tdd|d}tdt di|dd}| }|j|d d f |j|d d f< t	|| | }|j| |j|< t	|| d S )	NTFZ20010101r>   rk  r  rM   rz   r   )
rT   r   r   r   rU   r   r   r   rV   rW   )r&   r  r   rg  rY   r   r'   r'   r(   +test_loc_setitem_mask_with_datetimeindex_tz  s     z>TestLocBooleanMask.test_loc_setitem_mask_with_datetimeindex_tzc                 C   s~   t tdddtdtddddd}| }|jd	 gtj	tj	g |d
< |j
dk }|j| j|j|d
f< t|| d S )Nr  r;   r   ZABrM  r-  )rk  rO  rQ   r   rk   r6   )r   rT   rU   r  r   r   r   rS   r   r  r8   r   rV   rW   )r&   rY   rZ   r   r'   r'   r(   2test_loc_setitem_mask_and_label_with_datetimeindex  s    
zETestLocBooleanMask.test_loc_setitem_mask_and_label_with_datetimeindexc                 C   s   t d}t d}tdt||gi}| }t|g}|d jd j}||jddg< |d jd j}||ksptt	|| d S )Nr   l   ,GsO1colr6   TF)
r   r   r   r   r   r   r   r   rV   rW   )r&   Ztd1Ztd2rY   Zdf_copyr   rZ   r   r'   r'   r(   'test_loc_setitem_mask_td64_series_value  s    
z:TestLocBooleanMask.test_loc_setitem_mask_td64_series_valuec                 C   sB   |  }|d dk}d|j|df< d|j|jdf< t|| d S )Nr8   r   rj   r6   )r   r   r   rV   rW   )r&   rf  rZ   r   r'   r'   r(   #test_loc_setitem_boolean_and_column  s
    z6TestLocBooleanMask.test_loc_setitem_boolean_and_column)r\   r]   r^   rO  ro   r  r  rQ  rR  rT  r  skip_array_manager_invalid_testrU  r'   r'   r'   r(   rM    s   
rM  c                   @   sX   e Zd Zejddd ejegdd Z	dd Z
dd	 Zejd
ddgdd ZdS )TestLocListliker  c                 C   s   | S rD   r'   r   r'   r'   r(   r     r   zTestLocListlike.<lambda>c              	   C   s  t ddtjg}ttd|d}|j|| }t|| ||| }t|| | j|| }t	||  |d d }|dd  }d}t
jt|d |j||  W 5 Q R X t
jt|d |||  W 5 Q R X t
jt|d | j||  W 5 Q R X d S )	Nr8   rj   r;   rz   r   r6   r   rl   )r
   rT   r   r   r|   r   rV   r}   Zto_framerW   ro   rp   r$   )r&   r  cir   r   Zser2Zci2rq   r'   r'   r(   8test_loc_getitem_list_of_labels_categoricalindex_with_na  s"    zHTestLocListlike.test_loc_getitem_list_of_labels_categoricalindex_with_nac              	   C   sZ   t jddddgdd}tdddd	gtd
ddd}tjtdd |j|  W 5 Q R X d S )Nz
2001-01-04z
2001-01-02z
2001-01-14r   r   r   r?   rI   r  z
2001-01-01r   r>   r  r   rl   )rT   r   r   r   ro   rp   r$   r   )r&   rr   r   r'   r'   r(   1test_loc_getitem_series_label_list_missing_values	  s    
 zATestLocListlike.test_loc_getitem_series_label_list_missing_valuesc              	   C   sR   t tddgtddgd}tjtdd |jtddg  W 5 Q R X d S )Nl   PF
AHl   UBeNl   P2$$nrS   r   r   rl   l   NZ4FG)r   rT   r   ro   rp   r$   r   r  r'   r'   r(   9test_loc_getitem_series_label_list_missing_integer_values	  s    zITestLocListlike.test_loc_getitem_series_label_list_missing_integer_values	to_periodTFc              	   C   sD  t ddddd}|r|d}tddg|dd	}tdtdg}|rRd
d |D }|j| }tddg|dd	}|s|jd |_tj||dd tdtdtdg}|rdd |D }tdddgt	|d|j
ddd	}|j| }tj||dd tdtdtdg}|rdd |D }tjtdd |j|  W 5 Q R X d S )N
2011-01-01z
2011-01-02r   rg  )rO  r   g?g?r   r   c                 S   s   g | ]}| d qS r   r]  rv   r'   r'   r(   ry   +	  s     zRTestLocListlike.test_loc_getitem_listlike_of_datetimelike_keys.<locals>.<listcomp>T)r,  c                 S   s   g | ]}| d qS r_  r`  rv   r'   r'   r(   ry   8	  s     )r   r   
2011-01-03c                 S   s   g | ]}| d qS r_  r`  rv   r'   r'   r(   ry   E	  s     r   rl   )r   r]  r   r   r   rS   rS  rV   r}   r   r   ro   rp   r$   )r&   r]  rg  r   r  r   rW  r'   r'   r(   .test_loc_getitem_listlike_of_datetimelike_keys 	  sB    

  
z>TestLocListlike.test_loc_getitem_listlike_of_datetimelike_keysN)r\   r]   r^   ro   r  r  rT   Zasarrayr   rY  rZ  r\  rb  r'   r'   r'   r(   rW    s   
		rW  z%columns, column_key, expected_columnsi  r  i  r6   ZAllr   c                 C   s   t tjdd| tdd}|jd d |f }|jdddg|f }|j rlt	dd |D rl|j
t|_tj||d	d
 d S )Nr;   r  rQ   r8   rj   rk   c                 s   s   | ]}t |tV  qd S rD   )r
  r  rv   r'   r'   r(   	<genexpr>Y	  s     z=test_loc_getitem_label_list_integer_labels.<locals>.<genexpr>T)r-  )r   rT   r{   r   r   r   r   rR   Z	is_objectr   r   r  rV   rW   )rR   Z
column_keyZexpected_columnsrY   rZ   r   r'   r'   r(   *test_loc_getitem_label_list_integer_labelsK	  s    
rd  c                  C   s   t jdd} t| }t j|jd d df< t | t t jgd ddf}t|dddddgd	}t	
|| t| }t j|jd d df< t	
|| d S )
NrI   r>   rr  r6   r   r   r   r7   r   )rT   r{   r  r   r   r   Zhstackr   r  rV   rW   )Z	rand_datar   rN  rZ   r'   r'   r(   test_loc_setitem_float_intindex_	  s    $re  c               	   C   sv   dd dD } t tdtdt| d}|jddd	d
 }t tdtdtd	ddd
gd}t|| d S )Nc                 S   s   g | ]}d D ]}||fqqS ))r=   rI   r  r:   r'   )rw   yrr   r'   r'   r(   ry   o	  s       z)test_loc_axis_1_slice.<locals>.<listcomp>)  rh   )r:   rI   Z
ABCDEFGHIJr   r6   r  )rg  r  )rh   rI   ri  )rg  r:   )rh   r=   )	r   rT   r!  r  r   r  r   rV   rW   )r   rY   r   rZ   r'   r'   r(   test_loc_axis_1_slicem	  s    rh  c                  C   sX   t dtdttdtdgd} |  }|jddgf |jddgf< t||  d S )NrM   r   r   r   r  )r   r|   r   r  r   r   rV   rW   )rZ   r   r'   r'   r(   !test_loc_set_dataframe_multiindex~	  s      ri  c                  C   s4   t tdtddgtd} | jd }|dks0td S )Nr   r6   r   r   r   )r   r|   r   r   r   r   )r   r   r'   r'   r(   test_loc_mixed_int_float	  s    
rj  c               	   C   sh   t tdddddgd} tt d| jd d< W 5 Q R X t ddddgddddgd}t| | d S )	Nr>   r8   rj   rk   r   rz   r   r;   )r   r|   rV   r~  r  r   r}   )r   rZ   r'   r'   r(   *test_loc_with_positional_slice_deprecation	  s
    rk  c               
   C   s   t ddd} ttjd| d}|d }d}||fD ]P}tjt|d |jd	d  W 5 Q R X t	t
 d	|jd	d< W 5 Q R X q4tjt|d |jd	dd	f  W 5 Q R X tj	t
d
d d|jd	dd	f< W 5 Q R X d S )Nz
2016-01-01r;   )rk  )r;   r   rz   r   zOcannot do slice indexing on DatetimeIndex with these indexers \[1\] of type intrl   r6   F)Zcheck_stacklevelr   )r   r   rT   r{   ro   rp   rK   r   rV   r~  r  )dtirY   r   rq   rV  r'   r'   r(   #test_loc_slice_disallows_positional	  s    rm  c               	   C   s   t tjdddddgtddddd	} | jd
dddg  } | j}t	|j
}d}tjt|d | j|  W 5 Q R X tjt|d | d j|  W 5 Q R X d S )Nr?   r;   rM   rG   r*   Z2012r  r  rQ   r   r   z/None of \[TimedeltaIndex.* are in the \[index\]rl   )r   rT   r{   r  r   r   r   rS   r   ZTimedeltaIndexZasi8ro   rp   r$   r   )rY   rl  rw  rq   r'   r'   r(   'test_loc_datetimelike_mismatched_dtypes	  s    rn  c                  C   s   t jdddd} ttjdd| d}t||j|   t||jt	|   t||jt	|   t|j
dd	 |j| dd	   t||jt	|   d S )
Nz2002-01z2003-12r   rN  r  r:   rz   r   r?   )r   r'  r   rT   r{   r  rV   rW   r   r   r   )rg  rY   r'   r'   r(   "test_loc_with_period_index_indexer	  s    $ro  c                   @   s  e Z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dd Zdd Zdd Zdd Zejdejejeegejdddddgdd Zejd ed!d"d"f d!ed"fgd#d$ Zd%d& Zejd'd(d)gd*d+ Zejd,d- Zd"S ).TestLocSeriesrn  )ro  r;   )rp  r>   c                 C   s$   t ddd}|j| |ks td S )Nr;   r>   )ro  rp  )r   r   r   )r&   r   rZ   r   r'   r'   r(   r8  	  s    zTestLocSeries.test_loc_uint64c           	      C   s   |j dddg }t|j| || t|jdd d |dd d  |j ddg \}}|j|| }|||}t|| || k}t|j| ||  |j| || kst|j| || kstd S )Nr;   r>   r=   r?   r      )	rS   rV   r}   r   r   r   truncatemedianr   )	r&   string_seriesdatetime_seriesindsd1d2r   rZ   r   r'   r'   r(   test_loc_getitem	  s    "zTestLocSeries.test_loc_getitemc              	   C   s   |j ddg \}}|d d d dddg }d}tjt|d |j||  W 5 Q R X tjt|d d|j||< W 5 Q R X d S )Nr?   rq  r   r6   r   z"Timestamp\('2000-01-10 00:00:00'\)rl   )rS   ro   rp   r$   r   )r&   ru  rw  rx  Zts2rq   r'   r'   r(   test_loc_getitem_not_monotonic	  s    z,TestLocSeries.test_loc_getitem_not_monotonicc              	   C   s>  t tjdttdddd}| }d|jdd< |jdd dk sPt	| }d|jdd< |jdd dkj
 st	|jdd	 }|jdd }|dd	d
dg}t|| t|| |jttdttddd  }tjtdd |jdd  W 5 Q R X tjtdd d|jdd< W 5 Q R X d S )Nr:   r   r3   r   rz   r>   r;   r  r<   rI   r?   r  r   z^3$rl   )r   rT   r{   r  r   r|   r   r   r   r   r   r   r   rV   r}   ro   rp   r$   )r&   r   cpr   r  rZ   s2r'   r'   r(   0test_loc_getitem_setitem_integer_slice_keyerrors	  s"     "z>TestLocSeries.test_loc_getitem_setitem_integer_slice_keyerrorsc                 C   s4   t |jd d }|j| }t||d d  d S )Nr:   )r  rS   r   rV   r}   )r&   rt  rg  r   r'   r'   r(   test_loc_getitem_iterator
  s    
z'TestLocSeries.test_loc_getitem_iteratorc                 C   s:   ||  k}| }d|j|< |}d||< t|| d S )Nr   )rs  r   r   rV   r}   )r&   rt  r   r   rZ   r'   r'   r(   test_loc_setitem_boolean
  s    
z&TestLocSeries.test_loc_setitem_booleanc              	   C   sP   t |jdddg }d|j|< d}tjt|d d|j|dg < W 5 Q R X d S )Nr?   rI   r  z\['foo'\] not in indexrl   ra   )r   rS   r   ro   rp   r$   )r&   rt  rv  rq   r'   r'   r(   test_loc_setitem_corner&
  s
    
z%TestLocSeries.test_loc_setitem_cornerc                 C   s   |j dddg }| }| }d||< d|j|< t|| | }| }d||d |d < d|j|d |d < t|| d S )Nr?   r:   rq  r   r   )rS   r   r   rV   r}   )r&   ru  indicesr{  rW  r'   r'   r(   test_basic_setitem_with_labels-
  s    
z,TestLocSeries.test_basic_setitem_with_labelsc           	   	   C   s   t tjdttdddd}dddg}tdddg}| }| }d||< d|j|< t	
|| | }| }d||< d|j|< t	
|| ddddg}tddddg}d	}tjt|d
 d||< W 5 Q R X tjt|d
 d||< W 5 Q R X d S )Nr:   r   r3   r   rz   r>   r<   r?   z\[5\] not in indexrl   )r   rT   r{   r  r   r|   r   r   r   rV   r}   ro   rp   r$   	Exception)	r&   r   rv  Zarr_indsr{  rW  Zinds_notfoundZarr_inds_notfoundrq   r'   r'   r(   !test_loc_setitem_listlike_of_ints<
  s(     


z/TestLocSeries.test_loc_setitem_listlike_of_intsc                 C   s   t tdddddddgd}| }td	dd
}||jd< |jd }||ksPt| }||jd< |jd }||ksxt| }||d< |d }||kstd S )Nr^  r;   z
US/EasternrP  rM   rG   r*   rz   ra  r  r   )r   r   r   r   r   r   r   )r&   r   r|  rZ   r   r'   r'   r(   test_loc_setitem_dt64tz_valuesW
  s"    



z,TestLocSeries.test_loc_setitem_dt64tz_valuesarray_fnr   r   r>   r?   r<   c                 C   s~   |dg| }t |ddddgtdtd}t dtdtd}||jd< t|| t dtdtd}||jd< t|| d S )Nr   Zabcder   rM   )r   r   r   r   rV   r}   r   )r&   r   r  r  rZ   r   r'   r'   r(   #test_loc_iloc_setitem_with_listlikem
  s    

z1TestLocSeries.test_loc_iloc_setitem_with_listliker   r8   Nc              	   C   s~   t tdddgdddgd}d}tjt|d	 |j|d d f  W 5 Q R X tjt|d	 d
|j|d d f< W 5 Q R X d S )N)r8   0)r8   1)rj   r     r  r  r[  zToo many indicesrl   r6   )r   r   r  ro   rp   rC  r   )r&   r   r   rq   r'   r'   r(   +test_loc_series_getitem_too_many_dimensions
  s    z9TestLocSeries.test_loc_series_getitem_too_many_dimensionsc                 C   s   |j dddg }| }d|j|< | }d|dddg< t|| d|jdd< d|dd< t|| |j ddg \}}d|j||< d|dd< t|| d|j|< d|j|< || dkst|| dkstd S )	Nr;   r>   r=   r?   r:   rq  r<   r  )rS   r   r   rV   r}   r   r   )r&   rt  rv  r   rZ   rw  rx  r'   r'   r(   test_loc_setitem
  s"    


zTestLocSeries.test_loc_setitemr   r   r   c                 C   s\   t ddgddgd|d}ddd|jd	d d f< t ddgddgd|d}t|| d S )
NabcdefZghiZjklr   r   ZnewAZnewBr   r  )r&   r   rY   rZ   r'   r'   r(   test_loc_assign_dict_to_row
  s    z)TestLocSeries.test_loc_assign_dict_to_rowc                 C   sp   t ddgd}tddddd|jd	< tddddd|jd	< t tddddggddgd	gd
}t|| d S )Nr   r   r   r<   r   ru  ra   )r   r   r6   rQ   )r   r   r   rV   rW   r  r'   r'   r(   ,test_loc_setitem_dict_timedelta_multiple_set
  s      z:TestLocSeries.test_loc_setitem_dict_timedelta_multiple_set)r\   r]   r^   ro   r  r  r8  ry  rz  r}  r~  r  r  r  r  r  rT   r   r   r   r  r  r   rJ   r  r  r  r  rV  r  r'   r'   r'   r(   rp  	  s*   
	$

	rp  )B__doc__collectionsr   r   r   r   r   ior   r   Zdateutil.tzr   ZnumpyrT   ro   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrV   Zpandas.api.typesr   Zpandas.tests.indexing.commonr   r   r_   r  r  r  r"  r5  rG  rM  rW  r  r  rd  re  rh  ri  rj  rk  rm  rn  ro  rp  r'   r'   r'   r(   <module>   sh   Hi          L / 9JQZ

