a
    j=ic!                 	   @   s  d Z ddlmZ ddlmZmZmZmZ ddlZddlm	Z	 ddl
ZddlZddlm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$m%Z%m&Z& ddl'm(Z) ddl*m+Z+ dd	l,m-Z- dd
l.m/Z/ ddl0m1Z1 ej23dej4ej4dgdej4ej4gg dgej4dgdej4gddgggdd Z5G dd de1Z6G dd dZ7G dd dZ8G dd dZ9G dd dZ:G dd dZ;G d d! d!Z<G d"d# d#Z=G d$d% d%e1Z>G d&d' d'Z?G d(d) d)Z@ej23d*g d+d,d-gdd.gfg d/d,d-gdd.gfg d/d,d0gdd1gfgd2d3 ZAd4d5 ZBd6d7 ZCd8d9 ZDd:d; ZEd<d= ZFd>d? ZGd@dA ZHdBdC ZIdDdE ZJdFdG ZKdHdI ZLej23dJdKeMdKeNdKgdLdM ZOej23dNe"dOdPfe"dQdRdSdTfgdUdV ZPdWdX ZQdYdZ ZRG d[d\ d\ZSdS )]z$ test label based indexing with loc     )
namedtuple)datedatetimetime	timedeltaN)gettz)IndexingError)CategoricalCategoricalDtypeCategoricalIndex	DataFrameDatetimeIndexIndex
IndexSlice
MultiIndexPeriodPeriodIndexSeriesSparseDtype	Timedelta	Timestamp
date_rangetimedelta_rangeto_datetimeto_timedelta)	is_scalar)Float64Index)_one_ellipsis_message)Basez series, new_series, expected_serba)FTTFTc                 C   sP   t d| i}||jd d df< t d|i}t| | t| |  d S NA)r   loctmassert_frame_equalisnaZnotna)seriesZ
new_seriesZexpected_serdfexpected r*   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/indexing/test_loc.pytest_not_change_nan_loc.   s
    	r,   c                   @   s  e Zd Zdd Zdd Zejddg ddgdd	gdgd
g ddgd
dgdgd
dgdgd
d	gdggdd Zejdg dg dgg dg dggdd Z	ejdg ddgdgg dg ddgg dg ddgg ddgdggdd Z
dd  Zd!d" Zd#d$ Zejd%edd&g d'deged(d)dgdeged*d+d,gdeged*d+d,gdeged*d-d*d,gdeggd.d/ Zd0d1 Zd2d3 Zejd4edgged5gd6eddd5f edgd5d7fedged5gd8d5dgfedgged5gd8d5edgd5d7fgd9d: ZdS );TestLocc                 C   s   | j dddgtd d S )Nr#      labelstypsfailscheck_resultKeyErrorselfr*   r*   r+   test_loc_getitem_int?   s    zTestLoc.test_loc_getitem_intc                 C   s   | j dddgtd d S )Nr#   cemptyr0   r3   r6   r*   r*   r+   test_loc_getitem_labelD   s    zTestLoc.test_loc_getitem_labelzkey, typs, axesf)intsuintsr/   mixedtsNfloats   )r=   r>   r?   r/   r@   r   c                 C   s   | j d|||td d S Nr#   r1   axesr2   r3   r7   keyr1   rE   r*   r*   r+   #test_loc_getitem_label_out_of_rangeI   s    z+TestLoc.test_loc_getitem_label_out_of_rangez	key, typsr      r.   )r=   r>   rA   )rJ         @r"   c                 C   s   | j d||td d S )Nr#   r0   r3   )r7   rG   r1   r*   r*   r+   test_loc_getitem_label_listY   s    	z#TestLoc.test_loc_getitem_label_listr:   )r   r.   
   )         rJ   ))rJ   rN   )rJ      )r.      multic                 C   s   | j d|||td d S rC   r3   rF   r*   r*   r+   (test_loc_getitem_label_list_with_missingd   s    z0TestLoc.test_loc_getitem_label_list_with_missingc                 C   s    | j dg dddgdtd d S )Nr#   )rB      (   r=   r>   rJ   rD   r3   r6   r*   r*   r+   !test_loc_getitem_label_list_failsq   s    z)TestLoc.test_loc_getitem_label_list_failsc                 C   s   d S Nr*   r6   r*   r*   r+   !test_loc_getitem_label_array_likew   s    z)TestLoc.test_loc_getitem_label_array_likec                 C   s    g d}| j d|dgtd d S )NTFTFr#   r:   r0   )r4   
IndexError)r7   r   r*   r*   r+   test_loc_getitem_bool|   s    zTestLoc.test_loc_getitem_boolzslc, typs, axes, failsrN   )r/   r?   r:   r@   rA   Z20130102Z20130104r.      r?   rQ   c                 C   s   | j d||||d d S rC   )r4   )r7   Zslcr1   rE   r2   r*   r*   r+   test_loc_getitem_label_slice   s    z$TestLoc.test_loc_getitem_label_slicec                 C   sp   t ddgddgddggddgg dd}td|jd	< t ddgd
dgddggddgg dd}t|| d S )NrB   r       col1col2)rM   rJ   rJ   columnsindexr.   )rJ   r`   r   rJ   )r   nparanger#   r$   r%   r7   r(   r)   r*   r*   r+    test_setitem_from_duplicate_axis   s     z(TestLoc.test_setitem_from_duplicate_axisc                 C   s   t g ddtjdgtdtjtdgdd}t dgtdgd	d}|j|j|d
  d
dgf< t g dg dtdtdtdgdd}t	
|| d S )NrJ   r.   rN   String 1String 2z2019-06-11 11:00:00z2019-06-11 12:00:00)Zchannelr"   B)dataString 3r"   rl   r"   rl   )rj   rn   rk   )r   re   NaNr   pdNaTvaluesr#   r&   r$   r%   )r7   r(   df2r)   r*   r*   r+   test_column_types_consistent   s.    
z$TestLoc.test_column_types_consistentzobj, key, expFrc   namerd   c                 C   s6   |j | }t|ttfr&t|| n||ks2J d S rX   )r#   
isinstancer   r   r$   assert_equal)r7   objrG   expresr*   r*   r+   #test_loc_getitem_single_boolean_arg   s    
z+TestLoc.test_loc_getitem_single_boolean_arg)__name__
__module____qualname__r8   r;   pytestmarkparametrizerH   rL   rT   rW   rY   r\   slice	TypeErrorr5   r^   rh   ru   r   r   r   r   r   r*   r*   r*   r+   r-   >   sv   








$r-   c                   @   s  e Zd Zd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g d'gd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zejd8d9 Zejd:d;ejd;ejd<ejg d=ejd<gd>d? Zd@dA ZdBdC ZdDdE Z dFdG Z!dHdI Z"ejdJg dKdLdM Z#dNdO Z$dPdQ Z%dRdS Z&dTdU Z'dVdW Z(dXdY Z)dZd[ Z*d\d] Z+d^d_ Z,ejd`dage-dbdadbedaggejdcddgeddggdedf Z.ejdgd;dhgg difdje/g dkdldmej0ej0gg dkgg didnfdodpdqgfdjdrge/dodhej0ej0gg dsdtduej0ej0ggg didnfdog dvfejg dwejd<e/dodhej0gg dwdtduej0ggg dvdnfe-dodldbg dxfg dwg dyge/dodhej0ej0gg dzg d{gg didnfe-dodldbg d|fejg dwg dygejd<e/dodhej0ej0gg d}g d~gg didnfe-dbdbdbdadpgfe/djdrgddgddggdadpgdne/g dg dg dgg dvdnfgdd Z1dd Z2dd Z3dd Z4dd Z5dd Z6ejj7ejdddgddggdd Z8dd Z9dd Z:dd Z;ejj<dddd Z=dd Z>dd Z?ej@ddd ZAej@ddd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIejdg dejdejejJeKgeLjMej@ddd ZNdd ZOeLjMddÄ ZPddń ZQejd`ddgddɄ ZRejdeSejeTeUgdd̄ ZVdd΄ ZWejddeTdogfdeTdhgfgddӄ ZXddՄ ZYejdd;g dעfe-dmdrg dآfdldtgg d٢fgddۄ ZZdd݄ Z[dd߄ Z\dd Z]ejdddggdd Z^dd Z_ejddadagdae-dbfgdd Z`dd Zadd Zbdd Zcdd Zddd Zeejdddgdd Zfdd Zgdd Zhdd Zid d Zjdd ZkdbS (  TestLocBaseIndependentc                 C   sH   t tddd}|jtdgd d  }|jdd  }t|| d S )NZ20212022ry   z2021/6/1r      )r   r   r#   re   arrayilocr$   r%   r7   r(   resultr)   r*   r*   r+   test_loc_npstr   s    z%TestLocBaseIndependent.test_loc_npstrz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   s   t tdddgtdtddgtddtd	gg d
g ddg d}tjt|d |j|  W d   n1 sz0    Y  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x2r   r   r   r   r   r   ri   rM   rB   rU   )r"   rl   CZV1ZV2r"   rl   r   matchN)r   r   	set_indexr   raisesr5   r#   )r7   msgrG   r(   r*   r*   r+   ;test_contains_raise_error_if_period_index_is_in_multi_index   s    	zRTestLocBaseIndependent.test_contains_raise_error_if_period_index_is_in_multi_indexc                 C   sR   t ddgi}tjtdd" |jd d df  W d    n1 sD0    Y  d S )Nr    rJ   u   אr   r   r   r   r5   r#   r7   r(   r*   r*   r+   $test_loc_getitem_missing_unicode_key  s    z;TestLocBaseIndependent.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)rB   rR   c                 S   s   g | ]}d |d  qS )ZABCDErR   r*   .0xr*   r*   r+   
<listcomp>      z@TestLocBaseIndependent.test_loc_getitem_dups.<locals>.<listcomp>rB   ry   )r"   r   r   r"   )r   re   randomZrandom_sampleranger#   r$   assert_series_equalr7   r(   r)   r   r*   r*   r+   test_loc_getitem_dups  s    
z,TestLocBaseIndependent.test_loc_getitem_dupsc                 C   st   t ddddtdggg ddgd}tddddtdgg ddd}|jd	 }t|| |jd }t|| d S )
NrJ   r.   r   r   20130101)r    r    r    r    r    rb   rd   rx   r   )r   r   r   r   r$   r   r#   r   r*   r*   r+   test_loc_getitem_dups2   s    

