a
    PfK:                     @   s   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 dZG d	d
 d
Z G dd dZ!G d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                   @   sn  e Zd Zdd Zdd Zejdede	j
edgdd	 Zejd
de	j
gejdeeegdd Zejdeddddddddg	dd Zejdddgejdg de	jg dedgdd  Zd!d" Zd#d$ Zd%d& Zejd'd(d)gejd*ed+e	d,fed-e	d,fgd.d/ Zejd0ddgd1d2 Zejd0ddgd3d4 Zd5d6 Z dS )7TestIndexConstructorInferencec                 C   s>   t jddgtd}t|}|jtks(J t|jtks:J d S )NTFdtype)npr   objectr   r   r   selfarrres r    \/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/indexes/test_index_new.pytest_object_all_bools&   s    z3TestIndexConstructorInference.test_object_all_boolsc                 C   sF   t jtdtdgtd}t|}|jtks0J t|jtksBJ d S )N      r   )r   r   complexr   r   r   r   r   r    r    r!   test_object_all_complex/   s    z5TestIndexConstructorInference.test_object_all_complexvalNnanc                 C   s   t |g}t|}|jdkr&|  s*J t|d d d }|jdkrR|  sVJ ttj|td}|jdkr~|  sJ ttj|tdd d d }|jdkr|  sJ d S )Ndatetime64[ns]r   )r   r   r   Zisnaallr   r   r   )r   r'   valuesidxr    r    r!   test_infer_nat8   s    z,TestIndexConstructorInference.test_infer_natna_valuevtypec                 C   s2   dd|fg}t ||}t|}t|| d S )N)r#   two      @)r   r   from_tuplestmassert_index_equal)r   r/   r0   r,   resultexpectedr    r    r!   !test_construction_list_tuples_nanJ   s    
z?TestIndexConstructorInference.test_construction_list_tuples_nanr   int64Zint32Zint16Zint8uint64Zuint32Zuint16Zuint8c                 C   s0   t g d|d}t g d|d}t|| d S )N)r   r#   r$      r   )g              ?       @r2   r   r4   r5   )r   r   r7   r6   r    r    r!    test_constructor_int_dtype_floatS   s    z>TestIndexConstructorInference.test_constructor_int_dtype_float
cast_indexTFvals)TFTr   c                 C   s<   |rt |td}nt |}t|t u s*J |jtks8J d S Nr   )r   booltyper   r   r@   rA   indexr    r    r!   !test_constructor_dtypes_to_object]   s
    z?TestIndexConstructorInference.test_constructor_dtypes_to_objectc                 C   s*   t td}t|td}t|t r&J d S N   r   )r	   ranger   r   
isinstance)r   cir6   r    r    r!   &test_constructor_categorical_to_objectj   s    zDTestIndexConstructorInference.test_constructor_categorical_to_objectc                 C   s4   t dddd}t|}t|| t|ts0J d S )Nz2012-1-1Mr;   )freqperiods)r   r   r4   r5   rK   r   )r   Zxprsr    r    r!   "test_constructor_infer_periodindexp   s    z@TestIndexConstructorInference.test_constructor_infer_periodindexc                 C   s0   t dddd}t|}t|}t|ts,J d S )N1/1/2000   DrP   rO   )r   listr   rK   r   )r   rngrP   r6   r    r    r!   test_from_list_of_periodsv   s    z7TestIndexConstructorInference.test_from_list_of_periodsposr   r#   zklass,dtype,ctorr)   natztimedelta64[ns]c                 C   s  t |tr"tdt|j d |ttg}|j|ks<J |g}||| d }	|t	u rt
t	tg}tjjdd}
||
 t}	t
|}t|	 t|| W d    n1 s0    Y  t
tj|td}t|	 t|| W d    n1 s0    Y  d S )NzWe don't cast z to datetime64/timedelta64z%Broken with np.NaT ctor; see GH 31884)reasonr   )rK   r   pytestskiprD   __name__r   r   insertr   r   markZxfailZapplymarkerDeprecationWarningr4   Zassert_produces_warningr5   r   r   r   )r   rZ   klassr   ZctorZnulls_fixturerequestr7   datawarnra   r6   r    r    r!   "test_constructor_infer_nat_dt_like}   s(    

