
    OwgL                         d dl Z d dlZd dlZd dlmc 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 d dlmZ ej.                  d        Zej.                  d        Z G d d      Zy)    N)
CategoricalCategoricalDtypeCategoricalIndex	DataFrameIndexIntervalSeries	Timedelta	Timestampoption_contextc                      t        dt        j                  dd      it        t	        d      t        t	        d            d      	      S )
NA   int64dtypeaabbcacabBr   nameindexr   nparanger   listr        ]/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexing/test_categorical.pydfr!      sC    1G,	
 N"24;"?c
	 r   c                      t        dt        j                  dd      it        t	        d      t        t	        d            d      	      S )
Nr   r   r   r   r   caber   r   r   r   r   r   r    df2r$   $   sC    1G,	
 N"24<"@s
	 r   c                   l   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ej(                  j+                  dd ej,                  d ej0                  d            g      d        Zd Zd Zej(                  j+                  dg dg dg dg dgd ej:                  D        d ej<                  D         ej@                  g d e!!       e"d"d#       e"d#d$       e"d$d%      g e#d&d"d"       e#d&d'd"       e#d&d(d"      g e$d"d)       e$d'd)       e$d(d*      gd+ ejJ                  D        e&jN                  jQ                  g d,      j@                   e&jR                  d-d(.      j@                   e&jT                  d/d(0      j@                        d1        Z+d2 Z,y3)4TestCategoricalIndexc                    t        t        d            }|j                  d   }t        t        d      d      j	                  |      }|j
                  |k(  sJ t        dg dit        |            }t        j                  ||       |j                         }d	|j                  d<   t        t        d
      d      j	                  |      }|j
                  |k(  sJ t        dg dit        |            }t        j                  ||       t        j                  t        d      5  |j                  d    d d d        |j                         }|j                         }|j                  j	                  t              |_        d|j                  d<   d|j                  d<   t        j                  ||       y # 1 sw Y   xY w)Nr   aaaar   r   r   )r         r      r   )r-   r-            r-   z^'d'$matchd
   )r   r   locr	   astyper   r   r   tmassert_frame_equalcopypytestraisesKeyErrorr   object)selfr!   r   resultbidxexpectedbidx2r$   s           r    test_loc_scalarz$TestCategoricalIndex.test_loc_scalar1   sm    e-d5k,33E:zzU"""c9-U4[A
fh/WWYstH~C077>{{e###* ,	
 	b(+ ]]884 	FF3K	 ggi88:!..v6S
c8,	 	s   *F;;Gc           
      h   d|j                   d<   |j                         }d|j                   d<   t        t        d      d      }t	        dg d	it        |      
      }t        j                  ||       |j                         }d|j                   d<   t	        ddddddt        j                  gt        j                  t        j                  t        j                  t        j                  t        j                  t        j                  dgdt        |      
      }t        j                  ||       y )Nr-   r(   r4   )r3   r   aabbcadr   r*   r   )r-   r-   r.   r/   r0   r-   g      $@r   )r3   Cr.   r/   r0   )r   rF   )	r5   r9   r   r   r   r7   r8   r   nan)r>   r!   df3bidx3	expected3df4s         r    ,test_loc_setitem_with_expansion_non_categoryzATestCategoricalIndex.test_loc_setitem_with_expansion_non_categoryQ   s    s ggid9oC00 ,	
	 	c9- ggi"aAr2662ffbffbffbffbffbffbI ,
	 	c9-r   c                     t        j                  t        d      5  |j                  d    d d d        y # 1 sw Y   y xY w)Nz^1$r1   r+   r:   r;   r<   r5   )r>   r!   s     r    $test_loc_getitem_scalar_non_categoryz9TestCategoricalIndex.test_loc_getitem_scalar_non_categorym   s0    ]]851 	FF1I	 	 	   5>c                    t        t        g d            }|d d d   }t        j                  g dt        j                        }t        j                  |j                         |       t        dt        j                  d      dz   j                  d      i      }t        j                  |j                  g d	
      |d<   t        dt        dd      gddgd      }|j                  d   }t        j                   ||       t        dt        j                  dd      j                  d      it        j                  dd      j                  d            }t        j                  |j                  g d	
      |d<   |j                  dd }t        j"                  ||       t        dt        dd      gddgd      }|j$                  d   }t        j                   ||       y )Nr+   r.   r/   r0   )r0   r/   r.   r+   r   valued   r+   r   )r      2   K   rU   )binsD   r   rV   r4   r   r      r-   r   	      )r	   r   r   arrayr   r7   assert_numpy_array_equal	__array__r   r   r6   pdcutrT   r   ilocassert_series_equalr8   r5   )r>   catreverseexpr!   rA   r?   s          r    test_slicingz!TestCategoricalIndex.test_slicingq   sz   [./dd)hh|2884
##G$5$5$7="))C.1"4!<!<W!EFG&&(<=32x2/~BO
vx0biiB'..w78))B#**73
 x~~4HIB
fh/1hq"o.wn1M
vx0r   c                 n	   t        g dg d      }t        g d      }g d}t        ||d|      }t        dd	gg d      }t        d
dg      }ddg}t        ||d|      }t        ||d      }	t        ddgddgdd
      }
d}|j                  ddd d f   }t        j                  ||       t        |d   j                  t              sJ |j                  dd d f   }t        j                  ||
       t        |d   t              sJ |j                  d d df   }t        j                  ||	       t        |j                  t              sJ |j                  d   }||k(  sJ |j                  d
dd d f   }t        j                  ||       t        |d   j                  t              sJ |j                  d
d d f   }t        j                  ||
       t        |d   t              sJ |j                  d d df   }t        j                  ||	       t        |j                  t              sJ |j                  d   }||k(  sJ |j                  d
|j                  d   f   }||k(  sJ |j                  d   }||k(  sJ |j                  d   }||k(  sJ |j                  dg   }||d   dk(     }t        j                  ||       ||d   dk(     }t        j                  ||       |j                  d   }||k(  sJ |j                  d   }t        j                  ||
       t        |d   t              sJ |j                  t!        dd         }t        j                  ||       t        |d   j                  t              sJ |j                  ddg   }t        j                  ||       t        |d   j                  t              sJ |j                  d d df   }t        j                  ||	       t        |j                  t              sJ |j                  d d t!        dd      f   }t        j                  ||       t        |d   j                  t              sJ |j                  d d ddgf   }t        j                  ||       t        |d   j                  t              sJ y )N)r(   cbrl   rl   rl   rl   r(   rm   rl   
categorieshijklmn)r+   r.   r/   r0   r,   r      catsvaluesr   rm   rl   rt   ru   r/   r0   r{   r\   r|   r=   )r   r   r   r.   r   )r.   r   )rt   r{   r+   )r   r   r   r	   re   r7   r8   
isinstancer   r   rf   strr5   columnsiatatslice)r>   r{   idxr|   r!   cats2idx2values2exp_dfexp_colexp_rowexp_valres_dfres_rowres_colres_val	exp_fancy	res_fancys                     r    test_slicing_and_getting_opsz1TestCategoricalIndex.test_slicing_and_getting_ops   s    /O
 78&7sC S#J?Cc3Z a& EW=TJ Sv6 #q&();8RUV  1a
ff-&...0@AAA ''!Q$-
w0'&/3/// ''!Q$-
w0'--)9::: ''$-'!!! C
#
ff-&...0@AAA &&a.
w0'&/3/// &&F#
w0'--)9::: &&%'!!! &&bjjm+,'!!! &&,'!!! %%$'!!! GGQCL	r&zS()	
i3r(|q()	
i3 %%$'!!! ''!*
w0'&/3///q!%
ff-&...0@AAA!Q
ff-&...0@AAA''!Q$-
w0'--)9:::E!QK(
fb)&...0@AAAQF#
fb)&...0@AAAr   c                    t        g dg d      }t        g d      }g d}t        ||d|      }|j                  dd	d d f   }t        t        d
d
gg d      ddgdddg      }t	        j
                  ||       |j                  dd	d d f   j                  }t        ddgddgt              }t	        j                  ||       |j                  dddf   }t        t        g dg d      g dd      }t	        j                  ||       |j                  dd|j                  dd f   }t        dt        g dg d      ig d      }t	        j
                  ||       y )N)r(   rm   rm   rm   rl   rl   rl   rn   ro   rq   )r+   r.   r.   r.   r/   r0   r,   rz   r   r.   r0   rm   rt   ru   categoryr   r{   r|   r   rr   )r(   rm   rm   )rr   rs   rt   r\   r   r+   )r   r   r   re   r7   r8   dtypesr	   r=   rf   r5   r   )r>   r{   r   r|   r!   r?   rA   s          r    test_slicing_doc_examplesz.TestCategoricalIndex.test_slicing_doc_examples  s\   /O
 78&7sC1a#S#J?Ka& *
 	fh/1a'':w/&(1C6R
vx0C(OD!

 	vx0CAa01[_MN!
 	fh/r   c                 x    |j                   ddg   }|j                  g d   }t        j                  ||d       y )Nrl   r(   )r0   r   r+   r,   Tcheck_index_type)r5   re   r7   r8   )r>   r!   r?   rA   s       r     test_loc_getitem_listlike_labelsz5TestCategoricalIndex.test_loc_getitem_listlike_labels)  s4    c
#77<(
fhFr   c                     t        j                  t        t        j                  d            5  |j
                  g d    d d d        y # 1 sw Y   y xY w)N['e'] not in indexr1   r(   rm   er:   r;   r<   reescaper5   r>   r$   s     r    )test_loc_getitem_listlike_unused_categoryz>TestCategoricalIndex.test_loc_getitem_listlike_unused_category/  s=     ]]82995I+JK 	%GGO$	% 	% 	%   A

Ac                     t        j                  t        d      5  |j                  d    d d d        y # 1 sw Y   y xY w)Nz^'e'$r1   r   rN   r   s     r    &test_loc_getitem_label_unused_categoryz;TestCategoricalIndex.test_loc_getitem_label_unused_category5  s0    ]]884 	GGCL	 	 	rP   c                     t        j                  t        t        j                  d            5  |j
                  ddg    d d d        y # 1 sw Y   y xY w)Nz['d'] not in indexr1   r(   r3   r   r   s     r    test_loc_getitem_non_categoryz2TestCategoricalIndex.test_loc_getitem_non_category:  s?    ]]82995I+JK 	 GGS#J	  	  	 r   c                     |j                         }d|j                  d<   |j                  g d   }t        t        d      t        d      d      }t	        dg d	i|
      }t        j                  ||       y )Nr-   r   r   aaabber#   r   )rp   r   r   )r   r+   r,   r.   r/   r-   r   )r9   r5   r   r   r   r7   r8   )r>   r$   r!   r?   	exp_indexrA   s         r    0test_loc_setitem_expansion_label_unused_categoryzETestCategoricalIndex.test_loc_setitem_expansion_label_unused_category?  sa    XXZs($T(^VSVW	c#67yI
fh/r   c                 F   t        g d      }t        g dg dd|      }|j                  ddg   }t        ddg|j                        }t        d	d
gddgd|      }t	        j
                  ||d       |j                  g d   }t        g d|j                        }t        g dg dd|      }t	        j
                  ||d       t        j                  t        t        j                  d            5  |j                  ddg    d d d        y # 1 sw Y   y xY w)Nrn   r+   r.   r/   r0   r,   r   r   r   r   r(   rm   ro   r+   r.   r0   r,   Tr   r(   r(   rm   )r+   r+   r.   )r0   r0   r,   ['x'] not in indexr1   x)r   r   r5   rp   r7   r8   r:   r;   r<   r   r   )r>   r   r!   resr   ri   s         r    test_loc_listlike_dtypesz-TestCategoricalIndex.test_loc_listlike_dtypesH  s     !1YY7uE ffc3Z $c3ZE<L<LM	q!fAq62)D
c3> ff_%$_AQAQR	ii8	J
c3>]]82995I+JK 	FFC:	 	 	s   <DD c                    t        g d      }t        g dg dd|      }|j                  ddg   }t        g dg d	dt        g d
            }t        j                  ||d       |j                  g d
   }t        g dg ddt        g d            }t        j                  ||d       t        j                  t        t        j                  d            5  |j                  ddg    d d d        y # 1 sw Y   y xY w)N)r(   rm   r(   r   r   r   r   r(   rm   r+   r/   r.   )r0   r   r,   r   Tr   r+   r/   r+   r/   r.   )r0   r   r0   r   r,   r(   r(   r(   r(   rm   r   r1   r   )
r   r   r5   r7   r8   r:   r;   r<   r   r   r>   r   r!   r   ri   s        r    8test_loc_listlike_dtypes_duplicated_categories_and_codeszMTestCategoricalIndex.test_loc_listlike_dtypes_duplicated_categories_and_codes_  s     1YY7uE ffc3Z ),4D_4U
 	c3> ff_%!8"#<=
 	c3>]]82995I+JK 	FFC:	 	 	s    C;;Dc           	      P   t        g dt        d            }t        g dg dd|      }|j                  dd	g   }t        g d
g ddt        g dt        d                  }t	        j
                  ||d       |j                  g d   }t        g dg ddt        g dt        d                  }t	        j
                  ||d       t        j                  t        t        j                  d            5  |j                  ddg    d d d        y # 1 sw Y   y xY w)Nr(   rm   r(   rl   abcdero   rR   r,   r   ry   r_   r   r   r(   rm   r   )r,   ry   r   r   Tr   r   )r,   ry   r,   ry   r   r   r   r1   r   )r   r   r   r5   r7   r8   r:   r;   r<   r   r   r   s        r    (test_loc_listlike_dtypes_unused_categoryz=TestCategoricalIndex.test_loc_listlike_dtypes_unused_categoryv  s     !5$w-P\=UKffc3Z ),"?tG}M
 	c3> ff_%!8"#<gW
 	c3>]]82995I+JK 	FFC:	 	 	s   DD%c                    t        g dt        d            }t        g dg dd|      }t        j                  t
        d	      5  |j                  d    d d d        t        j                  t
        t        j                  d
      	      5  |j                  ddg    d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   r   ro   rR   r   r   r   r   r1   r   r(   )	r   r   r   r:   r;   r<   r5   r   r   )r>   r   r!   s      r    9test_loc_getitem_listlike_unused_category_raises_keyerrorzNTestCategoricalIndex.test_loc_getitem_listlike_unused_category_raises_keyerror  s     !5$w-P\=UK]]83/ 	FF3K	 ]]82995I+JK 	FFC:	 			 		 	s   B)B5)B25B>c                    t        t        j                  j                  d      j	                  d      t        d      t        d            }|j                         }t        |j                        |_        t        |j                        |_	        t        |j                  dd d f   |j                  d      }t        j                  |j                  dd d f   |       t        |j                  d d df   |j                  d      }t        j                  |j                  d d df   |       t        t        d	      g d
      }t        |j                  ddgd d f   |j                  |      }t        j                  |j                  ddgd d f   |       t        t        d      g d      }t        |j                  d d ddgf   |j                  |      }t        j                  |j                  d d ddgf   |       y )Nr.   r/   r/   ABCXYZr   r   r   r\   XABr   r   rF   ro   r   r   r   XY)r   YZr   )r   r   randomdefault_rngstandard_normalr   r9   r   r   r   r	   r5   r7   rf   r8   )r>   r!   cdfexpectr   exp_columnss         r    test_ix_categorical_indexz.TestCategoricalIndex.test_ix_categorical_index  s   II!!!$44V<u+K

 ggi$RXX.	&rzz2sAvckkD
swwsAv7q#vciicB
swwq#v7$T$ZOL	2663*a-0#++YW
cggsCj!m4f=&tDzoN266!c3Z-0		;W
cgga#sm4f=r   infer_stringFTpyarrow)marksc           
         t        d|      5  t        t        j                  j	                  d      j                  d      t        d      t        d            }|j                         }t        |j                        |_	        t        |j                        |_
        t        t        d      dd	g
      }t        |j                  dd d f   |j                  |      }t        j                  |j                  dd d f   |       t        t        d      ddg
      }t        |j                  d d df   |j                  |      }t        j                  |j                  d d df   |       t        |j                  dd	gd d f   |j                  t        t        d                  }t        j                  |j                  dd	gd d f   |       t        |j                  d d ddgf   |j                  t        t        d                  }t        j                  |j                  d d ddgf   |       d d d        y # 1 sw Y   y xY w)Nzfuture.infer_stringr.   r   ABAXYXr   AAr   r   ro   r   XXr   r   AABXXY)r   r   r   r   r   r   r   r9   r   r   r   r5   r7   r8   )r>   r   r!   r   r   r   r   s          r    $test_ix_categorical_index_non_uniquez9TestCategoricalIndex.test_ix_categorical_index_non_unique  s   
 1<@ 	B		%%a(88@5kUB
 '')C(2CI*2::6CK(dc
KIrvvc1f~s{{)TF!!#''#q&/6:*4:3*MKrvvaf~SYYTF!!#''!S&/6:Sz1}%&tE{3F
 !!#''3*a-"8&Aq3*}%ii(e5F
 !!#''!c3Z-"8&A=	B 	B 	Bs   H-IIc                     d}t        j                  t        |      5  |j                  dd  d d d        |j                  dd }|j                  g d   }t        j                  ||       y # 1 sw Y   @xY w)NzRcannot do slice indexing on CategoricalIndex with these indexers \[1\] of type intr1   r+   r,   rm   rl   )r.   r/   r0   )r:   r;   	TypeErrorr5   re   r7   r8   )r>   r!   msgr?   rA   s        r    test_loc_slicez#TestCategoricalIndex.test_loc_slice  sm    * 	 ]]9C0 	FF1QK	 C779%
fh/	 	s   A--A6c                     t        ddgddgddggt        g d            }|d	   }|j                  d
   dk(  sJ |j                  d
   dk(  sJ |j                  d   dk(  sJ |j                  d   dk(  sJ y )Nr+   r.   r/   r0   r,   r   r   r   r   r   )r   r+   )r   r   r5   r   )r>   r!   ss      r    &test_loc_and_at_with_categorical_indexz;TestCategoricalIndex.test_loc_and_at_with_categorical_index  s    VaVaV$,<_,M
 qEuuSzQttCyA~~vvf~"""uuV}!!!r   
