o
    �¨Êh�3  ã                   @   sz   d dl Z d dl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 d dlmZ d dlmZ G dd„ dƒZdS )é    N)ÚPYPY)ÚCategoricalÚCategoricalDtypeÚ	DataFrameÚIndexÚNaTÚSeriesÚ
date_range)Ú	is_scalarc                   @   s´  e Zd Zej dddg¡dd„ ƒZdd„ Zdd	„ Zej d
e	dƒe
jfg d¢e
jfejeeddd�dd�eejjdd�d�g¡ej dddg¡dd„ ƒƒZej dddde
jge	dƒfddde
jgg d¢fg¡ej dd d!g¡ej d"ddg¡d#d$„ ƒƒƒZej d"ddg¡ej dd d!g¡d%d&„ ƒƒZej d'ddg¡d(d)„ ƒZej d'ddg¡d*d+„ ƒZej d,g d-¢¡ej d'ddg¡d.d/„ ƒƒZej d0d1d2g¡d3d4„ ƒZej d5g d6¢g d7¢d8gfg d9¢g d7¢d8dgfg d:¢g d7¢g d7¢fe
je
je
jd;d8gg d7¢d8d;gfe
je
je
jd;d8d;gg d7¢d;gfe
je
jd;d8d;gg d7¢d;gfg¡d<d=„ ƒZd>d?„ Zd@dA„ ZdBdC„ ZdDdE„ ZdFdG„ ZdHdI„ ZdJdK„ Zej dLddMg d¢dNg¡dOdP„ ƒZ dQdR„ Z!dSS )TÚTestCategoricalAnalyticsÚaggregationÚminÚmaxc                 C   sª   t g d¢dd�}d|› �}t||ƒ}tjt|d�� |ƒ  W d   ƒ n1 s'w   Y  |dkr3tjntj}tjt|d�� | |¡ W d   ƒ d S 1 sNw   Y  d S )N©ÚaÚbÚcÚdF©Úorderedú)Categorical is not ordered for operation ©Úmatchr   )	r   ÚgetattrÚpytestÚraisesÚ	TypeErrorÚnpÚminimumÚmaximumÚreduce)Úselfr   ÚcatÚmsgÚagg_funcÚufunc© r&   ú`/var/www/html/env/lib/python3.10/site-packages/pandas/tests/arrays/categorical/test_analytics.pyÚtest_min_max_not_ordered_raises   s   

ÿ"ÿz8TestCategoricalAnalytics.test_min_max_not_ordered_raisesc                 C   sÚ   t g d¢dd�}||ƒ}| ¡ }| ¡ }|dksJ ‚|dks J ‚tj |¡dks*J ‚tj |¡dks4J ‚t g d¢g d¢dd�}||ƒ}| ¡ }| ¡ }|dksQJ ‚|dksWJ ‚tj |¡dksaJ ‚tj |¡dkskJ ‚d S )Nr   Tr   r   r   )r   r   r   r   ©Ú
categoriesr   )r   r   r   r   r   r    r   )r!   Úindex_or_series_or_arrayr"   ÚobjÚ_minÚ_maxr&   r&   r'   Útest_min_max_ordered%   s$   ÿz-TestCategoricalAnalytics.test_min_max_orderedc                 C   sp   t g d¢dd�}t|ƒ}| d¡}tt dg|jd�ƒ}t ||¡ | d¡}tt dg|jd�ƒ}t ||¡ d S )	Nr   Tr   r   r   ©Údtyper   r   )r   r   Úaggr   r1   ÚtmÚassert_series_equal)r!   r"   ÚdfÚ
result_maxÚexpected_maxÚ
result_minÚexpected_minr&   r&   r'   Útest_min_max_reduce<   s   

z,TestCategoricalAnalytics.test_min_max_reducezcategories,expectedÚABC©é   é   é   z
2020-01-01r?   )ÚperiodsÚcategoryr0   z1https://github.com/pandas-dev/pandas/issues/29962)Úreason)Úmarksc                 C   s.   t g |dd�}t||ƒ}|ƒ }||u sJ ‚d S ©NTr)   )r   r   )r!   r*   Úexpectedr   r"   r$   Úresultr&   r&   r'   Útest_min_max_ordered_emptyI   s   
z3TestCategoricalAnalytics.test_min_max_ordered_emptyzvalues, categoriesr   r   r   Úcbar=   r>   ©r?   r>   r=   ÚskipnaTFÚfunctionc                 C   s`   t ||dd�}t||ƒ|d�}|du r|tju sJ ‚d S |dkr$|d n|d }||ks.J ‚d S )NTr)   ©rJ   Fr   r   r>   )r   r   r   Únan)r!   Úvaluesr*   rK   rJ   r"   rF   rE   r&   r&   r'   Útest_min_max_with_nan`   s   z.TestCategoricalAnalytics.test_min_max_with_nanc                 C   s8   t tjgddgdd�}t||ƒ|d�}|tju sJ ‚d S )Nr=   r>   Tr)   rL   )r   r   rM   r   )r!   rK   rJ   r"   rF   r&   r&   r'   Útest_min_max_only_nanq   s   z.TestCategoricalAnalytics.test_min_max_only_nanÚmethodc                 C   sb   t tjddtjgg d¢dd�}tjtdd�� t||ƒdd� W d   ƒ d S 1 s*w   Y  d S )	Nr=   r>   ©é   é   r?   r>   r=   Tr)   z.* got an unexpected keywordr   )Únumeric_only)r   r   rM   r   r   r   r   )r!   rQ   r"   r&   r&   r'   Ú test_numeric_only_min_max_raisesy   s   ÿ"ÿz9TestCategoricalAnalytics.test_numeric_only_min_max_raisesc                 C   sh   t g d¢dd�}d|› d�}tt|ƒ}tjtt |¡d�� ||ƒ W d   ƒ d S 1 s-w   Y  d S )N©r   r   r   r   Fr   r   zF
you can use .as_ordered() to change the Categorical to an ordered oner   )r   r   r   r   r   r   ÚreÚescape)r!   rQ   r"   r#   r&   r&   r'   Útest_numpy_min_max_raises‚   s   
ÿ