z-TestLocBaseIndependent.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sJ dddgf}| }|j|  d9  < t	|j| d|j|   d S )NZrtttiZaaaderR   float64dtypegq=
ףp?r.   g(\տ)mer   r   bar2r   rr   r          @)r   r   t)
r   listre   rf   r   copyr#   r$   r   r%   )r7   df_origindexerr(   r*   r*   r+   test_loc_setitem_dups5  s2    
z,TestLocBaseIndependent.test_loc_setitem_dupsc                 C   s   t g dtg dddd}|d dk}|j|df d }||j|df< t g dtg d	ddd}t|| t g dg ddd
d}|d dk}|j|df }||j|df< t g dg ddd
d}t|| d S )N)r   rJ   rJ   )d   r_   ,  Zuint32r   r    r   r    rJ   r   )r      i-  uint64)r   r   r#   r$   r%   )r7   Zdf1ixZnewb1r)   rt   Znewb2r*   r*   r+   test_loc_setitem_sliceY  s    z-TestLocBaseIndependent.test_loc_setitem_slicec                 C   s   t dgdgdgdgd}g d}d}tjt|d6 |jd d |f d	|jd d |f< W d    n1 sp0    Y  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 )Nr"   333333?        g      )idr    r   r9   r    r   r9   .will attempt to set the values inplace insteadr   float32r   )	r   r$   assert_produces_warningFutureWarningr#   astypere   r   r%   )r7   r(   colsr   r)   r*   r*   r+   test_loc_setitem_dtypen  s    D	z-TestLocBaseIndependent.test_loc_setitem_dtypec                 C   s   t tdg dd}tjtdd |ddg  W d    n1 sD0    Y  t td}tjtdd |ddg  W d    n1 s0    Y  d S )	NrN   r   ry   not in indexr   r    dr   )r   r   r   r   r5   r7   sr*   r*   r+   $test_getitem_label_list_with_missing  s    *z;TestLocBaseIndependent.test_getitem_label_list_with_missingrd   TFrZ   c                 C   s`   t g d}dt| dt| }tjt|d |j|  W d    n1 sR0    Y  d S )Nri   z Boolean index has wrong length: z instead of r   )r   lenr   r   r[   r#   )r7   rd   r   r   r*   r*   r+   test_loc_getitem_bool_diff_len  s    z5TestLocBaseIndependent.test_loc_getitem_bool_diff_lenc                 C   s   d S rX   r*   r6   r*   r*   r+   test_loc_getitem_int_slice  s    z1TestLocBaseIndependent.test_loc_getitem_int_slicec                 C   sj   t tjdg dg dd}d}tjt|d& |jddgddgf  W d    n1 s\0    Y  d S )	N)rN   rN   r   )er<   grd   rc   zJ\"None of \[Int64Index\(\[1, 2\], dtype='int64'\)\] are in the \[index\]\"r   rJ   r.   )r   re   r   r   r   r5   r#   r7   r(   r   r*   r*   r+   test_loc_to_fail  s    z'TestLocBaseIndependent.test_loc_to_failc                 C   s  t td}d|jd< d|jd< tjtdd |jd  W d    n1 sL0    Y  d}tjt|d |jdd	g  W d    n1 s0    Y  d
}tjt|d |jdg  W d    n1 s0    Y  d|jd< tjtdd |jdd	g  W d    n1 s0    Y  d|d< d}tjt|d |jd	g  W d    n1 sZ0    Y  |d= tjt|d d|jd	g< W d    n1 s0    Y  d S )Nr   rJ   r.   r    z^-1$r   zL\"None of \[Int64Index\(\[-1, -2\], dtype='int64'\)\] are in the \[index\]\"zE\"None of \[Index\(\['4'\], dtype='object'\)\] are in the \[index\]\"4rN   r   zH\"None of \[Int64Index\(\[-2\], dtype='int64'\)\] are in the \[index\]\"r   )r   objectr#   r   r   r5   )r7   r   r   r*   r*   r+   test_loc_to_fail2  s.    


(,*
.,z(TestLocBaseIndependent.test_loc_to_fail2c                 C   s   t dgdggddgdgd}d}tjt|d$ |jd	gd d f  W d    n1 sX0    Y  tjt|d |jd	g  W d    n1 s0    Y  d S )
Nr    r   rJ   r.   valuer   zG\"None of \[Int64Index\(\[3\], dtype='int64'\)\] are in the \[index\]\"r   rN   r   r   r*   r*   r+   test_loc_to_fail3  s    2z(TestLocBaseIndependent.test_loc_to_fail3c                 C   s   t g d}|jdg  tjttdd |jdg  W d    n1 sN0    Y  tjtdd |jddg  W d    n1 s0    Y  d S )Nri   r.   z="None of [Int64Index([3], dtype='int64')] are in the [index]"r   rN   r   )r   r#   r   r   r5   reescaper   r*   r*   r+   test_loc_getitem_list_with_fail  s    *z6TestLocBaseIndependent.test_loc_getitem_list_with_failc                 C   s   t tjjddg dd}|jdd }|jt| }|j| }t|| |j|j	 }t|| |jt
j|dd }t|| d S )	N)rR   rM   size)Zalpha_0Zalpha_1Zalpha_2Zbeta_0Zbeta_1ry   c                 S   s   d| v S )Nalphar*   r   r*   r*   r+   <lambda>  r   z7TestLocBaseIndependent.test_loc_index.<locals>.<lambda>booleanr   )r   re   r   rd   mapr#   r   r$   r%   rs   rq   )r7   r(   maskr)   r   r*   r*   r+   test_loc_index  s    
z%TestLocBaseIndependent.test_loc_indexc                 C   s   t tjddg dg dd}|jd d ddf jddd d f }|jddgk s^J |jddgk stJ t t	dgd	gd
jd }t
t	dd	gddgdd}t|| |jtksJ d S )NrQ   r"   rl   r   Drb   r"   rl   r   r.   r   rJ   r   r    r   r   )r   re   r   randr#   r   rc   allrd   r   r   r$   r   r   r   r   r*   r*   r+   test_loc_general  s    (z'TestLocBaseIndependent.test_loc_generalc                 C   s"   t tddttdtjddS )N
2000-01-01	2000-01-5rR   r   r   val)r   r   r   r   re   int64r6   r*   r*   r+   frame_for_consistency  s
    z,TestLocBaseIndependent.frame_for_consistencyr   r   r   )r   r   r   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   rR   rd   r   r   r   r   	r   r   r   re   r   r   r#   r$   r%   )r7   r   r   r)   r(   r*   r*   r+   test_loc_setitem_consistency"  s    z3TestLocBaseIndependent.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 )Nr   rR   ry   r   r   r   r   r7   r   r)   r(   r*   r*   r+   (test_loc_setitem_consistency_dt64_to_str3  s    z?TestLocBaseIndependent.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      ?rR   ry   r   r   r   r   r   r*   r*   r+   *test_loc_setitem_consistency_dt64_to_floatA  s    zATestLocBaseIndependent.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#   r$   r%   rg   r*   r*   r+   'test_loc_setitem_consistency_single_rowN  s    z>TestLocBaseIndependent.test_loc_setitem_consistency_single_rowc                 C   s   t ddgd}|d tj|d< t ddgd}td " d|jd d df< W d    n1 sb0    Y  t|| t ddgd}d|d< t|| d S )Nr   yrv   rJ   )r   r   re   r   r$   r   r#   r%   r7   r)   r(   r*   r*   r+   "test_loc_setitem_consistency_emptyV  s    0z9TestLocBaseIndependent.test_loc_setitem_consistency_emptyc           	      C   s  dgd g dg dg}t j|g dd}g dg dg}t j|d	d
gd}ddddtjgg dddddtjgg dg}t|||d}d}tjt|d4 t|j	d d df |j	d d df< W d    n1 s0    Y  tjt|d4 t|j	d d df |j	d d df< W d    n1 s&0    Y  tjd |dB |j	d d df |j	d d df  |j	d d df< W d    n1 s0    Y  tjd |d6 |j	d d df 
d|j	d d df< W d    n1 s0    Y  tg d|jdd}t|d | d S )NZRegion_1rQ   )Site_1r	  Site_2r
  )l   BP[ l   _Z l   q=.Z l   <.Z )RegionZSiteZRespondentIDnames)
Respondentr  r  OtherCatr  )Z	Something	StartDateEndDatezYes/NoZSomethingElseZLevel_0ZLevel_1r"   z5/25/2015 10:59z5/25/2015 11:22Yes)r"   z5/21/2015 9:40z5/21/2015 9:52r  r  z5/20/2015 8:27z5/20/2015 8:41)r"   z5/20/2015 8:33z5/20/2015 9:09r  ZNor   r   r   )r  r  )r  r  )r  ZDurationztimedelta64[s])id  i  iH  g     @r   )r   from_arraysre   nanr   r$   r   r   r   r#   r   r   rd   r   )	r7   levelsmiZclevelsr   rs   r(   r   r)   r*   r*   r+   -test_loc_setitem_consistency_slice_column_lenc  sN    020
2zDTestLocBaseIndependent.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[]r)   rw   )	r   re   
datetime64r#   rs   r   r   r$   r   )r7   r  r(   r)   r*   r*   r+   test_loc_assign_non_ns_datetime  s    	0&z6TestLocBaseIndependent.test_loc_assign_non_ns_datetimec                 C   s   t dg d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 g d
g dg dg dgg dd}ddg}|| t||< t|| d S )Nr   )   CO!g   s~!g    4	8   A{?r  T)r  cachedate_dt
date_dt_cpr.   rN   )r#  2017-01-24 13:26:12.711r*  )r$  2017-01-24 13:52:05.110r+  )r%  2018-10-22 13:44:05.888r,  )r&  2018-10-23 08:08:41.025r-  )r   r(  r)  rv   )r   	from_dictr   r#   applyr$   r%   )r7   r(   r)   rc   r*   r*   r+   test_loc_modify_datetime  s"    
  
z/TestLocBaseIndependent.test_loc_modify_datetimec                 C   sf   t g ddgtd}tjg ddd|jg ddf< tg dg dtd	}t d|i}t|| d S )
NrN   rR   rQ   r"   rd   rc   r   ri   r   r   rQ   rN   rR   r.   rN   rJ   r   )r   floatre   r   r#   r   r$   r%   )r7   r(   serr)   r*   r*   r+   #test_loc_setitem_frame_with_reindex  s
     z:TestLocBaseIndependent.test_loc_setitem_frame_with_reindexc                 C   s   t g dddgtd}d|d< d}tjt|d0 tjg dd	d
|jg ddf< W d    n1 sf0    Y  tg dg dd	d}t d|i}d|d< t	|| d S )Nr1  r"   rl   r2  r  r   r   ri   r   r   r3  r4  r   )
r   r5  r$   r   r   re   r   r#   r   r%   )r7   r(   r   r6  r)   r*   r*   r+   )test_loc_setitem_frame_with_reindex_mixed  s    >z@TestLocBaseIndependent.test_loc_setitem_frame_with_reindex_mixedc                 C   s   t g dddgtd}d|d< d}tjt|d4 tjg ddd	|jtd
dddf< W d    n1 sj0    Y  t g dddg dd}t	|| d S )Nri   r"   rl   r2  r  r   r   r   r   rN   r   r   )rN   r.   rJ   ro   ry   )
r   r5  r$   r   r   re   r   r#   r   r%   )r7   r(   r   r)   r*   r*   r+   *test_loc_setitem_frame_with_inverted_slice  s    BzATestLocBaseIndependent.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r   ir*   r*   r+   r     r   zGTestLocBaseIndependent.test_loc_setitem_empty_frame.<locals>.<listcomp>rR   r   r   c                 S   s   g | ]}d t | qS r:  r<  r>  r*   r*   r+   r     r   rQ   ry   r"   rl   r   ro   )r   re   rf   r   setunionr   r  r#   r   r   reindexr$   r%   )
r7   Zkeys1Zval1keys2Zval2rd   r(   ZseraZserbr)   r*   r*   r+   test_loc_setitem_empty_frame  s    