*z@TestIndexConstructorInference.test_constructor_infer_nat_dt_like	swap_objsc                 C   s`   t dt dg}|r&|d d d }t|td}tt|| ttt j|td| d S )Nr[   r*   r   )r   
datetime64timedelta64r   r   r4   r5   r   r   rh   re   r7   r    r    r!   -test_constructor_mixed_nat_objs_infers_object   s    zKTestIndexConstructorInference.test_constructor_mixed_nat_objs_infers_objectc                 C   sb   t dddddtdg}|r,|d d d }t|}tt|| tttj|td| d S )	Ni        	   *   nowr*   r   )	r   r   ri   r
   r4   r5   r   r   r   rk   r    r    r!   (test_constructor_datetime_and_datetime64   s    zFTestIndexConstructorInference.test_constructor_datetime_and_datetime64c                 C   sV   t d}tddd|d}tdddtjd}t||g}t||gtd}t|| d S )Nz
US/Centrali  r#   )tzinfor   )r   r   r   utcr   r   r4   r5   )r   tzZdt1Zdt2r6   r7   r    r    r!   $test_constructor_datetimes_mixed_tzs   s    zBTestIndexConstructorInference.test_constructor_datetimes_mixed_tzs)!r_   
__module____qualname__r"   r&   r]   ra   parametrizer   r   r(   floatr.   rW   tupleiterr8   intr?   r   rC   rG   rM   rR   rY   r
   ri   r   rj   rg   rl   rr   rv   r    r    r    r!   r   %   sB   		

	#


	r   c                   @   sH  e Zd Zdd Zejdedddgdd Zejdedddgd	d
 Z	dd Z
dd Zdd Zdd Zdd Zdd Zejdddgdd Zejdg deg dejg dedg dejg dedgdd Zejdg dg deg dejg dedejg dedgd d! Zejdg dejg dedejd"d#gd$ded%d&d&ed%d&d'ggd(d) Zejd*d+d,gejdeeed"ed#geed%d&d&ed%d&d'ggd-d. Zejd*d+d,gejdeed&d/ed&d/ged&ed&ggd0d1 Zd2d3 Zd4d5 Z d6S )7TestDtypeEnforcedc                 C   s,   t dg|d}t|td}|jtks(J d S )Nr   r   )r   r   r   r   )r   Zany_numeric_ea_dtyper   r-   r    r    r!   *test_constructor_object_dtype_with_ea_data   s    z<TestDtypeEnforced.test_constructor_object_dtype_with_ea_datar   Zfloat64r:   categoryc                 C   sH   t td}t ||d}|j|ks&J t td|d}|j|ksDJ d S rH   )r   rJ   r   )r   r   rX   r6   r    r    r!   .test_constructor_range_values_mismatched_dtype   s
    z@TestDtypeEnforced.test_constructor_range_values_mismatched_dtypec                 C   s*   t g d}t||d}|j|ks&J d S )Nr#   r$   r;   r   )r   r   r   )r   r   catr6   r    r    r!   ;test_constructor_categorical_values_mismatched_non_ea_dtype   s    zMTestDtypeEnforced.test_constructor_categorical_values_mismatched_non_ea_dtypec                 C   s   t ddd}t|}t||j}t|| |d}t|}t||j}t|| tt	d}t|}t||jd}t|| d S )N
2016-01-01r;   rP   z
Asia/TokyorI   r   )
r   r   r   r   r4   r5   Ztz_localizer   from_breaksrJ   )r   dtir   r6   dti2cat2iiZcat3r    r    r!   4test_constructor_categorical_values_mismatched_dtype   s    
zFTestDtypeEnforced.test_constructor_categorical_values_mismatched_dtypec                 C   s^   t ddd}t|dd}t|}t|| t dddd}t|dd}t|}t|| d S )Nr   r;   r   r   r   z
US/Pacific)rP   ru   )r   r   r	   r4   r5   )r   r   r6   r7   r   r    r    r!   7test_constructor_ea_values_mismatched_categorical_dtype   s    zITestDtypeEnforced.test_constructor_ea_values_mismatched_categorical_dtypec                 C   s2   t dddd}t|dd}t|}t|| d S )Nr   r;   rU   rV   r   r   )r   r   r	   r4   r5   )r   pir6   r7   r    r    r!   /test_constructor_period_values_mismatched_dtype   s    zATestDtypeEnforced.test_constructor_period_values_mismatched_dtypec                 C   s0   t ddd}t|dd}t|}t|| d S )Nz4 DaysrI   r   r   r   )r   r   r	   r4   r5   )r   Ztdir6   r7   r    r    r!   4test_constructor_timedelta64_values_mismatched_dtype  s    zFTestDtypeEnforced.test_constructor_timedelta64_values_mismatched_dtypec                 C   s:   t ddd}t|}t|dd}t|}t|| d S )Nr   r;   r   r   r   )r   r   r   r   r	   r4   r5   )r   r   r   r6   r7   r    r    r!   1test_constructor_interval_values_mismatched_dtype
  s
    
zCTestDtypeEnforced.test_constructor_interval_values_mismatched_dtypec                 C   s2   t ddd}t|dd}|d}t|| d S )Nr   r;   r   z	Period[D]r   rU   )r   r   Z	to_periodr4   r5   )r   r   r6   r7   r    r    r!   :test_constructor_datetime64_values_mismatched_period_dtype  s    
zLTestDtypeEnforced.test_constructor_datetime64_values_mismatched_period_dtyper9   c                 C   sJ   t jg}d}tjt|d t||d W d    n1 s<0    Y  d S )Nzcannot convertmatchr   )r   r(   r]   raises
ValueErrorr   )r   r   re   msgr    r    r!   %test_constructor_int_dtype_nan_raises  s    z7TestDtypeEnforced.test_constructor_int_dtype_nan_raisesrA   r   r   )r<   r=   r2   c                 C   s"   |}t ||d}|j|ksJ d S rB   r   r   )r   rA   Zany_int_numpy_dtyper   rF   r    r    r!   test_constructor_dtypes_to_int  s    z0TestDtypeEnforced.test_constructor_dtypes_to_intc                 C   s"   |}t ||d}|j|ksJ d S rB   r   )r   rA   Zfloat_numpy_dtyper   rF   r    r    r!    test_constructor_dtypes_to_float/  s    z2TestDtypeEnforced.test_constructor_dtypes_to_floatz
2011-01-01z
2011-01-02r)   i  r#   r$   c                 C   s   t |dd}t|tsJ d S )Nr   r   )r   rK   r	   )r   rA   rF   r    r    r!   &test_constructor_dtypes_to_categorical>  s    
z8TestDtypeEnforced.test_constructor_dtypes_to_categoricalr@   TFc                 C   sH   |r.t |td}t|t sJ |jtksDJ nt |}t|tsDJ d S rB   )r   r   rK   r   r
   rE   r    r    r!   #test_constructor_dtypes_to_datetimeK  s    	z5TestDtypeEnforced.test_constructor_dtypes_to_datetimerU   c                 C   sH   |r.t |td}t|t sJ |jtksDJ nt |}t|tsDJ d S rB   )r   r   rK   r   r   rE   r    r    r!   $test_constructor_dtypes_to_timedelta\  s    	z6TestDtypeEnforced.test_constructor_dtypes_to_timedeltac                 C   s:   t dd}t|td}t| td}t|j|j d S )Nz1 daysz10 daysr   )r   r   r   Zto_pytimedeltar4   assert_numpy_array_equalr,   r   rX   r-   r7   r    r    r!   !test_pass_timedeltaindex_to_indexm  s    
z3TestDtypeEnforced.test_pass_timedeltaindex_to_indexc                 C   s:   t dd}t|td}t| td}t|j|j d S )NrS   z3/1/2000r   )r   r   r   Zto_pydatetimer4   r   r,   r   r    r    r!    test_pass_datetimeindex_to_indexu  s    
z2TestDtypeEnforced.test_pass_datetimeindex_to_indexN)!r_   rw   rx   r   r]   ra   ry   r   r   r   r   r   r   r   r   r   r   r   r   r}   rz   r   r   r   r   r   ri   r   rj   r   r   r   r   r    r    r    r!   r~      sx   
	




	
		r~   c                	   @   sd   e Zd Zejdeegdd Zdd Z	ejde
de
g ded	d
djgdd ZdS )TestIndexConstructorUnwrappingrc   c                 C   s>   t dt dt dg}t|}t|}||}t|| d S )NZ20110101Z20120101Z20130101)r   r
   r   r4   r5   )r   rc   Zstampsr7   serr6   r    r    r!   !test_constructor_from_series_dt64  s
    z@TestIndexConstructorUnwrapping.test_constructor_from_series_dt64c                 C   s2   t g d}t|j}tg d}t|| d S )Nr   )r   r   r   r4   r5   )r   r   r6   r7   r    r    r!    test_constructor_no_pandas_array  s    
z?TestIndexConstructorUnwrapping.test_constructor_no_pandas_arrayr   rI   )abcz
2000-01-01r;   r   c                 C   s2   G dd d}t |}t ||}t|| d S )Nc                   @   s,   e Zd ZddddZdejdddZdS )zOTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLikeN)returnc                 S   s
   || _ d S Nr   )r   r   r    r    r!   __init__  s    zXTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLike.__init__c                 S   s   | j S r   r   )r   r   copyr    r    r!   	__array__  s    zYTestIndexConstructorUnwrapping.test_constructor_ndarray_like.<locals>.ArrayLike.__array__)NN)r_   rw   rx   r   r   Zndarrayr   r    r    r    r!   	ArrayLike  s   r   r>   )r   r   r   r7   r6   r    r    r!   test_constructor_ndarray_like  s    z<TestIndexConstructorUnwrapping.test_constructor_ndarray_likeN)r_   rw   rx   r]   ra   ry   r   r
   r   r   r   Zaranger   r   r,   r   r    r    r    r!   r     s   
r   c                   @   s   e Zd Zdd ZdS )TestIndexConstructionErrorsc                 C   sR   d}t jt|d, tttjjd gdd W d    n1 sD0    Y  d S )NzIThe elements provided in the data cannot all be casted to the dtype int64r   r#   r9   r   )r]   r   OverflowErrorr   r   Ziinfor:   max)r   r   r    r    r!   test_constructor_overflow_int64  s    z;TestIndexConstructionErrors.test_constructor_overflow_int64N)r_   rw   rx   r   r    r    r    r!   r     s   r   )#__doc__r   r   r   decimalr   numpyr   r]   Zpandas._libs.tslibs.timezonesr   Zpandasr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr4   r   r~   r   r   r    r    r    r!   <module>   s   H # 9)