
    bMhL                         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dS )    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        f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexing/test_categorical.pydfr!      sb    1G,,,	
 NN"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$   $   sb    1G,,,	
 NN"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                            dd ej        d ej        d                    g          d             Zd Zd Ze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j%        D             e&j'        (                    g d,          j          e&j)        d-d(.          j          e&j*        d/d(0          j                   d1             Z+d2 Z,d3S )4TestCategoricalIndexc                    t          t          d                    }|j        d         }t          t          d          d                              |          }|j        |k    sJ t          dg dit          |                    }t          j	        ||           |
                                }d	|j        d<   t          t          d
          d                              |          }|j        |k    sJ t          dg dit          |                    }t          j	        ||           t          j        t          d          5  |j        d          d d d            n# 1 swxY w Y   |
                                }|
                                }|j                            t                    |_        d|j        d<   d|j        d<   t          j	        ||           d S )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   s    e--d5kk,,,33E::zU""""c999-U4[[AAA
fh///WWYYstH~~C00077>>{e####*** ,,	
 
 
 	b(+++ ]88444 	 	F3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ggii88::!..v66S
c8,,,,,s   E''E+.E+c           
      P   d|j         d<   |                                }d|j         d<   t          t          d          d          }t	          dg d	it          |          
          }t          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        ||           d S )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 ggiid9ooC000000 ,,	
 
 
	 	c9--- ggii"aAr262fbfbfbfbfbfbI  ,,
 
 
	 	c9-----r   c                     t          j        t          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )Nz^1$r1   r+   r:   r;   r<   r5   )r>   r!   s     r    $test_loc_getitem_scalar_non_categoryz9TestCategoricalIndex.test_loc_getitem_scalar_non_categorym   s    ]85111 	 	F1II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   7;;c                    t          t          g d                    }|d d d         }t          j        g dt          j                  }t          j        |                                |           t          dt          j	        d          dz   
                    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          
                    d          it          j	        dd          
                    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        ||           d S )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   s   [..//ddd)h|||28444
#G$5$5$7$7===")C..1"4!<!<W!E!EFGG&(<(<(<===32x2/~BOOO
vx000biB''..w778)B##**733
 
 
 x~4H4H4HIIIB
fh///1hq"oo.wn1MMM
vx00000r   c                 	   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 d S )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   sG    ///OOO
 
 
 77788&&&77sCCC S#J???CCCc3Z  a& EW==TJJJ Sv666 #q&();8RUVVV  1aaa
ff---&..0@AAAAA '!QQQ$-
w000'&/3///// '!!!Q$-
w000'-)9::::: '$-'!!!! C
#
ff---&..0@AAAAA &aaa.
w000'&/3///// &F#
w000'-)9::::: &%'!!!! &bjm+,'!!!! &,'!!!! %$'!!!! GQCL	r&zS()	
i333r(|q()	
i333 %$'!!!! '!*
w000'&/3/////q!%
ff---&..0@AAAAA!Q
ff---&..0@AAAAA'!!!Q$-
w000'-)9:::::E!QKK(
fb)))&..0@AAAAAQF#
fb)))&..0@AAAA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        ||           d S )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   ///OOO
 
 
 77788&&&77sCCC1aaa#S#J???KKKa&  *
 
 
 	fh///1aaa':w/&(1C6RRR
vx000C(OOODDD!//
 
 

 	vx000CAaC01[___MMMN!//
 
 
 	fh/////r   c                 p    |j         ddg         }|j        g d         }t          j        ||d           d S )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)  s@    c
#7<<<(
fhFFFFFFr   c                     t          j        t          t          j        d                    5  |j        g d          d d d            d S # 1 swxY w Y   d S )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     ]8295I+J+JKKK 	% 	%GOOO$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   AAAc                     t          j        t          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )Nz^'e'$r1   r   rN   r   s     r    &test_loc_getitem_label_unused_categoryz;TestCategoricalIndex.test_loc_getitem_label_unused_category5  s    ]88444 	 	GCLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rP   c                     t          j        t          t          j        d                    5  |j        ddg          d d d            d S # 1 swxY w Y   d S )Nz['d'] not in indexr1   r(   r3   r   r   s     r    test_loc_getitem_non_categoryz2TestCategoricalIndex.test_loc_getitem_non_category:  s    ]8295I+J+JKKK 	  	 GS#J	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 r   c                    |                                 }d|j        d<   |j        g d         }t          t          d          t          d          d          }t	          dg d	i|
          }t          j        ||           d S )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?  s    XXZZs($T(^^VSVWWW	c#6#6#67yIII
fh/////r   c                 Z   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            d S # 1 swxY w Y   d S )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1YYYYYY77uEEE fc3Z $c3ZE<LMMM	q!fAq622)DDD
c3>>>> f___%$___AQRRR	iiiiii88	JJJ
c3>>>>]8295I+J+JKKK 	 	FC:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   D  D$'D$c                 6   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            d S # 1 swxY w Y   d S )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1YYYYYY77uEEE fc3Z ))))),,4D___4U4U
 
 
 	c3>>>> f___%!//88"#<#<#<==
 
 
 	c3>>>>]8295I+J+JKKK 	 	FC:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1DDDc           	         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            d S # 1 swxY w Y   d S )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!5!5$w--PPP\\\==UKKKfc3Z ))))),,"???tG}}MMM
 
 
 	c3>>>> f___%!//88"#<#<#<gWWW
 
 
 	c3>>>>]8295I+J+JKKK 	 	FC:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   D;;D?D?c                    t          g dt          d                    }t          g dg dd|          }t          j        t
          d	          5  |j        d          d d d            n# 1 swxY w Y   t          j        t
          t          j        d
          	          5  |j        ddg          d d d            d S # 1 swxY w Y   d S )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  sO    !5!5!5$w--PPP\\\==UKKK]83/// 	 	F3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]8295I+J+JKKK 	 	FC:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A..A25A2&CC
Cc                 *   t          t          j                            d                              d          t          d          t          d                    }|                                }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         |           d S )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   I!!!$$44V<<u++KK
 
 

 ggii$RX..	&rz22sAAAvckDDD
swsAAAv777qqq#vcicBBB
swqqq#v777$T$ZZOOOLLL	263*aaa-0#+YWWW
cgsCj!!!m4f===&tDzzoooNNN26!!!c3Z-0	;WWW
cgaaa#sm4f=====r   infer_stringFTpyarrow)marksc           
         t          d|          5  t          t          j                            d                              d          t          d          t          d                    }|                                }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            d S # 1 swxY w Y   d S )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 	B	%%a((88@@5kkU  B
 ''))C(22CI*2:66CK(dc
KKKIrvc111f~s{)TTTF!#'#qqq&/6:::*4::3*MMMKrvaaaf~SYTTTF!#'!!!S&/6:::Sz111}%&tE{{33  F
 !#'3*aaa-"8&AAAqqq3*}%i(e55  F
 !#'!!!c3Z-"8&AAA=	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   II%%I),I)c                     d}t          j        t          |          5  |j        dd          d d d            n# 1 swxY w Y   |j        dd         }|j        g d         }t          j        ||           d S )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  s    * 	 ]9C000 	 	F1Q3KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 C7999%
fh/////s   :>>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 d S )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,M
 
 
 qEuSzQtCyA~~~~vf~""""uV}!!!!!!r   
