U
    -eb                     @   s~  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
 d dlmZ d dlmZmZ ejdddgejddd	d
dgdd Zejde	eje
egdd Zejjejde	eje
e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 d#d$ Z!d%d& Z"d'd( Z#d)d* Z$ejddd	d
dgd+d, Z%d-d. Z&d/d0 Z'd1d2 Z(ejd3e)de)d gd4d5 Z*d6d7 Z+d8d9 Z,d:d; Z-d<d= Z.d>d? Z/d@dA Z0ejdd	dd
dgdBdC Z1ejdDej2dEgdFdG Z3ejdDej2dHgdIdJ Z4ejdKdLgdLgfdLdLgdLgfdMdLgdMdLgfgdNdO Z5ejdPdQdddgfdQdRgddgfdQdSgddgfdTdUdVgddgfdTdSdRgddgfdWdRdSdUgddgfdTdRdUgdRdgfdTdUdSgddSgfdTdRdSgdRdSgfdTddSgddSgfg
dXdY Z6dZd[ Z7d\d] Z8d^d_ Z9d`da Z:ejdbdcddgejdeddfgdgdh Z;ejdDdidjgdkdl Z<ejdmdnej2gdodp Z=dqdr Z>dsdt Z?dudv Z@ejdwdRdSdUgd dxggdUdVdSgdxggd djdygdjdjdjggd djdygd d d ggdzd{gfgd|d} ZAejdRejBdRdSgdRdSgd~dRdSggejdSejBdRdSgdSdRgddejBdRdSgdSdRgd~gdd ZCejdDej2dEgdd ZDdd ZEdS )    N)CategoricalIndex	DataFrameIndexIntervalIndex
MultiIndexSeries)is_float_dtypeis_unsigned_integer_dtypecaseg      ?Zxxxmethodintersectionunion
differencesymmetric_differencec              	   C   s4   d}t jt|d t| |||d W 5 Q R X d S )Nz!Input must be Index or array-likematchsort)pytestraises	TypeErrorgetattr)idxr
   r   r   msg r   g/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/indexes/multi/test_setops.pytest_set_ops_error_cases   s    r   klassc              	   C   s   | dd d }| d d }|t k	r,||j}|j||d}|d krL| }n|}t|| d}tjt|d |jdddg|d W 5 Q R X d S )	N      r   .other must be a MultiIndex or a list of tuplesr         )	r   valuesr   sort_valuestmassert_index_equalr   r   r   )r   r   r   firstsecondZ	intersectexpectedr   r   r   r   test_intersection_base   s    

r+   c              	   C   s   | d d d }| d d }|t k	r,||j}|j||d}|d krL| }n|}t|| d}tjt|d |jdddg|d W 5 Q R X d S )	Nr   r    r   r!   r   r"   r   r#   )	r   r$   r   r%   r&   r'   r   r   r   )r   r   r   r(   r)   r   r*   r   r   r   r   test_union_base3   s    

r,   c              	      s   | dd   | d d }| j  |d}|d kr6| }||sDtt||  fddtjtt	fD }|D ]}| j ||d}t|| qnd}t
jt|d | j ddd	g|d W 5 Q R X d S )
N   r   c                    s   g | ]}| j qS r   r$   .0r   r)   r   r   
<listcomp>T   s     z(test_difference_base.<locals>.<listcomp>r!   r   r"   r   r#   )r   r%   equalsAssertionErrorr&   r'   nparrayr   listr   r   r   )r   r   answerresultcasesr
   r   r   r1   r   test_difference_baseH   s    r;   c              	      s   | dd  }| d d  | ddg }|j  |d}|d krB| }t||  fddtjttfD }|D ]}|j ||d}t|| qld}tj	t
|d |j dd	d
g|d W 5 Q R X d S )Nr"   r   r   r   c                    s   g | ]}| j qS r   r.   r/   r1   r   r   r2   j   s     z-test_symmetric_difference.<locals>.<listcomp>r!   r   r   r#   )r   r%   r&   r'   r5   r6   r   r7   r   r   r   )r   r   r(   r8   r9   r:   r
   r   r   r1   r   test_symmetric_difference^   s    r<   c                  C   sj   t jddgddggddgd} | | }|j| jks8t|  ddg}| |}|jd d gksftd S )NabABnames)r   from_productr   rB   r4   copyrename)r   r9   idx2r   r   r   $test_multiindex_symmetric_differencet   s    

rG   c                 C   s    | j r
t| d d j std S )Nr   )emptyr4   r   r   r   r   
test_empty   s    
rJ   c              	   C   sl  | }|j | dd  |d}| d d j}|d kr8t|}tj|d| jd}t|tsXt||sft|j| jksvtt	
|| | j | |d}| d d }||st|j| jkst| dd  j | |d}| d d }||st|j| jkst| d d j | |d}| d d }||s,t|j| jks>t| dd  }ddg|_|j ||d}|jdksrt| j | dd |d}t|dkst|j |j|d}||d d st|j g |d}||st|j|jkst|j d	g|d}td
ddddg}|j|_|j|jks2td}tjt|d |j dddddg|d W 5 Q R X d S )Nr   r   )Z	sortorderrB   foobazNNr"   rL   one)barrP   )rM   two)rL   rR   )quxrP   )rS   rR   r!   r   r   r#   r-   r    )r   r$   sortedr   from_tuplesrB   
isinstancer4   r3   r&   r'   Z	sortlevellenr   r   r   )r   r   r(   r9   valsr*   Zchunkletr   r   r   r   test_difference   sT    
rY   c                  C   s0   t ddgddgg} | g }t||  d S )Nr"   r   r=   r>   r   rC   r   r&   r'   r   r9   r   r   r   test_difference_sort_special   s    
r\   c                  C   sJ   t ddgddgg} | jg dd}t ddgddgg}t|| d S Nr"   r   r=   r>   Tr   rZ   )r   r9   r*   r   r   r   !test_difference_sort_special_true   s    r^   c               	   C   s   t dtddgddgg} t dtddgdd	gg}d
}tjt|d | |}W 5 Q R X t||  | j|dd}t||  d S )Nr"   2000r   r=   r>   r#   r-   cdz0sort order is undefined for incomparable objectsr   Fr   )	r   rC   pd	Timestampr&   assert_produces_warningRuntimeWarningr   r'   )r   otherr   r9   r   r   r   !test_difference_sort_incomparable   s    rg   c               	   C   sl   t dtddgddgg} t dtddgdd	gg}d
}tjt|d | j|dd W 5 Q R X d S )Nr"   r_   r   r=   r>   r#   r-   r`   ra   zH'values' is not ordered, please explicitly specify the categories order r   Tr   )r   rC   rb   rc   r   r   r   r   )r   rf   r   r   r   r   &test_difference_sort_incomparable_true   s
    rh   c                 C   s   | d d d d d }| dd  }|j ||d}|d krHt||   t|| sXt| j | |d}t||  | j | d d |d}t||  | j}| d d j |dd  |d}|d krt||  n|| std S )Nr    r   r#   r   r   r-   )r   r&   r'   r%   equalContentsr4   r$   r3   )r   r   piece1piece2Z	the_uniontuplesr9   r   r   r   
