o
    Eh{P                     @   sZ   d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ dd ZG dd dZdS )    N)	DataFrameIndex
RangeIndexSeries
date_rangeperiod_rangetimedelta_rangec                 C   sN   | t u rt tt||d}|S ttjdt|t|f||d}|S )Nindex   )r
   columns)r   nparangelenr   randomdefault_rngstandard_normal)klassr
   obj r   Alib/python3.10/site-packages/pandas/tests/indexing/test_floats.pygen_obj   s   r   c                   @   s~  e Zd Zdd Zejdeedeeddde	ddd	e
d
dd	eddd	gdd Zejdeedeeddde	ddd	e
d
dd	eddd	gdd Zdd Zejdeedejdedgdd Zejdeedejdedgdd Zdd Zejdeedede	ddd	e
d
dd	eddd	gejdeddeddeddgdd Zdd Zejded ded!ded!dgd"d# Zejdeedejdedgd$d% Zejdeddeddeddgejdeedejdedgd&d' Zejdeddeddeddgd(d) Zd*d+ Zd,d- Zd.d/ Z d0S )1TestFloatIndexersc                 C   sH   t |tr|j| }n|r|jdd|f }n|j| }t|| dS )zw
        comparator for results
        we need to take care if we are indexing on a
        Series or a frame
        N)
isinstancer   iloctmZassert_almost_equal)selfresultZoriginalindexergetitemexpectedr   r   r   check   s   

zTestFloatIndexers.checkr
   Zabcdecategorydtypez
2020-01-01   )Zperiodsz1 dayc                 C   s   t ||}tjtdd ||d  W d    n1 sw   Y  d|vs(J | }d||d< |tju rBd|jd v s@J d S |tju rRd|jd v sPJ d S d|jd vs[J d|jd vsdJ d S )N^3.0$match      @
   r   )	r   pytestraisesKeyErrorcopyr   setitemZaxesloc)r   r
   frame_or_series
indexer_slss2r   r   r   test_scalar_non_numeric,   s   


z)TestFloatIndexers.test_scalar_non_numericc                 C   s   t tt||d}d}tjt|d |d  W d    n1 s#w   Y  tjt	dd |d  W d    d S 1 s?w   Y  d S )Nr	   ;Series.__getitem__ treating keys as positions is deprecatedr'      r&   r)   )
r   r   r   r   r   assert_produces_warningFutureWarningr,   r-   r.   )r   r
   r4   msgr   r   r   'test_scalar_non_numeric_series_fallbackO   s   

"z9TestFloatIndexers.test_scalar_non_numeric_series_fallbackc                 C   s  t g dg dd}t g dg dd}tjtdd ||d  W d    n1 s,w   Y  tjtdd ||d  W d    n1 sIw   Y  ||d	 }d
}||ks\J tjtdd ||d  W d    n1 stw   Y  |tjurd}tjt|d |d }W d    n1 sw   Y  d
}||ksJ tjtdd ||d  W d    n1 sw   Y  ||d }d}||ksJ d S )N)   r   r8   )abcr	   )r>   r?         ?z^1.0$r'         ?z^1\.0$r?   r   r7   r=   rA   r8   )r   r,   r-   r.   r   r1   r9   r:   )r   r3   r5   Zs3r   r    r;   r   r   r   test_scalar_with_mixedc   s6   

z(TestFloatIndexers.test_scalar_with_mixedc                 C   s   |t ju}|}t||}||d }| ||d| t|tr&dd }d}	nt j}|r7tdtt|dd}	ntdtt|dd}	|	 }
d||
d< ||
d }|||	 ||
d }|||	 d S )Nr)   r8   c                 S   s   | |ksJ d S )Nr   )xyr   r   r   compare   s   z6TestFloatIndexers.test_scalar_integer.<locals>.compared   )r
   nameg      Y@)
r   r1   r   r!   r   r   assert_series_equalranger   r/   )r   r
   r2   r3   r   ir   r   rF   r    r5   r   r   r   test_scalar_integer   s$   



z%TestFloatIndexers.test_scalar_integerc                 C   s   t ||}d|v sJ d S )Nr)   )r   )r   r
   r2   r   r   r   r   "test_scalar_integer_contains_float   s   
z4TestFloatIndexers.test_scalar_integer_contains_floatc           
   	   C   s   t td}t||}|d }tjtjfD ]D}|tju}||| }| ||d| | }||| }| ||d| t	j
