
    bMhK:                        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"dS )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                            dede	j
         ed          g          d             Zej                            dde	j
        g          ej                            deeeg          d	                         Zej                            d
eddddddddg	          d             Zej                            dddg          ej                            dg d e	j        g de          g          d                         Zd Zd Zd Zej                            ddd g          ej                            d!ed" e	j        d#          fed$ e	j        d#          fg          d%                         Zej                            d&ddg          d'             Zej                            d&ddg          d(             Zd) Z dS )*TestIndexConstructorInferencec                     t          j        ddgt                    }t          |          }|j        t          k    sJ t          |          j        t          k    sJ d S )NTFdtype)npr   objectr   r   r   selfarrress      c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexes/test_index_new.pytest_object_all_boolsz3TestIndexConstructorInference.test_object_all_bools&   sZ    he}F333CjjyF"""" c{{ F******    c                     t          j        t          d          t          d          gt                    }t	          |          }|j        t          k    sJ t          |          j        t          k    sJ d S )N      r   )r   r   complexr   r   r   r   r   s      r#   test_object_all_complexz5TestIndexConstructorInference.test_object_all_complex/   sg    h

GAJJ/v>>>CjjyF"""" c{{ F******r%   valNnanc                    t           |g}t          |          }|j        dk    r&|                                                                sJ t          |d d d                   }|j        dk    r&|                                                                sJ t          t          j        |t                              }|j        dk    r&|                                                                sJ t          t          j        |t                    d d d                   }|j        dk    r&|                                                                sJ d S )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Fmmy,,,1A1A,,,F44R4L!!y,,,1A1A,,,BHV622233y,,,1A1A,,,BHV622244R4899y,,,1A1A,,,,,r%   na_valuevtypec                     dd|fg}t           ||                    }t          j        |          }t          j        ||           d S )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   sP     sHo.uuV}}%%)&11
fh/////r%   r   int64int32int16int8uint64uint32uint16uint8c                 |    t          g d|          }t          g d|          }t          j        ||           d S )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   sL     U333+++5999
fh/////r%   
cast_indexTFvals)TFTr   c                     |rt          |t                    }nt          |          }t          |          t           u sJ |j        t          k    sJ d S Nr   )r   booltyper   r    rN   rO   indexs       r#   !test_constructor_dtypes_to_objectz?TestIndexConstructorInference.test_constructor_dtypes_to_object]   s[    
  	 $d+++EE$KKEE{{e####{d""""""r%   c                     t          t          d                    }t          |t                    }t	          |t                     rJ d S N   r   )r
   ranger   r   
isinstance)r    cir=   s      r#   &test_constructor_categorical_to_objectzDTestIndexConstructorInference.test_constructor_categorical_to_objectj   sD    eAhh''r(((f&67777777r%   c                     t          ddd          }t          |          }t          j        ||           t	          |t
                    sJ d S )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   sP    *3:::2YY
b"%%%"k*******r%   c                     t          ddd          }t          |          }t          |          }t          |t                    sJ d S )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   sH    :r<<<s))w&+.......r%   posr   r'   zklass,dtype,ctorr.   natztimedelta64[ns]c                 6   t          |t                    r*t          j        dt	          |          j         d            |t          t          g          }|j        |k    sJ |g}|                    ||           d }	|t          u rWt          t          t          g          }t          j                            d          }
|                    |
           t          }	t          |          }t          j        |	          5  t          j        ||           d d d            n# 1 swxY w Y   t          t%          j        |t(                              }t          j        |	          5  t          j        ||           d d d            d S # 1 swxY w Y   d S )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}   s    mW-- 	K)m!4!4!= ) ) )  
 5#s$$~&&&&vC'''Bb#Y''H;$$,S$TTD%%% &Dt'-- 	4 	4!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 rxF33344'-- 	4 	4!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s$   D$$D(+D(+FFF	swap_objsc                 V   t          j        d          t          j        d          g}|r|d d d         }t          |t                    }t          j        t          |          |           t          j        t          t          j        |t                              |           d S )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   s     e$$bnU&;&;< 	":DV,,,
