a
    Pf{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   sL   | t u r t tt||d}n(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   Z/var/www/ai-form-bot/venv/lib/python3.9/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result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:0    Y  d|vsPJ | }d||d< |tju rd|jd v sJ nB|tju rd|jd v sJ n$d|jd vsJ d|jd vsJ 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 sF0    Y  tjt	dd |d  W d    n1 s|0    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
   r5   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 sX0    Y  tjtdd ||d  W d    n1 s0    Y  ||d	 }d
}||ksJ tjtdd ||d  W d    n1 s0    Y  |tjurLd}tjt|d |d }W d    n1 s00    Y  d
}||ksLJ tjtdd ||d  W d    n1 s~0    Y  ||d }d}||ksJ d S )N)   r   r9   )abcr	   )r?   r@         ?z^1.0$r(         ?z^1\.0$r@   r   r8   r>   rB   r9   )r   r-   r.   r/   r   r2   r:   r;   )r   r4   r6   Zs3r   r!   r<   r   r   r   test_scalar_with_mixedc   s,    ***(,z(TestFloatIndexers.test_scalar_with_mixedc                 C   s   |t ju}|}t||}||d }| ||d| t|trLdd }d}	n8t j}|rntdtt|dd}	ntdtt|dd}	|	 }
d||
d< ||
d }|||	 ||
d }|||	 d S )Nr*   r9   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   r2   r   r"   r   r   assert_series_equalranger   r0   )r   r
   r3   r4   r    ir   r   rG   r!   r6   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
   r3   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 ]}|tju}||| }| ||d| | }||| }| ||d| t	j
tdd ||d  W d    q,1 s0    Y  q,d|v sJ |jd }	| }|	|jd< |jd }| ||dd d S )N      @r9   z^3\.5$r(         @r*   F)r   r   r   r   r   r2   r1   r"   r0   r-   r.   r/   r   )
r   r3   r
   r5   r   Zidxrr    r   r6   r!   r   r   r   test_scalar_float   s$    

,


z#TestFloatIndexers.test_scalar_floatidxr*      r9         @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 sj0    Y  |tju rd}tjt|d d|||< W d    n1 s0    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
   rR   r3   Zindexer_slir5   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 ]8}|j| }|rtdd}n
td	d}| 	|||d qttddtddfD ]8}|j| }|rtdd}n
tdd}| 	|||d qdt
|j d}tjt|d |tdd  W d    n1 sB0    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 s0    Y  qq>d S )Nr&   r$   Fr+   Tr	   r*   rS   r9   rT   r   i   g      g      @rV   z, with these indexers \[-6\.0\] of type floatr(         @r   rP   z/ with these indexers \[(2|3)\.5\] of type float)r   r   r   int64r   r   rK   slicer2   r"   rW   rX   r-   r.   rY   )
r   r
   Zoobr5   rR   r   r   r<   Zres1resr   r   r   test_slice_integer  sL    
 



.
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|0    Y  tjt	|d |j|  W d   n1 s0    Y  dS )	z]make sure that we are raising on positional indexing
        w.r.t. an integer index
        r   r[   r	   rS   z)cannot do (slice|positional) indexing on z/ with these indexers \[(2|4)\.0\] of type floatr(   N)
r   rK   r   r   rJ   r   rX   r-   r.   rY   )r   rR   r5   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 ]p}|j| }tdd}| |||d d	t|j	 d
}t
jt|d ||  W d    q61 s0    Y  q6tddtddfD ]$}|j| }| ||tddd qd	t|j	 d}t
jt|d |tdd  W d    n1 s(0    Y  tddtddftddtddftddtddffD ]n\}}|j| }| |||d d	t|j	 d}t
jt|d ||  W d    n1 s0    Y  qld S )Nr   r&   r   r	           r>   r   rC   FrV   z/ with these indexers \[(0|1)\.0\] of type floatr(   ir+   g      $      $@Tz- with these indexers \[-10\.0\] of type floatg      ?rB   z+ with these indexers \[0\.5\] of type float)r   r   r   r   r   r^   r2   r"   rW   rX   r-   r.   rY   )r   r
   r5   rR   r   r   r<   r_   r   r   r    test_slice_integer_frame_getitemb  s@     