test_union   s    rm   c              	   C   sj   t dddg}|| }d|ks$td|ks0td}tjt|d | |}W 5 Q R X ||rftd S )Nr?   r@   CrO   z'The values in the array are unorderabler   )r   r   r4   r&   rd   re   r3   )r   rf   r9   r   Zresult2r   r   r   test_union_with_regular_index  s    
ro   c           	      C   s   | d d d d d }| dd  }|j ||d}|d krLt|| dd  t|| dd sdt| j | |d}t||  | d d j | dd  |d}| d d }||st| j}|  |}|| std S )Nr    r   r#   r   r   r   )r   r&   r'   ri   r4   r3   r$   )	r   r   rj   rk   Zthe_intrH   r*   rl   r9   r   r   r   test_intersection  s    
rp   c                 C   s   |   d}d g| j }t| |||d}t| || |d|}t|| t| ||d d |d}t| || d d |d|}t|| d S )Ncategoryr   r    )Zto_flat_indexastypenlevelsr   rE   r&   r'   )r   r   r   rf   Z	res_namesr9   r*   r   r   r   test_setop_with_categorical2  s     rt   c              	   C   s   t tddd}| j||d}t| jg g| j d d}tj||dd | jt	|d d |d}t| jg g| j | j
d}tj||dd d	}tjt|d
 | jt	||d W 5 Q R X d S )Nr#   rL   )namer   levelscodesrB   T)exactr   r!   r   )r   ranger   r   rw   rs   r&   r'   r5   ZasarrayrB   r   r   r   )r   r   rf   r9   r*   r   r   r   r   test_intersection_non_objectB  s    r{   c                  C   sF   t ddgddgg} t| j| dd|  t| j| d d|  d S Nr"   r   r=   r>   Fr   )r   rC   r&   r'   r   rI   r   r   r   test_intersect_equal_sortT  s    r}   c                  C   sJ   t ddgddgg} t ddgddgg}| j| dd}t|| d S r]   )r   rC   r   r&   r'   )r   r*   r9   r   r   r   test_intersect_equal_sort_true[  s    r~   slice_c                 C   s\   t ddgddgg}||  }t||| t||| t|j|dd| d S r|   )r   rC   r&   r'   r   )r   r   rf   r   r   r   test_union_sort_other_emptyb  s
    r   c                  C   sV   t ddgddgg} | d d }| j|dd}t ddgddgg}t|| d S r]   )r   rC   r   r&   r'   )r   rf   r9   r*   r   r   r    test_union_sort_other_empty_sortp  s
    r   c               	   C   sv   t dtdgddgg} tt | | d d }W 5 Q R X t||  | j| d d dd}t||  d S )Nr"   r_   r=   r>   Fr   )	r   rC   rb   rc   r&   rd   re   r   r'   r[   r   r   r   "test_union_sort_other_incomparablez  s    r   c               	   C   sT   t dtdgddgg} d}tjt|d | j| d d dd W 5 Q R X d S )	Nr"   r_   r=   r>   z<'<' not supported between instances of 'Timestamp' and 'int'r   Tr   )r   rC   rb   rc   r   r   r   r   )r   r   r   r   r   'test_union_sort_other_incomparable_sort  s    r   c               	   C   sL   t ddgddgg} | jd }d}tjt|d | | W 5 Q R X d S )Nr=   r>   r"   r   z<Can only union MultiIndex with MultiIndex or Index of tuplesr   )r   rC   rw   r   r   NotImplementedErrorr   )mir   r   r   r   r   "test_union_non_object_dtype_raises  s
    
