U
    sVc                     @   s   d Z ddlZddlZddlZddl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dd Zdd Zdd Zdd Zdd ZG dd dZG dd dZG dd dZG d d! d!ZG d"d# d#ZdS )$z9
Tests that can be parametrized over _any_ Index object.
    N)InvalidIndexErrorc              	   C   sD   t jtdd
 | rW 5 Q R X t jtdd t|  W 5 Q R X d S )NzThe truth value of amatch)pytestraises
ValueErrorboolindex r   G/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/test_any_index.pytest_boolean_context_compat   s
    
r   c              	   C   s*   d}t jt|d |   W 5 Q R X d S )Nz=cannot sort an Index object in-place, use sort_values insteadr   )r   r   	TypeErrorsortr
   msgr   r   r   	test_sort   s    r   c              	   C   s4   t jtdt| j dd t|  W 5 Q R X d S )Nzunhashable type: ''r   )r   r   r   type__name__hashr	   r   r   r   test_hash_error   s    r   c              	   C   s&   t t | jtd W 5 Q R X d S )Ndtype)tmassert_produces_warningFutureWarningcopyobjectr	   r   r   r   test_copy_dtype_deprecated#   s    r   c              	   C   s:   t | sd S d}tjt|d | d | d< W 5 Q R X d S )Nz)Index does not support mutable operationsr   r   )lenr   r   r   r   r   r   r   test_mutability)   s
    r!   c                 C   sJ   |  dd }| jtkr6|jtkr6| |k s2td S tj|| dd d S )Nc                 S   s   | S Nr   )xr   r   r   <lambda>4       z+test_map_identity_mapping.<locals>.<lambda>equivexact)mapr   r   r   allAssertionErrorr   assert_index_equal)r
   requestresultr   r   r   test_map_identity_mapping1   s
    r/   c              	   C   s4   | j dddg }tjtdd || _W 5 Q R X d S )NZappleZbananaZcarrotz^Lengthr   )nlevelsr   r   r   names)r
   r1   r   r   r   test_wrong_number_names<   s    r2   c                 C   s   |   j| jkstd S r"   )viewnamer+   r	   r   r   r   test_view_preserves_nameB   s    r5   c              	   C   s"   t t |   W 5 Q R X d S r"   )r   r   r   Zravelr	   r   r   r   test_ravel_deprecationF   s    r6   c              	   C   s.   d}t jt|d | | j W 5 Q R X d S )Nz is_type_compatible is deprecatedr   )r   r   r   Zis_type_compatibleZinferred_typer   r   r   r   #test_is_type_compatible_deprecationL   s    r7   c              	   C   s*   d}t jt|d |   W 5 Q R X d S )NzIndex.is_mixed is deprecatedr   )r   r   r   Zis_mixedr   r   r   r   test_is_mixed_deprecatedS   s    r8   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestConversionc                 C   s:   |  }|j|jk	st|j|k	s&t|j|jks6td S r"   Z	to_seriesvaluesr+   r
   r4   selfr
   Zserr   r   r   test_to_series[   s    zTestConversion.test_to_seriesc                 C   sx   |j |d}|j|jk	st|j|ks*t|j|jks:t|j dd}|j|jk	sVt|j|k	sdt|j|jksttd S )Nr	   Z__test)r4   r:   r<   r   r   r   test_to_series_with_argumentsc   s    z,TestConversion.test_to_series_with_argumentsc                 C   s   |  t|kstd S r"   )tolistlistr+   r=   r
   r   r   r   test_tolist_matches_listt   s    z'TestConversion.test_tolist_matches_listN)r   
__module____qualname__r>   r?   rC   r   r   r   r   r9   Z   s   r9   c                   @   s   e Zd Zdd Zdd ZdS )TestRoundTripsc                 C   s6   t |}t j||dd |jdkr2||s2td S )NTr'      )r   round_trip_pickler,   r0   Zequal_levelsr+   r=   r
   r.   r   r   r   test_pickle_roundtripy   s    

z$TestRoundTrips.test_pickle_roundtripc                 C   s0   |j d }|_ t|}||s&t||_ d S )Nfoo)r4   r   rH   equalsr+   )r=   r
   original_nameZ	unpickledr   r   r   test_pickle_preserves_name   s    
z)TestRoundTrips.test_pickle_preserves_nameN)r   rD   rE   rJ   rN   r   r   r   r   rF   x   s   rF   c                   @   sL   e Zd Zdd Zdd Zdd Zejddd	d
gej	ddd Z
dS )TestIndexingc              	   C   sf   t jddgt jd}tjtdd || W 5 Q R X tjtdd ||t W 5 Q R X d S )Nr   rG   r   z\[0 1\]r   z\[False  True\])	nparrayZintpr   r   r   Zget_locZastyper   )r=   r
   keyr   r   r   0test_get_loc_listlike_raises_invalid_index_error   s
    z=TestIndexing.test_get_loc_listlike_raises_invalid_index_errorc                 C   s&   |d }| |st||k	s"td S )N.)rL   r+   rI   r   r   r   test_getitem_ellipsis   s    z"TestIndexing.test_getitem_ellipsisc                 C   s   |j |dd  j kstd S )NrG   )r4   r+   rB   r   r   r   test_slice_keeps_name   s    z"TestIndexing.test_slice_keeps_nameiteme   Zno_intg      @zignore::FutureWarningc              	   C   s>   d dtdddg}tjt|d ||  W 5 Q R X d S )N|z5index 101 is out of bounds for axis 0 with size [\d]+zuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indiceszindex out of boundszFOnly integers, slices and integer or boolean arrays are valid indices.r   )joinreescaper   r   
IndexError)r=   r
   rV   r   r   r   r   test_getitem_error   s    zTestIndexing.test_getitem_errorN)r   rD   rE   rS   rT   rU   r   markZparametrizefilterwarningsr]   r   r   r   r   rO      s   

rO   c                   @   s   e Zd Zdd ZdS )TestRenderingc                 C   s0   d|_ dt|kstt|jt|ks,td S )NrK   z'foo')r4   strr+   r   r   rB   r   r   r   test_str   s    zTestRendering.test_strN)r   rD   rE   rb   r   r   r   r   r`      s   r`   c                   @   s   e Zd Zdd ZdS )TestReductionsc              	   C   s   d}t jt|d |jdd W 5 Q R X t jt|d |jdd W 5 Q R X t jt|d |jdd W 5 Q R X t jt|d |jdd W 5 Q R X d S )Nz8`axis` must be fewer than the number of dimensions \(1\)r   rG   )Zaxis   )r   r   r   ZargmaxZargminminmax)r=   r
   r   r   r   r   test_argmax_axis_invalid   s    z'TestReductions.test_argmax_axis_invalidN)r   rD   rE   ri   r   r   r   r   rc      s   rc   )__doc__rZ   ZnumpyrP   r   Zpandas.errorsr   Zpandas._testingZ_testingr   r   r   r   r   r!   r/   r2   r5   r6   r7   r8   r9   rF   rO   r`   rc   r   r   r   r   <module>   s*   
)