a
    GGbf!                     @   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
 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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)IntervalIndex
MultiIndex
RangeIndex)
Int64Indexc                  C   s   t ddg} | jd jdks"J | jd jdks6J t dgtdg} | jd jdks^J t dgtdg} | jd jd	ksJ t dgtd
g} | jd jdksJ t dgtdg} | jd dk sJ | jd dk sJ d S )N)A   )r      r   Zint8r   a(   i  Zint16i@  Zint32  )r   from_tuplescodesdtypefrom_productrangeall)i r   Hlib/python3.9/site-packages/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)Ztzc                 S   s   g | ]}|d  qS r   r   .0xr   r   r   
<listcomp>?       z8test_values_multiindex_datetimeindex.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r   r   r"   r   r   r   r%   B   r&   r	   c                 S   s   g | ]}|d  qS r!   r   r"   r   r   r   r%   H   r&   c                 S   s   g | ]}|d  qS r'   r   r"   r   r   r   r%   K   r&   )	nparanger   ZDatetimeIndexr   from_arraysr   r   assert_index_equal)intsZnaiveZawareidxr   outerinnerr   r   r   $test_values_multiindex_datetimeindex5   s    
r0   c                  C   s   t dd} tj| dd}t| |g}|j}tdd |D }t	|t|  tdd |D }t	|| |d d j}td	d |D }t	|t| d d  td
d |D }t	||d d  d S )Ni  i  D)Zfreqc                 S   s   g | ]}|d  qS r!   r   r"   r   r   r   r%   W   r&   z6test_values_multiindex_periodindex.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r'   r   r"   r   r   r   r%   Z   r&   r	   c                 S   s   g | ]}|d  qS r!   r   r"   r   r   r   r%   `   r&   c                 S   s   g | ]}|d  qS r'   r   r"   r   r   r   r%   c   r&   )
r(   r)   r   ZPeriodIndexr   r*   r   r   r   r+   )r,   Zpidxr-   r   r.   r/   r   r   r   "test_values_multiindex_periodindexO   s    r2   c                  C   s   t td} t td}td}ttdd}t| |g||gd}tg d}tg d}t| |g||gd}|jdu sJ d S )Nip 
   iX  )levelsr   )	r   r   r   r   r   r	   r	   r   r   )	r   r   r   r   r   r   r   r   r   F)listr   r(   r)   repeatr   ZarrayZ	is_unique)Z
major_axisZ
minor_axisZmajor_codesZminor_codesindexr   r   r   test_consistencyg   s    
r8   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sdJ qdd S )
Nr   ZoneZtwonamesZintp)r   r   r   r	   )
r   r   r(   r)   Zget_indexerr   r   r   lenget_loc)r7   r   r   r   r   r   test_hash_collisions~   s     r=   c                   C   s   d S )Nr   r   r   r   r   	test_dims   s    r>   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 d    n1 sl0    Y  d}tjt|d |j||d W d    n1 s0    Y  d}tjt|d |j|dd W d    n1 s0    Y  d S )Nr   Bz
2011-01-01z
2011-01-02strZdtr9   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)Zvalsr-   indicesmsgr   r   r   test_take_invalid_kwargs   s    ,,rL   c                 C   s@   d}t jt|d t|  W d    n1 s20    Y  d S )Nz"isna is not defined for MultiIndexrA   )rF   rG   NotImplementedErrorr   Zisna)r-   rK   r   r   r   test_isna_behavior   s    rN   c                  C   s.  t jdtddgtdgdgd} tjtdd | jd  W d    n1 sR0    Y  tjtd	d | jd
  W d    n1 s0    Y  t jdtddgtdgdgd}tjtdd |jd  W d    n1 s0    Y  tjtd	d |jd
  W d    n1 s 0    Y  d S )Nr   r	   i dest)r7   columnsz^\(-1, 0\)$rA   ))r   rO   z
^\(3, 0\)$))r   r   rO   i! )	r   	DataFramer   r   r   rF   rG   KeyErrorZloc)Zdf_below_1000000Zdf_above_1000000r   r   r   test_large_multiindex_error   s    (((rT   c                  C   sr   t td} tj| | dtdd | D d}d}tjt|d |d 	  W d    n1 sd0    Y  d S )	Ni@B )r
   bc                 S   s   g | ]}||fqS r   r   r"   r   r   r   r%      r&   z7test_million_record_attribute_error.<locals>.<listcomp>r7   z&'Series' object has no attribute 'foo'rA   r
   )
r5   r   r   rR   r   r   rF   rG   AttributeErrorrC   )rdfrK   r   r   r   #test_million_record_attribute_error   s    rZ   c                 C   s   | d }|  |du sJ d S )Nr   T)Z$_can_hold_identifiers_and_holds_name)r-   keyr   r   r   test_can_hold_identifiers   s    r\   c                 C   sX  | j | j }}td}tjt|d |d |d< W d    n1 sH0    Y  tjt|d$ |d d |d d< W d    n1 s0    Y  tjt|d |d |d< W d    n1 s0    Y  tjtdd$ |d d |d d< W d    n1 s0    Y  | j}tjt|d |d |d< W d    n1 sJ0    Y  d S )Nz#does not support mutable operationsrA   r   z#assignment destination is read-only)	r4   r   recompilerF   rG   rH   rI   r:   )r-   r4   r   Zmutable_regexr:   r   r   r   test_metadata_immutable   s    
*2*4r_   c                  C   sr   t g dg dg} | js J tt* | jddgg dgdd W d    n1 sZ0    Y  | jrnJ d S )N)r   r   r?   r?   r?   )r   r	   r   r	   r   r   r?   )r   r   r	   T)Zinplace)r   r*   Zis_monotonicr   Zassert_produces_warningFutureWarningZ
set_levels)Zindr   r   r   $test_level_setting_resets_attributes   s
    
8ra   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d	ddd	}t|| |jd}tttd	d	dd}t|| d S )Nd   )r3   r3   )rC   barr   )ZaxisZfizzZbuzz)rc   rC   r3   r9   rV   T)Z
check_like)name)r   rR   r(   r)   Zreshapeconcatstackr7   r:   r@   r   r   r   r   Zassert_frame_equalZget_level_valuesr   r6   r+   Ztile)rC   rc   rY   r   r   r   r   r   %test_rangeindex_fallback_coercion_bug   s     rg   c                 C   st   |   }t| rd| | d  |   }| j dd}t| ttfsL||ksLJ | jdkrp||kspJ n|dkspJ d S )Nr   T)Zdeepobject)Zmemory_usager;   r<   
isinstancer   r   Zinferred_type)r-   r   Zresult2Zresult3r   r   r   test_memory_usage  s    
rj   c                 C   s   | j dksJ d S )Nr	   )Znlevels)r-   r   r   r   test_nlevels  s    rk   )#r]   Znumpyr(   rF   Zpandas.core.dtypes.castr   Zpandasr   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.apir   r   r    r0   r2   r8   ZmarkZslowr=   r>   rL   rN   rT   rZ   r\   r_   ra   rg   rj   rk   r   r   r   r   <module>   s2   
		