o
    5c?:                     @   sv   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 d dlmZ d dlmZ G dd dZdS )    N)PYPY)CategoricalCategoricalDtypeIndexNaTSeries
date_range)	is_scalarc                   @   s  e Zd Zejdddg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d.d/d0gd1d2 Zejd3g d4g d5d6gfg d7g d5d6dgfg d8g d5g d5fe	je	je	jd9d6gg d5d6d9gfe	je	je	jd9d6d9gg d5d9gfe	je	jd9d6d9gg d5d9gfgd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZejdJddKg d
dLgdMdN Z dOdP Z!dQS )R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%   d/var/www/html/gps/gps/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_orderedzcategories,expectedABC         z
2020-01-01r3   )periodscategorydtypez1https://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_empty;   s   
z3TestCategoricalAnalytics.test_min_max_ordered_emptyzvalues, categoriesr   r   r   cbar1   r2   r3   r2   r1   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(   r?   Fr   r   r2   )r   r   r   nan)r    valuesr)   r@   r?   r!   r;   r:   r%   r%   r&   test_min_max_with_nanR   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 )Nr1   r2   Tr(   rA   )r   r   rB   r   )r    r@   r?   r!   r;   r%   r%   r&   test_min_max_only_nanc   s   z.TestCategoricalAnalytics.test_min_max_only_nanmethodc                 C   s`   t tjddtjgg ddd}tjtd t||dd W d    d S 1 s)w   Y  d S )Nr1   r2         r3   r2   r1   Tr(   )expected_warning)numeric_only)r   r   rB   tmassert_produces_warningFutureWarningr   )r    rF   r!   r%   r%   r&   #test_deprecate_numeric_only_min_maxk   s   "z<TestCategoricalAnalytics.test_deprecate_numeric_only_min_maxc                 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    rF   r!   r"   r%   r%   r&   test_numpy_min_max_raisest   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 )
NrP   Tr   zthe 'z=' parameter is not supported in the pandas implementation of rU   z8`axis` must be fewer than the number of dimensions \(1\)*   r   )r   r   r   r   r   
ValueError)r    rF   rT   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 )NrP   Tr   )rU   )r   r   r   )r    rF   r:   r!   r;   r%   r%   r&   #test_numpy_min_max_axis_equals_none   s   
z<TestCategoricalAnalytics.test_numpy_min_max_axis_equals_nonezvalues,categories,exp_mode)r1   r1   r2   rI   rH   rH   rH   rG   rH   )r1   r1   r1   rI   rH   rH   rH   )r1   r2   r3   rI   rH   rI   c                 C   sf   t ||dd}d}tjt|d | }W d    n1 sw   Y  t ||dd}t|| d S )NTr(   zUse Series.mode insteadr   )r   rL   rM   rN   modeassert_categorical_equal)r    rC   r)   exp_modesr"   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 sw   Y  t	j
tdd |d W d    n1 sw   Y  d}t	j
t|d |ddg W d    n1 sw   Y  t	j
t|d |ddg W d    d S 1 sw   Y  d S )N)cheesemilkapplebreadrg   )rd   re   rf   rg   r(   rf   r2   rg   r3   r6   right)siderH   cucumberr   zMCannot setitem on a Categorical with a new category, set the categories first)r   r   searchsortedr	   r   arrayintprL   assert_numpy_array_equalr   r   r   )r    r   r!   serres_catres_serrb   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   r6   )r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   )r   r   uniquerL   r^   r   rB   )r    r   r7   r!   ra   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 )	Nr>   r   )r3   r1   r2   r2   r1   r6   )r3   r1   r2   )r1   r1   r2   r2   r1   r2   )r   r   rL   r^   rs   assert_index_equalr   r   )r    r   r7   r   rb   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   r1   r   r   r   r   r   )r)   r2   r   )r   shiftr   rB   rL   r^   )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 )Nr0      )r   nbytes)r    r!   rb   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 )Nr0   r   T)deep)foor   bard   )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}|dd }t tdtddd}t|| t tdtd	d
d}|dd }t tdtdd
d}t|| |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>1      z3TestCategoricalAnalytics.test_map.<locals>.<lambda>ababcr=   r/   Fc                 S   r   r   r   r   r%   r%   r&   r   6  r   abcc                 S   s   dS )Nr1   r%   r   r%   r%   r&   r   :  s    r1   rH   r6   )
r   listmaprL   r^   rv   r   r   rl   int64)r    r   r;   rb   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& tjtdd |j	d|d W d    n1 s/w   Y  W d    n1 s>w   Y  tjt|d% tjtdd |j
|d W d    n1 scw   Y  W d    n1 srw   Y  tjt|d% tjtdd |j|d W d    n1 sw   Y  W d    n1 sw   Y  tjt|d' tt |jg dd|d	 W d    n1 sw   Y  W d    n1 sw   Y  tjt|d' tt |jg d|d W d    n	1 sw   Y  W d    n	1 sw   Y  tjt|d( tt |jg dd|d
 W d    n	1 s;w   Y  W d    n	1 sKw   Y  tjt|d' tt |jg d|d W d    n	1 srw   Y  W d    n	1 sw   Y  tjt|d' tt |jg d|d W d    n	1 sw   Y  W d    n	1 sw   Y  tjt|d$ tt |j|d W d    n	1 sw   Y  W d    n	1 sw   Y  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   zUse rename_categoriesT)r   inplace)r   )XYZ)renamer   )r   r   )DEF)new_categoriesr   )removalsr   )r   type__name__r   r   rY   rL   rM   rN   set_ordered
as_orderedas_unorderedset_categoriesrename_categoriesreorder_categoriesadd_categoriesremove_categoriesremove_unused_categoriessort_values)r    r   r!   r"   r%   r%   r&   test_validate_inplace_raises>  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)interpolationrx   T)
allow_fill)
r   r   	_quantile_codesr7   r   int8takerL   assert_extension_array_equal)r    r!   idxr;   r:   r%   r%   r&   test_quantile_emptyx  s   z,TestCategoricalAnalytics.test_quantile_emptyN)"r   
__module____qualname__r   markparametrizer'   r.   r   r   NaNparamr   r   r   xfailr<   rB   rD   rE   rO   rS   r[   r\   rc   rr   ru   rw   r   r   r   r   r   r   r%   r%   r%   r&   r
      sv    
*



  
2
9r
   )rQ   r   numpyr   r   pandas.compatr   pandasr   r   r   r   r   r   pandas._testing_testingrL   pandas.api.typesr	   r
   r%   r%   r%   r&   <module>   s     