a
    dcz                     @   s  d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ dd	 Zd
d Zejdejejfej ejfej ejfej ej!fgdd Z"ejdg dejdddgdd Z#ejdg dddggdd Z$G dd dZ%ej&dej&dejdg d d!d" Z'd#d$ Z(d%d& Z)d'd( Z*d)d* Z+d+d, Z,ejd-d.ej-gd/d0 Z.d1d2 Z/d3d4 Z0d5d6 Z1G d7d8 d8Z2dS )9zX
The tests in this package are to ensure the proper resultant dtypes of
set operations.
    )datetimeN)lib)find_common_type)	CategoricalDtypeCategoricalIndexDatetimeTZDtypeIndex
MultiIndexPeriodDtype
RangeIndexSeries	Timestamp)is_signed_integer_dtypepandas_dtypec                 C   s*   |   }|   }||j|jks&J d S )N)sort_valuesuniondtype)indexidx1idx2 r   i/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/indexes/test_setops.pytest_union_same_types!   s    r   c                 C   s  | }|}|j s,|j s,|jjdkr,|jjdksP|j sn|j sn|jjdkrn|jjdkrntjjdtdd}|j| t	|j|jg}d }d}t
|rt
|sn|jjdkrt|jdr|jjdkrt|jdst}n\t|jtrt|jtst|jtr.t|jtr.t}d	}tjjd
tdd}|j| tj|j|jfv }	t|j}
t|j}| }| }tj||d$ ||}||}W d    n1 s0    Y  |	r|
s|r|jtdksJ |jtdksJ n |j|ksJ |j|ksJ d S )NibzGH#44000 True==1F)reasonraisesstrictz'<' not supported betweencZiufczPeriodDtype\[B\] is deprecatedz"Warning not produced on all buildsmatchO)	is_uniquer   kindpytestmarkZxfail
ValueErrornodeZ
add_markerr   lenr   Zis_np_dtypeRuntimeWarning
isinstancer
   r   FutureWarningAssertionErrornpuint64r   r   tmassert_produces_warningr   )
index_flatZindex_flat2requestr   r   r%   Zcommon_dtypewarnmsgZ
any_uint64Zidx1_signedZidx2_signedres1res2r   r   r   test_union_different_types)   s|    


	








*r7   zidx_fact1,idx_fact2c                 C   sT   | d}|d}| |}| |}|j|j|jfv s:J |j|j|jfv sPJ d S )N
      )r   r   )Z	idx_fact1Z	idx_fact2r   r   r5   r6   r   r   r   "test_compatible_inconsistent_pairss   s    

r:   zleft, right, expected))int64r;   r;   )r;   r.   object)r;   float64r=   )r.   r=   r=   )r.   r.   r.   )r=   r=   r=   )datetime64[ns]r;   r<   )r>   r.   r<   )r>   r=   r<   )datetime64[ns, CET]r;   r<   )r?   r.   r<   )r?   r=   r<   )	Period[D]r;   r<   )r@   r.   r<   )r@   r=   r<   names)foorB   rB   )rB   barNc                 C   s~   t | } t |}tg | |d d}tg ||d d}||}|j|ksLJ |j|d ks^J ||}|j|d kszJ d S )Nr   )r   name      )r   r   r   r   rD   intersection)leftrightexpectedrA   ar   resultr   r   r   test_union_dtypes   s    

rM   valuesrE   rF   rF      rP   c                 C   s8   t | }t ddg}||}t dg}t|| d S )NrP   )r   rG   r/   assert_index_equal)rN   rK   r   rL   rJ   r   r   r   test_intersection_duplicates   s
    

rR   c                   @   s@  e Zd Zejdddgejdg ddd Zejdd	d
 Zejdejddd Z	ejdejddd Z
