
     f*                     <   d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZ  ej6                   e	g d       e	g d      f e	dd	d
ej8                  g       e	d	d
dej8                  g      f edd      j;                  dej<                         edd      j;                  dej<                        f edd      j;                  dej<                         edd      j;                  dej<                        f eddd      j;                  dej<                         eddd      j;                  dej<                        fgd       d        Zej6                  d        Z ddZ!ddZ"ddZ# G d d      Z$y)    N)is_list_like)CategoricalIndexIntervalIntervalIndexPeriodSeries	Timedelta	Timestamp
date_rangeperiod_rangetimedelta_range)BooleanArrayIntervalArray)get_upcast_box)r         r   )            g              ?g       @g      @0 daysr   periods1 day2017010120170102
US/Easternr   tzc                 2    t        | d   j                        S )Nr   strdtypexs    _/var/www/html/py/new-venv/lib/python3.12/site-packages/pandas/tests/arithmetic/test_interval.py<lambda>r)   /   s    #adjj/     paramsidsc                     | j                   S )zC
    Fixture for building an IntervalArray from various dtypes
    param)requests    r(   left_right_dtypesr2      s    . ==r*   c                 8    | \  }}t        j                  ||      S )zZ
    Fixture to generate an IntervalArray of various dtypes containing NA if possible
    )r   from_arrays)r2   leftrights      r(   interval_arrayr7   8   s     
 $KD%$$T511r*   c                 B    t        t        j                  | ||            S N)r   r   r4   r5   r6   closeds      r(   create_categorical_intervalsr<   A   s    }00ufEFFr*   c                 B    t        t        j                  | ||            S r9   )r	   r   r4   r:   s      r(   create_series_intervalsr>   E   s    -++D%@AAr*   c           	      T    t        t        t        j                  | ||                  S r9   )r	   r   r   r4   r:   s      r(   #create_series_categorical_intervalsr@   I   s!    +m77eVLMNNr*   c                   p   e Zd Z ej                  ej                  ej                  g      d        Z ej                  e	j                  ej                  eeegg d      d        Zd Zd Zd Zd	 Zej(                  j+                  d
dddd ed       edd       ed       edd      g      d        Zd Zd Zej(                  j+                  d
 edd       e ed       ed             eddd       eddd      fdd  ed!      ej<                  f ed"d       ed      d#ej@                  fg      d$        Z!d% Z"ej(                  j+                  d
 ejF                  dd&'       ejF                  dd('       e$dd)       e$ddd*       e%dd)       e&ddd+       e' e(d,             e' e$dd)             ejR                   e(d-             ejR                  dd.d/ e*       ge*'      g
d0 1      d2        Z+ej(                  j+                  d3g d4      ej(                  j+                  d5e	e(g      d6               Z,ej(                  j+                  d7eejR                  e-j\                  fe/e/e-j`                  fg      d8        Z1ej(                  j+                  d9g d:      d;        Z2y/)<TestComparison)r,   c                     |j                   S r9   r/   selfr1   s     r(   opzTestComparison.opN   s    }}r*   )r   r   zCategorical[Interval]zSeries[Interval]zSeries[Categorical[Interval]]r+   c                     |j                   S )z
        Fixture for all pandas native interval constructors.
        To be used as the LHS of IntervalArray comparisons.
        r/   rD   s     r(   interval_constructorz#TestComparison.interval_constructorR   s    * }}r*   c           
      
   t        |      r|n|gt        |      z  }t        j                  t	        ||      D cg c]  \  }} |||       c}}      }t        |t              rt        ||j                        S |S c c}}w )zZ
        Helper that performs elementwise comparisons between `array` and `other`
        )index)r   lennparrayzip
isinstancer	   rJ   )rE   rF   r7   otherr'   yexpecteds          r(   elementwise_comparisonz%TestComparison.elementwise_comparisoni   sn     &e,5'C<O2O88#ne2LM$!QR1XMNeV$(%++66 Ns   A?
c                 "   |d   } |||      }| j                  |||      }t        j                  ||       t        |j                  d   |j
                  d         } |||      }| j                  |||      }t        j                  ||       y )Nr   r   )rS   tmassert_numpy_array_equalr   r5   r6   rE   rF   r7   rP   resultrR   s         r(   test_compare_scalar_intervalz+TestComparison.test_compare_scalar_intervals   s    q!NE*..r>5I
##FH5 ,,Q/1E1Ea1HINE*..r>5I
##FH5r*   c                     t        j                  t        d      t        dd      |      }t        dd|      } |||      }| j	                  |||      }t        j                  ||       y )Nr   r   r   r;   r   )r   r4   ranger   rS   rU   rV   )rE   rF   r;   other_closedr7   rP   rX   rR   s           r(   )test_compare_scalar_interval_mixed_closedz8TestComparison.test_compare_scalar_interval_mixed_closed   s_    &2258U1a[QWXAl3NE*..r>5I
##FH5r*   c                    |}t        j                  ||      } |||      }|t        j                  u r2t	        j
                  |j                  t              }t        ||      }	n| j                  |||      }	|t        u r|t        j                  u s#t        ||d      }
t        j                  |	|
      }	t        j                  ||	        |||      }t        j                  ||	       y )Nr%   T)rU   box_expectedpdNArL   onesshapeboolr   rS   r   r   assert_equal)rE   rF   r7   nulls_fixturebox_with_arrayboxobjrX   exprR   xboxrevs               r(   test_compare_scalar_naz%TestComparison.test_compare_scalar_na   s    oonc2C'BEE!''...d;C#C-H222~}UHu"%%!7!#}d;Dx6H
)$
X&r*   rP   r   r   Tfooz
2017-01-01r   )r!   r   Dc                 h     |||      }| j                  |||      }t        j                  ||       y r9   rS   rU   rV   rW   s         r(   test_compare_scalar_otherz(TestComparison.test_compare_scalar_other   s4     NE*..r>5I
##FH5r*   c                     ||j                   |j                        } |||      }| j                  |||      }t        j                  ||        ||j                   d d d   |j                  d d d         } |||      }| j                  |||      }t        j                  ||        |t
        j                  gdz  t
        j                  gdz        } |||      }| j                  |||      }t        j                  ||       y )Nr   )r5   r6   rS   rU   rg   rL   nan)rE   rF   r7   rH   rP   rX   rR   s          r(   test_compare_list_like_intervalz.TestComparison.test_compare_list_like_interval   s    $^%8%8.:N:NONE*..r>5I
) %"%~';';DbD'A
 NE*..r>5I
) %bffX\BFF8a<@NE*..r>5I
)r*   c                     t        j                  t        d      t        dd      |      } |t        d      t        dd      |      } |||      }| j                  |||      }t	        j
                  ||       y )Nr   r   r   r[   )r   r4   r\   rS   rU   rg   )	rE   rF   rH   r;   r]   r7   rP   rX   rR   s	            r(   ,test_compare_list_like_interval_mixed_closedz;TestComparison.test_compare_list_like_interval_mixed_closed   si     '2258U1a[QWX$U1XuQ{<PNE*..r>5I
)r*   r   r   z2 daysr   r   both
      neitherg      ?20170103r   bazc                 h     |||      }| j                  |||      }t        j                  ||       y r9   rs   rW   s         r(   test_compare_list_like_objectz,TestComparison.test_compare_list_like_object   s4    & NE*..r>5I
##FH5r*   c                 t    |gdz  } |||      }| j                  |||      }t        j                  ||       y )Nr   )rS   rU   rg   )rE   rF   r7   rh   rP   rX   rR   s          r(   test_compare_list_like_nanz)TestComparison.test_compare_list_like_nan   s<    !#NE*..r>5I
)r*   int64r`   float64r   r    )r   freqabababcdgQ	@Nc                 ,    t        | j                        S r9   r#   r&   s    r(   r)   zTestComparison.<lambda>   s    c!''l r*   )r-   c                 h     |||      }| j                  |||      }t        j                  ||       y r9   rs   rW   s         r(   test_compare_list_like_otherz+TestComparison.test_compare_list_like_other   s4    " NE*..r>5I
##FH5r*   length)r   r   r   other_constructorc                     t        j                  t        d      t        dd            } |t        dd      g|z        }t	        j
                  t        d      5   |||       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   zLengths must match to compare)match)r   r4   r\   r   pytestraises
ValueError)rE   rF   r   r   r7   rP   s         r(   #test_compare_length_mismatch_errorsz2TestComparison.test_compare_length_mismatch_errors  sf     '2258U1a[I!8Aq>"2V";<]]:-LM 	&~u%	& 	& 	&s   
A..A7z'constructor, expected_type, assert_funcc                    t        d      } |t        j                  |            }|d   } |||      } || j                  |||            }	 |||	       |d   } |||      } || j                  |||            }	 |||	       t	        j                  |      } |||      } || j                  |||            }	 |||	       |d   |d   dg} |||      } || j                  |||            }	 |||	       y )Nr   r   rp   )r\   r   from_breaksrS   r   )
rE   rF   constructorexpected_typeassert_funcbreaksrJ   rP   rX   rR   s
             r(   test_index_series_compatz'TestComparison.test_index_series_compat
  s    qM55f=> aE5! !<!<R!NOFH%q	E5! !<!<R!NOFH% ))&1E5! !<!<R!NOFH%q6!9e,E5! !<!<R!NOFH%r*   scalars)aFr   r   Nc                     t        ddg      }t        t        dd      t        dd      gd      }||k(  }t        j                  ||       y )NFr   r   r   intervalr`   )r	   r   rU   assert_series_equal)rE   r   rR   srX   s        r(   test_comparison_operationsz)TestComparison.test_comparison_operations,  sH     5%.)HQNHQN3:Fg
vx0r*   )3__name__
__module____qualname__r   fixtureoperatoreqnerF   r   r4   r   r<   r>   r@   rH   rS   rY   r^   ro   markparametrizer   r
   r   rt   rx   rz   r   rL   rw   rb   NaTr   r   aranger   r   r   r   listrM   objectr   r   rU   rV   r	   r   r   r    r*   r(   rB   rB   M   s   V^^HKK56 7 V^^%%%%(#/

 ! 66', [[l#l|4h<%		
66
*** [[ A7+Yx-@AAv&R+	 Yz*BFF3*6(#		
$6%$6
* [[BIIaw'BIIay)|Q/|Q<@Ha0qs;V%
<;<BHHT&\"BHHeT42&A	
 #   6! 6
 [[Xy1[[0=$2GH& I 2& [[1BHHb&A&ABVR334	
&&6 [[Y(BC1 D1r*   rB   )r6   )%r   numpyrL   r   pandas.core.dtypes.commonr   pandasrb   r   r   r   r   r   r	   r
   r   r   r   r   pandas._testing_testingrU   pandas.core.arraysr   r   pandas.tests.arithmetic.commonr   r   rw   insertr   r2   r7   r<   r>   r@   rB   r   r*   r(   <module>r      s      2      : 	|	eL12	S#rvv&	'S#rvv/F)GHHa077266BGQ/66q"&&A	

 z1-44Q?z1-44Q?	

 z1>EEaPz1>EEaP	
  	"#&'& 2 2GBOe1 e1r*   