tdd ||d  W d    n1 sUw   Y  qd|v saJ |jd }	| }|	|jd< |jd }| ||dd d S )N      @r8   z^3\.5$r'         @r)   F)r   r   r   r   r   r1   r0   r!   r/   r,   r-   r.   r   )
r   r2   r
   r4   r   Zidxrr   r   r5   r    r   r   r   test_scalar_float   s(   




z#TestFloatIndexers.test_scalar_floatidxr)      r8         @c                 C   s   t ||}|tju rdt|j d}n	dt|j d}tjt|d |||  W d    n1 s5w   Y  |tju rAd}tjt|d d|||< W d    d S 1 sZw   Y  d S )Nz!cannot do positional indexing on / with these indexers \[(3|4)\.0\] of type floatcannot do slice indexing on z8 with these indexers \[(3|4)(\.0)?\] of type (float|int)r'   zBslice indices must be integers or None or have an __index__ methodr   )r   r   r   type__name__r,   r-   	TypeError)r   r
   rQ   r2   Zindexer_slir4   r;   r   r   r   test_slice_non_numeric   s$   


"z(TestFloatIndexers.test_slice_non_numericc           
   
   C   s  t tjdtjddftddft tjdtjdd dffD ]\}}ttd|d}tddtd	d
tdd
fD ]}|j| }|rHtdd}ntd	d}| 	|||d q9tddtddfD ]}|j| }|rotdd}ntdd}| 	|||d q`dt
|j d}tjt|d |tdd  W d    n1 sw   Y  tddtd	dftddtddftddtd	dffD ]?\}}|j| }|rtdd}	n|}	| 	|||	d dt
|j d}tjt|d ||  W d    n1 sw   Y  qqd S )Nr%   r#   Fr*   Tr	   r)   rR   r8   rS   r   i   g      g      @rU   z, with these indexers \[-6\.0\] of type floatr'         @r   rO   z/ with these indexers \[(2|3)\.5\] of type float)r   r   r   int64r   r   rJ   slicer1   r!   rV   rW   r,   r-   rX   )
r   r
   Zoobr4   rQ   r   r   r;   Zres1resr   r   r   test_slice_integer  sV   
 





z$TestFloatIndexers.test_slice_integerr          @c                 C   s   t tddtddd}|dd }|jdd }t|| t}d|j d}tjt	|d ||  W d   n1 s>w   Y  tjt	|d |j|  W d   dS 1 s[w   Y  dS )	z]make sure that we are raising on positional indexing
        w.r.t. an integer index
        r   rZ   r	   rR   z)cannot do (slice|positional) indexing on z/ with these indexers \[(2|4)\.0\] of type floatr'   N)
r   rJ   r   r   rI   r   rW   r,   r-   rX   )r   rQ   r4   r   r    r   r;   r   r   r    test_integer_positional_indexingL  s   
"z2TestFloatIndexers.test_integer_positional_indexingc              	   C   s  t tjdd|d}tddtddtddfD ]8}|j| }tdd}| |||d d	t|j	 d
}t
jt|d ||  W d    n1 sNw   Y  qtddtddfD ]}|j| }| ||tddd q^d	t|j	 d}t
jt|d |tdd  W d    n1 sw   Y  tddtddftddtddftddtddffD ]5\}}|j| }| |||d d	t|j	 d}t
jt|d ||  W d    n1 sw   Y  qd S )Nr   r%   r   r	           r=   r   rB   FrU   z/ with these indexers \[(0|1)\.0\] of type floatr'   ir*   g      $      $@Tz- with these indexers \[-10\.0\] of type floatg      ?rA   z+ with these indexers \[0\.5\] of type float)r   r   r   r   r   r]   r1   r!   rV   rW   r,   r-   rX   )r   r
   r4   rQ   r   r   r;   r^   r   r   r    test_slice_integer_frame_getitemb  sL    





z2TestFloatIndexers.test_slice_integer_frame_getitemc                 C   s   t tjdd|d}| }d|j|< |j| j }|dk	 s&J dt
|j d}tjt|d d||< W d    n1 sEw   Y  tjt|d ||  W d    d S 1 saw   Y  d S )Nr   rb   r	   r   rU   rT   r'   )r   r   r   r   r   r/   r1   valuesravelallrV   rW   r,   r-   rX   )r   rQ   r
   r4   Zscr   r;   r   r   r   2test_float_slice_getitem_with_integer_index_raises  s   


"zDTestFloatIndexers.test_float_slice_getitem_with_integer_index_raisesc           	      C   s   t tdd }t||}|jdd }||| }t|t|s$J t|| |	 }d|||< ||| j
 }|dk sEJ d S )NrN   g?r8   rR   r   )r   r   r   r   r   r   rV   r   Zassert_equalr/   rf   rg   rh   )	r   rQ   r2   r3   r
   r4   r    r   r5   r   r   r   test_slice_float  s   
z"TestFloatIndexers.test_slice_floatc                 C   sT   t g d}ttd|d}|d dksJ |jd dksJ |jd dks(J d S )N)rA   r   r8   g      @r%   r%   r	   r8   r   )r   r   rJ   r1   r   )r   r
   r4   r   r   r   test_floating_index_doc_example  s
   z1TestFloatIndexers.test_floating_index_doc_examplec                 C   sV  t tdtdd tjd}||dd }t ddgd}t|| ||d }|d	ks1J ||d }|d	ks=J tjtd
d ||d  W d    n1 sUw   Y  t d	dgt	ddgtj
dd}ddgtddgfD ]}t||| | qtt d	dgt	ddgddd}ddgtddgfD ]}t||| | q|tju rtnd }d}tj||d ||d	d }W d    n1 sw   Y  ||dd }	||dd }
||dd }t||	 t||
 t|| t dd	gddgd}tj||d ||d	d }W d    n	1 s w   Y  t|| ||g d }|jg d }	t||	 tjtdd ||g d  W d    n	1 s[w   Y  tjtdd ||g d  W d    n	1 s{w   Y  ||ddg }t|t dd	gddgd ||dg }t|t dgdgd d S )Nr%   r[   )r
   r$   rB   r)   r=   r	   rN   r   z^4$r'   rR   r   rc   r#   float64z3The behavior of obj\[i:j\] with a float-dtype indexr`   g @)rc   r%   r*   )r   r   rR   znot in index)g?r%   r*   )r   r=   r   )r   r   r   r\   r   rI   r,   r-   r.   r   rl   Zarrayr0   r:   r9   r   )r   r3   r4   r   r    Z	fancy_idxwarnr;   Zresult1Zresult2Zresult3Zresult4r   r   r   test_floating_misc  s\    z$TestFloatIndexers.test_floating_miscc                 C   s  |}i ddddddddd	d
