
    Mh                        S SK Jr  S SKrS SKrS SKJr  S SKJr  S SK	J
r  S r\R                  " / SQS9S 5       r\R                  " \" S	5      \" S
5      S/S9S 5       r\R                  " \R                   " SSS9\R                   " SSS9\R                   " SSS9\R"                  " S S	S
SS\R$                  /SS9/S9S 5       r " S S5      rg)    )permutationsN)IntervalTree)IS64c                 x    [         R                  R                  [        (       + SS9n[         R                  " XS9$ )z}
Skip parameters in a parametrize on 32bit systems. Specifically used
here to skip leaf_size parameters related to GH 23440.
z$GH 23440: int type mismatch on 32bitreason)marks)pytestmarkskipifr   param)r   r	   s     b/var/www/html/env/lib/python3.13/site-packages/pandas/tests/indexes/interval/test_interval_tree.pyskipif_32bitr      s/    
 KK4x0VWE<<++    )int64float64uint64)paramsc                     U R                   $ Nr   requests    r   dtyper      s    ==r         
   c                     U R                   $ )zX
Fixture to specify IntervalTree leaf_size parameter; to be used with the
tree fixture.
r   r   s    r   	leaf_sizer      s     ==r      r   r   r   r         c                 4    U R                   n[        X"S-   US9$ )Nr   )r   )r   r   )r   r   lefts      r   treer&   #   s     ==DQh)<<r   c                      \ rS rSrS r\R                  R                  SSS/5      S 5       rS r	\R                  R                  SSS/5      S 5       r
S	 r\R                  R                  S
\" S5      \" S5      \" S5      S/5      S 5       r\R                  R                  S\R                  " / SQSS9\R                  " / SQ5      S4\R                  " / SQSS9\R                  " / SQ5      S4\R                  " SS\R                   /5      \R                  " SS\R                   /5      S4\R                  " / SQSS9\R                  " / SQ5      S4\R                  " SS\R                   /5      \R                  " SS\R                   /5      S4/5      \R                  R                  S S! \" \" S5      5       5       5      S" 5       5       r\R                  R                  S S# \" \" S5      5       5       5      S$ 5       r\R                  R                  S%\R                  " / SS9\R                  " / SS94\R                  " S/SS9\R                  " S/SS94\R                  " \R                   /5      \R                  " \R                   /5      4\R                  " \R                   /S-  5      \R                  " \R                   /S-  5      4/5      S& 5       r\R                  R-                  \(       + S'S(9S) 5       r\R                  R                  S\R2                  * S*/S*S+/S,4\R2                  * S-/S-S./S-4S-S./S.\R2                  /S,4S*S+/S+\R2                  /S+4/5      S/ 5       rS0rg1)2TestIntervalTree0   c                 ^   UR                  [        R                  " / SQ5      5      n[        R                  " / SQSS9n[        R                  " X#5        [
        R                  " [        SS9   UR                  [        R                  " S/5      5        S S S 5        g ! , (       d  f       g = f)N)      ?g      @      @)r   r#   intpr!   6'indexer does not intersect a unique set of intervals'matchg      @)get_indexernparraytmassert_numpy_array_equalr
   raisesKeyError)selfr&   resultexpecteds       r   test_get_indexer!TestIntervalTree.test_get_indexer1   su    !!"((?";<88Jf5
##F5]]T
 RXXse_-
 
 
