
    Eg:                         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
 d dlmZ  G d d          Z G d d          Z G d d	          Z G d
 d          Z G d d          ZdS )    N)InvalidIndexError)CategoricalIndexIndexIntervalIndex	Timestampc                        e Zd Zd Zd Zd ZdS )TestTakec                    t          g dd          }|                    t          j        g d                    }t          g dd          }t	          j        ||           t	          j        |j        |j                   |                    t          j        g d          d          }t          dd	t          j        gg dd
          }t	          j        ||           t	          j        |j        |j                   |                    t          j        g d          dd          }t          g dd          }t	          j        ||           t	          j        |j        |j                   t          t          d          t          d          dd          }|                    t          j        g d                    }t          t          d          t          d          dd          }t	          j        ||           t	          j        |j        |j                   |                    t          j        g d          d          }t          ddt          j        gt          d          dd          }t	          j        ||           t	          j        |j        |j                   |                    t          j        g d          dd          }t          t          d          t          d          dd          }t	          j        ||           t	          j        |j        |j                   d}t          j        t          |          5  |                    t          j        g d          d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t          j        g d          d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    t          j        d	dg                     d d d            d S # 1 swxY w Y   d S )N         xxxnamer   r   )r   r   r   T
fill_valuer   r   )
categoriesr   F
allow_fillr   CBAABC)r   orderedr   BCABCJWhen allow_fill=True and fill_value is not None, all indices must be >= -1matchr   r   r   r   3index -5 is out of bounds for (axis 0 with )?size 3r%   )r   takenparraytmassert_index_equalassert_categorical_equalvaluesnanlistpytestraises
ValueError
IndexError)selfidxresultexpectedmsgs        c/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/indexes/categorical/test_indexing.pytest_take_fill_valuezTestTake.test_take_fill_value   s    yyyu555"(:::..//#IIIE:::
fh///
#FM8?CCC "(:::..4@@#Q26NyyyuUUU
fh///
#FM8?CCC "(:::..5TRR#IIIE:::
fh///
#FM8?CCC KKDKKE
 
 
 "(:::..//#KKDKKE
 
 
 	fh///
#FM8?CCC "(:::..4@@##rv4;;5
 
 
 	fh///
#FM8?CCC "(:::..5TRR#KKDKKE
 
 
 	fh///
#FM8?CCC( 	 ]:S111 	< 	<HHRXjjj))dH;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<]:S111 	< 	<HHRXjjj))dH;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< D]:S111 	( 	(HHRXq"g&&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s6   $,NN #N ,O::O>O>"*QQ Qc                 &   t          j        g dd          }t          |          }|                    t	          j        g d                    }t          j        g dd          }t          |          }t          j        ||           |                    t	          j        g d          d          }t          j        g dd          }t          j        g d          }t          ||	          }t          j        ||           |                    t	          j        g d          d
d          }t          j        g dd          }t          |          }t          j        ||           d}t          j	        t          |          5  |                    t	          j        g d          d           d d d            n# 1 swxY w Y   t          j	        t          |          5  |                    t	          j        g d          d           d d d            n# 1 swxY w Y   d}t          j	        t          |          5  |                    t	          j        ddg                     d d d            d S # 1 swxY w Y   d S )N)
2011-01-01
2011-02-01
2011-03-01r   r   r   )r=   r<   r>   Tr   )r=   r<   NaTr   Fr   r   r    r"   r$   r&   r   r%   )pdDatetimeIndexr   r'   r(   r)   r*   r+   r0   r1   r2   r3   )r4   r5   r6   r7   exp_catsr8   s         r9   test_take_fill_value_datetimez&TestTake.test_take_fill_value_datetimeO   s@   IIIPUVVVs##"(:::..//#666U
 
 
 $H--
fh/// "(:::..4@@#$G$G$GeTTT#$N$N$NOO#HBBB
fh/// "(:::..5TRR#666U
 
 
 $H--
fh///( 	 ]:S111 	< 	<HHRXjjj))dH;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<]:S111 	< 	<HHRXjjj))dH;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< D]:S111 	( 	(HHRXq"g&&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s6   ,G		GG/,H''H+.H+*JJ
J
c                    t          g dd          }g d}d}t          j        t          |          5  |                    |d           d d d            n# 1 swxY w Y   d	}t          j        t
          |          5  |                    ||
           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  |                    |d           d d d            d S # 1 swxY w Y   d S )Nr   foor   r   z1take\(\) got an unexpected keyword argument 'foo'r    r   )rF   z$the 'out' parameter is not supported)outz%the 'mode' parameter is not supportedclip)mode)r   r0   r1   	TypeErrorr'   r2   )r4   r5   indicesr8   s       r9   test_take_invalid_kwargsz!TestTake.test_take_invalid_kwargsv   s   yyyu555**B]9C000 	% 	%HHW!H$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 5]:S111 	+ 	+HHW'H***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 6]:S111 	+ 	+HHW6H***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s5   AA AB%%B),B)C22C69C6N)__name__
