U
    Mf                     @   s   d dl mZ d dlmZmZ d dlZd dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d dl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 d dl m!Z" d d	l#m$Z$m%Z% G d
d dZ&dS )    )OrderedDict)datetime	timedeltaN)lib)iNaT)is_categorical_dtypeis_datetime64tz_dtype)CategoricalDtype)Categorical	DataFrameIndexIntervalIndex
MultiIndexNaTSeries	Timestamp
date_rangeisnaperiod_rangetimedelta_range)IntervalArrayperiod_arrayc                   @   sl  e Zd Zejddd dfdd dfdd dfdd dfd	d dfd
d dfdd dfdd dfdd dfdd dfdd dfgdd Zdd Zdd Zdd Z	dd Z
ejdeeegdd Zejdejedgdd  Zejd!d"d#d$d%d&d'd(gejd)d*eg gd+d, Zd-d. Zd/d0 Zejd1d2d3d4gd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB Zejd!dCdDdEdFgdGdH ZejdIdJdKgdLdMgeej dNdKdOdPeej dNdKdOdQdRej!dSdTdUggdVdW Z"dXdY Z#dZd[ Z$d\d] Z%d^d_ Z&d`da Z'dbdc Z(ddde Z)dfdg Z*dhdi Z+djdk Z,dldm Z-dndo Z.dpdq Z/ejdrdJdKdsgdtee0dse1dudvdugdwdx e0dsD e2dyd e0dsgdzd{ Z3d|d} Z4d~d Z5dd Z6dd Z7dd Z8ejjd)ej ddsdQdej ddsdej9ddsdej:ddsddPeede;dJdKdsge<dSdsgdd ddd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHejdejIejJgejd!ddgejddddddddgdd ZKejddejLejd*gdd ZMejdeNeOgdd ZPejjdeejQgddgddd ZRejjdeejQgddgddd ZSddÄ ZTejjdeejQgddgdddń ZUddǄ ZVddɄ ZWdd˄ ZXdd̈́ ZYddτ ZZejddKejd*edgdd҄ Z[ddԄ Z\ddք Z]dd؄ Z^ddڄ Z_dd܄ Z`ddބ Zaejbdߡdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zlejjd)e ddde9ddde:ddddPgdd ddd Zmejjd)e ddde9ddde:ddddPgdd ddd Znejd!ejoejpgdd Zqejdd dgdd Zrejd!d*dd&gdd Zsdd Ztd*S (	  TestSeriesConstructorszconstructor,check_index_typec                   C   s   t  S Nr    r   r   I/tmp/pip-unpacked-wheel-izj5yhnl/pandas/tests/series/test_constructors.py<lambda>)       zTestSeriesConstructors.<lambda>Tc                   C   s   t d S r   r   r   r   r   r   r   *   r   c                   C   s   t i S r   r   r   r   r   r   r   +   r   c                   C   s   t dS )Nr   r   r   r   r   r   r   ,   r   Fc                   C   s   t g S r   r   r   r   r   r   r   -   r   c                   C   s   t dd dD S )Nc                 s   s   | ]
}|V  qd S r   r   .0_r   r   r   	<genexpr>.   s     2TestSeriesConstructors.<lambda>.<locals>.<genexpr>r   r   r   r   r   r   r   .   r   c                   C   s
   t d dS Ndatar   r   r   r   r   r   /   r   c                   C   s
   t i dS r$   r   r   r   r   r   r   0   r   c                   C   s
   t ddS )Nr   r%   r   r   r   r   r   r   1   r   c                   C   s
   t g dS r$   r   r   r   r   r   r   2   r   c                   C   s   t dd dD dS )Nc                 s   s   | ]
}|V  qd S r   r   r   r   r   r   r"   3   s     r#   r   r%   r   r   r   r   r   r   3   r   c              	   C   sL   t jtdd t }| }W 5 Q R X t|jdks8tt j|||d d S )NFZcheck_stacklevelr   check_index_type)tmassert_produces_warningDeprecationWarningr   lenindexAssertionErrorassert_series_equal)selfconstructorr)   expectedresultr   r   r   test_empty_constructor"   s
    z-TestSeriesConstructors.test_empty_constructorc              
   C   sF   d}t jdtg}|D ],}tjt|d tg d|d W 5 Q R X qd S )Nznot understoodzpd.Timestampmatchtime)namedtype)pdr   listpytestraises	TypeErrorr   )r1   msgZinvalid_listr:   r   r   r   test_invalid_dtype>   s
    z)TestSeriesConstructors.test_invalid_dtypec              	   C   sN   t ddg}t jddg|d}tjtdd t|dd	gd
 W 5 Q R X d S )N)ai8)bZf4)   g?)   ir:   zUse DataFrame insteadr6   ABr.   )npr:   arrayr=   r>   