ejdejddd Zejdg ddd Zejdg ddd Zejdg ddd Zejdg ddd Zejddd Zdd Zd d! Zd"d# Zd$S )%
TestSetOpscaseg      ?ZxxxmethodrG   r   
differencesymmetric_differencec                 C   sD   d}t jt|d t||| W d    n1 s60    Y  d S )Nz!Input must be Index or array-liker   )r$   r   	TypeErrorgetattr)selfrT   rU   r   r4   r   r   r   test_set_ops_error_cases   s    z#TestSetOps.test_set_ops_error_cases3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc           	      C   s   t |tr tdt|j  |d d }|d d }||}t||sRJ t |j	t
rbd S | | | g}|D ]}||}t||s|J q|t |trd}tjt|d |g d W d    n1 s0    Y  d S )NNot relevant for    rP   .other must be a MultiIndex or a list of tuplesr   rE   rF   rP   )r*   r   r$   skiptype__name__rG   r/   equalContentsr   r   to_numpy	to_seriesto_listr	   r   rY   )	r[   r   firstsecond	intersectcasesrT   rL   r4   r   r   r   test_intersection_base   s     



z!TestSetOps.test_intersection_baseEignore:Falling back on a non-pyarrow:pandas.errors.PerformanceWarningc           
      C   s   |dd  }|d d }|}| |}t||s6J t|jtrFd S | | | g}|D ]}| |}t||s`J q`t|t	rd}	t
jt|	d | g d W d    n1 s0    Y  d S )NrP   r_   r`   r   ra   )r   r/   re   r*   r   r   rf   rg   rh   r	   r$   r   rY   )
r[   r   ri   rj   
everythingr   rl   rT   rL   r4   r   r   r   test_union_base   s    


zTestSetOps.test_union_basec           
      C   s   |dd  }|d d }|j dkr6t|t|}nt|trFg }n|dd  }|||}t||snJ | | |	 g}|D ] }|||}t||sJ qt|t
rd}	tjt|	d  |g d| W d    n1 s0    Y  d S )NrF      booleanr`   r   ra   )Zinferred_typesetrW   r*   r   r/   re   rf   rg   rh   r	   r$   r   rY   )
r[   sortr   ri   rj   answerrL   rl   rT   r4   r   r   r   test_difference_base   s"    


zTestSetOps.test_difference_basec           	      C   s2  t |tr tdt|j  t|dk r6td |d |dd  v s^|d |d d v rhtd |dd  }|d d }|ddg }||}t	||sJ |
 | | g}|D ]}||}t	||sJ qt |tr.d}tjt|d	 |g d
 W d    n1 s$0    Y  d S )Nr^   rF   zToo few values for testr   rE   z+Index values no not satisfy test condition.r`   r   ra   )r*   r   r$   rb   rc   rd   r(   rX   r/   re   rf   rg   rh   r	   r   rY   )	r[   r   ri   rj   ru   rL   rl   rT   r4   r   r   r   test_symmetric_difference  s&    

(


z$TestSetOps.test_symmetric_differencezfname, sname, expected_name)Arz   rz   rz   BN)rz   NNNr|   N)NNNc           
      C   s"  |j std |}| |}| |}||}| |}	t||	 | |}|||}||}| |}	t||	 |||}| |}||}| |}	t||	 |||}|||}||}|||}	t||	 d S N-Randomly generated index_flat was not unique.)	r"   r$   rb   copy	set_namesr   r/   rQ   drop
r[   r1   fnamesnameexpected_namer   ri   rj   r   rJ   r   r   r   test_corner_union4  s.    




zTestSetOps.test_corner_unionc           
      C   s`   |j std |}| |}|dd  |}|| }|| }	t||	 d S Nr   rE   )	r"   r$   rb   r   r   r   r   r/   rQ   r   r   r   r   test_union_unequalb  s    
zTestSetOps.test_union_unequalc           
      C   s&  |j std |}| |}| |}||}| |}	t||	 | |}|||}||}|||}	t||	 |||}| |}||}|||}	t||	 |||}|||}||}|||}	t||	 d S r~   )	r"   r$   rb   r   r   rG   r/   rQ   r   
r[   r1   r   r   r   r   ri   rj   rk   rJ   r   r   r   test_corner_intersectx  s.    




z TestSetOps.test_corner_intersectc           
      C   sh   |j std |}| |}|dd  |}|| }|dd  | }	t||	 d S r   )	r"   r$   rb   r   r   rG   r   r/   rQ   r   r   r   r   test_intersect_unequal  s    
z!TestSetOps.test_intersect_unequalc                 C   s   t |tr |tt|j}n
|d}t|}||}|j	|j	ksNJ ||d d }|j	|j	kspJ |d d |}|j	|j	ksJ d S )NrB   r   )
r*   r	   renamelistrangenlevelsr-   ZasarrayrG   rD   )r[   r   otherrL   r   r   r   .test_intersection_name_retention_with_nameless  s    



z9TestSetOps.test_intersection_name_retention_with_namelessc                 C   s>   |j std |j||d}|d d }tj||dd d S )Nz&Not relevant since index is not uniquert   r   Texact)r"   r$   rb   rW   r/   rQ   )r[   r   rt   rL   rJ   r   r   r   $test_difference_preserves_type_empty  s
    
