
    I jM              
          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    " S S5      r! " S	 S
\!5      r" " S S\!5      r# " S S\!5      r$ " S S\!5      r%\RL                  RO                  S/ SQ5      S 5       r(S r)\RL                  RO                  SS\RT                  " S\RV                  " 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)IntervalArrayc                      \ rS rSrSr\R                  R                  S/ 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S9S4\" SSSSS9S4\" SSS9S4/5      \R                  R                  SSS/5      S 5       5       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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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                  S0\\/5      S1 5       rS2 rS3rg)4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.
breaks_and_expected_subtype)         \   i  
   int64dtypei            g      ?20180101nsperiodsunitzM8[ns]z
US/Easternr$   tzr%   zdatetime64[ns, US/Eastern]z1 dayr$   zm8[us]nameNfooc                 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_breaksr,   r)   r   subtypetmassert_index_equalleftr	   right)	selfconstructorr   r,   r)   breaksexpected_subtyperesult_kwargsresults	            ڀ/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/tests/indexes/interval/test_constructors.pytest_constructor!ConstructorTests.test_constructor#   s    $ $? 33FCGFGG}}&&&{{d"""||##'7777
fkk5DT+UV
fllE&*DT,UV    zbreaks, subtype)r   r.      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 )Nr5   r   r/   )r0   astyper   strr2   r3   )
r6   r7   r8   r1   expected_kwargsexpectedr:   iv_dtyper   r;   s
             r<   test_constructor_dtype'ConstructorTests.test_constructor_dtypeA   sy     55fmmG6LM1133F; '2H.E >u>>F!!&3 /r?   r8   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)Nr4   r   r,   r/   )r   r   r0   rG   r2   assert_produces_warningr,   )r6   r7   r8   rJ   r:   r   r;   s          r<   test_constructor_pass_closed-ConstructorTests.test_constructor_pass_closedW   s{     !.33F;H.E++D1$Q5Q=Q 2<<&&&000 /11s   B
B	r@   rA   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 )Nr,   r-   r   r/   )
r0   nprB   arrayobjectr,   r   r1   r2   assert_numpy_array_equal)r6   r7   r8   r,   r:   r;   r9   expected_valuess           r<   test_constructor_nan%ConstructorTests.test_constructor_nanl   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 )Nr,   r   r   r/   )r0   rT   rU   rV   getattrr   emptyr,   r   r1   r2   rW   )r6   r7   r8   r,   r:   r;   rX   r9   s           r<   test_constructor_empty'ConstructorTests.test_constructor_emptyy   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matchr/   )pytestraises	TypeErrorr0   )r6   r7   r8   msgs       r<   test_constructor_string(ConstructorTests.test_constructor_string   s?     X 	 ]]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   r/   )rT   aranger   from_breaksr0   r2   r3   )r6   r7   rm   r8   rI   
cat_breaksr:   r;   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're   r,   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 insteadr-   z+left side of interval must be <= right sider/   )r0   rangerg   rh   
ValueErrorri   r   )r6   r7   fillerrj   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r/   ) __name__
__module____qualname____firstlineno____doc__rg   markparametrizerT   r   ro   r	   r[   rB   r   r   r=   rK   rP   nanrY   rU   r_   tuplelistrV   rk   r   r   rr   r{   __static_attributes__r/   r?   r<   r   r      sr    [[%!288,YYr)2884299S"BHH56A299R29956		B299RS)<bjjI
BT:HE:rlN, Wb18<	
  [[VdE]3W 4!"W [[?"((3Y??"((35EF?"((35FG?"**5w?ad;WEWa0':	

	4
	4 [[/2/3/4|QT: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                  $ )z1Fixture for IntervalIndex.from_arrays constructor)r   from_arraysr6   s    r<   r7   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
Nr-   r.   )r4   r5   r/   r6   r8   r,   s      r<   r0   %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orderedrd   re   r-   r.   )r   r.   r@   r@   r   z(left and right must have the same length)r   r   rg   rh   ri   r   r   rw   )r6   datarj   r4   r5   s        r<   test_constructor_errors&TestFromArrays.test_constructor_errors   s    4-t<W 	 ]]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   r.   r   N)rT   ro   r   r   r	   rB   r2   r3   r4   r5   r   r1   )	r6   left_subtyperight_subtyper4   r5   r;   expected_leftexpected_rightr9   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   sr#   rC   msr   UTC)r   r   as_unitr2   assert_equaltz_localize)r6   r   r4   r5   r;   rI   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?   r/   Nr5   )r}   r~   r   r   r   rg   fixturer7   r0   r   r   r   rT   r   rB   r   r   r   r   r   r/   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                  $ )z1Fixture for IntervalIndex.from_breaks constructor)r   rp   r   s    r<   r7   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
r8   r/   r   s      r<   r0   %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   rd   re   )r   r   rg   rh   ri   r   rp   )r6   r   rj   s      r<   r   &TestFromBreaks.test_constructor_errors&  sE    4-t<W 	 ]]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   rp   r2   r3   )r6   r8   r;   rI   s       r<   test_length_oneTestFromBreaks.test_length_one/  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 )NrD   )rT   ro   r   rp   _data_leftbase_right)r6   r8   r;   s      r<   test_left_right_dont_share_data.TestFromBreaks.test_left_right_dont_share_data6  s\    1**6288||  (FLL,=,=V]]EWEW,WWW,W(r?   r/   Nr   )r}   r~   r   r   r   rg   r   r7   r0   r   r   r   r   r/   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)
TestFromTuplesi=  z+Tests specific to IntervalIndex.from_tuplesc                 "    [         R                  $ )z1Fixture for IntervalIndex.from_tuples constructor)r   from_tuplesr   s    r<   r7   TestFromTuples.constructor@  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   Nr-   r.   r   )r   rg   skipr   lenr   zip
isinstancer   r]   r   _constructorcomasarray_tuplesafe)r6   r8   r,   tupless       r<   r0   %TestFromTuples.get_kwargs_from_breaksE  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   r.   r@   r   rA   z5IntervalIndex.from_tuples received an invalid item, 2)tre   )r   )r@   r   z>IntervalIndex.from_tuples requires tuples of length 2, got {t})r   )r@   r   rA   )rD      )rg   rh   ri   formatr   r   rw   )r6   r   rj   s      r<   r   &TestFromTuples.test_constructor_errorsW  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   )r@   r   )rT   r   r   r   r2   r3   )r6   na_tupleidx_na_tupleidx_na_elements       r<   test_na_tuplesTestFromTuples.test_na_tuplesh  sT    RVVRVV,f5$00:&22FBFFF3KL
l;r?   r/   Nr   )r}   r~   r   r   r   rg   r   r7   r0   r   r   r   r/   r?   r<   r   r   =  s*    5^^) )7$."<r?   r   c                      \ rS rSrSr\R                  S 5       rSS jrS r	S r
\R                  R                  S\\" \S	S
9/SS/S9S 5       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\\R0                  \\/5      S 5       rS rSrg)TestClassConstructorsip  z6Tests specific to the IntervalIndex/Index constructorsc                     [         $ )z+Fixture for IntervalIndex class constructor)r   r   s    r<   r7   !TestClassConstructors.constructors  s
     r?   r5   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   Nr-   r.   r   r   )r   rg   r   r   r   r   r   r
   r   r   r]   r   r   rT   rU   rV   )r6   r8   r,   r4   r5   ivss         r<   r0   ,TestClassConstructors.get_kwargs_from_breaksx  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