__module____qualname__r:   rD   rL        r9   r	   r	      sC        <( <( <(|%( %( %(N+ + + + +rQ   r	   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
TestGetLocc                    t          t          d          t          d                    }t          t          d                    }|                    d          |                    d          k    sJ |                    d          |                    d          k    sJ ||fD ]J}t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   Kt          t          d	          t          d                    }t          t          d	                    }|                    d
          }t          j        ||                    d
                     t          j        |t          j
        g d                     |                    d          }||                    d          k    sJ |dk    sJ ||fD ]J}t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   Kt          t          d          t          d                    }t          t          d                    }|                    d          }||                    d          k    sJ |t          ddd           k    sJ |                    d          }||                    d          k    sJ |t          ddd           k    sJ ||fD ]J}t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   Kd S )Nabcdeedabcr@   aez'NOT-EXIST'r    z	NOT-EXISTaacdedd)FFFTFT   aabbbabcr   r   b   z'c'c)r   r/   r   get_locr0   r1   KeyErrorr*   assert_numpy_array_equalr(   r)   slice)	r4   cidx1idx1icidx2idx2rescidx3idx3s	            r9   test_get_loczTestGetLoc.test_get_loc   s    g4==IIIT']]##}}S!!T\\#%6%66666}}S!!T\\#%6%66666 	' 	'Ax}=== ' '		+&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' !hDMMJJJT(^^$$ mmC  
#Cc):):;;;
#BBBCC	
 	
 	
 mmC  dll3''''''axxxx 	' 	'Ax}=== ' '		+&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' !g4;;GGGT']]## mmC  dll3''''''eAq$''''''mmC  dll3''''''eAq$'''''' 	 	Axu555  		#              	 	s6   C''C+	.C+	9HH	"H	L??M	M	c                 x    t          t          d                    }|                    d          }|dk    sJ d S )Nr]   r^   r   )r   r/   ra   )r4   cidxr6   s      r9   test_get_loc_uniquezTestGetLoc.test_get_loc_unique   s7    U,,c""{{{{{{rQ   c                     t          t          d                    }|                    d          }t          ddd           }||k    sJ d S )Nabbcr^   r   r   )r   r/   ra   rd   r4   ro   r6   r7   s       r9    test_get_loc_monotonic_nonuniquez+TestGetLoc.test_get_loc_monotonic_nonunique   sN    V--c""At$$!!!!!!rQ   c                     t          t          d                    }|                    d          }t          j        g dt
                    }t          j        ||           d S )Nabcbr^   )FTFTdtype)r   r/   ra   r(   r)   boolr*   rc   rs   s       r9   #test_get_loc_nonmonotonic_nonuniquez.TestGetLoc.test_get_loc_nonmonotonic_nonunique   sZ    V--c""8666dCCC
#FH55555rQ   c                     t          ddt          j        g          }|                    t          j                  }|dk    sJ d S )NAr   r   )r   r(   r.   ra   )r4   cirj   s      r9   test_get_loc_nanzTestGetLoc.test_get_loc_nan   s<    sC011jj  axxxxxxrQ   N)rM   rN   rO   rm   rp   rt   rz   r~   rP   rQ   r9   rS   rS      s`        - - -^  
" " "6 6 6    rQ   rS   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestGetIndexerc                    t          t          d          t          d                    }t          j        t	          |          t          j                  }|                    |          }t          j        ||           t          j
        t          d          5  |                    |d           d d d            d S # 1 swxY w Y   d S )Ncabr@   rw   zInvalid fill methodr    invalidmethod)r   r/   r(   arangelenintpget_indexerr*   rc   r0   r1   r2   )r4   r5   r7   actuals       r9   test_get_indexer_basez$TestGetIndexer.test_get_indexer_base   s    tE{{tE{{CCC9SXXRW555%%