s   .'B
B,z!dtype, target_value, target_dtype)r   l           r   )r   r-   r   c                    [         R                  " SS/US9[         R                  " SS/US9pT[        XE5      nUR                  [         R                  " U/US95      n[         R                  " S/SS9n[        R
                  " Xx5        g )Nr   r   r!   r   r-   r.   )r3   r4   r   r2   r5   r6   )	r9   r   target_valuetarget_dtyper%   rightr&   r:   r;   s	            r   test_get_indexer_overflow*TestIntervalTree.test_get_indexer_overflow;   sp    
 hh1vU3RXXq!fE5ReD(!!"((L>"NO88RD/
##F5r   c                 *   UR                  [        R                  " / SQ5      5      u  p#US S n[        R                  " S/SS9n[        R                  " XE5        [        R
                  " USS 5      n[        R                  " SS/SS9n[        R                  " XE5        [        R
                  " USS  5      n[        R                  " S/SS9n[        R                  " XE5        Un[        R                  " S/SS9n[        R                  " XE5        g )	N)r+          @r,   r   r   r.   r!   r"   r-   r   )get_indexer_non_uniquer3   r4   r5   r6   sort)r9   r&   indexermissingr:   r;   s         r   test_get_indexer_non_unique,TestIntervalTree.test_get_indexer_non_uniqueG   s    66rxx7PQ!88QCv.
##F51&88QF&1
##F5%88RD/
##F588QCv.
##F5r   c                 v   [         R                  " SS/US9[         R                  " SS/US9pT[        XE5      n[         R                  " U/US9nUR                  U5      u  p[         R                  " S/SS9n
[        R
                  " X5        [         R                  " S/SS9n[        R
                  " X5        g )Nr   r   r!   r   r"   r-   r.   )r3   r4   r   rF   r5   r6   )r9   r   r?   r@   r%   rA   r&   targetresult_indexerresult_missingexpected_indexerexpected_missings               r   $test_get_indexer_non_unique_overflow5TestIntervalTree.test_get_indexer_non_unique_overflowZ   s    
 hh1vU3RXXq!fE5ReD(<.=)-)D)DV)L&88RD7
##NE88QCv6
##NEr   c                 0   [         R                  " / SQUS9n[        X"S-   5      n[        R                  " [
        SS9   UR                  [         R                  " S/5      5        S S S 5        UR                  [         R                  " S/5      5      u  pE[         R                  " U5      n[         R                  " / SQSS9n[        R                  " Xg5        Un[         R                  " / SS9n[        R                  " Xg5        g ! , (       d  f       N= f)	N)r   r   r   r!   r   r/   r0         ?r   r   r   r.   )r3   r4   r   r
   r7   r8   r2   rF   rG   r5   r6   )r9   r   r%   r&   rH   rI   r:   r;   s           r   test_duplicates TestIntervalTree.test_duplicatesj   s    xx	/D(+]]T
 RXXse_-

  66rxxG!88IV4
##F588Bf-
##F5
 
s   'D
Dr   r   r   d   i'  c                    [         R                  " SSS9nUR                  S5      nS[         R                  " S5      -  R                  S5      n[	        X3S-   XS9n[
        R                  " XFR                  US-   5      5        UR                  (       a  UOUn[
        R                  " XvR                  US	-   5      5        UR                  (       a  UOUn[
        R                  " XvR                  US-   5      5        g )
Ni  r   r!   r.   r-   rU   )closedr   g      ?        )
r3   arangeastypeonesr   r5   r6   r2   closed_leftclosed_right)r9   r[   r   xfound	not_foundr&   r;   s           r   test_get_indexer_closed(TestIntervalTree.test_get_indexer_closed|   s     IId), "''$-'//7	A3wvK
##E+;+;AH+EF ,,5)
##H.>.>q3w.GH --59
##H.>.>q3w.GHr   zleft, right, expected)r   r   r#   r   r!   )r   r"   r    TrV   )r    r#   r"   r   r    r#   )r   r   r#   )r   r"   r    Fr   r"   orderc              #   8   #    U  H  n[        U5      v   M     g 7fr   list.0rb   s     r   	<genexpr>TestIntervalTree.<genexpr>        &O8N1tAww8N   c                 F    [        X2   XB   US9nUR                  nXuL d   eg )Nr[   r   is_overlapping)r9   r[   rg   r%   rA   r;   r&   r:   s           r   test_is_overlapping$TestIntervalTree.test_is_overlapping   s-     DKfE$$!!!r   c              #   8   #    U  H  n[        U5      v   M     g 7fr   ri   rk   s     r   rm   rn      ro   rp   c                     [         R                  " SSS9[         R                  " SS5      pC[        X2   XB   US9nUR                  nUS:H  nXgL d   eg)	z*shared endpoints are marked as overlappingr"   r   r!   r   r#   rr   bothN)r3   r]   r   rt   )r9   r[   rg   r%   rA   r&   r:   r;   s           r   test_is_overlapping_endpoints.TestIntervalTree.test_is_overlapping_endpoints   sS     ii1299Q?eDKfE$$V#!!!r   zleft, rightc                 :    [        X#US9nUR                  SL d   eg )Nrr   Frs   )r9   r[   r%   rA   r&   s        r   test_is_overlapping_trivial,TestIntervalTree.test_is_overlapping_trivial   s$     D7""e+++r   zGH 23440r   c                 H   [         R                  " SSS9[         R                  " [         R                  5      R                  /S-  p![        X5      nUR                  R                  nS[         R                  " [         R                  5      R                  -   S-  nXE:X  d   eg )Ne   r   r!   2   r   )r3   r]   iinfor   maxr   rootpivot)r9   r%   rA   r&   r:   r;   s         r   test_construction_overflow+TestIntervalTree.test_construction_overflow   sy     ii73bhhrxx6H6L6L5MPS5SeD( "((+///14!!!r   r+   rE   r\   g       g      c                 b    [        US-  US-  5      nUR                  R                  nXS:X  d   eg )Nr   )r   r   r   )r9   r%   rA   r;   r&   r:   s         r   !test_inf_bound_infinite_recursion2TestIntervalTree.test_inf_bound_infinite_recursion   s1     D3J4!!!r    N)__name__
__module____qualname____firstlineno__r<   r
   r   parametrizerB   rJ   rR   rW   r   re   r3   r4   nanr   rangeru   rz   r}   r   r   r   infr   __static_attributes__r   r   r   r(   r(   0   sg   . [[+	')@A6	66& [[+	')@A
F	
F6$ [[l1o|B'7c9JERII [[XXiw/)1DdKXXiw/)1DdKXXq!RVVn%rxxArvv'?FXXiw/)1DeLXXq!RVVn%rxxArvv'?G	
	 [[W&OU1X8N&OP" Q	" [[W&OU1X8N&OP" Q" [[XXb("((2W*EFXXqc)288QCw+GHXXrvvh266(!34XXrvvhl#RXXrvvhl%;<		
,,
 [[D4" 5" [[vvgs^c3Z-vvgt_tTlD1D\D"&&>3/3Z#rvv,		
""r   r(   )	itertoolsr   numpyr3   r
   pandas._libs.intervalr   pandas.compatr   pandas._testing_testingr5   r   fixturer   r   r]   r4   r   r&   r(   r   r   r   <module>r      s    "   .  , 56 7 Qa"=> ? 
		!7#
		!8$
		!9%
!Q1a(	:	==
`" `"r   