
    A>i`                        S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	s  J
r  SSKJr  SSKJrJrJrJrJrJrJrJrJr  SSKJr  SSKJrJr  S\4S	 jr\R@                  " / \RB                  QS
PSPSPSPS9S 5       r"\R@                  S 5       r#S r$S r%\RL                  RO                  S\" \RP                  " S5      \RR                  S9\" S5      4\" \RP                  " S5      \RT                  S9\" \RP                  " S5      \RR                  S94\" \RP                  " S5      \RT                  S9\" S5      4\" \RP                  " S5      \RT                  S9\" \RP                  " S5      \RV                  S94/5      S 5       r,\RL                  RO                  S/ SQ5      \RL                  RO                  SSS/5      S 5       5       r-\RL                  RO                  S/ SQSS//5      S  5       r. " S! S"5      r/\RL                  Ra                  S#5      \RL                  Ra                  S$5      \RL                  RO                  S%/ S&Q5      S' 5       5       5       r1S( r2S) r3S* r4S+ r5S, r6\RL                  RO                  S-S.\Rn                  /5      S/ 5       r8S0 r9S1 r:S2 r; " S3 S45      r<S5 r=S6 r>S7 r?S8 r@S9 rAg):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                 0    [        U 5      [        U5      :H  $ )zG
Checks if the set of unique elements of arr1 and arr2 are equivalent.
)	frozenset)arr1arr2s     _/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/indexes/test_setops.pyequal_contentsr   #   s     T?io--    objectcategorydatetime64[ns]ztimedelta64[ns])paramsc                     U R                   $ )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                     U $ N )
index_flats    r   index_flat2r%   =   s    r   c                     U R                  5       nU R                  5       nUR                  U5      R                  UR                  :X  d   eg r"   )sort_valuesuniondtype)indexidx1idx2s      r   test_union_same_typesr-   B   sA     DD::d!!TZZ///r   c                 j   U nUnUR                   (       dE  UR                   (       d4  UR                  R                  S:X  a  UR                  R                  S:X  dV  UR                   (       dy  UR                   (       dh  UR                  R                  S:X  aN  UR                  R                  S:X  a4  [        R                  R                  S[        SS9nUR                  U5        [        UR                  UR                  /5      nS nSn[        U5      (       a  [        U5      (       d  GO?UR                  R                  S:X  a&  [        R                  " UR                  S5      (       a@  UR                  R                  S:X  a-  [        R                  " UR                  S5      (       d  [        nO[        UR                  [        5      (       a  [        UR                  [        5      (       d>  [        UR                  [        5      (       a[  [        UR                  [        5      (       a<  [         nS	n[        R                  R                  S
["        SS9nUR                  U5        [$        R&                  UR                  UR                  4;   n	[)        UR                  5      n
[)        UR                  5      nUR+                  5       nUR+                  5       n[,        R.                  " XxS9   UR1                  U5      nUR1                  U5      nS S S 5        U	(       a[  U
(       d  U(       aM  WR                  [$        R                  " S5      :X  d   eWR                  [$        R                  " S5      :X  d   eg WR                  U:X  d   eWR                  U:X  d   eg ! , (       d  f       N= f)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   s    DD NNJJOOs"JJOOs"NNJJOOs"JJOOs" {{  %j ! 
 	D!#TZZ$<=LD
%Ct99CII
**//S
 #//$**f*M*M

3

F(K(K 4::{++
4::GW0X0X4::{++
4::GW0X0X/{{  7! ! 

 	D!tzz4::66J)$**5K)$**5K DD		#	#D	4zz$zz$ 
5 {kzzRXXc]***zzRXXc]***zz\)))zz\))) 
5	4s   2#N$$
N2z	idx1,idx2   r)   c                     U R                  U5      nUR                  U 5      nUR                  U R                  UR                  4;   d   eUR                  U R                  UR                  4;   d   eg r"   )r(   r)   )r+   r,   rP   rQ   s       r   "test_compatible_inconsistent_pairsrV      s^     ::dD::dD::$**djj1111::$**djj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                     [        U 5      n [        U5      n[        / XS   S9n[        / XS   S9nUR                  U5      nUR                  U:X  d   eUR                  US   :X  d   eUR                  U5      nUR                  US   :X  d   eg )Nr   )r)   name      )r   r	   r(   r)   r_   intersection)leftrightexpectedr[   ar0   results          r   test_union_dtypesrh      s    , DEb8,Ab!H-AWWQZF<<8###;;%(""" ^^AF;;%("""r   valuesr`   ra   ra      rk   c                     [        U 5      n[        SS/5      nUR                  U5      n[        S/5      n[        R                  " X45        g )Nrk   )r	   rb   rH   assert_index_equal)ri   rf   r0   rg   re   s        r   test_intersection_duplicatesrn      sA     	fAq!fA^^AFaSzH&+r   c                      \ rS rSr\R
                  R                  SSS/5      \R
                  R                  S/ SQ5      S 5       5       r\R
                  R                  S5      S	 5       r	\R
                  R                  S5      S
 5       r
\R
                  R                  S5      S 5       r\R
                  R                  S5      S 5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S5      S 5       rS rS rS rSrg)
TestSetOps   caseg      ?xxxmethodrb   r(   
differencesymmetric_differencec                     Sn[         R                  " [        US9   [        X25      " U5        S S S 5        g ! , (       d  f       g = f)Nz!Input must be Index or array-liker6   )r;   r2   	TypeErrorgetattr)selfrr   rt   r*   rL   s        r   test_set_ops_error_cases#TestSetOps.test_set_ops_error_cases   s0     2]]9C0E"4( 100s	   7
A3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                    [        U[        5      (       a,  [        R                  " S[	        U5      R
                   35        US S R                  5       nUS S R                  5       nUR                  U5      n[        R                  " XC5        [        UR                  [        5      (       a  g UR                  5       UR                  5       UR                  5       /nU H&  nUR                  U5      n[        Xs5      (       a  M&   e   [        U[         5      (       a8  Sn[        R"                  " [$        US9   UR                  / SQ5        S S S 5        g g ! , (       d  f       g = f)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   ry   )	r{   r*   firstsecond	intersectcasesrr   rg   rL   s	            r   test_intersection_base!TestSetOps.test_intersection_base   s   e-..KK+DK,@,@+ABCbq	  "r!!#&&v.	
i0ekk?33  "F$4$4$68HID''-F!&1111  eZ((BCy4""9- 54 )44s   :E
E&c                 v   UR                  5       nUSS  nUS S nUnUR                  U5      n[        R                  " UR	                  5       UR	                  5       5        [        UR                  [        5      (       a  g UR                  5       UR                  5       UR                  5       /nU H&  nUR                  U5      n[        X5      (       a  M&   e   [        U[        5      (       a8  Sn	[        R                  " [        U	S9   UR                  / SQ5        S S S 5        g g ! , (       d  f       g = f)Nrk   rS   r   r6   r   )r   r(   rH   rm   r'   rC   r)   r   r   r   r   r   r
   r;   r2   ry   )
r{   r*   r   r   
everythingr(   r   rr   rg   rL   s
             r   test_union_baseTestSetOps.test_union_base   s    ab	r
F#
e//1:3I3I3KLekk?33  "F$4$4$68HID[[&F!&5555  eZ((BCy4I& 54 )44s   D**
D8c                 t   USS  nUS S nUR                   S:X  a$  [        U5      R                  [        U5      5      nO[        U[        5      (       a  / nOUSS  nUR                  XA5      n[        Xe5      (       d   eUR                  5       UR                  5       UR                  5       /nU H&  nUR                  X5      n[        Xe5      (       a  M&   e   [        U[        5      (       a9  Sn	[        R                  " [        U	S9   UR                  / SQU5        S S S 5        g g ! , (       d  f       g = f)Nra      booleanr   r6   r   )inferred_typesetrv   rC   r   r   r   r   r   r
   r;   r2   ry   )
r{   sortr*   r   r   answerrg   r   rr   rL   s
             r   test_difference_baseTestSetOps.test_difference_base  s   ab	r)+ Z**3v;7F/00F12YF!!&/f---- "F$4$4$68HID%%d1F!&1111  eZ((BCy4  D1 54 )44s   
D))
D7c                    U(       aL  UR                   S:X  a<  UR                  S:X  a,  UR                  [        R                  R                  SS95        [        U[        5      (       a,  [        R                  " S[        U5      R                   35        [        U5      S:  a  [        R                  " S5        US   US	S  ;   d  US
   US S
 ;   a  [        R                  " S5        US	S  nUS S
 nUSS
/   nUR                  U5      n[        R                  " UR                  5       UR                  5       5        UR!                  5       UR#                  5       UR%                  5       /nU H&  n	UR                  U	5      n['        Xv5      (       a  M&   e   [        U[(        5      (       a8  Sn
[        R*                  " [,        U
S9   UR                  / SQ5        S S S 5        g g ! , (       d  f       g = f)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@   rw   rH   rm   r'   r   r   r   r   r
   r2   ry   )r{   r*   using_infer_stringr   r   r   r   rg   r   rr   rL   s              r   test_symmetric_difference$TestSetOps.test_symmetric_difference.  s    x'##x/ 1 19M 1 NOe-..KK+DK,@,@+ABCu:>KK128uQRy E"Is$; KKEFab	s2w++F3
f002F4F4F4HI "F$4$4$68HID//5F!&1111  eZ((BCy4**95 54 )44s   G&&
G4zfname, sname, expected_name)Ar   r   r   BN)r   NNNr   N)NNNc                 v   UR                   (       d  UR                  5       nOUnUR                  5       R                  U5      nUR                  5       R                  U5      nUR	                  U5      nUR                  5       R                  U5      n	[
        R                  " X5        UR                  5       R                  U5      nUR                  U5      R                  U5      nUR	                  U5      nUR                  5       R                  U5      n	[
        R                  " X5        UR                  U5      R                  U5      nUR                  5       R                  U5      nUR	                  U5      nUR                  5       R                  U5      n	[
        R                  " X5        UR                  U5      R                  U5      nUR                  U5      R                  U5      nUR	                  U5      nUR                  U5      R                  U5      n	[
        R                  " X5        g r"   )r9   r   copy	set_namesr(   rH   rm   drop
r{   r$   fnamesnameexpected_namer*   r   r   r(   re   s
             r   test_corner_unionTestSetOps.test_corner_unionP  s    ##%%'EE 

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

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

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

5!++E2E",,U3F#::e$..}=
e.r   c                 Z   UR                   (       d  UR                  5       nOUnUR                  5       R                  U5      nUSS  R                  U5      nUR	                  U5      R                  5       nUR                  U5      R                  5       n	[        R                  " X5        g Nr`   )r9   r   r   r   r(   r'   rH   rm   r   s
             r   test_union_unequalTestSetOps.test_union_unequal  s     ##%%'EE 

&&u-qr$$U+F#//1??=1==?
e.r   c                 z   UR                   (       d  UR                  5       nOUnUR                  5       R                  U5      nUR                  5       R                  U5      nUR	                  U5      nUR                  5       R                  U5      n	[
        R                  " X5        UR                  5       R                  U5      nUR                  U5      R                  U5      nUR	                  U5      nUR                  U5      R                  U5      n	[
        R                  " X5        UR                  U5      R                  U5      nUR                  5       R                  U5      nUR	                  U5      nUR                  U5      R                  U5      n	[
        R                  " X5        UR                  U5      R                  U5      nUR                  U5      R                  U5      nUR	                  U5      nUR                  U5      R                  U5      n	[
        R                  " X5        g r"   )r9   r   r   r   rb   rH   rm   r   
r{   r$   r   r   r   r*   r   r   r   re   s
             r   test_corner_intersect TestSetOps.test_corner_intersect  s    ##%%'EE 

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

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

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

5!++E2E",,U3&&v.	::e$..}=
i2r   c                 `   UR                   (       d  UR                  5       nOUnUR                  5       R                  U5      nUSS  R                  U5      nUR	                  U5      R                  5       nUSS  R                  U5      R                  5       n	[        R                  " X5        g r   )r9   r   r   r   rb   r'   rH   rm   r   s
             r   test_intersect_unequal!TestSetOps.test_intersect_unequal  s     ##%%'EE 

&&u-qr$$U+&&v.::<	9&&}5AAC
i2r   c                    [        U[        5      (       a.  UR                  [        [	        UR
                  5      5      5      nOUR                  S5      n[        R                  " U5      nUR                  U5      nUR                  UR                  :X  d   eUR                  US S 5      nUR                  UR                  :X  d   eUS S R                  U5      nUR                  UR                  :X  d   eg )Nr\   r   )
rC   r
   renamelistrangenlevelsrF   asarrayrb   r_   )r{   r*   otherrg   s       r   .test_intersection_name_retention_with_nameless9TestSetOps.test_intersection_name_retention_with_nameless  s    eZ((LLeEMM&:!;<ELL'E

5!##E*{{ejj((( ##E"1I.{{ejj((( r''.{{ejj(((r   c                     UR                   (       d  [        R                  " S5        UR                  XS9nUS S n[        R
                  " X4SS9  g )Nz&Not relevant since index is not uniquer   r   Texact)r9   r;   r   rv   rH   rm   )r{   r*   r   rg   re   s        r   $test_difference_preserves_type_empty/TestSetOps.test_difference_preserves_type_empty  sF     KK@A!!%!3!9
fd;r   c                 r   [        U[        5      (       a  U Vs/ s H  o3/UR                  -  PM     nnUR                  US   5      nUR                  US   5      nUR	                  U5      (       d   eUR                  U5      nUS S R                  US   5      n[        R                  " XV5        g s  snf )Nr   r`   ra   )rC   r
   r   r   equalsrv   rH   rm   )r{   r*   r[   xr   rg   re   s          r   %test_difference_name_retention_equals0TestSetOps.test_difference_name_retention_equals  s    eZ((278%QS5==(%E8U1X&U1X&||E""""!!%(!9##E!H-
f/ 9s   B4c                     UR                   (       d  [        R                  " S5        UR                  US S 5      nUR	                  XS9n[
        R                  " X4SS9  g )Nz(Not relevant because index is not uniquer   r   Tr   )r9   r;   r   rb   rv   rH   rm   )r{   r*   r   interdiffs        r   (test_intersection_difference_match_empty3TestSetOps.test_intersection_difference_match_empty  sQ    
 KKBC""5!9-1
e6r   r#   N)r   
__module____qualname____firstlineno__r;   r<   parametrizer|   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r#   r   r   rp   rp      s   [[Vc5\2[[Q) 3) [[ VW. X.2 [[ VW' X'2 [[ VW2 X22 [[ VW6 X6B [[%	
	#/	#/J [[%	
	/	/ [[%	
	"3	"3H [[%	
	3	3 [[ VW) X)&<
0	7r   rp   z7ignore:invalid value encountered in cast:RuntimeWarningr~   rt   ru   c                    U nUR                  S5      n[        U[        5      (       a  SOSn[        XB5      " XQS9n[        XB5      " XAS9nU(       a(  UR                  (       a  US;   a  UR                  S5      n[
        R                  " XxUS9  [        XB5      " US S US9n[        XB5      " US S US9nU(       a(  UR                  (       a  US;   a  UR                  S5      n[
        R                  " XxUS9  g )Nr   equivTr   )r(   rw   r   rS   )astyperC   r   rz   emptyrH   rm   )	r$   r   rt   r   r*   r   r   rg   re   s	            r   test_setop_with_categoricalr     s     ELL$E!%44G$EU#E5Fu%e7HKK77??:.&%8U#E"1ID9Fu%eBQid;HKK77??:.&%8r   c                    U R                   (       a  [        R                  " S5        U nU/ SQ   nUR                  U5      R	                  UR                  U5      5      (       d   eUR                  U5      R
                  (       d   eg )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  sl    {{23
C&NN+22>3N3Ns3STTTTN+5555r   c                 .   U n[        / SQUS9n[        / SQUS9n[        / SQUS9n[        U[        5      (       a  [        / SQ5      nUR                  U5      n[        R
                  " XT5        UR                  USS9n[        R
                  " XT5        g )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l%(Aiu%A'u5H!%&&+,WWQZF&+WWQUW#F&+r   c                     U n[        / SQUS9n[        SS/US9n[        / SQUS9nUR                  U5      n[        R                  " XT5        UR                  U5      n[        R                  " XT5        g )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  sg     4Eiu%Aq!fE"AYe,HWWQZF&+WWQZF&+r   c                      [        / SQ5      n [        / SQ5      n[        / SQ5      nU R                  USS9n[        R                  " X25        g )Nrj   )10r   )r`   ra   ra   rk   r   r   r   Fr   r   )rf   r0   re   rg   s       r   +test_union_duplicate_index_different_dtypesr   `  sA    lAoA01HWWQUW#F&+r   c                      [        / SQ5      n [        / SQ5      nU R                  U5      n[        / SQ5      n[        R                  " X#5        g )Nr   r   r   )rf   r0   rg   re   s       r   (test_union_same_value_duplicated_in_bothr   i  s;    iAlAWWQZF\"H&+r   dupr`   c                     [        [        R                  SSS/5      n[        [        R                  U SS/5      nUR                  USS9n[        [        R                  U SSS/5      n[        R
                  " X45        g )Nr`   ra   Fr   g      ?       @)r	   rF   nanr(   rH   rm   )r   rf   r0   rg   re   s        r   test_union_nan_in_bothr   r  sk     	rvvq!Q ArvvsAq!"AWWQUW#Fbffc3S12H&+r   c                      [        SSS5      n [        SSS5      nU R                  USS9n[        / SQ5      n[        R                  " X#5        g )	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  |  sO    aa DaQDZZ4Z(F	
H: &+r   c                 0   U n[        / SQUS9n[        / SQUS9n[        / SQUS9n[        U[        5      (       a  [        / SQ5      nUR                  U5      n[        R
                  " XT5        UR                  U5      n[        R
                  " XT5        g )N)r`   r   ra   rT   r   r   r   r   s         r   <test_union_with_duplicate_index_not_subset_and_non_monotonicr    s{     4Eiu%Aiu%A\/H!%&&&WWQZF&+WWQZF&+r   c                     [        SS[        R                  /5      n U R                  R                  R
                  S:X  d   e[        SS/5      nUR                  U 5      n[        SS[        R                  /[        R                  S9n[        R                  " X#5        U R                  U5      n[        R                  " X#5        g )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BFF^2::6H&+XXc]F&+r   c            	          \ rS rSrS r\R                  R                  SS/SS9S 5       r\R                  R                  S/ S	Q5      S
 5       r	\R                  R                  SS/SS9\R                  R                  S/ SQ5      S 5       5       r
S r\R                  R                  SS/SS9S 5       r\R                  R                  S\R                  \\/5      \R                  R                  SS/SS9S 5       5       r\R                  R                  SS/SS9S 5       r\R                  R                  SS/SS9\R                  R                  SSS/5      S 5       5       rS rS r\R                  R                  SS/SS9S 5       r\R                  R                  SS/SS9S 5       r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      S 5       rS  r\R                  R                  S!S"S#\R6                  // S$Q4S"S#/\R6                  S%S&S'/4/5      S( 5       rS) rS* rS+ r\ RB                  " S,5      S- 5       r"S.r#g/)0TestSetOpsUnsortedi  c                     [        SSS5      [        SSS5      /n[        U[        S9n[        S/[        S9nUR                  U5      n[        / [        S9n[        R
                  " XE5        g )Ni  ra   	   r  rT   aa)r   r	   r   rb   rH   rm   )r{   dt_datesindex1index2rg   re   s         r   test_intersect_str_dates+TestSetOpsUnsorted.test_intersect_str_dates  sb    T1a((4B*?@xv.vV,$$V,6*
f/r   r*   r   T)indirectc                     US S nUS S nUR                  XBS9nUS;   a4  [        R                  " UR                  5       UR                  5       5        O[        R                  " XT5        UR                  X2S9nXcLd   eg )N   r   r   NF)rb   rH   rm   r'   )r{   r*   r   r   r   r   r   s          r   test_intersection$TestSetOpsUnsorted.test_intersection  s    cr
s&&v&9	= !!)"7"7"96;M;M;OP!!)4 ""5"4!!!r   zindex2_name,keeps_name))r*   T)r   Fr(  c                     [        / SQUS9n[        / SQSS9n[        / SQ5      nUR                  XC5      nU(       a  SUl        UR                  UR                  :X  d   e[        R                  " Xv5        g )N)rk   r   rS   r   r   r_   r`   ra   rk   r   rS   r*   rk   r   rS   )r	   rb   r_   rH   rm   )r{   index2_name
keeps_namer   r"  r!  re   rg   s           r   #test_intersection_name_preservation6TestSetOpsUnsorted.test_intersection_name_preservation  sd     [9W5#$$V2#HM{{hmm+++
f/r   z$first_name,second_name,expected_name)r   r   r   c                 r    USS nUS S nX&l         X7l         UR                  XuS9nUR                   U:X  d   eg )NrS   r'  r   r   )r_   rb   )	r{   r*   
first_namesecond_namer   r   r   r   r   s	            r   $test_intersection_name_preservation27TestSetOpsUnsorted.test_intersection_name_preservation2  sI     as
!&&v&9	~~...r   c                    [        SS/SS9n[        SS/SS9n[        SS	/S
S9nUR                  UR                  XAS9US9nUR                  X1S9R                  XAS9n[        R                  " XV5        [        SS/SS9n[        / SS9n[        / SS9n	UR                  UR                  XS9US9nUR                  XS9R                  XS9n[        R                  " XV5        g )Nr`   ra   i1r,  rS   r   i2rk   r   i3r   j1j2j3r   )
r{   r   r9  r:  r;  r(   re   r<  r=  r>  s
             r   test_chained_union%TestSetOpsUnsorted.test_chained_union  s    Aq6%Aq6%Aq6%"0t<88B8*000?
e.Aq6%2D!2D!"0t<88B8*000?
e.r   c                     USS nUS S nUS S nUR                  XBS9nUS;   a4  [        R                  " UR                  5       UR                  5       5        g [        R                  " Xe5        g NrS   r'  r   r   r(  )r(   rH   rm   r'   )r{   r*   r   r   r   r   r(   s          r   
test_unionTestSetOpsUnsorted.test_union  sk    as3BZ
F.= !!%"3"3"5z7M7M7OP!!%4r   klassc                    USS nUS S nUS S nU" UR                   5      nUR                  XsS9nUS;   a4  [        R                  " UR	                  5       UR	                  5       5        g [        R                  " X5        g rB  )ri   r(   rH   rm   r'   )	r{   r*   rE  r   r   r   r   rr   rg   s	            r   test_union_from_iterables,TestSetOpsUnsorted.test_union_from_iterables  s{     as3BZ
V]]#T-= !!&"4"4"6
8N8N8PQ!!&5r   c                     USS nUR                  X2S9nXCLd   eUR                  [        / UR                  S9US9nXCLd   e[        / UR                  S9R                  X2S9nXCLd   eg )NrS   r'  r   rT   )r(   r	   r)   )r{   r*   r   r   r(   s        r   test_union_identity&TestSetOpsUnsorted.test_union_identity*  s~    aE-!!! E"EKK8tD!!!b,2252D!!!r   zsecond_name,expected)NN)r_   r_   c                 N   USS nUS S nUSS nSUl         X&l         UR                  XdS9nUSL a  [        R                  " X5        O9X'l         [        R                  " UR	                  5       UR	                  5       5        Uc  UR                   b   eg UR                   U:X  d   eg )NrS   r'  r   r_   r   T)r_   rv   rH   rm   r'   )	r{   r*   r5  re   r   r   r   r   rg   s	            r   !test_difference_name_preservation4TestSetOpsUnsorted.test_difference_name_preservation:  s     asr"
!!!&!44<!!&1%K!!&"4"4"68J8J8LM;;&&&;;(***r   c                     UR                  5       nUSS nSUl        UR                  / U5      nUSS R                  5       nSUl        [        R
                  " XE5        g )NrS   r'  r_   )r   r_   rv   r   rH   rm   )r{   r*   r   r   rg   re   s         r   test_difference_empty_arg,TestSetOpsUnsorted.test_difference_empty_argP  sZ    

a
!!"d+2;%%'
f/r   c                     [        SS/5      n[        S/5      nUR                  U5      n[        S/5      n[        R                  " X45        g )Nr`   T)r	   rv   rH   rm   )r{   rc   rd   rg   re   s        r   "test_difference_should_not_compare5TestSetOpsUnsorted.test_difference_should_not_compareY  sA    aV}tf'!:
f/r   c                     USS nSUl         UR                  X25      n[        U5      S:X  d   eUR                   UR                   :X  d   eg )NrS   r'  r_   r   )r_   rv   r@   )r{   r*   r   r   rg   s        r   test_difference_identity+TestSetOpsUnsorted.test_difference_identitya  sL    a
!!%.6{a{{ejj(((r   c                     USS nUS S nUR                  XB5      nUSS nUc  UR                  5       n[        R                  " XV5        g )NrS   r'  r   )rv   r'   rH   rm   )r{   r*   r   r   r   rg   re   s          r   test_difference_sort'TestSetOpsUnsorted.test_difference_sortj  sT    as!!&/B<<++-H
f/r   opnamerv   rw   c                    [        S[        S5      S/5      n[        S[        S5      S/5      n[        R                  " X5      n[        R
                  " [        SS9   U" U5      nS S S 5        [        S[        S5      S[        S5      /5      nUS:X  a  US S n[        R                  " WU5        [        R                  " XS	S
9nU" U5      n[        R                  " XV5        g ! , (       d  f       N= f)Nrk   2000r`   ra   1999znot supported betweenr6   rv   Fr   )r	   r   operatormethodcallerrH   rI   rB   rm   )r{   r[  rf   r0   oprg   re   s          r   test_difference_incomparable/TestSetOpsUnsorted.test_difference_incomparablew  s    1i'+,1i'+,""6-''>UVUF W !Yv.9V3DEF\!|H
fh/ ""659A
f/ WVs   	C&&
C4c                    [        S[        S5      S/5      n[        S[        S5      S/5      n[        R                  " XSS9nSn[        R
                  " [        US	9   U" U5        S S S 5        g ! , (       d  f       g = f)
Nrk   r]  r`   ra   r^  Tr   z<'<' not supported between instances of 'Timestamp' and 'int'r6   )r	   r   r_  r`  r;   r2   ry   )r{   r[  rf   r0   ra  rL   s         r   !test_difference_incomparable_true4TestSetOpsUnsorted.test_difference_incomparable_true  sf    1i'+,1i'+,""648L]]9C0qE 100s   	A11
A?c                    [         R                  " [        / SQ/ SQ5      5      n[         R                  " SS/5      nUR                  X1S9n[         R                  " / SQ5      nUc  UR	                  5       n[
        R                  " XE5        g )N)r\   r]   bazr   )r\   r`   r]   rk   r   ))r]   ra   )rh  rk   ri  )r
   from_tuplesziprw   r'   rH   rm   )r{   r   r!  r"  rg   re   s         r   test_symmetric_difference_mi/TestSetOpsUnsorted.test_symmetric_difference_mi  st    '',A9(MN''Z(@A,,V,?))*NO<++-H
f/r   zindex2,expectedr   r`   )r         @        r   rn  ro  c                     [        U5      n[        U5      n[        S[        R                  SS/5      nUR                  XS9nUc  UR	                  5       n[
        R                  " XR5        g )Nr`   ra   rk   r   )r	   rF   r   rw   r'   rH   rm   )r{   r"  re   r   r!  rg   s         r   !test_symmetric_difference_missing4TestSetOpsUnsorted.test_symmetric_difference_missing  sc     v? 2661a(),,V,?<++-H
f/r   c                    [        / SQSS9n[        R                  " / SQ5      n[        SS/SS9nUR                  X1S9nUS;   a  [        R
                  " XT5        O%[        R
                  " UR                  5       U5        UR                  S:X  d   eUR                  US	US
9nS	Ul        US;   a  [        R
                  " XT5        O%[        R
                  " UR                  5       U5        UR                  S	:X  d   eg )N)r`   ra   rk   r   r!  r,  )ra   rk   r   rS   r`   rS   r   )NTnew_name)result_namer   )r	   rF   arrayrw   rH   rm   r'   r_   )r{   r   r!  r"  re   rg   s         r   #test_symmetric_difference_non_index6TestSetOpsUnsorted.test_symmetric_difference_non_index  s    |(3,'!Qh/,,V,?<!!&3!!&"4"4"6A{{h&&&,,VRV,W"<!!&3!!&"4"4"6A{{j(((r   c                     [        / SQUS9n[        / SQUS9nUR                  U5      n[        / SQUS9n[        R                  " XE5        g )Nr   rT   r.  r-  r   )r{   any_numeric_ea_and_arrow_dtyper   r,   rg   re   s         r   test_union_ea_dtypes'TestSetOpsUnsorted.test_union_ea_dtypes  sD    I%CDY&DE40NO
f/r   c                     [        S/US9n[        S/US9nUR                  U5      n[        SS/US9n[        R                  " XE5        g )Nrf   rT   r0   r   )r{   any_string_dtyper+   r,   rg   re   s         r   test_union_string_array*TestSetOpsUnsorted.test_union_string_array  sM    cU"23cU"23D!#s+;<
f/r   pyarrowc                     [        S/SS9n[        S/SS9nUR                  U5      n[        SS/UR                  S9n[        R                  " X45        g )Nz
2020-01-01ztimestamp[s][pyarrow]rT   z
2020-01-02)r	   r(   r)   rH   rm   )r{   rc   rd   resre   s        r   test_union_pyarrow_timestamp/TestSetOpsUnsorted.test_union_pyarrow_timestamp  sS     l^+BC|n,CDjj,5TZZH
c,r   r#   N)$r   r   r   r   r#  r;   r<   r   r)  r1  r6  r?  rC  rF   rv  r   r   rG  rJ  rM  rP  rS  rV  rY  rb  re  rl  r   rq  rw  r{  r  td
skip_if_nor  r   r#   r   r   r  r    s   0 [[Wxj4@" A" [[ 	

0
0 [[Wxj4@[[.>/	 A
//  [[Wxj4@	5 A	5 [[Wrxx&>?[[Wxj4@6 A @6 [[Wxj4@" A" [[Wxj4@[[3lDT5UV+ W A+(00 [[Wxj4@) A) [[Wxj4@
0 A
0 [[X6L'MN0 O0$ [[X6L'MN O0 [[BFF^_-Vbffc3,-	

0
0)&00 ]]9- -r   r  c                     [        SS/SS9n [        SS/SS9nU R                  U5      nX Ld   eX!Ld   e[        R                  " X 5        UR                  S:X  d   eSU l        UR                  S:X  d   eU R                  S:X  d   eg Nr   r`   originalr,  changed)r	   rb   rH   rm   r_   r!  r"  rg   s      r   !test_intersection_mutation_safetyr    s    Aq6
+FAq6
+F  (F&);;*$$$FK;;*$$$;;)###r   c                     [        SS/SS9n [        SS/SS9nU R                  U5      nX Ld   eX!Ld   e[        R                  " X 5        UR                  S:X  d   eSU l        UR                  S:X  d   eU R                  S:X  d   eg r  r	   r(   rH   rm   r_   r  s      r   test_union_mutation_safetyr    s    Aq6
+FAq6
+F\\&!F&);;*$$$FK;;*$$$;;)###r   c                     [        SS/SS9n [        SS/SS9nU R                  U5      nX!Ld   e[        R                  " X!5        UR                  S:X  d   eSUl        UR                  S:X  d   eUR                  S:X  d   eg r  r  r  s      r    test_union_mutation_safety_otherr    s    Aq6
+FAq6
+F\\&!F&);;*$$$FK;;*$$$;;)###r   c                      [         R                  " SS/SS/S9n [         R                  " SS/SS/S9nU R                  U5      nX Ld   eSS/U l        UR                  SS/:X  d   eg N)rf   r`   )r0   ra   r   y)r[   changed1changed2)r
   rj  rb   r[   mi1mi2rg   s      r   ,test_multiindex_intersection_mutation_safetyr    sv    

 
 (H!5c3Z
HC

 
 (H!5c3Z
HCc"FZ(CI<<C:%%%r   c                      [         R                  " SS/SS/S9n [         R                  " SS/SS/S9nU R                  U5      nX Ld   eSS/U l        UR                  SS/:X  d   eg r  )r
   rj  r(   r[   r  s      r   %test_multiindex_union_mutation_safetyr  !  ss    

 
 (H!5c3Z
HC

 
 (H!5c3Z
HCYYs^FZ(CI<<C:%%%r   )B__doc__r   r_  numpyrF   r;   pandas._libsr   pandas.util._test_decoratorsutil_test_decoratorsr  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  r  r  r  r  r  r#   r   r   <module>r     s  
      ) ) 4
 
 
 .$ . 		!	! 	 		
 	  0G*T 	ryy|288	,jm<	ryy|2::	.biil"((0ST	ryy|2::	.
1>	ryy|2::	.biil"))0TU	22 ( #8:N"OP# Q)*# L1a&#9:, ;,z7 z7z	 UVRSM9 T W
98
6,", ,, BFF,, -,",J,$,Y- Y-x$&$&$$	&	&r   