
    Eg3                         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          ZdS )    N)PYPY)CategoricalCategoricalDtype	DataFrameIndexNaTSeries
date_range)	is_scalarc                   p   e Zd Zej                            dddg          d             Zd Zd Zej                            d e	d          e
j        fg d	e
j        f ej         e ed
d          d          eej                            d                    g          ej                            dddg          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                                     Zej                            dddg          ej                            dddg          d                          Zej                            d!ddg          d"             Zej                            d!ddg          d#             Zej                            d$g d%          ej                            d!ddg          d&                         Zej                            d'd(d)g          d*             Zej                            d+g d,g d-d.gfg d/g d-d.dgfg d0g d-g d-fe
j        e
j        e
j        d1d.gg d-d.d1gfe
j        e
j        e
j        d1d.d1gg d-d1gfe
j        e
j        d1d.d1gg d-d1gfg          d2             Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zej                            d:dd;g d	d<g          d=             Z d> Z!d?S )@TestCategoricalAnalyticsaggregationminmaxc                    t          g dd          }d| }t          ||          }t          j        t          |          5   |             d d d            n# 1 swxY w Y   |dk    rt
          j        nt
          j        }t          j        t          |          5  |                    |           d d d            d S # 1 swxY w 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ufuncs         c/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/arrays/categorical/test_analytics.pytest_min_max_not_ordered_raisesz8TestCategoricalAnalytics.test_min_max_not_ordered_raises   sR    ...>>>G+GG3,,]9C000 	 	HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *U22


]9C000 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   AA"ACC	Cc                    t          g dd          } ||          }|                                }|                                }|dk    sJ |dk    sJ t          j                            |          dk    sJ t          j                            |          dk    sJ t          g dg dd          } ||          }|                                }|                                }|dk    sJ |dk    sJ t          j                            |          dk    sJ t          j                            |          dk    sJ 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_maxs         r)   test_min_max_orderedz-TestCategoricalAnalytics.test_min_max_ordered%   sY   ...===&&s++wwyywwyys{{{{s{{{{z  %%,,,,z  %%,,,,    -A-A-A4
 
 
 '&s++wwyywwyys{{{{s{{{{z  %%,,,,z  %%,,,,,,    c                    t          g dd          }t          |          }|                    d          }t          t          dg|j                            }t          j        ||           |                    d          }t          t          dg|j                            }t          j        ||           d S )	Nr   Tr   r   r   dtyper   r   )r   r   aggr	   r6   tmassert_series_equal)r$   r%   df
result_maxexpected_max
result_minexpected_mins          r)   test_min_max_reducez,TestCategoricalAnalytics.test_min_max_reduce<   s    ...===s^^VVE]]
k3%syAAABB
z<888VVE]]
k3%syAAABB
z<88888r3   zcategories,expectedABC         z
2020-01-01rD   )periodscategoryr5   z1https://github.com/pandas-dev/pandas/issues/29962)reason)marksc                 j    t          g |d          }t          ||          } |            }||u sJ d S NTr,   )r   r   )r$   r-   expectedr   r%   r'   results          r)   test_min_max_ordered_emptyz3TestCategoricalAnalytics.test_min_max_ordered_emptyI   sI    " "TBBB3,,!!!!!!r3   zvalues, categoriesr   r   r   cbarB   rC   rD   rC   rB   skipnaTFfunctionc                     t          ||d          } t          ||          |          }|du r|t          j        u sJ d S |dk    r|d         n|d         }||k    sJ d S )NTr,   rP   Fr   r   rC   )r   r   r    nan)r$   valuesr-   rQ   rP   r%   rL   rK   s           r)   test_min_max_with_nanz.TestCategoricalAnalytics.test_min_max_with_nan`   s     &ZFFF'h''v666U??RV######(0E(9(9z!}}z!}HX%%%%%%r3   c                     t          t          j        gddgd          } t          ||          |          }|t          j        u sJ d S )NrB   rC   Tr,   rS   )r   r    rT   r   )r$   rQ   rP   r%   rL   s        r)   test_min_max_only_nanz.TestCategoricalAnalytics.test_min_max_only_nanq   sU     26(1vtDDD'h''v666r3   methodc                     t          t          j        ddt          j        gg dd          }t          j        t
          d          5   t          ||          d           d d d            d S # 1 swxY w Y   d S )	NrB   rC         rD   rC   rB   Tr,   z.* got an unexpected keywordr   )numeric_only)r   r    rT   r   r   r   r   )r$   rY   r%   s      r)    test_numeric_only_min_max_raisesz9TestCategoricalAnalytics.test_numeric_only_min_max_raisesy   s     VQ26"
 
 
 ]9,JKKK 	4 	4 GC  d3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   A00A47A4c                    t          g dd          }d| d}t          t          |          }t          j        t
          t          j        |                    5   ||           d d d            d S # 1 swxY 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$   rY   r%   r&   s       r)   test_numpy_min_max_raisesz2TestCategoricalAnalytics.test_numpy_min_max_raises   s    ...>>>T T T T 	 V$$]9BIcNN;;; 	 	F3KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A55A9<A9kwarg)axisoutkeepdimsc                     t          g dd          }d| d| }|dk    rd}|di}t          t          |          }t          j        t
          |	          5   ||fi | d d d            d S # 1 swxY w Y   d S )
