
    h&x                         d dl mZm Z  d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ  G d d	      Z y)
    )datedatetimeN)using_string_dtype)HAS_PYARROW)is_float_dtypeis_integer_dtype)CategoricalDtype)CategoricalCategoricalIndexDatetimeIndexIndexIntervalIntervalIndex
MultiIndexNaTSeries	Timestamp
date_rangeperiod_rangetimedelta_rangec                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zej,                  j/                  d eddd       edddd       eddd      g      d        Zd Zd Zd Zd Zej,                  j/                  d  ej@                  d!d"d#ejB                  g       ej@                  g d$d%&      d'd(d)ejB                  g e"jF                  d*       e"jF                  d+      e$g e%d,       e%d-      e$g e%d,d.       e%d-d.      e$gg      d/        Z&ej,                  j/                  d0d1d2g      d3        Z'd4 Z(ej,                  j/                  d5d6d'd(gd'd)gg      ej,                  j/                  d0d1d2g      d7               Z)d8 Z*ej,                  jW                   e,       xr e-d9:      d;        Z.d< Z/d= Z0d> Z1d? Z2ej,                  j/                  d@dA e3g      dB        Z4ej,                  j/                  dCd1d2g      dD        Z5dE Z6ej,                  j/                  dCd1d2g      dF        Z7dG Z8dH Z9dI Z:dJ Z;dK Z<dL Z=ej,                  j/                  d@e>e?g      dM        Z@ej,                  j/                  d@e>e?g      dN        ZAdO ZBej,                  j/                  dPg dQg dRg      dS        ZCdT ZDdU ZEdV ZFdW ZGej,                  j/                  dXd6dYg      dZ        ZHej,                  j/                  dXd6dYg      d[        ZId\ ZJd] ZKej,                  j/                  d0g d^      d_        ZLd` ZMda ZNdb ZOdc ZPdd ZQde ZRdf ZSy6)gTestCategoricalConstructorsc                     t        j                  g d      }t        g dd      }d}t        j                  t
        |      5  t        ||d       d d d        y # 1 sw Y   y xY w)	N         abcdF
categoriesorderedz3The 'fastpath' keyword in Categorical is deprecatedmatchT)dtypefastpath)nparrayr	   tmassert_produces_warningDeprecationWarningr
   selfcodesr(   msgs       VD:\jyotish\venv\Lib\site-packages\pandas/tests/arrays/categorical/test_constructors.pytest_fastpath_deprecatedz4TestCategoricalConstructors.test_fastpath_deprecated'   sL    # ,@%PC''(:#FUT: GFFs   AA%c                 r    t        ddgg dd      }t        |d      }|j                  j                  sJ y )Nr   r   r   r   r   Tr#   categoryr(   )r
   r(   r%   )r0   catress      r3   8test_categorical_from_cat_and_dtype_str_preserve_orderedzTTestCategoricalConstructors.test_categorical_from_cat_and_dtype_str_preserve_ordered.   s3    1a&YE#Z0yy        c                     t        j                  t        d      5  t        dddg       d d d        y # 1 sw Y   y xY w)Nz#Categorical input must be list-liker&   ABr$   pytestraises	TypeErrorr
   r0   s    r3   !test_categorical_disallows_scalarz=TestCategoricalConstructors.test_categorical_disallows_scalar5   s,    ]]9,QRc
3 SRR   5>c                     d}t        j                  t        |      5  t        t	        j
                  t        d      g             d d d        y # 1 sw Y   y xY w)Nz3> 1 ndim Categorical are not supported at this timer&   abcd)rB   rC   NotImplementedErrorr
   r*   r+   listr0   r2   s     r3   test_categorical_1d_onlyz4TestCategoricalConstructors.test_categorical_1d_only:   s9    C]].c:$v,01 ;::s   )AAc                 H   d}t         }t        j                  g d      }t        j                  ||      5  t        g d|       d d d        t        j                  ||      5  t        j                  g dg d|       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)	Nz*'ordered' must either be 'True' or 'False'r   r   r   r&   r   r%   )r   r   r   r   r    r!   r#   )rD   r*   r+   rB   rC   r
   
from_codes)r0   exp_msgexp_errr%   s       r3   test_validate_orderedz1TestCategoricalConstructors.test_validate_ordered@   sx    > ((9%]]7'2	73 3 ]]7'2""ow 32 32 32s   B&BBB!c                    t        g       }t        g       }t        j                  |j                  |       t        g g d      }t        g dt
        j                        }t        j                  |j                  |       y )Nr   r@   r8   )r
   r   r,   assert_index_equalr$   r*   int64)r0   r!   expecteds      r3   test_constructor_emptyz2TestCategoricalConstructors.test_constructor_emptyP   sX    O9
