U
    sVc.                     @   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 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 ddlmZ dd Zdd	 Zd
d Zdd Zejd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+d0d1 Z,d2d3 Z-d4d5 Z.ejd6ed7d8d9d:ed;d8d<d:ed=d8d>d:gd?d@ Z/dAdB Z0dCdD Z1dEdF Z2dGdH Z3dIdJ Z4dKdL Z5dMdN Z6G dOdP dPZ7dS )Qz test get/set & misc     )	timedeltaN)IndexingError)NA	DataFrame
IndexSlice
MultiIndexSeries	Timedelta	Timestampconcat
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-xj8nt62q/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   )r1   r   )r   r   r
   r)   AssertionErroriloc)serr-   r,   r    r    r!    test_basic_getitem_dt64tz_values;   s     

r5   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(   allr2   )r   r,   r    r    r!   test_getitem_setitem_ellipsisK   s    
r7   z4ignore:.*append method is deprecated.*:FutureWarningz$result_1, duplicate_item, expected_1      r%   r/   r9   r%   i9  dtypec                 C   s<   |  |}| |}t|d | |d | d ks8td S Nr9   r%   )appendr'   r(   r2   )Zresult_1Zduplicate_itemZ
expected_1r,   r-   r    r    r!   $test_getitem_with_duplicates_indicesW   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 )	Nr9   r%   r/   r   r   r   r   r   )r   r3   r2   r'   Zassert_almost_equalr   r    r    r!   test_getitem_setitem_integerso   s    
rA   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   r9   r%   r/      r   )	r   r   
isinstancer
   r2   atiatr)   r3   rngr4   r    r    r!   test_series_box_timestampx   s    rJ   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r0   rC   r   r9   r%   r/   rD   )	r   r   rE   r	   r2   rF   rG   r)   r3   rH   r    r    r!   test_series_box_timedelta   s    rM   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   r9   )r   rangelistr   r   r   
indexer_slr4   r    r    r!   test_getitem_ambiguous_keyerror   s    rS   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 )Nr9   r%   r/   rD   foobarZbahz['bam'] not in indexr   Zbam)r   r   r   r   reescaperQ   r    r    r!   test_getitem_dups_with_missing   s    rX   c                 C   sX   t tdttdddd}| }d| |d< t|t dgdgdg}t|| d S )Nr#   r   rN   r%   r   r   r9   )r   rO   rP   copyr   r'   r(   )rR   r   s2r-   r    r    r!   test_setitem_ambiguous_keyerror   s
    r[   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   r9   r%         )r   NaNr   isnanr2   )r*   r    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   rN   T)lenr   r2   Z	is_unique)r*   slr    r    r!   test_setslice   s    rc   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'   assert_produces_warningFutureWarningslicer(   	TypeError)r*   r   r,   r-   r    r    r!   !test_basic_getitem_setitem_corner   s    rh   c                 C   s  |   }| dd }| dd  }|dd }| jd |jks@t|jd |jksTtt|t|jksjt| |jd  ||jd  kst|jd | jd kstt|t| dd  st| dd }d|d d < |rt| | n| dd dk	 std S )Nr#   rN   i	   r   r9      )
