
    .im9                         d Z ddlmZmZmZ ddlmZ ddlZddlZddl	m
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mZmZmZmZmZ ddlmZ  G d d      Z G d	 d
      Z  G d d      Z! G d d      Z"y)z7
Tests for the Index constructor conducting inference.
    )datetime	timedeltatimezone)DecimalN)maybe_get_tz)NACategoricalCategoricalIndexDatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodIndexSeriesTimedeltaIndex	Timestamparray
date_rangeperiod_rangetimedelta_rangec            
       ^   e Zd Zd Zd Zej                  j                  dede	j                   ed      g      d        Zej                  j                  dde	j                  g      ej                  j                  deeeg      d	               Zd
 Zej                  j                  dddg      ej                  j                  dg d e	j$                  g de      g      d               Zd Zd Zd Zej                  j                  dddg      ej                  j                  ded e	j2                  d      fed e	j6                  d      fg      d               Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zd  Zy)!TestIndexConstructorInferencec                     t        j                  ddgt              }t        |      }|j                  t        k(  sJ t        |      j                  t        k(  sJ y )NTFdtype)npr   objectr   r   r   selfarrress      a/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/indexes/test_index_new.pytest_object_all_boolsz3TestIndexConstructorInference.test_object_all_bools'   sK    hhe}F3CjyyF""" c{  F***    c                     t        j                  t        d      t        d      gt              }t	        |      }|j
                  t        k(  sJ t        |      j
                  t        k(  sJ y )N      r   )r   r   complexr   r   r   r   r   s      r#   test_object_all_complexz5TestIndexConstructorInference.test_object_all_complex0   sT    hh
GAJ/v>CjyyF""" c{  F***r%   valNnanc                 `   t         |g}t        |      }|j                  dk(  r|j                         j	                         sJ t        |d d d         }|j                  dk(  r|j                         j	                         sJ t        t        j                  |t                    }|j                  dk(  r|j                         j	                         sJ t        t        j                  |t              d d d         }|j                  dk(  r|j                         j	                         sJ y )Nzdatetime64[s]r   )r   r   r   isnaallr   r   r   )r    r+   valuesidxs       r#   test_infer_natz,TestIndexConstructorInference.test_infer_nat9   s     sFmyyO+
0@@@F4R4L!yyO+
0@@@BHHV623yyO+
0@@@BHHV624R489yyO+
0@@@0@r%   na_valuevtypec                     dd|fg}t         ||            }t        j                  |      }t        j                  ||       y )N)r'   two      @)r   r   from_tuplestmassert_index_equal)r    r4   r5   r1   resultexpecteds         r#   !test_construction_list_tuples_nanz?TestIndexConstructorInference.test_construction_list_tuples_nanK   s@     sHo.uV}%))&1
fh/r%   c                 l    t        g d|      }t        g d|      }t        j                  ||       y )N)r   r'   r(      r   )g              ?       @r8   r   r:   r;   )r    any_int_numpy_dtyper=   r<   s       r#    test_constructor_int_dtype_floatz>TestIndexConstructorInference.test_constructor_int_dtype_floatT   s-    -@A+3FG
fh/r%   
cast_indexTFvals)TFTr   c                     |rt        |t              }nt        |      }t        |      t         u sJ |j                  t        k(  sJ y Nr   )r   booltyper   r    rF   rG   indexs       r#   !test_constructor_dtypes_to_objectz?TestIndexConstructorInference.test_constructor_dtypes_to_objectZ   s@    
 $d+E$KEE{e###{{d"""r%   c                 r    t        t        d            }t        |t              }t	        |t               rJ y N   r   )r
   ranger   r   
isinstance)r    cir<   s      r#   &test_constructor_categorical_to_objectzDTestIndexConstructorInference.test_constructor_categorical_to_objectg   s0    eAh'r(f&67777r%   c                     t        ddd      }t        |      }t        j                  ||       t	        |t
              sJ y )Nz2012-1-1Mr@   )freqperiods)r   r   r:   r;   rS   r   )r    xprss      r#   "test_constructor_infer_periodindexz@TestIndexConstructorInference.test_constructor_infer_periodindexm   s9    *3:2Y
b"%"k***r%   c                 p    t        ddd      }t        |      }t        |      }t        |t              sJ y )N1/1/2000   DrY   rX   )r   listr   rS   r   )r    rngrY   r<   s       r#   test_from_list_of_periodsz7TestIndexConstructorInference.test_from_list_of_periodss   s2    :r<s)w&+...r%   posr   r'   zklass,dtype,ctordatetime64[ns]natztimedelta64[ns]c                    t        |t              r,t        j                  dt	        |      j
                   d        |t        t        g      }|d   dk(  r|j                  d      }|d   dk(  r|j                  d      }|j                  |k(  sJ |g}|j                  ||       |t        u rFt        t        t        g      }t        j                  j                  d	      }	|j                  |	       t        |      }
