
    h`>                     l    d dl Zd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ  G d d      Z G d d      Zy)    N)Categorical	DataFrameSeries	Timestamp
date_rangec                       e Zd Zd Zd Zy)TestCategoricalOpsWithFactorc                 N    t        g dd      }t        j                  ||       y )Nabr   r   r   cr   r   Tordered)r   tmassert_categorical_equal)selffactors     SD:\jyotish\venv\Lib\site-packages\pandas/tests/arrays/categorical/test_operators.py test_categories_none_comparisonsz=TestCategoricalOpsWithFactor.test_categories_none_comparisons   s    EtT
##FF3    c                    t        g dd      }||dk(     }|t        j                  |      dk(     }t        j                  ||       ||dk7     }|t        j                  |      dk7     }t        j                  ||       ||dk     }|t        j                  |      dk     }t        j                  ||       ||dkD     }|t        j                  |      dkD     }t        j                  ||       ||dk\     }|t        j                  |      dk\     }t        j                  ||       ||dk     }|t        j                  |      dk     }t        j                  ||       t        |      }|t        j                  j                  d      j                  |         }||k(  }t        j                  |      t        j                  |      k(  }t        j                  ||       |dk(  }t        j                  t        |      t        	      }t        j                  ||       t        g d
g dd      }t        g dg dd      }t        g d
d      }t        g d|j                  d      }	||kD  }
t        j                  g d      }t        j                  |
|       ||k  }
t        j                  g d      }t        j                  |
|       ||	kD  }t        j                  g d      }t        j                  ||       d}t        j                  t         |      5  ||kD   d d d        t        g dg d      }t        j                  t         |      5  ||kD   d d d        |j#                  d      }||kD  j%                         rJ t        j                  t         |      5  ||kD   d d d        t'        g dt(        	      }d}t        j                  t         |      5  ||kD   d d d        t        j                  t         |      5  ||kD   d d d        t        j                  t         |      5  ||k   d d d        t        j                  t         |      5  ||k   d d d        t        j                  g dt(        	      }t        j                  t         |      5  ||kD   d d d        t        j                  t         |      5  ||kD   d d d        t        t+        d      t+        d      d      }t        j                  g d      }|dkD  }t        j                  ||       |t        j                  d      kD  }t        j                  ||       y # 1 sw Y   <xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   Tr   r   r   r      ddtype)r   r   r   )r   r   r   
categoriesr   )r   r   r   TFFFFT>Categoricals can only be compared if 'categories' are the samematch)r   r   r   r   r   FMCannot compare a Categorical for op __gt__ with type <class 'numpy\.ndarray'>abccba)r   npasarrayr   r   lenrandomdefault_rngpermutationassert_numpy_array_equalzerosboolr   arraypytestraises	TypeErrorset_orderedanyr   objectlist)r   r   resultexpectednothercat_revcat_rev_basecatcat_baseres_revexp_revresexpmsgcat_rev_base2cat_unorderedsr   s                      r   test_comparisonsz-TestCategoricalOpsWithFactor.test_comparisons   s   EtT#&"**V,34
##FH5#&"**V,34
##FH5%"**V,s23
##FH5%"**V,s23
##FH5#&"**V,34
##FH5#&"**V,34
##FH5Kryy,,Q/;;A>?5::f%E)::
##FH5388CKt4
##FH5 o/SWX"
 /483>>SWX L(((/0
##GW5L(((/0
##GW5Hnhh+,
##C- O]]9C0'M 1 $O@TU]]9C0m# 1 .#I??$$$]]9C0- 1 ?&1( 	 ]]9C0!G 1]]9C0aK 1]]9C0G 1]]9C0K 1
 HH_F3]]9C0!G 1]]9C0aK 1
 d5kd5k4Phh+,m
##C- %
##C-_ 10
 10 10 10000000 1000sl   'U'!U40V.VV V()V5/WW'U14U>VVV%(V25V?WWN)__name__
__module____qualname__r   rI    r   r   r	   r	      s    4k.r   r	   c            	       ^   e Zd Zej                  j                  dddgddg ed       ed      gg      d        Zd	 Zd
 Z	d Z
d Zd Zd Zej                  j                  d      d        Zej                  j                  d      d        Zej                  j                  d ed       ed       ed      fg dg dg dfg      d        Zej                  j                  dd d g      d        Zd Zd Zd  Zd! Zd" Zej                  j                  d#g d$      d%        Zd& Zy')(TestCategoricalOpsr   r   r   r      20192020c                     t        j                  ddg|      }t        j                  ddg|      }||k7  }|j                         sJ y )Nr   r$   rP   )r   
from_codesall)r   r   c1c2r9   s        r   test_not_equal_with_naz)TestCategoricalOps.test_not_equal_with_na   sG     ##RG
C##QFzBrzz||r   c                    g d}t        |      }t        |      }||j                  k(  }t        g dg      }t        j                  ||       |d d d   |j                  k7  }t        g dg      }t        j                  ||       y )Nr   r   r   r   )TTTTrT   )FTTF)r   r   Tr   assert_frame_equal)r   datar?   dfr9   r:   s         r   test_compare_framez%TestCategoricalOps.test_compare_frame   sy    !$s^678
fh/TrTbdd"89:
fh/r   c                     |}t        g d      }t        |      }d}t        j                  t        |      5   |||       d d d        y # 1 sw Y   y xY w)Nr[   z5Unable to coerce to Series, length must be 1: given 4r"   )r   r   r2   r3   
ValueError)r   comparison_opopr?   r_   rE   s         r   test_compare_frame_raisesz,TestCategoricalOps.test_compare_frame_raises   sC    ,-s^E]]:S1sBK 211s   
AAc                     t        t        dd      d      }t        j                  ||d   kD  t	        j
                  g d             t        j                  |d   |k  t	        j
                  g d             y )Nz
2014-01-01   )periodsTr   r   FTT)r   r   r   r.   r(   r1   )r   dt_cats     r   $test_datetime_categorical_comparisonz7TestCategoricalOps.test_datetime_categorical_comparison   s[    Za@$O
##FVAY$6AT8UV
##F1I$6AT8UVr   c                     t        g dd      }t        j                  ||d   kD  t        j                  g d             t        j                  |d   |k  t        j                  g d             y )NrP   r   rg   Tr   r   ri   )r   r   r.   r(   r1   )r   r?   s     r   &test_reflected_comparison_with_scalarsz9TestCategoricalOps.test_reflected_comparison_with_scalars   sR    )T2
##C#a&L"((;N2OP
##CFSL"((;N2OPr   c                    t        g dd      }d}t        j                  t        |      5  |dk   d d d        t        j                  t        |      5  |dkD   d d d        t        j                  t        |      5  d|k   d d d        t        j                  t        |      5  d|kD   d d d        t	        j
                  |dk(  t        j                  g d             t	        j
                  |dk7  t        j                  g d             y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)	Nrm   Tr   z1Invalid comparison between dtype=category and intr"      )FFF)TTT)r   r2   r3   r4   r   r.   r(   r1   )r   r?   rE   s      r   $test_comparison_with_unknown_scalarsz7TestCategoricalOps.test_comparison_with_unknown_scalars   s     )T2A]]9C0!G 1]]9C0!G 1]]9C0G 1]]9C0G 1 	##C1Hbhh7L.MN
##C1Hbhh7I.JK 10000000s/   DD?D+(D7DD(+D47E c                 h   t        t        j                  g dt                    }|dk(  }t        j                  g dt              }t        j                  ||       |dk(  }t        j                  g dt              }t        j                  ||       |dk7  }t        j                  ||        y )N)foor   rP   rg   rt   r   rs   )TFFFrt   )FTFT)r   r(   r1   r7   r0   r   r.   )r   r?   r9   r:   s       r   test_comparison_with_tuplez-TestCategoricalOps.test_comparison_with_tuple   s    "((#=VLM887tD
##FH5886dC
##FH5
##FXI6r   zignore::RuntimeWarningc                     t        g dg dd      }d} t        t        j                  |      |      |      } t        ||      |      }t	        j
                  ||       y )NrP   r   rg   Nrm   Tr   r   r   getattrr(   r1   r   r.   )r   compare_operators_no_eq_ner?   scalarr:   actuals         r   9test_comparison_of_ordered_categorical_with_nan_to_scalarzLTestCategoricalOps.test_comparison_of_ordered_categorical_with_nan_to_scalar   sW     /iNE7288C=*DEfM989&A
##FH5r   c                     t        g dg dd      }t        g dg dd      } t        t        j                  |      |      d      } t        ||      |      }t	        j
                  ||       y )Nrw   rm   Tr   )r   r   r   r   r   rx   )r   rz   r?   r<   r:   r|   s         r   ;test_comparison_of_ordered_categorical_with_nan_to_listlikezNTestCategoricalOps.test_comparison_of_ordered_categorical_with_nan_to_listlike   s`     /iNLYME7288C=*DEaH989%@