allH5y1"((3
allH5r<   c                 z    t        g ddg      }t        |j                  j                               }|ddgk(  sJ y )NTFr@   )r
   sortedr$   tolist)r0   r9   r$   s      r3   test_constructor_empty_booleanz:TestCategoricalConstructors.test_constructor_empty_booleanZ   s;    "$7CNN1134
eT]***r<   c                     t        j                  g dt              }t        |      }t	        ddgd      }t        j                  |j                  |       |j                  du sJ y )N)r   r   r   r`   ra   r8   r`   ra   Ftupleize_cols)	r*   r+   objectr
   r   r,   rW   r$   r%   r0   valuesresultrY   s       r3   test_constructor_tuplesz3TestCategoricalConstructors.test_constructor_tuples`   sU    6fEV$$u=
f//:~~&&&r<   c                 6   t        j                  t        d      ft        d      ft        d      ft        d      fdgt              d d }t	        |      }t        t        d      ft        d      fgd      }t        j                  |j                  |       y )Nz
2010-01-01z
2010-01-02r   r    r8   Frb   )	r*   r+   r   rd   r
   r   r,   rW   r$   re   s       r3   !test_constructor_tuples_datetimesz=TestCategoricalConstructors.test_constructor_tuples_datetimesg   s     <(*<(*<(*<(* 	
 2	 V$%')L*A)CD
 	f//:r<   c                    t        j                  dddt        j                         gd      }t	        |d      }|j
                  rJ d}t        j                  t        |	      5  t	        |d
       d d d        y # 1 sw Y   y xY w)Nr   r   r   Or8   FrP   zl'values' is not ordered, please explicitly specify the categories order by passing in a categories argument.r&   T)	r*   r+   r   nowr
   r%   rB   rC   rD   )r0   arrfactorr2   s       r3   test_constructor_unsortablez7TestCategoricalConstructors.test_constructor_unsortable{   sk    hh1a0<S%0>>!!D 	 ]]9C0T* 100s   &A==Bc                 >   t        t        dd      t        dd      t        dd      gd      }t        t        dd      t        dd      t        dd      g      }t        |d      }t        j                  ||       t        j
                  |j                  |       y )Nr   r   r      TrP   )r
   r   r   r,   assert_categorical_equalrW   r$   )r0   rg   iiexps       r3   test_constructor_intervalz5TestCategoricalConstructors.test_constructor_interval   s    a^Xa^Xa^<d
 HQNHQNHQNKL"d+
##FC0
f//4r<   c                     t        j                  g dt         j                        }t        |      }t	        j
                  |j                         |       t        |g d      }t	        j
                  |j                         |       t        |g d      }t	        j
                  |j                         |       d}t        j                  t        |      5  t        dd	gg d
       d d d        t        j                  t        |      5  t        ddgg d       d d d        t        g d      }|j                  rJ t        g d      }t        |      }t	        j                  ||       t        g dg d      }t        |      }t	        j                  ||       t        g dg d      }t        |      }t	        j                  ||       t        g dg d      }t        |g d      }t	        j
                  |j                         |j                                t	        j                  |j                  t        g d             t        g dg d      }t        t        |            }t	        j                  ||       t        g dg d      }t        t        |            }t	        j                  ||       t        g d      }t        t        g d            }t	        j                  ||       t        g dg d      }t        t        g d      g d      }t	        j                  ||       t        dd	dt         j                   gg d      }t#        |j                        sJ t        t         j                   dd	dg      }t#        |j                        sJ t        t         j                   dddg      }t%        |j                        sJ t        t         j                   dddg      }t%        |j                        sJ t        dg      }t'        |j                        dk(  sJ |j                  d   dk(  sJ t'        |j(                        dk(  sJ |j(                  d   dk(  sJ t        dg      }t'        |j                        dk(  sJ |j                  d   dk(  sJ t'        |j(                        dk(  sJ |j(                  d   dk(  sJ t	        j*                  d       5  t        g dg d       d d d        t	        j*                  d       5  t        g dg d       d d d        t	        j*                  d       5  t        g dg d       t        dd	gg d      }d d d        t	        j*                  d       5  t        t        j                  g d      g dd       d d 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# 1 sw Y   xY w# 1 sw Y   y xY w)N)r   r    r!   r   r    r!   r8   rQ   r@   r!   r    r   %Categorical categories must be uniquer&   r   r   )r   r   r   r   r    )r   r    r    r   r    r!   r   r   )r   r!   r    r   r          @      ?g      @r   )r   r   r   r   r   r   )r         rX   r6   Tr#   )r*   r+   object_r
   r,   assert_numpy_array_equal	__array__rB   rC   
ValueErrorr%   ru   rW   r$   r   r   nanr   r   lenr1   r-   )r0   exp_arrc1c2r2   r9   s         r3   test_constructorz,TestCategoricalConstructors.test_constructor   s   ((9L!
##BLLNG<_=
##BLLNG<_=
##BLLNG< 6]]:S1A	* 2 ]]:S1c
O4 2 -.::~ -._
##B+-:NO_
##B+-/J_
##B+-/J8
##BLLNBLLNC
bmmU?-CD -:NO$
##B+-/J$
##B+ -. 456
##B+-:NO 45BVW
##B+ 1aBFF+	B/// 2661a+,/// 2661c1-.cnn---2663S12cnn--- 1#3>>"a'''~~a A%%%399~"""yy|q   3% 3>>"a'''~~a C'''399~"""yy|q   
 ''-*G . ''-*yA . ''-*I6q!f;C .
 ''-73	SWX .-A 21 21b .- .- .-
 .-sH   WW:W )W,"W8&XWW W),W58XXc                    t        g d      }t        g dddg      }t        ||j                        }t        j                  ||       t        t	        |      |j                        }t        j                  ||       y )Nr|   r    r!   r@   )r
   r$   r,   ru   r   )r0   c0r   r   c3s        r3   )test_constructor_with_existing_categorieszETestCategoricalConstructors.test_constructor_with_existing_categories   sd     -.-3*E6
##B+>
##B+r<   c                     d}t        j                  t        |      5  t        ddgd       d d d        y # 1 sw Y   y xY w)Nz.^Parameter 'categories' must be list-like, wasr&   r   r    r@   rA   rL   s     r3   test_constructor_not_sequencez9TestCategoricalConstructors.test_constructor_not_sequence  s/    ?]]9C0c
s3 100s	   7A c                    d}t        j                  t        |      5  t        t        j
                  dddgt        j
                  dddg       d d d        t        j                  t        |      5  t        g dg d       d d d        t        j                  t        |      5  t        t        dd	g      t        t        d	      g       d d d        y # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)
N%Categorical categories cannot be nullr&   r   r    r!   r@   )Nr   r    r!   nat20160101)	rB   rC   r   r
   r*   r   r   r   r   rL   s     r3   test_constructor_with_nullz6TestCategoricalConstructors.test_constructor_with_null  s    5]]:S1c3/RVVS#s<ST 2 ]]:S1-:OP 2 ]]:S1uj12:!67 21 21 21 21s#   2C3C%((C1C"%C.1C:c                 b   t        t        d      t        d            }t        j                  |j                  t        |             t        t        d      t        d            }t        j                  |j                  t        |j                  t              |j                               y )Naabbcacabr@   )	r   rK   r,   ru   rf   r
   astyperd   r$   )r0   cis     r3   test_constructor_with_indexz7TestCategoricalConstructors.test_constructor_with_index!  sm    d8neE
##BII{2?d8neE
##II{299V#4O	
r<   c                    t        g d      }t        d dD              }t        j                  ||       t        t        d            }t        j                  ||       t	        j
                  t        d      g dg       t        g dd dD              }t        j                  ||       t        g dt        d            }t        j                  ||       y )NrO   c              3       K   | ]  }|  y wN .0xs     r3   	<genexpr>zNTestCategoricalConstructors.test_constructor_with_generator.<locals>.<genexpr>/  s     /Y!Y   r   r   rQ   c              3       K   | ]  }|  y wr   r   r   s     r3   r   zNTestCategoricalConstructors.test_constructor_with_generator.<locals>.<genexpr>7  s     0FIqIr   r@   )r
   r,   ru   ranger   from_product)r0   rw   r9   s      r3   test_constructor_with_generatorz;TestCategoricalConstructors.test_constructor_with_generator*  s     )$/Y//
##C-%(#
##C-q? ;< )0FI0FG
##C-)a9
##C-r<   c                     t        t        d            }t        |      }t        j                  |j
                  |d       t        g d|      }t        j                  |j
                  |d       y )Nr   T)exactr   r   r   r@   )r   r   r
   r,   rW   r$   )r0   rngr9   s      r3    test_constructor_with_rangeindexz<TestCategoricalConstructors.test_constructor_with_rangeindex<  sQ    E!Ho#
cnnc>)4
cnnc>r<   dtlz1995-01-01 00:00:00r   s)periodsfreq
US/Eastern)r   r   tzz1 dayc                    t        |      }t        |      } t        |      |      }d |j                  _        t        j                  |j                  |       t        j                  |j                  t        j                  dd             |j                         }t        |j                  d<   t        |      } t        |      |j                               }d |j                  _        t        j                  |j                  |       t        j                   g dt        j"                        }t        j                  |j                  |       t%        |      }d|v sJ y )Nr   int8r8   rk   )r   r   r   r   rk   r   )r   r
   type_datar   r,   rW   r$   r   r1   r*   arangecopyr   ilocdropnar+   r   repr)r0   r   r   r!   rY   s2rw   rg   s           r3   "test_constructor_with_datetimelikez>TestCategoricalConstructors.test_constructor_with_datetimelikeF  s     3KN49Q<"
allH5
##AGGRYYq-GH VVXO49RYY[)"
allH5hh'rww7
##AGGS1ar<   c                    t        dddd      }|j                  d       }t        |      }t        j                  |j
                  |       t        t        |            }t        j                  |j
                  |       y )Nz2015-01-01 10:00Dr   r   )r   r   r   )r   
_with_freqr
   r,   rW   r$   r   r0   idxrg   s      r3   -test_constructor_from_index_series_datetimetzzITestCategoricalConstructors.test_constructor_from_index_series_datetimetzk  se    +#q\RnnT"S!
f//5VC[)
f//5r<   c                     t        j                         }t        ||g      }|j                  j                  t
        k(  sJ t        |j                  d         t         u sJ y )Nr   )r   todayr
   r$   r(   rd   r   )r0   vr9   s      r3   test_constructor_date_objectsz9TestCategoricalConstructors.test_constructor_date_objectst  sO    JJL1a&!~~##v---CNN1%&$...r<   c                     t        ddd      }|j                  d       }t        |      }t        j                  |j
                  |       t        t        |            }t        j                  |j
                  |       y )Nz1 daysr   r   r   r   )r   r   r
   r,   rW   r$   r   r   s      r3   ,test_constructor_from_index_series_timedeltazHTestCategoricalConstructors.test_constructor_from_index_series_timedelta|  sb    hS!<nnT"S!
f//5VC[)
f//5r<   c                     t        ddd      }t        |      }t        j                  |j                  |       t        t        |            }t        j                  |j                  |       y )Nz
2015-01-01r   r   r   )r   r
   r,   rW   r$   r   r   s      r3   )test_constructor_from_index_series_periodzETestCategoricalConstructors.test_constructor_from_index_series_period  sT    <c1=S!
f//5VC[)
f//5r<   rf   r~   g333333?g?r   rX   r8   r   r    r!   z2014-01z2014-02z
2014-01-01z
2014-01-02)r   c                 \    t        |      }t        |      }t        j                  ||       y r   r
   r,   ru   )r0   rf   r!   r   s       r3   test_constructor_invariantz6TestCategoricalConstructors.test_constructor_invariant  s'    " ^
##Ar*r<   r%   TFc                     g d}t        ||      }t        g d|      }t        g d||      }t        j                  ||       |j                  |u sJ y )N)r    r   r!   rP   )r   r    r   r!   r8   r#   )r	   r
   r,   ru   r%   )r0   r%   r$   r(   rg   rY   s         r3   test_constructor_with_dtypez7TestCategoricalConstructors.test_constructor_with_dtype  sU    $
 W=1? Z
 	##FH5~~(((r<   c                    t        ddgd      }d}t        j                  t        |      5  t	        ddgddg|       d d d        t        j                  t        |      5  t	        ddgd|       d d d        t        j                  t        |      5  t	        ddgd	|       d d d        y # 1 sw Y   rxY w# 1 sw Y   JxY w# 1 sw Y   y xY w)
Nr   r    TrP   z?Cannot specify `categories` or `ordered` together with `dtype`.r&   r$   r(   r%   r(   F)r	   rB   rC   r   r
   r0   r(   r2   s      r3   (test_constructor_dtype_and_others_raiseszDTestCategoricalConstructors.test_constructor_dtype_and_others_raises  s     #sT:O]]:S1c
SzG 2 ]]:S1c
D> 2 ]]:S1c
E? 21 21 21 21s#   B1#B=C	1B:=C	Cr$   Nc                 r    t        ddg||d      }t        ddg||      }t        j                  ||       y )Nr   r    r7   r$   r%   r(   r#   r   )r0   r$   r%   rg   rY   s        r3   test_constructor_str_categoryz9TestCategoricalConstructors.test_constructor_str_category  s?     #J:wj
 Szj'R
##FH5r<   c                     t        j                  t        d      5  t        ddgd       d d d        y # 1 sw Y   y xY w)NzUnknown dtyper&   r   r   foor8   )rB   rC   r   r
   rE   s    r3   test_constructor_str_unknownz8TestCategoricalConstructors.test_constructor_str_unknown  s*    ]]:_=Ae, >==rG   zCan't be NumPy strings)reasonc                     t        g dt        j                  d      t        j                  d      g      }t        d |j                  D              sJ y )N)10r   r   r   c              3   P   K   | ]  }t        |t        j                           y wr   )
isinstancer*   str_r   s     r3   r   zGTestCategoricalConstructors.test_constructor_np_strs.<locals>.<genexpr>  s     B>a:a)>s   $&)r
   r*   r   allr$   )r0   r9   s     r3   test_constructor_np_strsz4TestCategoricalConstructors.test_constructor_np_strs  s=    
 /BGGCL"''#,+GHB3>>BBBBr<   c                     t        g dd      }t        g d      }t        ||      }t        g dg dd      }t        j                  ||       y )NrQ   TrP   r   r    r"   r8   r#   r	   r
   r,   ru   r0   r(   rf   rg   rY   s        r3   ,test_constructor_from_categorical_with_dtypezHTestCategoricalConstructors.test_constructor_from_categorical_with_dtype  sG     $?_-V51
 	##FH5r<   c                     t        d d      }t        g d      }t        ||      }t        g dg dd      }t        j                  ||       y )NTrP   r   r8   r#   r   r   s        r3   4test_constructor_from_categorical_with_unknown_dtypezPTestCategoricalConstructors.test_constructor_from_categorical_with_unknown_dtype  sG     t4_-V51
 	##FH5r<   c                     t        g d      }t        |g ddd      }t        g dg dd      }t        j                  ||       t        |g dd      }t        j                  ||       y )Nr   rQ   Tr7   r   r#   r   re   s       r3   (test_constructor_from_categorical_stringzDTestCategoricalConstructors.test_constructor_from_categorical_string  sd    _-J
 
 	##FH5 VN
##FH5r<   c                     t        ddgg d      }t        ddgt        g d            }t        j                  ||       t        ddgt        g d            }t        j                  ||       y )Nr   r    rQ   r@   )r
   r,   ru   r   )r0   rY   rg   s      r3   ,test_constructor_with_categorical_categorieszHTestCategoricalConstructors.test_constructor_with_categorical_categories  s]    SzoFc3ZK4PQ
##FH5c3Z4D_4UV
##FH5r<   klassc                 8    t        j                  | t              S )Nr8   )r*   r+   rd   )r   s    r3   <lambda>z$TestCategoricalConstructors.<lambda>  s    !61Jr<   c                      |d|dg      }t        |      }t        ddg      }g d}t        j                  ||      }t        j                  ||       y )Nr   r    )r   rk   r   )r1   r(   )r
   r	   rR   r,   ru   )r0   r   nulls_fixturerf   rg   r(   r1   rY   s           r3   test_construction_with_nullz7TestCategoricalConstructors.test_construction_with_null  sT     ]C01V$ #s,))UC
##FH5r<   validatec                    t        j                  t        d      |      }t        j                  j                  d      j                  dd      }t        |      }t        j                  |||      }|j                  j                  |j                  k(  sJ t        j                  |j                  t        |             y )Nr   r8   r   r   )sizer(   r   )pdr+   r   r*   randomdefault_rngintegersr	   r
   rR   r$   r(   r,   rW   r   )r0   any_numeric_ea_dtyper   catsr1   r(   rp   s          r3   'test_from_codes_nullable_int_categorieszCTestCategoricalConstructors.test_from_codes_nullable_int_categories  s     xxa(<=		%%a(11!!1< &$$U%(K~~##tzz111
cnneDk:r<   c                     g d}t        j                  g |      }t        g |      }t        j                  ||       y )NrQ   r@   r
   rR   r,   ru   )r0   r9   rg   rY   s       r3   test_from_codes_emptyz1TestCategoricalConstructors.test_from_codes_empty  s5    ''s;rc2
##FH5r<   c                     t        ddg      }|r?t        j                  t        d      5  t	        j
                  ddg||       d d d        y t	        j
                  ddg||       y # 1 sw Y   y xY w)Nr   r    codes need to be between r&   r   r   r   )r	   rB   rC   r   r
   rR   )r0   r   r(   s      r3   test_from_codes_validatez4TestCategoricalConstructors.test_from_codes_validate  se     !#s,z1LM&&1vUXN NM ""Aq6J	 NMs   A**A3c                 \   t        ddg      }d}t        j                  t        |      5  t	        j
                  ddg|j                         d d d        t        j                  t        |      5  t	        j
                  ddg|       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)Nr   r   r@   r  r&   r8   r	   rB   rC   r   r
   rR   r$   r   s      r3   "test_from_codes_too_few_categoriesz>TestCategoricalConstructors.test_from_codes_too_few_categories#  s|     QF3)]]:S1""Aq6e6F6FG 2]]:S1""Aq67 21 2111   $B3B"B"B+c                 X   t        ddg      }d}t        j                  t        |      5  t	        j
                  dg|j                         d d d        t        j                  t        |      5  t	        j
                  dg|       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nr   r   r@   $codes need to be array-like integersr&   r   r8   r
  r   s      r3   test_from_codes_non_int_codesz9TestCategoricalConstructors.test_from_codes_non_int_codes+  sx     QF34]]:S1""C5U5E5EF 2]]:S1""C56 21 2111s   #B2B B B)c                     t        j                  t        d      5  t        j                  g dg d       d d d        y # 1 sw Y   y xY w)Nr{   r&   rO   )r   r   r    r@   rB   rC   r   r
   rR   rE   s    r3   %test_from_codes_non_unique_categorieszATestCategoricalConstructors.test_from_codes_non_unique_categories3  s.    ]]:-TU""9I VUUs   AA
c                     t        j                  t        d      5  t        j                  g dddt
        j                  g       d d d        y # 1 sw Y   y xY w)Nr   r&   rO   r   r    r@   )rB   rC   r   r
   rR   r*   r   rE   s    r3    test_from_codes_nan_cat_includedz<TestCategoricalConstructors.test_from_codes_nan_cat_included7  s9    ]]:-TU""9#sBFF9KL VUUs   +AAc                 \   t        g d      }d}t        j                  t        |      5  t	        j
                  g d|j                         d d d        t        j                  t        |      5  t	        j
                  g d|       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)NrQ   r@   z3codes need to be between -1 and len\(categories\)-1r&   )r   r   r8   r
  r   s      r3   test_from_codes_too_negativez8TestCategoricalConstructors.test_from_codes_too_negative;  sp     O<D]]:S1"":%:J:JK 2]]:S1"":U; 21 2111r  c                    t        g d      }t        g dd      }t        j                  g d|j                        }t	        j
                  ||       t        j                  g d|      }t	        j
                  ||       y )NrQ   r@   FrP   rO   r8   )r	   r
   rR   r$   r,   ru   )r0   r(   rw   r:   s       r3   test_from_codesz+TestCategoricalConstructors.test_from_codesC  sb     O</59$$Y5;K;KL
##C-$$Ye<
##C-r<   c                     t        ddgg d      }t        j                  ddg |g d            }t        j                  ||       y )Nr   r    rQ   r@   r   r   r  )r0   r   rY   rg   s       r3   +test_from_codes_with_categorical_categorieszGTestCategoricalConstructors.test_from_codes_with_categorical_categoriesL  s?     SzoF''A5;QR
##FH5r<   c                     t        j                  t        d      5  t        j                  ddg |g d             d d d        y # 1 sw Y   y xY w)Nr{   r&   r   r   )r   r    r   r  )r0   r   s     r3   6test_from_codes_with_non_unique_categorical_categorieszRTestCategoricalConstructors.test_from_codes_with_non_unique_categorical_categoriesT  s7    ]]:-TU""Aq65+AB VUUs   !AAc                 v   ddt         j                  g}t        g d      }t        j                  t
        d      5  t        j                  ||j                         d d d        t        j                  t
        d      5  t        j                  ||       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nr   r   rQ   r@   r  r&   r8   )	r*   r   r	   rB   rC   r   r
   rR   r$   )r0   r1   r(   s      r3   test_from_codes_with_nan_codez9TestCategoricalConstructors.test_from_codes_with_nan_codeY  s    Arvv O<]]:-ST""5U5E5EF U]]:-ST""56 UT UTTTs   "B#B/#B,/B8r1   )r~   r}   r   )g?r}   r   c                 R   t        g d      }d}t        j                  t        |      5  t	        j
                  ||j                         d d d        t        j                  t        |      5  t	        j
                  ||       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)NrQ   r@   r  r&   r8   r
  r/   s       r3   test_from_codes_with_floatz6TestCategoricalConstructors.test_from_codes_with_floatb  sr     !O<4]]:S1""5%*:*:; 2]]:S1""56 21 2111s   !B0BBB&c           	      `   d}t        j                  t        |      5  t        j                  ddgddgt        ddg             d d d        t        j                  t        |      5  t        j                  ddgdt        ddg      	       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)