z/TestSetOps.test_difference_preserves_type_emptyc                    sv   t  tr fdd|D } |d   |d } |sFJ  |} d d |d }t|| d S )Nc                    s   g | ]}|g j  qS r   )r   ).0xr   r   r   
<listcomp>      zDTestSetOps.test_difference_name_retention_equals.<locals>.<listcomp>r   rE   rF   )r*   r	   r   equalsrW   r/   rQ   )r[   r   rA   r   rL   rJ   r   r   r   %test_difference_name_retention_equals  s    

z0TestSetOps.test_difference_name_retention_equalsc                 C   sD   |j std ||d d }|j||d}tj||dd d S )Nz(Not relevant because index is not uniquer   r   Tr   )r"   r$   rb   rG   rW   r/   rQ   )r[   r   rt   interdiffr   r   r   (test_intersection_difference_match_empty  s
    
z3TestSetOps.test_intersection_difference_match_emptyN)rd   
__module____qualname__r$   r%   parametrizer\   filterwarningsrm   rp   rv   rx   r   r   r   r   r   r   r   r   r   r   r   r   rS      s^   






$



#




rS   r]   rn   rU   rV   c                 C   s   | }| d}t|trdnd}t||||d}t||||d}tj|||d t|||d d |d}t|||d d |d}tj|||d d S )NcategoryequivTr   r   r_   )Zastyper*   r   rZ   r/   rQ   )r1   rt   rU   r   r   r   rL   rJ   r   r   r   test_setop_with_categorical  s    	
r   c                 C   sN   | j rtd | }|g d }||||s:J ||jsJJ d S )NzNot relevant for empty Indexr   r   rE   rF   )emptyr$   rb   rG   r   r"   )r   idxZidx_non_uniquer   r   r   (test_intersection_duplicates_all_indexes  s    
r   c                 C   s~   | }t g d|d}t g d|d}t g d|d}t|trJt g d}||}t|| |j|dd}t|| d S )NrO   r   )rP   rP   rq   )rE   rF   rF   rP   rP   rq   Fr   r   r*   r   r   r/   rQ   Z'any_dtype_for_small_pos_integer_indexesr   rK   r   rJ   rL   r   r   r   0test_union_duplicate_index_subsets_of_each_other  s    

r   c                 C   sd   | }t g d|d}t ddg|d}t g d|d}||}t|| ||}t|| d S )N)rE   r   r   r   r   rE   r   r   rE   r   r   r/   rQ   r   r   r   r   1test_union_with_duplicate_index_and_non_monotonic&  s    

r   c                  C   sB   t g d} t g d}t g d}| j|dd}t|| d S )NrO   )10r   )rE   rF   rF   rP   r   r   r   Fr   r   )rK   r   rJ   rL   r   r   r   +test_union_duplicate_index_different_dtypes6  s
    r   c                  C   s>   t g d} t g d}| |}t g d}t|| d S )Nr   r   r   )rK   r   rL   rJ   r   r   r   (test_union_same_value_duplicated_in_both?  s
    
r   duprE   c                 C   sV   t tjdddg}t tj| ddg}|j|dd}t tj| dddg}t|| d S )NrE   rF   Fr   g      ?       @)r   r-   nanr   r/   rQ   )r   rK   r   rL   rJ   r   r   r   test_union_nan_in_bothH  s
    r   c                  C   sB   t ddd} t ddd}| j|dd}tg d}t|| d S )	NrE   d      2   rP   Tr   )rE   rq      r8                        "   %   (   +   .   1   7   =   C   I   O   U   [   a   )r   r   r   r/   rQ   )r   r   rL   rJ   r   r   r   test_union_rangeindex_sort_trueR  s    r   c                 C   sz   | }t g d|d}t g d|d}t g d|d}t|trJt g d}||}t|| ||}t|| d S )N)rE   r   rF   r   r   r   r   r   r   r   r   <test_union_with_duplicate_index_not_subset_and_non_monotonicw  s    