z3TestLocBaseIndependent.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sJJ |jd }|dks`J d|jd d d	d
f< |jd d d	d
f }|jd d dd f }t|| d S )NrQ   abcdABCDr   r   r   rJ   )r    r"   r   rl   r   )	r   re   r   randnr   r   r#   r$   r%   r   r*   r*   r+   test_loc_setitem_frame  s     



z-TestLocBaseIndependent.test_loc_setitem_framec                 C   sP   t g dtjd}|j|j|j|jkdf< t g dtjd}t|| d S )Nri   ro   rl   )r   re   r  r"   r#   rl   r$   r%   rg   r*   r*   r+   /test_loc_setitem_frame_nan_int_coercion_invalid  s    zFTestLocBaseIndependent.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tddgtd	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 )NrJ   r.   rN   rQ   r    r   )rJ   r.   r    r   r   rd   r   rx   rR   rO   )r   r#   r   r   r   r$   r   r%   r   r*   r*   r+   #test_loc_setitem_frame_mixed_labels  s    z:TestLocBaseIndependent.test_loc_setitem_frame_mixed_labelsc                 C   s  t g dttdtjdd}|jdd }|jdd |_||jdd< t g dtg d	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g dtjdd}|jdd }|jdd |_||jdd< t|| d S )Nr   r   bazrN   r   ro   rJ   r.   r   )r   rN  rN  )rJ   r.   r.   r   r   rR   r   Z20000101Z20000102Z20000103)r   rJ   r   rJ   r.   rQ   )r   r   r   re   r   r#   rd   r$   r%   r   r   )r7   r(   rhsr)   r*   r*   r+    test_loc_setitem_frame_multiples#  s:    z7TestLocBaseIndependent.test_loc_setitem_frame_multiplesr   r"   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sHJ d S )NrJ   r.   rN   rQ   r"   rl   rv   r   )r   r"   rQ  )r   r#   r   )r7   r   r   r(   r   r*   r*   r+   "test_loc_setitem_with_scalar_indexH  s    	
z9TestLocBaseIndependent.test_loc_setitem_with_scalar_indexzindex,box,expectedr.   r   rP   )rP   rP   rP   rP   rN   rQ   rv   rJ   r   r   r]   )rN   rQ   rP   r]   rR   rO   r   rP   r]   	   )rl   r   r   rM         )rN   rP   r]   rT  )rR   rM   rV  rW  )r   r"   r   )r]   rQ   rP   rT  )rV  rO   rM   rW  rT  rM   rV  rW  )rP   r.   r]   )rT  rQ   rM   )rV  rO   rW  c                 C   s   t ddgddgddggddgd	}d }t|d
 trH|d
 td krHt}d}tj||d ||j|< W d    n1 sz0    Y  t|| d S )NrJ   r.   rN   rQ   rR   rO   r"   rl   rv   r   r   r   )r   rz   r   r   r$   r   r#   r%   )r7   rd   boxr)   r(   warnr   r*   r*   r+    test_loc_setitem_missing_columnsW  s    5"(z7TestLocBaseIndependent.test_loc_setitem_missing_columnsc                 C   sZ   t dtddtjgi}|j}|jdg }t|j| |jdg }t|j| d S )Nr   r   UTCr   rJ   )	r   r   tz_localizerq   rr   dtypesr   r$   r   r   r*   r*   r+   test_loc_coercion  s    z(TestLocBaseIndependent.test_loc_coercionc                 C   sj   dd l }td| ddd| dddgi}|j}|jdg }t|j| |jdg }t|j| d S )Nr   r     rJ   i  r.   )r   r   r]  r   r$   r   )r7   r   r(   r)   r   r*   r*   r+   test_loc_coercion2  s    z)TestLocBaseIndependent.test_loc_coercion2c                 C   sZ   t ddgd gd  i}|j}|jdd }t|j| |jdd  }t|j| d S )Ntextz
some wordsrT  r   r.   rN   )r   r]  r   r$   r   r   r*   r*   r+   test_loc_coercion3  s    z)TestLocBaseIndependent.test_loc_coercion3c                 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  r   r   ry   r   r   rJ   )r   r\  r   r   r$   r   )r7   Z
indexer_slvalsr)   r6  r*   r*   r+   test_setitem_new_key_tz  s    
z.TestLocBaseIndependent.test_setitem_new_key_tzc                 C   s  t g dg ddg dd}d}tjt|d |jdd   W d    n1 sT0    Y  d	}tjt|d |jd
d   W d    n1 s0    Y  d}tjt|d |jdd  W d    n1 s0    Y  t g dg ddg ddjd
d}|jdd  }t g dg ddg dd}t|| |jd
d  }t|| |jdd }t g dg ddg dd}t|| d S )NrJ   r.   rN   rQ   rR   rO   )rN   rQ   rR   rO   rP   r]   ro   )r   rJ   r   rJ   r.   rN   ry   z5'Cannot get left slice bound for non-unique label: 1'r   rJ   z5'Cannot get left slice bound for non-unique label: 0'r   r.   axis)r.   rQ   rR   rO   )rQ   rO   rP   r]   )rJ   rJ   r.   rN   )r.   rQ   rR   )rQ   rO   rP   )rJ   rJ   r.   )r   r   r   r5   r#   
sort_indexr$   r%   )r7   r(   r   r   r)   r*   r*   r+   test_loc_non_unique  s2    ,,,z*TestLocBaseIndependent.test_loc_non_uniquez
length, l2  r   i 順 c              	   C   s   t d}tttj|t|t||dtt	|t|fdg| |dg}|j
jdu sbJ t|}|j| }t|dgtt	t|t|fdgt| |d||dd  g}t|| d S )NZABCDEFGr   r   FrJ   )r   rq   concatr   re   r   rH  r   rf   onesrd   Z	is_uniquer#   taker$   r%   )r7   lengthl2rc   r(   r   r   r)   r*   r*   r+    test_loc_non_unique_memory_error  s0     


z7TestLocBaseIndependent.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:J |jddg jj}|dksXJ d S )NrJ   Z
index_namer   )r   rd   rx   r   r#   r7   r(   r   r*   r*   r+   test_loc_name  s    z$TestLocBaseIndependent.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 )NrR   r.   r   T)check_index_typecheck_column_type)r$   ZmakeCustomDataframer%   r#   r   r   r*   r*   r+   !test_loc_empty_list_indexer_is_ok  s    (( z8TestLocBaseIndependent.test_loc_empty_list_indexer_is_okc           
      C   s  |rt jjdd}|j| tdg di}|jd d  }||usHJ |d d  |us\J t|d j	|d j	sxJ g d|jd d df< |r|d g dk
 sJ n|d dk
 sJ ||jd d d d f u sJ ttjdd}|d |jd d df u sJ tg d	}|jd d  }	|	|us8J |d d  |usNJ g d
|d d< |rt
|	d d g dksJ nt
|	d d g d
ksJ d S )Nz0setting with .loc[:, 'a'] does not alter inplacereasonr    ri   )rQ   rQ   rQ   rQ   rM   r   rf  rS  rN   )r   r   xfailnodeZ
add_markerr   r#   re   Zshares_memory_valuesr   r   rH  r   )
r7   using_array_managerrequestusing_copy_on_writer   Zoriginal_dfZ	sliced_dfr(   Zoriginal_seriesZsliced_seriesr*   r*   r+   &test_identity_slice_returns_new_object,  s2      z=TestLocBaseIndependent.test_identity_slice_returns_new_objectz!accidental fix reverted - GH37497rx  c                 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 )NrN   r    r   rv   r.   )r   zipr   r   r#   r$   r%   rd   )r7   r   r  qzr*   r*   r+   test_loc_copy_vs_viewW  s    z,TestLocBaseIndependent.test_loc_copy_vs_viewc                 C   s   t dj}tddg|d |gd}|j|d  }|jd }||ksHJ |j|d g }|jdg }t|| |j|d |g }t|| d S )Nr   rJ   r.   ry   r   )re   iinfomaxr   r#   r   r$   r   )r7   umaxr6  r   r)   r*   r*   r+   test_loc_uint64h  s    
z&TestLocBaseIndependent.test_loc_uint64c                 C   s   t dj}tddg|d |gd}tjtdd |jd  W d    n1 sR0    Y  tjtdd |jdg  W d    n1 s0    Y  d S )Nr   rJ   r.   ry   z-1r   r   )re   r  r  r   r   r   r5   r#   )r7   r  r6  r*   r*   r+   !test_loc_uint64_disallow_negativey  s    (z8TestLocBaseIndependent.test_loc_uint64_disallow_negativez,ignore:.*will attempt to set.*:FutureWarningc                 C   sP   g d}t |d gt| d}t ddgd}||jd d df< t|| d S Nri   r   r  r   r  rv   )r   r   r#   r$   r%   r7   rm   r)   r(   r*   r*   r+   *test_loc_setitem_empty_append_expands_rows  s
    zATestLocBaseIndependent.test_loc_setitem_empty_append_expands_rowsc                 C   sd   g d}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   re   r   r#   r$   r%   r  r*   r*   r+   6test_loc_setitem_empty_append_expands_rows_mixed_dtype  s    zMTestLocBaseIndependent.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  r   r  rc   r   )r   r   )r   re   r  r5  r#   r$   r%   r  r*   r*   r+   *test_loc_setitem_empty_append_single_value  s    zATestLocBaseIndependent.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 d    n1 s`0    Y  d		g d
}tjt
|d" ||jdddf< W d    n1 s0    Y  d S )NrJ   r.   r   r  rv   zFNone of \[Int64Index\(\[0, 1\], dtype='int64'\)\] are in the \[index\]r   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   rd   r   re   r   r   r   r5   r#   join
ValueError)r7   rm   r(   r   r*   r*   r+   $test_loc_setitem_empty_append_raises  s    0z;TestLocBaseIndependent.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 )NrJ   r.   rN   rQ   r   rw   )r   r#   re   r   r   r$   r   )r7   r(   r   r   r*   r*   r+   test_indexing_zerodim_np_array  s    z5TestLocBaseIndependent.test_indexing_zerodim_np_arrayc                 C   s,   t ddg}|jtd }|dks(J d S )NrJ   r.   r   )r   r#   re   r   )r7   r   r   r*   r*   r+   %test_series_indexing_zerodim_np_array  s    z<TestLocBaseIndependent.test_series_indexing_zerodim_np_arrayc                 C   s\   g dd gd  }t |tddd}t tddtjd}g d|jddd	< t|| d S )
Nrf  rQ   i  i  ry   r   )rO   rR   rQ   rN   r.   rJ   r   r   )r   r   re   r   r#   r$   r   )r7   rm   r)   r   r*   r*   r+   test_loc_reverse_assignment  s
    z2TestLocBaseIndependent.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=  re   r   )r   _r*   r*   r+   r     r   z^TestLocBaseIndependent.test_loc_setitem_str_to_small_float_conversion_type.<locals>.<listcomp>rR   r"   rv   r  c                 S   s   g | ]}t |qS r*   r5  r   r*   r*   r+   r     r   c                 S   s   g | ]}t |qS r*   r  r   r*   r*   r+   r     r   )re   r   seedr   r   r   r$   r%   r#   rd   r5  r   )r7   Zcol_datar   r)   r*   r*   r+   3test_loc_setitem_str_to_small_float_conversion_type  s    zJTestLocBaseIndependent.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	||}|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freqrT  rU   rN   ry   z1/4/2000r   )r   hourminuter   re   r   rH  r   r$   get_objr#   r   r{   rd   