idx_valuesr   )rS   g      ?g      @      @)g      g      g      c              #   F   K   | ]}t          j        g d |          V  dS r   r   Nr   r`   .0r   s     r    	<genexpr>zTestCategoricalIndex.<genexpr>  s5      TT5bhyyy...TTTTTTr   c              #   F   K   | ]}t          j        g d |          V  dS )r   r   Nr   )r   dtyps     r    r   zTestCategoricalIndex.<genexpr>  s5      VVbhd333VVVVVVr   )r+   rm   r   r   r+   r0   r   r^   i  r.   r/   r3   rZ   c              #   F   K   | ]}t          j        g d |          V  dS r   )rc   r`   r   s     r    r   zTestCategoricalIndex.<genexpr>  s5      QQ5bhyyy...QQQQQ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        ||           |                                }d|j        |d         <   t          dg di|          }t          j        ||           |                                }ddg|j        |d d	         df<   t          dg di|          }t          j        ||           |                                }ddg|j        |df<   t          dg di|          }t          j        ||           d S )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2237CCC:a=*Q-00 
1&5'#Z]CCC
vx000 
2A2'eU^72A2;NNN
fh/// eU^72A2;NNN
fh/// $)
:a=!c#8#8#89III
fh/// +0&/
:bqb>3&'c#9#9#9:'JJJ
fh/// $fo
2s7c#9#9#9:'JJ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 d S )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1U1XXR(((26{awrv!####s^^vbfai A%%%%vbf~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   sb       - - -@. . .8  1 1 12wB wB wBr$0 $0 $0LG G G% % %  
     
0 0 0  .  .  .
 
 
> > >2 [Ty9Q9Q R R RS  B  B  BD0 0 0" " " [ IILLOO	
 UTB<STTT	
 WV@UVVV	
 BH]]]&111	
 Xa^^XXa^^XXa^^<	
 YtQ""IIdAq$9$999T1a;P;PQ	
 Yq#		!S 1 199Q3D3DE	
" RQB<PQQQ#	
& ((66<'	
( BM,2228)	
* BT1555;+	
 4%0 %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     sL   				      ) ) ) ) ) ) ) ) )                                       M& M& M& M& M& M& M& M& M& M&r   