o
    iG                     @   sb  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	 d dl
mZ ejdddgejdg d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ejjdddd Zdd  Zd!d" Zd#d$ Zejjd%e d&d'd( Z!d)d* Z"ejdg dd+d, Z#d-d. Z$d/d0 Z%ejjddd1d2 Z&ejd3e'de'd gd4d5 Z(ejjddd6d7 Z)d8d9 Z*ejjddd:d; Z+d<d= Z,d>d? Z-d@dA Z.ejdg dBdCdD Z/ejdEdFgdFgfdFdFgdFgfdGdFgdGdFgfgdHdI Z0ejdJdKdddgfdKdLgddgfdKdMgddgfdNdOdPgddgfdNdMdLgddgfdQg dRddgfdNdLdOgdLdgfdNdOdMgddMgfdNdLdMgdLdMgfdNddMgddMgfg
dSdT Z1dUdV Z2dWdX Z3dYdZ Z4d[d\ Z5d]d^ Z6ejd_g dRd d`ggg dad`ggg dbg dcgg dbg ddgdedfgfgdgdh Z7dS )i    N)CategoricalIndexIndexIntervalIndex
MultiIndexSeriescaseg      ?xxxmethod)intersectionunion
differencesymmetric_differencec                 C   sJ   d}t jt|d t| |||d W d    d S 1 sw   Y  d S )Nz!Input must be Index or array-likematchsort)pytestraises	TypeErrorgetattr)idxr   r   r	   msg r   a/var/www/edux/Edux_v2/venv/lib/python3.10/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 ur||j}|j||d}|d u r&| }n|}t|| d}tjt|d |jg d|d W d    d S 1 sLw   Y  d S )N      r   .other must be a MultiIndex or a list of tuplesr      r      )	r   valuesr
   sort_valuestmassert_index_equalr   r   r   )r   r   r   firstsecond	intersectexpectedr   r   r   r   test_intersection_base   s   

"r+   c                 C   s   | d d d }| d d }|t ur||j}|j||d}|d u r&| }n|}t|| d}tjt|d |jg d|d W d    d S 1 sLw   Y  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   test_union_base.   s   

"r,   c                    s   | dd   | d d }| j  |d}|d u r| }||s"J t||  fddtjttfD }|D ]}| j ||d}t|| q7d}t	j
t|d | j g d|d W d    d S 1 sew   Y  d S )N   r   c                       g | ]}| j qS r   r#   .0r   r(   r   r   
<listcomp>O       z(test_difference_base.<locals>.<listcomp>r   r   r    )r   r$   equalsr%   r&   nparrayr   listr   r   r   )r   r   answerresultcasesr   r   r   r2   r   test_difference_baseC   s   "r<   c                    s   | dd  }| d d  | ddg }|j  |d}|d u r!| }t||  fddtjttfD }|D ]}|j ||d}t|| q6d}tj	t
|d |j g d	|d W d    d S 1 sdw   Y  d S )
Nr!   r   r   r   c                    r.   r   r/   r0   r2   r   r   r3   e   r4   z-test_symmetric_difference.<locals>.<listcomp>r   r   r    )r   r$   r%   r&   r6   r7   r   r8   r   r   r   )r   r   r'   r9   r:   r;   r   r   r   r2   r   test_symmetric_differenceY   s   "r=   c                  C   s   t jddgddggddgd} tt | | A }W d    n1 s#w   Y  |j| jks0J |  ddg}tt | |A }W d    n1 sMw   Y  |jd d gks[J d S )NabABnames)r   from_productr%   assert_produces_warningFutureWarningrC   copyrename)r   r:   idx2r   r   r   $test_multiindex_symmetric_differenceo   s   