rY   r   r2   ra   r'   ZequalContentsr   arrayr(   r6   )Zstring_seriesZobject_seriesusing_copy_on_writeoriginalZnumSliceZnumSliceEndZobjSlicerb   r    r    r!   
test_slice   s     rn   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 )Nr;   r9   rB   z1 daysr   r   A)r   objectr   r)   r'   r(   r	   r&   r   insertr   nan)r   r-   r    r    r!   test_timedelta_assignment   s    "rs   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 | | rn|}nJt 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 )r9   r%   r/   r    ).0r   r    r    r!   
<dictcomp>   s      z3test_underlying_data_conversion.<locals>.<dictcomp>)r   r   r   r   r   r   T)Zinplacer9   )r%   r%   r%   r   r   valr%   r/   )r   r   r   rv   )r   Z	set_indexr2   r   rY   updater'   Zassert_frame_equal)rl   dfZreturn_valuer   Zdf_originalr-   r    r    r!   test_underlying_data_conversion   s     $ry   c                 C   s.   | dddg }t j|d< t | d r*td S )Nr   r#   r$   r9   )r   r^   r_   r2   )r*   seqr    r    r!   test_preserve_refs  s    
r{   c                 C   s>   | }t tjt||dd}||d }|j|jks:td S )NZsth)r   namerT   )r   r   r   r   ra   r|   r2   )Z%lexsorted_two_level_string_multiindexrR   r   r4   r,   r    r    r!   test_multilevel_preserve_name  s    r}   r   z
2014-01-01rN   ZMSrL   z2014-01M0Hc              
   C   s   t | d }t | d }ttd| }t}|| d fD ]}t|||d d |dd d  t||d |d |d dd  || d fD ]H}t||||d |ddd  t||||d |ddd  qq8d S )Nri      rN      r   )strr   r   Zaranger   r'   Z!assert_indexing_slices_equivalent)r   Zkeystr1Zkeystr2r4   ZSLCkeykey2r    r    r!   test_slice_with_negative_step%  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 )Nr9   r%   )r   )r   r   r/   )r   r2   r@   r    r    r!   test_tuple_index=  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   r9   r%   r   r/   )	frozensetr   r2   )Zidx0Zidx1r   r    r    r!   test_frozenset_indexF  s    r   c                  C   sN   t ddgddgd} |  }t ddgddgd}|| j| dk< t| | d S )	Nr9   r%   r   r   r   r]      d   )r   rY   r)   r'   r(   )r4   r-   rhsr    r    r!   "test_loc_setitem_all_false_indexerP  s
    r   c                  C   s<   t dg} | jt tdgdd }t g dd}t|| d S )Nr9   Fbooleanr;   Zint64)r   r)   r   r'   r(   )r4   r,   r-   r    r    r!   +test_loc_boolean_indexer_non_matching_indexY  s    
r   c               	   C   sH   t dg} t tdgdddgd}tjtdd | j|  W 5 Q R X d S )Nr9   Fr   r%   )r<   r   ZUnalignabler   )r   r   r   r   r   r)   )r4   Zindexerr    r    r!   ,test_loc_boolean_indexer_miss_matching_indexa  s    
r   c                  C   sB   t ddgi} td| i}| |jd< t| | d}t|| d S )Nr   r9   label	new_label)r   r   )r   r   r)   r'   r(   )rx   r4   r-   r    r    r!   (test_loc_setitem_nested_data_enlargementi  s
    
r   c               	   C   s6   t ddd} tjtdd | jd  W 5 Q R X d S )Nr9   r   )TFr   r   )r   r   r   r   r)   )r4   r    r    r!   test_getitem_bool_int_keyr  s    r   c                   @   s   e Zd Zejddhddigdd Zejddhddidhdfddidfgdd Zejddhddigdd	 Zejddhddidhdfddidfgd
d Z	dS )TestDeprecatedIndexersr   r9   c              	   C   s0   t ddg}tt |j|  W 5 Q R X d S r=   r   r'   rd   re   r)   selfr   r4   r    r    r!   $test_getitem_dict_and_set_deprecatedz  s    z;TestDeprecatedIndexers.test_getitem_dict_and_set_deprecatedr%   c              	   C   s>   t ddgtddgd}tt |j|  W 5 Q R X d S Nr9   r%   r:   )r/   rD   r   r   r   from_tuplesr'   rd   re   r)   r   r    r    r!   /test_getitem_dict_and_set_deprecated_multiindex  s    zFTestDeprecatedIndexers.test_getitem_dict_and_set_deprecated_multiindexc              	   C   s0   t ddg}tt d|j|< W 5 Q R X d S r=   r   r   r    r    r!   $test_setitem_dict_and_set_deprecated  s    z;TestDeprecatedIndexers.test_setitem_dict_and_set_deprecatedc              	   C   s>   t ddgtddgd}tt d|j|< W 5 Q R X d S r   r   r   r    r    r!   /test_setitem_dict_and_set_deprecated_multiindex  s    zFTestDeprecatedIndexers.test_setitem_dict_and_set_deprecated_multiindexN)
__name__
__module____qualname__r   markparametrizer   r   r   r   r    r    r    r!   r   y  s   
(

(r   )8__doc__datetimer   rV   Znumpyr   r   Zpandas.errorsr   Zpandasr   r   r   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr'   r"   r.   r5   r7   r   filterwarningsr   rp   r?   rA   rJ   rM   rS   rX   r[   r`   rc   rh   rn   rs   ry   r{   r}   r   r   r   r   r   r   r   r   r   r    r    r    r!   <module>   sp   4

	





	
		