U
    >vf4                     @   sh  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mZ ddlmZ dd Zdd	 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*d,d- Z+d.d/ Z,d0d1 Z-d2d3 Z.d4d5 Z/d6d7 Z0ej d8ed9d:d;d<ed=d:d>d<ed?d:d@d<gdAdB Z1dCdD Z2dEdF Z3dGdH Z4dIdJ Z5dKdL Z6dMdN Z7dOdP Z8dQdR Z9ej dSi dTdUigej dVg dWdWge:ddXe;g gdYdZ Z<G d[d\ d\Z=dS )]z test get/set & misc     )	timedeltaN)IndexingError)NA	DataFrameIndex
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-vdrwu74i/pandas/tests/series/indexing/test_indexing.pytest_basic_indexing   s    r#   c                 C   s^   | }t dddg|d}ttd|d}|d }tddgt ddg|dd}tj||dd d S )	N   r   dtype   r      TZcheck_exactr   r	   rangetmassert_series_equal)any_numeric_dtyper&   idxserresultexpectedr!   r!   r"   6test_getitem_numeric_should_not_fallback_to_positional0   s    r3   c                 C   sT   | }t dddg|d}ttd|d}d|d< tdddg|d}tj||dd d S )	Nr$   r   r%   r'   r   
   Tr)   r*   )r.   r&   r/   r0   r2   r!   r!   r"   6test_setitem_numeric_should_not_fallback_to_positional:   s    r5   c                 C   sh   | j dddg }| | }| |}t|| | |d |d  }| j|d |d  }t|| d S )Nr   r4      r   r(   )r   reindexr,   r-   loc)datetime_seriesindicesr1   r2   r!   r!   r"   test_basic_getitem_with_labelsD   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-01r'   z
US/Eastern)periodstzr   r   r   r   )r=   r   )r	   r   r   r8   AssertionErroriloc)r0   r2   r1   r!   r!   r"    test_basic_getitem_dt64tz_valuesP   s     

r@   c                  C   s@   t tjd} | d }t||  d| d< |dk s<td S )Nr4   .r   )r	   r   r   r   r,   r-   allr>   )r   r1   r!   r!   r"   test_getitem_setitem_ellipsis_   s
    rB   z$result_1, duplicate_item, expected_1   r$   r(   r'   r$   r(   i9  r%   c                 C   s<   |  |}| |}t|d | |d | d ks8td S )Nr$   r(   )_appendr,   r-   r>   )Zresult_1Zduplicate_itemZ
expected_1r1   r2   r!   r!   r"   $test_getitem_with_duplicates_indicesi   s    

rF   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 )	Nr$   r(   r'   r   r   r   r   r   )r	   r?   r>   r,   Zassert_almost_equalr   r!   r!   r"   test_getitem_setitem_integers   s    
rH   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   r$   r(   r'      r   )	r   r	   
isinstancer   r>   atiatr8   r?   rngr0   r!   r!   r"   test_series_box_timestamp   s    rQ   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<   rJ   r   r$   r(   r'   rK   )	r   r	   rL   r
   r>   rM   rN   r8   r?   rO   r!   r!   r"   test_series_box_timedelta   s    rT   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 )	Nr4   r      r(   r   z^1$r   r$   )r	   r+   listr   r   r   
indexer_slr0   r!   r!   r"   test_getitem_ambiguous_keyerror   s    rY   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 )Nr$   r(   r'   rK   foobarZbahz['bam'] not in indexr   Zbam)r	   r   r   r   reescaperW   r!   r!   r"   test_getitem_dups_with_missing   s    r^   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 )Nr4   r   rU   r(   r   r   r$   )r	   r+   rV   copyr   r,   r-   )rX   r   s2r2   r!   r!   r"   test_setitem_ambiguous_keyerror   s
    ra   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   r$   r(         )r   NaNr   isnanr>   )r9   r!   r!   r"   test_setitem   s    