_with_freq)	r7   frame_or_seriesrngr   r|   r   r}   chunkr)   r*   r*   r+   test_loc_getitem_time_object  s    
z3TestLocBaseIndependent.test_loc_getitem_time_object
spmatrix_t)Z
coo_matrixZ
csc_matrixZ
csr_matrixr   z>ignore:The behavior of .astype from SparseDtype.*FutureWarningc                 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   )rR   rP   r   r.   )Z
fill_value)scipy.sparsegetattrsparsere   eyer   from_spmatrixr   r#   rs   Ztoarrayr$   Zassert_numpy_array_equalr]  fullr   )r7   r  r   Zscipyrowsr   Zspmatrixr(   Zitr_idxr   r)   r*   r*   r+   $test_loc_getitem_range_from_spmatrix  s    
z;TestLocBaseIndependent.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 )Nr"   r   r   r   rJ   )r   rq   r   r   r#   r$   r%   rs  r*   r*   r+   ,test_loc_getitem_listlike_all_retains_sparse  s    zCTestLocBaseIndependent.test_loc_getitem_listlike_all_retains_sparsec                 C   s   ddl m} tj|d}|jtd }tg dg dgtddd	}t	|| |jtd jtd
 }tg dgtddd	}t	|| d S )Nr   )r  rR   r.   r  r   r   r   r   )r   r  r   r   r   r   r   r   rJ   )
r  r  r   r  r  r#   r   r   r$   r%   )r7   r  r(   r   r)   r*   r*   r+   test_loc_getitem_sparse_frame   s    z4TestLocBaseIndependent.test_loc_getitem_sparse_framec                 C   s   t g d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  rN   )r   r   r#   r   r$   r   )r7   r   r   r)   r*   r*   r+   test_loc_getitem_sparse_series3  s    z5TestLocBaseIndependent.test_loc_getitem_sparse_seriesr#   r   c                 C   sP   t g dg dgttd}t||d }tg dttdd}t|| d S )N)r  r         ?)r   r   r   r   r   )r   rx   )r   r   r5  r  r   r$   r   )r7   r   r(   r   r)   r*   r*   r+   !test_getitem_single_row_sparse_df?  s    z8TestLocBaseIndependent.test_getitem_single_row_sparse_dfkey_typec                 C   sD   |g d}|j d d |f }|j d d g df }t|| d S )Nr   )r#   r$   r%   )r7   float_framer  idxr   r)   r*   r*   r+   test_loc_getitem_iterableG  s    z0TestLocBaseIndependent.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rM   rQ   r   Z0srM   r   startperiodsr  )
r   re   r   normalr   rd   r#   r   r$   r%   r   r*   r*   r+   #test_loc_getitem_timedelta_0secondsN  s
    z:TestLocBaseIndependent.test_loc_getitem_timedelta_0secondsval,expected                c                 C   s4   t ddgddgd}|j| }||_t|| d S )NrJ   r.   r  r  ry   )r   r#   rx   r$   r   )r7   r   r)   r(   r   r*   r*   r+   test_loc_getitem_uint64_scalarV  s    
z5TestLocBaseIndependent.test_loc_getitem_uint64_scalarc                 C   s@   t g dg dd}| }d|jd< d|jd< t|| d S )Nr   )r         ?rJ   ry   ZzoorJ   r.   )r   r   r#   r   r$   r   r7   r6  r)   r*   r*   r+   ,test_loc_setitem_int_label_with_float64indexa  s
    

zCTestLocBaseIndependent.test_loc_setitem_int_label_with_float64indexzindexer, expected)
rB   rJ   r.   rN   rQ   rR   rO   rP   r]   rT  )
r   rJ   r.   rN   rB   rB   rB   rB   r]   rT  )
r   rJ   r.   rB   rQ   rB   rO   rP   r]   rT  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 )	NrM   r   r  r   r   r   rd   rB   r2  )r   r   r   r#   rd   r$   r%   )r7   r   r)   tdir(   r*   r*   r+   /test_loc_setitem_listlike_with_timedelta64indexk  s    zFTestLocBaseIndependent.test_loc_setitem_listlike_with_timedelta64indexc                 C   s   t g dtdd}t g d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 )N)rJ   rJ   rJ   rJ   rJ   Zaaaaar   )rJ   r   r   rJ   rJ   Zaabbar   r    
categoriesrJ   r.   rN   )r   r   r	   r#   r$   r%   )r7   r(   r}   r*   r*   r+   8test_loc_setitem_categorical_values_partial_column_slice  s
    ""zOTestLocBaseIndependent.test_loc_setitem_categorical_values_partial_column_slicec                 C   s   t dgdgd}t|d g dd}d}tjt|d" ||jd d df< W d    n1 s`0    Y  |d }t||jdd	}t|| d S )
Nr    r   )AlphaZNumericr  r   r  r   r   r   )	r   r	   r$   r   r   r#   r   rd   r   )r7   r(   r  r   r   r)   r*   r*   r+   'test_loc_setitem_single_row_categorical  s    0z>TestLocBaseIndependent.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sDJ td|jd ksZJ td	d
d
|jd< tt& td|jd ksJ W d    n1 s0    Y  td |jd ksJ d S )Nr9   z
2010-10-01rN   z
2008-08-08r   rJ   )r   r9   )rJ   r9   i  rR   )r.   r9   z
2005-05-05)	r   r   re   r!  r#   r   r$   r   r   r   r*   r*   r+   "test_loc_setitem_datetime_coercion  s    4z9TestLocBaseIndependent.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-12rN   H)r  r  r  tzr   r  r   r2  )r   r   re   r   r#   r$   r%   )r7   r  Ztz_naive_fixturer  r  r)   r   r*   r*   r+   !test_loc_setitem_datetimeindex_tz  s    z8TestLocBaseIndependent.test_loc_setitem_datetimeindex_tzc           
      C   sd  t dddd}ttjt|d|d}tddd}ttd	ddtd
dd}g d}g d}| }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30minr  rR   ry   rW  r   r     )   H   x      )         J   K   L   z   {   |            )r   r   re   r   rH  r   r   r   r   r#   r   r5  r$   r%   r   )
r7   r}  rd   r(   ZakeyZbkeyZaindsZbindsr   r)   r*   r*   r+   test_loc_setitem_time_key  s<    







z0TestLocBaseIndependent.test_loc_setitem_time_keyrG   c                 C   s   t g d}tg dg dg|d}| }tjdtd|jd d |f< tg dg dg|d}t	|| |j
d	d
}tjdtd|jd d |f< |j
d	d
}t	|| d S )N))r"   rQ   )rl   3)r"   2ri   rQ   rR   rO   rv   )r.   r.   r   )r   r.   r   )r   rR   r   rJ   rg  )r   from_tuplesr   r   re   Zzerosintr#   r$   r%   ri  )r7   rG   r  r(   r|   r)   r*   r*   r+   ,test_loc_setitem_unsorted_multiindex_columns  s    zCTestLocBaseIndependent.test_loc_setitem_unsorted_multiindex_columnsc                 C   s:   t g d|d}d|jd< t g d|d}t|| d S )Nri   r   rQ   r   )rQ   r.   rN   r   r#   r$   r   )r7   Zany_int_numpy_dtyper'   r)   r*   r*   r+   test_loc_setitem_uint_drop  s    
z1TestLocBaseIndependent.test_loc_setitem_uint_dropc                 C   sl   t dtddg }tdd|jg d< t dtddg }ttdd|jg d< t|| d S )NrM   r  rB   ri   )r   re   timedelta64r#   r   r$   r   r  r*   r*   r+   test_loc_setitem_td64_non_nano  s
    z5TestLocBaseIndependent.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 d    n1 sZ0    Y  d}tjt|d ||j	d d < W d    n1 s0    Y  d S )Nr.   r  z,shape mismatch: value array of shape \(2,2\)z0cannot reshape array of size 4 into shape \(2,\)r   zEcould not broadcast input array from shape \(2,2\) into shape \(2,?\))
re   r   rH  r   r   r  r   r   r  r#   )r7   rm   r6  r   r*   r*   r+    test_loc_setitem_2d_to_1d_raises  s    ,z7TestLocBaseIndependent.test_loc_setitem_2d_to_1d_raisesc                 C   sP   t jddd}tg dg dg dg|g dd}d	}|jd
 }t|| d S )Nr   rN   )r  r  ri   r  rS  r   r   rJ   )r  r"   )rq   interval_ranger   r#   r$   assert_almost_equal)r7   rd   r(   r)   r   r*   r*   r+   test_loc_getitem_interval_index	  s    
z6TestLocBaseIndependent.test_loc_getitem_interval_indexc                 C   sr   t jdddd}tg dg dg dg|g dd	}t jdd
ddd}tddg|dd}|jd }t|| d S )Nr   rN   Zboth)r  r  closedri   r  rS  r   r   r.   rJ   )r  r  r  r  rQ   r"   r   rJ   r"   )rq   r  r   r   r#   r$   r   )r7   rd   r(   Z	index_expr)   r   r*   r*   r+    test_loc_getitem_interval_index2  s    
z7TestLocBaseIndependent.test_loc_getitem_interval_index2tplrJ   rJ   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  r"   Frx   Ztupleize_colsry   )r   r   r#   r$   r%   )r7   r  r  r(   r   r)   r*   r*   r+   +test_loc_getitem_index_single_double_tuples   s    

zBTestLocBaseIndependent.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sjJ d S )N	IndexTyper    r   r   r   rN  ZbofZcomposite_indexFr  r  )rN   rQ   r"   rl   r   rJ   )r   r   r   r#   )r7   r  Zidx1Zidx2rd   r(   r   r*   r*   r+   !test_loc_getitem_index_namedtuple/  s    

