
    Owg3                         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y)    N)PYPY)CategoricalCategoricalDtype	DataFrameIndexNaTSeries
date_range)	is_scalarc                      e Zd Zej                  j                  dddg      d        Zd Zd Zej                  j                  d e	d      e
j                  fg d	e
j                  f ej                   e ed
d      d      eej                  j!                  d            g      ej                  j                  dddg      d               Zej                  j                  dddde
j                  g e	d      fddde
j                  gg dfg      ej                  j                  dddg      ej                  j                  dddg      d                      Zej                  j                  dddg      ej                  j                  dddg      d                Zej                  j                  d!ddg      d"        Zej                  j                  d!ddg      d#        Zej                  j                  d$g d%      ej                  j                  d!ddg      d&               Zej                  j                  d'd(d)g      d*        Zej                  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                  j                  d:dd;g d	d<g      d=        Z d> Z!y?)@TestCategoricalAnalyticsaggregationminmaxc                 ~   t        g dd      }d| }t        ||      }t        j                  t        |      5   |        d d d        |dk(  rt
        j                  nt
        j                  }t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   dxY w# 1 sw Y   y xY w)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         e/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/arrays/categorical/test_analytics.pytest_min_max_not_ordered_raisesz8TestCategoricalAnalytics.test_min_max_not_ordered_raises   s     .>9+G3,]]9C0 	J	 *U2



]]9C0 	LL	 			 		 	s   B'B3'B03B<c                 >   t        g dd      } ||      }|j                         }|j                         }|dk(  sJ |dk(  sJ t        j                  j                  |      dk(  sJ t        j                  j                  |      dk(  sJ t        g dg dd      } ||      }|j                         }|j                         }|dk(  sJ |dk(  sJ t        j                  j                  |      dk(  sJ t        j                  j                  |      dk(  sJ y )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%   s	   .=&s+wwywwys{{s{{zz  %,,,zz  %,,,  -A4
 's+wwywwys{{s{{zz  %,,,zz  %,,,    c                 X   t        g dd      }t        |      }|j                  d      }t        t        dg|j                              }t        j                  ||       |j                  d      }t        t        dg|j                              }t        j                  ||       y )	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%syyAB
z<8VVE]
k3%syyAB
z<8r3   zcategories,expectedABC         z
2020-01-01rD   )periodscategoryr5   z1https://github.com/pandas-dev/pandas/issues/29962)reason)marksc                 R    t        g |d      }t        ||      } |       }||u sJ y NTr,   )r   r   )r$   r-   expectedr   r%   r'   results          r)   test_min_max_ordered_emptyz3TestCategoricalAnalytics.test_min_max_ordered_emptyI   s3    " "T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 y |dk(  r|d   n|d   }||k(  sJ y )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`   sb     &ZF'h'v6U?RVV###(0E(9z!}z!}HX%%%r3   c                     t        t        j                  gddgd      } t        ||      |      }|t        j                  u sJ y )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   sA     266(1vtD'h'v6r3   methodc                     t        t        j                  ddt        j                  gg dd      }t        j                  t
        d      5   t        ||      d       d d d        y # 1 sw Y   y xY w)	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]     VVQ266"
 ]]9,JK 	4 GC d3	4 	4 	4s   A))A2c                     t        g dd      }d| d}t        t        |      }t        j                  t
        t        j                  |            5   ||       d d d        y # 1 sw Y   y xY w)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   sh    .>7x @T T 	 V$]]9BIIcN; 	3K	 	 	s   	A&&A/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        y # 1 sw Y   y xY w)
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     .=E7  	 F?MCV$]]:S1 	"3!&!	" 	" 	"s   
A!!A*zmethod, expected)r   r   )r   r   c                 d    t        g dd      }t        t        |      } ||d       }||k(  sJ y )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   s5    .=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                         j                  }t        ||d      }t	        j
                  ||       y rJ   )r   r	   mode_valuesr8   assert_categorical_equal)r$   rU   r-   exp_moder%   resexps          r)   	test_modez"TestCategoricalAnalytics.test_mode   sH     &ZFSk (((z4H
##C-r3   c                    t        g dg d|      }t        |      }|j                  d      }|dk(  sJ t        |      sJ |j                  d      }|dk(  sJ t        |      sJ |j                  dg      }|j                  dg      }t	        j
                  dgt        j                        }t        j                  ||       t        j                  ||       |j                  ddgd	
      }|j                  ddgd	
      }t	        j
                  ddgt        j                        }t        j                  ||       t        j                  ||       t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d       d d d        d}t        j                  t        |      5  |j                  ddg       d d d        t        j                  t        |      5  |j                  ddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)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;

 Sk ""7+!||!!!""7+!||!!! ""G9-""G9-hhs"''*