Nr/   )r6   r7   s     r<   r{   )TestClassConstructors.test_generic_errors  s    r?   c                     g )Nr/   r   s    r<   rk   -TestClassConstructors.test_constructor_string  s     	r?   klassintervalr   r   r	   )idsc                    [        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   r.   r5   r,   r@   r   r4   z-intervals must all be closed on the same sidere   zX(IntervalIndex|Index)\(...\) must be called with a collection of some kind, 5 was passedrD   z?type <class 'numpy.int(32|64)'> with value 0 is not an interval)r
   rg   rh   rw   ri   )r6   r   r   rj   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   r@   rD   r4   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   r4   r5   r   r2   r3   )r6   r7   r   r,   r   ivrI   r;   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   r.   r@   r   r   )	r
   r	   rV   typer2   rW   valuesrT   rU   )r6   r   	intervalsr   r;   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   r.   r4   r   r@   r5   r   r   rA   r   r   )r
   r	   rV   r2   r3   )r6   r   r;   rI   s       r<   test_index_mixed_closed-TestClassConstructors.test_index_mixed_closed  sa     Q&)Q'*Q),Q&)	
	 y!&1
f/r?   r/   Nr   )r}   r~   r   r   r   rg   r   r7   r0   r{   rk   r   r   r   r   r	   r   rT   r   r
   rp   rv   r   r   rU   r   r  r  r   r/   r?   r<   r   r   p  sP   @^^ 5, [[	Z89g&  

( [[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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"   r&   zinterval[datetime64[ns, z], ]z
2022-01-01z
2022-01-02z
2022-01-03r,   r   r-   r.   r   )r   r   r   r2   r3   )r  inclusive_endpoints_fixturedatesr   r;   rI   s         r<   test_interval_index_subtyper    s     vqXDAE&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)Nr4   z*closed keyword does not match dtype.closedre   r   rN   )r   rT   r   rg   rh   rw   r   r   )r   rj   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?r4   )r1   r,   r  r   )r   r   r   r   rF   r2   r3   )r   binsinterval_dtyper;   rI   s        r<   test_ea_dtyper    sk     
#D"5@N&&tF.QF<<>)))((f=DD^TH&+r?   )-	functoolsr   numpyrT   rg   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_testingr2   pandas.core.arraysr   pandas.core.commoncorecommonr   r   r   r   r   r   r   r   r  r  param
skip_if_nor  r/   r?   r<   <module>r*     s       ) ) ? 3    ,    p- p-fE,% E,P#X% #XL0<% 0<fs0, s0l %AB, C, 
9 /r}}Y7OPQ,	,r?   