t        j                   |
|       t        t#        j$                  |t&        
            }
t        j                   |
|       y )NzWe don't cast z to datetime64/timedelta64r   dzM8[ns]tzm8[ns]z%Broken with np.NaT ctor; see GH 31884)reasonr   )rS   r   pytestskiprK   __name__r   astyper   insertr   r   markxfailapplymarkerr:   r;   r   r   r   )r    re   klassr   ctornulls_fixturerequestr=   datarq   r<   s              r#   "test_constructor_infer_nat_dt_likez@TestIndexConstructorInference.test_constructor_infer_nat_dt_likez   s    mW-KK m!4!=!= > ?) )
 #s$8s?x0H8s?x0H~~&&&vC'Bb#Y'H;;$$,S$TD%t
fh/rxxF34
fh/r%   	swap_objsc                 <   t        j                  d      t        j                  d      g}|r|d d d   }t        |t              }t        j                  t        |      |       t        j                  t        t        j                  |t                    |       y )Nrg   r.   r   )r   
datetime64timedelta64r   r   r:   r;   r   r    rz   rx   r=   s       r#   -test_constructor_mixed_nat_objs_infers_objectzKTestIndexConstructorInference.test_constructor_mixed_nat_objs_infers_object   sp     e$bnnU&;<":DV,
eDk84
eBHHT$@A8Lr%   c                 $   t        ddddd      t        j                  d      g}|r|d d d   }t        |      }t	        j
                  t        |      |       t	        j
                  t        t        j                  |t                    |       y )	Ni        	   *   nowr.   r   )	r   r   r|   r   r:   r;   r   r   r   r~   s       r#   (test_constructor_datetime_and_datetime64zFTestIndexConstructorInference.test_constructor_datetime_and_datetime64   sp    $1a,bmmE.BC":D &
eDk84
eBHHT$@A8Lr%   c                     t        d      }t        ddd|      }t        dddt        j                        }t	        ||g      }t	        ||gt
              }t        j                  ||       y )Nz
US/Centrali  r'   )tzinfor   )r   r   r   utcr   r   r:   r;   )r    tzdt1dt2r<   r=   s         r#   $test_constructor_datetimes_mixed_tzszBTestIndexConstructorInference.test_constructor_datetimes_mixed_tzs   s^    ,'tQ"-tQ(,,7Sz"#s62
fh/r%   ) rn   
__module____qualname__r$   r*   rl   rq   parametrizer   r   r,   floatr3   rb   tupleiterr>   rE   r   rJ   rN   rU   r\   rd   r   r|   r   r}   ry   r   r   r    r%   r#   r   r   &   s   ++ [[US$e$EFA GA" [[Z$8[[WtUD&9:0 ; 900 [[\D%=9[[$hbhh/B$&OP# :#8+/ [[UQF+[[,mbmmE.BC.u0EF	
 0 , 0D [[[4-8M 9M [[[4-8M 9M0r%   r   c                      e Zd Zd Zej
                  j                  dedddg      d        Zej
                  j                  dedddg      d        Z	d Z
d	 Zd
 Zd Zd Zd Zej
                  j                  dddg      d        Zej
                  j                  dg d ej$                  g d       ej$                  g de      g d ej$                  g de      g      d        Zej
                  j                  dg dg d ej$                  g d       ej$                  g de       ej$                  g de      g      d        Zej
                  j                  dg d ej$                  g de       ej$                  ddgd       eddd       eddd      gg      d        Zej
                  j                  dddg      ej
                  j                  d ej$                   ej2                  d       ej2                  d      g       eddd       eddd      gg      d                Zej
                  j                  dddg      ej
                  j                  d ej$                   ej6                  dd!       ej6                  dd!      g       ed       ed      gg      d"               Zd# Zd$ Zy%)&TestDtypeEnforcedc                 l    t        dg|      }t        |t              }|j                  t        k(  sJ y )Nr   r   )r   r   r   r   )r    any_numeric_ea_dtyper!   r2   s       r#   *test_constructor_object_dtype_with_ea_dataz<TestDtypeEnforced.test_constructor_object_dtype_with_ea_data   s/    QC34Cv&yyF"""r%   r   float64uint64categoryc                     t        t        d            }t        ||      }|j                  |k(  sJ t        t        d      |      }|j                  |k(  sJ y rP   )r   rR   r   )r    r   rc   r<   s       r#   .test_constructor_range_values_mismatched_dtypez@TestDtypeEnforced.test_constructor_range_values_mismatched_dtype   sO    E!Hos%(||u$$$uQxu-||u$$$r%   c                 Z    t        g d      }t        ||      }|j                  |k(  sJ y )Nr'   r(   r@   r   )r	   r   r   )r    r   catr<   s       r#   ;test_constructor_categorical_values_mismatched_non_ea_dtypezMTestDtypeEnforced.test_constructor_categorical_values_mismatched_non_ea_dtype   s*    )$s%(||u$$$r%   c                    t        dd      }t        |      }t        ||j                        }t	        j
                  ||       |j                  d      }t        |      }t        ||j                        }t	        j
                  ||       t        j                  t        d            }t        |      }t        ||j                        }t	        j
                  ||       y )N