Nra   Tr   zthe 'z=' parameter is not supported in the pandas implementation of rf   z8`axis` must be fewer than the number of dimensions \(1\)*   r   )r   r   r    r   r   
ValueError)r$   rY   re   r%   r&   kwargss         r)   ,test_numpy_min_max_unsupported_kwargs_raiseszETestCategoricalAnalytics.test_numpy_min_max_unsupported_kwargs_raises   s     ...===E    	 F??MCV$$]:S111 	" 	"F3!!&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   
A//A36A3zmethod, expected)r   r   )r   r   c                     t          g dd          }t          t          |          } ||d           }||k    sJ d S )Nra   Tr   )rf   )r   r   r    )r$   rY   rK   r%   rL   s        r)   #test_numpy_min_max_axis_equals_nonez<TestCategoricalAnalytics.test_numpy_min_max_axis_equals_none   sU    ...===V$$$'''!!!!!!r3   zvalues,categories,exp_mode)rB   rB   rC   r]   r\   r\   r\   r[   r\   )rB   rB   rB   r]   r\   r\   r\   )rB   rC   rD   r]   r\   r]   c                     t          ||d          }t          |                                          j        }t          ||d          }t	          j        ||           d S rJ   )r   r	   mode_valuesr8   assert_categorical_equal)r$   rU   r-   exp_moder%   resexps          r)   	test_modez"TestCategoricalAnalytics.test_mode   s_     &ZFFFSkk  ((z4HHH
#C-----r3   c                 @   t          g dg d|          }t          |          }|                    d          }|dk    sJ t          |          sJ |                    d          }|dk    sJ t          |          sJ |                    dg          }|                    dg          }t	          j        dgt          j                  }t          j        ||           t          j        ||           |                    ddgd	
          }|                    ddgd	
          }t	          j        ddgt          j                  }t          j        ||           t          j        ||           t          j
        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j
        t          d          5  |                    d           d d d            n# 1 swxY w Y   d}t          j
        t          |          5  |                    ddg           d d d            n# 1 swxY w Y   t          j
        t          |          5  |                    ddg           d d d            d S # 1 swxY w Y   d S )N)cheesemilkapplebreadr|   )ry   rz   r{   r|   r,   r{   rC   r|   rD   r5   right)sider\   cucumberr   zMCannot setitem on a Categorical with a new category, set the categories first)r   r	   searchsortedr   r    arrayintpr8   assert_numpy_array_equalr   r   r   )r$   r   r%   serres_catres_serrv   r&   s           r)   test_searchsortedz*TestCategoricalAnalytics.test_searchsorted   s    999;;;
 
 

 Skk ""7++!||||!!!!!""7++!||||!!!!! ""G9--""G9--hs"'***
#GS111
#GS111 ""GW#5G"DD""GW#5G"DDh1vRW---
#GS111
#GS111 ]9J777 	) 	)Z(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]9J777 	) 	)Z(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)
' 	 ]9C000 	4 	4gz2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]9C000 	4 	4gz2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4sH   F44F8;F8G<<H H $III.JJJc                    t          g d|          }t          g d|          }|                                }t          j        ||           t          g d|          }|                                }t          j        |t          ddg|                     t          g d|          }|                                }t          g d|          }t          j        ||           t          dt
          j        dt
          j        dg|          }|                                }t          dt
          j        dg|          }t          j        ||           d S )	N)r   r   r   r   r5   )r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   )r   r   uniquer8   rs   r    rT   )r$   r   r6   r%   ru   exp_cats         r)   test_uniquez$TestCategoricalAnalytics.test_unique   sM    'BBB ///777jjll
#C---...e<<<jjll
#Cc3Zu)M)M)MNNN3335AAAjjlloooU;;;
#C111 3RVS9GGGjjllsBFC0>>>
#C11111r3   c                 4   t          g d|          }t          g d|          }t          g d|          }t          j        |                                |           t          j        t          |                                          t          |                     t          j        t          |                                          |           t          g d|          }t          ddg|          }t          j        |                                |           t          j        t          |                                          t          |                     t          j        t          |                                          |           d S )	NrO   r   )rD   rB   rC   rC   rB   r5   )rD   rB   rC   )rB   rB   rC   rC   rB   rC   )r   r   r8   rs   r   assert_index_equalr   r	   )r$   r   r6   r   rv   s        r)   test_unique_index_seriesz1TestCategoricalAnalytics.test_unique_index_series   sJ    G<<<u555 )))5111
#AHHJJ444
eAhhoo//s<<<
#F1II$4$4$6$6<<<E2221a&...
#AHHJJ444
eAhhoo//s<<<
#F1II$4$4$6$6<<<<<r3   c                 H   t          g d          }|                    d          }t          t          j        ddddg          }t	          j        ||           t	          j        |d d         |dd                     |                    d          }t          dddt          j        t          j        gg d	
          }t	          j        ||           t	          j        |dd          |d d                    t	          j        ||                    d                     d S )N)r   r   r   r   r   rB   r   r   r   r   r   )r-   rC   r   )r   shiftr    rT   r8   rs   )r$   r%   sp1xp1sn2xp2s         r)   
