
    dJ                         d dl Z d dlZd dl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 d dlmZ d dlmZ ej        d             Zej        d             Z G d d          ZdS )	    N)is_categorical_dtype)CategoricalCategoricalIndex	DataFrameIndexIntervalSeries	Timedelta	Timestamp)CategoricalDtypec                      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   listCDT     b/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/indexing/test_categorical.pydfr"      sZ    1G,,,	
 tH~~Se5E5ECPPP	   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%   !   sZ    1G,,,	
 tH~~Sf5F5FSQQQ	   r    c                      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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#+          j                  d,             Z(d- Z)d.S )/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_scalar,   s   DKK  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)   r5   )r4   r   aabbcadr   r+   r   )r.   r.   r/   r0   r1   r.   g      $@r   )r4   Cr/   r0   r1   )r   rG   )	r6   r:   r   r   r   r8   r9   r   nan)r?   r"   df3bidx3	expected3df4s         r!   ,test_loc_setitem_with_expansion_non_categoryzATestCategoricalIndex.test_loc_setitem_with_expansion_non_categoryL   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$r2   r,   r;   r<   r=   r6   )r?   r"   s     r!   $test_loc_getitem_scalar_non_categoryz9TestCategoricalIndex.test_loc_getitem_scalar_non_categoryh   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/   r0   r1   )r1   r0   r/   r,   r   valued   r,   r   )r      2   K   rV   )binsD   r   rW   r5   r   r      r.   r   	      )r	   r   r   arrayr   r8   assert_numpy_array_equal	__array__r   r   r7   pdcutrU   r   ilocassert_series_equalr9   r6   )r?   catreverseexpr"   rB   r@   s          r!   test_slicingz!TestCategoricalIndex.test_slicingl   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                 d	   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                  sJ |j        dd d f         }t          j	        ||
           t          |d         t                    sJ |j        d d df         }t          j	        ||	           t          |j                  sJ |j        d         }||k    sJ |j        d
dd d f         }t          j        ||           t          |d         j                  sJ |j        d
d d f         }t          j	        ||
           t          |d         t                    sJ |j        d d df         }t          j	        ||	           t          |j                  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                  sJ |j        ddg         }t          j        ||           t          |d         j                  sJ |j        d d df         }t          j	        ||	           t          |j                  sJ |j        d d t!          dd          f         }t          j        ||           t          |d         j                  sJ |j        d d ddgf         }t          j        ||           t          |d         j                  sJ d S )N)r)   cbrm   rm   rm   rm   r)   rn   rm   