eDkk8444
eBHT$@$@$@AA8LLLLLr%   c                 F   t          ddddd          t          j        d          g}|r|d d d         }t          |          }t	          j        t          |          |           t	          j        t          t          j        |t                              |           d S )	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   s    $1a,,bmE.B.BC 	":D &&
eDkk8444
eBHT$@$@$@AA8LLLLLr%   c                     t          d          }t          ddd|          }t          dddt          j                  }t	          ||g          }t	          ||gt
                    }t          j        ||           d S )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77Sz""#s622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FB B GFB" [Z$88[WtUD&9::0 0 ;: 980 [	gw8XwW 0 0	 0 [\D%=99[$$$hbh/B/B/B$&O&O&OP # #  :9#8 8 8+ + +/ / / [UQF++[,mbmE.B.BC.u0E0EF	
 !4 !4  ,+!4F [[4-88M M 98M [[4-88M M 98M0 0 0 0 0r%   r   c                      e Zd Zd Zej                            dedddg          d             Zej                            dedddg          d             Z	d Z
d	 Zd
 Zd Zd Zd Zej                            dddg          d             Ze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                            dg dg d ej        g d           ej        g de           ej        g de          g          d             Ze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                            dddg          ej                            d e ej         ej        d           ej        d          g                     e eddd           eddd          g          g          d                          Zej                            dddg          ej                            d ej         ej        dd!           ej        dd!          g           ed           ed          gg          d"                         Zd# Zd$ Z d%S )&TestDtypeEnforcedc                 z    t          dg|          }t          |t                    }|j        t          k    sJ d S )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   sB    QC3444Cv&&&yF""""""r%   r   float64rD   categoryc                     t          t          d                    }t          ||          }|j        |k    sJ t          t          d          |          }|j        |k    sJ d S rX   )r   rZ   r   )r    r   rk   r=   s       r#   .test_constructor_range_values_mismatched_dtypez@TestDtypeEnforced.test_constructor_range_values_mismatched_dtype   si    E!HHoos%(((|u$$$$uQxxu---|u$$$$$$r%   c                 d    t          g d          }t          ||          }|j        |k    sJ d S )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        ||           |                    d          }t          |          }t          ||j                  }t	          j        ||           t          j        t          d                    }t          |          }t          ||j                  }t	          j        ||           d S )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11#sCI&&
fc***|,,4  tTZ((
fd+++&uQxx002t28,,,
fb)))))r%   c                     t          dd          }t          |d          }t          |          }t          j        ||           t          ddd          }t          |d          }t          |          }t          j        ||           d S )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   s    q111s*---#C((
fh///,lCCCt:...#D))
fh/////r%   c                     t          ddd          }t          |d          }t          |          }t          j        ||           d S )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   sN    ,<<<r,,,#B''
fh/////r%   c                     t          dd          }t          |d          }t          |          }t          j        ||           d S )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  sL    h222s*---#C((
fh/////r%   c                     t          dd          }t          j        |          }t          |d          }t	          |          }t          j        ||           d S )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
  s\    q111&s++r,,,#B''
fh/////r%   c                     t          dd          }t          |d          }|                    d          }t          j        ||           d S )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  sP    q111s+...==%%
fh/////r%   r@   c                     t           j        g}d}t          j        t          |          5  t          ||           d d d            d S # 1 swxY w Y   d S )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  s     x]:S111 	% 	%$e$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A

AArO   r   r   )rJ   rK   r9   c                 F    |}t          ||          }|j        |k    sJ d S rQ   r   r   )r    rO   any_int_numpy_dtyper   rU   s        r#   test_constructor_dtypes_to_intz0TestDtypeEnforced.test_constructor_dtypes_to_int  s4     $d%((({e######r%   c                 F    |}t          ||          }|j        |k    sJ d S rQ   r   )r    rO   float_numpy_dtyper   rU   s        r#    test_constructor_dtypes_to_floatz2TestDtypeEnforced.test_constructor_dtypes_to_float/  s4     "d%((({e######r%   z
2011-01-01z
2011-01-02r.   i  r'   r(   c                 V    t          |d          }t          |t                    sJ d S )Nr   r   )r   r[   r
   )r    rO   rU   s      r#   &test_constructor_dtypes_to_categoricalz8TestDtypeEnforced.test_constructor_dtypes_to_categorical>  s3     d*---%!12222222r%   rN   TFc                     |rAt          |t                    }t          |t                     sJ |j        t          k    sJ d S t          |          }t          |t                    sJ d S rQ   )r   r   r[   r   r   rT   s       r#   #test_constructor_dtypes_to_datetimez5TestDtypeEnforced.test_constructor_dtypes_to_datetimeK  st      	4$f---EeU+++++;&(((((($KKEe]3333333r%   rh   c                     |rAt          |t                    }t          |t                     sJ |j        t          k    sJ d S t          |          }t          |t                    sJ d S rQ   )r   r   r[   r   r   rT   s       r#   $test_constructor_dtypes_to_timedeltaz6TestDtypeEnforced.test_constructor_dtypes_to_timedelta\  st      	5$f---EeU+++++;&(((((($KKEe^4444444r%   c                     t          dd          }t          |t                    }t          |                                t                    }t	          j        |j        |j                   d S )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  s^    h	22Cv&&&++--V<<<
#CJ@@@@@r%   c                     t          dd          }t          |t                    }t          |                                t                    }t	          j        |j        |j                   d S )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  s^    Z00Cv&&&**,,F;;;
#CJ@@@@@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      sK       # # # [Wvy(J&OPP% % QP% [Wvy(J&OPP% % QP%* * * 	0 	0 	00 0 00 0 00 0 00 0 0 [Ww&9::% % ;:% [IIBHYYYBHYYYc***OOBH___E222	

 
$ $
 
$
 [IIOOBH___%%BHYYYc***BH___E222	
	 	$ $	 	$
 [IIBHYYYc***BHlL19IJJJXdAq!!88D!Q#7#78		
 3 3 3 [\D%=99[E("(MBM,77|9T9TUVVWWE88D!Q''$1)=)=>??	
 4 4  :94 [\D%=99[BHnbnQ,,nbnQ.D.DEFFYq\\99Q<<(	
 5 5  :95A A AA A A A Ar%   r   c            	       
   e Zd Zej                            deeg          d             Zd Z	ej                            d e
j        d           e
j        g d           edd	          j        g          d
             ZdS )TestIndexConstructorUnwrappingrz   c                     t          d          t          d          t          d          g}t          |          }t          |          } ||          }t          j        ||           d S )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  sd    J'':)>)>	*@U@UV ((Vnns
fh/////r%   c                     t          g d          }t          |j                  }t          g d          }t          j        ||           d S )Nr   )r   r   r   r;   r<   )r    r   r=   r>   s       r#    test_constructor_no_pandas_arrayz?TestIndexConstructorUnwrapping.test_constructor_no_pandas_array  sL    YYYsy!!##
fh/////r%   r   rY   )abcz
2000-01-01rI   r   c                      G d d          }t          |          }t           ||                    }t          j        ||           d S )Nc                   .    e Zd ZddZddej        fdZdS )OTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLikereturnNc                     || _         d S 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
    z!r%   )r   N)NN)rs   r   r   r   r   ndarrayr   r   r%   r#   	ArrayLiker     sJ        # # # #" ""* " " " " " "r%   r   rL   )r    r   r   r>   r=   s        r#   test_constructor_ndarray_likez<TestIndexConstructorUnwrapping.test_constructor_ndarray_like  sg    	" 	" 	" 	" 	" 	" 	" 	" <<yy''((
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0 0 0 [BIaLLBH___%%J|Q///6	
 0 0 0 0 0r%   r   c                       e Zd Zd ZdS )TestIndexConstructionErrorsc                     d}t          j        t          |          5  t          t	          j        t          j                  j        dz
  gd           d d d            d S # 1 swxY w Y   d S )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  s    / 	 ]=444 	@ 	@28BI&&*Q./w????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   7A""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	     s            
            6 6 6 6 6 6                                   $      _0 _0 _0 _0 _0 _0 _0 _0DuA uA uA uA uA uA uA uAp&0 &0 &0 &0 &0 &0 &0 &0R@ @ @ @ @ @ @ @ @ @r%   