test_shiftz#TestCategoricalAnalytics.test_shift  s   33344 iill263S#677
#C---
#CHc!""g666 iimm#sBFBF+8L8L8L
 
 
 	#C---
#CGS"X666 	#C166666r3   c                 F    t          g d          }d}|j        |k    sJ d S )NrA      )r   nbytes)r$   r%   rv   s      r)   test_nbytesz$TestCategoricalAnalytics.test_nbytes&  s1    )))$$zS      r3   c                    t          g d          }d|j        cxk     r|                                k    sn J d|j        cxk     r|                    d          k    sn J t          g d          }|                    d          |j        k    sJ t          s@|                    d          t	          j        |          z
  }t          |          dk     sJ d S d S )NrA   r   T)deep)foor   bard   )r   r   memory_usager   sys	getsizeofabs)r$   r%   diffs      r)   test_memory_usagez*TestCategoricalAnalytics.test_memory_usage+  s   )))$$ 3:3333!1!1!3!33333333:<<<<!1!1t!1!<!<<<<<<<///00T**SZ7777 	# ###..s1C1CCDt99s????		# 	# #?r3   c           	         t          t          d          t          d          d          }|                    d d           }t          t          d          t          d          d          }t          j        ||           t          t          d          t          d	          d
          }|                    d d           }t          t          d          t          d          d
          }t          j        ||           |                    d d           }t          j        |t          t          j        dgdz  t          j	                                       d S )NABABCCBATr,   c                 *    |                                  S Nlowerxs    r)   <lambda>z3TestCategoricalAnalytics.test_map.<locals>.<lambda>=       r3   )	na_actionababcrN   r@   Fc                 *    |                                  S r   r   r   s    r)   r   z3TestCategoricalAnalytics.test_map.<locals>.<lambda>B  r   r3   abcc                     dS )NrB    r   s    r)   r   z3TestCategoricalAnalytics.test_map.<locals>.<lambda>F  s     r3   rB   r\   r5   )
r   listmapr8   rs   r   r   r    r   int64)r$   r   rL   rv   s       r)   test_mapz!TestCategoricalAnalytics.test_map;  s)   W$u++tLLL**d;;$w--DKKNNN
#FC000W$u++uMMM**d;;$w--DKKOOO
#FC000{{d33
feBHaS1WBH,M,M,M&N&NOOOOOr3   valueTrueg      @c                     t          g d          }dt          |          j         }t          j        t
          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )N)ABr   Cr   z9For argument "inplace" expected type bool, received type r   )inplace)r   type__name__r   r   rk   sort_values)r$   r   r%   r&   s       r)   test_validate_inplace_raisesz5TestCategoricalAnalytics.test_validate_inplace_raisesJ  s    333444!%[[14 4 	
 ]:S111 	+ 	+OOEO***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A((A,/A,c                    t          ddg          }t          ddg          }|d d                             |d          }|j        j        t
          j        k    sJ |                    ddgd	
          }t          j	        ||           d S )Nr   r   g        g      ?r   linear)interpolationr   T)
allow_fill)
r   r   	_quantile_codesr6   r    int8taker8   assert_extension_array_equal)r$   r%   idxrL   rK   s        r)   test_quantile_emptyz,TestCategoricalAnalytics.test_quantile_emptyU  s    3*%%S#JRaR""3h"??}"bg----88RH866
'99999r3   N)"r   
__module____qualname__r   markparametrizer*   r2   r?   r   r    rT   paramr	   r
   r   xfailrM   rV   rX   r_   rd   rm   ro   rw   r   r   r   r   r   r   r   r   r   r   r3   r)   r   r      s       []UEN;;  <;- - -.9 9 9 [T%[["&!YYFLzz,:::*MMMk''N (    
	
  []UEN;;" " <; " [S"&
!44;;	/1aBF2CYYY1OP  [Xe}55[Z%88	& 	& 98 65	 	& [Z%88[Xe}55    65 98  [Xu~664 4 764 [Xu~66  76 [W&A&A&ABB[Xu~66" " 76 CB" [/,1MNN" " ON" [$"""OOOaS9"""OOOaV<__ooo?fbfbfa+___q!fEfbfbfaA.!EfbfaA&!=	

 
. .
 
.04 04 04d2 2 20= = =&7 7 7*! ! !
# # # P P P [Wq&)))S&ABB+ + CB+: : : : :r3   r   )rb   r   numpyr    r   pandas.compatr   pandasr   r   r   r   r   r	   r
   pandas._testing_testingr8   pandas.api.typesr   r   r   r3   r)   <module>r      s    				 



                                   & & & & & &G: G: G: G: G: G: G: G: G: G:r3   