z8TestLocBaseIndependent.test_loc_getitem_index_namedtuplec                 C   sx   t tjddg dg d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 )
NrR   rN   )r    r   r9   r   r   rM  r   quxr=  r.   r   )r   re   r   rH  r  r#   rd   r   r   r$   r  rs   rg   r*   r*   r+   $test_loc_setitem_single_column_mixed9  s    z;TestLocBaseIndependent.test_loc_setitem_single_column_mixedc                 C   sl   t tjddtdd}tj|d< d|jd< |j}tt	dgd t	d	g g d
d}t
|| d S )NrU   rN   ABCrv   eventr   )rM   r  r   r   )r"   rl   r   r  ry   )r   re   r   r   tupler  r#   r]  r   r   r$   r   r   r*   r*   r+   test_loc_setitem_cast2D  s    

z-TestLocBaseIndependent.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:J td|_|jjttjks^J d S )NonerO   r   )rJ   r  rP   )r   re   rf   Zint8r#   r]  r  r   r   r*   r*   r+   test_loc_setitem_cast3Q  s
    
z-TestLocBaseIndependent.test_loc_setitem_cast3c                 C   sf   |t dg dd}g d}|jdkr6dgdgdgg}||jt d	< |g d
|jd}t|| d S )NrR   )rN   rQ   rJ   r   r.   ry   )rT  rM   rV  r.   rT  rM   rV  rN   )r   rJ   rM   rT  rV  )r   ndimr#   rd   r$   r{   )r7   r  r|   rs   r)   r*   r*   r+   test_loc_setitem_range_keyY  s    
z1TestLocBaseIndependent.test_loc_setitem_range_key)lr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   fixturer   re   r   r   r   r  r  r  r  r  r"  r0  r7  r8  r9  rD  rI  rJ  rL  rP  r   rR  r   r  rZ  r^  r`  rb  re  rj  Zarm_slowrr  rt  rw  r  rz  r  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r   complextdZskip_if_no_scipyr  r  r  r  r  iterr   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r
  r*   r*   r*   r+   r      sj  

$
'
$
4

%	
$	
"		 3
"#
+













	
&


r   c                   @   sN   e Zd Zejejejgddd Zejdd Z	dd Z
dd	 Zd
d ZdS )TestLocWithEllipsis)paramsc                 C   s   |j S rX   )param)r7   r~  r*   r*   r+   r   h  s    zTestLocWithEllipsis.indexerc                 C   s   |}|t ur| }|S rX   )r   to_frame)r7   series_with_simple_indexr  r|   r*   r*   r+   r|   m  s    zTestLocWithEllipsis.objc                 C   s   ||d }t || d S )N.)r$   r{   )r7   r|   r   r   r*   r*   r+   test_loc_iloc_getitem_ellipsist  s    z2TestLocWithEllipsis.test_loc_iloc_getitem_ellipsisc           
      C   s(  |}|t ju st|dkrdn|jd }|t ju r@|j r@d S |t ju rt|jtrd}tj	t
|d" ||d|gf }W d    q1 s0    Y  n8t|dkr||d|gf }|||g }t || |t ju rdn|j}| }	||	d|gf }||	d d |gf }t || d S )Nr   z2MultiIndex does not support indexing with Ellipsisr   .)r$   r   r   rd   r#   
is_booleanrz   r   r   r   NotImplementedErrorr   rx   r  r%   )
r7   r  r   r|   rG   r   r   r)   key2r(   r*   r*   r+   &test_loc_iloc_getitem_leading_ellipsesx  s"    $2z:TestLocWithEllipsis.test_loc_iloc_getitem_leading_ellipsesc                 C   s&  |t ju st|dkrdn|jd }tjttd ||d  W d    n1 sT0    Y  tjttd$ ||d|gdf  W d    n1 s0    Y  tjttd" ||dd|f  W d    n1 s0    Y  tjtdd" |||ddf  W d    n1 s0    Y  d S )Nr   r   )...Too many indexers)r$   r   r   rd   r   r   r   r   )r7   r|   r   rG   r*   r*   r+   0test_loc_iloc_getitem_ellipses_only_one_ellipsis  s    $*20zDTestLocWithEllipsis.test_loc_iloc_getitem_ellipses_only_one_ellipsisN)r   r   r   r   r  r$   r#   r   r   r|   r  r  r  r*   r*   r*   r+   r  g  s   

r  c                   @   s  e Zd Zejdddgg dg dgfddgg dg dgfddgddgfg dg dgfddgddgfg dg d	gfddgddgfg dg d	gfddgddgfg dg dgfd
dgddgfg dg d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d"d# Zd$d% Zejd&ejejd'ejfd(d) Zd*d+ Zejd,d-d.gd/d0 Zd1d2 Zd3d4 Zd'S )5TestLocWithMultiIndexzkeys, expectedr   r    )r   r   r    r    )rJ   r.   rJ   r.   )r    r    r   r   rJ   r.   )r.   rJ   r.   rJ   r9   )r9   r    r    )rJ   r.   rJ   dimrd   rc   c                 C   s   |g dg dgi}t tdddfi |}t|}|dkrf|j|d d f }t|j	| n(|dkr|jd d |f }t|j
| d S )N)r9   r    r    r   r   )rJ   rJ   r.   rJ   r.      rR   rd   rc   )r   re   rf   reshaper   r  r#   r$   assert_index_equalrd   rc   )r7   r  keysr)   kwargsr(   	exp_indexr~   r*   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s8J |jj|jjdd  ksTJ |j d }|d j d }|jj|jjd ksJ |jj|jjd ksJ d S )N  r"   rJ   )r%  r.   r.   )r#   rd   r  rx   )r7   Z/multiindex_year_month_day_dataframe_random_data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   rJ   ry   )r   from_productr   r#   r$   r   r   )r7   r  r6  r~   r)   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 u s0J tdgddgg}t d gt| t|d}|jd }|d u srJ t dgt| t|d}|jd }|dksJ d S )	NLevel1Level2)r+  r,  Level2_aZLevel2_br  )r+  r-  rJ   )r   r   r  r#   r)  r   r   )r7   r6  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g dg dddgd}tg d|d}d|jd	d
< tg d|d}t|| d S )N)r   r   rN  rN  r   r   r  r  )r  twor  r/  r  r/  r  r/  firstsecondr  )rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   ry   r   )rN  r  )r   r/  )rJ   rJ   r   r   r   r   rJ   rJ   )r   r  r  r   r#   r$   r   )r7   rd   r   r)   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10minrl  r  r  il  rJ   i4  )r   r   r   r#   r   r$   r   )r7   timesr6  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 )NrM   r   z
2010-01-01z
2010-01-10ry   z
2010-01-05r    r   r   rQ   )r   r   r   r#   r   r$   r%   r   r*   r*   r+   3test_loc_getitem_datetime_string_with_datetimeindex  s    
zITestLocWithMultiIndex.test_loc_getitem_datetime_string_with_datetimeindexc                 C   s   t jg d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|g dd}|jd }t|| d S )N)r   r   r7  ZbahZbamr8  r7  r8  r"   rl   r  r  rJ   r   r.   rK   rN         @rQ         @rR         @rO   r   r   r   r   )level)r   rJ   rQ   rb   r7  )r   r  r   ri  ro  r#   r$   r%   )r7   r  r(   r)   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 g ddd}d|jd< t g ddd}t|| d S )Nr   categoryr   r   rN   )r    r   r9   r   r   r  r7   r   r)   r*   r*   r+   1test_additional_element_to_categorical_series_loc0  s    
zGTestLocWithMultiIndex.test_additional_element_to_categorical_series_locc                 C   s:   t g ddd}d|jd< t g ddd}t|| d S )Nr   r>  r   r    rN   r    r   r9   r    r  r?  r*   r*   r+   'test_additional_categorical_element_loc7  s    
z=TestLocWithMultiIndex.test_additional_categorical_element_locc                 C   s   t g dttg d|dd}tj|jd< t dddtjgttg d|dd}t|| tj|jd< t dtjdtjgttg d|dd}t|| d S )Nri   r   rN   rJ   r.   )r   r
   r   re   r  r#   r$   r   )r7   Zany_numeric_ea_dtypeZsrsr)   r*   r*   r+   &test_loc_set_nan_in_categorical_series>  s     z<TestLocWithMultiIndex.test_loc_set_nan_in_categorical_seriesnaNc                 C   sd   t g ddd}||jd< t g ddd}||jd< t|| t ddd|gdd}t|| d S )	Nr   r>  r   rN   rA  r    r   r9   r  )r7   rD  Zsrs_enlargeZsrs_setintor)   r*   r*   r+   ,test_loc_consistency_series_enlarge_set_intoS  s    

zBTestLocWithMultiIndex.test_loc_consistency_series_enlarge_set_intoc                 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.      r    r   rM   r   rR   rJ   ZIndex1ZIndex2)r  codesr  )rm   rd   Fr>  )r  orderedrx   r   )r   re   rf   r   r   r   rd   r  r$   r   r#   r   r*   r*   r+   5test_loc_getitem_preserves_index_level_category_dtype`  s&    	zKTestLocWithMultiIndex.test_loc_getitem_preserves_index_level_category_dtypelt_valuerU   rM   c                 C   s|   t dg ditdg dgd}tjtdd: |j|d |k d d f jdgd d f  W d    n1 sn0    Y  d S )	Nr    )rW     "   -   aabbr   rJ   r.   rN   ry   z\['b'\] not in indexr   r   )r   r   r   r   r5   r#   )r7   rJ  r(   r*   r*   r+   >test_loc_multiindex_levels_contain_values_not_in_index_anymorey  s     zTTestLocWithMultiIndex.test_loc_multiindex_levels_contain_values_not_in_index_anymorec                 C   sl   t t jt jg}ddg}t||g}tddg|d}|jd d df }tdgt jgd}t|| d S )Nr   rN  r   rJ   ry   )	re   r   r  r   r  r   r#   r$   r   )r7   lev1lev2r  r6  r   r)   r*   r*   r+   'test_loc_multiindex_null_slice_na_level  s    z=TestLocWithMultiIndex.test_loc_multiindex_null_slice_na_levelc                 C   sr   t jtdtdddggg dd}ttd|d}|jd	d d d d f }|jd
d d }t	|j| d S )NabxyrJ   r.   )rT  rU  numr  r]   ry   r    r   rQ   )
r   r)  r   r   r   r#   rd   Z	droplevelr$   r   )r7   r  r6  Z
loc_resultr)   r*   r*   r+   test_loc_drops_level  s    z*TestLocWithMultiIndex.test_loc_drops_level)r   r   r   r   r   r   r$  r(  r*  r.  r2  r5  r6  r=  r@  rB  rC  re   r  rq   ZNArr   rE  rI  rP  rS  rW  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
ejjddd dd dd dd gg dddd Zdd Zdd Zdd Zdd Zejddd Zejd g d!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 )Nr   i@B r   r   rJ   iAB )r   r   r   r#   r$   r%   r?  r*   r*   r+   /test_loc_setitem_with_expansion_large_dataframe  s    zKTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_large_dataframec                 C   sV   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 S )Nr   rJ   ry   rN   r   r   r#   r$   r   r7   r6  r*   r*   r+   test_loc_setitem_empty_series  s
    


