U
    ùQ”iŠ&  ã                   @   s†   d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
mZmZ d dlmZ G dd„ dƒZej deeeg¡dd„ ƒZdS )	é    N)Ú
skip_if_no)Ú	DataFrameÚIndexÚSeriesÚ
date_rangec                '   @   s<  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
de d¡e d¡edddgd ƒe d¡e d¡e d¡e d¡e d¡e d¡e d¡eddgƒedd„ edƒD ƒƒej eddƒ¡ej eddddgdƒ¡g¡dd„ ƒZej	 
deed�edgƒg¡dd „ ƒZd!d"„ Zd#d$„ Zd%d&„ Z d'd(„ Z!d)d*„ Z"d+d,„ Z#d-d.„ Z$ej	 
d/d0eg¡d1d2„ ƒZ%ej	 
d/d3d4g¡d5d6„ ƒZ&d7d8„ Z'e(d9ƒd:d;„ ƒZ)d<d=„ Z*ej	 
d>d?d@dAdBg¡dCdD„ ƒZ+dEdF„ Z,dGdH„ Z-ej	 
dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmg$¡ej	 
d/e.e/e0eg¡dndo„ ƒƒZ1d3S )pÚTestSeriesMiscc                 C   s@   t tdƒƒ}dt|ƒkst‚dt|ƒks,t‚dt|ƒks<t‚d S )NZabcdÚstrÚdtÚcat©r   ÚlistÚdirÚAssertionError©ÚselfÚs© r   ú@/tmp/pip-unpacked-wheel-58ppya8e/pandas/tests/series/test_api.pyÚtest_tab_completion   s    z"TestSeriesMisc.test_tab_completionc                 C   sD   t tddd�ƒ}dt|ƒks t‚dt|ƒks0t‚dt|ƒks@t‚d S )Nú1/1/2015é   ©Úperiodsr	   r   r
   )r   r   r   r   r   r   r   r   Útest_tab_completion_dt   s    z%TestSeriesMisc.test_tab_completion_dtc                 C   sD   t tdƒdd�}dt|ƒks t‚dt|ƒks0t‚dt|ƒks@t‚d S )NZabbcdÚcategory©Údtyper
   r   r	   r   r   r   r   r   Útest_tab_completion_cat#   s    z&TestSeriesMisc.test_tab_completion_catc                 C   sJ   t tddd�ƒ d¡}dt|ƒks&t‚dt|ƒks6t‚dt|ƒksFt‚d S )Nr   r   r   r   r
   r   r	   )r   r   Úastyper   r   r   r   r   r   Útest_tab_completion_cat_str+   s    z*TestSeriesMisc.test_tab_completion_cat_strc                 C   s\   ddddddddd	d
dg}t tdƒƒ d¡}tdd„ |j ¡ D ƒƒ}t |tt|ƒƒ¡ d S )NÚ
categoriesÚcodesZorderedZset_categoriesZadd_categoriesZremove_categoriesZrename_categoriesZreorder_categoriesZremove_unused_categoriesZ
as_orderedZas_unorderedZaabbcder   c                 S   s   h | ]}|  d ¡s|’qS )Ú_)Ú
startswith)Ú.0Úrr   r   r   Ú	<setcomp>C   s     
 zFTestSeriesMisc.test_tab_completion_with_categorical.<locals>.<setcomp>)	r   r   r   Úsortedr
   Ú__dir__ÚtmÚassert_almost_equalÚset)r   Z
ok_for_catr   Úresultsr   r   r   Ú$test_tab_completion_with_categorical2   s    õz3TestSeriesMisc.test_tab_completion_with_categoricalÚindexé
   ÚfooÚbarZbazé   TFc                 C   s   g | ]}d |› �‘qS )Úar   )r$   Úir   r   r   Ú
