a
    Pfh                     @   s  d dl mZm Z  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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ejde	jdddde	jddddfeddddd edddd!d fe	jd"ddde	jd#dddfgd$d% Zd&d' Z d(d) Z!d*d+ Z"ejd,d-d-gd-d.gd-gd.gd-d.ggd/d/gd/d0gd/gd0gd1d2d-gd.fd-d.gfd/d3d4d/gd0fd1d.gd-d5gd3d0gd6d7d8gd9d: Z#ejd;g d<d/d0gfg d/d0gfg d<g fgd=d> Z$d?d@ Z%dAdB Z&dCdD Z'dEdF Z(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-ejdQg g fg dRg fg g dSfgdTdU Z.ejdVe/e0dWdXdY Z1ejdZd-d-gd-d.gd-gd.gd/d/gd/d0gd/gd0ggd[d\ Z2d]d^ Z3d_d` Z4ejdadbdcgejdddedf dgdf dhdf gdidj Z5dkdl Z6dmdn Z7ejdoeg d<dpdqed/d0gdrdqdpdrgfeg d<dpdqd/d0gdpdgfg d<d/d0gdfgdsdt Z8dudv Z9dwdx Z:dydz Z;d{d| Z<d}d~ Z=ejdeg dg dd-d.gddWgddgge
