3
Ud:                 @   s  d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZ ddljZdd Zdd	 Zejjd
ddgddgddgdgdgdgdggejjdddgdd Zdd Zejjd
ddggdd Zdd Zdd Zejjddge	ejgdgdgd e
dgd!d"d#fdd$ge	ejgdgd%ejdgd!d&gd'd#fd!d&ge	ejgdgd%ejdgd!d&gd'd#fgd(d) Zejjd*e e	d!d+ejd,d-ejd.gdd$d/d0dd1d2gd3d4d5ejd6ejd7gd8feg g d9d:d;e	d!d+d<d,d-d=d.gdd$d/d0dd1d2gd3d4d5d=d6d<d7gd8fed!gd:d;e	ejd+d<d,d-d=d.gdd$d/d0dd1d2gd3d4d5d=d6d<d7gd8feg g d9d>e	d!d+ejd,d-ejd.gdd$d/d0dd1d2gd3d4d5ejd6ejd7gd8fgd?d@ ZdAdB ZdCdD ZdEdF ZejjdGdHdIgdJdK Z ejjdLdMddNgejejgd/dOggfd:dPdNgd=dQgdRdOggfgdSdT Z!dUdV Z"ejjdWdejdXgdXejggfd$ddYdZdXgejejggfgd[d\ Z#d]d^ Z$d_d` Z%ejjdae&ddc e&d edgd>e	e&de&dgfe&ddd de e e	e&ddgd<d$ggfe&ddf edgd>e	ejdgfgdgdh Z'didj Z(ejjdkd:d<dlgfdMejdmgfgdndo Z)dpdq Z*ejjdrdMd:gdsdt Z+ejjdudddddydzgfdyd!dzifgd{d| Z,d}d~ Z-dS )zg
Tests that NA values are properly handled during
parsing for all of the parsers defined in parsers.py
    )StringION)STR_NA_VALUES)	DataFrameIndex
MultiIndexc             C   sT   | }d}|j t|}tdddgdtjdgtjddggd	d
dgd}tj|| d S )NzA,B,C
a,b,c
d,,f
,g,h
abcdfghABC)columns)read_csvr   r   npnantmassert_frame_equal)all_parsersparserdataresultexpected r   Y/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/parser/test_na_values.pytest_string_nas   s    r   c             C   sN   | }d}t ddgtjdgtjtjggddgd}|jt|}tj|| d S )NzA,B
foo,bar
NA,baz
NaN,nan
foobarbazr   r   )r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   test_detect_string_na   s    &r"   	na_valuesz-999.0z-999i  g     8@r   zA,B
-999,1.2
2,-999
3,4.5
z"A,B
-999,1.200
2,-999.000
3,4.500
c             C   sL   | }t tjdgdtjgddggddgd}|jt||d}tj|| d S )	Ng333333?g       @g      @g      @r   r   )r   )r#   )r   r   r   r   r   r   r   )r   r   r#   r   r   r   r   r   r   test_non_string_na_values-   s    &r$   c                s   ddddddddd	d
ddddddddh}|t ks4t| }t|fdd tdj fddt|D }ttjt	t	d}|j
|d d}tj|| d S )Nz-1.#INDz1.#QNANz1.#INDz-1.#QNANz#N/AzN/Azn/aZNAz<NA>z#NAZNULLnullNaNr   z-NaNz-nanz#N/A N/A c                sf   | dkrd}n| dkr&dj dg|  }| | }|  d k rbdj dg |  d  }| | }|S )Nr   r'   ,   )join)ivbufZjoined)nvr   r   r   l   s    z!test_default_na_values.<locals>.f
c             3   s   | ]\}} ||V  qd S )Nr   ).0r+   r,   )r   r   r   	<genexpr>z   s    z)test_default_na_values.<locals>.<genexpr>)r   index)header)r   AssertionErrorlenr   r*   	enumerater   r   r   ranger   r   r   )r   Z
_NA_VALUESr   r   r   r   r   )r   r.   r   test_default_na_valuesR   s4     r8   r!   c             C   s`   | }d}t dtjdgtjdtjgddtjggddd	gd
}|jt||dgd}tj|| d S )Nz3A,B,C
ignore,this,row
1,NA,3
-1.#IND,5,baz
7,8,NaN
g      ?            r   r   r   )r   r)   )r#   Zskiprows)r   r   r   r   r   r   r   )r   r#   r   r   r   r   r   r   r   test_custom_na_values   s    0r=   c             C   s`   d}| }|j t|}ttjdtjdgtdtjddtjgtddddgd}tj|| d S )Nz1A,B,C
True,False,True
NA,True,False
False,NA,TrueTF)dtype)r   r   r   )	r   r   r   r   arrayr   objectr   r   )r   r   r   r   r   r   r   r   test_bool_na_values   s    rA   c             C   sh   d}| }|j t|dgdgdd}ttjdtjdgtjdtjdgtjdtjdgd}tj|| d S )Nz3A,B,C
foo,bar,NA
bar,foo,foo
foo,bar,NA
bar,foo,foor   r    )r   r   )r#   )r   r   r   )r   r   r   r   r   r   r   )r   r   r   dfr   r   r   r   test_na_value_dict   s    rC   zindex_col,expectedr)   r:   )r   r	   r
   r   )name)r2      )r   r
   r	   )namesc             C   s.   d}| }|j t|t |d}tj|| d S )Nza,b,c,d