##FH5r   zdata,reverse,baser&   r'   bbbrm   )rg   r   rP   )r   r   r   c                 l   t        t        ||d            }t        t        ||d            }t        t        |d            }t        t        ||j                  j                  d            }t        ||t	        d      k(  rt
        nd       }t        j                  |      }	||kD  }
t        g d      }t        j                  |
|       ||k  }
t        g d      }t        j                  |
|       ||kD  }t        g d      }t        j                  ||       |d   }||kD  }t        g d      }|j                  |kD  }t        j                  ||       t        j                  |j                  |       ||kD  }
t        g d      }|j                  |kD  }t        j                  |
|       t        j                  |
j                  |       d	}t        j                  t        |
      5  ||kD   d d d        d}t        j                  t        |
      5  ||kD   d d d        t        j                  t        |
      5  ||kD   d d d        t        j                  t        |
      5  ||	kD   d d d        t        j                  t        |
      5  ||	kD   d d d        t        j                  t        |
      5  ||k   d d d        t        j                  t        |
      5  ||k   d d d        t        j                  t        |
      5  |	|k   d d d        t        j                  t        |
      5  |	|k   d d d        y # 1 sw Y   UxY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NTr   r   r   r   r   r    rP   r!   r"   r%   )r   r   r?   r   r8   r7   r(   r1   r   assert_series_equalvaluesr.   r2   r3   r4   )r   r^   reversebaser=   r>   r?   r@   rH   r   rA   rB   rC   rD   r{   exp2exp_rev2rE   s                     r   rI   z#TestCategoricalOps.test_comparisons   s   
 TgtLMk$7DQR[t45););TJ
 4e)<v$GHHTN L(-.
w0L(-.
w0Hn)*
sC(aFl)*zzF"
sC(
##CJJ5F"-.>>F*
w0
##GNNH= O]]9C0'M 1( 	 ]]9C0!G 1]]9C0aK 1]]9C0!G 1]]9C0aK 1 ]]9C0G 1]]9C0K 1 ]]9C0G 1]]9C0K 103 10 10000000 1000 1000sl   .MMM!+M.M:=N&NN8N*MM!M+.M7:NNNN'*N3ctorc                      t        | i |S N)r   argskwargss     r   <lambda>zTestCategoricalOps.<lambda>9  s    K$@$@r   c                  *    t        t        | i |      S r   )r   r   r   s     r   r   zTestCategoricalOps.<lambda>:  s    F;+G+G$Hr   c                     |ddgddgd      } |ddgddgd      }||k(  j                         sJ  |ddgddgd      } |ddgddgd      }||k7  j                         sJ  |ddgddgd      } |ddgddgd      }||k7  j                         sJ  |ddgddgd      } |ddgddgd      }||k(  }t        j                  t        j                  |      t        j                  ddg             y )Nr   r   Fr   T)rV   r   r.   r(   r1   )r   r   rW   rX   r9   s        r   $test_unordered_different_order_equalz7TestCategoricalOps.test_unordered_different_order_equal6  s    3*#sUC3*#sUCb~~3*#sUC3*#sUCb~~3*#sUC3*#sUCb~~3*#sUC3*#sUCr
##BHHV$4bhhe}6MNr   c                     t        ddgddgd      }t        ddgddgd      }t        j                  t        d      5  ||k(   d d d        y # 1 sw Y   y xY w)Nr   r   Fr   r   z!Categoricals can only be comparedr"   r   r2   r3   r4   )r   rW   rX   s      r   *test_unordered_different_categories_raisesz=TestCategoricalOps.test_unordered_different_categories_raisesP  sQ    #sc
EJ#sc
EJ]]9-PR"H SRRs    AAc                     t        g ddg      }t        g dg      }d}t        j                  t        |      5  ||k(   d d d        y # 1 sw Y   y xY w)Nr   r   r$   z?Categoricals can only be compared if 'categories' are the same.r"   r   )r   rW   rX   rE   s       r   test_compare_different_lengthsz1TestCategoricalOps.test_compare_different_lengthsW  sF    c
3.O]]9C0"H 100s   A

