
    Pi`                        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	c 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efd	Z ej         g ej!        d
ddd          d             Z"ej         d             Z#d Z$d Z%ej&        '                    d e ej(        d          ej)                   ed          f e ej(        d          ej*                   e ej(        d          ej)                  f e ej(        d          ej*                   ed          f e ej(        d          ej*                   e ej(        d          ej+                  fg          d             Z,ej&        '                    dg d          ej&        '                    dddg          d                         Z-ej&        '                    dg dddgg          d              Z. G d! d"          Z/ej&        0                    d#          ej&        0                    d$          ej&        '                    d%g d&          d'                                     Z1d( Z2d) Z3d* Z4d+ Z5d, Z6ej&        '                    d-d.ej7        g          d/             Z8d0 Z9d1 Z:d2 Z; G d3 d4          Z<d5 Z=d6 Z>d7 Z?d8 Z@d9 ZAdS ):zX
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_dtypereturnc                 B    t          |           t          |          k    S )zO
    Checks if the set of unique elements of arr1 and arr2 are equivalent.
    )	frozenset)arr1arr2s     t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/indexes/test_setops.pyequal_contentsr   #   s     T??ioo--    objectcategorydatetime64[ns]ztimedelta64[ns])paramsc                     | j         S )z
    Dtypes that can be given to an Index with small positive integers.

    This means that for any dtype `x` in the params list, `Index([1, 2, 3], dtype=x)` is
    valid and gives the correct Index (sub-)class.
    )param)requests    r   'any_dtype_for_small_pos_integer_indexesr    *   s      =r   c                     | S N )
index_flats    r   index_flat2r%   =   s    r   c                     |                                  }|                                  }|                    |          j        |j        k    sJ d S r"   )sort_valuesuniondtype)indexidx1idx2s      r   test_union_same_typesr-   B   sN     DD::d!TZ//////r   c                    | }|}|j         s'|j         s |j        j        dk    r|j        j        dk    s.|j         sc|j         s\|j        j        dk    rL|j        j        dk    r<t          j                            dt          d          }|                    |           t          |j        |j        g          }d }d}t          |          rt          |          sn	|j        j        dk    rt          j        |j        d          r*|j        j        dk    r"t          j        |j        d          st          }nt          |j        t                    rt          |j        t                    s4t          |j        t                    r_t          |j        t                    rEt           }d	}t          j                            d
t"          d          }|                    |           t$          j        |j        |j        fv }	t)          |j                  }
t)          |j                  }|                                }|                                }t-          j        ||          5  |                    |          }|                    |          }d d d            n# 1 swxY w Y   |	rD|
s|r@|j        t%          j        d          k    sJ |j        t%          j        d          k    sJ d S |j        |k    sJ |j        |k    sJ d S )NibzGH#44000 True==1F)reasonraisesstrictz'<' not supported betweenciufczPeriodDtype\[B\] is deprecatedz"Warning not produced on all buildsmatchO)	is_uniquer)   kindpytestmarkxfail
ValueErrorapplymarkerr   lenr   is_np_dtypeRuntimeWarning
isinstancer   r   FutureWarningAssertionErrornpuint64r   r'   tmassert_produces_warningr(   )r$   r%   r   r+   r,   r<   common_dtypewarnmsg
any_uint64idx1_signedidx2_signedres1res2s                 r   test_union_different_typesrR   J   sA    DD N"" JOs""JOs""N #  # JOs""JOs"" {  %j ! 
 
 	D!!!#TZ$<==LD
%Ct99 "CII "
*/S
 
 #/$*f*M*M
 
3
F(K(K 4:{++"0:4:GW0X0X" 	4:{++" 1;4:GW0X0X"
 /{  7! ! 
 

 	D!!!tz4:66J)$*55K)$*55K DD		#D	4	4	4    zz$zz$                               *{ *k *zRXc]]****zRXc]]******z\))))z\))))))s   %+JJ #J z	idx1,idx2   r)   c                     |                      |          }|                     |           }|j        | j        |j        fv sJ |j        | j        |j        fv sJ d S r"   )r(   r)   )r+   r,   rP   rQ   s       r   "test_compatible_inconsistent_pairsrV      sd     ::dD::dD:$*dj11111:$*dj1111111r   zleft, right, expected))int64rW   rW   )rW   rG   r   )rW   float64rX   )rG   rX   rX   )rG   rG   rG   )rX   rX   rX   )r   rW   r   )r   rG   r   )r   rX   r   )datetime64[ns, CET]rW   r   )rY   rG   r   )rY   rX   r   )	Period[D]rW   r   )rZ   rG   r   )rZ   rX   r   names)foor\   r\   )r\   barNc                 \   t          |           } t          |          }t          g | |d                   }t          g ||d                   }|                    |          }|j        |k    sJ |j        |d         k    sJ |                    |          }|j        |d         k    sJ d S )Nr   )r)   name      )r   r	   r(   r)   r_   intersection)leftrightexpectedr[   ar0   results          r   test_union_dtypesrh      s    , DEb58,,,AbE!H---AWWQZZF<8####;%("""" ^^AF;%(""""""r   valuesr`   ra   ra      rk   c                     t          |           }t          ddg          }|                    |          }t          dg          }t          j        ||           d S )Nrk   )r	   rb   rH   assert_index_equal)ri   rf   r0   rg   re   s        r   test_intersection_duplicatesrn      sU     	fAq!fA^^AFaSzzH&(+++++r   c                   @   e Zd Zej                            dddg          ej                            dg d          d                         Zej                            d          d             Zej                            d          d	             Z	ej                            d          d
             Z
ej                            d          d             Zej                            dg d          d             Zej                            dg d          d             Zej                            dg d          d             Zej                            dg d          d             Zej                            d          d             Zd Zd Zd ZdS )
TestSetOpscaseg      ?xxxmethodrb   r(   
differencesymmetric_differencec                     d}t          j        t          |          5   t          ||          |           d d d            d S # 1 swxY w Y   d S )Nz!Input must be Index or array-liker6   )r;   r2   	TypeErrorgetattr)selfrq   rs   r*   rL   s        r   test_set_ops_error_casesz#TestSetOps.test_set_ops_error_cases   s     2]9C000 	) 	)"GE6""4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AA	A	3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                    t          |t                    r)t          j        dt	          |          j                    |d d                                         }|d d                                         }|                    |          }t          j	        ||           t          |j
        t                    rd S |                                |                                |                                g}|D ])}|                    |          }t          ||          sJ *t          |t                     rOd}t          j        t$          |          5  |                    g d           d d d            d S # 1 swxY w Y   d S d S )NNot relevant for rS   rk   .other must be a MultiIndex or a list of tuplesr6   r`   ra   rk   )rC   r   r;   skiptype__name__uniquerb   rH   rm   r)   r   to_numpy	to_seriesto_listr   r
   r2   rx   )	rz   r*   firstsecond	intersectcasesrq   rg   rL   s	            r   test_intersection_basez!TestSetOps.test_intersection_base   s   e-.. 	DKBDKK,@BBCCCbqb	  ""rr!!##&&v..	
