U
    >vflM                     @   sN   d dl Zd dlZd dl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Seriesc                 C   sD   | t kr t tt||d}n ttjt|t|||d}|S )Nindex)r   columns)r   nparangelenr   randomrandn)klassr   obj r   E/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/indexing/test_floats.pygen_obj   s      r   c                	   @   s  e Zd Zdd Zejdejej	ej
ejejgdd Zejdejej	ej
ejejgdd Zdd	 Zejdejejgd
d Zejdejejgdd Zdd Zejdejej
ejej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jejgdd Zejdeddeddeddgejdejej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d)S )*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.check
index_funcc              	   C   s   |d}t ||}tjtdd ||d  W 5 Q R X d|ksDt| }d||d< |tjkrvd|jd kstnB|tj	krd|jd kstn$d|jd kstd|jd kstd S )N   ^3.0$match      @
   r   )
r   pytestraisesKeyErrorAssertionErrorcopyr   setitemZaxesloc)r   r   frame_or_series
indexer_sliss2r   r   r   test_scalar_non_numeric(   s    


z)TestFloatIndexers.test_scalar_non_numericc              	   C   sL   |d}t tt||d}|d  tjtdd |d  W 5 Q R X d S )Nr   r      r    r!   r#   )r   r	   r
   r   r&   r'   r(   )r   r   r/   r0   r   r   r   'test_scalar_non_numeric_series_fallbackL   s
    z9TestFloatIndexers.test_scalar_non_numeric_series_fallbackc              	   C   s(  t dddgdddgd}t dddgdddgd}tjtd	d
 ||d  W 5 Q R X tjtdd
 ||d  W 5 Q R X ||d }d}||ksttjtd	d
 ||d  W 5 Q R X |tjk	r|d }d}||ksttjtdd
 ||d  W 5 Q R X ||d }d}||ks$td S )N      r3   abcr         ?z^1.0$r!         ?z^1\.0$)r   r&   r'   r(   r)   r   r,   )r   r.   r1   Zs3r   r   r   r   r   test_scalar_with_mixed^   s(    
z(TestFloatIndexers.test_scalar_with_mixedc                 C   s   |t jk	}|d}t||}||d }| ||d| t|trPdd }d}	n8t j}|rrtdtt|dd}	ntdtt|dd}	|	 }
d||
d< ||
d }|||	 ||
d }|||	 d S )	Nr   r#   r3   c                 S   s   | |kst d S )N)r)   )xyr   r   r   compare   s    z6TestFloatIndexers.test_scalar_integer.<locals>.compared   )r   nameg      Y@)
r   r,   r   r   r   r   assert_series_equalranger   r*   )r   r   r-   r.   r   r/   r   r   r?   r   r1   r   r   r   test_scalar_integer   s$    



z%TestFloatIndexers.test_scalar_integerc                 C   s"   |d}t ||}d|kstd S )Nr   r#   )r   r)   )r   r   r-   r   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}|tjk	}||| }| ||d| | }||| }| ||d| t	j
tdd ||d  W 5 Q R X q,d|kst|jd }	| }|	|jd< |jd }| ||dd d S )N      @r3   z^3\.5$r!         @r#   F)r   r	   r
   r   r   r,   r+   r   r*   r&   r'   r(   r)   r   )
r   r-   r   r0   r   Zidxrr   r   r1   r   r   r   r   test_scalar_float   s$    




z#TestFloatIndexers.test_scalar_floatidxr#      r3         @c              	   C   s   |d}t ||}|tjkr0dt|j d}ndt|j d}tjt|d |||  W 5 Q R X |tjkrvd}tjt|d d|||< W 5 Q R X d S )	Nr   z!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   rI   r-   Zindexer_slir   r0   msgr   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 5 Q R X 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| }|rtdd}	n|}	| 	|||	d dt
|j d}tjt|d ||  W 5 Q R X qpq>d S )Nr   dtypeFr$   Tr   r#   rJ   r3   rK   r   i   g      g      @rM   z, with these indexers \[-6\.0\] of type floatr!         @r6   rG   z/ with these indexers \[(2|3)\.5\] of type float)r   r	   r
   int64r   r   rC   slicer,   r   rN   rO   r&   r'   rP   )
r   r   Zoobr0   rI   r   r   rQ   Zres1resr   r   r   test_slice_integer   sD    
 