"ÿz2TestCategoricalAnalytics.test_numpy_min_max_raisesÚkwarg)ÚaxisÚoutÚkeepdimsc                 C   s‚   t g d¢dd�}d|› d|› �}|dkrd}|di}tt|ƒ}tjt|d	�� ||fi |¤Ž W d   ƒ d S 1 s:w   Y  d S )
NrW   Tr   zthe 'z=' parameter is not supported in the pandas implementation of r\   z8`axis` must be fewer than the number of dimensions \(1\)é*   r   )r   r   r   r   r   Ú
ValueError)r!   rQ   r[   r"   r#   Úkwargsr&   r&   r'   Ú,test_numpy_min_max_unsupported_kwargs_raises�   s   ÿÿ
"ÿzETestCategoricalAnalytics.test_numpy_min_max_unsupported_kwargs_raiseszmethod, expected)r   r   )r   r   c                 C   s6   t g d¢dd�}tt|ƒ}||d d�}||ksJ ‚d S )NrW   Tr   )r\   )r   r   r   )r!   rQ   rE   r"   rF   r&   r&   r'   Ú#test_numpy_min_max_axis_equals_noneœ   s   
z<TestCategoricalAnalytics.test_numpy_min_max_axis_equals_nonezvalues,categories,exp_mode)r=   r=   r>   rT   rS   rS   rS   rR   rS   )r=   r=   r=   rT   rS   rS   rS   )r=   r>   r?   rT   rS   rT   c                 C   s:   t ||dd�}t|ƒ ¡ j}t ||dd�}t ||¡ d S rD   )r   r   ÚmodeÚ_valuesr3   Úassert_categorical_equal)r!   rN   r*   Úexp_moder"   ÚresÚexpr&   r&   r'   Ú	test_mode£   s   z"TestCategoricalAnalytics.test_modec                 C   sæ  t g d¢g d¢|d�}t|ƒ}| d¡}|dksJ ‚t|ƒs J ‚| d¡}|dks+J ‚t|ƒs1J ‚| dg¡}| dg¡}tjdgtjd�}t ||¡ t ||¡ |jddgd	d
�}|jddgd	d
�}tjddgtjd�}t ||¡ t ||¡ t	j
tdd�� | d¡ W d   ƒ n1 s‘w   Y  t	j
tdd�� | d¡ W d   ƒ n1 s­w   Y  d}t	j
t|d�� | ddg¡ W d   ƒ n1 sÍw   Y  t	j
t|d�� | ddg¡ W d   ƒ d S 1 sìw   Y  d S )N)ÚcheeseÚmilkÚappleÚbreadrn   )rk   rl   rm   rn   r)   rm   r>   rn   r?   r0   Úright)ÚsiderS   Úcucumberr   zMCannot setitem on a Categorical with a new category, set the categories first)r   r   Úsearchsortedr
   r   ÚarrayÚintpr3   Úassert_numpy_array_equalr   r   r   )r!   r   r"   ÚserÚres_catÚres_serri   r#   r&   r&   r'   Útest_searchsorted´   sH   ý