Ac                 j    t        dgddg      }t        dgddg      }|j                  |      rJ y )Nr   r   r$   )r   equals)r   r   r   s      r   &test_compare_unordered_different_orderz9TestCategoricalOps.test_compare_unordered_different_order_  s:     3*53*588A;;r   c                    t        dt        j                  j                  d      j	                  ddd      i      }t        ddd      D cg c]  }| d|dz     }}t        ||      }|j                  dgd	
      }t        j                  |j                  t        ddd      d|      |d<   dD ]A  \  }}d| d}t        j                  t        |      5   t        ||      |       d d d        C |d   }dD ]?  }d| d}t        j                  t        |      5   t        ||      d       d d d        A y c c}w # 1 sw Y   xY w# 1 sw Y   ]xY w)Nvaluer   r   i'  d   i  z - i  T)by	ascendingi)  F)rightlabelsvalue_group)__add__z\+)__sub__-)__mul__z\*)__truediv__/$Series cannot perform the operation |unsupported operandr"   )kurtskewvarstdmeansummedianzdoes not support reduction '')numeric_only)r   r(   r+   r,   integersranger   sort_valuespdcutr   r2   r3   r4   ry   )	r   r_   ir   
cat_labelsrd   str_reprE   rH   s	            r   test_numeric_like_opsz(TestCategoricalOps.test_numeric_like_opsf  sP   !6!6q!9!B!B1eS!QRS.3Auc.BC.BQCs1s7)$.BC 0
^^yD^9FFHHeAuc*%

