U
    f/e*                     @   s  d Z ddlmZ ddlZddl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 ddlmZ dd Zdd Zd	d
 Zdd Zejdedddddgdeddieddiedgedddgddddgdeddddgieddddgiggdd Zdd Zdd Zdd Zdd Zdd  Z d!d" Z!d#d$ Z"d%d& Z#ej$d'd(d) Z%d*d+ Z&d,d- Z'd.d/ Z(d0d1 Z)d2d3 Z*d4d5 Z+d6d7 Z,d8d9 Z-d:d; Z.d<d= Z/ejd>ed?d@dAdBedCd@dDdBedEd@dFdBgdGdH Z0dIdJ Z1dKdL Z2dS )Mz test get/set & misc     )	timedeltaN)		DataFrame
IndexSlice
MultiIndexSeries	Timedelta	Timestamp
date_rangeperiod_rangetimedelta_rangec               	   C   s   t tjddddddgd} d}tjt|d | d  W 5 Q R X tjt|d d| d< W 5 Q R X tjtdd | d	  W 5 Q R X |  } tjt|d | d  W 5 Q R X d
}tjt|d d| d< W 5 Q R X d S )N   abindexz/index 5 is out of bounds for axis 0 with size 5matchr   z^'c'$cz7index 5 is out of bounds for axis (0|1) with size 5|^5$)	r   nprandomrandnpytestraises
IndexErrorKeyErrorZ
sort_index)smsg r   N/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/series/indexing/test_indexing.pytest_basic_indexing   s    r   c                 C   sh   | j dddg }| | }| |}t|| | |d |d  }| j|d |d  }t|| d S )Nr   
      r      )r   reindextmassert_series_equalloc)datetime_seriesindicesresultexpectedr   r   r   test_basic_getitem_with_labels+   s    
r+   c                  C   sl   t tdddddddgd} tddd	}| jd }||ks>t| jd
 }||ksTt| d }||kshtd S )Nz
2011-01-01   z
US/Eastern)periodstzr   r   r   r   )r.   r   )r   r	   r   r&   AssertionErroriloc)serr*   r)   r   r   r    test_basic_getitem_dt64tz_values7   s     

r2   c                  C   sJ   t tjd} t|  | d }t||  d| d< |dk sFtd S )Nr    .r   )	r   r   r   r   Zfixr$   r%   allr/   )r   r)   r   r   r   test_getitem_setitem_ellipsisG   s    
r4   z$result_1, duplicate_item, expected_1      r"   r,   )r6   r"   i9  dtypec                 C   s<   |  |}| |}t|d | |d | d ks8td S )Nr6   r"   )appendr$   r%   r/   )Zresult_1Zduplicate_itemZ
expected_1r)   r*   r   r   r   $test_getitem_with_duplicates_indicesS   s    

r:   c                  C   sJ   t dddgdddg} | jd | d ks,td| jd< t| d d d S )	Nr6   r"   r,   r   r   r   r   r   )r   r0   r/   r$   Zassert_almost_equalr   r   r   r   test_getitem_setitem_integersj   s    
r<   c                  C   s   t dddd} t| }t|d ts(tt|jd ts<tt|jd tsPtt|jd tsdtt|jd	 tsxtt| | d
}t|d tstt|j| d  tstt|jd tstt|j| d  tstt|jd	 tstd S )NZ20090415Z20090519B)freqr   r6   r"   r,      r   )	r	   r   
isinstancer   r/   atiatr&   r0   rngr1   r   r   r   test_series_box_timestamps   s    rE   c                  C   s|   t dddd} t| }t|d ts(tt|jd ts<tt|jd tsPtt|jd tsdtt|jd	 tsxtd S )
Nz	1 day 1 sr   hr-   r>   r   r6   r"   r,   r?   )	r   r   r@   r   r/   rA   rB   r&   r0   rC   r   r   r   test_series_box_timedelta   s    rH   c              	   C   sF   t tdttdddd}tjtdd | |d  W 5 Q R X d S )	Nr    r      r"   r   z^1$r   r6   )r   rangelistr   r   r   
indexer_slr1   r   r   r   test_getitem_ambiguous_keyerror   s    rN   c              	   C   sR   t ddddgddddg}tjttdd	 | |dddd
g  W 5 Q R X d S )Nr6   r"   r,   r?   foobarZbahz['bam'] not in indexr   Zbam)r   r   r   r   reescaperL   r   r   r   test_getitem_dups_with_missing   s    rS   c                 C   sV   t tdttdddd}| }d| |d< |t dgdgd}t|| d S )Nr    r   rI   r"   r   r   r6   )r   rJ   rK   copyr9   r$   r%   )rM   r   s2r*   r   r   r   test_setitem_ambiguous_keyerror   s
    rV   c                 C   sr   t j| | jd < t j| dddg< t j| d< t | d s<tt | d sNtd| t | < t | d rntd S )Nr   r6   r"         )r   NaNr   isnanr/   )r'   string_seriesr   r   r   test_setitem   s    