g de>d-d.gddWgddggdgdd Z?dd Z@ejddddgfddgddgfgdd ZAejddg dSdfgdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdS )    )datedatetimeN)'construct_1d_object_array_from_listlike)Index
MultiIndexSeries	Timestamp
date_rangec                  C   s`   t g dgg dgdgd} t| t s*J tg ddd}t| jd | | jdgks\J d S )N)foobarbazquxr            firstlevelscodesnamesnamer   )r   
isinstancer   tmassert_index_equalr   r   resultexpected r   e/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/indexes/multi/test_constructors.pytest_constructor_single_level   s    r!   c                  C   s   d} t jt| d tg g d W d    n1 s40    Y  d} t jt| d tg d W d    n1 sp0    Y  t jt| d tg d W d    n1 s0    Y  d S )Nznon-zero number of levels/codesmatchr   r   zMust pass both levels and codesr   )r   )pytestraises
ValueErrorr   	TypeErrormsgr   r   r    test_constructor_no_levels!   s    *(r,   c                  C   s  ddgddgg} g dg dg}dgdgf}d	}t jt|d
 t| ||d W d    n1 sb0    Y  tddgddggg dg dgdd}dgdgg}t jt|d
 |j|d W d    n1 s0    Y  t jt|d
 |j|d W d    n1 s
0    Y  d S )Nr   r   onetwo)r   r   r   r   )r   r   r   r   r
   r   z(MultiIndex\.name must be a hashable typer"   r   )r
   r   ZfoooZbarrr   )r&   r'   r)   r   renameZ	set_names)r   r   r   r+   miZrenamedr   r   r    "test_constructor_nonhashable_names-   s     ,*r2   c                 C   s  t dgt dgt dgg}dg}d}tjt|d t||d W d    n1 s\0    Y  d}d	}d
}tjt|d0 tdgdggg dg dgd W d    n1 s0    Y  tjt|d0 tdgdggg dddggd W d    n1 s0    Y  tjt|d& |  dgdgg W d    n1 sL0    Y  tjt|d* |  g dddgg W d    n1 s0    Y  |  jg dddggdd tjt|d0 tdgdggddgddggd W d    n1 s0    Y  d S )Nr   r   r   az+Length of levels and codes must be the samer"   r$   zbOn level 0, code max \(3\) >= length of level \(1\)\. NOTE: this index is in an inconsistent statezUnequal code lengths: \[4, 2\]z"On level 0, code value \(-2\) < -1br   )r   r      r   )r   r   r   r   r   F)r   Zverify_integrity)	nparrayr&   r'   r(   r   copy
set_levels	set_codes)idxr   r   r+   Zlength_errorZlabel_errorZcode_value_errorr   r   r    (test_constructor_mismatched_codes_levelsE   s(    "*>@6:r=   c                  C   s  t tjd tjddggg dgd} t tjd tjddggg dgd}t| | t tjdtjdd ggg dgd} t tjdtjdd ggg dgd}t| | t g dgg dgdtjdtjdd gg} t| | t tjdtjdd ggg d	gdg dg} t| | d S )
N   r   )r   r   r   r   r5   r$   )r?   r?   r?   r?   r   r5   s)r?   r?   r   r?   r   r?   )r   r   r   r5      )r   r   r   r   r   r   )	r   r7   nanpdNaTr   r   r:   r;   r   r   r   r    test_na_levelsk   s4    rE   c                  C   s   t g d} t g d}|d }t| | g||gdd}|jd d |ksPJ d|d< |jd d |ksnJ | d }d| d< |jd d |ksJ d S )Nr3   r4   c)r   r   r   r   r   r   r   r   T)r   r   r9      ZPANDA)r7   r8   r   r   r   )r   r   valr1   r   r   r    test_copy_in_constructor   s    rJ   c                 C   s   dd t | j| jD }tj|| jd}t||  ttj	t
dgddgg}|jd tt
dgsnJ |jd tddgsJ d S )	Nc                 S   s    g | ]\}}t ||qS r   r7   asarraytake.0levZlevel_codesr   r   r    
<listcomp>   s   z$test_from_arrays.<locals>.<listcomp>r/   Z20130101r3   r4   r   r   )zipr   r   r   from_arraysr   r   r   rC   rD   r   equalsr   r<   arraysr   r   r   r    test_from_arrays   s    rW   c                 C   sx   dd t | j| jD }tjt|| jd}t||  d}t	j
t|d td W d    n1 sj0    Y  d S )Nc                 S   s    g | ]\}}t ||qS r   rK   rN   r   r   r    rQ      s   z-test_from_arrays_iterator.<locals>.<listcomp>r/   z/Input must be a list / sequence of array-likes.r"   r   )rR   r   r   r   rS   iterr   r   r   r&   r'   r)   )r<   rV   r   r+   r   r   r    test_from_arrays_iterator   s    rY   c                 C   s<   t dd t| j| jD }tj|| jd}t||  d S )Nc                 s   s&   | ]\}}t t||V  qd S N)tupler7   rL   rM   rN   r   r   r    	<genexpr>   s   z*test_from_arrays_tuples.<locals>.<genexpr>r/   )	r[   rR   r   r   r   rS   r   r   r   rU   r   r   r    test_from_arrays_tuples   s
    r]   )idx1idx2
2011-01-01Dr   freqperiodsz
2015-01-01h2015-01-01 10:00
US/Easternrc   rd   tz
Asia/Tokyo1 daysz2 hoursc                 C   s|   t | |g}t|d|  t|d| t t| t|g}t|d|  t|d| t|| d S )Nr   r   )r   rS   r   r   get_level_valuesr   )r^   r_   r   result2r   r   r    =test_from_arrays_index_series_period_datetimetz_and_timedelta   s    rn   c                  C   s  t ddddd} t dddd}tjdddd}tjd	ddd}t| |||g}t|d
|  t|d| t|d| t|d| tt	| t	|t	|t	|g}t|d
|  t|d| t|d| t|d| t|| d S )Nrf   ra   r   rg   rh   re   rb   rk   r`   r   r   r   )
r	   rC   timedelta_rangeperiod_ranger   rS   r   r   rl   r   )r^   r_   Zidx3Zidx4r   rm   r   r   r    )test_from_arrays_index_datetimelike_mixed   s"    rq   c                  C   s   t jtdtddd} t jtdtddd}t| |g}t|d|  t|d| tt| t|g}t|d|  t|d| t| j	|j	g}t|d|  t|d| d S )NabcaabbacF
categoriesorderedTr   r   )
rC   CategoricalIndexlistr   rS   r   r   rl   r   values)r^   r_   r   rm   Zresult3r   r   r    )test_from_arrays_index_series_categorical   s    rz   c                  C   s   d} t jt| d tjg d W d    n1 s40    Y  tjg gdgd}t|ts^J tg dd}t|j	d | |j
dgksJ dD ]R}g g| }td	d | }tj||d}tg g| g g| |d
}t|| qd S )N)Must pass non-zero number of levels/codesr"   rV   ArV   r   r   r   )r   r   ABCr   )r&   r'   r(   r   rS   r   r   r   r   r   r   rx   )r+   r   r   NrV   r   r   r   r    test_from_arrays_empty  s    *
r   invalid_sequence_of_arraysr   r   r3   r4   r   r   r   r3   r3   r4   r   )r   r   )r   r   )r   r4   c                 C   sB   d}t jt|d tj| d W d    n1 s40    Y  d S )Nz.Input must be a list / sequence of array-likesr"   r|   )r&   r'   r)   r   rS   )r   r+   r   r   r    test_from_arrays_invalid_input#  s    r   z
idx1, idx2r   r   r   c                 C   sD   d}t jt|d t| |g W d    n1 s60    Y  d S )Nz ^all arrays must be same length$r"   )r&   r'   r(   r   rS   )r^   r_   r+   r   r   r    "test_from_arrays_different_lengthsE  s    r   c                  C   sh   t g ddd} t g ddd}tj| |gd d}tg dg dgg dg dgd d}t|| d S )	Nr   r
   r   rF   r   r/   r   r   r   r   )r   r   rS   r   r   r3   r4   r   r   r   r   r    $test_from_arrays_respects_none_namesO  s    r   c                  C   s   d} t jt| d tg  W d    n1 s20    Y  tddgddggddgddggdd	gd
}tjddd	gd}t|| d S )Nz-Cannot infer number of levels from empty listr"   r   r   r   r5   r   r3   r4   r   )r   )r   r5   r/   )r&   r'   r)   r   from_tuplesr   r   )r+   r   r   r   r   r    test_from_tuples_  s    ("r   c                  C   s   t ddgddggddgddggddgd} t jtddgddgddgd	}t||  d
}tjt|d t d W d    n1 s0    Y  d S )Nr   r   r   r5   r   r3   r4   r   r/   z/Input must be a list / sequence of tuple-likes.r"   )r   r   rR   r   r   r&   r'   r)   )r   r   r+   r   r   r    test_from_tuples_iteratorm  s    " r   c                  C   s8   t jg ddgd} t jg g gddgd}t| | d S )Nr3   r4   r/   r~   )r   r   rS   r   r   r   r   r   r    test_from_tuples_empty}  s    r   c                 C   s"   t | }|j| jk sJ d S rZ   )r   r   ry   all)r<   r   r   r   r    test_from_tuples_index_values  s    
r   c                  C   s   g d} d}t jt|d t| dd W d    n1 s<0    Y  t jt|d t| dd W d    n1 sv0    Y  d S )N))r   r   r   )r   r   r   )r   r   r   *Names should be list-like for a MultiIndexr"   abcr   r3   )r&   r'   r(   r   )Zlir+   r   r   r    test_tuples_with_name_string  s    *r   c                  C   s`   t jg dg dgg ddddg} tjddgd	d
}t jddgdg|d}t| | d S )N)r   r   r   )r5   r   r   rF   columnsr3   r4   )r   r   )r5   r   r   r/   r   r   rG   )r   index)rC   	DataFrameZ	set_indexr   r   r   Zassert_frame_equal)r   r<   r   r   r   r    !test_from_tuples_with_tuple_label  s    r   c                  C   s@   d} t jt| d tg  W d    n1 s20    Y  d S )Nr{   r"   )r&   r'   r(   r   from_productr*   r   r   r    #test_from_product_empty_zero_levels  s    r   c                  C   sD   t jg gdgd} tg dd}t| jd | | jdgks@J d S )Nr}   r/   r   r   )r   r   r   r   r   r   r   r   r   r   r    !test_from_product_empty_one_level  s    r   zfirst, second)r
   r   r   rF   c                 C   s@   ddg}t j| |g|d}t | |gg g g|d}t|| d S )Nr}   Br/   r   r   r   r   r   )r   secondr   r   r   r   r   r    "test_from_product_empty_two_levels  s    r   r   r5   c                 C   sR   g d}t t| }tjg |g g|d}tg |g gg g g g|d}t|| d S )N)r}   r   Cr/   r   )rx   ranger   r   r   r   )r   r   Zlvl2r   r   r   r   r    $test_from_product_empty_three_levels  s
    r   invalid_inputc                 C   sB   d}t jt|d tj| d W d    n1 s40    Y  d S )NzDInput must be a list / sequence of iterables|Input must be list-liker"   )	iterables)r&   r'   r)   r   r   )r   r+   r   r   r    test_from_product_invalid_input  s    r   c                  C   s`   t ddd} tddg| g}tdtdfdtdfdtdfdtdfg}t|j| d S )Nz