rJ   c                 C   s    | j rJ | d d j sJ d S )Nr   )emptyr   r   r   r   
test_empty|   s   
rM   c                 C   sj  | }|j | dd  |d}| d d j}|d u rt|}tj|d| jd}t|ts,J ||s3J |j| jks;J t	|| | j | |d}| d d }||sUJ |j| jks]J | dd  j | |d}| d d }||suJ |j| jks}J | d d j | |d}| d d }||sJ |j| jksJ | dd  }ddg|_|j ||d}|jdksJ | j | 
dd |d}t|dksJ |j |j|d}||d d sJ |j g |d}||sJ |j|jksJ |j d	g|d}tg d
}|j|_|j|jksJ d}tjt|d |j g d|d W d    d S 1 s.w   Y  d S )Nr   r   )	sortorderrC   foobaz)NNr!   rP   one))barrS   )rQ   two)rP   rU   )quxrS   )rV   rU   r   r   )r!   r   r"   r-   r   )r   r#   sortedr   from_tuplesrC   
isinstancer5   r%   r&   	sortlevellenr   r   r   )r   r   r'   r:   valsr*   chunkletr   r   r   r   test_difference   sV   
$r^   c                  C   s0   t ddgddgg} | g }t||  d S )Nr!   r   r>   r?   r   rD   r   r%   r&   r   r:   r   r   r   test_difference_sort_special   s   
ra   zNot implemented.reasonc                  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   r_   )r   r:   r*   r   r   r   !test_difference_sort_special_true   s   re   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 d    n1 s7w   Y  t||  | j|dd}t||  d S )Nr!   2000r   r>   r?   r"   r-   cdz0sort order is undefined for incomparable objectsr   Fr   )	r   rD   pd	Timestampr%   rE   RuntimeWarningr   r&   )r   otherr   r:   r   r   r   !test_difference_sort_incomparable   s   rm   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 | j|dd W d    d S 1 s:w   Y  d S )Nr!   rf   r   r>   r?   r"   r-   rg   rh   zKThe 'sort' keyword only takes the values of None or False; True was passed.r   Tr   )r   rD   ri   rj   r   r   
ValueErrorr   )r   rl   r   r   r   r   &test_difference_sort_incomparable_true   s   "ro   c                 C   s   | d d d d d }| dd  }|j ||d}|d u r$t||   t|| s,J | j | |d}t||  | j | d d |d}t||  | j}| d d j |dd  |d}|d u rht||  d S || soJ d S )Nr   r   r"   r   r   r-   )r   r%   r&   r$   equalContentsr#   r5   )r   r   piece1piece2	the_uniontuplesr:   r   r   r   
test_union   s   ru   z9Length of names must match number of levels in MultiIndex)rc   r   c                 C   s|   t g d}|| }d|v sJ d|v sJ d}tjt|d | |}W d    n1 s0w   Y  ||s<J d S )N)r@   rA   CrR   rA   z'The values in the array are unorderabler   )r   r   r%   rE   rk   r5   )r   rl   r:   r   result2r   r   r   test_union_with_regular_index  s   
rx   c           	      C   s   | d d d d d }| dd  }|j ||d}|d u r&t|| dd  t|| dd s2J | j | |d}t||  | d d j | dd  |d}| d d }||s[J | j}|  |}|| sjJ d S )Nr   r   r"   r   r   r   )r
   r%   r&   rp   r5   r#   )	r   r   rq   rr   the_intrK   r*   rt   r:   r   r   r   test_intersection  s   
rz   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   )to_flat_indexastypenlevelsr   rH   r%   r&   )r   r   r	   rl   	res_namesr:   r*   r   r   r   test_setop_with_categorical3  s    r   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 d    d S 1 sew   Y  d S )Nr"   rP   )namer   levelscodesrC   T)exactr   r   r   )r   ranger
   r   r   r~   r%   r&   r6   asarrayrC   r   r   r   )r   r   rl   r:   r*   r   r   r   r   test_intersection_non_objectC  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   rD   r%   r&   r
   rL   r   r   r   test_intersect_equal_sortU  s   r   c                  C   sF   t ddgddgg} t ddgddgg}t| j| dd| d S rd   r   )r   sorted_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   rD   r%   r&   r   )r   r   rl   r   r   r   test_union_sort_other_emptyd  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 rd   )r   rD   r   r%   r&   )r   rl   r:   r*   r   r   r    test_union_sort_other_empty_sortr  s
   r   c                  C   s   t dtdgddgg} tt | | d d }W d    n1 s'w   Y  t||  | j| d d dd}t||  d S )Nr!   rf   r>   r?   Fr   )	r   rD   ri   rj   r%   rE   rk   r   r&   r`   r   r   r   "test_union_sort_other_incomparable}  s   r   c                  C   sf   t dtdgddgg} tjtdd | j| d d dd W d    d S 1 s,w   Y  d S )	Nr!   rf   r>   r?   zCannot comparer   Tr   )r   rD   ri   rj   r   r   r   r   rL   r   r   r   'test_union_sort_other_incomparable_sort  s   "r   c                  C   sb   t ddgddgg} | jd }d}tjt|d | | W d    d S 1 s*w   Y  d S )Nr>   r?   r!   r   z<Can only union MultiIndex with MultiIndex or Index of tuplesr   )r   rD   r   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?   rB   )r   from_arraysr   r%   r&   )r   mi2r:   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?   rB   r   F)check_names)r   r   ri   
