3
Uéd0  ã            	   @   s   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jZdd„ Zdd„ Zejjdejejfejejfejejfejejfejejfejejfgƒd	d
„ ƒZdd„ Zdd„ Zdd„ Zejjdeeejegƒdd„ ƒZejjddd dgedddgƒdddgedƒej edƒggƒdd„ ƒZ!dd „ Z"d!d"„ Z#ejjd#e$dd$ƒƒejjd%d&d'd'd'd'gd&d'gd'ggƒejjd(d)ej%ej&e'ƒj(ej&e'ƒj)gƒejjd*d+d,„ d-d,„ d.d,„ gƒd/d0„ ƒƒƒƒZ*d1d2„ Z+d3d4„ Z,d5d6„ Z-d7d8„ Z.d9d:„ Z/d;d<„ Z0d=d>„ Z1d?d@„ Z2dS )Aé    N)Ú
is_integer)ÚSeriesÚ	TimestampÚ
date_rangeÚisnac             C   s\   t tjdƒ| d}|dk }tddƒ||< t ttddƒƒttddƒƒ | d}tj||ƒ d S )Né
   )Údtypeé   é   é   )r   ÚnpÚarangeÚrangeÚlistÚtmÚassert_series_equal)Z
sint_dtypeÚsÚmaskÚexpected© r   ú[/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/series/indexing/test_where.pyÚtest_where_unsafe_int   s
    $r   c             C   s`   t tjdƒ| d}|dk }tddƒ||< ttddƒƒttddƒƒ }t || d}tj||ƒ d S )Nr   )r   r	   r
   r   )r   r   r   r   r   r   r   )Zfloat_dtyper   r   Údatar   r   r   r   Útest_where_unsafe_float   s    r   zdtype,expected_dtypec             C   sZ   t tjdƒ| d}dddddg}|dk }t |ttddƒƒ |d}|||< tj||ƒ d S )	Nr   )r   g      @g      @g      @g      @g      @r	   )r   r   r   r   r   r   r   )r   Zexpected_dtyper   Úvaluesr   r   r   r   r   Útest_where_unsafe_upcast    s    r   c              C   s:  t tjdƒdd} ddddg}| dk}t ttd	ƒƒ| d
d}|| |< tj| |ƒ t tjdƒdd} | dk }tddƒ| |< t ttddƒƒttddƒƒ dd}tj| |ƒ | j|jksºt‚t tjdƒdd} | dk}dgd | |< t ddddddgdgd  dd}tj| |ƒ t tjdƒƒ} | dk}d}t	j
t|d dddddg| |< W d Q R X t	j
t|d dgd | |< W d Q R X t ddddgƒ} | j| dktjƒ}t tjtjddgƒ}tj||ƒ t tdƒƒjtƒ} d | d< | d }t|ƒsðt‚t tdƒƒjtƒ} d | | dk< | t| ƒ }t tjdgd}tj||ƒ d S )Nr   Úint64)r   g      @g      @g      @g      @r	   é   Úfloat64r
   r   r   é   é   é   z-cannot assign mismatch length to masked array)Úmatché   é	   )Úindex)r   r   r   r   r   r   r   r   ÚAssertionErrorÚpytestÚraisesÚ
ValueErrorÚwhereÚnanÚastypeÚfloatr   )r   r   r   r   ÚmsgÚresultr   r   r   Útest_where_unsafe5   sJ    $"r0   c              C   s  t tjjdƒƒ} | dk}| j|ƒjƒ }| | }tj||ƒ | j||  ƒ}tj|| jƒ ƒ | j|ƒ}| j	|j	ksrt
‚|| k	s~t
‚t dddddg| jd}| jƒ  }|| j|jd d… ƒj|jƒ}|j|d d… ƒ}tj||ƒ |jƒ }|d |jd< |j|d d… | ƒ}tj||ƒ d S )Nr	   r   TF)r%   r!   )r   r   ÚrandomÚrandnr*   Údropnar   r   ÚabsÚshaper&   r%   ZreindexZiloc)r   ÚcondÚrsZrs2Ús2r   r   r   r   Ú
test_wherel   s&    

 r9   c               C   s  t tjjdƒƒ} | dk}d}tjt|d | jdƒ W d Q R X tjt|d | j|d d… j|  ƒ W d Q R X t ddgƒ} ddg| dd	g< t ddgƒ}t	j
| |ƒ d
}tjt|d dddg| dd	g< W d Q R X d}tjt|d g | dd	g< W d Q R X d S )Nr	   r   z,Array conditional must be same shape as self)r"   r    r!   r
   TFz-cannot assign mismatch length to masked arrayzrNumPy boolean array indexing assignment cannot assign 0 input values to the 1 output values where the mask is true)r   r   r1   r2   r'   r(   r)   r*   r   r   r   )r   r6   r.   r   r   r   r   Útest_where_error‰   s"    "r:   Úklassc             C   sF   t dddgƒ}dddg}t tjddgƒ}|j| |ƒƒ}tj||ƒ d S )Nr    r
   r!   FT)r   r   r+   r*   r   r   )r;   r   r6   r   r/   r   r   r   Útest_where_array_like¥   s
    
r<   r6   r    r
   r	   r   ÚTrueÚFalsez
2017-01-01z
2017-01-02c             C   sd   t dddgƒ}d}tjt|d |j| ƒ W d Q R X d}tjt|d |jdgƒ W d Q R X d S )Nr    r
   r!   z(Boolean array expected for the condition)r"   z,Array conditional must be same shape as selfT)r   r'   r(   r)   r*   )r6   r   r.   r   r   r   Útest_where_invalid_input°   s    r?   c              C   sÎ   d} t dddgƒ}dg}tjt| d |j|ƒ W d Q R X t dtjtjgƒ}|jt |ƒƒ}tj||ƒ tj	ddddgƒ}tjt| d |j|ƒ W d Q R X t tjdtjgƒ}|jt |ƒƒ}tj||ƒ d S )Nz,Array conditional must be same shape as selfr    r
   r!   T)r"   F)
r   r'   r(   r)   r*   r   r+   r   r   Úarray)r.   r   r6   r   Úoutr   r   r   Útest_where_ndframe_alignÆ   s    rB   c           (   C   s2  dd„ } t tdƒƒ}tjt| dƒd ttdƒƒ|dd…< W d Q R X ttdƒƒ|dd…< t dd	d
gƒ}tj|jt	j
ƒ|ƒ t tdƒƒ}tjt| dƒd ttdƒƒ|ddd
…< W d Q R X t tdƒƒ}ttd
ƒƒ|ddd
…< t ddd	dddgƒ}tj||ƒ t tdƒƒ}tjt| dƒd ttdƒƒ|d d…< W d Q R X ttd
ƒƒ|dd…< t ddddd	dgƒ}tj||ƒ t tdƒƒ}tjt| dƒd ttdƒƒ|dd	d
g< W d Q R X t tdƒƒ}tjt| dƒd ttd
ƒƒ|dd	d
g< W d Q R X t tdƒƒ}ttdƒƒ|d< t ttdƒƒddgƒ}tj||ƒ d S )Nc             S   s   d| › dS )Nzcannot set using a z/ indexer with a different length than the valuer   )Úxr   r   r   Ú<lambda>â   s    z,test_where_setitem_invalid.<locals>.<lambda>ÚabcÚslice)r"   é   r   r!   r    r
   Zabcdefr   ÚbÚdÚeÚfÚaÚcz	list-liker   éÿÿÿÿéýÿÿÿrN   )r   r   r'   r(   r)   r   r   r   r,   r   r   )r.   r   r   r   r   r   Útest_where_setitem_invalidÝ   s<       rP   Úsizer   r   TFÚitemg       @Úboxc             C   s   t j| gƒS )N)r   r@   )rC   r   r   r   rD      s    rD   c             C   s   | gS )Nr   )rC   r   r   r   rD      s    c             C   s   | fS )Nr   )rC   r   r   r   rD      s    c                s¤   t j|| ƒ}t j| td‰ t‡ ‡fdd„t|ƒD ƒƒ}tˆ ƒ}|ˆƒ||< tj||ƒ tˆ ƒ}|j| |ˆƒƒ}tj||ƒ tˆ ƒ}|j	||ˆƒƒ}tj||ƒ d S )N)r   c                s    g | ]\}}|rˆnˆ | ‘qS r   r   )Ú.0ÚiZuse_item)r   rR   r   r   ú
<listcomp>*  s    z"test_broadcast.<locals>.<listcomp>)
r   Úresizer   r-   r   Ú	enumerater   r   r*   r   )rQ   r   rR   rS   Z	selectionr   r   r/   r   )r   rR   r   Útest_broadcast  s    rY   c              C   sˆ   t tjjdƒƒ} | dk}| jƒ }|j|dd tj|jƒ | | ƒ tj|| j|ƒƒ | jƒ }|j||  dd tj|| j||  ƒƒ d S )Nr	   r   T)Zinplace)	r   r   r1   r2   Úcopyr*   r   r   r3   )r   r6   r7   r   r   r   Útest_where_inplace:  s    r[   c              C   sô   t ttdƒƒƒ} t ttdƒƒƒ}tj| |gƒ}|j|dk ƒ}t ddtjddtjgddddddgd}tj	||ƒ d||dk < t ddddddgddddddgd}tj	||ƒ ||dk   d7  < t ddddddgddddddgd}tj	||ƒ d S )	Nr!   r
   r   r    )r%   r	   r   é   )
r   r   r   ÚpdÚconcatr*   r   r+   r   r   )Ús1r8   Zcombr/   r   r   r   r   Útest_where_dupsI  s    ($$r`   c              C   sV  t jdddgƒ} | j| dkdƒ}t|d ƒ s2t‚t|d ƒsBt‚t|d ƒsRt‚t|d tƒsdt‚|jdksrt‚| j| dkdddgƒ}t|d ƒ sšt‚t|d ƒsªt‚t|d ƒsºt‚t|d tƒsÌt‚|jdksÚt‚| j| dktj	dddgƒƒ}t|d ƒ s
t‚t|d ƒst‚t|d ƒs.t‚t|d tƒsBt‚|jdksRt‚d S )	Nr    r
   r!   ÚXr   ÚobjectÚYÚZ)