ValueErrorr   )r1   Zc_dtypeZcdt_arrr   r   r   test_invalid_compound_dtypeF   s    z2TestSeriesConstructors.test_invalid_compound_dtypec                 C   sF   t d}t|trttt dgdks,ttt dgdksBtd S )Ng      ?      ?rE   )r   
isinstancefloatr/   int)r1   Zscalarr   r   r   test_scalar_conversionN   s    z-TestSeriesConstructors.test_scalar_conversionc           	   	   C   sp  t jtdd t }W 5 Q R X |jjs,tt|}|jjs@tt |j|jsTtt|jt|jkslttdt	j
gddgd}|jt	jkst|d t	j
kst|jjrtt jtdd t jjrtW 5 Q R X tjtdd" tt	jd	d	t	d	d W 5 Q R X d
|_t|j}d
}||ks0ttddgd	dgg}d}tjt|d t| W 5 Q R X d S )NFr'   Zhellor   rE   rJ   zData must be 1-dimensionalr6      r         z8initializing a Series from a MultiIndex is not supported)r*   r+   r,   r   r.   Zis_all_datesr/   ZequalContentsidrK   NaNr:   object_r=   r>   	ExceptionrandomZrandnaranger9   r   Zfrom_arraysNotImplementedError)	r1   datetime_seriesZempty_seriesZderivedmixedrsZxpmr@   r   r   r   test_constructorX   s.    &
z'TestSeriesConstructors.test_constructorinput_classc              	   C   s>  t jtdd t }t| }W 5 Q R X t j||dd tdd}t| dd}t j||dd tdd}t| dd}t j||dd |tk	r:t jtdd& ttdd}t| tdd}W 5 Q R X t || ttjtdd}t| tddd	}t || td
t	tdd}td
tdd}t || d S )NFr'   r(   float64rG   category
   rJ   r.   r:    rT   r:   r.   )
r*   r+   r,   r   r0   r<   rangerK   nanstr)r1   rc   emptyempty2r   r   r   test_constructor_empty}   s*    


z-TestSeriesConstructors.test_constructor_empty	input_argrk   c                 C   s4   t dtdd}t |tdd}tj||dd d S )Nrd   rf   ri   rJ   Fr(   r   rj   r*   r0   )r1   rp   rm   rn   r   r   r   test_constructor_nan   s    z+TestSeriesConstructors.test_constructor_nanr:   f8rC   M8[ns]m8[ns]re   objectzdatetime64[ns, UTC]r.   Nc                 C   s0   t j||d}|j|kstt|dks,td S )Nri   r   )r;   r   r:   r/   r-   )r1   r:   r.   r4   r   r   r   test_constructor_dtype_only   s    z2TestSeriesConstructors.test_constructor_dtype_onlyc              	   C   sH   t jtdd tjdddgd}W 5 Q R X |j dddgksDtd S )NFr'   rD   rB   crJ   )r*   r+   r,   r;   r   r.   tolistr/   r1   r4   r   r   r   $test_constructor_no_data_index_order   s    z;TestSeriesConstructors.test_constructor_no_data_index_orderc                 C   s(   t jdgtd}t|jd s$td S NrE   rg   r   )r;   r   rl   rK   isnanilocr/   rz   r   r   r   $test_constructor_no_data_string_type   s    z;TestSeriesConstructors.test_constructor_no_data_string_typeitementryu   ѐ   c                 C   s,   t j|dgtd}|jd t|ks(td S r|   )r;   r   rl   r~   r/   )r1   r   r4   r   r   r   +test_constructor_string_element_string_type   s    zBTestSeriesConstructors.test_constructor_string_element_string_typec                 C   sl   t dd g|d}| }t ddg}t|| |jd d ksBtt dtjg|d}t|jd shtd S )NxrG   FTrE   )	r   r   r*   r0   r~   r/   rK   rk   r}   )r1   string_dtypeZserr4   r3   r   r   r   $test_constructor_dtype_str_na_values   s    z;TestSeriesConstructors.test_constructor_dtype_str_na_valuesc                 C   sH   ddddg}t |}tddddg|d	}t||d	}t||  d S )
NdrD   rB   rx   rV      rT   rJ   )sortedr   r*   r0   Z
sort_index)r1   Zindex1index2s1s2r   r   r   test_constructor_series   s
    z.TestSeriesConstructors.test_constructor_seriesc                 C   s@   G dd d}t ttddd}t | dd}t|| d S )Nc                   @   s   e Zd Zdd ZdS )z>TestSeriesConstructors.test_constructor_iterable.<locals>.Iterc                 s   s   t dD ]
}|V  qd S )Nrf   )rj   )r1   ir   r   r   __iter__   s    zGTestSeriesConstructors.test_constructor_iterable.<locals>.Iter.__iter__N)__name__
__module____qualname__r   r   r   r   r   Iter   s   r   rf   int64rG   r   r<   rj   r*   r0   )r1   r   r3   r4   r   r   r   test_constructor_iterable   s    z0TestSeriesConstructors.test_constructor_iterablec                 C   s4   t ttddd}t tddd}t|| d S )Nrf   r   rG   r   r1   r3   r4   r   r   r   test_constructor_sequence   s    z0TestSeriesConstructors.test_constructor_sequencec                 C   s"   t dg}t d}t|| d S )Nabcr   r*   r0   r   r   r   r   test_constructor_single_str   s    
z2TestSeriesConstructors.test_constructor_single_strc                 C   sZ   t dddgdd}dddgdtjdddgddfD ]"}t |dddgd}t|| q2d S )	NrE   rU   rT   r   rG   rE   rU   rT   r   rJ   )r   rK   rL   r*   r0   )r1   r3   objr4   r   r   r   test_constructor_list_like   s    $z1TestSeriesConstructors.test_constructor_list_likeboolint32r   rd   c                 C   s(   t tdddg|d}|j|ks$td S )Nr   rU   rV   rG   )r   r   r:   r/   )r1   r:   sr   r   r   test_constructor_index_dtype   s    z3TestSeriesConstructors.test_constructor_index_dtype
input_valsrE   rU   12z1/1/2011Hperiodsfreq
US/Eastern)r   r   tzr      )leftrightc                 C   s*   t ||d}t ||}t|| d S NrG   r   astyper*   r0   )r1   r   r   r4   r3   r   r   r   test_constructor_list_str   s    z0TestSeriesConstructors.test_constructor_list_strc                 C   sJ   t ddtjg|d}t ddtjgtd}t|| t|d sFtd S )NrO          @rG   z1.0z2.0rU   )r   rK   rk   rv   r*   r0   r}   r/   )r1   r   r4   r3   r   r   r   test_constructor_list_str_na  s    z3TestSeriesConstructors.test_constructor_list_str_nac                 C   sr   dd t dD }t|}tt d}t|| dd t dD }t|t ddd}t dd|_t|| d S )Nc                 s   s   | ]
}|V  qd S r   r   r    r   r   r   r   r"     s     zDTestSeriesConstructors.test_constructor_generator.<locals>.<genexpr>rf   c                 s   s   | ]
}|V  qd S r   r   r   r   r   r   r"     s        rJ   )rj   r   r*   r0   r.   )r1   genr4   expr   r   r   test_constructor_generator  s    z1TestSeriesConstructors.test_constructor_generatorc                 C   sr   t dd td}t|}ttd}t|| t dd td}t|tddd}tdd|_t|| d S )Nc                 S   s   | S r   r   r   r   r   r   r   %  r   z=TestSeriesConstructors.test_constructor_map.<locals>.<lambda>rf   c                 S   s   | S r   r   r   r   r   r   r   +  r   r   rJ   )maprj   r   r*   r0   r.   )r1   ra   r4   r   r   r   r   test_constructor_map#  s    z+TestSeriesConstructors.test_constructor_mapc                 C   s   t jddddddgdddgdd}t|}t|j| tt ddd	gd
d}t jddd	gd
d}t|| tt ddd	gdd}t|stt|j	sttddd	gdd}t|stt|j	std S )Nr   rE   rU   rB   rD   rx   T)ZfastpathrT   r   rG   re   )
r;   r
   r   r*   Zassert_categorical_equalvaluesr0   r   r/   r:   )r1   catresr4   r3   r   r   r   r   test_constructor_categorical0  s    "z3TestSeriesConstructors.test_constructor_categoricalc           	   	   C   s  t ddddddddg}t|dd}|jdks2tt|t|ksFtt|j t| td|i}|d }t	|| |j