=

KB 9	AUVCy4B# 54
 }IB0A6Cy42E2 54 J- D  54 54s   D?E EE	E	c                     t        t        g d            }t        j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   y xY w)NrP   r   rg   rp   z does not support reduction 'sum'r"   )r   r   r2   r3   r4   r(   r   )r   rH   s     r   test_numeric_like_ops_seriesz/TestCategoricalOps.test_numeric_like_ops_series  s8    ;|,-]]9,NOFF1I POOs   AAzop, str_repr   c                     t        t        g d            }d| d}t        j                  t        |      5   t        ||      d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r"   r   )r   r   r2   r3   r4   ry   )r   rd   r   rH   rE   s        r   "test_numeric_like_ops_series_arithz5TestCategoricalOps.test_numeric_like_ops_series_arith  sL     ;|,-4WI=QR]]9C0GArN1 100s   AAc                     t        t        g d            }d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr   z:Object with dtype category cannot perform the numpy op logr"   )r   r   r2   r3   r4   r(   log)r   rH   rE   s      r   $test_numeric_like_ops_series_invalidz7TestCategoricalOps.test_numeric_like_ops_series_invalid  s;    ;|,-J]]9C0FF1I 100s   AAN)rJ   rK   rL   r2   markparametrizer   rY   r`   re   rk   rn   rq   ru   filterwarningsr}   r   r8   rI   r   r   r   r   r   r   r   r   rM   r   r   rO   rO      su   [[
saVi/61BCD	0W
QL&7 [[ 896 :6 [[ 896 :6 [[
u+tE{DK	09i2ST?	?B [[@H	
OO&3: [[	
r   rO   )numpyr(   r2   pandasr   r   r   r   r   r   pandas._testing_testingr   r	   rO   rM   r   r   <module>r      s6        p. p.f\ \r   