z9TestLocSetitemWithExpansion.test_loc_setitem_empty_seriesc                 C   sV   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 S )Nr   r  rJ   ry   rK   rN   rZ  r[  r*   r*   r+   #test_loc_setitem_empty_series_float  s
    


z?TestLocSetitemWithExpansion.test_loc_setitem_empty_series_floatc                 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 d|jd< t|t g dg d	d d S )
Nr   rJ   r   ry   rN   r   rQ   )rJ   rN   rQ   )r   r   rN   rZ  r[  r*   r*   r+   %test_loc_setitem_empty_series_str_idx  s    



zATestLocSetitemWithExpansion.test_loc_setitem_empty_series_str_idxc                    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 )Nr   rV  rJ   
US/Pacific)tzinfoc                    s   g | ]} t |d  d qS )rk  )seconds)r   r>  baser*   r+   r     r   zUTestLocSetitemWithExpansion.test_loc_setitem_incremental_with_dst.<locals>.<listcomp>   r   ry   )r   r   r   r   r#   r$   r   )r7   idxsr   r@   r)   r*   rb  r+   %test_loc_setitem_incremental_with_dst  s    zATestLocSetitemWithExpansion.test_loc_setitem_incremental_with_dstconvc                 C   s   | S rX   r*   r   r*   r*   r+   r     r   z$TestLocSetitemWithExpansion.<lambda>c                 C   s   |   S rX   )to_datetime64r   r*   r*   r+   r     r   c                 C   s   |   S rX   )to_pydatetimer   r*   r*   r+   r     r   c                 C   s
   t | S rX   )re   r!  r   r*   r*   r+   r     r   )r7   rh  ri  znp.datetime64)Zidsc                 C   sb   t d}t d}t }d|j||df< d|j||df< tdddgi||gd}t|| d S )	Nz20130101 09:00:00z20130101 10:00:00r   r  r_   g      Y@g      i@ry   )r   r   r#   r$   r%   )r7   rg  Zdt1Zdt2r(   r)   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 )Nr"   rJ   r   )rH  rl   ro   )r   r	   r#   r$   r%   )r7   rH  r   r)   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}||vs@J 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  )Z	inclusiver  r   r   rW  r2  )r   r   r   r#   re   r  r   appendr   r   r$   r%   )r7   r  endr@   r  r   r)   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	}| }t	j
td
d$ ||j|jdkdf< W d    n1 s0    Y  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   )rm   rc   newoldnew_colr[  r_  zmismatched timezoner   r   )rJ   r   rw   Z1s)r   r   r   rd   r\  r   rs  Z
tz_convertr   r$   r   r   r#   r   r   r   )r7   r(   vrt   r)   r*   r*   r+   test_setitem_with_expansion  s    
2z7TestLocSetitemWithExpansion.test_setitem_with_expansionc                 C   sP   t  }d|jd< d|jd< d|jdtjf< |j}tddtjg}t|| d S )NrJ   rG  r.   )rJ   rJ   rN   r   )r   r#   re   infrc   r   r$   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}||vsPJ |t ||}t|t	r|d d |ksJ n|d |ksJ 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   rJ   r   rJ   ry   )r   repeatre   rf   r   r   r   insertrz   r   r   r   r#   r$   r%   r   r   r  r5  )r7   rd   NarrorigrG   r#  Zexp_datar)   r(   r6  r*   r*   r+   /test_loc_setitem_with_expansion_nonunique_index  s8    


&zKTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_nonunique_indexr   )ZInt32Int64ZUInt32ZUInt64ZFloat32ZFloat64c                 C   sr   t g d|d}td|i}t|jd}||j|jdf< t|| t|jd}|j|j|jdf< t|| d S )NrO  r   rm   ry   )r   r   rd   r#   r$   r%   r|  )r7   r   r6  r(   r   r*   r*   r+   6test_loc_setitem_with_expansion_preserves_nullable_intJ  s    zRTestLocSetitemWithExpansion.test_loc_setitem_with_expansion_preserves_nullable_intN)r   r   r   r   r   ZslowrY  r\  r]  r^  rf  r   rj  rk  rp  ru  rw  r  r~  r  r*   r*   r*   r+   rX    s4   







-rX  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestLocCallablec                 C   sz  t g dtdg d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g d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svJ d S )NrJ   r.   rN   rQ   rN  r   c                 S   s
   | j dkS Nr.   r"   r   r*   r*   r+   r   c  r   zATestLocCallable.test_frame_loc_getitem_callable.<locals>.<lambda>r.   c                 S   s
   | j dkS )Nr   )rl   r   r*   r*   r+   r   f  r   r   c                 S   s
   | j dkS r  r  r   r*   r*   r+   r   i  r   c                 S   s
   | j dkS Nrl   rv   r   r*   r*   r+   r   i  r   )FTFc                 S   s
   | j dkS r  r  r   r*   r*   r+   r   l  r   c                 S   s   dS r  r*   r   r*   r*   r+   r   l  r   rl   c                 S   s
   | j dkS r  r  r   r*   r*   r+   r   o  r   c                 S   s   ddgS Nr"   rl   r*   r   r*   r*   r+   r   o  r   r"   c                 S   s
   | j dk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  r   c                 S   s   dS )NrJ   r*   r   r*   r*   r+   r   v  r   c                 S   s   dS r!   r*   r   r*   r*   r+   r   v  r   r  )r   r   r#   r$   r%   r"   rl   r   r7   r(   r~   r*   r*   r+   test_frame_loc_getitem_callable]  s        z/TestLocCallable.test_frame_loc_getitem_callablec                 C   s   t g dtdg d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 )Nr  rN  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>r"   rl   r.   rN   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$   r%   r"   r   r  r*   r*   r+   'test_frame_loc_getitem_callable_mixturey  s     z7TestLocCallable.test_frame_loc_getitem_callable_mixturec                 C   s  t g dtddtdd}|jdd  }t||jdd	g  |jd
