U
    >vf@!                     @   s   d dl Z d dlZd dlZd dlmZ d dlZd dl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ejj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 d$d% Z!dS )&    N)'construct_1d_object_array_from_listlike)IndexIntervalIndex
MultiIndex
RangeIndexc                  C   s   t ddg} | jd jdks"t| jd jdks6tt dgtdg} | jd jdks^tt dgtdg} | jd jd	kstt dgtd
g} | jd jdkstt dgtdg} | jd dk st| jd dk std S )N)A   )r      r   Zint8r   a(   i  Zint16i@  Zint32  )r   from_tuplescodesdtypeAssertionErrorfrom_productrangeall)i r   M/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/indexes/multi/test_integrity.pytest_labels_dtypes   s    r   c               	   C   s   dt dfdt jfdt dfdt dfdt dfdt dfg} t| }t| }t|j| t|jd d |d d j d S )	Nr   z
2000-01-01r	      z
2000-01-03z
2000-01-04z
2000-01-02   )	pd	TimestampZNaTr   r   r   tmassert_numpy_array_equalvalues)Ztuplesresultexpectedr   r   r   test_values_boxed$   s    
r!   c                  C   s   t dd} t| }tj| dd}t||g}|j}tdd |D }t|| tdd |D }t|| |d d j}td	d |D }t||d d  td
d |D }t||d d  d S )Nl     NZol    NZoz
US/Central)tzc                 S   s   g | ]}|d  qS r   r   .0xr   r   r   
<listcomp>>   s     z8test_values_multiindex_datetimeindex.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r   r   r$   r   r   r   r'   A   s     r	   c                 S   s   g | ]}|d  qS r#   r   r$   r   r   r   r'   G   s     c                 S   s   g | ]}|d  qS r(   r   r$   r   r   r   r'   J   s     )	nparanger   ZDatetimeIndexr   from_arraysr   r   assert_index_equal)intsZnaiveZawareidxr   outerinnerr   r   r   $test_values_multiindex_datetimeindex4   s    
r1   c                  C   s   t dd} tj| dd}t| |g}|j}tdd |D }t	|t| t j
d tdd |D }t	|| |d d	 j}td
d |D }t	|t| d d	 t j
d tdd |D }t	||d d	  d S )Ni  i  D)freqc                 S   s   g | ]}|d  qS r#   r   r$   r   r   r   r'   V   s     z6test_values_multiindex_periodindex.<locals>.<listcomp>r   c                 S   s   g | ]}|d  qS r(   r   r$   r   r   r   r'   Y   s     r	   c                 S   s   g | ]}|d  qS r#   r   r$   r   r   r   r'   _   s     c                 S   s   g | ]}|d  qS r(   r   r$   r   r   r   r'   b   s     )r)   r*   r   ZPeriodIndexr   r+   r   r   r   r,   int64)r-   Zpidxr.   r   r/   r0   r   r   r   "test_values_multiindex_periodindexN   s    r6   c                  C   s   t td} t td}td}ttdd}t| |g||gd}tdddddddddg	}tdddddddddg	}t| |g||gd}|jd	kstd S )
Nip 
   iX  )levelsr   r   r   r	   r   F)	listr   r)   r*   repeatr   arrayZ	is_uniquer   )Z
major_axisZ
minor_axisZmajor_codesZminor_codesindexr   r   r   test_consistencyf   s    
  r=   c                  C   s   t jtdtdgddgd} | | j}t|tjt| dd ddt| d	 t| d fD ]}| 	| | }||ksdt