d d df }t	|| t|t|kstt|j t| td|i}|d }t	|| t|t|kstt|j t| t||dd	}|d }|d
 }t	|| tj	||dd |jd
ksNtt|t|ksdtt|j t| tddgddgddggddgd}t |j|d< |j
d j}|jj
d }||kst|jd }||kst|jjd }||kstd S )NrB   rD   rx   rH   r9   re   r   rE   )rH   rI   CrI   F)Zcheck_nameszJohn P. DoerU   z	Jane DoveZ	person_idperson_name)columns)r
   r   r:   r/   r-   rl   r   r   r*   r0   r~   r9   r   loc)	r1   Zfactorr   dfr4   Zresult1Zresult2r   r3   r   r   r   *test_constructor_categorical_with_coercionB  sR    




zATestSeriesConstructors.test_constructor_categorical_with_coercionc                 C   s   t jddgtdddgddd}t|dks0tt|jjt 	dddg |jj
sXtt jddgtddgd}t|s~tt|jjt 	ddg |jj
dksttddd	gtddgddd
}tddgdd	gtddgddd
}tj||dd d S )NrB   rD   rx   T)orderedrG   Fr   rE   rg   )Zcheck_categorical)r;   r   r	   r   r/   r*   assert_index_equalr   
categoriesr   r   r0   r1   r4   r3   r   r   r   "test_constructor_categorical_dtypex  s,         z9TestSeriesConstructors.test_constructor_categorical_dtypec                 C   sd   t tddd}ttd|d}ttd|d}t|dd}t|| t|dd}t|| d S )NZdabcT)r   r   ZabcabcrG   re   )r	   r<   r   r
   r*   r0   )r1   Zcdtr3   r   r4   r   r   r   #test_constructor_categorical_string  s    z:TestSeriesConstructors.test_constructor_categorical_stringc                 C   sx  t ddddg}t|dd}|j|k	s*tdddg|j_tjddddgtjd	}tjddddgtjd	}t	
| | t	
| | d|d
< tjddddgtjd	}t	
| | t	
| | t ddddg}t|}|j|kstdddg|j_tjddddgtjd	}t	
| | t	
| | d|d
< tjddddgtjd	}t	
| | t	
| | d S )NrB   rD   rx   T)copyrE   rU   rT   rG   r   )r
   r   r   r/   r   rK   rL   r   rY   r*   assert_numpy_array_equalZ	__array__r   )r1   r   r   Zexp_sZexp_catZexp_s2r   r   r   !test_categorical_sideeffects_free  s.    z8TestSeriesConstructors.test_categorical_sideeffects_freec                 C   sL   t jdddgtddgd}t t jddtjgddgd}t|| d S )NrB   rD   rx   rG   )r   )r;   r   r	   r
   rK   rk   r*   r0   )r1   r   r   r   r   r   test_unordered_compare_equal  s     z3TestSeriesConstructors.test_unordered_compare_equalc                 C   s  t jdtd}t|}ttjtjtjg}t|| d|d< d|d< ddd	g}t||d
}tdtjdg|d
}t|| d|d< t||d
}tdddg|d
}t|| t jdtd}t|}ttjtjtjgtd}t|| d|d< d|d< ddd	g}t||d
}tdtjdg|td}t|| d|d< t||d
}tdddg|td}t|| t jdt	d}t|}ttjtjtjgt
d}t|| d|d< d|d< ddd	g}t||d
}tdtjdg|t
d}t|| d|d< t||d
}tdddg|t	d}t|| t jddd}t|}ttttgdd}t|| tddd|d< tddd|d< ddd	g}t||d
}ttdddttdddg|dd}t|| tddd|d< t||d
}ttdddtdddtdddg|dd}t|| d S )NrT   rG           r   r   rU   rB   rD   rx   rJ   rO   rE   rg   TFrt     rT   )ma
masked_allrQ   r   rK   rk   r*   r0   rR   r   rv   r   r   )r1   r&   r4   r3   r.   r   r   r   test_constructor_maskedarray  s    



 z3TestSeriesConstructors.test_constructor_maskedarrayc                 C   sB   t jdtd }t|}ttjtjtjg}t	|| d S )Nr   rG   )