NzCannot specifyr&   r   r   r   r    r   Tr   )rB   rC   r   r
   rR   r	   rL   s     r3   !test_from_codes_with_dtype_raisesz=TestCategoricalConstructors.test_from_codes_with_dtype_raisesn  s    ]]:S1""AC:5EsCj5Q 2
 ]]:S1""A,<c3Z,H 21 21
 21s   (B)&B$B!$B-c                     d}t        j                  t        |      5  t        j                  ddg       d d d        y # 1 sw Y   y xY w)NzBoth were Noner&   r   r   r  rL   s     r3   test_from_codes_neitherz3TestCategoricalConstructors.test_from_codes_neitherz  s3    ]]:S1""Aq6* 211s	   ?Ac                     t        j                  ddgd      }ddg}t        j                  ||      }t        j                  |j	                  t
              |      }t        j                  ||       y )Nr   r   Int64r8   r   r    r@   )r   r+   r
   rR   to_numpyintr,   ru   )r0   r1   r$   rg   rY   s        r3   !test_from_codes_with_nullable_intz=TestCategoricalConstructors.test_from_codes_with_nullable_int  s\    !Qw/3Z
''*E))%..*=*U
##FH5r<   c                     t        j                  dd gd      }ddg}d}t        j                  t        |      5  t        j                  ||       d d d        y # 1 sw Y   y xY w)	Nr   r'  r8   r   r    zcodes cannot contain NA valuesr&   r@   )r   r+   rB   rC   r   r
   rR   )r0   r1   r$   r2   s       r3   +test_from_codes_with_nullable_int_na_raiseszGTestCategoricalConstructors.test_from_codes_with_nullable_int_na_raises  sN    !T'23Z