ÿÿÿÿ"ÿz*TestCategoricalAnalytics.test_searchsortedc                 C   sÞ   t g d¢|d�}tg d¢|d�}| ¡ }t ||¡ tg d¢|d�}| ¡ }t |tddg|d�¡ tg d¢|d�}| ¡ }tg d¢|d�}t ||¡ tdtjdtjdg|d�}| ¡ }tdtjdg|d�}t ||¡ d S )	N)r   r   r   r   r0   )r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   )r   r   Úuniquer3   rf   r   rM   )r!   r   r1   r"   rh   Úexp_catr&   r&   r'   Útest_uniqueæ   s   z$TestCategoricalAnalytics.test_uniquec                 C   sÌ   t g d¢|d�}tg d¢|d�}tg d¢|d�}t | ¡ |¡ t t|ƒ ¡ t|ƒ¡ t t|ƒ ¡ |¡ tg d¢|d�}tddg|d�}t | ¡ |¡ t t|ƒ ¡ t|ƒ¡ t t|ƒ ¡ |¡ d S )	NrI   r   )r?   r=   r>   r>   r=   r0   )r?   r=   r>   )r=   r=   r>   r>   r=   r>   )r   r   r3   rf   rz   Úassert_index_equalr   r   )r!   r   r1   r   ri   r&   r&   r'   Útest_unique_index_seriesþ   s   z1TestCategoricalAnalytics.test_unique_index_seriesc                 C   s¸   t g d¢ƒ}| d¡}t tjddddgƒ}t ||¡ t |d d… |dd … ¡ | d¡}t dddtjtjgg d	¢d
�}t ||¡ t |dd … |d d… ¡ t || d¡¡ d S )N)r   r   r   r   r   r=   r   r   r   r   éÿÿÿÿéþÿÿÿr   )r*   r>   r   )r   Úshiftr   rM   r3   rf   )r!   r"   Úsp1Úxp1Úsn2Úxp2r&   r&   r'   Ú
test_shift  s   

ÿz#TestCategoricalAnalytics.test_shiftc                 C   s"   t g d¢ƒ}d}|j|ksJ ‚d S )Nr<   é   )r   Únbytes)r!   r"   ri   r&   r&   r'   Útest_nbytes&  s   z$TestCategoricalAnalytics.test_nbytesc                 C   s¨   t g d¢ƒ}d|j  k r| ¡ ksJ ‚ J ‚d|j  k r'|jdd�ks*J ‚ J ‚t g d¢ƒ}|jdd�|jks;J ‚tsP|jdd�t |¡ }t|ƒdk sRJ ‚d S d S )Nr<   r   T)Údeep)Úfoor‹   Úbaréd   )r   rˆ   Úmemory_usager   ÚsysÚ	getsizeofÚabs)r!   r"   Údiffr&   r&   r'   Útest_memory_usage+  s   "&üz*TestCategoricalAnalytics.test_memory_usagec                 C   sÌ   t tdƒtdƒdd�}|jdd„ d d�}t tdƒtd	ƒdd�}t ||¡ t tdƒtd
ƒdd�}|jdd„ d d�}t tdƒtdƒdd�}t ||¡ |jdd„ d d�}t |ttjdgd tj	d�ƒ¡ d S )NÚABABCÚCBATr)   c                 S   ó   |   ¡ S ©N©Úlower©Úxr&   r&   r'   Ú<lambda>=  ó    z3TestCategoricalAnalytics.test_map.<locals>.<lambda>)Ú	na_actionÚababcrH   r;   Fc                 S   r–   r—   r˜   rš   r&   r&   r'   rœ   B  r�   Úabcc                 S   s   dS )Nr=   r&   rš   r&   r&   r'   rœ   F  s    r=   rS   r0   )
r   ÚlistÚmapr3   rf   r}   r   r   rs   Úint64)r!   r   rF   ri   r&   r&   r'   Útest_map;  s   &z!TestCategoricalAnalytics.test_mapÚvalueÚTrueg      @c                 C   s\   t g d¢ƒ}dt|ƒj› �}tjt|d�� |j|d� W d   ƒ d S 1 s'w   Y  d S )N)ÚAÚBr¨   ÚCr§   z9For argument "inplace" expected type bool, received type r   )Úinplace)r   ÚtypeÚ__name__r   r   r`   Úsort_values)r!   r¥   r"   r#   r&   r&   r'   Útest_validate_inplace_raisesJ  s   ÿÿ"ÿz5TestCategoricalAnalytics.test_validate_inplace_raisesc                 C   sb   t ddgƒ}tddgƒ}|d d… j|dd�}|jjtjks J ‚|jddgd	d
�}t 	||¡ d S )Nr§   r¨   g        g      à?r   Úlinear)Úinterpolationr   T)Ú
allow_fill)
r   r   Ú	_quantileÚ_codesr1   r   Úint8Útaker3   Úassert_extension_array_equal)r!   r"   ÚidxrF   rE   r&   r&   r'   Útest_quantile_emptyU  s   z,TestCategoricalAnalytics.test_quantile_emptyN)"r¬   Ú
__module__Ú__qualname__r   ÚmarkÚparametrizer(   r/   r:   r¡   r   rM   Úparamr   r	   r   ÚxfailrG   rO   rP   rV   rZ   rb   rc   rj   ry   r|   r~   r†   r‰   r“   r¤   r®   r¸   r&   r&   r&   r'   r      sx    
ÿýýþ*þ



  úþ
2

r   )rX   r�   Únumpyr   r   Úpandas.compatr   Úpandasr   r   r   r   r   r   r	   Úpandas._testingÚ_testingr3   Úpandas.api.typesr
   r   r&   r&   r&   r'   Ú<module>   s    $	