r   r   rQ   Zharden_maskr;   r   rK   rk   r*   r0   r1   r&   r4   r3   r   r   r   %test_constructor_maskedarray_hardened  s    
z<TestSeriesConstructors.test_constructor_maskedarray_hardenedc                 C   s:   t dddd}dd |D }t||d}|j|ks6td S )NZ20090415Z20090519rI   r   c                 S   s   i | ]
}|d qS rE   r   )r    kr   r   r   
<dictcomp>  s      zNTestSeriesConstructors.test_series_ctor_plus_datetimeindex.<locals>.<dictcomp>rJ   )r   r   r.   r/   )r1   rngr&   r4   r   r   r   #test_series_ctor_plus_datetimeindex  s    z:TestSeriesConstructors.test_series_ctor_plus_datetimeindexc                 C   s,   t dddg}t|jttd d S )Nr   rE   rU   rT   )r   r*   r   r.   r;   r   rK   r\   r1   r   r   r   r   test_constructor_default_index  s    z5TestSeriesConstructors.test_constructor_default_indexinputrT   r   rB   rD   c                 c   s   | ]
}|V  qd S r   r   r   r   r   r   r"   )  s     z TestSeriesConstructors.<genexpr>c                 C   s   | S r   r   r   r   r   r   r   *  r   c              	   C   s4   d}t jt|d t|tdd W 5 Q R X d S )Nz-Length of passed values is 3, index implies 4r6   rV   rJ   )r=   r>   rM   r   rK   r\   )r1   r   r@   r   r   r   test_constructor_index_mismatch"  s    z6TestSeriesConstructors.test_constructor_index_mismatchc                 C   s>   t tdtddd}t dtddd}t|| d S )Nd   rV   r   rg   )r   rK   rL   r\   r*   r0   r   r   r   r   test_constructor_numpy_scalar5  s    z4TestSeriesConstructors.test_constructor_numpy_scalarc              	   C   s6   d}t jt|d tdgdddgd W 5 Q R X d S )Nz-Length of passed values is 1, index implies 3r6   foorB   rD   rx   rJ   r=   r>   rM   r   r1   r@   r   r   r   test_constructor_broadcast_list=  s    z6TestSeriesConstructors.test_constructor_broadcast_listc                 C   s2   t  }||g}t|ddgd}t|ts.td S )Nr   rE   rJ   )r*   ZmakeTimeDataFramer   rP   r/   )r1   r   objsr   r   r   r   test_constructor_cornerE  s    z.TestSeriesConstructors.test_constructor_cornerc                 C   s`   t tdddgdd}|jtdks,tt tddtjgddd}|jtdks\td S )NrO   g       @rC   rG   Tr   r:   rs   )r   rK   rL   r:   r/   rk   r   r   r   r   test_constructor_sanitizeK  s    z0TestSeriesConstructors.test_constructor_sanitizec                 C   sv   dgt dgfD ]^}t|}tj|dtd}t|| d|d< ||rPt|d dks`t|d dkstqd S )NrO   Tr   r   r   )	rK   rL   r   r;   rQ   r*   r0   equalsr/   )r1   r&   r   yr   r   r   test_constructor_copyR  s    z,TestSeriesConstructors.test_constructor_copyZ20170101r   r   r   z1 dayZ2012Q1Qr   c                 C   s
   t | jS r   typer   r   r   r   r   r   m  r   )idsc                 C   s$   t |}|jjd j|k	s td S )Nr   )r;   r   _datablocksr   r/   )r1   r.   r   r   r   r   test_constructor_limit_copiesb  s    
