3
Pd 3                 @   s*  d dl Z d dlZd dlZd dlmZ d dlmZ d dlZ	d dl
mZmZmZmZ d dlZd dlmZ d dlmZ d dlmZmZ eejjedZeed	Zeed
ZeedZeedZeedZeedZeedZ eedZ!eedZ"eedZ#eedZ$eedZ%eedZ&d9d>d?gZ'd!d!d!d!d"gZ(eed#Z)e	j*dd$gddge	j+e	j+ggZ,e	j-dd%e.fd&e.fgZ/e,ddd f e/d%< e,dddf e/d&< G d'd( d(e0Z1G d)d* d*e0Z2G d+d, d,e0Z3G d-d. d.e0Z4G d/d0 d0e0Z5G d1d2 d2e0Z6G d3d4 d4e0Z7G d5d6 d6e0Z8G d7d8 d8e0Z9dS )@    N)join)StringIO)assert_array_almost_equalassert_array_equalassert_equalassert_)raises)loadarff)read_headerParseArffErrordataz
test1.arffz
test2.arffz
test3.arffz
test4.arffz
test5.arffz
test6.arffz
test7.arffz
test8.arffz
test9.arffztest10.arffztest11.arffzquoted_nominal.arffzquoted_nominal_spaces.arff皙?皙?333333?皙?class1class2            class3numericnominalzmissing.arff   yopyapc               @   sR   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
ejdk dddd ZdS )TestDatac             C   s   | j t d S )N)_testtest4)self r!   U/var/www/html/virt/lib64/python3.6/site-packages/scipy/io/arff/tests/test_arffread.pytest11   s    zTestData.test1c             C   s   | j t d S )N)r   test5)r    r!   r!   r"   test25   s    zTestData.test2c             C   s   | j t d S )N)r   test6)r    r!   r!   r"   test39   s    zTestData.test3c             C   s`   t |\}}x@tt|D ]0}x*tdD ]}tt| | || |  q(W qW t|j t d S )Nr   )r	   rangelenr   expect4_datar   typesexpected_types)r    Z	test_filer   metaijr!   r!   r"   r   =   s
    "zTestData._testc             C   sl   t t}t|\}}W d Q R X t t}tt|j \}}W d Q R X t||k tt|t|k d S )N)openr#   r	   r   readr   repr)r    f1data1meta1f2data2meta2r!   r!   r"   test_filelikeD   s    

zTestData.test_fileliker      z@Passing path-like objects to IO functions requires Python >= 3.6)reasonc             C   s`   ddl m} tt}t|\}}W d Q R X t|t\}}t||k tt|t|k d S )Nr   )Path)pathlibr<   r0   r#   r	   r   r2   )r    r<   r3   r4   r5   r7   r8   r!   r!   r"   	test_pathM   s    
zTestData.test_pathN)r   r:   )__name__
__module____qualname__r#   r%   r'   r   r9   pytestmarkZskipifsysversion_infor>   r!   r!   r!   r"   r   0   s   	r   c               @   s   e Zd Zdd ZdS )TestMissingDatac             C   s0   t t\}}xdD ]}t|| t|  qW d S )Nr   r   )r   r   )r	   missingr   expect_missing)r    r   r-   r.   r!   r!   r"   test_missing]   s    
zTestMissingData.test_missingN)r?   r@   rA   rI   r!   r!   r!   r"   rF   \   s   rF   c               @   s   e Zd Zdd ZdS )
TestNoDatac             C   sJ   t jjtd}t|\}}tjd
ddddg}t|j| t|jd	 d S )Nznodata.arffsepallength<f8
sepalwidthpetallength
petalwidthclassS15r   )rK   rL   )rM   rL   )rN   rL   )rO   rL   )rP   rQ   )	ospathr   	data_pathr	   npdtyper   size)r    Znodata_filenamer   r-   Zexpected_dtyper!   r!   r"   test_nodatad   s    zTestNoData.test_nodataN)r?   r@   rA   rX   r!   r!   r!   r"   rJ   c   s   rJ   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestHeaderc             C   sh   t t}t|\}}W d Q R X ddddddddddg
}x*tt|D ]}t|| j|| k qFW d S )Nr   stringr   )r0   r%   r
   r(   r)   r   	type_name)r    ofilerelattrsexpectedr.   r!   r!   r"   test_type_parsings   s    

zTestHeader.test_type_parsingc             C   s   dd }t t| d S )Nc           	   S   s$   t t} t| \}}W d Q R X d S )N)r0   r'   r
   )r\   _r!   r!   r"   badtype_read   s    