0,NA,1,5
)r#   	index_col)r   r   setr   r   )r   rG   r   r   r   r   r   r   r   test_na_value_dict_multi_index   s    rI   zkwargs,expectedr   r
   er   r9         r;   ZonetwoZthreefiveseven)r   r   r   )r   r   F)r#   keep_default_nar'   r   )r#   c             C   s*   d}| }|j t|f|}tj|| d S )NzAA,B,C
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
)r   r   r   r   )r   kwargsr   r   r   r   r   r   r   test_na_values_keep_default   s    7rR   c          
   C   sd   d}| }|j t|dd}tdddddd	d
gdddddddgdddd	dddgd}tj|| d S )NzAA,B,C
a,1,None
b,2,two
,3,None
d,4,nan
e,5,five
nan,6,
g,7,seven
F)rP   r   r   r'   r
   rJ   r   r   r)   rE   r9   rK   r:   rL   r;   NonerM   rN   rO   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   !test_no_na_values_no_keep_default  s    rT   c             C   sF   d}| }|j t|ddgidd}tdgtjgd}tj|| d S )Nza,b
,2r   2F)r#   rP   r'   )r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   &test_no_keep_default_na_dict_na_values,  s    rV   c             C   sD   d}| }|j t|ddidd}tdgtjgd}tj|| d S )Nza,b
1,2r   rE   F)r#   rP   r)   )r   r   )r   r   r   r   r   r   r   )r   r   r   rB   r   r   r   r   -test_no_keep_default_na_dict_na_scalar_values7  s
    rW   col_zero_na_valuesi Z113125c          	   C   st   d}| }t tjdgtjdgdtjgddgddgd	d