z4TestSeriesConstructors.test_constructor_limit_copiesc              	   C   s   t jtdd td tdd}W 5 Q R X |jtjks:ttd tdt	d}|jtj
ks\tt jtdd( ttd gd}ttd gd}W 5 Q R X t || d S )NFr'   r   rJ   rg   )r*   r+   r,   r   rj   r:   rK   rd   r/   rv   rY   rL   r   r0   r1   r   r3   r   r   r   test_constructor_pass_nonew  s    z1TestSeriesConstructors.test_constructor_pass_nonec                 C   s   t tjtjgtjd}|jtjks&ttt tjtjg| tt ttjtjg| t t	j
t	j
g}|jdkszttt t	j
t	j
g| tt tt	j
t	j
g| tt t	j
tjg| tt tt	j
tjg| tt tjt	j
g| tt ttjt	j
g| d S )NrG   datetime64[ns])r   rK   rk   rd   r:   r/   r*   r0   rL   r;   r   )r1   r   r   r   r   test_constructor_pass_nan_nat  s    z4TestSeriesConstructors.test_constructor_pass_nan_natc              	   C   s4   d}t jt|d tdddgtd W 5 Q R X d S )Nz!could not convert string to floatr6   rB   rD   rx   rG   )r=   r>   rM   r   rQ   r   r   r   r   test_constructor_cast  s    z,TestSeriesConstructors.test_constructor_castc              	   C   s0   d}t jt|d tdg|d W 5 Q R X d S )Nz5Trying to coerce negative values to unsigned integersr6   rG   )r=   r>   OverflowErrorr   )r1   Z
uint_dtyper@   r   r   r   (test_constructor_unsigned_dtype_overflow  s    z?TestSeriesConstructors.test_constructor_unsigned_dtype_overflowc              	   C   s4   d}t jt|d tdddg|d W 5 Q R X d S )Nz)Trying to coerce float values to integersr6   rE   rU         @rG   r   )r1   Zany_int_dtyper@   r   r   r   "test_constructor_coerce_float_fail  s    z9TestSeriesConstructors.test_constructor_coerce_float_failc                 C   s6   t dddg|d}t dddg|}t|| d S )NrE   rU   r  rG   r   )r1   Zfloat_dtyper   r3   r   r   r   #test_constructor_coerce_float_valid  s    z:TestSeriesConstructors.test_constructor_coerce_float_validc                 C   s8   t dddg}t |tjd}d|d< |d dks4td S )NrE   rU   rT   rG   r   )r   rK   r   r/   )r1   r   r   r   r   r   test_constructor_dtype_no_cast  s    z5TestSeriesConstructors.test_constructor_dtype_no_castc                 C   s   t tddgtd}|jd tdks*t|jd dks<t|jtksJtd }d }d }td	 }tj	|||d
|d}|j
d }|jtkst|j
d }|jtkstd S )N20130101ZNOVrG   r   rE   z216 3T19z	2T15 4H19z416 4T20z2016-01-22 2019-09-07)wing1wing2matrJ   Z3T19Z216)r   r   rv   r~   r/   r:   splitr;   Zto_datetimer   r   )r1   r   Zbellyr  r	  r
  r   r4   r   r   r   "test_constructor_datelike_coercion  s    

z9TestSeriesConstructors.test_constructor_datelike_coercionc                 C   sP   t d d d d t d gt d d t d gfD ]}t|}|jdks0tq0d S Nrt   )rK   rL   r   nowr   r:   r/   )r1   arrr4   r   r   r   %test_constructor_datetimes_with_nulls  s
    z<TestSeriesConstructors.test_constructor_datetimes_with_nullsc              	   C   s  t tdtdd}t| s"tt ttdd}t| rBtt tjdtdd}t| sftt tdddddtgdd	}t|d st|j	dkstt tdddddtjgdd	}t|d st|j	dkstt
td
ddt
td
ddt
td
ddg}t |}|j	dks(ttj|jd< |j	dksDtt td
ddtd
ddtd
ddgdd	}t t |tjd dd	}t|| t |dd	}t|| t tjtd
ddtd
ddgdd	}t tjg|dd   dd	}t|| t |dd	}|d d}tjt|d |d W 5 Q R X t |tjd	}t |tj}t|| t tdddg}|d tdddddkstt tdddg}|d tdddddkstt tddgddgd}|d tdkst|d dksttdddd}|tjd}t ||d}dD ]4}|tjd|}	t |	|}t|| q2t ||td}dD ]8}|tjd|}	t |	|td}t|| qztjdd | D td	}
t |
|}t|j|
 |j	tkstt d tjd g}|j	dkstt tjtjd g}|j	dks:tt tjd d g}|j	dksZtt tjtjd g}|j	dks|ttddd!}t |jd jd ksttddd"d#}t t |jd jd"ksttddd$d#}t t |jd jd$kstt d%d&tjg}|j	d'kst|d tjks.td(t |ks@tt td)ddtdddtjg}|j	d'kspt|d tjkstd(t |kstt td)ddtdddtjg}|j	d'kst|d tjkstd*t |kstd S )+Nrt   r   ri   rJ   r   rE   rU   r   rG   i  rT   r   i@B zM8[ms]r   zCcannot astype a datetimelike from \[datetime64\[ns\]\] to \[int32\]r6   r   i  r  rB   rD   z01-Jan-2015z01-Dec-2015Mr   )r   DmsusnszM8[{0}]rg   c                 S   s   g | ]}|  qS r   )date)r    r   r   r   r   
<listcomp>;  s     zLTestSeriesConstructors.test_constructor_dtype_datetime64.<locals>.<listcomp>z2013-08-05 15:30:00.000001r   UTCr   r   l   *}aiZlrv   r   i  rX   )!r   r   rj   r   allr/   rK   rk   r   r:   
datetime64r~   r   r   r*   r0   r;   r   r=   r>   r?   r   r   viewndarrayformatrv   rL   Zto_pydatetimer   r   r   rl   )r1   r   datesr3   r4   Zdtsr@   Zvalues2r:   Zvalues1Zdates2Zseries1drr   r   r   !test_constructor_dtype_datetime64  s      


  z8TestSeriesConstructors.test_constructor_dtype_datetime64c                 C   s  t dddd}t|}|jjdks&t|jdks4tt|jsBtdt|ksRt|j}t|t	j