z5TestHeader.test_badtype_parsing.<locals>.badtype_read)assert_raisesr   )r    rb   r!   r!   r"   test_badtype_parsing~   s    zTestHeader.test_badtype_parsingc             C   s   t t}t|\}}W d Q R X t|dk tt|dk x8tdD ],}t|| jd| k t|| jdk qFW t|d jdk t|d jdk d S )Nr#   r   r   zattr%dr   rP   class0r   r   r   )re   r   r   r   )	r0   r#   r
   r   r)   r(   namer[   values)r    r\   r]   r^   r.   r!   r!   r"   test_fullheader1   s    
zTestHeader.test_fullheader1c          
   C   s   t t}t|\}}W d Q R X t|dk tt|dk t|d jdk t|d jdk t|d jdk t|d jdk t|d	 jd
k t|d	 jdk t|d jdk t|d jdk t|d jdk t|d jdk d S )Ntest7r   r   	attr_yearz%Yr   
attr_monthz%Y-%mr   	attr_datez%Y-%m-%dr   attr_datetime_localz%Y-%m-%d %H:%Mr   attr_datetime_missing)r0   ri   r
   r   r)   rf   Zdate_format)r    r\   r]   r^   r!   r!   r"   test_dateheader   s    
zTestHeader.test_dateheaderc             C   s   dd }t t| d S )Nc           	   S   s$   t t} t| \}}W d Q R X d S )N)r0   test8r
   )r\   ra   r!   r!   r"   read_dateheader_unsupported   s    
zKTestHeader.test_dateheader_unsupported.<locals>.read_dateheader_unsupported)rc   
ValueError)r    rq   r!   r!   r"   test_dateheader_unsupported   s    z&TestHeader.test_dateheader_unsupportedN)r?   r@   rA   r`   rd   rh   ro   rs   r!   r!   r!   r"   rY   r   s
   rY   c               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestDateAttributec             C   s   t t\| _| _d S )N)r	   ri   r   r-   )r    r!   r!   r"   setup_method   s    zTestDateAttribute.setup_methodc             C   s.   t jddddddgdd}t| jd	 | d S )
NZ1999Z2004Z1817Z2100Z2013Z1631zdatetime64[Y])rV   rj   )rU   arrayr   r   )r    r_   r!   r!   r"   test_year_attribute   s    z%TestDateAttribute.test_year_attributec             C   s.   t jddddddgdd}t| jd	 | d S )
Nz1999-01z2004-12z1817-04z2100-09z2013-11z1631-10zdatetime64[M])rV   rk   )rU   rv   r   r   )r    r_   r!   r!   r"   test_month_attribute   s    z&TestDateAttribute.test_month_attributec             C   s.   t jddddddgdd}t| jd	 | d S )
Nz
1999-01-31z
2004-12-01z
1817-04-28z
2100-09-10z
2013-11-30z
1631-10-15zdatetime64[D])rV   rl   )rU   rv   r   r   )r    r_   r!   r!   r"   test_date_attribute   s    z%TestDateAttribute.test_date_attributec             C   s   t jtjddddddtjddddd	dtjd
dddddtjddddddtjddddddtjddddddgdd}t| jd | d S )Ni  r      r   )yearmonthdayhourminutei        ;   i  r         i4  	   
   i        7   i_        zdatetime64[m])rV   rm   )rU   rv   datetimer   r   )r    r_   r!   r!   r"   test_datetime_local_attribute   s    z/TestDateAttribute.test_datetime_local_attributec             C   s.   t jddddddgdd}t| jd | d S )NZnatz2004-12-01T23:59z2013-11-30T04:55z1631-10-15T20:04zdatetime64[m])rV   rn   )rU   rv   r   r   )r    r_   r!   r!   r"   test_datetime_missing   s    z'TestDateAttribute.test_datetime_missingc             C   s   t ttt d S )N)rc   r   r	   rp   )r    r!   r!   r"   test_datetime_timezone   s    z(TestDateAttribute.test_datetime_timezoneN)
r?   r@   rA   ru   rw   rx   ry   r   r   r   r!   r!   r!   r"   rt      s   rt   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestRelationalAttributec             C   s   t t\| _| _d S )N)r	   test9r   r-   )r    r!   r!   r"   ru      s    z$TestRelationalAttribute.setup_methodc             C   s   t t| jjd t| jjj d }t |jd t |jd t t|jd t |jd jd t |jd jd t |jd jd t |jd jd	 d S )
Nr   r   attr_date_number
relationalr   rl   dateattr_numberr   )	r   r)   r-   _attributeslistrg   rf   r[   
attributes)r    r   r!   r!   r"   test_attributes   s    z'TestRelationalAttribute.test_attributesc          	   C   s   ddt jfg}t jddg|dt jddg|dt jdg|dt jd d!d"g|dt jd#g|dt jd$g|dg}x2tt| jd D ]}t| jd | ||  qW d S )%Nrl   datetime64[D]r   
1999-01-31r   
1935-11-27r   )rV   
2004-12-01r   
1942-08-13r   
1817-04-28r   
2100-09-10r   
1957-04-17(   
1721-01-14  
2013-11-30r   
1631-10-15r:   r   )rl   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r:   )rU   float_rv   r(   r)   r   r   )r    dtype_instancer_   r.   r!   r!   r"   	test_data  s$    