2016-01-01r@   rY   z
Asia/TokyorQ   r   )
r   r	   r   r   r:   r;   tz_localizer   from_breaksrR   )r    dtir   r<   dti2cat2iicat3s           r#   4test_constructor_categorical_values_mismatched_dtypezFTestDtypeEnforced.test_constructor_categorical_values_mismatched_dtype   s    q1#sCII&
fc*|,4 tTZZ(
fd+&&uQx02t288,
fb)r%   c                     t        dd      }t        |d      }t        |      }t        j                  ||       t        ddd      }t        |d      }t        |      }t        j                  ||       y )Nr   r@   r   r   r   z
US/Pacific)rY   r   )r   r   r
   r:   r;   )r    r   r<   r=   r   s        r#   7test_constructor_ea_values_mismatched_categorical_dtypezITestDtypeEnforced.test_constructor_ea_values_mismatched_categorical_dtype   sh    q1s*-#C(
fh/,lCt:.#D)
fh/r%   c                 |    t        ddd      }t        |d      }t        |      }t        j                  ||       y )Nr   r@   r`   ra   r   r   )r   r   r
   r:   r;   )r    pir<   r=   s       r#   /test_constructor_period_values_mismatched_dtypezATestDtypeEnforced.test_constructor_period_values_mismatched_dtype   s6    ,<r,#B'
fh/r%   c                 z    t        dd      }t        |d      }t        |      }t        j                  ||       y )Nz4 DaysrQ   r   r   r   )r   r   r
   r:   r;   )r    tdir<   r=   s       r#   4test_constructor_timedelta64_values_mismatched_dtypezFTestDtypeEnforced.test_constructor_timedelta64_values_mismatched_dtype   s4    h2s*-#C(
fh/r%   c                     t        dd      }t        j                  |      }t        |d      }t	        |      }t        j                  ||       y )Nr   r@   r   r   r   )r   r   r   r   r
   r:   r;   )r    r   r   r<   r=   s        r#   1test_constructor_interval_values_mismatched_dtypezCTestDtypeEnforced.test_constructor_interval_values_mismatched_dtype  sD    q1&&s+r,#B'
fh/r%   c                     t        dd      }t        |d      }|j                  d      }t        j                  ||       y )Nr   r@   r   z	Period[D]r   r`   )r   r   	to_periodr:   r;   )r    r   r<   r=   s       r#   :test_constructor_datetime64_values_mismatched_period_dtypezLTestDtypeEnforced.test_constructor_datetime64_values_mismatched_period_dtype  s8    q1s+.==%
fh/r%   int64c                     t         j                  g}d}t        j                  t        |      5  t        ||       d d d        y # 1 sw Y   y xY w)Nzcannot convertmatchr   )r   r,   rl   raises
ValueErrorr   )r    r   rx   msgs       r#   %test_constructor_int_dtype_nan_raisesz7TestDtypeEnforced.test_constructor_int_dtype_nan_raises  sA     x]]:S1 	%$e$	% 	% 	%s   AArG   r   r   )rA   rB   r8   c                 D    |}t        ||      }|j                  |k(  sJ y rI   r   r   )r    rG   rD   r   rM   s        r#   test_constructor_dtypes_to_intz0TestDtypeEnforced.test_constructor_dtypes_to_int  s'     $d%({{e###r%   c                 D    |}t        ||      }|j                  |k(  sJ y rI   r   )r    rG   float_numpy_dtyper   rM   s        r#    test_constructor_dtypes_to_floatz2TestDtypeEnforced.test_constructor_dtypes_to_float+  s'     "d%({{e###r%   z
2011-01-01z
2011-01-02rf   i  r'   r(   c                 B    t        |d      }t        |t              sJ y )Nr   r   )r   rS   r
   )r    rG   rM   s      r#   &test_constructor_dtypes_to_categoricalz8TestDtypeEnforced.test_constructor_dtypes_to_categorical:  s!     d*-%!1222r%   rF   TFc                     t        |      }|r9t        |t              }t        |t               sJ |j                  t        k(  sJ y t        |      }t        |t              sJ y rI   )r   r   rS   r   r   rL   s       r#   #test_constructor_dtypes_to_datetimez5TestDtypeEnforced.test_constructor_dtypes_to_datetimeG  sW     T{$f-EeU+++;;&((($KEe]333r%   r`   c                     |r9t        |t              }t        |t               sJ |j                  t        k(  sJ y t        |      }t        |t              sJ y rI   )r   r   rS   r   r   rL   s       r#   $test_constructor_dtypes_to_timedeltaz6TestDtypeEnforced.test_constructor_dtypes_to_timedeltaY  sN     $f-EeU+++;;&((($KEe^444r%   c                     t        dd      }t        |t              }t        |j                         t              }t	        j
                  |j                  |j                         y )Nz1 daysz10 daysr   )r   r   r   to_pytimedeltar:   assert_numpy_array_equalr1   r    rc   r2   r=   s       r#   !test_pass_timedeltaindex_to_indexz3TestDtypeEnforced.test_pass_timedeltaindex_to_indexj  sG    h	2Cv&++-V<