##GS1
##GS1 ""GW#5G"D""GW#5G"Dhh1vRWW-
##GS1
##GS1 ]]9J7 	)Z(	)]]9J7 	)Z(	)
' 	 ]]9C0 	4gz23	4]]9C0 	4gz23	4 	4	) 	)	) 	)	4 	4	4 	4s0   6H6+I"II6H?III#c                 |   t        g d|      }t        g d|      }|j                         }t        j                  ||       t        g d|      }|j                         }t        j                  |t        ddg|             t        g d|      }|j                         }t        g d|      }t        j                  ||       t        dt
        j                  dt
        j                  dg|      }|j                         }t        dt
        j                  dg|      }t        j                  ||       y )	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   s     'B /7jjl
##C-.e<jjl
##Cc3Zu)MN35AjjloU;
##C1 3RVVS9GjjlsBFFC0>
##C1r3   c                    t        g d|      }t        g d|      }t        g d|      }t        j                  |j	                         |       t        j
                  t        |      j	                         t        |             t        j                  t        |      j	                         |       t        g d|      }t        ddg|      }t        j                  |j	                         |       t        j
                  t        |      j	                         t        |             t        j                  t        |      j	                         |       y )	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   s     G<u5 )51
##AHHJ4
eAhoo/s<
##F1I$4$4$6<E21a&.
##AHHJ4
eAhoo/s<
##F1I$4$4$6<r3   c                    t        g d      }|j                  d      }t        t        j                  ddddg      }t	        j
                  ||       t	        j
                  |d d |dd         |j                  d      }t        dddt        j                  t        j                  gg d	
      }t	        j
                  ||       t	        j
                  |dd  |d d        t	        j
                  ||j                  d             y )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4 iil2663S#67
##C-
##CHc!"g6 iim#sBFFBFF+8L
 	##C-
##CGS"X6 	##C16r3   c                 D    t        g d      }d}|j                  |k(  sJ y )NrA      )r   nbytes)r$   r%   rv   s      r)   test_nbytesz$TestCategoricalAnalytics.test_nbytes&  s#    )$zzS   r3   c                    t        g d      }d|j                  cxk  r|j                         k  sJ  J d|j                  cxk  r|j                  d      k  sJ  J t        g d      }|j                  d      |j                  kD  sJ t        s9|j                  d      t	        j
                  |      z
  }t        |      dk  sJ y y )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!1!1!3333333::<!1!1t!1!<<<<<</0T*SZZ777 ###.s1CCDt9s?"?	 r3   c           	      `   t        t        d      t        d      d      }|j                  d d       }t        t        d      t        d      d      }t        j                  ||       t        t        d      t        d	      d
      }|j                  d d       }t        t        d      t        d      d
      }t        j                  ||       |j                  d d       }t        j
                  |t        t        j                  dgdz  t        j                                     y )NABABCCBATr,   c                 "    | j                         S Nlowerxs    r)   <lambda>z3TestCategoricalAnalytics.test_map.<locals>.<lambda>=       r3   )	na_actionababcrN   r@   Fc                 "    | j                         S r   r   r   s    r)   r   z3TestCategoricalAnalytics.test_map.<locals>.<lambda>B  r   r3   abcc                      y)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*d;$w-DKN
##FC0W$u+uM*d;$w-DKO
##FC0{d3
feBHHaS1WBHH,M&NOr3   valueTrueg      @c                     t        g d      }dt        |      j                   }t        j                  t
        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)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4!%[1124 	
 ]]:S1 	+OOEO*	+ 	+ 	+s   AA&c                    t        ddg      }t        ddg      }|d d j                  |d      }|j                  j                  t
        j                  k(  sJ |j                  ddgd	
      }t        j                  ||       y )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Ra""3h"?}}""bgg---88RH86
''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 [[%["&&!FLLz,:*Mkk''N ( 
	
 [[]UEN;" <" [[S"&&
!4;	/1aBFF2CY1OP [[Xe}5[[Z%8	& 9 6		& [[Z%8[[Xe}5  6 9  [[Xu~64 74 [[Xu~6 7 [[W&AB[[Xu~6" 7 C" [[/,1MN" O" [[$"OaS9"OaV<o?ffbffbffa+_q!fEffbffbffaA.!EffbffaA&!=	

.
.04d20=&7*!
# P [[Wq&)S&AB+ C+: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      s7    	 
       &G: G:r3   