qdd S )
Nr   ZoneZtwonamesZintpr4   r   r   r	   )r   r   r)   r*   Zget_indexerr   r   r   lenget_locr   )r<   r   r   r   r   r   test_hash_collisions}   s      rB   c                   C   s   d S )Nr   r   r   r   r   	test_dims   s    rC   c               	   C   s   ddgt dt dgg} tj| ddgd}dd	g}d
}tjt|d |j|d	d W 5 Q R X d}tjt|d |j||d W 5 Q R X d}tjt|d |j|dd W 5 Q R X d S )Nr   Bz
2011-01-01z
2011-01-02strdtr>   r   r	   z1take\(\) got an unexpected keyword argument 'foo'match)fooz$the 'out' parameter is not supported)outz%the 'mode' parameter is not supportedZclip)mode)	r   r   r   r   pytestraises	TypeErrorZtake
ValueError)valsr.   indicesmsgr   r   r   test_take_invalid_kwargs   s    rS   c              	   C   s,   d}t jt|d t|  W 5 Q R X d S )Nz"isna is not defined for MultiIndexrG   )rL   rM   NotImplementedErrorr   Zisna)r.   rR   r   r   r   test_isna_behavior   s    rU   c               	   C   s   t jdtddgtdgdgd} tjtdd | jd  W 5 Q R X tjtd	d | jd
  W 5 Q R X t jdtddgtdgdgd}tjtdd |jd  W 5 Q R X tjtd	d |jd
  W 5 Q R X d S )Nr   r	   i dest)r<   columnsz^\(-1, 0\)$rG   ))r   rV   z
^\(3, 0\)$))r   r   rV   i! )	r   	DataFramer   r   r   rL   rM   KeyErrorloc)Zdf_below_1000000Zdf_above_1000000r   r   r   test_large_multiindex_error   s$        r\   c               	   C   s^   t td} tj| | dtdd | D d}d}tjt|d |d 	  W 5 Q R X d S )	Ni@B )r
   bc                 S   s   g | ]}||fqS r   r   r$   r   r   r   r'      s     z7test_million_record_attribute_error.<locals>.<listcomp>r<   z&'Series' object has no attribute 'foo'rG   r
   )
r9   r   r   rY   r   r   rL   rM   AttributeErrorrI   )rdfrR   r   r   r   #test_million_record_attribute_error   s     rb   c                 C   s   | d }|  |dkstd S )Nr   T)Z$_can_hold_identifiers_and_holds_namer   )r.   keyr   r   r   test_can_hold_identifiers   s    rd   c              	   C   s   | j | j }}td}tjt|d |d |d< W 5 Q R X tjt|d |d d |d d< W 5 Q R X tjt|d |d |d< W 5 Q R X tjtdd |d d |d d< W 5 Q R X | j}tjt|d |d |d< W 5 Q R X d S )Nz#does not support mutable operationsrG   r   z#assignment destination is read-only)	r8   r   recompilerL   rM   rN   rO   r?   )r.   r8   r   Zmutable_regexr?   r   r   r   test_metadata_immutable   s    
rg   c                  C   sR   t dddddgdddddgg} | js,t| ddgdddgg} | jrNtd S )Nr   rD   r   r	   r   )r   r+   Zis_monotonic_increasingr   Z
set_levels)indr   r   r   $test_level_setting_resets_attributes   s    "
ri   c                  C   s  t tdd} t tdd}t j|  | ddd}ddg|j_t	| t jtdtddt
jtd	td	gddgd
d}tj||dd |jd}ttjd	tjdddd	}t|| |jd}tttjd	tjdd	dd}t|| d S )Nd   )r7   r7   )df1df2r   )ZaxisZfizzZbuzz)rl   rk   r7   r>   r^   T)Z
check_liker4   )name)r   rY   r)   r*   Zreshapeconcatstackr<   r?   rE   r   r   r   r   Zassert_frame_equalZget_level_valuesr   r5   r:   r,   Ztile)rk   rl   ra   r    r   r   r   r   %test_rangeindex_fallback_coercion_bug   s      rp   c                 C   st   |   }t| rd| | d  |   }| j dd}t| ttfsL||ksLt| jdkrp||ksptn|dksptd S )Nr   T)deepobject)Zmemory_usager@   rA   
isinstancer   r   r   Zinferred_type)r.   r   Zresult2Zresult3r   r   r   test_memory_usage   s    
rt   c                 C   s   | j dkstd S )Nr	   )Znlevelsr   )r.   r   r   r   test_nlevels  s    ru   )"re   Znumpyr)   rL   Zpandas.core.dtypes.castr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr   r   r!   r1   r6   r=   markZslowrB   rC   rS   rU   r\   rb   rd   rg   ri   rp   rt   ru   r   r   r   r   <module>   s0   
	