d d d f }t||jdd	gd d f  |jdd dd f }t||jdd	gdf  |jdd dd f }t||jdd	gdgf  |jdd	gdd f }t||jdd	gdf  |jdd	gdd f }t||jdd	gdgf  |jdd df }t||jdd	gdf  |jdd dgf }t||jdd	gdgf  d S )Nr  rN  Xr  rF  ry   c                 S   s   ddgS Nr"   r   r*   r   r*   r*   r+   r     r   zHTestLocCallable.test_frame_loc_getitem_callable_labels.<locals>.<lambda>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   c                 S   s   dS Nr  r*   r   r*   r*   r+   r     r   r  c                 S   s   ddgS r  r*   r   r*   r*   r+   r     r   c                 S   s   dgS r  r*   r   r*   r*   r+   r     r   c                 S   s   dS r  r*   r   r*   r*   r+   r     r   c                 S   s   dgS r  r*   r   r*   r*   r+   r     r   c                 S   s   ddgS r  r*   r   r*   r*   r+   r     r   c                 S   s   ddgS r  r*   r   r*   r*   r+   r     r   )r   r   r#   r$   r%   r   r  r*   r*   r+   &test_frame_loc_getitem_callable_labels  s"    z6TestLocCallable.test_frame_loc_getitem_callable_labelsc                 C   sV  t g dtddtdd}| }d|jdd < | }d|jd	d
g< t|| | }d|jdd d d f< | }d|jd	d
gd d f< t|| | }d|jdd dd f< | }d|jd	d
gdf< t|| | }d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 )Nr  rN  r  rF  ry   ic                 S   s   ddgS r  r*   r   r*   r*   r+   r     r   zATestLocCallable.test_frame_loc_setitem_callable.<locals>.<lambda>r"   r   rB   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  rR   rM   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#   r$   r%   re   r   )r7   r(   r~   r}   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   s^   t g dg ddtg dd}t ddgdd	gdtd
dgd}|jd }t|| d S )Nr   ri   )r`   ra   )
2020-08-01z
2020-07-02
2020-08-05ry   r    r9   rJ   rN   r  r  z2020-08)r   r   r#   r$   r%   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  r  ro  r  z2017-12r   )rq   period_range	to_seriesr#   r   r$   r   )r7   pir6  r   r)   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   r$   r   )r7   r   r6  r   r)   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 )Nr   rN   daysr  ry   r   0 days)r   r   r   r   r#   r$   r   )r7   r(   r)   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 )NrJ   rR   z
2019-12-30z
2020-01-01z
2019-12-25r  z
2019-12-19rl  ry   r.   )r   r   r   r$   r{   r#   )r7   Ztz_aware_fixturer  r  r|   r)   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  r  r   r   r   r  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 )Nr9  r   r   c                 S   s   g | ]}t d d|ddqS   rJ   rM   r   r   r>  r*   r*   r+   r   ,	  r   zMTestLabelSlicing.test_loc_getitem_slicing_datetimes_frame.<locals>.<listcomp>r  ry   r:  c                 S   s   g | ]}t d d|ddqS r  r  r>  r*   r*   r+   r   2	  r   )rJ   r.   r.   rN   rQ   r  rJ   rM   rQ   rV  z20010101 11)r   re   rf   r#   r   r$   r%   r   )r7   Z	df_uniqueZdf_dupsr(   r   r)   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g d|d}tddd	}td
dd	}|j|| }tddg|dd d}t|| || }d}||ksJ d S )Nz2017-10-29 01:30:00zEurope/BerlinrR   z30 min)r  r  r  )r   rJ   r.   rN   rQ   ry   z2017-10-29 02:30:00+02:00rl  z2017-10-29 02:00:00+01:00r.   rN   rQ   )r   r   r   r#   r$   r   )r7   r  Zseries2Zt_1Zt_2r   r)   r*   r*   r+   'test_loc_getitem_label_slice_across_dstC	  s    z8TestLabelSlicing.test_loc_getitem_label_slice_across_dstrd   r  r  r  r  r  r  r  c                 C   s8   |  }|jd |d  }|jd d }t|| d S )Nr   r   )r  r#   r   r$   r   )r7   rd   r6  r   r)   r*   r*   r+   -test_loc_getitem_label_slice_period_timedeltaT	  s    z>TestLabelSlicing.test_loc_getitem_label_slice_period_timedeltac                 C   s|   g d}t tjdd|d}|jdd }t|dks<J |jdd }t|dksZJ |jdd }t|dksxJ d S )	N)gx"p|@g\Va|@g|@rN   r.   ry   g3333c|@g    |@g3333|@g|@)r   re   r   r   r#   r   )r7   rd   r(   s1r*   r*   r+   %test_loc_getitem_slice_floats_inexactb	  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:J t|jdd  dksTJ tjddtd}d	|d
< ||_t|jdd  dksJ t|jdd  dksJ d S )NrM   rB   r   ry   g      (@r]   g      )@rP   gffffff(@r.   )	r   re   r   r   rf   r5  r   r#   rd   )r7   r6  r  r*   r*   r+   )test_loc_getitem_float_slice_float64indexo	  s     z:TestLabelSlicing.test_loc_getitem_float_slice_float64indexzstart,stop, expected_slicer   nsNrV  rJ   r   rO   rP   rQ   rR   c                 C   s>   t tdtdd}|jt|| }|j| }t|| d S )NrV  r  z10 days)r   r   r   r#   r   r   r$   r   )r7   r  stopZexpected_slicer6  r   r)   r*   r*   r+   $test_loc_getitem_slice_label_td64obj{	  s    

z5TestLabelSlicing.test_loc_getitem_slice_label_td64objr  Z2018Z2020c                 C   s^   |g dt dt dt dgd}tt |j|d  W d    n1 sP0    Y  d S )Nri   Z2016Z2019Z2017ry   r   )r   r$   r   r   r#   )r7   r  r  r|   r*   r*   r+   )test_loc_getitem_slice_unordered_dt_index	  s    z:TestLabelSlicing.test_loc_getitem_slice_unordered_dt_indexr   r  c                 C   sN   |t d|dddgd}|j|d }|t d|dddgd}t|| d S )NrQ   r0  r.   thirdry   )r   r#   r$   r{   )r7   r  r   r|   r   r)   r*   r*   r+   1test_loc_getitem_slice_labels_int_in_object_index	  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 )	NrJ   r.   rN   )testrJ   r.   r   ry   r   )rm   rd   rc   )r   r   r   r$   r%   r#   rg   r*   r*   r+   *test_loc_getitem_slice_columns_mixed_dtype	  s
    z;TestLabelSlicing.test_loc_getitem_slice_columns_mixed_dtype)r   r   r   r  r  r   r   r   rq   r  r   r  r  r  re   r  r   r  r  r  r  r*   r*   r*   r+   r  %	  s0   



r  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   s\   | d}|j dkrX||dd}tjt|d |j|  W d    n1 sN0    Y  d S )Nz7: boolean label can not be used without a boolean indexr   r   r   r   )Zinferred_typer   r   r5   r#   )r7   rd   r  r  messager|   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#   )r7   r  r  r|   r*   r*   r+   test_loc_bool_should_not_raise	  s    z<TestLocBooleanLabelsAndSlices.test_loc_bool_should_not_raisec                 C   sP   d}||dd}t jt|d |jdd  W d    n1 sB0    Y  d S )NzEslice\(True, False, None\): boolean values can not be used in a slicer   r   r   TF)r   r   r   r#   )r7   rd   r  r  r|   r*   r*   r+   test_loc_bool_slice_raises	  s
    z8TestLocBooleanLabelsAndSlices.test_loc_bool_slice_raisesN)	r   r   r   r   r   r   r  r  r  r*   r*   r*   r+   r  	  s
   


r  c                   @   sT   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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}g dg dg dg}t||D ]H\}}| }d|j|df< t |ttddddgd	d
}t|| qdd S )Nr   rM   r   r  rN   )
r   rJ   r.   rN   rM   rM   rM   rM   rM   rM   )
r   rJ   r.   rM   rQ   rR   rO   rP   r]   rT  )
rM   rM   rM   rN   rQ   rR   rO   rP   r]   rT  r   r2  )	r   r   r   rd   r  r   r#   r$   r%   )r7   r(   Z
conditionsexpected_dataZcondrm   r   r)   r*   r*   r+   )test_loc_setitem_bool_mask_timedeltaindex	  s"    "z<TestLocBooleanMask.test_loc_setitem_bool_mask_timedeltaindexr  Nr[  c                 C   s   t g d}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 )NrZ   Z20010101rQ   r  r  r    ry   r   )
re   r   r   r   rf   r   r   r#   r$   r%   )r7   r  r   r  r(   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;  rN   r.   ZABr  r  )r  r  rb   r   r   rJ   )r   re   rf   r  r   r   r   rd   rq   rr   r"   r#   r$   r%   )r7   r(   r)   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spJ t|| d S )Nr   l   ,GsO1colrJ   TF)	r   r   r   r   r   r   r#   r$   r%   )r7   Ztd1Ztd2r(   Zdf_copyr6  r)   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 )Nr"   r   rl   rJ   )r   r#   rs   r$   r%   )r7   r  r)   r   r*   r*   r+   #test_loc_setitem_boolean_and_column
  s
    z6TestLocBooleanMask.test_loc_setitem_boolean_and_columnc                 C   sR  t g dg dd}t dg dig dd|jg ddgf< t g d	g dd}t|| t g dg dd}tg d
g dd|jg ddgf< t|| t g dg dd}tg d
g dd|jg ddf< t|| t g dg dd}| }|d }tg d
g dd|jg d< |rBt|| nt|| d S )Nri   r  r   r    r   )r.   rJ   r   ry   )FFT)rJ   r.   rM   rU  )r   r#   r$   r%   r   r   )r7   r  r(   r)   r   r6  r*   r*   r+   )test_loc_setitem_ndframe_values_alignment
  s&    $"z<TestLocBooleanMask.test_loc_setitem_ndframe_values_alignment)r   r   r   r  r   r   r   r  r  r  r  skip_array_manager_invalid_testr  r  r*   r*   r*   r+   r  	  s   

	r  c                   @   s`   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d ZdS )TestLocListlikerX  c                 C   s   | S rX   r*   r   r*   r*   r+   r   0
  r   zTestLocListlike.<lambda>c                 C   sL  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 d    n1 s0    Y  t
jt|d |||  W d    n1 s0    Y  t
jt|d" | j||  W d    n1 s>0    Y  d S )	Nr"   rl   rN   ry   r   rJ   r   r   )r   re   r  r   r   r#   r$   r   r  r%   r   r   r5   )r7   rX  cir6  r   Zser2Zci2r   r*   r*   r+   8test_loc_getitem_list_of_labels_categoricalindex_with_na0
  s"    ,*zHTestLocListlike.test_loc_getitem_list_of_labels_categoricalindex_with_nac                 C   sf   t jg ddd}tg dtdddd}tjtd	d
 |j|  W d    n1 sX0    Y  d S )N)
2001-01-04z
2001-01-02r  z
2001-01-14r!  r   )r.   rR   r]   rV  z
2001-01-01r   rQ   r3  r   r   )re   r   r   r   r   r   r5   r#   )r7   rG   r6  r*   r*   r+   1test_loc_getitem_series_label_list_missing_valuesL
  s    zATestLocListlike.test_loc_getitem_series_label_list_missing_valuesc                 C   sf   t tddgtddgd}tjtdd$ |jtddg  W d    n1 sX0    Y  d S )Nl   PF
AHl   UBeNl   P2$$nrd   rm   r   r   l   NZ4FG)r   re   r   r   r   r5   r#   r[  r*   r*   r+   9test_loc_getitem_series_label_list_missing_integer_valuesU
  s    zITestLocListlike.test_loc_getitem_series_label_list_missing_integer_values	to_periodTFc                 C   sX  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g d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 d    n1 sJ0    Y  d S )N
2011-01-01z
2011-01-02r   r  )r  rx   皙?皙?r   r   c                 S   s   g | ]}| d qS r   r  r   r*   r*   r+   r   i
  r   zRTestLocListlike.test_loc_getitem_listlike_of_datetimelike_keys.<locals>.<listcomp>T)ru  c                 S   s   g | ]}| d qS r  r  r   r*   r*   r+   r   v
  r   )r  r  r  )rx   r   
2011-01-03c                 S   s   g | ]}| d qS r  r  r   r*   r*   r+   r   
  r   r   r   )r   r  r   r   r#   rd   r  r$   r   r   r   r   r   r5   )r7   r  r  r6  r!  r   r}   r*   r*   r+   .test_loc_getitem_listlike_of_datetimelike_keys^
  s>    


z>TestLocListlike.test_loc_getitem_listlike_of_datetimelike_keysc                 C   sd   t ddgddgddggg ddd	gd
}|jd d }d|j_|jtddgdd }t|| d S )NrJ   r.   rQ   rR   rP   r]   )cobraviperZ
sidewinderZ	max_speedshieldr   r   r  r  rw   )r   r   rd   rx   r#   r   r$   r%   r   r*   r*   r+   test_loc_named_index
  s    z$TestLocListlike.test_loc_named_indexN)r   r   r   r   r   r   re   Zasarrayr   r  r  r  r  r  r*   r*   r*   r+   r  /
  s   
		
)r  z%columns, column_key, expected_columns)  r_  i  r  r_  rJ   )r  r_  Allr  r.   c                 C   sT   t tjdd| tdd}|jd d |f }|jg d|f }tj||dd d S )NrN   r  rb   r   T)rv  )	r   re   r   r   r   r   r#   r$   r%   )rc   Z
column_keyZexpected_columnsr(   r)   r   r*   r*   r+   *test_loc_getitem_label_list_integer_labels
  s    
r  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|g dd}t	
|| t| }t j|jd d df< t	
|| d S )Nr]   rQ   r  rJ   )r   r  r   rK   r  rv   )re   r   rH  r   r  r#   Zhstackr   r  r$   r%   )Z	rand_datar   r  r)   r*   r*   r+   test_loc_setitem_float_intindex
  s    $r  c                  C   sr   dd dD } t tdtdt| d}|jddd	d
 }t tdtdtg dd}t|| d S )Nc                 S   s   g | ]}d D ]}||fqqS ))rP   r]   rT  rM   r*   )r   yrr  r*   r*   r+   r   
  r   z)test_loc_axis_1_slice.<locals>.<listcomp>)  r   )rM   r]   Z
ABCDEFGHIJr   rJ   rg  r  rT  r   r]   r  )r  )r  rM   )r   rP   r  )	r   re   rn  r  r   r  r#   r$   r%   )r   r(   r   r)   r*   r*   r+   test_loc_axis_1_slice
  s    r  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 )Nr    r.   r   r   rx  )r   r   r   r)  r   r#   r$   r%   )r)   r   r*   r*   r+   !test_loc_set_dataframe_multiindex
  s    r  c                  C   s4   t tdtddgtd} | jd }|dks0J d S )Nr.   rJ   r   r   r   )r   r   r   r   r#   )r6  r   r*   r*   r+   test_loc_mixed_int_float
  s    
r  c                  C   sp   t tdg dd} tt d| jd d< W d    n1 sB0    Y  t g dg dd}t| | d S )NrQ   r   ry   r.   rN   )r.   r.   r.   rN   )r   r   r$   r   r   r#   r   )r6  r)   r*   r*   r+   *test_loc_with_positional_slice_deprecation
  s
    ,r  c               	   C   s0  t ddd} ttjd| d}|d }d}||fD ]x}tjt|d |jd	d  W d    n1 sj0    Y  t	t
 d	|jd	d< W d    q41 s0    Y  q4tjt|d" |jd	dd	f  W d    n1 s0    Y  t	t