idx_valuesr   )rS   g      ?g      @      @)g      g      g      c              #   N   K   | ]  }t        j                  g d |        ywr   r   Nr   r`   .0r   s     r    	<genexpr>zTestCategoricalIndex.<genexpr>  s     T5bhhy..T   #%c              #   N   K   | ]  }t        j                  g d |        yw)r   r   Nr   )r   dtyps     r    r   zTestCategoricalIndex.<genexpr>  s     Vbhhd33Vr   )r+   rm   r   r   r+   r0   r   r^   i  r.   r/   r3   rZ   c              #   N   K   | ]  }t        j                  g d |        ywr   )rc   r`   r   s     r    r   zTestCategoricalIndex.<genexpr>  s     Q5bhhy..Qr   )r+   r0   r   r^   z
2019-01-01)periods1d)startr   c                    t        ||      }t        dg di|      }t        |d   |d         }|j                  |d      }t	        dgdg|d         }t        j                  ||       |j                  |d d	    }t        dd
g|d d	 dg      }t        j                  ||       |j                  |   }t        dd
g|d d	 dg      }t        j                  ||       |j                         }d|j                  |d   <   t        dg di|      }t        j                  ||       |j                         }ddg|j                  |d d	 df<   t        dg di|      }t        j                  ||       |j                         }ddg|j                  |df<   t        dg di|      }t        j                  ||       y )N)orderedr   )foobarbazr   r   r+   r   r\   r.   r   r   qux)r   r   r   qux2)r   r   r   )	r   r   r   r5   r	   r7   rf   r8   r9   )r>   r   r   cat_idxr!   slr?   rA   s           r    +test_loc_getitem_with_non_string_categoriesz@TestCategoricalIndex.test_loc_getitem_with_non_string_categories  s   8 #:w?237C:a=*Q-0 
1&5'#Z]C
vx0 
2A'eU^72A;N
fh/ eU^72A;N
fh/ $)