r]   r   r*   r   r&   Ú
isinstanceÚstrr   r   r@   )r   Úwr   r   r   Útest_where_numeric_with_string^  s&    rh   c              C   sÄ   t ddgdd} t ddgƒ}tjddgƒ}| j|ddgƒ}tj||ƒ | j|dƒ}tj||ƒ | j|dƒ}tj||ƒ | j|ddgƒ}tj||ƒ | j|dtjgƒ}t dd gdd}tj||ƒ d S )	Nr    r
   ztimedelta64[ns])r   r   Fg      $@rb   )r   r   r@   r*   r   r   r+   )r   r   r   r7   r   r   r   Útest_where_timedelta_coercex  s    ri   c              C   s  t tdddƒ} t ddgƒ}tjddgƒ}| j|ddgƒ}tj||ƒ | j|dƒ}tj||ƒ | j|dƒ}tj||ƒ | j|ddgƒ}tj||ƒ | j|dtjgƒ}t dd gdd}tj||ƒ d	d
g}t dd„ |D ƒƒ} | jt ddgƒƒ}t tj	| d gƒ}tj||ƒ d S )NZ20130102r
   )Zperiodsr   Fg      $@rb   )r   z2016-12-31 12:00:04+00:00z 2016-12-31 12:00:04.010000+00:00c             S   s   g | ]}t j|ƒ‘qS r   )r]   r   )rT   Útr   r   r   rV   ¥  s    z2test_where_datetime_conversion.<locals>.<listcomp>Tr    )