categorieshijklmn)r,   r/   r0   r1   r-   r      catsvaluesr   rn   rm   ru   rv   r0   r1   r|   r]   r}   r>   )r   r   r   r/   r   )r/   r   )ru   r|   r,   )r   r   r   r	   rf   r8   r9   r   r   rg   
isinstancestrr6   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,    ///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---#F6N$899999 '!QQQ$-
w000'&/3///// '!!!Q$-
w000#GM22222 '$-'!!!! C
#
ff---#F6N$899999 &aaa.
w000'&/3///// &F#
w000#GM22222 &%'!!!! &bjm+,'!!!! &,'!!!! %$'!!!! GQCL	r&zS()	
i333r(|q()	
i333 %$'!!!! '!*
w000'&/3/////q!%
ff---#F6N$899999!Q
ff---#F6N$899999'!!!Q$-
w000#GM22222E!QKK(
fb)))#F6N$899999QF#
fb)))#F6N$89999999r    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	          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)   rn   rn   rn   rm   rm   rm   ro   rp   rr   )r,   r/   r/   r/   r0   r1   r-   r{   r   r/   r1   rn   ru   rv   categoryr   r|   r}   rs   )r)   rn   rn   )rs   rt   ru   r]   r   r,   )r   r   r   rf   r8   r9   dtypesr	   rg   r6   r   )r?   r|   r   r}   r"   r@   rB   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/&(1CDD
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 )Nrm   r)   )r1   r   r,   r-   Tcheck_index_type)r6   rf   r8   r9   )r?   r"   r@   rB   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 indexr2   r)   rn   er;   r<   r=   reescaper6   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'$r2   r   rO   r   s     r!   &test_loc_getitem_label_unused_categoryz;TestCategoricalIndex.test_loc_getitem_label_unused_category0  s    ]88444 	 	GCLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rQ   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 indexr2   r)   r4   r   r   s     r!   test_loc_getitem_non_categoryz2TestCategoricalIndex.test_loc_getitem_non_category5  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   )rq   r   r   )r   r,   r-   r/   r0   r.   r   )r:   r6   r   r   r   r8   r9   )r?   r%   r"   r@   	exp_indexrB   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 )Nro   r,   r/   r0   r1   r-   r   r   r   r   r)   rn   rp   r,   r/   r1   r-   Tr   r)   r)   rn   )r,   r,   r/   )r1   r1   r-   ['x'] not in indexr2   x)r   r   r6   rq   r8   r9   r;   r<   r=   r   r   )r?   r   r"   resr   rj   s         r!   test_loc_listlike_dtypesz-TestCategoricalIndex.test_loc_listlike_dtypesC  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)   rn   r)   r   r   r   r   r)   rn   r,   r0   r/   )r1   r   r-   r   Tr   r,   r0   r,   r0   r/   )r1   r   r1   r   r-   r)   r)   r)   r)   rn   r   r2   r   )
r   r   r6   r8   r9   r;   r<   r=   r   r   r?   r   r"   r   rj   s        r!   8test_loc_listlike_dtypes_duplicated_categories_and_codeszMTestCategoricalIndex.test_loc_listlike_dtypes_duplicated_categories_and_codesZ  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)   rn   r)   rm   abcderp   rS   r-   r   rz   r`   r   r   r)   rn   r   )r-   rz   r   r   Tr   r   )r-   rz   r-   rz   r   r   r   r2   r   )r   r   r   r6   r8   r9   r;   r<   r=   r   r   r   s        r!   (test_loc_listlike_dtypes_unused_categoryz=TestCategoricalIndex.test_loc_listlike_dtypes_unused_categoryq  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   rp   rS   r   r   r   r   r2   r   r)   )	r   r   r   r;   r<   r=   r6   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 )Nr0   ABCXYZr   r   r   r]   XABr   r   rG   rp   r   r   r   XY)r   YZr   )r   r   randomrandnr   r:   r   r   r   r	   r6   r8   rg   r9   )r?   r"   cdfexpectr   exp_columnss         r!   test_ix_categorical_indexz.TestCategoricalIndex.test_ix_categorical_index  s   ryq!,,DKKeUUU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    c           	      n   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 S )Nr0   ABAXYXr   AAr   r   rp   r   XXr   r   AABXXY)r   r   r   r   r   r:   r   r   r   r6   r8   r9   )r?   r"   r   r   r   r   s         r!   $test_ix_categorical_index_non_uniquez9TestCategoricalIndex.test_ix_categorical_index_non_unique  s   ryq!,,DKKeUUUggii$RX..	&rz22$T$ZZS#JGGG	26#qqq&>3;iPPP
cgc111fov666&tDzzsCjIII26!!!S&>KPPP
cgaaafov666FC:qqq=!K"4;;//
 
 

 	cgsCj!!!m4f===F111sCj=!)$T%[[11
 
 

 	cgaaa#sm4f=====r    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 intr2   r,   r-   rn   rm   )r/   r0   r1   )r;   r<   	TypeErrorr6   rf   r8   r9   )r?   r"   msgr@   rB   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/   r0   r1   r-   r   r   r   r   r   )r   r,   )r   r   r6   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   )rT   g      ?g      @      @)g      g      g      c              #   F   K   | ]}t          j        g d |          V  dS r   r   Nr   ra   .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,   rn   r   r   r,   r1   r   r_   i  r/   r0   r4   r[   c              #   F   K   | ]}t          j        g d |          V  dS r   )rd   ra   r   s     r!   r   zTestCategoricalIndex.<genexpr>  s5      QQ5bhyyy...QQQQQQr    )r,   r1   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   r6   r	   r8   rg   r9   r:   )r?   r   r   cat_idxr"   slr@   rB   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   r0   r   r/   r   )r   r   rH   r	   ranger6   r   )r?   ciserr"   s       r!   !test_getitem_categorical_with_nanz6TestCategoricalIndex.test_getitem_categorical_with_nan!  s    sC011U1XXR(((26{awrv!####s^^vbfai A%%%%vbf~a A%%%%%%r    N)*__name__
__module____qualname__rD   rM   rP   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   markparametrizer8   ALL_INT_NUMPY_DTYPESFLOAT_NUMPY_DTYPESr   ra   r>   r   r   r
   ALL_INT_EA_DTYPESrd   IntervalIndexfrom_breaks
date_rangetimedelta_ranger   r  r   r    r!   r'   r'   +   s       - - -@. . .8  1 1 12w: w: w:r$0 $0 $0LG G G% % %  
     
0 0 0  .  .  .
 
 
> > >*> > >: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.core.dtypes.commonr   pandasrd   r   r   r   r   r   r	   r
   r   pandas._testing_testingr8   pandas.api.typesr   r   fixturer"   r%   r'   r   r    r!   <module>r     sA   				      : : : : : :    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       4 4 4 4 4 4      A& A& A& A& A& A& A& A& A& A&r    