z$TestFloatIndexers.test_slice_integerr6          @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 5 Q R X tjt	|d |j|  W 5 Q R X dS )	z]make sure that we are raising on positional indexing
        w.r.t. an integer index
        r6   rU   r   rJ   z)cannot do (slice|positional) indexing on z/ with these indexers \[(2|4)\.0\] of type floatr!   N)
r   rC   r   r   rB   r   rO   r&   r'   rP   )r   rI   r0   r   r   r   rQ   r   r   r    test_integer_positional_indexingC  s    z2TestFloatIndexers.test_integer_positional_indexingc           	   
   C   s  |d}t tjdd|d}tddtddtddfD ]\}|j| }tdd}| |||d d	t|j d
}t	j
t|d ||  W 5 Q R X q:tddtddfD ]$}|j| }| ||tddd qd	t|j d}t	j
t|d |tdd  W 5 Q R X tddtddftddtddftddtddffD ]X\}}|j| }| |||d d	t|j d}t	j
t|d ||  W 5 Q R X qFd S )Nr   r6   r           r5   r   r;   FrM   z/ with these indexers \[(0|1)\.0\] of type floatr!   ir$   g      $      $@Tz- with these indexers \[-10\.0\] of type floatg      ?r:   z+ with these indexers \[0\.5\] of type float)r   r	   r   r   rX   r,   r   rN   rO   r&   r'   rP   )	r   r   r   r0   rI   r   r   rQ   rY   r   r   r    test_slice_integer_frame_getitemY  s6     



z2TestFloatIndexers.test_slice_integer_frame_getitemc              	   C   s   |d}t tjdd|d}| }d|j|< |j| j }|dk sPt	dt
|j d}tjt|d d||< W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   r6   r   r   rM   rL   r!   )r   r	   r   r   r*   r,   valuesravelallr)   rN   rO   r&   r'   rP   )r   rI   r   r   r0   Zscr   rQ   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|sHtt	|| |
 }d|||< ||| j }|dk std S )NrF   g?r3   rJ   r   )r   r	   r
   r   r   r   rN   r)   r   Zassert_equalr*   r`   ra   rb   )	r   rI   r-   r.   r   r0   r   r   r1   r   r   r   test_slice_float  s    
z"TestFloatIndexers.test_slice_floatc                 C   sZ   t dddddg}ttd|d}|d dks2t|jd dksDt|jd dksVtd S )Nr:   r6   r3   g      @r   r   )r   r   rC   r)   r,   r   )r   r   r0   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sbt||d }|d	kszttjt	d
d ||d  W 5 Q R X 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||| | q ||d	d }||dd }||dd }||dd }	t|| t|| t||	 t dd	gddgd}||d	d }t|| ||dddg }|jdd	dg }t|| tjt	dd ||dddg  W 5 Q R X tjt	dd ||ddd	g  W 5 Q R X ||ddg }t|t dd	gddgd ||dg }t|t dgdgd d S )Nr   rV   )r   rT   r;   r#   r5   r   rF   r6   z^4$r!   rJ   r   r]   rS   float64r[   g @r$   znot in indexg?)r   r	   r
   rW   r   rB   r)   r&   r'   r(   r   rf   arrayr   )
r   r.   r0   r   r   Z	fancy_idxZresult1Zresult2Zresult3Zresult4r   r   r   test_floating_misc  sJ     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sZtt| d S )@Ng     "@g     S@g     8@r]   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     *@r^   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     @)   r5   r6   r3   rJ   r   rU         	   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   r@   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                    rS   )r   Zvalue_countsr   rT   r)   str)r   Zfloat_numpy_dtyperT   Zserr0   r   r   r   r   test_floatindex_slicing_bug  s:     z-TestFloatIndexers.test_floatindex_slicing_bugN)rO   
__module____qualname__r   r&   markZparametrizer   ZmakeStringIndexZmakeCategoricalIndexZmakeDateIndexZmakeTimedeltaIndexZmakePeriodIndexr2   r4   r<   ZmakeIntIndexZmakeRangeIndexrD   rE   rH   rX   rR   rZ   r\   r_   rc   rd   re   rh   r   r   r   r   r   r      sd   



"
$
	#	$ G$

5$$
Ar   )Znumpyr	   r&   Zpandasr   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   r   <module>   s
   