r\   c                 C   s6   | dd }t |t |jks"t|jjdks2td S )Nr   rI   T)lenr   r/   Z	is_unique)r'   slr   r   r   test_setslice   s    r_   z&ignore:Using a non-tuple:FutureWarningc              	   C   s   d}t jt|d | d d df  W 5 Q R X t jt|d d| d d df< W 5 Q R X tt | td dg }W 5 Q R X | d d }t|| d}t jt|d | dtd d g  W 5 Q R X t jt|d d| dtd d g< W 5 Q R X d S )Nz0key of type tuple not found and not a MultiIndexr   r"   r   zunhashable type(: 'slice')?)	r   r   r   r$   Zassert_produces_warningFutureWarningslicer%   	TypeError)r'   r   r)   r*   r   r   r   !test_basic_getitem_setitem_corner   s    rc   c                 C   s   | dd }| dd  }|dd }| j d |j ks8t|j d |j ksLtt|t|j ksbt| |j d  ||j d  kst|j d | j d kstt|t| dd  st| dd }d|d d < | dd dk std S )Nr    rI   i	   r   r6      )r   r/   r]   r$   ZequalContentsr   arrayr3   )r[   Zobject_seriesZnumSliceZnumSliceEndZobjSlicer^   r   r   r   
test_slice   s     rg   c                  C   s   t g td} td| jd< t| t tddgd | | j	dd} t| t t
jtdgddgd td| jd< t tdddgd}t| | d S )Nr7   r6   r=   z1 daysr   r   A)r   objectr   r&   r$   r%   r   r#   r   insertr   nanr   r*   r   r   r   test_timedelta_assignment   s    "rm   c                  C   s   t dd dD } | jdddgdd}|d ks2ttd	gd
gd}d| d< |  | d | t d	ddgd	ddgd	ddgdd	dgd}|jdddgdd}|d kstt| | d S )Nc                 S   s   i | ]}|d ddgqS )r6   r"   r,   r   ).0r   r   r   r   
<dictcomp>   s      z3test_underlying_data_conversion.<locals>.<dictcomp>)r   r   r   r   r   r   T)Zinplacer6   )r"   r"   r"   r   r   valr"   r,   )r   r   r   rp   )r   Z	set_indexr/   r   updater$   Zassert_frame_equal)ZdfZreturn_valuer   r*   r   r   r   test_underlying_data_conversion   s    $rr   c                 C   s.   | dddg }t j|d< t | d r*td S )Nr   r    r!   r6   )r   rY   rZ   r/   )r'   seqr   r   r   test_preserve_refs  s    
rt   c                  C   sV   t ddgddgdd} t dgdgdd| ddg< t ddgddgdd}t| | d S )Nr6   r"   Zint64)r   r8   r   TFr   r$   r%   rl   r   r   r   test_cast_on_putmask
  s    rv   c                  C   sj   t tjdtddddd} |  | dk }}| |  t}|||< t	
|| dd  d S )Nd   r   r   r   c                 S   s   | dkrt | S | S )Nr   )str)tr   r   r   <lambda>      z+test_type_promote_putmask.<locals>.<lambda>)r   r   r   r   arangeroundrT   mapry   r$   r%   )tsleftmaskrightr   r   r   test_type_promote_putmask  s
    $r   c                  C   sN   t ddddg} | dk}| | t}|| |< t ddddg}t| | d S )Nr   r6   r"   12)r   r   ry   r$   r%   r1   r   Zser2r*   r   r   r   test_setitem_mask_promote_strs  s    r   c                  C   sP   t ddddg} t ddddg}| | }|| |< t ddddg}t| | d S )Nr   rO   rP   FTru   r   r   r   r   test_setitem_mask_promote)  s    r   c                 C   s   t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjt||dd}| |d }|j|jkstd S )NrO   rP   ZbazZquxZoneZtwoZthreer   r6   r"   r,   firstsecond)levelscodesnamesZsth)r   name)r   r   r   r   r   r]   r   r/   )rM   r   r1   r)   r   r   r   test_multilevel_preserve_name4  s    .r   c              	   C   sF   |t t| | d}tjtdd ||d d d  W 5 Q R X d S )Nr   zslice step cannot be zeror   r   )r   r}   r]   r   r   
ValueError)r   Zframe_or_seriesZindexer_slir   r   r   r    test_slice_with_zero_step_raisesE  s    r   r   z
2014-01-01rI   ZMSrG   z2014-01M0Hc                    s    fdd}t | d }t | d }t| d }ttd|  t}|||fD ]}|||d d |dd d  ||d |d |d dd  |||fD ]@}||||d |ddd  ||||d |ddd  qqPd S )	Nc                    s0    j | }t |  | t j|  | d S )N)r0   r$   r%   r&   )Zl_slcZi_slcr*   r   r   r   assert_slices_equivalentU  s    
z?test_slice_with_negative_step.<locals>.assert_slices_equivalentrd      r   rI   rx      )ry   typer   r   r}   r   )r   r   Zkeystr1Zkeystr2ZboxZSLCkeykey2r   r   r   test_slice_with_negative_stepL  s    	r   c                  C   sP   t ddgddgd} | d dks$t| d dks4td| d< | d dksLtd S )Nr6   r"   )r   )r   r   r,   )r   r/   r;   r   r   r   test_tuple_indexk  s
    r   c                  C   sb   t dt d } }tddg| |gd}||  dks6t|| dksFtd||< || dks^td S )Nr   r   r6   r"   r   r,   )	frozensetr   r/   )Zidx0Zidx1r   r   r   r   test_frozenset_indext  s    r   )3__doc__datetimer   rQ   Znumpyr   r   Zpandasr   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr$   r   r+   r2   r4   markZparametrizeri   r:   r<   rE   rH   rN   rS   rV   r\   r_   filterwarningsrc   rg   rm   rr   rt   rv   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sj   ,

	




	
	