2000-01-01r   )rd   r   z
2000-01-02)r	   r   r   r   r   r   Zassert_numpy_array_equalry   )Zdt_indexr1   Zetalonr   r   r    test_from_product_datetimeindex  s    



r   c                  C   s<   t td} ddg}t| |g}tj|jd | dd d S )NrA   r3   r4   r   T)exact)r   r   r   r   r   r   Z_levels)rngotherr1   r   r   r    test_from_product_rangeindex  s    r   rv   FTfc                 C   s   | S rZ   r   xr   r   r    <lambda>      r   c                 C   s   t | S rZ   )r   r   r   r   r    r     r   c                 C   s   | j S rZ   )ry   r   r   r   r    r     r   c                 C   sh   ddg}t jtdtd| d}t jtdtd td| d}t|||g}t|d| d S )Nr
   r   rr   rs   rt   r   )rC   rw   rx   r   r   r   r   rl   )rv   r   r   r<   r   r   r   r   r    *test_from_product_index_series_categorical  s    r   c                  C   sP   g d} g d}ddg}t j| |g|d}g d}t j||d}t|| d S )Nr
   r   buzrF   r   r   r/   	)r
   r3   )r
   r4   )r
   rG   )r   r3   )r   r4   )r   rG   )r   r3   )r   r4   )r   rG   )r   r   r   r   r   )r   r   r   r   tuplesr   r   r   r    test_from_product  s    r   c                  C   s   g d} g d}ddg}g d}t j||d}t jt| |g|d}t|| d}tjt|d t d	 W d    n1 s0    Y  d S )
