U
    *if*                     @   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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(d/d0 Z)d1d2 Z*d3d4 Z+ejd5ed6d7d8d9ed:d7d;d9ed<d7d=d9gd>d? Z,d@dA Z-dBdC Z.dDdE Z/G dFdG dGZ0dS )Hz test get/set & misc     )	timedeltaN)
	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   ]/home/mars/bis/venv/lib/python3.8/site-packages/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_values8   s     

r3   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&   allr0   )r   r*   r   r   r   test_getitem_setitem_ellipsisH   s    
r5   z4ignore:.*append method is deprecated.*:FutureWarningz$result_1, duplicate_item, expected_1      r#   r-   r7   r#   i9  Zdtypec                 C   s<   |  |}| |}t|d | |d | d ks8td S Nr7   r#   )appendr%   r&   r0   )Zresult_1Zduplicate_itemZ
expected_1r*   r+   r   r   r   $test_getitem_with_duplicates_indicesT   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 )	Nr7   r#   r-   r   r   r   r   r   )r   r1   r0   r%   Zassert_almost_equalr   r   r   r   test_getitem_setitem_integersl   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   r7   r#   r-      r   )	r
   r   
isinstancer   r0   atiatr'   r1   rngr2   r   r   r   test_series_box_timestampu   s    rG   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   r7   r#   r-   rA   )	r   r   rB   r   r0   rC   rD   r'   r1   rE   r   r   r   test_series_box_timedelta   s    rJ   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   r7   )r   rangelistr   r   r   
indexer_slr2   r   r   r   test_getitem_ambiguous_keyerror   s    rP   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 )Nr7   r#   r-   rA   foobarZbahz['bam'] not in indexr   Zbam)r   r   r   r   reescaperN   r   r   r   test_getitem_dups_with_missing   s    rU   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   rK   r#   r   r   r7   )r   rL   rM   copyr	   r%   r&   )rO   r   s2r+   r   r   r   test_setitem_ambiguous_keyerror   s
    rX   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   r7   r#         )r   NaNr   isnanr0   )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   rK   T)lenr   r0   Z	is_unique)r(   slr   r   r   test_setslice   s    ra   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    rf   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!   rK   i	   r   r7      )r   r0   r_   r%   ZequalContentsr   arrayr4   )r]   Zobject_seriesZnumSliceZnumSliceEndZobjSlicer`   r   r   r   
test_slice   s     rj   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 )Nr9   r7   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    "ro   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 )r7   r#   r-   r   ).0r   r   r   r   
<dictcomp>   s      z3test_underlying_data_conversion.<locals>.<dictcomp>)r   r   r   r   r   r   T)Zinplacer7   )r#   r#   r#   r   r   valr#   r-   )r   r   r   rr   )r   Z	set_indexr0   r   updater%   Zassert_frame_equal)ZdfZreturn_valuer   r+   r   r   r   test_underlying_data_conversion   s    $rt   c                 C   s.   | dddg }t j|d< t | d r*td S )Nr   r!   r"   r7   )r   r[   r\   r0   )r(   seqr   r   r   test_preserve_refs  s    
rv   c                 C   s>   | }t tjt||dd}||d }|j|jks:td S )NZsth)r   namerQ   )r   r   r   r   r_   rw   r0   )Z%lexsorted_two_level_string_multiindexrO   r   r2   r*   r   r   r   test_multilevel_preserve_name  s    rx   r   z
2014-01-01rK   ZMSrI   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 )Nrg      rK      r   )strr   r   Zaranger   r%   Z!assert_indexing_slices_equivalent)r   Zkeystr1Zkeystr2r2   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 )Nr7   r#   )r   )r   r   r-   )r   r0   r=   r   r   r   test_tuple_index1  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   r7   r#   r   r-   )	frozensetr   r0   )Zidx0Zidx1r   r   r   r   test_frozenset_index:  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 )	Nr7   r#   r   r   r   rZ      d   )r   rV   r'   r%   r&   )r2   r+   rhsr   r   r   "test_loc_setitem_all_false_indexerD  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 )TestDepreactedIndexersr   r7   c              	   C   s0   t ddg}tt |j|  W 5 Q R X d S r:   r   r%   rb   rc   r'   selfr   r2   r   r   r   $test_getitem_dict_and_set_deprecatedN  s    z;TestDepreactedIndexers.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 Nr7   r#   r8   )r-   rA   r   r   r   from_tuplesr%   rb   rc   r'   r   r   r   r   /test_getitem_dict_and_set_deprecated_multiindexU  s    zFTestDepreactedIndexers.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;TestDepreactedIndexers.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_multiindexc  s    zFTestDepreactedIndexers.test_setitem_dict_and_set_deprecated_multiindexN)
__name__
__module____qualname__r   markparametrizer   r   r   r   r   r   r   r   r   M  s   
(

(r   )1__doc__datetimer   rS   numpyr   r   Zpandasr   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr%   r    r,   r3   r5   r   filterwarningsr   rl   r<   r>   rG   rJ   rP   rU   rX   r^   ra   rf   rj   ro   rt   rv   rx   r   r   r   r   r   r   r   r   r   <module>   sf   0

	





	
	