
    Mht#                     r    S SK J r   S SKrS SKrS SKrS SKJrJr  S SKJ	r
  S SKJr  S\4S jr " S S5      rg)	    )datetimeN)IndexSeries)	safe_sort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/env/lib/python3.13/site-packages/pandas/tests/indexes/base_class/test_setops.pyequal_contentsr      s     T?io--    c                      \ rS rSr\R
                  R                  S/ SQ5      S 5       rS rS r	\R
                  R                  S\
R                  \\/5      S 5       rS	 rS
 rS rS r\R
                  R                  S\
R                  \\/5      S 5       rS rS rS r\R
                  R                  S\" SS/5      S/4\" / SQ5      SS/4/5      S 5       rS rS r\R
                  R                  SS\
R                  " / SQS\4S/S9S4S\
R                  " / S QS\4S/S9S!4S"\
R                  " / S#QS\4S/S9S!4/5      S$ 5       r\R
                  R                  S%S&S'// /5      \R
                  R                  S(S'S&// /5      \R
                  R                  S)/ S*Q5      S+ 5       5       5       r\R
                  R                  S,S-S.S//S// S0Q//5      S1 5       rS2rg!)3TestIndexSetOps   method)unionintersection
differencesymmetric_differencec                     [        SS/5      n[        SS/5      n[        R                  " [        SS9   [	        X!5      " USS9  S S S 5        [	        X!5      " USS9  g ! , (       d  f       N= f)	NabczThe 'sort' keyword only takesmatch   sortT)r   pytestraises
ValueErrorgetattr)selfr   idx1idx2s       r   test_setops_sort_validation+TestIndexSetOps.test_setops_sort_validation   s_     c3Z c3Z ]]:-LMD!$Q/ N 	d.	 NMs   A
A,c                 n   [        / SQ[        S9nUR                  USS  5      nUSS  n[        R                  " X#5        UR                  USS  S S S2   5      n[        R                  " X#5        UR                  USS  S S9nUn[        R                  " X#R                  5        UR                  USS  S S9n[        R                  " X#5        UR                  USS  S S S2   S S9n[        R                  " X#R                  5        UR                  USS  S S S2   S S9n[        R                  " X#5        g )N)   r      dtyper*   r   )	r   objectr   tmassert_index_equal_unionassert_numpy_array_equalvaluesr   )r$   idxresultexpecteds       r   !test_setops_preserve_object_dtype1TestIndexSetOps.test_setops_preserve_object_dtype$   s"   IV,!!#ab'*qr7
f/ !!#ab'$B$-0
f/CG$/
##FOO<3qr7.
f/ CGDbDM5
##FOO<3qr74R4=t4
f/r   c                     [        / SQ5      nUSS  nUS S nUR                  U5      n[        / SQ5      n[        R                  " XE5        g )Nr   r   r*   r   r   r   r+      )r   r*   r   r   r   r   )r   r   r0   r1   r$   indexfirstsecondr6   r7   s         r   test_union_baseTestIndexSetOps.test_union_base>   sJ    ./ab	rV$12
f/r   klassc                     [        / SQ5      nUSS  nUS S nUR                  U" UR                  5      5      n[        XR5      (       d   eg )Nr;   r+   r<   )r   r   r4   r   )r$   rC   r>   r?   r@   r6   s         r   test_union_different_type_base.TestIndexSetOps.test_union_different_type_baseH   sM     ./ab	rU6==12f,,,,r   c                    [        S[        R                  " S5      /5      n[        R                  " [
        5         UR                  US S 5      nS S S 5        [        R                  " WU5        [        R                  " [
        5         UR                  US S S S9nS S S 5        [        R                  " X!5        UR                  US S SS9n[        R                  " X!5        g ! , (       d  f       N= f! , (       d  f       N_= f)Nr*   2000r   F)r   pd	Timestampr0   assert_produces_warningRuntimeWarningr   r1   )r$   r5   r6   s      r   "test_union_sort_other_incomparable2TestIndexSetOps.test_union_sort_other_incomparableS   s    QV,-.''7YYs2Aw'F 8 	fc* ''7YYs2AwTY2F 8
f* 3r7/
f* 87 87s   C&
C7&
C47
Dc                     [        S[        R                  " S5      /5      n[        R                  " [
        SS9   UR                  US S SS9  S S S 5        g ! , (       d  f       g = f)Nr*   rH   z.*r   Tr   )r   rI   rJ   r    r!   	TypeErrorr   r$   r5   s     r   'test_union_sort_other_incomparable_true7TestIndexSetOps.test_union_sort_other_incomparable_truee   sJ    QV,-.]]9D1IIc"1gDI) 211s   A
A&c                     [        / SQ5      n[        / SQ5      n[        R                  " UR                  USS9U5        g )Nr   r   r   )r   r   r   Tr   r   r0   r1   r   )r$   r5   sorted_s      r   !test_intersection_equal_sort_true1TestIndexSetOps.test_intersection_equal_sort_truej   s6    O$(
c..s.>Hr   c                     [        / SQ5      nUS S nUS S nUc  [        / SQ5      O[        / SQ5      nUR                  XAS9n[        R                  " Xe5        g )Nr;   r<   r+   )r   r*   r   r   r   r*   r   r   r   r0   r1   )r$   r   r>   r?   r@   r7   r6   s          r   test_intersection_base&TestIndexSetOps.test_intersection_baseo   sY    ./bq	r)-5%5;M##F#6
f/r   c                     [        / SQ5      nUS S nUS S nUR                  U" UR                  5      US9n[        Xe5      (       d   eg )Nr;   r<   r+   r   )r   r   r4   r   )r$   rC   r   r>   r?   r@   r6   s          r   %test_intersection_different_type_base5TestIndexSetOps.test_intersection_different_type_basey   sT     ./bq	r##E&--$8t#Df----r   c                     [        / SQ5      R                  SS/5      n[        SS/5      n[        R                  " X5        g )N)r   r   r   r   r   r\   )r$   r6   r7   s      r   test_intersection_nosort(TestIndexSetOps.test_intersection_nosort   s7    '44c3Z@#s$
f/r   c                     [        / SQ5      n[        R                  " UR                  USS9U5        [        R                  " UR                  US S9U5        g )NrU   Fr   rV   rQ   s     r   test_intersection_equal_sort,TestIndexSetOps.test_intersection_equal_sort   sL    O$
c..s.?E
c..s.>Dr   c                     [        SSS5      [        SSS5      /n[        U[        S9n[        S/[        S9nUR                  X1S9n[	        U5      S:X  d   eg )	Ni  r   	   r   r,   aar   r   )r   r   r/   r   len)r$   r   dt_datesi1i2r6   s         r   test_intersection_str_dates+TestIndexSetOps.test_intersection_str_dates   sZ    T1a((4B*?@86*D6(/6{ar   zindex2,expected_arrBD)rq   rr   Ars   c                     [        / SQ5      n[        U5      nUR                  XS9nUc  UR                  5       n[        R                  " Xe5        g )N)rs   rq   rs   Cr   )r   r   sort_valuesr0   r1   )r$   index2expected_arrr   index1r7   r6   s          r   *test_intersection_non_monotonic_non_unique:TestIndexSetOps.test_intersection_non_monotonic_non_unique   sM     +,&$$V$7<++-H
f/r   c                     [        / SQ5      nUS S nUSS  nUR                  XA5      n[        / SQ5      nUc  [        [        U5      5      n[        R                  " XV5        g )Nr;      r+   r[   )r   r   r   r0   r1   )r$   r   r>   r?   r@   r6   r7   s          r   test_difference_base$TestIndexSetOps.test_difference_base   s_    ./bq	qr!!&/%<Yx01H
f/r   c                     [        / SQ5      nUS S nUSS  nUR                  U5      n[        / SQ5      n[        R                  " XE5        g )Nr;   r}   r+   )r   r*   r   r   r   )r   r   r0   r1   r=   s         r   test_symmetric_difference)TestIndexSetOps.test_symmetric_difference   sL    ./bq	qr++F3,-
f/r   zmethod,expected,sortr   r*   rs   r   rs   r*   rq   r   rq   numletS1r,   F)r   r   r   r   Nr   )r   r   r*   ru   r   r   r   ru   c                 (   [        [        R                  " / SQS[        4S/S95      n[        [        R                  " / SQS[        4S/S95      n[	        XA5      " XSS9nUR
                  S:X  d   e[        U5      n[        R                  " Xb5        g )Nr   r   r   r,   )r   r   r   r   r   r   r   r*   )r   nparrayintr#   ndimr0   r1   )r$   r   r7   r   ry   rw   r6   s          r   test_tuple_union_bug$TestIndexSetOps.test_tuple_union_bug   s    < HH8s|]3
 HHLs|]3
 (;{{a?
f/r   
first_listr   r   second_listz&first_name, second_name, expected_name))rs   rq   N)Nrq   N)rs   NNc                    [        XS9n[        X$S9nUR                  XS9n	[        U5      R                  U5      n
UcH  [        U5      S:  a9  [        U5      S:  a*  [        [	        U
5      US9n[
        R                  " X5        g [        XS9n[
        R                  " U	R                  5       UR                  5       5        g )N)namer   r   )r   r   setrk   sortedr0   r1   rv   )r$   r   r   
first_namesecond_nameexpected_namer   r?   r@   r   valsr7   s               r   test_union_name_preservation,TestIndexSetOps.test_union_name_preservation   s     j2{5F.:$$[1<C
Oa/C4Dq4HVD\>H!!%2T6H!!%"3"3"5x7K7K7MNr   zdiff_type, expectedr   r*   r   )r*   r   rq   ru   c                     [        / SQ5      n[        / SQ5      n[        X15      " U5      n[        U5      n[        R                  " XR5        g )N)r   r*   rs   rq   )r   r   rs   ru   )r   r#   r0   r1   )r$   	diff_typer7   r%   r&   r6   s         r   test_difference_object_type+TestIndexSetOps.test_difference_object_type   s@     %&%&)$/?
f/r    ) __name__
__module____qualname____firstlineno__r    markparametrizer'   r8   rA   r   r   r   listrE   rM   rR   rX   r]   r`   rc   rf   ro   r   rz   r~   r   r   r   r   r   __static_attributes__r   r   r   r   r      sf   [[Q//040 [[Wrxx&>?- @-+$*
I
0 [[Wrxx&>?. @.0
E
  [[
c

cU	#eO&<sCj%IJ0	0
00 [[ <!3<7  <!3<7  P!3<7 #	
:0;:0( [[\S#J+;<[[]c3Z,<=[[0@O	 > =O  [[
C	!$:<L#MN0	0r   r   )r   numpyr   r    pandasrI   r   r   pandas._testing_testingr0   pandas.core.algorithmsr   boolr   r   r   r   r   <module>r      s6         ,.$ .t0 t0r   