<listcomp>T   s     zTestSeriesMisc.<listcomp>ée   ÚABCDZEFGHr   é   é   c                 C   sh   t |td�}t|ƒ}t|jjdd�ƒD ]<\}}|dk rVt|tƒrb| ¡ rb||ksbt	‚q&||ks&t	‚q&d S )N©r.   r   r   )Úleveléd   )
r   Úobjectr   Ú	enumerater.   ÚuniqueÚ
isinstancer   Úisidentifierr   )r   r.   r   Zdir_sr4   Úxr   r   r   Útest_index_tab_completionF   s     z(TestSeriesMisc.test_index_tab_completionÚserr   c              	   C   s*   d}t jt|d�� t|ƒ W 5 Q R X d S )Nzunhashable type: 'Series'©Úmatch)ÚpytestÚraisesÚ	TypeErrorÚhash©r   rD   Úmsgr   r   r   Útest_not_hashablec   s    z TestSeriesMisc.test_not_hashablec                 C   s   t  |j|¡ d S ©N)r)   Zassert_contains_allr.   )r   Údatetime_seriesr   r   r   Útest_containsi   s    zTestSeriesMisc.test_containsc                 C   sj   t ddtjgƒ}t |jdd�|jdd�¡ | ¡  d¡dksBt‚| d¡dksTt‚| 	d¡dksft‚d S )Nr8   r2   Zrows)Zaxisr.   r9   r   )
r   ÚnpÚnanr)   Úassert_series_equalZdropnaÚsumr   Z_get_axis_numberZ_get_axis_namer   r   r   r   Útest_axis_aliasl   s
    zTestSeriesMisc.test_axis_aliasc                 C   s   t  tj¡st‚d S rN   )ÚpydocÚgetdocr   r.   r   )r   r   r   r   Útest_class_axiss   s    zTestSeriesMisc.test_class_axisc                 C   sP   t tj dd¡dddgtddd�d�}d	d
„ }| |¡}| ¡ }t ||¡ d S )Niè  r9   ÚAÚBÚCz1/1/2000r   )Úcolumnsr.   c                 S   s   | |   ¡  S rN   )Úidxmax)rB   r   r   r   Úf€   s    z-TestSeriesMisc.test_ndarray_compat.<locals>.f)	r   rQ   ÚrandomÚrandnr   ÚapplyÚmaxr)   rS   )r   Ztsdfr^   ÚresultÚexpectedr   r   r   Útest_ndarray_compatx   s    
ý
z"TestSeriesMisc.test_ndarray_compatc                 C   s@   t tj d¡ƒ}t t |¡ƒ}t dtdƒdd�}t ||¡ d S )Nr/   r8   Zfloat64r:   )r   rQ   r_   r`   Z	ones_likeÚranger)   rS   )r   r   rc   rd   r   r   r   Útest_ndarray_compat_like_func‡   s    z,TestSeriesMisc.test_ndarray_compat_like_funcc                 C   s2   t tj d¡ƒ}t |jdd�|jjdd�¡ d S )Nr/   ÚF)Úorder)r   rQ   r_   r`   r)   r*   ZravelÚvaluesr   r   r   r   Útest_ndarray_compat_ravelŽ   s    z(TestSeriesMisc.test_ndarray_compat_ravelc                 C   s   t td�}|jst‚d S )Nr   )r   r=   Úemptyr   )r   Zs_emptyr   r   r   Útest_empty_method“   s    
z TestSeriesMisc.test_empty_methodr   Zint64c                 C   s   t dg|d�}|jrt‚d S )Nr8   r:   )r   rl   r   )r   r   Zfull_seriesr   r   r   Útest_empty_method_full_series—   s    z,TestSeriesMisc.test_empty_method_full_seriesNZInt64c                 C   s"   t tdƒ|d�}|jdkst‚d S )Né	   r   )r   rf   Úsizer   )r   r   r   r   r   r   Útest_integer_series_sizeœ   s    z'TestSeriesMisc.test_integer_series_sizec                 C   sF   t ddgdd�}|ji kst‚d|jd< |d }|jddiksBt‚d S )Nr   r8   Úabc)ÚnameÚversion)r   Úattrsr   )r   r   rc   r   r   r   Ú
test_attrs¢   s
    