z!TestRelationalAttribute.test_dataN)r?   r@   rA   ru   r   r   r!   r!   r!   r"   r      s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestRelationalAttributeLongc             C   s   t t\| _| _d S )N)r	   test10r   r-   )r    r!   r!   r"   ru   *  s    z(TestRelationalAttributeLong.setup_methodc             C   sv   t t| jjd t| jjj d }t |jd t |jd t t|jd t |jd jd t |jd jd d S )Nr   r   attr_relationalr   r   r   )	r   r)   r-   r   r   rg   rf   r[   r   )r    r   r!   r!   r"   r   -  s    z+TestRelationalAttributeLong.test_attributesc             C   s@   dt jfg}t jdd tdD |d}t| jd d | d S )Nr   c             S   s   g | ]
}|fqS r!   r!   ).0nr!   r!   r"   
<listcomp><  s    z9TestRelationalAttributeLong.test_data.<locals>.<listcomp>i0u  )rV   r   r   )rU   r   rv   r(   r   r   )r    r   r_   r!   r!   r"   r   9  s
    z%TestRelationalAttributeLong.test_dataN)r?   r@   rA   ru   r   r   r!   r!   r!   r"   r   )  s   r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestQuotedNominalzb
    Regression test for issue #10232 : Exception in loadarff with quoted nominal attributes.
    c             C   s   t t\| _| _d S )N)r	   test_quoted_nominalr   r-   )r    r!   r!   r"   ru   H  s    zTestQuotedNominal.setup_methodc             C   sf   t t| jjd | jjj \}}t |jd t |jd t |jd t |jd t |jddg d S )Nr   ager   smokerr   yesno)r   r)   r-   r   rg   rf   r[   )r    r   r   r!   r!   r"   r   K  s    z!TestQuotedNominal.test_attributesc             C   sb   t j}d}t jddddddg|d}t jd	d
d	d	d
d	g|d}t| jd | t| jd | d S )Nz<S3      ,   8   Y   r   )rV   r   r   r   r   )rU   r   rv   r   r   )r    age_dtype_instancesmoker_dtype_instanceage_expectedsmoker_expectedr!   r!   r"   r   V  s(    zTestQuotedNominal.test_dataN)r?   r@   rA   __doc__ru   r   r   r!   r!   r!   r"   r   C  s   r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestQuotedNominalSpaceszb
    Regression test for issue #10232 : Exception in loadarff with quoted nominal attributes.
    c             C   s   t t\| _| _d S )N)r	   test_quoted_nominal_spacesr   r-   )r    r!   r!   r"   ru   v  s    z$TestQuotedNominalSpaces.setup_methodc             C   sf   t t| jjd | jjj \}}t |jd t |jd t |jd t |jd t |jddg d S )Nr   r   r   r   r   z  yeszno  )r   r)   r-   r   rg   rf   r[   )r    r   r   r!   r!   r"   r   y  s    z'TestQuotedNominalSpaces.test_attributesc             C   sb   t j}d}t jddddddg|d}t jd	d
d	d	d
d	g|d}t| jd | t| jd | d S )Nz<S5r   r   r   r   r   r   )rV   zno  z  yesr   r   )rU   r   rv   r   r   )r    r   r   r   r   r!   r!   r"   r     s(    z!TestQuotedNominalSpaces.test_dataN)r?   r@   rA   r   ru   r   r   r!   r!   r!   r"   r   q  s   r   )r   r   r   r   r   皙皙ɿ333333ӿ皙ٿ)r   r   r   r   r   )r   r   r   r   r   ):r   rR   rD   os.pathr   pjoinior   ZnumpyrU   Znumpy.testingr   r   r   r   rB   r   rc   Zscipy.io.arff.arffreadr	   r
   r   rS   dirname__file__rT   r#   r%   r'   r   r$   r&   ri   rp   r   r   Ztest11r   r   r*   r,   rG   rv   nanZexpect_missing_rawemptyfloatrH   objectr   rF   rJ   rY   rt   r   r   r   r   r!   r!   r!   r"   <module>   sT   













 ,ED..