#Hf555]:-BCCC 	3 	3OOC	O222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   CC
Cc                    t          t          d          t          d          d          }t          t          j        |                    }d}dddt          |          fD ]}|t          j                            d                              d	t          |          |
                   }t          j
        t          |          5  |                    |           d d d            n# 1 swxY w Y   t          d          t          d          fD ]J}t          j
        t          |          5  |                    |           d d d            n# 1 swxY w Y   Kd S )Naabbcar   Fr   r   8Reindexing only valid with uniquely valued Index objectsr   r   r_   r   )sizer    aababca)r   r/   r   r(   r)   r   randomdefault_rngintegersr0   r1   r   r   )r4   r}   oidxr8   nfinders         r9    test_get_indexer_requires_uniquez/TestGetIndexer.test_get_indexer_requires_unique   s   d8nneeTTTRXb\\""HQ3r77# 	' 	'A")//22;;As2wwQ;OOPF0<<< ' 'v&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' H~~tI7 	' 	'F0<<< ' 'v&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	's$   C**C.	1C.	1EE	E	c                 $   t          t          d          t          d                    }t          t          d                    }|t          d          t          t          d                    fD ]}d}t          j        t
          |          5  |                    |           d d d            n# 1 swxY w Y   |                    |          \  }}t          j	        g dt          j
                  }t          j        ||           d S )	NaabcderV   r@   abfr   r    )r   r   r   r   rw   )r   r/   r   r0   r1   r   r   get_indexer_non_uniquer(   r)   r   r*   assert_almost_equal)r4   rf   ri   indexerr8   r1_r7   s           r9   test_get_indexer_non_uniquez*TestGetIndexer.test_get_indexer_non_unique   s4   X4==IIIU,,d5kk5e+=+=> 	1 	1GLC0<<< * *  )))* * * * * * * * * * * * * * * //88EBxRW===H"2x0000	1 	1s   B55B9	<B9	c                 ^   t          t          d          t          d                    }t          t          d                    }d}t          j        t          |          5  |                    |d           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  |                    |d
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    |d           d d d            d S # 1 swxY w Y   d S )Nr   rV   r@   r   z3method pad not yet implemented for CategoricalIndexr    padr   z8method backfill not yet implemented for CategoricalIndexbackfillz7method nearest not yet implemented for CategoricalIndexnearest)r   r/   r0   r1   NotImplementedErrorr   )r4   rf   ri   r8   s       r9   test_get_indexer_methodz&TestGetIndexer.test_get_indexer_method   s   X4==IIIU,,C].c::: 	1 	1T%000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1H].c::: 	6 	6T*555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 H].c::: 	5 	5T)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s6   %B		BB1CCC=D""D&)D&c                 Z   t          j        t          d          t          d          gt                    }t          d          t          d          g}t	          ||dd          }|                    |          }t          j        ddgd	          }t          j        ||           d S )
Nz1999-12-31 00:00:00z2000-12-31 00:00:00rw   Fcategory)r   r   rx   r   r   r   )r(   r)   r   objectr   r   r*   rc   )r4   arrcatsr}   r6   r7   s         r9   test_get_indexer_arrayz%TestGetIndexer.test_get_indexer_array  s    h,--y9N/O/OP
 
 
 /00)<Q2R2RSdtU*UUU$$8QF&111
#FH55555rQ   c                     t          ddgddg          }|                    t          ddgddg                    }t          j        ddgd          }t	          j        ||           d S NrW   r^   r@   r   r   rw   r   r   r(   r)   r*   rc   r4   r}   r6   r7   s       r9   +test_get_indexer_same_categories_same_orderz:TestGetIndexer.test_get_indexer_same_categories_same_order  st    sCjc3Z@@@ 0#sc
 S S STT8QF&111
#FH55555rQ   c                     t          ddgddg          }|                    t          ddgddg                    }t          j        ddgd          }t	          j        ||           d S r   r   r   s       r9   0test_get_indexer_same_categories_different_orderz?TestGetIndexer.test_get_indexer_same_categories_different_order   st    sCjc3Z@@@ 0#sc
 S S STT8QF&111
#FH55555rQ   c                    t          ddt          j        dg          }dddt          j        g}|                    |          }t          j        g dt          j                  }t          j        ||           g d}|                    |          }t          j        g dt          j                  }t          j        ||           d S )	Nr   r   r   r[   )r   r   r   r   rw   )r   r[   r   r   )r   r   r   r   )r   r(   r.   r   r)   r   r*   rc   )r4   r}   other1res1	expected1other2res2	expected2s           r9   )test_get_indexer_nans_in_index_and_targetz8TestGetIndexer.test_get_indexer_nans_in_index_and_target(  s    q!RVQ/00Q26"~~f%%H]]]"':::	
#D)444~~f%%H]]]"':::	
#D)44444rQ   N)rM   rN   rO   r   r   r   r   r   r   r   r   rP   rQ   r9   r   r      s        	3 	3 	3' ' ',1 1 15 5 5	6 	6 	66 6 66 6 6
5 
5 
5 
5 
5rQ   r   c                       e Zd Zd Zd ZdS )	TestWherec                    |}t          t          d          t          d          d          }dgt          |          z  }|}|                     ||                    }t	          j        ||           dgdgt          |          dz
  z  z   }t          t          j        g|dd                                          z   |j	                  }|                     ||                    }t	          j        ||           d S )Nr   r   Fr   Tr   r@   )