r   c                  C   st   t ddtjg} | jjjdks"J tddg}|| }tddtjgtjd}t	
|| | |}t	
|| d S )NrE   rF   r   r   )r   r-   r   
categoriesr   r#   r   r   r=   r/   rQ   )cir   rL   rJ   r   r   r   #test_union_int_categorical_with_nan  s    

r   c                
   @   s&  e Zd Zdd Zejjddgdddd Zejd	eg d
dddfeg d
dddfeg d
dfgdd Z	ejjddgddejdg ddd Z
dd Zejjddgdddd Zejdejeegejjddgdddd Zejjddgdddd Zejjddgddejdddgd d! Zd"d# Zejjddgddd$d% Zejjddgddd&d' Zejd(d)d*gd+d, Zejd(d)d*gd-d. Zd/d0 Zejd1ed2d3ejgeg d4fed2d3geejd5d6d7gfgd8d9 Zd:d; Zd<d= Zd>d? Zd@S )ATestSetOpsUnsortedc                 C   sX   t dddt dddg}t|td}tdgtd}||}tg td}t|| d S )Ni  rF   	   r   r   Zaa)r   r   r<   rG   r/   rQ   )r[   Zdt_datesindex1index2rL   rJ   r   r   r   test_intersect_str_dates  s    
z+TestSetOpsUnsorted.test_intersect_str_datesr   stringT)Zindirectc                 C   sl   |d d }|d d }|j ||d}|d u r>t||  t||sNJ |j ||d}||u shJ d S )Nr9   r8   r   )rG   r/   rQ   r   re   )r[   r   rt   ri   rj   rk   r   r   r   r   test_intersection  s    z$TestSetOpsUnsorted.test_intersectionzindex2,keeps_name)rP   rq   r_   r   r   rD   r   Fc                 C   sR   t g ddd}t g d}|||}|r2d|_|j|jksBJ t|| d S )NrE   rF   rP   rq   r_   r   r   rP   rq   r_   )r   rG   rD   r/   rQ   )r[   r   Z
keeps_namert   r   rJ   rL   r   r   r   #test_intersection_name_preservation  s    	z6TestSetOpsUnsorted.test_intersection_name_preservationz$first_name,second_name,expected_name)ry   r{   r}   c           	      C   sD   |dd }|d d }||_ ||_ |j||d}|j |ks@J d S Nr_   r9   r8   r   )rD   rG   )	r[   r   Z
first_namesecond_namer   rt   ri   rj   rk   r   r   r   $test_intersection_name_preservation2  s    z7TestSetOpsUnsorted.test_intersection_name_preservation2c           
      C   s   t ddgdd}t ddgdd}t dd	gd
