
    OwgK:                         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ej                  j                  d
eddddddddg	      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	j4                  d#      fed$ e	j8                  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      Z/var/www/horilla/myenv/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_complex/   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 )Ndatetime64[ns]r   )r   r   r   isnaallr   r   r   )r    r+   valuesidxs       r#   test_infer_natz,TestIndexConstructorInference.test_infer_nat8   s     sFmyy,,1AAAF4R4L!yy,,1AAABHHV623yy,,1AAABHHV624R489yy,,1AAA1Ar%   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    r5   r6   r2   resultexpecteds         r#   !test_construction_list_tuples_nanz?TestIndexConstructorInference.test_construction_list_tuples_nanJ   s@     sHo.uV}%))&1
fh/r%   r   int64int32int16int8uint64uint32uint16uint8c                 l    t        g d|      }t        g d|      }t        j                  ||       y )N)r   r'   r(      r   )g              ?       @r9   r   r;   r<   )r    r   r>   r=   s       r#    test_constructor_int_dtype_floatz>TestIndexConstructorInference.test_constructor_int_dtype_floatS   s-     U3+59
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    rN   rO   indexs       r#   !test_constructor_dtypes_to_objectz?TestIndexConstructorInference.test_constructor_dtypes_to_object]   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_objectj   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MrI   )freqperiods)r   r   r;   r<   r[   r   )r    xprss      r#   "test_constructor_infer_periodindexz@TestIndexConstructorInference.test_constructor_infer_periodindexp   s9    *3:2Y
b"%"k***r%   c                 p    t        ddd      }t        |      }t        |      }t        |t              sJ y )N1/1/2000   Dra   r`   )r   listr   r[   r   )r    rngra   r=   s       r#   test_from_list_of_periodsz7TestIndexConstructorInference.test_from_list_of_periodsv   s2    :r<s)w&+...r%   posr   r'   zklass,dtype,ctorr.   natztimedelta64[ns]c                    t        |t              r,t        j                  dt	        |      j
                   d        |t        t        g      }|j                  |k(  sJ |g}|j                  ||       d }	|t        u rLt        t        t        g      }t        j                  j                  d      }
|j                  |
       t        }	t        |      }t        j                   |	      5  t        j"                  ||       d d d        t        t%        j&                  |t(                    }t        j                   |	      5  t        j"                  ||       d d d        y # 1 sw Y   bxY w# 1 sw Y   y xY w)NzWe don't cast z to datetime64/timedelta64z%Broken with np.NaT ctor; see GH 31884)reasonr   )r[   r   pytestskiprS   __name__r   r   insertr   r   markxfailapplymarkerDeprecationWarningr;   assert_produces_warningr<   r   r   r   )r    rm   klassr   ctornulls_fixturerequestr>   datawarnru   r=   s               r#   "test_constructor_infer_nat_dt_likez@TestIndexConstructorInference.test_constructor_infer_nat_dt_like}   sA    mW-KK m!4!=!= > ?) )
 #s$~~&&&vC'Bb#Y'H;;$$,S$TD% &Dt''- 	4!!&(3	4 rxxF34''- 	4!!&(3	4 	4	4 	4
	4 	4s   +E#E/#E,/E8	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 )Nrn   r/   r   )r   
datetime64timedelta64r   r   r;   r<   r   r    r   r~   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%   )!rs   
__module____qualname__r$   r*   rq   ru   parametrizer   r   r,   floatr4   rj   tupleiterr?   intrM   r   rR   rV   r]   rd   rl   r   r   r   r   r   r   r   r    r%   r#   r   r   %   s   ++ [[US$e$EFB GB" [[Z$8[[WtUD&9:0 ; 90 [[	gw8XwW0	0 [[\D%=9[[$hbhh/B$&OP# :#8+/ [[UQF+[[,mbmmE.BC.u0EF	
!4 ,!4F [[[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 ej$                   ej4                  d       ej4                  d      g             e 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j8                  dd!       ej8                  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!   r3   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   float64rD   categoryc                     t        t        d            }t        ||      }|j                  |k(  sJ t        t        d      |      }|j                  |k(  sJ y rX   )r   rZ   r   )r    r   rk   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(   rI   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-01rI   ra   z
Asia/TokyorY   r   )
r   r	   r   r   r;   r<   tz_localizer   from_breaksrZ   )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   rI   r   r   r   z
US/Pacific)ra   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   rI   rh   ri   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 DaysrY   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   rI   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   rI   r   z	Period[D]r   rh   )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%   r@   c                     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,   rq   raises
ValueErrorr   )r    r   r~   msgs       r#   %test_constructor_int_dtype_nan_raisesz7TestDtypeEnforced.test_constructor_int_dtype_nan_raises  sA     x]]:S1 	%$e$	% 	% 	%s   AArO   r   r   )rJ   rK   r9   c                 D    |}t        ||      }|j                  |k(  sJ y rQ   r   r   )r    rO   any_int_numpy_dtyper   rU   s        r#   test_constructor_dtypes_to_intz0TestDtypeEnforced.test_constructor_dtypes_to_int  s'     $d%({{e###r%   c                 D    |}t        ||      }|j                  |k(  sJ y rQ   r   )r    rO   float_numpy_dtyper   rU   s        r#    test_constructor_dtypes_to_floatz2TestDtypeEnforced.test_constructor_dtypes_to_float/  s'     "d%({{e###r%   z
2011-01-01z
2011-01-02r.   i  r'   r(   c                 B    t        |d      }t        |t              sJ y )Nr   r   )r   r[   r
   )r    rO   rU   s      r#   &test_constructor_dtypes_to_categoricalz8TestDtypeEnforced.test_constructor_dtypes_to_categorical>  s!     d*-%!1222r%   rN   TFc                     |r9t        |t              }t        |t               sJ |j                  t        k(  sJ y t        |      }t        |t              sJ y rQ   )r   r   r[   r   r   rT   s       r#   #test_constructor_dtypes_to_datetimez5TestDtypeEnforced.test_constructor_dtypes_to_datetimeK  sN     $f-EeU+++;;&((($KEe]333r%   rh   c                     |r9t        |t              }t        |t               sJ |j                  t        k(  sJ y t        |      }t        |t              sJ y rQ   )r   r   r[   r   r   rT   s       r#   $test_constructor_dtypes_to_timedeltaz6TestDtypeEnforced.test_constructor_dtypes_to_timedelta\  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_equalr2   r    rk   r3   r>   s       r#   !test_pass_timedeltaindex_to_indexz3TestDtypeEnforced.test_pass_timedeltaindex_to_indexm  sG    h	2Cv&++-V<
##CJJ@r%   c                     t        dd      }t        |t              }t        |j                         t              }t	        j
                  |j                  |j                         y )Nrf   z3/1/2000r   )r   r   r   to_pydatetimer;   r   r2   r   s       r#    test_pass_datetimeindex_to_indexz2TestDtypeEnforced.test_pass_datetimeindex_to_indexu  sG    Z0Cv&**,F;
##CJJ@r%   N)!rs   r   r   r   rq   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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[[("((MBMM,7|9TUVW8D!Q'$1)=>?	
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)TestIndexConstructorUnwrappingrz   c                     t        d      t        d      t        d      g}t        |      }t        |      } ||      }t        j                  ||       y )N201101012012010120130101)r   r   r   r;   r<   )r    rz   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   rY   )abcz
2000-01-01rI   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)rs   r   r   r   r   ndarrayr   r   r%   r#   	ArrayLiker     s    #""** "r%   r   rL   )r    r   r   r>   r=   s        r#   test_constructor_ndarray_likez<TestIndexConstructorUnwrapping.test_constructor_ndarray_like  s6    	" 	" <y'(
fh/r%   N)rs   r   r   rq   ru   r   r   r   r   r   r   aranger   r   r2   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   )rq   r   OverflowErrorr   r   iinforD   max)r    r   s     r#   test_constructor_overflow_int64z;TestIndexConstructionErrors.test_constructor_overflow_int64  sZ    / 	 ]]=4 	@288BII&**Q./w?	@ 	@ 	@s   =A$$A-N)rs   r   r   r  r   r%   r#   r   r     s    @r%   r   )#__doc__r   r   r   decimalr   numpyr   rq   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    $ _0 _0DuA uAp&0 &0R@ @r%   