r   r/   r   wherer*   r+   r(   r.   tolistr   )r4   listlike_boxklassrg   condr7   r6   s          r9   
test_wherezTestWhere.test_where6  s    T(^^UUSSSvAt%%
fh///w$3q66A:..#RVHqu||~~$=!,WWWt%%
fh/////rQ   c                 |   t          g d          }t          j        g d          }|                    |d          }t	          g dt
                    }t          j        ||           d}t          j	        t          |          5  |j                            |d           d d d            d S # 1 swxY w Y   d S )N)rW   r^   r`   rZ   )TFTFr   )rW   r   r`   r   rw   z3Cannot setitem on a Categorical with a new categoryr    )r   r(   r)   r   r   r   r*   r+   r0   r1   rJ   _data_where)r4   r}   maskr6   r7   r8   s         r9   test_where_non_categoriesz#TestWhere.test_where_non_categoriesD  s    22233x22233$"")))888
fh///C]9C000 	% 	%HOOD!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   B11B58B5N)rM   rN   rO   r   r   rP   rQ   r9   r   r   5  s2        0 0 0% % % % %rQ   r   c                   >   e Zd Zd Zd Zej                            dddg          d             Zej                            d e	j
        dd	          dfd
 e	j
        dd          dfd ed	          df e	j        d	          dfge          d             Zd ZdS )TestContainsc                     t          t          d          t          d          d          }d|v sJ d|vsJ d|vsJ t          j        |vsJ d|vsJ d	|vsJ d S )
Nr   cabdefFr   rW   zrX   r   r   r   r/   r(   r.   r4   r}   s     r9   test_containszTestContains.test_containsS  s}    d8nnhQVWWWbyyyy"}}}}"}}}}vR {{{{{{{{{{rQ   c                     t          t          d          t          j        gz   t          d                    }t          j        |v sJ d S )Nr   r   r@   r   r   s     r9   test_contains_nanzTestContains.test_contains_nan_  s<    d8nnx7DNNSSSv||||||rQ   unwrapTFc                 F   t          j        dd                              dt           j                  }|                    d          }||d         z
  }t          |          }|}|r|j        }t          j        |v sJ d |v sJ t           j        |v sJ t          j	        d          |v sJ t          j
        d          |vsJ t          |          }|r|j        }t          j        |v sJ d |v sJ t           j        |v sJ t          j	        d          |vsJ t          j
        d          |v sJ t          |          }|r|j        }t          j        |v sJ d |v sJ t           j        |v sJ t          j	        d          |vsJ t          j
        d          |vsJ d S )Nz
2016-01-01d   )periodsr   Dr   r?   )rA   
date_rangeinsertr?   	to_periodr   r   r(   r.   
datetime64timedelta64)	r4   r   dtipitdir}   objobj2obj3s	            r9   test_contains_na_dtypez#TestContains.test_contains_na_dtypec  s   mL#666==aHH]]3CGmc"" 	(Cv}}}}s{{{{v}}}}}U##s****~e$$C////$$ 	:Dv~~~~t||||v~~~~}U##4////~e$$,,,,## 	:Dv~~~~t||||v~~~~}U##4////~e$$D000000rQ   zitem, expectedr   r   )      ?Tg      ?r   )rW   F)idsc                 v    t          t          j        t          d                              }||v }||u sJ d S )Nr   )r   r   from_breaksrange)r4   itemr7   r}   r6   s        r9   test_contains_intervalz#TestContains.test_contains_interval  sB     m7aAABB!!!!!!rQ   c                    t          g d          }d|vsJ t          j        t          d          5  dg|v  d d d            n# 1 swxY w Y   t          j        t          d          5  ddg|v  d d d            d S # 1 swxY w Y   d S )Nr   rW   zunhashable typer    r^   )r   r0   r1   rJ   )r4   r5   s     r9   test_contains_listzTestContains.test_contains_list  s!   yyy))#~~~~]9,=>>> 	 	ESLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9,=>>> 	 	#J#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA	A	+A??BBN)rM   rN   rO   r   r   r0   markparametrizer   rA   Intervalr   	Timedeltastrr   r   rP   rQ   r9   r   r   R  s
       
 
 
   [Xe}55"1 "1 65"1H [R[A%R[c""E*Yq\\5!R\!__e$	
    " " "
 
 
 
 
rQ   r   )numpyr(   r0   pandas.errorsr   pandasrA   r   r   r   r   pandas._testing_testingr*   r	   rS   r   r   r   rP   rQ   r9   <module>r      s        + + + + + +                     t+ t+ t+ t+ t+ t+ t+ t+nF F F F F F F FRb5 b5 b5 b5 b5 b5 b5 b5J% % % % % % % %:R R R R R R R R R RrQ   