
    MhM              
          S SK Jr  S SKrS SKrS SKJs  Jr  S SK	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Jr  S SKJr  S SKJr  S SKJs  Jr   \RB                  " SS/S9S	 5       r" " S
 S5      r# " S S\#5      r$ " S S\#5      r% " S S\#5      r& " S S\#5      r'\RP                  RS                  S/ SQ5      S 5       r*S r+\RP                  RS                  SS\RX                  " S\RZ                  " S5      S9/5      S 5       r.g)    )partialN)is_unsigned_integer_dtype)IntervalDtype)
CategoricalCategoricalDtypeCategoricalIndexIndexIntervalIntervalIndex
date_rangenotnaperiod_rangetimedelta_range)IntervalArrayfooparamsc                     U R                   $ Nparam)requests    a/var/www/html/env/lib/python3.13/site-packages/pandas/tests/indexes/interval/test_constructors.pynamer      s    ==    c                   8   \ rS rSrSr\R                  " / SQ\R                  4\R                  " SSS9\R                  4\
" \R                  " SS\R                  S95      \R                  4\
" \R                  " SS	\R                  S95      \R                  4\
" \R                  " S
SS5      \R                  S9\R                  4\" SSS9S4\" SSSS9S4\" SSS9S4/S9S 5       rS r\R"                  R%                  S\
" / SQ\R                  S9S4\
" / SQ\R                  S9S4\
" / SQ\R                  S9S4\
" / SQ\R                  S9S4\" SSS9S4\" SSS9S4/5      S 5       r\R"                  R%                  S \
" / SQ\R                  S9\
" / SQ\R                  S9\
" / SQ\R                  S9\" SSS9\" SSS9/5      S! 5       r\R"                  R%                  S \R*                  /S"-  \R*                  /S#-  \R*                  /S$-  /5      S% 5       r\R"                  R%                  S / \R.                  " / SS9\R.                  " / S&S9\R.                  " / SS9\R.                  " / SS9\R.                  " / SS9/5      S' 5       r\R"                  R%                  S \" S(5      \" S)5      \R.                  " \" S)5      \S9\R.                  " \" S)5      S*S9/5      S+ 5       r\R"                  R%                  S,\\/5      S- 5       rS. r S/r!g0)1ConstructorTests!   z
Common tests for all variations of IntervalIndex construction. Input data
to be supplied in breaks format, then converted by the subclass method
get_kwargs_from_breaks to the expected format.
)         \   i  
   int64dtypei            g      ?20180101periodsz<M8[ns]z
US/Easternr-   tzzdatetime64[ns, US/Eastern]z1 dayz<m8[ns]r   c                     UR                   $ r   r   selfr   s     r   breaks_and_expected_subtype,ConstructorTests.breaks_and_expected_subtype(   s      }}r   c                 r   Uu  pVU R                  XS5      nU" SX4S.UD6nUR                  U:X  d   eUR                  U:X  d   eUR                  R                  U:X  d   e[
        R                  " UR                  [        US S US95        [
        R                  " UR                  [        USS  US95        g )N)closedr   r%       )
