
    Owg-,                        d Z ddlZddlZddlmZ ddlmZm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  G d d      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Zej6                  j9                  d eg d       eg d       eg d      g      d        Zej6                  j9                  dej<                  dej<                  gej<                  g ej>                  ddgej@                        fej<                  dej<                  gej<                  dg ej>                  g dej@                        f ej>                  ej<                  dej<                  ge!      ej<                  g ej>                  ddgej@                        f edeeg      eg ej>                  ddgej@                        fdddej<                  gej<                  g ej>                  d gej@                        f ej>                  dej<                   e"d!      dge!       eej<                  ge!       ej>                  ddgej@                        fg      d"        Z#d# Z$y)$aS  
test_indexing tests the following Index methods:
    __getitem__
    get_loc
    get_value
    __contains__
    take
    where
    get_indexer
    get_indexer_for
    slice_locs
    asof_locs

The corresponding tests.indexes.[index_type].test_indexing files
contain tests for the corresponding methods specific to those Index subclasses.
    N)InvalidIndexError)is_float_dtype	is_scalar)NADatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodIndexTimedeltaIndexc                   $    e Zd Zd Zd Zd Zd Zy)TestTakec                    ddg}d}t        j                  t        |      5  |j                  |d       d d d        d}t        j                  t        |      5  |j                  ||       d d d        d}t        j                  t        |      5  |j                  |d	
       d d d        y # 1 sw Y   |xY w# 1 sw Y   OxY w# 1 sw Y   y xY w)N      z1take\(\) got an unexpected keyword argument 'foo'match)fooz$the 'out' parameter is not supported)outz%the 'mode' parameter is not supportedclip)mode)pytestraises	TypeErrortake
ValueError)selfindexindicesmsgs       Y/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexes/test_indexing.pytest_take_invalid_kwargsz!TestTake.test_take_invalid_kwargs)   s    a&B]]9C0 	'JJwAJ&	' 5]]:S1 	-JJwGJ,	- 6]]:S1 	-JJwVJ,	- 	-	' 	'	- 	-	- 	-s#   B1B=C	1B:=C	Cc                 X   g d}t        |      dk  rt        j                  d       |j                  |      }||   }|j	                  |      sJ t        |t        t        t        f      s3d}t        j                  t        |      5  |j                   d d d        y y # 1 sw Y   y xY w)N)      r   r      z1Test doesn't make sense since not enough elementsz*'(.*Index)' object has no attribute 'freq'r   )lenr   skipr   equals
isinstancer   r   r   r   AttributeErrorfreq)r   r   indexerresultexpectedr!   s         r"   	test_takezTestTake.test_take8   s    u:>KKKLG$>}}X&&&%-n!MN?C~S9 

  O s   	B  B)c                     t        g d      }d}d}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)Nr   r   r   r&   r   z!Expected indices to be array-liker   )r   r   r   r   r   )r   integer_indexscalar_indexr!   s       r"   test_take_indexer_typezTestTake.test_take_indexer_typeG   sG    l+1]]9C0 	-|,	- 	- 	-s   AAc                     t        |      dk(  rt        j                  d       |j                  g d      }|j                  ddt        |      dz
  g      }t	        j
                  ||       y )Nr   'Test doesn't make sense for empty index)r   r   r   )r(   r   r)   r   tmassert_index_equal)r   r   r/   r0   s       r"   test_take_minus1_without_fillz&TestTake.test_take_minus1_without_fillO   sU    u:?KKABJ'::q!SZ!^45
fh/    N)__name__
__module____qualname__r#   r1   r6   r<    r=   r"   r   r   (   s    --	0r=   r   c                      e Zd Zej                  j                  d eg d      df eg d      df edddej                  dg      df edddej                  dg      df edddej                  g      ej                  f edddej                  g      ej                  fg      d	        Z
ej                  j                  d eg d      df eg d      df edddej                  g      df edddej                  g      df edddej                  g      ej                  f edddej                  g      ej                  f eg dej                  
      ej                  f eg dej                  
      ej                  f eg dej                  
      ej                  f eg dej                  
      ej                  fg
      d        Zej                  j                  d eg d      df eg d      dfg      d        Zej                  j                  d eg d      df eg d      dfg      d        Zd Zd Zy)TestContainsz	index,val)r   r   r   r   )r   r   2rD   r   r   r%   c                     ||v sJ y NrA   r   r   vals      r"   test_index_containsz TestContains.test_index_contains\   s     e||r=   dtypec                     ||vsJ y rF   rA   rG   s      r"   test_index_not_containsz$TestContains.test_index_not_containsj   s    $ %r=   c                     ||v sJ y rF   rA   rG   s      r"   test_mixed_index_containsz&TestContains.test_mixed_index_contains~   s    
 e||r=   1c                     ||vsJ y rF   rA   rG   s      r"   test_mixed_index_not_containsz*TestContains.test_mixed_index_not_contains   s    
 %r=   c                     |}t        |      sg dng d}t        ||      }t        |j                        sd|vsJ d|v sJ d|v sJ y d|v sJ d|vsJ d|vsJ y )Nr3   )皙?皙?g@gffffff