##CJJ@r%   c                     t        dd      }t        |t              }t        |j                         t              }t	        j
                  |j                  |j                         y )Nr^   z3/1/2000r   )r   r   r   to_pydatetimer:   r   r1   r   s       r#    test_pass_datetimeindex_to_indexz2TestDtypeEnforced.test_pass_datetimeindex_to_indexr  sG    Z0Cv&**,F;
##CJJ@r%   N) rn   r   r   r   rl   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   intr   r   r   r   r   r|   r   r}   r   r   r   r   r   r%   r#   r   r      s   # [[Wvy(J&OP% Q% [[Wvy(J&OP% Q%* 	00000 [[Ww&9:% ;% [[BHHYBHHYc*BHH_E2	

$
$
 [[BHH_%BHHYc*BHH_E2	
	$	$
 [[BHHYc*BHHlL19IJdAq!8D!Q#78		
33 [[\D%=9[[BHHmbmmL1=2==3NOPdAq!8D!Q#78	
4 :4 [[\D%=9[[BHHnbnnQ,nbnnQ.DEFq\9Q<(	
5 :5AAr%   r   c            	          e Zd Zej                  j                  deeg      d        Zd Z	ej                  j                  d e
j                  d       e
j                  g d       edd	      j                  g      d
        Zy)TestIndexConstructorUnwrappingrt   c                     t        d      t        d      t        d      g}t        |      }t        |      } ||      }t        j                  ||       y )N201101012012010120130101)r   r   r   r:   r;   )r    rt   stampsr=   serr<   s         r#   !test_constructor_from_series_dt64z@TestIndexConstructorUnwrapping.test_constructor_from_series_dt64  sI    J':)>	*@UV (Vns
fh/r%   c                     t        g d      }t        |j                        }t        g d      }t        j                  ||       y )Nr   )r   r   r   r:   r;   )r    r   r<   r=   s       r#    test_constructor_no_pandas_arrayz?TestIndexConstructorUnwrapping.test_constructor_no_pandas_array  s4    Ysyy!#
fh/r%   r   rQ   )abcz
2000-01-01r@   r   c                 |     G d d      }t        |      }t         ||            }t        j                  ||       y )Nc                   6    e Zd ZddZddej
                  fdZy)OTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLikereturnNc                     || _         y Nr   )r    r   s     r#   __init__zXTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLike.__init__  s	    "
r%   c                     | j                   S r   r   )r    r   copys      r#   	__array__zYTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLike.__array__  s    zz!r%   )r   N)NN)rn   r   r   r   r   ndarrayr   r   r%   r#   	ArrayLiker     s    #""** "r%   r   rC   )r    r   r   r=   r<   s        r#   test_constructor_ndarray_likez<TestIndexConstructorUnwrapping.test_constructor_ndarray_like  s6    	" 	" <y'(
fh/r%   N)rn   r   r   rl   rq   r   r   r   r   r   r   aranger   r   r1   r   r   r%   r#   r   r   |  s     [[Wum&<=0 >00 [[BIIaLBHH_%|Q/66	
00r%   r   c                       e Zd Zd Zy)TestIndexConstructionErrorsc                     d}t        j                  t        |      5  t        t	        j
                  t        j                        j                  dz
  gd       d d d        y # 1 sw Y   y xY w)NzIThe elements provided in the data cannot all be casted to the dtype int64r   r'   r   r   )rl   r   OverflowErrorr   r   iinfor   max)r    r   s     r#   test_constructor_overflow_int64z;TestIndexConstructionErrors.test_constructor_overflow_int64  s[     X 	 ]]=4 	@288BII&**Q./w?	@ 	@ 	@s   =A$$A-N)rn   r   r   r   r   r%   r#   r   r     s    @r%   r   )#__doc__r   r   r   decimalr   numpyr   rl   pandas._libs.tslibs.timezonesr   pandasr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr:   r   r   r   r   r   r%   r#   <module>r     ss    
    6    $ Z0 Z0zvA vAr&0 &0R@ @r%   