i000ek?33 	 F ""F$4$4$6$68H8HI 	2 	2D''--F!&&111111eZ(( 	.BCy444 . .""999---. . . . . . . . . . . . . . . . . .	. 	.s   E;;E?E?c                    |                                 }|dd          }|d d         }|}|                    |          }t          j        |                                |                                           t          |j        t                    rd S |                                |	                                |
                                g}|D ])}|                    |          }t          ||          sJ *t          |t                    rOd}	t          j        t          |	          5  |                    g d           d d d            d S # 1 swxY w Y   d S d S )Nrk   rS   r   r6   r   )r   r(   rH   rm   r'   rC   r)   r   r   r   r   r   r
   r;   r2   rx   )
rz   r*   r   r   
everythingr(   r   rq   rg   rL   s
             r   test_union_basezTestSetOps.test_union_base   s   abb	rr
F##
e//11:3I3I3K3KLLLek?33 	 F ""F$4$4$6$68H8HI 	6 	6D[[&&F!&*555555eZ(( 	'BCy444 ' 'III&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	's   .EEEc                    |dd          }|d d         }|j         dk    r0t          |                              t          |                    }n"t          |t                    rg }n
|dd          }|                    ||          }t          ||          sJ |                                |                                |                                g}|D ]*}|                    ||          }t          ||          sJ +t          |t                    rPd}	t          j        t          |	          5  |                    g d|           d d d            d S # 1 swxY w Y   d S d S )Nra      booleanr   r6   r   )inferred_typesetru   rC   r   r   r   r   r   r
   r;   r2   rx   )
rz   sortr*   r   r   answerrg   r   rq   rL   s
             r   test_difference_basezTestSetOps.test_difference_base  s   abb	rr)++ ZZ**3v;;77FF/00 	FF122YF!!&$//ff----- ""F$4$4$6$68H8HI 	2 	2D%%dD11F!&&111111eZ(( 	2BCy444 2 2  D1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2s   4EE!Ec                 D   |rI|j         dk    r>|j        dk    r3|                    t          j                            d                     t          |t                    r)t          j        dt          |          j
                    t          |          dk     rt          j        d           |d         |d	d          v s|d
         |d d
         v rt          j        d           |d	d          }|d d
         }|dd