@rJ   rU         ?r   )r   r   rK   )r   any_real_numpy_dtyperK   datar   s        r"   test_contains_with_float_indexz+TestContains.test_contains_with_float_index   sz    $#1%#8|>Rd%(ekk*e###%<<::%<<e###E>!>r=   c                 4   t        |t              ry d}t        j                  t        |      5  g |v  d d d        dj                  g d      }t        j                  t        |      5  i |j                  v  d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nzunhashable type: 'list'r   |)zunhashable type: 'dict'zmust be real number, not dictzan integer is requiredz\{\}z6pandas\._libs\.interval\.IntervalTree' is not iterable)r+   r
   r   r   r   join_engine)r   r   r!   s      r"   &test_contains_requires_hashable_raisesz3TestContains.test_contains_requires_hashable_raises   s    eZ(']]9C0 	%K	 hh
 ]]9C0 	 %--	  	 	 		  	 s   B*BBBN)r>   r?   r@   r   markparametrizer   npinfnanrI   int64uint64rM   rO   rR   rY   r^   rA   r=   r"   rC   rC   [   sX   [[9q!;%Aq!RVVQ'(!,Aq!RVVQ'(!,Aq!RVV$%rvv.Aq!RVV$%rvv.	


 [[9s#;#Aq!RVV$%q)Aq!RVV$%q)Aq!RVV$%rvv.Aq!RVV$%rvv. 9BHH-rvv69BHH-rvv69BII.79BII.7	
" #"  [[u[)1-k0BC/HI [[u[)3/%2Da1HI  " r=   rC   c                   $    e Zd Zd Zd Zd Zd Zy)
TestGetLocc                     t        j                  t        d      5  |j                  ddg       d d d        y # 1 sw Y   y xY w)Nz[0, 1]r   r   r   )r   r   r   get_loc)r   r   s     r"   test_get_loc_non_hashablez$TestGetLoc.test_get_loc_non_hashable   s6    ]],H= 	"MM1a&!	" 	" 	"s	   9Ac                 B   ddl m}  G d d|      }t        |j                        rJ t        }d}t        |t        t        t        t        f      rt        }d}t        j                  ||      5  |j                  |j                         d d d        y # 1 sw Y   y xY w)Nr   )Enumc                       e Zd ZdZy)6TestGetLoc.test_get_loc_non_scalar_hashable.<locals>.Ex1N)r>   r?   r@   X1rA   r=   r"   Ern      s    Br=   rq   z<E.X1: 'x1'>zE.X1r   )enumrl   r   rp   KeyErrorr+   r   r   r   r	   r   r   r   ri   )r   r   rl   rq   excr!   s         r"    test_get_loc_non_scalar_hashablez+TestGetLoc.test_get_loc_non_scalar_hashable   s    	 	 QTT?""	
 $CC]]3c* 	 MM!$$	  	  	 s   0BBc                     t         }t        |t        t        t        t
        t        f      rt        }t        j                  |d      5  |j                  d t        d      D               d d d        y # 1 sw Y   y xY w)Nzgenerator objectr   c              3       K   | ]  }|  y wrF   rA   ).0xs     r"   	<genexpr>z4TestGetLoc.test_get_loc_generator.<locals>.<genexpr>   s     .!.s   r'   )rs   r+   r   r   r   r	   r
   r   r   r   ri   range)r   r   rt   s      r"   test_get_loc_generatorz!TestGetLoc.test_get_loc_generator   sg    	
 $C]]3&89 	/MM.U1X..	/ 	/ 	/s   	"A44A=c                     t        ddt        t        gd      }|j                  t              }t        j                  g d      }t        j                  ||       y )Nr   r   Int64rJ   )FFTT)r   r   ri   ra   arrayr:   assert_numpy_array_equalr   idxr/   r0   s       r"   !test_get_loc_masked_duplicated_naz,TestGetLoc.test_get_loc_masked_duplicated_na   sB    Q2rN'2R8867