sht|jdksvtt|}|dj|jjd}t|| |jd	 }|td
dddkst|d	 }|td
dddkst|tdddg|jd }t||d	d  |jd	d }t|t|d	d  t|jd	d |jdd  g}t|| dt|ksrt| }dt|kstdt|ksttt dddd}dt|ksttj|dd}t|| ttjdddtjdddg}|jdksttj|dddks$tttjdddtjdddg}|jdksTttj|dddksltttjd	dgdd}ttjddgdd}t|| d S )Nr  rT   r   r   zdatetime64[ns, US/Eastern]r   r  r   r   z2013-01-01 00:00:00-0500r  )r   r   TFrJ   rU   rE   r     Zinferr   z2013-01-01 13:00:00-0800
US/Pacificz2013-01-02 14:00:00-0800zdatetime64[ns, US/Pacific])Zskipnar  rv   r   rg   )r   r   r:   r9   r/   r   rl   r   rP   rK   r  r;   ZDatetimeIndextz_localize
tz_convertdtr   r*   r   r~   r   r.   r0   concatshiftr   Zinfer_dtyper   )r1   r  r   r4   r   tr3   r   r   r   !test_constructor_with_datetime_tze  sn    

    "z8TestSeriesConstructors.test_constructor_with_datetime_tz	arr_dtypeZM8Zm8unitr  r  r  r   hra   r  c                 C   sP   d ||}tjdddg|d}t|}||}t||}t|| d S )Nz{}[{}]rE   rU   rT   rG   )r  rK   rL   r   r   r*   r0   )r1   r+  r:   r,  r  r   r4   r3   r   r   r   &test_construction_to_datetimelike_unit  s    
z=TestSeriesConstructors.test_construction_to_datetimelike_unitargz2013-01-01 00:00:00c                 C   s4   t |gdd}t t|jd}t|| d S )Nzdatetime64[ns, CET]rG   ZCET)r   r;   r   r&  r$  r*   r0   )r1   r/  r4   r3   r   r   r   7test_constructor_with_naive_string_and_datetimetz_dtype  s    zNTestSeriesConstructors.test_constructor_with_naive_string_and_datetimetz_dtypeinterval_constructorc                 C   sD   |j tddd}t|}|jdks*ttt|j	t| d S )NrT   r   closedzinterval[int64])
Zfrom_breaksrK   r\   r   r:   r/   r*   r   r   r   )r1   r1  Z	intervalsr4   r   r   r   test_construction_interval  s    z1TestSeriesConstructors.test_construction_intervaldata_constructorr<   zndarray[object]c                 C   sT   t ddt ddd g}t ||}t t|}|jdksDtt|| d S )Nr   rE   rU   zinterval[float64])r;   Intervalr   r   r:   r/   r*   r0   r1   r5  r&   r4   r3   r   r   r   test_constructor_infer_interval  s
    z6TestSeriesConstructors.test_constructor_infer_intervalc                 C   sN   t jddddt jddddg}t||}|jtks:t| |ksJtd S )Nr   rE   Zbothr2  rU   Zneither)r;   r6  r   r:   rv   r/   ry   )r1   r5  r&   r4   r   r   r   &test_constructor_interval_mixed_closed  s     z=TestSeriesConstructors.test_constructor_interval_mixed_closedc                 C   sp   t tjdddd}t ||jd}t|| t |jd|jd}t|| t |j|jd}t|| d S )Nr  rT   r   r   rG   r  )	r   r;   r   r:   r*   r0   r&  r%  r   )r1   r   r4   r   r   r   test_construction_consistency  s    z4TestSeriesConstructors.test_construction_consistencyc                 C   sT   t ddt ddd g}t ||}t t|}t|| |jdksPtd S )N2000r  2001	Period[D])r;   Periodr   r   r*   r0   r:   r/   r7  r   r   r   test_constructor_infer_period  s
    z4TestSeriesConstructors.test_constructor_infer_periodc                 C   sD   t ddt ddg}t |}|jtks0t| |ks@td S )Nr;  r  r<  rH   )r;   r>  r   r:   rv   r/   ry   )r1   r&   r4   r   r   r   .test_constructor_period_incompatible_frequency   s    
zETestSeriesConstructors.test_constructor_period_incompatible_frequencyc                 C   sB   t dddd}t|}|jdks$tt|t}t|| d S )Nr  r   r  r   r=  )r   r   r:   r/   r   rv   r*   r0   )r1   pir   r3   r   r   r   test_constructor_periodindex  s
    z3TestSeriesConstructors.test_constructor_periodindexc                 C   s   dddd}t |ddddgd	}t d
dtjdgddddgd	}t|| td}|d d|d
 d
i}t ||d	}t tj|tjd}d|jd< d
|jd
< t|| d S )Nr   rO   r   )rB   rD   rx   rD   rx   r   rB   rJ   rE   rU   r   r   rG   )r   rK   rk   r*   r0   ZmakePeriodIndexrd   r~   )r1   r   r4   r3   Zpidxr   r   r   test_constructor_dict  s    