r   c                  C   sZ   t g g} t jddgddggddgd}| |}t ddgddgg}t|| d S )Nr"   r   r#   r-   r=   r>   rA   r   from_arraysr   r&   r'   )r   mi2r9   r*   r   r   r   %test_union_empty_self_different_names  s
    
r   c                  C   s`   t jddgddggddgd} td}| |}tj| |d	d
 || }tj| |d	d
 d S )Nr"   r   r#   r-   r=   r>   rA   r   F)Zcheck_names)r   r   rb   Z
RangeIndexr   r&   r'   )r   riZresult_leftZresult_rightr   r   r   &test_union_multiindex_empty_rangeindex  s    


r   c              	   C   sn   t ddgddgg}t ddgddgg}tjtdd t|| |dd W 5 Q R X t|| |d	d d S )
Nr=   r>   r"   r   r`   zThe 'sort' keyword only takesr   r   T)r   rC   r   r   
ValueErrorr   )r   Zidx1rF   r   r   r   test_setops_sort_validation  s
    r   vald   c                 C   s   t jtddg| dddggdd gd}t tdd|g| ddddgg}||}t tdg| ddgg}t|| ||jdd}t jtg | dtg tjdgdd gd}t|| d S )	Nr"   r   dtyper=   rA   r#   F)Z	ascending)	r   r   r   r   r&   r'   r%   r5   int64any_numeric_ea_dtyper   midxmidx2r9   r*   r   r   r   test_difference_keep_ea_dtypes  s      
r   r    c                 C   s   t jtddg| dddggdd gd}t tdd|g| ddddgg}||}t tdd|g| ddddgg}t|| d S Nr"   r   r   r=   rA   r#   )r   r   r   r   r&   r'   r   r   r   r   *test_symmetric_difference_keeping_ea_dtype  s     
r   )rl   
exp_tuplesZval1Ztest1Zval2Ztest2c                 C   sV   t j| ddgd}t jdddgddgd}||}t j|ddgd}t|| d S )Nr(   r)   rA   r   r   )r   rU   r   r&   r'   )rl   r   leftrightr9   r*   r   r   r   test_intersect_with_duplicates  s    
r   zdata, names, expectedr"   r=   r>   )r"   r   r`   ra   )r"   r   r#   c                 C   s<   t jg ddgd}t j| g|d}||}||ks8td S )Nr=   r>   rA   )r   rU   Z_maybe_match_namesr4   )datarB   r*   r   r   r9   r   r   r   test_maybe_match_names  s    
r   c                  C   st   t jddgddggddgd} t jddgddggddgd}| |}t jddgddggd dgd}t|| d S )	Nr"   r   r#   r-   r`   r>   rA   r=   r   r   r   r&   r'   )mi1r   r9   r*   r   r   r   'test_intersection_equal_different_names  s
    
r   c                  C   sF   t jdgdggddgd} t dgdgg}| |}t|| d S )Nr"   r#   r`   r>   rA   r   )r   r   r9   r   r   r   !test_intersection_different_names  s    
r   c                 C   sh   t d| d| gddddgg}t d| dgdddgg}||}t d| gddgg}t|| d S )Nr#   r-   r"   r   r   Znulls_fixturer   r   r9   r*   r   r   r   3test_intersection_with_missing_values_on_both_sides"  s
    