g         }|                    |          }t          j        |                                |                                           |                                |                                |                                g}|D ])}	|                    |	          }t'          ||          sJ *t          |t(                    rOd}
t          j        t,          |
          5  |                    g d           d d d            d S # 1 swxY w Y   d S d S )Nr   stringzTODO: infer_string)r1   r~   ra   zToo few values for testr   r`   z+Index values no not satisfy test condition.r   r6   r   )r)   r   r?   r;   r<   r=   rC   r   r   r   r   r@   rv   rH   rm   r'   r   r   r   r   r
   r2   rx   )rz   r*   using_infer_stringr   r   r   r   rg   r   rq   rL   s              r   test_symmetric_differencez$TestSetOps.test_symmetric_difference.  sf    	Px''#x// 1 19M 1 N NOOOe-.. 	DKBDKK,@BBCCCu::>>K12228uQRRy  E"Iss$;$; KEFFFabb	ss2w++F33
f0022F4F4F4H4HIII ""F$4$4$6$68H8HI 	2 	2D//55F!&&111111eZ(( 	6BCy444 6 6**9995556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6s   .HHHzfname, sname, expected_name)Ar   r   r   BN)r   NNNr   N)NNNc                 D   |j         s|                                }n|}|                                                    |          }|                                                    |          }|                    |          }|                                                    |          }	t          j        ||	           |                                                    |          }|                    |                              |          }|                    |          }|                                                    |          }	t          j        ||	           |                    |                              |          }|                                                    |          }|                    |          }|                                                    |          }	t          j        ||	           |                    |                              |          }|                    |                              |          }|                    |          }|                    |                              |          }	t          j        ||	           d S r"   )r9   r   copy	set_namesr(   rH   rm   drop
rz   r$   fnamesnameexpected_namer*   r   r   r(   re   s
             r   test_corner_unionzTestSetOps.test_corner_unionP  s    # 	%%''EEE 

&&u--''..F##::<<))-88
eX... 

&&u--E"",,U33F##::<<))-88
eX... 

5!!++E22''..F##::<<))-88
eX... 

5!!++E22E"",,U33F##::e$$..}==
eX.....r   c                    |j         s|                                }n|}|                                                    |          }|dd                              |          }|                    |                                          }|                    |                                          }	t          j        ||	           d S Nr`   )r9   r   r   r   r(   r'   rH   rm   r   s
             r   test_union_unequalzTestSetOps.test_union_unequal  s     # 	%%''EEE 

&&u--qrr$$U++F##//11??=11==??
eX.....r   c                 H   |j         s|                                }n|}|                                                    |          }|                                                    |          }|                    |          }|                                                    |          }	t          j        ||	           |                                                    |          }|                    |                              |          }|                    |          }|                    |                              |          }	t          j        ||	           |                    |                              |          }|                                                    |          }|                    |          }|                    |                              |          }	t          j        ||	           |                    |                              |          }|                    |                              |          }|                    |          }|                    |                              |          }	t          j        ||	           d S r"   )r9   r   r   r   rb   rH   rm   r   
rz   r$   r   r   r   r*   r   r   r   re   s
             r   test_corner_intersectz TestSetOps.test_corner_intersect  s-    # 	%%''EEE 

&&u--''..&&v..	::<<))-88
i222 

&&u--E"",,U33&&v..	::e$$..}==
i222 

5!!++E22''..&&v..	::e$$..}==
i222 

5!!++E22E"",,U33&&v..	::e$$..}==
i22222r   c                    |j         s|                                }n|}|                                                    |          }|dd                              |          }|                    |                                          }|dd                              |                                          }	t          j        ||	           d S r   )r9   r   r   r   rb   r'   rH   rm   r   s
             r   test_intersect_unequalz!TestSetOps.test_intersect_unequal  s     # 	%%''EEE 

&&u--qrr$$U++&&v..::<<	9&&}55AACC
i22222r   c                    t          |t                    r5|                    t          t	          |j                                      }n|                    d          }t          j        |          }|                    |          }|j	        |j	        k    sJ |                    |d d                   }|j	        |j	        k    sJ |d d                             |          }|j	        |j	        k    sJ d S )Nr\   r   )
rC   r
   renamelistrangenlevelsrF   asarrayrb   r_   )rz   r*   otherrg   s       r   .test_intersection_name_retention_with_namelessz9TestSetOps.test_intersection_name_retention_with_nameless  s    eZ(( 	(LLeEM&:&:!;!;<<EELL''E
5!!##E**{ej(((( ##E"1"I..{ej(((( rr''..{ej((((((r   c                     |j         st          j        d           |                    ||          }|d d         }t	          j        ||d           d S )Nz&Not relevant since index is not uniquer   r   Texact)r9   r;   r   ru   rH   rm   )rz   r*   r   rg   re   s        r   $test_difference_preserves_type_emptyz/TestSetOps.test_difference_preserves_type_empty  sc      	BK@AAA!!%d!33!9
fhd;;;;;;r   c                    t          t                    rfd|D             }                    |d                                       |d                   }                    |          sJ                     |          }d d                             |d                   }t          j        ||           d S )Nc                 &    g | ]}|gj         z  S r#   )r   ).0xr*   s     r   
<listcomp>zDTestSetOps.test_difference_name_retention_equals.<locals>.<listcomp>  s"    888QaS5=(888r   r   r`   ra   )rC   r
   r   equalsru   rH   rm   )rz   r*   r[   r   rg   re   s    `    r   %test_difference_name_retention_equalsz0TestSetOps.test_difference_name_retention_equals  s    eZ(( 	98888%888EU1X&&U1X&&||E"""""!!%((!9##E!H--
fh/////r   c                     |j         st          j        d           |                    |d d                   }|                    ||          }t          j        ||d           d S )Nz(Not relevant because index is not uniquer   r   Tr   )r9   r;   r   rb   ru   rH   rm   )rz   r*   r   interdiffs        r   (test_intersection_difference_match_emptyz3TestSetOps.test_intersection_difference_match_empty  sq    
  	DKBCCC""5!9--D11
eT666666r   N)r   
__module____qualname__r;   r<   parametrizer{   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r#   r   r   rp   rp      s       [Vc5\22[QQQ ) )  32) [ VWW. . XW.2 [ VWW' ' XW'2 [ VWW2 2 XW22 [ VWW6 6 XW6B [%	
 	
 	
	 	#/ #/	 	#/J [%	
 	
 	
	 	/ /	 	/ [%	
 	
 	
	 	"3 "3	 	"3H [%	
 	
 	
	 	3 3	 	3 [ VWW) ) XW)&< < <
0 
0 
0	7 	7 	7 	7 	7r   rp   z7ignore:invalid value encountered in cast:RuntimeWarningr|   rs   rt   c                 B   | }|                     d          }t          |t                    rdnd} t          ||          ||          } t          ||          ||          }|r |j        r|dv r|                     d          }t          j        |||            t          ||          |d d         |          } t          ||          |d d         |          }|r |j        r|dv r|                     d          }t          j        |||           d S )Nr   equivTr   )r(   rv   r   rS   )astyperC   r   ry   emptyrH   rm   )	r$   r   rs   r   r*   r   r   rg   re   s	            r   test_setop_with_categoricalr     sR    ELL$$E!%44>GG$E#WUF##E555F%wuf%%e$777H/K/ 777??:..&(%8888#WUF##E"1"ID999F%wuf%%eBQBid;;;H/K/ 777??:..&(%888888r   c                    | j         rt          j        d           | }|g d         }|                    |                              |                    |                    sJ |                    |          j        sJ d S )NzNot relevant for empty Indexr   r   r`   ra   )r   r;   r   rb   r   r9   )r*   idxidx_non_uniques      r   (test_intersection_duplicates_all_indexesr   2  s    { 42333
C&NN++22>3N3Ns3S3STTTTTN++555555r   c                 t   | }t          g d|          }t          g d|          }t          g d|          }t          |t                    rt          g d          }|                    |          }t	          j        ||           |                    |d          }t	          j        ||           d S )Nrj   rT   )rk   rk   r   )r`   ra   ra   rk   rk   r   Fr   r	   rC   r   r(   rH   rm   r    r)   rf   r0   re   rg   s         r   0test_union_duplicate_index_subsets_of_each_otherr   ?  s     4Elll%(((Aiiiu%%%A'''u555H!%&& -+++,,WWQZZF&(+++WWQUW##F&(+++++r   c                 $   | }t          g d|          }t          ddg|          }t          g d|          }|                    |          }t          j        ||           |                    |          }t          j        ||           d S )N)r`   r   r   rT   r   r`   r   r   r`   r	   r(   rH   rm   r   s         r   1test_union_with_duplicate_index_and_non_monotonicr   P  s     4Eiiiu%%%Aq!fE"""AYYYe,,,HWWQZZF&(+++WWQZZF&(+++++r   c                      t          g d          } t          g d          }t          g d          }|                     |d          }t          j        ||           d S )Nrj   )10r   )r`   ra   ra   rk   r   r   r   Fr   r   )rf   r0   re   rg   s       r   +test_union_duplicate_index_different_dtypesr   `  sf    lllAoooA00011HWWQUW##F&(+++++r   c                      t          g d          } t          g d          }|                     |          }t          g d          }t          j        ||           d S )Nr   r   r   )rf   r0   rg   re   s       r   (test_union_same_value_duplicated_in_bothr   i  s]    iiiAlllAWWQZZF\\\""H&(+++++r   dupr`   c                    t          t          j        dddg          }t          t          j        | ddg          }|                    |d          }t          t          j        | dddg          }t	          j        ||           d S )Nr`   ra   Fr   g      ?       @)r	   rF   nanr(   rH   rm   )r   rf   r0   rg   re   s        r   test_union_nan_in_bothr   r  s|     	rvq!Q  ArvsAq!""AWWQUW##Fbfc3S122H&(+++++r   c                      t          ddd          } t          ddd          }|                     |d          }t          g d          }t          j        ||           d S )	Nr`   d      2   rk   Tr   )r`   r      
                        "   %   (   +   .   1   7   =   C   I   O   U   [   a   )r   r(   r	   rH   rm   )r+   r,   rg   re   s       r   test_union_rangeindex_sort_truer  |  sr    aa  DaQDZZ4Z((F	
 	
 	
 H: &(+++++r   c                 p   | }t          g d|          }t          g d|          }t          g d|          }t          |t                    rt          g d          }|                    |          }t	          j        ||           |                    |          }t	          j        ||           d S )N)r`   r   ra   rT   r   r   r   r   s         r   <test_union_with_duplicate_index_not_subset_and_non_monotonicr	    s     4Eiiiu%%%Aiiiu%%%A\\\///H!%&& '&&WWQZZF&(+++WWQZZF&(+++++r   c                     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                  }t          j
        ||           |                     |          }t          j
        ||           d S )Nr`   ra   r/   rT   )r   rF   r   
categoriesr)   r:   r	   r(   rX   rH   rm   )cir   rg   re   s       r   #test_union_int_categorical_with_nanr    s    	1a.	)	)B=#s****
A--CYYr]]FaBF^2:666H&(+++XXc]]F&(+++++r   c            	           e Zd Zd Zej                            ddgd          d             Zej                            dg d          d	             Zej                            ddgd          ej                            d
g d          d                         Z	d Z
ej                            ddgd          d             Zej                            dej        eeg          ej                            ddgd          d                         Zej                            ddgd          d             Zej                            ddgd          ej                            dddg          d                         Zd Zd Zej                            ddgd          d             Zej                            ddgd          d             Zej                            dddg          d             Zej                            dddg          d             Zd Zej                            d d!d"ej        gg d#fd!d"gej        d$d%d&gfg          d'             Zd( Zd) Zd* Z ej         d+          d,             Z!d-S ).TestSetOpsUnsortedc                 $   t          ddd          t          ddd          g}t          |t                    }t          dgt                    }|                    |          }t          g t                    }t	          j        ||           d S )Ni  ra   	   r   rT   aa)r   r	   r   rb   rH   rm   )rz   dt_datesindex1index2rg   re   s         r   test_intersect_str_datesz+TestSetOpsUnsorted.test_intersect_str_dates  s    T1a(((4B*?*?@xv...vV,,,$$V,,6***
fh/////r   r*   r   T)indirectc                 <   |d d         }|d d         }|                     ||          }|dv r:t          j        |                                |                                           nt          j        ||           |                     ||          }||usJ d S )N   r   r   NF)rb   rH   rm   r'   )rz   r*   r   r   r   r   r   s          r   test_intersectionz$TestSetOpsUnsorted.test_intersection  s    crc
ss&&vD&99	=  !)"7"7"9"96;M;M;O;OPPPP!)V444 ""5t"44E!!!!!!r   zindex2_name,keeps_name))r*   T)r   Fr  c                     t          g d|          }t          g dd          }t          g d          }|                    ||          }|rd|_        |j        |j        k    sJ t          j        ||           d S )N)rk   r   rS   r   r   r_   r`   ra   rk   r   rS   r*   rk   r   rS   )r	   rb   r_   rH   rm   )rz   index2_name
keeps_namer   r  r  re   rg   s           r   #test_intersection_name_preservationz6TestSetOpsUnsorted.test_intersection_name_preservation  s     [999W555##$$VT22 	$#HM{hm++++
fh/////r   z$first_name,second_name,expected_name)r   r   r   c                     |dd         }|d d         }||_         ||_         |                    ||          }|j         |k    sJ d S )NrS   r  r   r   )r_   rb   )	rz   r*   
first_namesecond_namer   r   r   r   r   s	            r   $test_intersection_name_preservation2z7TestSetOpsUnsorted.test_intersection_name_preservation2  s]     adss
!&&vD&99	~......r   c                    t          ddgd          }t          ddgd          }t          dd	gd
          }|                    |                    ||          |          }|                    ||                              ||          }t          j        ||           t          ddgd          }t          g d          }t          g d          }	|                    |                    |	|          |          }|                    ||                              |	|          }t          j        ||           d S )Nr`   ra   i1r  rS   r   i2rk   r   i3r   j1j2j3r   )
rz   r   r(  r)  r*  r(   re   r+  r,  r-  s
             r   test_chained_unionz%TestSetOpsUnsorted.test_chained_union  sD   Aq6%%%Aq6%%%Aq6%%%"400t<<88BT8**00$0??
eX...Aq6%%%2D!!!2D!!!"400t<<88BT8**00$0??
eX.....r   c                    |dd         }|d d         }|d d         }|                     ||          }|dv r;t          j        |                                |                                           d S t          j        ||           d S NrS   r  r   r   r  )r(   rH   rm   r'   )rz   r*   r   r   r   r   r(   s          r   
test_unionzTestSetOpsUnsorted.test_union  s    adss3B3Z
F..=  !%"3"3"5"5z7M7M7O7OPPPPP!%44444r   klassc                 8   |dd         }|d d         }|d d         } ||j                   }|                    ||          }|dv r;t          j        |                                |                                           d S t          j        ||           d S r0  )ri   r(   rH   rm   r'   )	rz   r*   r2  r   r   r   r   rq   rg   s	            r   test_union_from_iterablesz,TestSetOpsUnsorted.test_union_from_iterables  s     adss3B3Z
uV]##T--=  !&"4"4"6"6
8N8N8P8PQQQQQ!&*55555r   c                    |dd         }|                     ||          }||usJ |                     t          g |j                  |          }||usJ t          g |j                                       ||          }||usJ d S )NrS   r  r   rT   )r(   r	   r)   )rz   r*   r   r   r(   s        r   test_union_identityz&TestSetOpsUnsorted.test_union_identity*  s    adE--E!!!! E"EK888tDDE!!!!b,,,225t2DDE!!!!!!r   zsecond_name,expected)NN)r_   r_   c                 t   |dd         }|d d         }|dd         }d|_         ||_         |                    ||          }|du rt          j        ||           n@||_         t          j        |                                |                                           ||j         J d S |j         |k    sJ d S )NrS   r  r   r_   r   T)r_   ru   rH   rm   r'   )	rz   r*   r%  re   r   r   r   r   rg   s	            r   !test_difference_name_preservationz4TestSetOpsUnsorted.test_difference_name_preservation:  s     adssr"u
!!!&t!444<<!&&1111%FK!&"4"4"6"68J8J8L8LMMM;&&&&&;(******r   c                     |                                 }|dd         }d|_        |                    g |          }|dd                                         }d|_        t	          j        ||           d S )NrS   r  r_   )r   r_   ru   r   rH   rm   )rz   r*   r   r   rg   re   s         r   test_difference_empty_argz,TestSetOpsUnsorted.test_difference_empty_argP  sq    

ad
!!"d++2;%%''
fh/////r   c                     t          ddg          }t          dg          }|                    |          }t          dg          }t          j        ||           d S )Nr`   T)r	   ru   rH   rm   )rz   rc   rd   rg   re   s        r   "test_difference_should_not_comparez5TestSetOpsUnsorted.test_difference_should_not_compareY  sU    aV}}tf''!::
fh/////r   c                     |dd         }d|_         |                    ||          }t          |          dk    sJ |j         |j         k    sJ d S )NrS   r  r_   r   )r_   ru   r@   )rz   r*   r   r   rg   s        r   test_difference_identityz+TestSetOpsUnsorted.test_difference_identitya  s]    ad
!!%..6{{a{ej((((((r   c                     |dd         }|d d         }|                     ||          }|dd         }||                                }t          j        ||           d S )NrS   r  r   )ru   r'   rH   rm   )rz   r*   r   r   r   rg   re   s          r   test_difference_sortz'TestSetOpsUnsorted.test_difference_sortj  sm    adss!!&$//B<<++--H
fh/////r   opnameru   rv   c                 :   t          dt          d          dg          }t          dt          d          dg          }t          j        ||          }t	          j        t          d          5   ||          }d d d            n# 1 swxY w Y   t          dt          d          dt          d          g          }|dk    r
|d d         }t	          j        ||           t          j        ||d	
          } ||          }t	          j        ||           d S )Nrk   2000r`   ra   1999znot supported betweenr6   ru   Fr   )r	   r   operatormethodcallerrH   rI   rB   rm   )rz   rA  rf   r0   oprg   re   s          r   test_difference_incomparablez/TestSetOpsUnsorted.test_difference_incomparablew  sW   1i''+,,1i''+,,"61--'>UVVV 	 	RUUF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !Yv..9V3D3DEFF\!!|H
fh/// "615999A
fh/////s   /BBBc                 2   t          dt          d          dg          }t          dt          d          dg          }t          j        ||d          }d}t	          j        t          |	          5   ||           d d d            d S # 1 swxY w Y   d S )
Nrk   rC  r`   ra   rD  Tr   z<'<' not supported between instances of 'Timestamp' and 'int'r6   )r	   r   rE  rF  r;   r2   rx   )rz   rA  rf   r0   rG  rL   s         r   !test_difference_incomparable_truez4TestSetOpsUnsorted.test_difference_incomparable_true  s    1i''+,,1i''+,,"614888L]9C000 	 	BqEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   3BBBc                 .   t          j        t          g dg d                    }t          j        ddg          }|                    ||          }t          j        g d          }||                                }t          j        ||           d S )N)r\   r]   bazr   )r\   r`   r]   rk   r   ))r]   ra   )rL  rk   rM  )r
   from_tuplesziprv   r'   rH   rm   )rz   r   r  r  rg   re   s         r   test_symmetric_difference_miz/TestSetOpsUnsorted.test_symmetric_difference_mi  s    ',A,A,A999(M(MNN'Z(@AA,,V$,??)*N*N*NOO<++--H
fh/////r   zindex2,expectedr   r`   )r         @        r   rQ  rR  c                     t          |          }t          |          }t          dt          j        ddg          }|                    ||          }||                                }t          j        ||           d S )Nr`   ra   rk   r   )r	   rF   r   rv   r'   rH   rm   )rz   r  re   r   r  rg   s         r   !test_symmetric_difference_missingz4TestSetOpsUnsorted.test_symmetric_difference_missing  s{     v?? 261a()),,V$,??<++--H
fh/////r   c                 "   t          g dd          }t          j        g d          }t          ddgd          }|                    ||          }|dv rt	          j        ||           n't	          j        |                                |           |j        dk    sJ |                    |d	|
          }d	|_        |dv rt	          j        ||           n't	          j        |                                |           |j        d	k    sJ d S )N)r`   ra   rk   r   r  r  )ra   rk   r   rS   r`   rS   r   )NTnew_name)result_namer   )r	   rF   arrayrv   rH   rm   r'   r_   )rz   r   r  r  re   rg   s         r   #test_symmetric_difference_non_indexz6TestSetOpsUnsorted.test_symmetric_difference_non_index  s'   |||(333,,,''!Qh///,,V$,??<!&(3333!&"4"4"6"6AAA{h&&&&,,VRV,WW"<!&(3333!&"4"4"6"6AAA{j((((((r   c                     t          g d|          }t          g d|          }|                    |          }t          g d|          }t          j        ||           d S )Nr   rT   r  r  r   )rz   any_numeric_ea_and_arrow_dtyper   r,   rg   re   s         r   test_union_ea_dtypesz'TestSetOpsUnsorted.test_union_ea_dtypes  so    III%CDDDYYY&DEEE40NOOO
fh/////r   c                     t          dg|          }t          dg|          }|                    |          }t          ddg|          }t          j        ||           d S )Nrf   rT   r0   r   )rz   any_string_dtyper+   r,   rg   re   s         r   test_union_string_arrayz*TestSetOpsUnsorted.test_union_string_array  sm    cU"2333cU"2333D!!#s+;<<<
fh/////r   pyarrowc                     t          dgd          }t          dgd          }|                    |          }t          ddg|j                  }t          j        ||           d S )Nz
2020-01-01ztimestamp[s][pyarrow]rT   z
2020-01-02)r	   r(   r)   rH   rm   )rz   rc   rd   resre   s        r   test_union_pyarrow_timestampz/TestSetOpsUnsorted.test_union_pyarrow_timestamp  sq     l^+BCCC|n,CDDDjj,5TZHHH
c8,,,,,r   N)"r   r   r   r  r;   r<   r   r  r"  r&  r.  r1  rF   rX  r   r   r4  r6  r8  r:  r<  r>  r@  rH  rJ  rP  r   rT  rY  r\  r_  td
skip_if_norc  r#   r   r   r  r    s       0 0 0 [Wxj4@@" " A@" [ 	
 	
 	
 
0 
0 
0 [Wxj4@@[.>>> / /	  A@
// / /  [Wxj4@@	5 	5 A@	5 [Wrx&>??[Wxj4@@6 6 A@ @?6 [Wxj4@@" " A@" [Wxj4@@[3lDT5UVV+ + WV A@+(0 0 00 0 0 [Wxj4@@) ) A@) [Wxj4@@
0 
0 A@
0 [X6L'MNN0 0 ON0$ [X6L'MNN  ON0 0 0 [BF^___-Vbfc3,-	
 
0 
0 
0) ) )&0 0 00 0 0 R]9- - - - -r   r  c                     t          ddgd          } t          ddgd          }|                     |          }|| usJ ||usJ t          j        ||            |j        dk    sJ d| _        |j        dk    sJ | j        dk    sJ d S Nr   r`   originalr  changed)r	   rb   rH   rm   r_   r  r  rg   s      r   !test_intersection_mutation_safetyrk    s    Aq6
+++FAq6
+++F  ((F&&)));*$$$$FK;*$$$$;)######r   c                     t          ddgd          } t          ddgd          }|                     |          }|| usJ ||usJ t          j        ||            |j        dk    sJ d| _        |j        dk    sJ | j        dk    sJ d S rg  r	   r(   rH   rm   r_   rj  s      r   test_union_mutation_safetyrn    s    Aq6
+++FAq6
+++F\\&!!F&&)));*$$$$FK;*$$$$;)######r   c                     t          ddgd          } t          ddgd          }|                     |          }||usJ t          j        ||           |j        dk    sJ d|_        |j        dk    sJ |j        dk    sJ d S rg  rm  rj  s      r    test_union_mutation_safety_otherrp    s    Aq6
+++FAq6
+++F\\&!!F&&)));*$$$$FK;*$$$$;)######r   c                      t          j        ddgddg          } t          j        ddgddg          }|                     |          }|| usJ ddg| _        |j        ddgk    sJ d S N)rf   r`   )r0   ra   r   y)r[   changed1changed2)r
   rN  rb   r[   mi1mi2rg   s      r   ,test_multiindex_intersection_mutation_safetyry    s    

 (H!5c3Z
H
H
HC

 (H!5c3Z
H
H
HCc""FZ(CI<C:%%%%%%r   c                      t          j        ddgddg          } t          j        ddgddg          }|                     |          }|| usJ ddg| _        |j        ddgk    sJ d S rr  )r
   rN  r(   r[   rv  s      r   %test_multiindex_union_mutation_safetyr{  !  s    

 (H!5c3Z
H
H
HC

 (H!5c3Z
H
H
HCYYs^^FZ(CI<C:%%%%%%r   )B__doc__r   rE  numpyrF   r;   pandas._libsr   pandas.util._test_decoratorsutil_test_decoratorsrd  pandas.core.dtypes.castr   pandasr   r   r   r	   r
   r   r   r   r   pandas._testing_testingrH   pandas.api.typesr   r   boolr   fixtureALL_REAL_NUMPY_DTYPESr    r%   r-   rR   r<   r   arangerW   rX   rG   rV   rh   rn   rp   r   r   r   r   r   r   r   r   r   r  r	  r  r  rk  rn  rp  ry  r{  r#   r   r   <module>r     ss   
                   ) ) ) ) ) ) ) ) ) 4 4 4 4 4 4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
             .$ . . . . 		! 	 		
 	       0 0 0G* G* G*T 	yry||28	,	,	,jjmm<	yry||2:	.	.	.ibill"(0S0S0ST	yry||2:	.	.	.

1>	yry||2:	.	.	.ibill")0T0T0TU	 2 2 2    ( #8:N"OPP# # QP) *# LLL1a&#9::, , ;:,z7 z7 z7 z7 z7 z7 z7 z7z	 UVVRSSMMM 9 9  TS WV
98
6 
6 
6, , ,", , , , , ,, , , BF,,, , -,,", ", ",J, , ,$, , ,Y- Y- Y- Y- Y- Y- Y- Y-x$ $ $&$ $ $&$ $ $$	& 	& 	&	& 	& 	& 	& 	&r   