z,TestSeriesConstructors.test_constructor_dictc                 C   sB   ddgdgdggi}t |dgdd}t |dgd}t|| d S )NrB   rU   rT   rV   rv   rg   rJ   r   r1   r   r4   r3   r   r   r   /test_constructor_dict_list_value_explicit_dtype  s    zFTestSeriesConstructors.test_constructor_dict_list_value_explicit_dtypec                 C   s:   dddd}t |}t dddgtdd}t|| d S )NrE   r   rU   )rD   rB   rx   ZbacrJ   )r   r<   r*   r0   rD  r   r   r   test_constructor_dict_order%  s    z2TestSeriesConstructors.test_constructor_dict_ordervaluec                 C   s   dd|dt ddddi}t| }tddddgd|tjdgd}t|| d	dd
tjfdd|fdi}t| }tdddgtd	d
tjfd|fgd}t|| d S )NrE   rB   rD   rk   rx   rV   r   rJ   rE   rE   rU   rT   )rQ   r   sort_valuesrK   rk   r*   r0   r   )r1   rG  r   r4   r3   r   r   r   test_constructor_dict_nan_key.  s     z4TestSeriesConstructors.test_constructor_dict_nan_keyc           	         s   ddddg ddddg fd	d
}|t j}|dd }|t}tdd  D }t|}t|}t|}t|| t|| t|| d S )Nz
1984-02-19z
1988-11-06z
1989-12-03z
1990-03-15g{\IAi gtyZQAr   c                    s   t t fddD S )Nc                 3   s   | ]} |V  qd S r   r   r    r   r2   r   r   r"   E  s     zeTestSeriesConstructors.test_constructor_dict_datetime64_index.<locals>.create_data.<locals>.<genexpr>)dictziprL  Zdates_as_strr   rL  r   create_dataD  s    zRTestSeriesConstructors.test_constructor_dict_datetime64_index.<locals>.create_datac                 S   s   t | dS )Nz%Y-%m-%d)r   strptimer   r   r   r   r   H  r   zOTestSeriesConstructors.test_constructor_dict_datetime64_index.<locals>.<lambda>c                 s   s   | ]}t |V  qd S r   )r   rK  r   r   r   r"   K  s     zPTestSeriesConstructors.test_constructor_dict_datetime64_index.<locals>.<genexpr>)rK   r  r   r   r*   r0   )	r1   rP  Zdata_datetime64Zdata_datetimeZdata_Timestampr3   Zresult_datetime64Zresult_datetimeZresult_Timestampr   rO  r   &test_constructor_dict_datetime64_index>  s    
z=TestSeriesConstructors.test_constructor_dict_datetime64_indexc                 C   s4   |ddi}t |}t dgdgd}t|| d S )NrT   ZthreerJ   r   )r1   Znon_mapping_dict_subclassZndmr4   r3   r   r   r   test_constructor_mappingU  s    z/TestSeriesConstructors.test_constructor_mappingc                 C   s&   dddg}t |}t||ks"td S )NrH  rU   rU   rU   rT   )r   r<   r/   r1   r&   r   r   r   r   test_constructor_list_of_tuples]  s    
z6TestSeriesConstructors.test_constructor_list_of_tuplesc                 C   s    d}t |}t||kstd S )N)rH  rT  rU  )r   tupler/   rV  r   r   r    test_constructor_tuple_of_tuplesb  s    z7TestSeriesConstructors.test_constructor_tuple_of_tuplesc                 C   s@   ddd}t | }t ddgtddgd}t|| d S )NrT      )rE   rU   Nr   r[  r\  rJ   )r   rI  r   from_tuplesr*   r0   r   r   r   r   test_constructor_dict_of_tuplesg  s    
z6TestSeriesConstructors.test_constructor_dict_of_tuplesc              	   C   s^   dddddh}t jtdd t| W 5 Q R X t|}t jtdd t| W 5 Q R X d S )	NrE   rU   rT   rV   r   z'set' type is unorderedr6   z'frozenset' type is unordered)r=   r>   r?   r   	frozenset)r1   r   r   r   r   test_constructor_setm  s    z+TestSeriesConstructors.test_constructor_setz+ignore:elementwise comparison:FutureWarningc                 C   s   ddddd}t |}t|j dddt d}t |}|jtjksLt	ddddd}t |}|jtjksrt	d	dd
}t |t
d}|jtjkst	d S )Nr   rE   rU   rT   )rB   rD   rx   r   r   r   30rB   rD   rG   )r   r*   Zassert_is_sortedr.   r   r  r:   rK   rY   r/   rQ   rd   )r1   r&   seriesr   r   r   test_fromDictv  s    
z$TestSeriesConstructors.test_fromDictc                 C   s   t tj|jtjd}|jtjks$tt|t|ks8tt d|jd}|jtj	ksVtt|t|ksjtt
 }t ||jd}|jdkstt|t|kstt d|jdd}t d|jdd}|jdkstt|t|kstt|| d S )Nrg   r   rJ   rt   r   re   )r   rK   rX   r.   rd   r:   Zfloat_r/   r-   rY   r   r  r   r*   r0   )r1   r^   Znansstringsr   r  Zcategoricalr3   r   r   r   test_fromValue  s    z%TestSeriesConstructors.test_fromValuec              	   C   s  t dd tdD }|jdks$tt tddg}|jdksBtt tddtddtddg}|jdksrtt tddtgd	d
}|jdkstt tddtjgd	d
}|jdkstt tdt	jgd	d
}|jdkstt tdtg}|jdkstt tdt
g}|jdks&tt tdtjg}|jdksJtt t	jtdg}|jdksntt tddg}|jdkst|d d}tjt|d |d W 5 Q R X d}tjt|d t tdddgd	d
 W 5 Q R X t dd tdD dg }|jdks"tt d t	jdg}|jdksBtt tjt	jdg}|jdksdtt t	jd dg}|jdkstt t	jtjdg}|jdkstd S )Nc                 S   s   g | ]}t |d qS daysr   r   r   r   r   r    s     zMTestSeriesConstructors.test_constructor_dtype_timedelta64.<locals>.<listcomp>rT   ztimedelta64[ns]rE   ri  rU   r   ru   rG   i rv   r   zAcannot astype a timedelta from \[timedelta64\[ns\]\] to \[int32\]r6   r   z+Could not convert object to NumPy timedeltar   c                 S   s   g | ]}t |d qS rh  rk  r   r   r   r   r    s     z1 Day)r   rj   r:   r/   r   rK   timedelta64r   rk   r;   r   r   r=   r>   r?   rM   )r1   tdr@   r   r   r   r   "test_constructor_dtype_timedelta64  sN    "
 z9TestSeriesConstructors.test_constructor_dtype_timedelta64c                 C   sD   t tdtdddg}t tdtdddgdd}t|| d S )Nr  r   r!  rv   rG   )r   r   r*   r0   r   r   r   r   test_constructor_mixed_tz  s    z0TestSeriesConstructors.test_constructor_mixed_tzc                 C   sD   t dddtgdd}|d }t|s(t||d< t|d s@td S )Nr   r"  i  rt   rG   rT   rU   )r   r   r   r/   )r1   rd  valr   r   r   test_NaT_scalar  s
    z&TestSeriesConstructors.test_NaT_scalarc                 C   s,   t tjgd}t tg}t|| d S r  )r   rK   rk   r   r   r*   r0   r   r   r   r   test_NaT_cast  s    