:a=!c#89I
fh/ +0&/

:bq>3&'c#9:'J
fh/ $fo

2s7c#9:'J
fh/r   c                    t        ddt        j                  g      }t        t	        d      |      }|t        j                     dk(  sJ |j
                  t        j                     dk(  sJ t        |      }|j
                  t        j                  df   dk(  sJ |j
                  t        j                     d   dk(  sJ y )Nr   r   r/   r   r.   r   )r   r   rG   r	   ranger5   r   )r>   ciserr!   s       r    !test_getitem_categorical_with_nanz6TestCategoricalIndex.test_getitem_categorical_with_nan2  s    sC01U1XR(266{awwrvv!###s^vvbffai A%%%vvbff~a A%%%r   N)-__name__
__module____qualname__rC   rL   rO   rj   r   r   r   r   r   r   r   r   r   r   r   r   r:   markparametrizeparamtd
skip_if_nor   r   r   r7   ALL_INT_NUMPY_DTYPESFLOAT_NUMPY_DTYPESr   r`   r=   r   r   r
   ALL_INT_EA_DTYPESrc   IntervalIndexfrom_breaks
date_rangetimedelta_ranger  r  r   r   r    r&   r&   0   s   -@.812wBr$0LG%
 
0...
>2 [[Ty9Q RS B BD0" [[ 	
 UB<S<ST	
 W@U@UV	
 BHH]&1	
 a^Xa^Xa^<	
 tQ"IdAq$99T1a;PQ	
 q#	!S 19Q3DE	
" RB<P<PQ#	
& ((6<<'	
( BMM,288)	
* BT15;;+	
4%054%0N&r   r&   )r   numpyr   r:   pandas.util._test_decoratorsutil_test_decoratorsr  pandasrc   r   r   r   r   r   r   r	   r
   r   r   pandas._testing_testingr7   fixturer!   r$   r&   r   r   r    <module>r     sg    	   ) )        M& M&r   