get_kwargs_from_breaksr6   r   r&   subtypetmassert_index_equalleftr	   right)	r2   constructorr3   r6   r   breaksexpected_subtyperesult_kwargsresults	            r   test_constructor!ConstructorTests.test_constructor:   s    #> 33FCGFGG}}&&&{{d"""||##'7777
fkk5DT+UV
fllE&*DT,UVr   zbreaks, subtype)r   r8      r      float64zdatetime64[ns]ztimedelta64[ns]
2017-01-01   c                     U R                  UR                  U5      5      nU" S0 UD6nU R                  U5      n[        US5      nU[        U5      4 H#  nU" SSU0UD6n	[        R
                  " X5        M%     g )Nr?   r&   r9   )r:   astyper   strr<   r=   )
r2   r@   rA   r;   expected_kwargsexpectedrC   iv_dtyper&   rD   s
             r   test_constructor_dtype'ConstructorTests.test_constructor_dtypeG   sy     55fmmG6LM1133F; '2H.E >u>>F!!&3 /r   rA   c                 &   [        UR                  5      nU R                  U5      nU[        U5      4 HI  n[        R
                  " S 5         U" SUSS.UD6nS S S 5        WR                  R                  S:X  a  MI   e   g ! , (       d  f       N/= f)Nr>   r&   r6   r9   )r   r&   r:   rN   r<   assert_produces_warningr6   )r2   r@   rA   rQ   rC   r&   rD   s          r   test_constructor_pass_closed-ConstructorTests.test_constructor_pass_closed]   s{     !.33F;H.E++D1$Q5Q=Q 2<<&&&000 /11s   B
B	rG   rH   2   c                 D   U R                  U5      nU" SSU0UD6n[        R                  n[        R                  " US S [        S9nUR
                  U:X  d   eUR                  R                  U:X  d   e[        R                  " [        R                  " U5      U5        g )Nr6   r7   r%   r9   )
r:   nprI   arrayobjectr6   r&   r;   r<   assert_numpy_array_equal)r2   r@   rA   r6   rC   rD   rB   expected_valuess           r   test_constructor_nan%ConstructorTests.test_constructor_nanr   s     33F;<F<m<::((6#2;f=}}&&&||##'7777
##BHHV$4oFr   uint64c                 z   U R                  U5      nU" SSU0UD6n[        R                  " / [        S9n[	        US[        R
                  5      nUR                  (       d   eUR                  U:X  d   eUR                  R                  U:X  d   e[        R                  " [        R                  " U5      U5        g )Nr6   r%   r&   r9   )r:   r[   r\   r]   getattrr$   emptyr6   r&   r;   r<   r^   )r2   r@   rA   r6   rC   rD   r_   rB   s           r   test_constructor_empty'ConstructorTests.test_constructor_empty   s     33F;<F<m<((2V4"67BHH=|||}}&&&||##'7777
##BHHV$4oFr   
0123456789
abcdefghijz<U1c                     Sn[         R                  " [        US9   U" S0 U R                  U5      D6  S S S 5        g ! , (       d  f       g = f)NIcategory, object, and string subtypes are not supported for IntervalIndexmatchr9   )pytestraises	TypeErrorr:   )r2   r@   rA   msgs       r   test_constructor_string(ConstructorTests.test_constructor_string   s>      	 ]]9C0>$55f=> 100s	   =
Acat_constructorc                     [         R                  " SSS9n[        R                  " U5      nU" U5      nU R	                  U5      nU" S0 UD6n[
        R                  " Xt5        g )Nr#   r$   r%   r9   )r[   aranger   from_breaksr:   r<   r=   )r2   r@   rt   rA   rP   
cat_breaksrC   rD   s           r   "test_constructor_categorical_valid3ConstructorTests.test_constructor_categorical_valid   sY     2W- ,,V4$V,
33J?-}-
f/r   c                    U R                  [        S5      5      nSn[        R                  " [        US9   U" SSS0UD6  S S S 5        Sn[        R                  " [
        US9   U" SSS0UD6  S S S 5        S	n[        R                  " [
        US9   U" SSS0UD6  S S S 5        [        S
SS9nU R                  U5      nSn[        R                  " [        US9   U" S0 UD6  S S S 5        U R                  [        SSS5      5      nSn[        R                  " [        US9   U" S0 UD6  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr#   z8closed must be one of 'right', 'left', 'both', 'neither'rl   r6   invalidz)dtype must be an IntervalDtype, got int64r&   r$   z(data type ["']invalid["'] not understoodz
2000-01-01r,   z:Period dtypes are not supported, use a PeriodIndex insteadr7   z+left side of interval must be <= right sider9   )r:   rangern   ro   
ValueErrorrp   r   )r2   r@   fillerrq   r-   periods_kwargsdecreasing_kwargss          r   test_generic_errors$ConstructorTests.test_generic_errors   sF   ,,U2Y7 I]]:S13y3F3 2 :]]9C00g00 1 ;]]9C02i262 1 |R844W=J]]:S1).) 2 !77b"b8IJ;]]:S1,+, 21/ 21
 10
 10 21 21s;   D5$EE	E(#	E95
E
E
E%(
E69
Fr9   N)"__name__
__module____qualname____firstlineno____doc__rn   fixturer[   r$   rv   r	   rb   rI   r   r   r3   rE   markparametrizerR   rW   nanr`   r\   rf   tuplelistr]   rr   r   r   ry   r   __static_attributes__r9   r   r   r   r   !   sF    ^^!288,YYr)2884299S"BHH56A299R29956		B299RS)<bjjI
B/;:rlC, Wb19=
W [[?"((3Y??"((35EF?"((35FG?"**5w?a0':Wa0':	

	4
	4 [[/2/3/4|Q/GQ/	
		1		1 [[X1rvvhlRVVHrM'RS
G T
G [[HHRw'HHRx(HHRy)HHR/0HHR01	

G
G [[,HHT,'v6HHT,'u5		
?? [[.>N0OP	0 Q	0-r   r   c                   4   \ rS rSrSr\R                  S 5       rSS jrS r	\R                  R                  S\R                  \R                  4\R                  \R                  4/5      S 5       r\R                  R                  S\\/5      S	 5       rS
rg)TestFromArrays   z+Tests specific to IntervalIndex.from_arraysc                 "    [         R                  $ r   )r   from_arraysr2   s    r   r@   TestFromArrays.constructor       (((r   c                     USS USS S.$ )z
converts intervals in breaks format to a dictionary of kwargs to
specific to the format expected by IntervalIndex.from_arrays
Nr7   r8   )r>   r?   r9   r2   rA   r6   s      r   r:   %TestFromArrays.get_kwargs_from_breaks   s    
 sfQRj99r   c                 t   [        [        S5      SS9nSn[        R                  " [        US9   [
        R                  " US S USS  5        S S S 5        / SQnS	S
/nSn[        R                  " [        US9   [
        R                  " X45        S S S 5        g ! , (       d  f       NQ= f! , (       d  f       g = f)N
01234abcdeTorderedrk   rl   r7   r8   )r   r8   rG   rG   r   z(left and right must have the same length)r   r   rn   ro   rp   r   r   r~   )r2   datarq   r>   r?   s        r   test_constructor_errors&TestFromArrays.test_constructor_errors   s    4-t<  	 ]]9C0%%d3Biab: 1 A8]]:S1%%d2 21 10 21s   B8B)
B&)
B7zleft_subtype, right_subtypec                    [         R                  " SUS9n[         R                  " SSUS9n[        R                  " X45      n[	        U[         R
                  S9n[	        U[         R
                  S9n[         R
                  n[        R                  " UR                  U5        [        R                  " UR                  U5        UR                  R                  U:X  d   eg)z:mixed int/float left/right results in float for both sides	   r%   r8   r#   N)r[   rv   r   r   r	   rI   r<   r=   r>   r?   r&   r;   )	r2   left_subtyperight_subtyper>   r?   rD   expected_leftexpected_rightrB   s	            r   test_mixed_float_int#TestFromArrays.test_mixed_float_int   s    
 yy,/		!R}5**47d"**5uBJJ7::
fkk=9
fllN;||##'7777r   interval_clsc                 @   [        SSSS9n[        SSSS9nUR                  X#5      nUR                  UR                  S5      U5      n[        R                  " XE5        X"S   -
  nX2S   -
  nUR                  Xg5      nUR                  UR                  S5      U5      n	[        R                  " X5        UR                  S5      n
UR                  S5      nUR                  X5      nUR                  U
R                  S5      U5      n[        R                  " X5        g )	Nz
2016-01-01r   s)r-   unitrJ   msr   UTC)r   r   as_unitr<   assert_equaltz_localize)r2   r   r>   r?   rD   rP   left2right2result2	expected2left3right3result3	expected3s                 r   .test_from_arrays_mismatched_datetimelike_resos=TestFromArrays.test_from_arrays_mismatched_datetimelike_resos  s     ,<<>))$6++DLL,>F
) Awa**59 ,,U]]4-@&I	
+   '""5)**59 ,,U]]4-@&I	
+r   r9   Nr?   )r   r   r   r   r   rn   r   r@   r:   r   r   r   r[   r$   rI   r   r   r   r   r   r9   r   r   r   r      s    5^^) ):3" [[%2::(>RXX@V'W88 [[^m]-KL, M,r   r   c                   X    \ rS rSrSr\R                  S 5       rS
S jrS r	S r
S rSrg	)TestFromBreaksi  z+Tests specific to IntervalIndex.from_breaksc                 "    [         R                  $ r   )r   rw   r   s    r   r@   TestFromBreaks.constructor!  r   r   c                 
    SU0$ )z
converts intervals in breaks format to a dictionary of kwargs to
specific to the format expected by IntervalIndex.from_breaks
rA   r9   r   s      r   r:   %TestFromBreaks.get_kwargs_from_breaks%  s    
 &!!r   c                     [        [        S5      SS9nSn[        R                  " [        US9   [
        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nr   Tr   rk   rl   )r   r   rn   ro   rp   r   rw   )r2   r   rq   s      r   r   &TestFromBreaks.test_constructor_errors,  sG    4-t<  	 ]]9C0%%d+ 100s   A
Ac                     S/n[         R                  " U5      n[         R                  " / 5      n[        R                  " X#5        g)z3breaks of length one produce an empty IntervalIndexr   N)r   rw   r<   r=   )r2   rA   rD   rP   s       r   test_length_oneTestFromBreaks.test_length_one6  s7    **62 ,,R0
f/r   c                     [         R                  " S5      n[        R                  " U5      R                  nUR
                  R                  b0  UR
                  R                  UR                  R                  Ld   eg g )NrK   )r[   rv   r   rw   _data_leftbase_right)r2   rA   rD   s      r   test_left_right_dont_share_data.TestFromBreaks.test_left_right_dont_share_data=  s\    1**6288||  (FLL,=,=V]]EWEW,WWW,W(r   r9   Nr   )r   r   r   r   r   rn   r   r@   r:   r   r   r   r   r9   r   r   r   r     s0    5^^) )",0Xr   r   c                   R    \ rS rSrSr\R                  S 5       rS	S jrS r	S r
Srg)
TestFromTuplesiD  z+Tests specific to IntervalIndex.from_tuplesc                 "    [         R                  $ r   )r   from_tuplesr   s    r   r@   TestFromTuples.constructorG  r   r   c                    [        U5      (       a#  [        R                  " UR                   S35        [	        U5      S:X  a  SU0$ [        [        USS USS 5      5      n[        U[
        [        45      (       a  SU0$ [        [        USS5      [        5      (       a  SUR                  U5      0$ S[        R                  " U5      0$ )z
converts intervals in breaks format to a dictionary of kwargs to
specific to the format expected by IntervalIndex.from_tuples
z- not relevant IntervalIndex.from_tuples testsr   r   Nr7   r8   r&   )r   rn   skipr&   lenr   zip
isinstancer   rd   r   _constructorcomasarray_tuplesafe)r2   rA   r6   tupless       r   r:   %TestFromTuples.get_kwargs_from_breaksK  s    
 %V,,KK6<<.(UVWv;!F##c&"+vabz23ftUm,,F##68HIIF//788--f566r   c                 (   / SQnSn[         R                  " [        UR                  US9S9   [        R
                  " U5        S S S 5        / SQnSn[         R                  " [        UR                  US9S9   [        R
                  " U5        S S S 5        / SQn[         R                  " [        UR                  US9S9   [        R
                  " U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Ni= f! , (       d  f       g = f)N)r   r8   rG   r   rH   z5IntervalIndex.from_tuples received an invalid item, 2)trl   )r   )rG   r   z>IntervalIndex.from_tuples requires tuples of length 2, got {t})r   )rG   r   rH   )rK      )rn   ro   rp   formatr   r   r~   )r2   r   rq   s      r   r   &TestFromTuples.test_constructor_errors]  s    $E]]9CJJJ,@A%%f- B (N]]:SZZ&Z-AB%%f- C -]]:SZZ&Z-AB%%f- CB BA CB CBs#   C!8C2D!
C/2
D 
Dc                     S[         R                  [         R                  4S/n[        R                  " U5      n[        R                  " S[         R                  S/5      n[        R
                  " X#5        g )Nr   )rG   r   )r[   r   r   r   r<   r=   )r2   na_tupleidx_na_tupleidx_na_elements       r   test_na_tuplesTestFromTuples.test_na_tuplesn  sT    RVVRVV,f5$00:&22FBFFF3KL
l;r   r9   Nr   )r   r   r   r   r   rn   r   r@   r:   r   r   r   r9   r   r   r   r   D  s*    5^^) )7$."<r   r   c                      \ rS rSrSr\R                  " \\" \	SS9/SS/S9S 5       r
\R                  S	 5       rSS jrS rS rS r\R                   R#                  S/ S4\R&                  \R&                  /S4\" SSSS9\" SSSS9/S4\" SSSS9\" SSS
S9/S4\R*                  " \" S5      SS9S
4/5      S 5       r\R                   R#                  S\\R2                  \\/5      S 5       rS rSrg)TestClassConstructorsiv  z6Tests specific to the IntervalIndex/Index constructorsintervalr%   r   r	   )r   idsc                     UR                   $ r   r   r1   s     r   klassTestClassConstructors.klassy  s     }}r   c                     [         $ r   )r   r   s    r   r@   !TestClassConstructors.constructor  s    r   r?   c           	         [        U5      (       a#  [        R                  " UR                   S35        [	        U5      S:X  a  SU0$ [        USS USS 5       VVs/ s H#  u  p4[        U5      (       a  [        X4U5      OUPM%     nnn[        U[        5      (       a  SU0$ [        [        USS5      [        5      (       a  SUR                  U5      0$ S[        R                  " U[        S90$ s  snnf )	z
converts intervals in breaks format to a dictionary of kwargs to
specific to the format expected by the IntervalIndex/Index constructors
z) not relevant for class constructor testsr   r   Nr7   r8   r&   r%   )r   rn   r   r&   r   r   r   r
   r   r   rd   r   r   r[   r\   r]   )r2   rA   r6   r>   r?   ivss         r   r:   ,TestClassConstructors.get_kwargs_from_breaks  s    
 %V,,KK6<<.(QRSv;!F##  #6#2;qr
;
; .34[[HT&)dB; 	 

 fd##C= 68HIIF//455F344
s   *C0c                     g)z
override the base class implementation since errors are handled
differently; checks unnecessary since caught at the Interval level
Nr9   )r2   r@   s     r   r   )TestClassConstructors.test_generic_errors  s    r   c                     g r   r9   r   s    r   rr   -TestClassConstructors.test_constructor_string  s     	r   c                    [        SSSS9[        SSSS9/nSn[        R                  " [        US	9   U" U5        S S S 5        S
n[        R                  " [        US	9   U" S5        S S S 5        Sn[        R                  " [        US	9   U" SS/5        S S S 5        g ! , (       d  f       Ni= f! , (       d  f       NN= f! , (       d  f       g = f)Nr   r8   r?   r6   rG   r   r>   z-intervals must all be closed on the same siderl   zX(IntervalIndex|Index)\(...\) must be called with a collection of some kind, 5 was passedrK   z?type <class 'numpy.int(32|64)'> with value 0 is not an interval)r
   rn   ro   r~   rp   )r2   r   r   rq   s       r   r   -TestClassConstructors.test_constructor_errors  s    1W-x1V/LM=]]:S1#J 2
& 	 ]]9C0!H 1 P]]9C01a&M 10 21 10
 10s#   	B	B/
C 
B,/
B= 
Czdata, closedbothneitherr   r   r   rG   rK   r>   c                 .   [        U[        5      (       a  UR                  5       nO:U Vs/ s H-  n[        U5      (       a  UR                  UR
                  4OUPM/     nn[        R                  " XCS9nU" X#S9n[        R                  " Xv5        g s  snf )Nr   )	r   r   	to_tuplesr   r>   r?   r   r<   r=   )r2   r@   r   r6   r   ivrP   rD   s           r   test_override_inferred_closed3TestClassConstructors.test_override_inferred_closed  sy    $ dM**^^%FIMN2U2YYrww)B>FN ,,VCT1
f/ Os   4Bvalues_constructorc                    [        SS5      [        SS5      [        SS5      /nU" U5      n[        U[        S9n[        U5      [        L d   e[        R
                  " UR                  [        R                  " U5      5        g )Nr   r8   rG   r   r%   )	r
   r	   r]   typer<   r^   valuesr[   r\   )r2   r  	intervalsr	  rD   s        r   test_index_object_dtype-TestClassConstructors.test_index_object_dtype  sg    
 a^Xa^Xa^D	#I.vV,F|u$$$
##FMM288F3CDr   c           	          [        SSSS9[        SSSS9[        SSSS9[        SS	S
S9/n[        U5      n[        U[        S9n[        R                  " X#5        g )Nr   r8   r>   r   rG   r?   r   r   rH   r   r%   )r
   r	   r]   r<   r=   )r2   r
  rD   rP   s       r   test_index_mixed_closed-TestClassConstructors.test_index_mixed_closed  sa     Q&)Q'*Q),Q&)	
	 y!&1
f/r   r9   Nr   )r   r   r   r   r   rn   r   r   r   r	   r   r@   r:   r   rr   r   r   r   r[   r   r
   rw   r}   r  r   r\   r   r  r  r   r9   r   r   r   r   v  sG   @^^wuJ?@g&	 ^^ 5,( [[Lffbffy)!Qy18Aq3ST
 !Qv.Ag0NO &&uQx?I	
 0! 0 [[tRXX}mLEE
0r   r   timezone)r   z
US/PacificGMTc                     [        SSU S9nSU  SU S3n[        R                  " SS/SS	/UUS
9n[        R                  " US S USS  US9n[        R                  " XE5        g )N2022r   r.   zinterval[datetime64[ns, z], ]z
2022-01-01z
2022-01-02z
2022-01-03r6   r&   r7   r8   r   )r   r   r   r<   r=   )r  inclusive_endpoints_fixturedatesr&   rD   rP   s         r   test_interval_index_subtyper    s     vqX6E&xj4O3PPQRE&&	|$	|$*	F ((cr
E!"I&AH &+r   c                  4   [        [        R                  S5      n Sn[        R                  " [
        US9   [        / U SS9  S S S 5        [        R                  " [
        US9   [        / U SS9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr>   z*closed keyword does not match dtype.closedrl   r   rU   )r   r[   r$   rn   ro   r~   r   r   )r&   rq   s     r   test_dtype_closed_mismatchr    sn     "((F+E
6C	z	-bi8 
. 
z	-bi8 
.	- 
.	- 
.	-s   A8#B	8
B	
Br&   Float64zfloat64[pyarrow]pyarrow)marksc                     SS/n[        U SS9n[        R                  " USUS9nUR                  U:X  d   e[        R                  " USS9R	                  U5      n[
        R                  " X45        g )N)g        皙?)r  g333333?r>   )r;   r6   r  r   )r   r   r   r&   rM   r<   r=   )r&   binsinterval_dtyperD   rP   s        r   test_ea_dtyper"    sk     
#D"5@N&&tF.QF<<>)))((f=DD^TH&+r   )/	functoolsr   numpyr[   rn   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   pandasr   r   r   r	   r
   r   r   r   r   r   pandas._testing_testingr<   pandas.core.arraysr   pandas.core.commoncorecommonr   r   r   r   r   r   r   r   r   r   r  r  r   
skip_if_nor"  r9   r   r   <module>r3     s      ) ) ? 3    ,     e}% &r- r-jE,% E,P#X% #XL/<% /<du0, u0p %AB, C, 
9 /r}}Y7OPQ,	,r   