" d
|jd	dd	f< W d    n1 s"0    Y  d S )Nz
2016-01-01rN   r  )rN   r.   ry   r   zOcannot do slice indexing on DatetimeIndex with these indexers \[1\] of type intr   rJ   r.   )r   r   re   r   r   r   r   r#   r$   r   r   )dtir(   r6  r   r|   r*   r*   r+   #test_loc_slice_disallows_positional
  s    ,.0r  c                  C   s   t tjddg dtddddd} | jg d  } | j}t	|j
}d	}tjt|d
 | j|  W d    n1 s|0    Y  tjt|d
 | d j|  W d    n1 s0    Y  d S )NrR   rN   r   Z2012r  r3  rb   )r   r.   r.   rN   z/None of \[TimedeltaIndex.* are in the \[index\]r   r    )r   re   r   rH  r   r   r   rd   rq   ZTimedeltaIndexZasi8r   r   r5   r#   )r(   r  r  r   r*   r*   r+   'test_loc_datetimelike_mismatched_dtypes
  s    (r  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  r  r  rM   ry   r   rR   )rq   r  r   re   r   rH  r$   r%   r#   r   r   )r  r(   r*   r*   r+   "test_loc_with_period_index_indexer  s    $r  c                  C   sv   t jdd} tddd}g d}t| ||d}t j|j|jd df< t j| d d	d
< t| ||d}t	|| d S )Nr]   rO   r  r  )r"   rl   r   r   EFr   rJ   ro   r   r.   )
re   r   rH  r   r   r  r#   rd   r$   r%   )rd  r  r   r}   r~   r*   r*   r+   %test_loc_setitem_multiindex_timestamp  s    r  c                  C   s2  g d} ddg}ddg}t j| ||gg dd}tdtd	|d
}|jd d | d |d |d ff }|jd d d df }t|| |j| d |d |d fg ddd}t|| |jd }|jd d }	|j| d |d |d fg ddd}
t	|
|	 |j| d |d |d f }|dks.J d S )Nr   rx  )rJ   r   r   rJ   )r   r  r  r  rO   rR   r   rI   )r<  rh  )
r   r)  r   r   r#   r   r$   r%   Zxsr   )rQ  rR  Zlev3r   r(   r   r)   Zaltr6  Z	expected2Zalt2r'  r*   r*   r+   'test_loc_getitem_multiindex_tuple_level+  s     $&
&r  c               	   C   s   t tg dg dddtjtjggjg ddd} | d}|jjdksNJ |jd }t	dd	g|j
ddd
}t|| |jt|_|jd }t|| d S )Nr  )rR   rO   rP   r]   rJ   r.   r   r  )rm   rc   r   r9   rR   rK  )r   re   r   r  Tr   rd   r   r#   r   rc   r$   r   r   r   )r(   rt   r~   r)   r*   r*   r+   /test_loc_getitem_nullable_index_with_duplicatesI  s    $


r  r   r   c                 C   sB   t g ddgdd}| |jd< t g ddgdd}t|| d S )Nr  r`   Zuint8r  )r.   r`   )rJ   r.   r   rQ   uint16r   r#   r$   r%   )r   r(   r)   r*   r*   r+   test_loc_setitem_uint8_upcast]  s    
r  zfill_val,exp_dtypez
2022-01-06zdatetime64[ns]z
2022-01-07
US/Easternrl  zdatetime64[ns, US/Eastern]c                 C   sj   ddd|   g}t|| j|d}tg ddg|d}d|jd	< |d
 t||d}tj|j|dd d S )Nz
2022-01-02z
2022-01-03z
2022-01-04)r  r   )rM   rV  rW  r  r    rb   r  )
2022-01-08r    r  r   T)exact)	r   r   r  r   r#   rn  r$   r   rd   )Zfill_valZ	exp_dtyperm   rd   r(   Zexpected_indexr*   r*   r+   0test_loc_setitem_using_datetimelike_str_as_indexh  s    	

r  c                  C   sJ   t tdg} d| jd d df< t dgdgdgdgd}t| | d S )NabcrR   r`   r    r   r9   )r   rJ   r.   r`   )r   r   r#   r$   r%   )r(   r)   r*   r*   r+   test_loc_set_int_dtype|  s    r  c                  C   sr   t g dddd} tg dg dg dg dg| g d	d
}|jddgddd }|j| d ddf dksnJ d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400r   rl   )rx   r  )r"   rl   r  )r"   r   r   )rQ  QrK   )Wr  r9  )ONETWOVALUESr   r  r  T)rn  r   r   r"   r  )r   r   r   r#   )Zp_indexZ	mi_seriesr*   r*   r+   test_loc_periodindex_3_levels  s    r  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g d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+d, Zd-d. ZdS )/TestLocSeriesr  )r  rN   )r  rQ   c                 C   s$   t ddd}|j| |ks J d S )NrN   rQ   )r  r  )r   r#   )r7   r   r)   r6  r*   r*   r+   r    s    zTestLocSeries.test_loc_uint64c           	      C   s   |j g d }t|j| || t|jdd d |dd d  |j ddg \}}|j|| }|||}t|| || k}t|j| ||  |j| || ksJ |j| || ksJ d S )NrN   rQ   rP   rR   r.      )rd   r$   r   r#   rB  r   truncatemedian)	r7   string_seriesdatetime_seriesindsd1d2r   r)   r   r*   r*   r+   test_loc_getitem  s    "zTestLocSeries.test_loc_getitemc                 C   s   |j ddg \}}|d d d g d }d}tjt|d |j||  W d    n1 s^0    Y  tjt|d d|j||< W d    n1 s0    Y  d S )NrR   r  r.   )rJ   r.   r   z"Timestamp\('2000-01-10 00:00:00'\)r   r   )rd   r   r   r5   r#   )r7   r  r
  r  Zts2r   r*   r*   r+   test_loc_getitem_not_monotonic  s    ,z,TestLocSeries.test_loc_getitem_not_monotonicc                 C   sf  t tjdttdddd}| }d|jdd< |jdd dk sPJ | }d|jdd< |jdd dkj	 sJ |jdd	 }|j
dd }|g d
}t|| t|| |jttdttddd  }tjtdd |j
dd  W d    n1 s0    Y  tjtdd d|j
dd< W d    n1 sX0    Y  d S )NrM   r   rB   r.   ry   rQ   rN   rV  rO   )rQ   rO   r]   rM   rR   rT  r   z^3$r   )r   re   r   rH  r   r   r   r   r   rs   r#   rB  r$   r   r   r   r5   )r7   r6  cpr   r'  r)   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 )NrM   )r  rd   r#   r$   r   )r7   r  r  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   )r  r   r#   r$   r   )r7   r  r   r   r)   r*   r*   r+   test_loc_setitem_boolean  s    
z&TestLocSeries.test_loc_setitem_booleanc                 C   sb   t |jg d }d|j|< d}tjt|d  d|j|dg < W d    n1 sT0    Y  d S )N)rR   r]   rW  rR   z\['foo'\] not in indexr   r   )r   rd   r#   r   r   r5   )r7   r  r	  r   r*   r*   r+   test_loc_setitem_corner  s
    
z%TestLocSeries.test_loc_setitem_cornerc                 C   s   |j g d }| }| }d||< d|j|< t|| | }| }d||d |d < d|j|d |d < t|| d S )N)rR   rM   r  r   r.   )rd   r   r#   r$   r   )r7   r  indicesr  r}   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}g d}tg d}| }| }d||< d|j|< t	
|| | }| }d||< d|j|< t	
|| g d}tg d}d}tjt|d	 d||< W d    n1 s0    Y  tjt|d	 d||< W d    n1 s0    Y  d S )
NrM   r   rB   r.   ry   )r   rQ   rO   r   rQ   rR   rO   z\[5\] not in indexr   )r   re   r   rH  r   r   r   r   r#   r$   r   r   r   r5   	Exception)	r7   r6  r	  Zarr_indsr  r}   Zinds_notfoundZarr_inds_notfoundr   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g dd}| }tddd}||jd	< |jd	 }||ksNJ | }||jd
< |jd
 }||ksvJ | }||d	< |d	 }||ksJ d S )Nr  rN   r  r  r   ry   r  rl  r    r   )r   r   r   r   r#   r   )r7   r6  r  r)   r   r*   r*   r+   test_loc_setitem_dt64tz_values  s"    



z,TestLocSeries.test_loc_setitem_dt64tz_valuesarray_fnr   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   r    )r   r   r   r#   r$   r   r   )r7   r   r  r|  r)   r6  r*   r*   r+   #test_loc_iloc_setitem_with_listlike*  s    

z1TestLocSeries.test_loc_iloc_setitem_with_listliker   r"   Nc                 C   s   t tg dg dd}d}tjt|d" |j|d d f  W d    n1 sT0    Y  tjt|d" d|j|d d f< W d    n1 s0    Y  d S )N))r"   0)r"   1)rl   r  )   rF  rK  r  r  r   rJ   )r   r   r  r   r   r   r#   )r7   r   r6  r   r*   r*   r+   +test_loc_series_getitem_too_many_dimensions<  s    0z9TestLocSeries.test_loc_series_getitem_too_many_dimensionsc                 C   s   |j g d }| }d|j|< | }d|g d< 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sJ || dksJ d S )Nr  rR   rM   r  rO   rd  rQ   )rd   r   r#   r$   r   r   )r7   r  r	  r   r)   r
  r  r*   r*   r+   test_loc_setitemJ  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 )
Nr  defZghiZjklro   r   ZnewAZnewBr   r  )r7   r   r(   r)   r*   r*   r+   test_loc_assign_dict_to_rowd  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   rv   rO   r   r  r   )r   r   rJ   rb   )r   r   r#   r$   r%   r?  r*   r*   r+   ,test_loc_setitem_dict_timedelta_multiple_setn  s    z:TestLocSeries.test_loc_setitem_dict_timedelta_multiple_setc                 C   sl   t ddgdgd}ddg|jdddgf< t ttjtjgd	d
dtjgdtjgdddgd}t|| d S )NrJ   r.   r    r   rO   rP   r   r9   r   r   r   ry   )r   r#   r   re   r  r$   r%   rg   r*   r*   r+   3test_loc_set_multiple_items_in_multiple_new_columnsy  s    	zATestLocSeries.test_loc_set_multiple_items_in_multiple_new_columnsc                 C   s6   t jdddd}ttd|d}|jd dks2J d S )N2000rB   rl   r  ry   z
2000-01-14rT  )rq   r  r   r   r#   )r7   rd   r'   r*   r*   r+    test_getitem_loc_str_periodindex  s    z.TestLocSeries.test_getitem_loc_str_periodindex) r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  re   r   rq   r   r  r  r   r   r  r   r"  r  r  r#  r$  r&  r*   r*   r*   r+   r    s.   
	$

	

r  )T__doc__collectionsr   r   r   r   r   r   Zdateutil.tzr   numpyre   r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasrq   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr$   Zpandas.api.typesr   Zpandas.core.apir   Zpandas.core.indexingr   Zpandas.tests.indexing.commonr   r   r   r  r,   r-   r   r  r  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  int16r  r  r  r  r  r*   r*   r*   r+   <module>   s   P 
	 %           < w DJnf
	




	