.]]:S1""5Z@ 211s   AA%r(   r7   c                     ddg}t        j                  g dd      }t        j                  |||      }t        j                  ||      }t        j                  ||       y )Nr   r    )r   r   r   r   i8r8   r*   r+   r
   _from_inferred_categoriesrR   r,   ru   r0   r(   r  r1   rg   rY   s         r3   test_from_inferred_categoriesz9TestCategoricalConstructors.test_from_inferred_categories  sQ    SzT266tUEJ))%6
##FH5r<   c                     ddg}t        j                  g dd      }t        j                  |||      }t        j                  g dddg      }t        j                  ||       y )Nr    r   )r   r   r   r   r.  r8   )r   r   r   r   r/  r1  s         r3   #test_from_inferred_categories_sortsz?TestCategoricalConstructors.test_from_inferred_categories_sorts  sU    SzT266tUEJ)),c
C
##FH5r<   c                     g d}t        j                  g dd      }t        g dd      }t        j                  |||      }t        g dg dd	      }t        j                  ||       y )
Nr   )r   r   r   r   r.  r8   rz   TrP   )r   r    r   r"   r#   )r*   r+   r	   r
   r0  r,   ru   r0   r  r1   r(   rg   rY   s         r3   #test_from_inferred_categories_dtypez?TestCategoricalConstructors.test_from_inferred_categories_dtype  sZ    T2 $?66tUEJ _d
 	##FH5r<   c                     g d}t        j                  g dd      }t        ddg      }t        j                  |||      }t        dddt         j
                  g      }t        j                  ||       y )N)r   2bad)r   r   r   r   r.  r8   r   r   )r*   r+   r	   r
   r0  r   r,   ru   r6  s         r3   %test_from_inferred_categories_coerceszATestCategoricalConstructors.test_from_inferred_categories_coerces  s`     T2 !Q(66tUEJ1a01
##FH5r<   )NTFc                 V    t        g d|      }|j                  t        |      k(  sJ y )NrO   rP   )r
   r%   bool)r0   r%   r9   s      r3   test_construction_with_orderedz:TestCategoricalConstructors.test_construction_with_ordered  s&     )W5{{d7m+++r<   c                     g d}t        |      }t        j                  |j                  t	        |             t        j
                  t        j                  |      t        j                  |             y )N)r   r   y      @      ?)r
   r,   rW   r$   r   r   r*   r+   )r0   rf   r   s      r3   test_constructor_imaginaryz6TestCategoricalConstructors.test_constructor_imaginary  sJ     
bmmU6];
##BHHRL"((62BCr<   c                     t        t        j                  g dt                    }t	        g d      }|j
                  j                  |      sJ y )N)r!   rj   r    r   r!   r8   )rj   rB  r!   )r
   r*   r+   rd   r   r$   equals)r0   r!   expected_indexs      r3   "test_constructor_string_and_tuplesz>TestCategoricalConstructors.test_constructor_string_and_tuples  s;    !C6RS<=||"">222r<   c                    t        j                  ddd      }t        ||      }t        j                  dd      }t        j                  |j                  |       t        j                  |j                  |       t        |      }t        j                  |j                  |       t        j                  |j                  |       t        t        |            }t        j                  |j                  |       t        j                  |j                  |       t        t        |      t        |            }t        j                  |j                  |       t        j                  |j                  |       |j                  g d      }t        ||      }t        j                  |j                  t        j                  g dd             t        j                  |j                  |       t        j                  dd	d
      }t        ||      }t        j                  g dd      }t        j                  |j                  |       t        j                  |j                  |       t        t        dd      t        dd      g      }t        ||      }t        j                  ddgd      }t        j                  |j                  |       t        j                  |j                  |       y )Nr   
   r   r@   r   r8   r         r   )rI  	   rk   r   r   )r   interval_ranger
   r*   r   r,   r   r1   rW   r$   rK   taker+   r   r   )r0   r   r9   expected_codesrf   s        r3   test_intervalz)TestCategoricalConstructors.test_interval  s   2r2##.2V4
##CII~>
cnnc2 #
##CII~>
cnnc2 $s)$
##CII~>
cnnc2 $s)S	:
##CII~>
cnnc2 )$&S1
##CIIrxx	/PQ
cnnc2 ""1b!4&S1*F;
##CII~>
cnnc2 Xa^Xa^<=##.1a&7
##CII~>
cnnc2r<   c                    t         j                  j                  j                  |gdz  t        j                               }t        |      }|j                  |j                  j                  k(  sJ t        t        t         j                  t         j                  g|j                              }t        j                  ||       y )Nr   r8   )r   arraysStringArray_from_sequenceStringDtyper
   r(   r$   r   NAr,   ru   )r0   r   rp   rg   rY   s        r3   )test_categorical_extension_array_nullablezETestCategoricalConstructors.test_categorical_extension_array_nullable  s    ii##22Oar~~'7 3 
 S!yyF--33333vruubeenCIIFG
##FH5r<   c                 J   t        t        j                  d      j                  d            }t        j                  ||j
                  d      }|j                  |j                  u sJ t        j                  ||j
                  d      }t        j                  ||      rJ y )Nr   r   F)r(   r   T)	r
   r*   r   repeatrS  r(   _codesr,   shares_memory)r0   r9   rg   s      r3   test_from_sequence_copyz3TestCategoricalConstructors.test_from_sequence_copy  s    "))A,--a01++CsyyuM }}

***++CsyytL##FC0000r<   c                     t        j                  d      j                  d      }|d d d   j                         }t	        ||      }||k(  j                         sJ y )NrG  zM8[D]r   r@   )r*   r   viewr   r
   r   )r0   r$   rf   r9   s       r3   $test_constructor_datetime64_non_nanoz@TestCategoricalConstructors.test_constructor_datetime64_non_nano  sR    YYr]''0
CaC%%'&Z8v""$$$r<   c                     t        dd      }|j                  }t        |      }|j                  j                  }||k(  sJ y )Nz
2016-01-01r   rH  )r   r   r
   r$   )r0   dtirY   r9   rg   s        r3   test_constructor_preserves_freqz;TestCategoricalConstructors.test_constructor_preserves_freq
  s>    q188#$$6!!!r<   )T__name__
__module____qualname__r4   r;   rF   rM   rU   rZ   r^   rh   rl   rr   rx   r   r   r   r   r   r   r   rB   markparametrizer   r   r   r   r   r   r   r*   r+   r   r   Periodr   r   r   r   r   r   r   xfailr   r   r   r   r   r   r   rK   r   r  r  r  r  r  r  r  r  r  r
   r   r  r  r  r!  r#  r%  r*  r,  r2  r4  r7  r;  r>  r@  rE  rO  rV  r[  r^  ra  r   r<   r3   r   r   &   s;   ;!4
2 6+';(+5lY\
,4
.$? [[,acB,aclSGQS9	
:6/66 [[BHHc3RVV,-BHHYg.#sBFF#RYYy!9299Y#7=|$i&=sC,<8,<8	
++ [[Yu6) 7)
@ [[\D3*sCj+IJ[[Yu66 7 K6- [[,5M  CC
6666 [[W'JD&QR	6 S	6 [[Z$7; 8;6 [[Z$7K 8K87JM<. [[W{4D&EF6 G6 [[W{4D&EFC GC7 [[W}m&DE	7 F	7
+
6A [[WtZ&896 :6 [[WtZ&896 :666 [[Y(;<, =,
D3(3T6	1%	"r<   r   )!r   r   numpyr*   rB   pandas._configr   pandas.compatr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr	   pandasr   r
   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr,   r   r   r<   r3   <module>rq     sJ   
   - % 7     m" m"r<   