zTestSeriesMisc.test_attrsZjinja2c              	   C   s2   t td�}tjd dd�� t |¡ W 5 Q R X d S )Nr   F)Zcheck_stacklevel)r   r=   r)   Úassert_produces_warningÚinspectÚ
getmembers©r   rD   r   r   r   Útest_inspect_getmembers©   s    
z&TestSeriesMisc.test_inspect_getmembersc              	   C   s\   t jdddd�}ttjjdd�|d�}d|jks4t‚d}tj	t
|d	�� |j W 5 Q R X d S )
Nr   r/   Z1s)Ústartr   Úfreq)rp   )r.   r0   z&'Series' object has no attribute 'foo'rE   )ÚpdZtimedelta_ranger   rQ   r_   ÚnormalÚ__dict__r   rG   rH   ÚAttributeErrorr0   )r   ZtdirD   rL   r   r   r   Útest_unknown_attribute°   s    z%TestSeriesMisc.test_unknown_attributeÚopÚyearÚdayÚsecondÚweekdayc              	   C   s4   d|› d�}t jt|d�� t||ƒ W 5 Q R X d S )Nz"'Series' object has no attribute 'ú'rE   )rG   rH   r�   Úgetattr)r   rƒ   rO   rL   r   r   r   Ú&test_datetime_series_no_datelike_attrs¹   s    z5TestSeriesMisc.test_datetime_series_no_datelike_attrsc                 C   s>   t ddddœƒ}|jdkst‚|jdks,t‚|jdks:t‚d S )NéÐ  r8   r/   ©r„   Úmonthr…   )r   r„   r   r�   r…   rz   r   r   r   Ú)test_series_datetimelike_attribute_accessÀ   s    z8TestSeriesMisc.test_series_datetimelike_attribute_accessc              	   C   s8   t ddddœƒ}d}tjt|d�� |j W 5 Q R X d S )Nr‹   r8   r/   rŒ   z*'Series' object has no attribute 'weekday'rE   )r   rG   rH   r�   r‡   rK   r   r   r   Ú1test_series_datetimelike_attribute_access_invalidÇ   s    z@TestSeriesMisc.test_series_datetimelike_attribute_access_invalidzkernel, has_numeric_only)ZskewT)ÚvarT)ÚallF)ÚprodT)ÚanyF)ZidxminF)ÚquantileF)r]   F)ÚminT)ZsemT)ZmeanT)ZnuniqueF)rb   T)rT   T)ÚcountF)ZmedianT)ZstdT)ZbackfillF)ZrankT)Z
pct_changeF)ZcummaxF)ÚshiftF)ZdiffF)ZcumsumF)ZcumminF)ZcumprodF)ÚfillnaF)ÚffillF)ÚpadF)ZbfillF)ÚsampleF)ÚtailF)ÚtakeF)ÚheadF)ÚcovF)ÚcorrFc           
   	   C   sT  t dddg|d�}|dkr"|f}nn|dkr2|f}n^|dkrB|f}nN|dkrPd}n@|d	kr^d
}n2|d	krld}n$|dkr~dgf}n|dkrŒd}nd}t||ƒ}|sÌd}tjt|d�� ||ddiŽ W 5 Q R X n„|tk�rd|› d�}tjt|d�� ||ddiŽ W 5 Q R X nD||ddiŽ}||ddiŽ}	t|	t ƒ�rBt ||	¡ n||	k�sPt	‚d S )Nr   r8   r   Zcorrwithr    rŸ   Znth)r   r˜   )T)r™   r�   r”   )g      à?r   zP(got an unexpected keyword argument 'numeric_only'|too many arguments passed in)rE   Znumeric_onlyTzSeries.z2 does not allow numeric_only=True with non-numericF)
r   r‰   rG   rH   rI   r=   r@   r)   rS   r   )
r   ÚkernelZhas_numeric_onlyr   rD   ÚargsÚmethodrL   rc   rd   r   r   r   Útest_numeric_onlyÍ   sB    ,

ÿ
z TestSeriesMisc.test_numeric_only)2Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r-   rG   ÚmarkÚparametrizer)   ZmakeStringIndexZmakeCategoricalIndexr   ZmakeDateIndexZmakePeriodIndexZmakeTimedeltaIndexZmakeIntIndexZmakeUIntIndexZmakeFloatIndexrf   r~   Z
MultiIndexÚfrom_tuplesÚziprC   r   r=   rM   rP   rU   rX   re   rg   rk   rm   rn   rq   rv   r   r{   r‚   rŠ   rŽ   r�   ÚboolÚintÚfloatr¤   r   r   r   r   r      s®   
òþ





	
Üþ)r   Ú	converterc              	   C   s4   t  t¡�  | tdgƒƒ| dƒks&t‚W 5 Q R X d S )Nr8   )r)   rw   ÚFutureWarningr   r   )r¯   r   r   r   Útest_float_int_deprecated#  s    r±   )rx   rV   ZnumpyrQ   rG   Zpandas.util._test_decoratorsr   Zpandasr~   r   r   r   r   Zpandas._testingZ_testingr)   r   r¨   r©   r­   r®   Úcomplexr±   r   r   r   r   Ú<module>   s     