##FH5r=   N)r>   r?   r@   rj   ru   r|   r   rA   r=   r"   rg   rg      s    " 4/$6r=   rg   c                       e Zd Zd Zd Zd Zy)TestGetIndexerc                    |j                   rWt        j                  |j                  t        j                        }|j                  |      }t        j                  ||       n7d}t        j                  t        |      5  |j                  |       d d d        t        j                  t        d      5  |j                  |d       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)NrJ   8Reindexing only valid with uniquely valued Index objectsr   zInvalid fill methodinvalid)method)_index_as_uniquera   arangesizeintpget_indexerr:   r   r   r   r   r   )r   r   r0   actualr!   s        r"   test_get_indexer_basez$TestGetIndexer.test_get_indexer_base   s    !!yy277;H&&u-F''&9LC0< )!!%() ]]:-BC 	7eI6	7 	7) )	7 	7s   C6CCC(c                    |j                   rO|j                  |dd       }t        |t        j                        sJ |j
                  t        j                  k(  s<J d}t        j                  t        |      5  |j                  |dd        d d d        |j                  |dd       \  }}t        |t        j                        sJ |j
                  t        j                  k(  sJ y # 1 sw Y   \xY w)Nr   r   r   r   )r   r   r+   ra   ndarrayrK   r   r   r   r   get_indexer_non_unique)r   r   r.   r!   _s        r"   test_get_indexer_consistencyz+TestGetIndexer.test_get_indexer_consistency   s     !!''a
3Ggrzz222==BGG+++LC0< .!!%!*-. 11%!*=
'2::...}}'''. .s   9C))C2c                     t        ddt        t        gd      }|j                  t        dt        gd            }t        j                  g d|j
                        }t        j                  ||       y )Nr   r   r~   rJ   )r   r   r&   )r   r   get_indexer_forra   r   rK   r:   r   r   s       r"   %test_get_indexer_masked_duplicated_naz4TestGetIndexer.test_get_indexer_masked_duplicated_na  sU    Q2rN'2$$UAr7'%BC88IV\\:
##FH5r=   N)r>   r?   r@   r   r   r   rA   r=   r"   r   r      s    7( 6r=   r   c                       e Zd Zd Zy)TestConvertSliceIndexerc                 P   t        d d d      }t        |t              r9d}t        j                  t
        |      5  |j                  |d       d d d        y d}t        j                  t        |      5  |j                  |d       d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   zClabel-based slicing with step!=1 is not supported for IntervalIndexr   locz7'>=' not supported between instances of 'str' and 'int')slicer+   r	   r   r   r   _convert_slice_indexerr   )r   r   keyr!   s       r"   test_convert_almost_null_slicez6TestConvertSliceIndexer.test_convert_almost_null_slice  s     D$&e]+WCz5 9,,S%89 9 LCy4 9,,S%89 9	9 99 9s   B4BBB%N)r>   r?   r@   r   rA   r=   r"   r   r     s    9r=   r   c                       e Zd Zd Zy)TestPutmaskc                    t        |      st        j                  d       |d   }d}t        j                  t        |      5  |j                  t        j                  t        |      dz   t        j                        |       d d d        t        j                  t        |      5  |j                  t        j                  t        |      dz
  t        j                        |       d d d        t        j                  t        |      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   y xY w)Nr8   r   z,putmask: mask and data must be the same sizer   r   r   )	r(   r   r)   r   r   putmaskra   onesbool_)r   r   fillr!   s       r"   test_putmask_with_wrong_maskz(TestPutmask.test_putmask_with_wrong_mask   s    5zKKABQx<]]:S1 	CMM"''#e*q."((;TB	C ]]:S1 	CMM"''#e*q."((;TB	C ]]:S1 	'MM%&	' 	'	C 	C	C 	C	' 	's&   AD''AD3D?'D03D<?EN)r>   r?   r@   r   rA   r=   r"   r   r     s    'r=   r   r   )r   r   r&   )rT   g?g333333?)abcc                 r    d}t        j                  t        |      5  | d    d d d        y # 1 sw Y   y xY w)Nz,Indexing with a float is no longer supportedr   rV   )r   r   
IndexError)r   r!   s     r"   test_getitem_deprecated_floatr   2  s3     9C	z	- C  s   -6zidx,target,expectedvar1r   rJ   )r   r   r   z
2020-08-05r   r   r   r&   NaNc                 h    t        |       }|j                  |      }t        j                  ||       y rF   )r   r   r:   r   )r   targetr0   axisr   s        r"   )test_get_indexer_non_unique_multiple_nansr   =  s-    : :D!!&)F1r=   c                 N   t        ddg      }t        d| gd      }|j                  |      \  }}t        j                  |t	        j
                  ddgt        j                               t        j                  |t	        j
                  dgt        j                               y )NrV   g       @r   objectrJ   r   r9   )r   r   r:   r   ra   r   r   )nulls_fixturer   r   
result_idxresult_missings        r"   7test_get_indexer_non_unique_nans_in_object_dtype_targetr   _  sz    
c

CA}%X6F!$!;!;F!CJ
BHHaWBGG,LM!BGG0LMr=   )%__doc__numpyra   r   pandas.errorsr   pandas.core.dtypes.commonr   r   pandasr   r   r   r	   r
   r   r   r   pandas._testing_testingr:   r   rC   rg   r   r   r   r_   r`   r   rc   r   r   r   floatr   r   rA   r=   r"   <module>r      sD      +
	 	 	 00 00fR  R j66 66r#6 #6L9 9 ' '& 	E)eO4eO6LM 
&&&"&&	!BFF8XRXXq!fBGG-LMVVVRVV$VVVBHHYbgg.	
 BHHbfffbff-V<VVHBHHaV277+	
 <c23EBHHaV277+	

 sC	 266(HBHHaS,HIBHHc2665<5VD266(&)BHHaV277+	
%62762Nr=   