r   r   r   r@   r*   r   r   r+   r]   ÚNaT)r   r   r   r7   Z
timestampsr   r   r   Útest_where_datetime_conversionŽ  s&    rl   c             C   sz   t jt jdddg| dƒ}t jt jdddg| dƒ}t jddd	gƒ}|j||ƒ}t jt jdddg| dƒ}tj||ƒ d S )
NZ20150101Z20150102Z20150103)ÚtzZ20160514Z20160515Z20160516TF)r]   r   ZDatetimeIndexr*   r   r   )Ztz_naive_fixtureZser1Zser2r   r/   Úexpr   r   r   Útest_where_dt_tz_values«  s    ro   c              C   sL   t jt jjddgƒƒ} | j| dkdƒ}t jt jjddgƒƒ}tj||ƒ d S )Nr    r
   r   )r]   r   ZarraysZSparseArrayr*   r   r   )Úserr/   r   r   r   r   Útest_where_sparseº  s    rq   c              C   s&   t g td} | jg ƒ}tj|| ƒ d S )N)r   )r   r-   r*   r   r   )rp   r/   r   r   r   Ú=test_where_empty_series_and_empty_cond_having_non_bool_dtypesÂ  s    
rr   )3Znumpyr   r'   Zpandas.core.dtypes.commonr   Zpandasr]   r   r   r   r   Zpandas._testingZ_testingr   r   r   ÚmarkZparametrizeZint8r   Zint16Zint32r   Zfloat32r   r0   r9   r:   r   Útupler@   r<   rk   r?   rB   rP   r   r+   Zfinfor-   ÚmaxÚminrY   r[   r`   rh   ri   rl   ro   rq   rr   r   r   r   r   Ú<module>   sT   






7  9 (