rf   c                 C   s6   | dd }t |t |jks"t|jjdks2td S )Nr   rU   T)lenr   r>   Z	is_unique)r9   slr!   r!   r"   test_setslice   s    ri   c              	   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 d}t jt|d | td dg  W 5 Q R X | td df }| 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(   z Indexing with a single-item listr   zunhashable type(: 'slice')?)r   r   r   
ValueErrorslicer,   r-   	TypeError)r9   r    r1   r2   r!   r!   r"   !test_basic_getitem_setitem_corner   s     rm   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 )Nr4   rU   i	   r   r$      )
r_   r   r>   rg   r,   ZequalContentsr   arrayr-   rA   )Zstring_seriesZobject_seriesusing_copy_on_writeoriginalZnumSliceZnumSliceEndZobjSlicerh   r!   r!   r"   
test_slice   s     rs   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%   r$   rI   z1 daysr   r   A)r	   objectr   r8   r,   r-   r
   r7   r   insertr   nan)r   r2   r!   r!   r"   test_timedelta_assignment  s    "rx   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 )r$   r(   r'   r!   ).0r   r!   r!   r"   
<dictcomp>  s      z3test_underlying_data_conversion.<locals>.<dictcomp>)r   r   r   r   r   r   T)Zinplacer$   )r(   r(   r(   r   r   valr(   r'   )r   r   r   r{   )r   Z	set_indexr>   r	   r_   updater,   assert_frame_equal)rq   dfZreturn_valuer   Zdf_originalr2   r!   r!   r"   test_underlying_data_conversion  s     $r   c                 C   s.   | dddg }t j|d< t | d r*td S )Nr   r4   r6   r$   )r   rd   re   r>   )r9   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   namerZ   )r	   r   r   r   rg   r   r>   )Z%lexsorted_two_level_string_multiindexrX   r   r0   r1   r!   r!   r"   test_multilevel_preserve_name+  s    r   r   z
2014-01-01rU   ZMSrS   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 )Nrn      rU      r   )strr	   r   Zaranger   r,   Z!assert_indexing_slices_equivalent)r   Zkeystr1Zkeystr2r0   ZSLCkeykey2r!   r!   r"   test_slice_with_negative_step6  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 )Nr$   r(   )r   )r   r   r'   )r	   r>   rG   r!   r!   r"   test_tuple_indexN  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   r$   r(   r   r'   )	frozensetr	   r>   )Zidx0Zidx1r   r!   r!   r"   test_frozenset_indexW  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 )	Nr$   r(   r   r   r   rc      d   )r	   r_   r8   r,   r-   )r0   r2   rhsr!   r!   r"   "test_loc_setitem_all_false_indexera  s
    r   c                  C   s<   t dg} | jt tdgdd }t g dd}t|| d S )Nr$   Fbooleanr%   Zint64)r	   r8   r   r,   r-   r0   r1   r2   r!   r!   r"   +test_loc_boolean_indexer_non_matching_indexj  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 )Nr$   Fr   r(   )r&   r   ZUnalignabler   )r	   r   r   r   r   r8   )r0   indexerr!   r!   r"   ,test_loc_boolean_indexer_miss_matching_indexr  s    
r   c                  C   sB   t ddgi} td| i}| |jd< t| | d}t|| d S )Nr   r$   label	new_label)r   r   )r   r	   r8   r,   r-   )r~   r0   r2   r!   r!   r"   (test_loc_setitem_nested_data_enlargementz  s
    
r   c                  C   sN   t dtdddgddd} | jdd }t dtdgddd}t|| d S )Nr$   r   r(   ZInt64r%   r   r'   )r	   r   r8   r,   r-   r   r!   r!   r"   'test_loc_ea_numeric_index_oob_slice_end  s    r   c               	   C   s6   t ddd} tjtdd | jd  W 5 Q R X d S )Nr$   r   )TFr   r   )r	   r   r   r   r8   )r0   r!   r!   r"   test_getitem_bool_int_key  s    r   r{   r   xr   Fr   c                 C   s6   t dddgi|}| }d|j| < t|| d S )Nr   r$   r(   g      ?)r   r_   r8   r,   r}   )r   r{   r~   r2   r!   r!   r"   test_setitem_empty_indexer  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   r$   c              	   C   s4   t ddg}tjtdd |j|  W 5 Q R X d S Nr$   r(   as an indexer is not supportedr   r	   r   r   rl   r8   selfr   r0   r!   r!   r"   $test_getitem_dict_and_set_deprecated  s    z;TestDeprecatedIndexers.test_getitem_dict_and_set_deprecatedr(   c              	   C   sB   t ddgtddgd}tjtdd |j|  W 5 Q R X d S Nr$   r(   rD   )r'   rK   r   r   r   r	   r   from_tuplesr   r   rl   r8   r   r!   r!   r"   /test_getitem_dict_and_set_deprecated_multiindex  s    zFTestDeprecatedIndexers.test_getitem_dict_and_set_deprecated_multiindexc              	   C   s4   t ddg}tjtdd d|j|< W 5 Q R X d S r   r   r   r!   r!   r"   $test_setitem_dict_and_set_disallowed  s    z;TestDeprecatedIndexers.test_setitem_dict_and_set_disallowedc              	   C   sB   t ddgtddgd}tjtdd d|j|< W 5 Q R X d S r   r   r   r!   r!   r"   /test_setitem_dict_and_set_disallowed_multiindex  s    zFTestDeprecatedIndexers.test_setitem_dict_and_set_disallowed_multiindexN)
__name__
__module____qualname__r   markparametrizer   r   r   r   r!   r!   r!   r"   r     s   
(

(r   )>__doc__datetimer   r\   Znumpyr   r   Zpandas.errorsr   Zpandasr   r   r   r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr,   r#   r3   r5   r;   r@   rB   r   r   ru   rF   rH   rQ   rT   rY   r^   ra   rf   ri   rm   rs   rx   r   r   r   r   r   r   r   r   r   r   r   r   rk   rp   r   r   r!   r!   r!   r"   <module>   sx   8




	



	
		$