gtjdgd}|jt|d dd
dd|dd}tj|| d S )Nz_113125,"blah","/blaha",kjsdkj,412.166,225.874,214.008
729639,"qwer","",asdfkj,466.681,,252.373
g    ND&AZqwerz/blahaZkjsdkjZasdfkjg-y@g7A`*}@z225.874r'   g-o@)r   r)   rE   r9   rK   r:   rL   Fz214.008Zblah)rE   rL   r)   r   )r3   rP   r#   )r   r   r   r   r   r   r   )r   rX   r   r   r   r   r   r   r   1test_no_keep_default_na_dict_na_values_diff_reprsB  s     rY   zna_filter,row_dataTr   r   1r   3c             C   s>   d}| }|j t|dg|d}t|ddgd}tj|| d S )NzA,B
1,A
nan,B
3,C
r   )r#   	na_filterr   )r   )r   r   r   r   r   )r   r\   row_datar   r   r   r   r   r   r   !test_na_values_na_filter_override_  s
    r^   c          
   C   sr   | }d}|j t|}tdddddtjtjtjgdddd	d
tjtjtjggddddddddgd}tj|| d S )NzlDate,Currency,Symbol,Type,Units,UnitPrice,Cost,Tax
2012-03-14,USD,AAPL,BUY,1000
2012-05-12,USD,SBUX,SELL,500z
2012-03-14ZUSDZAAPLZBUYi  z
2012-05-12ZSBUXZSELLi  DateZCurrencyZSymbolTypeZUnitsZ	UnitPriceZCostZTax)r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   test_na_trailing_columnst  s    
ra   zna_values,row_datag       @)r   r   g      ?c             C   s@   | }ddg}d}|j t|||d}t||d}tj|| d S )Nr   r   z1,2
2,1)rF   r#   )r   )r   r   r   r   r   )r   r#   r]   r   rF   r   r   r   r   r   r   test_na_values_scalar  s    	rb   c             C   sn   | }ddd}|j  }ddg}d}tddgtjtjgg|d	}|jt|||d
}tj|| tj|| d S )NrE   r)   )r   r   r   r   z1,2
2,1g      ?g       @)r   )rF   r#   )	copyr   r   r   r   r   r   r   Zassert_dict_equal)r   r   r#   Zna_values_copyrF   r   r   r   r   r   r   test_na_values_dict_aliasing  s    
rd   c             C   sD   d}| }ddi}|j t||d}tdtjdgi}tj|| d S )Nza
foo
1r   r   )r#   r   r)   )r   r   r   r   r   r   r   )r   r   r   r#   r   r   r   r   r   test_na_values_dict_col_index  s    re   zdata,kwargs,expected?   r/   z,1z
,2z
1c             C   s.   | }|j t|fdd i|}tj|| d S )Nr3   )r   r   r   r   )r   r   rQ   r   r   r   r   r   r   test_na_values_uint64  s    rg   c             C   sH   d}| }t ddgitdgddd}|jt|dd	d
}tj|| d S )Nza,1
b,2rZ   rE   r   r   )rD   )r2   r   F)rG   rP   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   *test_empty_na_values_no_default_with_index  s
    rh   zna_filter,index_data5g      @c             C   sP   | }d}t ddgddgdt|ddd	}|jt|dg|d
}tj|| d S )Nza,b,c
1,,3
4,5,6r)   rK   r9   rL   )r   r	   r   )rD   )r2   )rG   r\   )r   r   r   r   r   r   )r   r\   Z
index_datar   r   r   r   r   r   r   test_no_na_filter_on_index  s
    "rj   c             C   s\   | }d}|j t|dgddgd}tdtjgdtjgdtd	d
gddd}tj|| d S )Nzidx,col1,col2
1,3,4
2,inf,-infr   infz-inf)rG   r#   r9   rK   )col1col2r)   rE   idx)rD   )r2   )r   r   r   r   r   r   r   r   )r   r   r   outr   r   r   r   !test_inf_na_values_with_int_index  s    (rp   r\   c             C   sV   | }d}|rt jnd}tddg|dgddgd}|jt||td	}tj|| d S )
Nza,b,c
1,,3
4,5,6r'   rZ   4ri   r[   6)r   r   r	   )r\   r>   )r   r   r   r   r   strr   r   )r   r\   r   r   emptyr   r   r   r   r   +test_na_values_with_dtype_str_and_na_filter  s    ru   zdata, na_valuesfalse,1
,1
truefalse,1
null,1
truefalse,1
nan,1
truefalse,1
foo,1
truer   c             C   sF   | }d}t jt|d& |jt|d ddgddi|d W d Q R X d S )Nz(Bool column has NA values in column [0a])|(cannot safely convert passed user dtype of bool for object dtyped data in column 0))matchr   r   bool)r3   rF   r>   r#   )pytestZraises
ValueErrorr   r   )r   r   r#   r   msgr   r   r   !test_cast_NA_to_bool_raises_error  s    r   c             C   sd   | }d}|j t|d dddgtttddj }tddgd	d
gddgdddgd}tj|| d S )NzDFile: small.csv,,
10010010233,0123,654
foo,,bar
01001000155,4530,898rl   rm   col3)rl   rm   r   )r3   rF   r>   Z10010010233Z01001000155Z0123Z4530Z654Z898r)   r9   )r2   )r   r   rs   Zdropnar   r   r   )r   r   r   r   r   r   r   r   test_str_nan_dropped  s    
r   ig     8g     8ig     8i)r   r)   )r   r)   l            l            l           l            l            l            l           l            l            l            l            )rv   N)rw   N)rx   N)ry   r   ).__doc__ior   Znumpyr   r|   Zpandas._libs.parsersr   Zpandasr   r   r   Zpandas._testingZ_testingr   r   r"   markZparametrizer$   r8   r=   rA   rC   r   from_tuplesrI   dictrR   rT   rV   rW   rY   r^   ra   rb   rd   re   rs   rg   rh   rj   rp   ru   r   r   r   r   r   r   <module>   s   
/&&*&*
*0

&