(
.
z2TestFloatIndexers.test_slice_integer_frame_getitemc                 C   s   t tjdd|d}| }d|j|< |j| j }|dk	 sLJ dt
|j d}tjt|d d||< W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )Nr   rc   r	   r   rV   rU   r(   )r   r   r   r   r   r0   r2   valuesravelallrW   rX   r-   r.   rY   )r   rR   r
   r5   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|sHJ t|| |	 }d|||< ||| j
 }|dk sJ d S )NrO   g?r9   rS   r   )r   r   r   r   r   r   rW   r   Zassert_equalr0   rg   rh   ri   )	r   rR   r3   r4   r
   r5   r!   r   r6   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sPJ d S )N)rB   r   r9   g      @r&   r&   r	   r9   r   )r   r   rK   r2   r   )r   r
   r5   r   r   r   test_floating_index_doc_example  s
    z1TestFloatIndexers.test_floating_index_doc_examplec                 C   s\  t tdtdd tjd}||dd }t ddgd}t|| ||d }|d	ksbJ ||d }|d	kszJ tjtd
d ||d  W d    n1 s0    Y  t d	dgt	ddgtj
dd}ddgtddgfD ]}t||| | qt d	dgt	ddgddd}ddgtddgfD ]}t||| | q4|tju r`tnd }d}tj||d  ||d	d }W d    n1 s0    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 sF0    Y  t|| ||g d }|jg d }	t||	 tjtdd  ||g d  W d    n1 s0    Y  tjtdd  ||g d  W d    n1 s0    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%   rC   r*   r>   r	   rO   r   z^4$r(   rS   r   rd   r$   float64z3The behavior of obj\[i:j\] with a float-dtype indexra   g @)rd   r&   r+   )r   r   rS   znot in index)g?r&   r+   )r   r>   r   )r   r   r   r]   r   rJ   r-   r.   r/   r   rn   arrayr1   r;   r:   r   )r   r4   r5   r   r!   Z	fancy_idxwarnr<   Zresult1Zresult2Zresult3Zresult4r   r   r   test_floating_misc  sR     *0000z$TestFloatIndexers.test_floating_miscc                 C   sf  |}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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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d0dd1dd2dddddddddddddddddddddddd3d4d5dd6ddddd7dd8d9dddd:d;dd<dd=dd>}t ||d?}| }|jj|ksZJ t| d S )@Ng     "@g     S@g     8@rd   g     w@g     p@g     @g      8@g     @g     @Y@g    @g     "@g     {@g    @g     Ȇ@g     \@g     @g     v@g     .@g     @g     @g     @g     @g     @g     @g     Q@g     0@g     @t@g     @g     *@re   g      E@g     @@g      V@g     @g    @g     u@g    @g     w@g     r@g     x@g      @g     v@g    t@g      "@g     @g     ȏ@g     @g     &@g     @g     @g      6@g     p@g     h@g     @g     @g     8@g     `d@g     +@g     0@g     @)   r>   r   r9   rS   r&   r[         	   r+                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   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   rH   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~            i  i  i	  i  i  i
  i  i  i  i  i  i  i                    r$   )r   Zvalue_countsr
   r%   str)r   Zfloat_numpy_dtyper%   Zserr5   r   r   r   r   test_floatindex_slicing_bug  s:     z-TestFloatIndexers.test_floatindex_slicing_bugN)!rX   
__module____qualname__r"   r-   markZparametrizer   listr   r   r   r7   r=   rD   r   r   r]   r   rM   rN   rQ   objectr^   rZ   r`   rb   rf   rk   rl   rm   rq   r   r   r   r   r   r      st   





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


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