r   c                 C   sN   t d| gg}t d| dgg}||}t dd| gg}t|| d S )Nr"   r#   r   r   r   r   r   ,test_union_with_missing_values_on_both_sides+  s
    
r   r   Zfloat64ZFloat64r   Fc                 C   s   t tjdtjg| dddgg}t tjdtjdg| ddddgg}|j||d}|d krt tjddtjg| ddddgg}n|}t|| d S )N      ?r   r   r#   g      @r-   r   )	r   r   rb   r6   r5   nanr   r&   r'   )r   r   r   r   r9   r*   r   r   r   test_union_nan_got_duplicated4  s    "&r   r-   r"   c                 C   s   t |dg| d}t ddg| d}tj|ddggdd gd}t|ddgg}||}|dkrtt dddg| ddddgg}ntt ddg| dddgg}t|| d S )Nr   r   r"   r=   rA   r-   r   r   r   r   r&   r'   )r   r   arr1arr2r   r   r9   r*   r   r   r   test_union_keep_ea_dtypeD  s    
r   dupe_valr#   c                 C   s   t td| dg|dtd| dg|dg}t td| | g|dtd| | g|dg}||}t tdd| | g|dtdd| | g|dg}t|| d S )Nr"   r   r   )r   r   r   r   r&   r'   )r   r   r   r   r9   r*   r   r   r   (test_union_with_duplicates_keep_ea_dtypeX  s"    
r   c                 C   s  | j st| ttfrd S |  j }t|dgt	| g}t|d g| dgt	|d  g}|
|}| }t|| t|jd r|ddk  r||jd tj|jd g}n.t|jd r||jd t|jd g}|
|}t|| d S )Nr"   r   l            )rH   rV   r   r   uniquer$   tolistr   r   rW   r   r%   r&   r'   r	   rw   Zget_level_valuesallZ
set_levelsrr   r5   r   r   float)indexrequestr$   r   r   r9   r*   r   r   r   test_union_duplicatesq  s*    &

r   c                 C   s   t dddg| d}t ddg| d}tj|dddggdd gd}tj|ddggdd gd}||}tjt dddg| ddddggdd gd}t|| d S )Nr-   r"   r   r   r=   rA   r   )Zany_real_numeric_dtyper   r   r   r   r9   r*   r   r   r   test_union_keep_dtype_precision  s    
r   c                 C   s   t dtjg| d}t dtjg| d}tj|ddggdd gd}t|ddgg}||}tt ddtjtjg| dddddgg}t|| d S )Nr-   r   r"   r   r=   rA   )r   rb   NAr   r   r   r&   r'   )r   r   r   r   r   r9   r*   r   r   r    test_union_keep_ea_dtype_with_na  s    
"r   z'levels1, levels2, codes1, codes2, names r   Zname1Zname2c                 C   s8   t | ||d}t |||d}||}|jdks4td S )Nrv   r   )r   r   Z_lexsort_depthr4   )Zlevels1Zlevels2Zcodes1Zcodes2rB   r   r   Zmi_intr   r   r   test_intersection_lexsort_depth  s    
r   )
categoriesT)r   Zorderedc           
      C   s   ddg}t | |d}t ||d}tj| |gddgd}t|t|ddg}t|t|}t|ddgt|}t|ddgt|ddg}	t|| t|| t|| t|	| d S )N12)xyr   r   rA   )r   r   r   Z
from_framer   r%   r&   r'   )
r=   r>   rf   Zdf1Zdf2r*   Zres1Zres2Zres3Zres4r   r   r   0test_intersection_with_non_lex_sorted_categories  s$    
r   c                 C   s|   t jtddg|dddggdd gd}t tdd| g|ddddgg}||}t tdg|ddgg}t|| d S r   )r   r   r   r   r&   r'   )r   r   r   r   r9   r*   r   r   r    test_intersection_keep_ea_dtypes  s     
r   c                  C   sb   t dtdd} t dtdd}t| |g}ttjtjfddgdtjd	gi}t|| d S )
Nr   )rN   )r   )
      )rN   r=   r>   r   g      $@r   g      4@)r   r   rU   r   r5   r   r&   Zassert_frame_equal)Zseries1Zseries2r9   r*   r   r   r   .test_union_with_na_when_constructing_dataframe  s
    "r   )Fnumpyr5   r   Zpandasrb   r   r   r   r   r   r   Zpandas._testingZ_testingr&   Zpandas.api.typesr   r	   markZparametrizer   r6   r7   r+   Zarm_slowr,   r;   r<   rG   rJ   rY   r\   r^   rg   rh   rm   ro   rp   rt   r{   r}   r~   slicer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZCategoricalr   r   r   r   r   r   r   <module>   s     

A 



	 







		

#