RangeIndexr   r%   r&   )r   riresult_leftresult_rightr   r   r   &test_union_multiindex_empty_rangeindex  s   


r   )r   r
   r   r   c                 C   sr   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 d    d S 1 s2w   Y  d S )
Nr>   r?   r!   r   rg   zThe 'sort' keyword only takesr   Tr   )r   rD   r   r   rn   r   )r	   idx1rI   r   r   r   test_setops_disallow_true  s
   "r   )rt   
exp_tuplesval1test1val2test2c                 C   sT   t j| ddgd}t jg dddgd}||}t j|ddgd}t|| d S )Nr'   r(   rB   )r   r   r   )r   rX   r
   r%   r&   )rt   r   leftrightr:   r*   r   r   r   test_intersect_with_duplicates  s   
r   zdata, names, expected)r!   r>   r?   )r!   r   rg   rh   r    )r>   r?   rg   c                 C   s<   t jg ddgd}t j| g|d}||}||ksJ d S )Nr>   r?   rB   )r   rX   _maybe_match_names)datarC   r*   r   r   r:   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-   rg   r?   rB   r>   r   r   r
   r%   r&   )mi1r   r:   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"   rg   r?   rB   r   )r   r   r:   r   r   r   !test_intersection_different_names  s   
r   c                 C   sb   t d| d| gg dg}t d| dgg dg}||}t d| gddgg}t|| d S )Nr"   r-   )r!   r   r-   r   )r!   r   r-         @r!   r   r   )nulls_fixturer   r   r:   r*   r   r   r   3test_intersection_with_missing_values_on_both_sides  s
   
r   c                  C   sL   t dtjgddgg} t dtjdgg dg}| |}t|| d S )Ng      ?r   r"   r   )r   r"   r-   )r   r   r6   nanr   r%   r&   )r   r   r:   r   r   r   test_union_nan_got_duplicated  s   
r   c                 C   s  | j s
t| ttfrd S | jjdkrtjjdd}|j	
| |  j }t|dgt| g}t|d g| dgt|d  g}||}| }|jd jtjkrp|ddk  rp||jd t|jd g}t|| ||}t|| d S )Nrg   z?sort_values() call raises bc complex objects are not comparablerb   r!   r   l            )rK   rY   r   r   dtypekindr   markxfailnode
add_markeruniquer#   tolistr   r   r[   r   r$   r   r6   uint64get_level_valuesall
set_levelsr}   intr%   r&   )indexrequestr   r#   r   r   r:   r*   r   r   r   test_union_duplicates  s&   &
$
r   z'levels1, levels2, codes1, codes2, names )rg   rh   r?   )r   r!   r   )r!   r!   r!   )r   r   r   name1name2c                 C   sh   t | ||d}t |||d}||}tjtdd |jdks"J W d    d S 1 s-w   Y  d S )Nr   zMultiIndex.lexsort_depthr   r   )r   r
   r%   rE   rF   lexsort_depth)levels1levels2codes1codes2rC   r   r   mi_intr   r   r   test_intersection_lexsort_depth-  s   
"r   )8numpyr6   r   pandasri   r   r   r   r   r   pandas._testing_testingr%   r   parametrizer   r7   r8   r+   arm_slowr,   r<   r=   rJ   rM   r^   ra   r   re   rm   ro   ru   rn   rx   rz   r   r   r   r   slicer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    
B
	






	




	