Nr   rF   r   r   r   r/   z-Input must be a list / sequence of iterables.r"   r   )	r   r   r   rX   r   r   r&   r'   r)   )r   r   r   r   r   r   r+   r   r   r    test_from_product_iterator  s    r   za, b, expected_namesr
   r   r   c                 C   sD   t | |g}t g dddggg dg dg|d}t|| d S )Nr   r3   r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r3   r4   Zexpected_namesr   r   r   r   r    test_from_product_infer_names#  s    r   c                  C   sh   t g ddd} t ddgdd}tj| |gd d}tg dddggg dg d	gd d
}t|| d S )Nr   r
   r   r3   r4   r   r/   r   r   r   )r   r   r   r   r   r   r   r   r    %test_from_product_respects_none_names:  s    r   c                  C   sN   t td} ddg}t| |g}| jdd t| |g}t|| d S )Nr   r3   r4   F)write)r7   r8   r   r   r   Zsetflagsr   r   )r3   r4   r   r   r   r   r    test_from_product_readonlyH  s    r   c                 C   sj   | }ddg|_ t|}ttg ddd}t|| t|dd}ttg ddddd}t|| d S )Nr
   r   ))r
   r-   )r
   r.   )r   r-   )r   r.   )r   r-   )r   r.   objectdtyper}   r   )r   r   r   r   )r<   r   r   r   r   r   r    test_create_index_existing_nameS  s&    
r   c                  C   sZ   t jddgddgddgddggddgd} tjg dddgd}t| }t|| d S )Nr3   r4   L1L2r   ))r3   r3   r   )r4   r3   )r4   r4   r/   )rC   r   r   r   
from_framer   r   )dfr   r   r   r   r    test_from_frame}  s     
r   c               
   C   s   t d} ttg dddt | dtj	d gd}t
|}t
jtg ddt | dtj	d ggddgd	}t|| d S )
NZpyarrow)r   r   NZInt64r   g?r   r3   r4   r/   )r&   ZimportorskiprC   r   r   ZFloat64DtypeZ__from_arrow__r8   r7   rB   r   r   rS   Zastyper   r   )par   Zmulti_indexedr   r   r   r    )test_from_frame_missing_values_multiIndex  s    