d}|j|j||d|d}|j||dj||d}t|| t ddgdd}t g dd}t g dd}	|j|j|	|d|d}|j||dj|	|d}t|| d S )NrE   rF   i1r   r_   r   i2rP   rq   i3r   j1j2j3r   )
r[   rt   r   r   r   r   rJ   r   r   r   r   r   r   test_chained_union  s    z%TestSetOpsUnsorted.test_chained_unionc                 C   s^   |dd }|d d }|d d }|j ||d}|d u rJt||  t||sZJ d S r   )r   r/   rQ   r   re   )r[   r   rt   ri   rj   ro   r   r   r   r   
test_union  s    zTestSetOpsUnsorted.test_unionklassc           	      C   sh   |dd }|d d }|d d }||j }|j||d}|d u rTt||  t||sdJ d S r   )rN   r   r/   rQ   r   re   )	r[   r   r   rt   ri   rj   ro   rT   rL   r   r   r   test_union_from_iterables  s    
z,TestSetOpsUnsorted.test_union_from_iterablesc                 C   st   |dd }|j ||d}||u | u s,J |j g |d}||u | u sLJ tg j ||d}||u | u spJ d S )Nr_   r9   r   )r   r   )r[   r   rt   ri   r   r   r   r   test_union_identity  s    z&TestSetOpsUnsorted.test_union_identityzsecond_name,expected)NN)rD   rD   c           	      C   sx   |dd }|d d }|dd }d|_ ||_ |j||d}t||sNJ |d u rf|j d u stJ n|j |kstJ d S )Nr_   r9   r8   rD   r   )rD   rW   r/   re   )	r[   r   r   rJ   rt   ri   rj   ru   rL   r   r   r   !test_difference_name_preservation  s    z4TestSetOpsUnsorted.test_difference_name_preservationc                 C   s.   |dd }d|_ |g |}t|| d S )Nr_   r9   rD   )rD   rW   r/   rQ   r[   r   rt   ri   rL   r   r   r   test_difference_empty_arg  s    z,TestSetOpsUnsorted.test_difference_empty_argc                 C   sB   |dd }d|_ |||}t|dks.J |j |j ks>J d S )Nr_   r9   rD   r   )rD   rW   r(   r   r   r   r   test_difference_identity%  s
    z+TestSetOpsUnsorted.test_difference_identityc                 C   sP   |dd }|d d }| ||}|dd }|d u r@| }t|| d S )Nr_   r9   r8   )rW   r   r/   rQ   )r[   r   rt   ri   rj   rL   rJ   r   r   r   test_difference_sort.  s    z'TestSetOpsUnsorted.test_difference_sortopnamerW   rX   c                 C   s   t dtddg}t dtddg}t||}tt ||}W d    n1 sX0    Y  t dtddtdg}|dkr|d d }t|| tj||dd}||}t|| d S )	NrP   2000rE   rF   1999rW   Fr   )r   r   operatormethodcallerr/   r0   r)   rQ   )r[   r   rK   r   oprL   rJ   r   r   r   test_difference_incomparable;  s    &z/TestSetOpsUnsorted.test_difference_incomparablec                 C   sr   t dtddg}t dtddg}tj||dd}d}tjt|d	 || W d    n1 sd0    Y  d S )
NrP   r   rE   rF   r   Tr   z<'<' not supported between instances of 'Timestamp' and 'int'r   )r   r   r   r   r$   r   rY   )r[   r   rK   r   r   r4   r   r   r   !test_difference_incomparable_trueN  s    z4TestSetOpsUnsorted.test_difference_incomparable_truec                 C   sr   t tg dg d}t ddg}|j||d}t g d}|d u rR| }t|| t||snJ d S )N)rB   rC   bazra   )rB   rE   rC   rP   r   ))rC   rF   )r   rP   r   )r	   from_tuplesziprX   r   r/   rQ   re   )r[   rt   r   r   rL   rJ   r   r   r   test_symmetric_difference_miX  s    z/TestSetOpsUnsorted.test_symmetric_difference_mizindex2,expectedr   rE   )r         @        r   r  r  c                 C   s@   t dtjddg}|j||d}|d u r0| }t|| d S )NrE   rF   rP   r   )r   r-   r   rX   r   r/   rQ   )r[   r   rJ   rt   r   rL   r   r   r   !test_symmetric_difference_missingb  s
    
z4TestSetOpsUnsorted.test_symmetric_difference_missingc                 C   s   t g ddd}tg d}t ddg}|j||d}t||sHJ |jdksVJ |j|d|d	}t||svJ |jdksJ d S )
N)rE   rF   rP   rq   r   r   )rF   rP   rq   r_   rE   r_   r   new_name)Zresult_namert   )r   r-   arrayrX   r/   re   rD   )r[   rt   r   r   rJ   rL   r   r   r   #test_symmetric_difference_non_indexs  s    z6TestSetOpsUnsorted.test_symmetric_difference_non_indexc                 C   sJ   t g d|d}t g d|d}||}t g d|d}t|| d S )Nra   r   r   r   r   )r[   Zany_numeric_ea_and_arrow_dtyper   r   rL   rJ   r   r   r   test_union_ea_dtypes  s
    
z'TestSetOpsUnsorted.test_union_ea_dtypesc                 C   sF   t dg|d}t dg|d}||}t ddg|d}t|| d S )NrK   r   r   r   )r[   Zany_string_dtyper   r   rL   rJ   r   r   r   test_union_string_array  s
    
z*TestSetOpsUnsorted.test_union_string_arrayN)rd   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  r	  r
  r  r   r   r   r   r     s`   










	


r   )3__doc__r   r   numpyr-   r$   Zpandas._libsr   Zpandas.core.dtypes.castr   Zpandasr   r   r   r   r	   r
   r   r   r   Zpandas._testingZ_testingr/   Zpandas.api.typesr   r   r   r7   r%   r   ZmakeIntIndexZmakeRangeIndexZmakeFloatIndexZmakeUIntIndexr:   rM   rR   rS   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sd   ,J



	

	  =
		
	%