ddddddddddddddddddddddddi ddddddd dd!dd"d#d$dd%d&d'dd(d)d*dd+d,d-dd.dd/dd0d1d2di d3d4d5dd6d7d8dd9d:d;dd<dd=dd>d?d@ddAdBdCddDdEdFddGdHdIddJdKi dLddMdNdOdPdQdRdSddTdUdVddWdXdYddZdd[dd\d]d^d_d`dadbddcdddedi dfdgdhdPdidjdkddlddmddndodpddqdrdsddtdudvddwdxdydPdzdd{dd|d}i d~dddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddddddddddddddddƜ}t ||dǍ}| }|jj|ksJ t| d S )N   g     "@r=   g     S@r   g     8@r8   rc   rR   g     w@r%   rZ   g     p@      	   r*   g     @      g      8@      g     @      g     @Y@      g    @            g     "@      g     {@      g    @      g     Ȇ@             g     \@!   "   g     @#   $   g     v@%   &   g     .@'   (   )   *   g     @+   ,   g     @-   .   g     @/   0   g     @1   2   g     @3   4   g     @5   g     Q@6   g     0@7   8   g     @t@9   :   g     @;   <   =   >   g     *@?   rd   @   g      E@A   B   g     @@C   D   g      V@E   F   g     @G   H   I   J   g    @K   L   g     u@M   N   g    @O   P   g     w@Q   R   S   T   g     r@U   V   g     x@W   g      @X   g     v@Y   Z   g    t@[   g      "@\   ]   ^   g     @_   `   g     ȏ@a   b   g     @c   rG   g     &@e   f   g     @g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~   g     @   g      6@   g     p@   i  g     h@i  i	  i  i  i
  g     @g     @g     8@g     `d@g     +@g     0@g     @)i  i  i  i  i  i  i                    r#   )r   Zvalue_countsr
   r$   str)r   Zfloat_numpy_dtyper$   Zserr4   r   r   r   r   test_floatindex_slicing_bug  sr  	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
  z-TestFloatIndexers.test_floatindex_slicing_bugN)!rW   
__module____qualname__r!   r,   ZmarkZparametrizer   listr   r   r   r6   r<   rC   r   r   r\   r   rL   rM   rP   objectr]   rY   r_   ra   re   ri   rj   rk   rn   r   r   r   r   r   r      sv    












$
$
#


$	$G

$3$
Fr   )Znumpyr   r,   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   r   <module>   s    $	