r   	non_frame)r   r   r   r5   rA         c                 C   s<   t jtdd t|  W d    n1 s.0    Y  d S )NzInput must be a DataFramer"   )r&   r'   r)   r   r   )r   r   r   r    test_from_frame_error  s    r   c                     s   t tddddg dt jg dddg d	d
} | j }tjtddddg dt jg dddg d	gg d
d}t|   fddt	 j
D }t|  ||ksJ d S )NZ19910905r   rg   )rd   ri   )r   r   r   r   r   r   )r3   r3   r4   r4   rG   rG   T)rv   )r   r   yzr   r   )datesr3   r4   rG   r/   c                    s   i | ]\}}| j | jqS r   )r   r   )rO   ir   r1   r   r    
<dictcomp>  r   z2test_from_frame_dtype_fidelity.<locals>.<dictcomp>)rC   r   r	   ZCategoricaldtypesto_dictr   rS   r   	enumerater   r   r   )r   Zoriginal_dtypesZexpected_miZ	mi_dtypesr   r   r    test_from_frame_dtype_fidelity  s(    
	
r   znames_in,names_outr   r   r   r   r   r   c                 C   sP   t jddgddgddgddggtddgd}tj|| d}|j|ksLJ d S )Nr3   r4   r   r   r   r/   )rC   r   r   r   r   r   )Znames_inZ	names_outr   r1   r   r   r    test_from_frame_valid_names  s    r   znames,expected_error_msg)Z	bad_inputr   z9Length of names must match number of levels in MultiIndexc                 C   sp   t jddgddgddgddggtddgd}tjt|d tj|| d W d    n1 sb0    Y  d S )Nr3   r4   r   r   r   r"   r/   )rC   r   r   r   r&   r'   r(   r   )r   Zexpected_error_msgr   r   r   r    test_from_frame_invalid_names  s    	r   c                  C   s@   t g g gg g gddgd} t jg g gddgd}t| | d S )Nr3   r4   r   r~   )r   rS   r   r   r   r   r   r    test_index_equal_empty_iterable  s    r   c                  C   s   ddgg dg} t | g dg dgdd tjtdd	* t | g dg d
gdd W d    n1 sh0    Y  tjtdd	* t | g dg dgdd W d    n1 s0    Y  d S )Nr   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   Z	sortorderz%.* sortorder 2 with lexsort_depth 1.*r"   )r   r   r   r   r   r   z%.* sortorder 1 with lexsort_depth 0.*)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r&   r'   r(   r%   r   r   r    test_raise_invalid_sortorder  s    $r   c                  C   s2  t jg dd dd} tddddd	}t| |g}t jg ddd}t|jd
 | t|jd | t	d}t
 }t }t|||g|||gD ]F\}}t|g|gg}	t|	jd
 t jsJ t|	jd t jsJ qt }
t|
g|gg}	t|	jd
 t jrJ t|	jd t js.J d S )N)z2013-04-01 9:00z2013-04-02 9:00z2013-04-03 9:00r   rj   )ri   z
2010/01/01r   ZMErg   )rd   rc   ri   r   r   today)rC   DatetimeIndexr	   r   rS   r   r   r   r7   Z
datetime64r   r   r   	itertoolsproductr   r   r   )r^   r_   r<   Z	expected1Zdate1Zdate2Zdate3Zd1Zd2r   Zdate4r   r   r    test_datetimeindex  s*    
 r   c                  C   s   t jddgddd} t jddgdd	d}t| |g}|jddgksHJ t|jd
 |  t|jd | tt| t|g}|jddgksJ t|jd
 |  t|jd | d S )Nz2013/01/01 09:00z2013/01/02 09:00Zdt1z
US/Pacific)r   ri   z2014/01/01 09:00z2014/01/02 09:00Zdt2rj   r   r   )	rC   r   r   rS   r   r   r   r   r   )r   r   r   r   r   r    test_constructor_with_tz&  s    

r   c                  C   s   t  } | | g}t|}|jtks&J t|g}|jd }|jtksJJ t|g}|jd }|jtksnJ t	dd |D }|jd }|jtksJ d S )Nr   c                 S   s   g | ]
}|fqS r   r   )rO   r   r   r   r    rQ   M  r   z9test_multiindex_inference_consistency.<locals>.<listcomp>)
r   r   r   r   r   r   rS   r   r   r   )vZarrr<   r1   rP   r   r   r    %test_multiindex_inference_consistency;  s    


r   c                 C   sX   t jdgdggddgd}|j}| s(dnd}td|gt ddgtd	}t|| d S )
Nr   r3   r   )rG   dr/   r   stringZint64)r   r   )r   rS   r   r   r   r   r   Zassert_series_equal)Zusing_infer_stringZpmidxr   expr   r   r   r    test_dtype_representationR  s    r   )Ir   r   r   numpyr7   r&   Zpandas.core.dtypes.castr   ZpandasrC   r   r   r   r   r	   Zpandas._testingZ_testingr   r!   r,   r2   r=   rE   rJ   rW   rY   r]   markZparametrizerp   ro   rn   rq   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r    <module>   s  
& 

&


	,

*







 