z$TestSeriesConstructors.test_NaT_castc                 C   s^   dddt dddddfD ]@}dd	d
gtd
dddfD ]}t||d}|j|ks8tq8qd S )Ni	  g     H@r9   r      r   u   אrE   rU   rT   r   rc  r   )r   rK   onesr   r9   r/   )r1   nr&   r   r   r   r   test_constructor_name_hashable  s     z5TestSeriesConstructors.test_constructor_name_hashablec                 C   sf   d}dgt dddifD ]F}dgt dddifD ]*}tjt|d t||d W 5 Q R X q4qd S )Nz$Series\.name must be a hashable type	name_listrU   rE   r6   r   )rK   rt  r=   r>   r?   r   )r1   r@   ru  r&   r   r   r    test_constructor_name_unhashable  s
    z7TestSeriesConstructors.test_constructor_name_unhashablec                 C   s&   t ttddd}|jdks"td S )N1/1/2000rf   r   rt   )r   r<   r   r:   r/   )r1   rd  r   r   r   test_auto_conversion  s    z+TestSeriesConstructors.test_auto_conversionc              	   C   sr   t jdddgdd}t|}ttjdddd}t|| tt jd	d
dgdd}t|ttdddd d S )NrE   rU   rT   ztimedelta64[s]rG   z00:00:01r   r   z
2013-01-01z
2013-01-02z
2013-01-03zdatetime64[D]r  r  )rK   rL   r   r;   r   r*   r0   r   )r1   r  r   r3   r   r   r   test_convert_non_ns  s    z*TestSeriesConstructors.test_convert_non_nsry  rf   z2000-Q1c                 C   s
   t | jS r   r   r   r   r   r   r   /  r   c              	   C   sj   d t|jd}tjt|d t|td W 5 Q R X t|t	j
d}t|t	j
}t|| d S )NzCannot cast {}.*? to r   r6   rG   )r  r   r   rstripr=   r>   r?   r   rQ   rK   r   r   r*   r0   )r1   r.   r@   r4   r3   r   r   r   'test_constructor_cant_cast_datetimelike(  s    z>TestSeriesConstructors.test_constructor_cant_cast_datetimelikec                 C   s
   t | jS r   r   r   r   r   r   r   K  r   c                 C   s   t |td}t |t}t|| t tj|tdtd}t |t}t|| t |ttd}t |t}t|| d S r   )r   rv   r   r*   r0   r;   r   )r1   r.   r   r   r   r   r   test_constructor_cast_objectD  s    
z3TestSeriesConstructors.test_constructor_cast_objectc              	   C   s.   d}t jt|d tg |d W 5 Q R X d S )Nz!dtype has no unit. Please pass inr6   rG   r   r1   r:   r@   r   r   r   /test_constructor_generic_timestamp_no_frequencyZ  s    zFTestSeriesConstructors.test_constructor_generic_timestamp_no_frequencyz	dtype,msg)zm8[ps]zcannot convert timedeltalike)zM8[ps]zcannot convert datetimelikec              	   C   s*   t jt|d tg |d W 5 Q R X d S )Nr6   rG   )r=   r>   r?   r   r  r   r   r   0test_constructor_generic_timestamp_bad_frequencyb  s    
zGTestSeriesConstructors.test_constructor_generic_timestamp_bad_frequencyZuint8c                 C   s:   t dddddg|pdd}t td|d}t|| d S )	Nr   rE   rU   rT   rV   r   rG   r   rq   )r1   r:   r3   r4   r   r   r   test_constructor_range_dtypeo  s    z3TestSeriesConstructors.test_constructor_range_dtypec                 C   s8   t dt dddg}t|}t|td}t|| d S )Nz2016-05-01 02:03:37z2016-04-30 19:03:37-0700r#  r!  rG   )r   r   rv   r*   r0   )r1   Zdt_listr4   r3   r   r   r   test_constructor_tz_mixed_datav  s    
z5TestSeriesConstructors.test_constructor_tz_mixed_data)ur   r   r   r=   markZparametrizer5   rA   rN   rS   rb   r<   rM  r   ro   rK   rk   rQ   rr   r;   r   rw   r{   r   r   r   r   r   r   r   r   r   r   r6  r   r   r   r   r   r   r   r   r   r   r   r   r   r   rj   r
   r   r   r   r   r   r   r   r   r   Z
Int64IndexZ
RangeIndexr   r   r   r   r  r  r  r  r  r  r   r*  r   rd   r.  r   r0  r   r   r4  rL   r8  r9  r:  r?  r@  rB  rC  rE  rF  rJ  rR  rS  rW  rY  r^  r`  filterwarningsre  rg  rn  ro  rq  rr  rv  rx  rz  r{  r}  r~  r  rl  r  r  r  r  r   r   r   r   r   !   sv  












%
$





6"M


	
	 P

  
  
  

	
	

J	

	


	

r   )'collectionsr   r   r   ZnumpyrK   Znumpy.mar   r=   Zpandas._libsr   Zpandas._libs.tslibr   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr	   Zpandasr;   r
   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr*   Zpandas.core.arraysr   r   r   r   r   r   r   <module>   s   8