U
    Hvf*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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'dddgZ(dddddgZ)eedZ*e	+ddgddge	j,e	j,ggZ-e	.d d!e/fd"e/fgZ0e-ddd f e0d!< e-dddf e0d"< G d#d$ d$Z1G d%d& d&Z2G d'd( d(Z3G d)d* d*Z4G d+d, d,Z5G d-d. d.Z6G d/d0 d0Z7G d1d2 d2Z8G d3d4 d4Z9dS )5    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)g?g?g333333?g?class1)ggɿg333333ӿgٿclass2)            class3numericnominalzmissing.arffr      r   r   r   yopyapc                   @   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 )TestDatac                 C   s   |  t d S N)_testtest4self r   E/tmp/pip-unpacked-wheel-96ln3f52/scipy/io/arff/tests/test_arffread.pytest11   s    zTestData.test1c                 C   s   |  t d S r   )r   test5r   r   r   r    test25   s    zTestData.test2c                 C   s   |  t d S r   )r   test6r   r   r   r    test39   s    zTestData.test3c                 C   s   |  t d S r   )r   test11r   r   r   r    r   =   s    zTestData.test4c                 C   sX   t |\}}tt|D ],}tdD ]}tt| | || |  q$qt| t d S )Nr   )r	   rangelenr   expect4_datar   typesexpected_types)r   Z	test_filer   metaijr   r   r    r   A   s
    zTestData._testc              	   C   sl   t t}t|\}}W 5 Q R X t t}tt| \}}W 5 Q R X t||k tt|t|k d S r   )openr!   r	   r   readr   repr)r   f1data1meta1f2data2meta2r   r   r    test_filelikeH   s    

zTestData.test_filelikec              	   C   s`   ddl m} tt}t|\}}W 5 Q R X t|t\}}t||k tt|t|k d S )Nr   )Path)pathlibr9   r/   r!   r	   r   r1   )r   r9   r2   r3   r4   r6   r7   r   r   r    	test_pathQ   s    
zTestData.test_pathN)
__name__
__module____qualname__r!   r#   r%   r   r   r8   r;   r   r   r   r    r   0   s   	r   c                   @   s   e Zd Zdd ZdS )TestMissingDatac                 C   s,   t t\}}dD ]}t|| t|  qd S )N)r   r   )r	   missingr   expect_missing)r   r   r,   r-   r   r   r    test_missing_   s    zTestMissingData.test_missingN)r<   r=   r>   rB   r   r   r   r    r?   ^   s   r?   c                   @   s   e Zd Zdd ZdS )
TestNoDatac                 C   s   t jtd}t|\}}tjdkr*d}nd}td| dfd| dfd| dfd	| dfd
g}t	|j| t	|j
d d S )Nznodata.arffbig><ZsepallengthZf8Z
sepalwidthZpetallengthZ
petalwidth)classZS15r   )ospathr   	data_pathr	   sys	byteordernpdtyper   size)r   Znodata_filenamer   r,   endZexpected_dtyper   r   r    test_nodataf   s    
zTestNoData.test_nodataN)r<   r=   r>   rQ   r   r   r   r    rC   e   s   rC   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   sd   t t}t|\}}W 5 Q R X ddddddddddg
}tt|D ]}t|| j|| k qDd S )Nr   stringr   )r/   r#   r
   r'   r(   r   	type_name)r   ofilerelattrsexpectedr-   r   r   r    test_type_parsingy   s    

    zTestHeader.test_type_parsingc                 C   s   dd }t t| d S )Nc               	   S   s$   t t} t| \}}W 5 Q R X d S r   )r/   r%   r
   rU   _r   r   r    badtype_read   s    
z5TestHeader.test_badtype_parsing.<locals>.badtype_read)assert_raisesr   )r   r\   r   r   r    test_badtype_parsing   s    zTestHeader.test_badtype_parsingc              	   C   s   t t}t|\}}W 5 Q R X t|dk tt|dk tdD ],}t|| jd| k t|| jdk qDt|d jdk t|d jdk d S )Nr!   r   r   zattr%dr   rG   )Zclass0r   r   r   )	r/   r!   r
   r   r(   r'   namerT   values)r   rU   rV   rW   r-   r   r   r    test_fullheader1   s    
zTestHeader.test_fullheader1c              	   C   s   t t}t|\}}W 5 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)r/   rb   r
   r   r(   r_   Zdate_format)r   rU   rV   rW   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 5 Q R X d S r   )r/   test8r
   rZ   r   r   r    read_dateheader_unsupported   s    
zKTestHeader.test_dateheader_unsupported.<locals>.read_dateheader_unsupported)r]   
ValueError)r   rj   r   r   r    test_dateheader_unsupported   s    z&TestHeader.test_dateheader_unsupportedN)r<   r=   r>   rY   r^   ra   rh   rl   r   r   r   r    rR   x   s
   rR   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 r   )r	   rb   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]rN   rc   rM   arrayr   r   r   rX   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]ro   rd   rp   rr   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 )
N
1999-01-31
2004-12-01
1817-04-28
2100-09-10
2013-11-30
1631-10-15datetime64[D]ro   re   rp   rr   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_        datetime64[m]ro   rf   )rM   rq   datetimer   r   rr   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:04r   ro   rg   rp   rr   r   r   r    test_datetime_missing   s    	z'TestDateAttribute.test_datetime_missingc                 C   s   t ttt d S r   )r]   r   r	   ri   r   r   r   r    test_datetime_timezone   s    z(TestDateAttribute.test_datetime_timezoneN)
r<   r=   r>   rn   rs   rt   r|   r   r   r   r   r   r   r    rm      s   rm   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestRelationalAttributec                 C   s   t t\| _| _d S r   )r	   test9r   r,   r   r   r   r    rn     s    z$TestRelationalAttribute.setup_methodc                 C   s   t t| jjd t| 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   re   dateattr_numberr   	r   r(   r,   _attributeslistr`   r_   rT   
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}tt| jd D ]}t| jd | ||  qd S )N)re   r{   r   )ru   r   )z
1935-11-27r   ro   )rv   r   )z
1942-08-13r   )rw   r   )rx   r   )z
1957-04-17(   )z
1721-01-14i  )ry   r   )rz      r   )rM   float_rq   r'   r(   r   r   )r   dtype_instancerX   r-   r   r   r    	test_data  s8    

z!TestRelationalAttribute.test_dataNr<   r=   r>   rn   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 r   )r	   test10r   r,   r   r   r   r    rn   0  s    z(TestRelationalAttributeLong.setup_methodc                 C   sv   t t| jjd t| 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    r   3  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>B  s     z9TestRelationalAttributeLong.test_data.<locals>.<listcomp>i0u  ro   r   r   )rM   r   rq   r'   r   r   )r   r   rX   r   r   r    r   ?  s    z%TestRelationalAttributeLong.test_dataNr   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 )	TestQuotedNominalb
    Regression test for issue #10232 : Exception in loadarff with quoted nominal attributes.
    c                 C   s   t t\| _| _d S r   )r	   test_quoted_nominalr   r,   r   r   r   r    rn   N  s    zTestQuotedNominal.setup_methodc                 C   sf   t t| jjd | 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   r`   r_   rT   r   r   r   r   r   r    r   Q  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   ro   r   r   r   r   rM   r   rq   r   r   r   Zage_dtype_instanceZsmoker_dtype_instanceZage_expectedZsmoker_expectedr   r   r    r   \  s0    		zTestQuotedNominal.test_dataNr<   r=   r>   __doc__rn   r   r   r   r   r   r    r   I  s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestQuotedNominalSpacesr   c                 C   s   t t\| _| _d S r   )r	   test_quoted_nominal_spacesr   r,   r   r   r   r    rn   |  s    z$TestQuotedNominalSpaces.setup_methodc                 C   sf   t t| jjd | 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     yesno  r   r   r   r   r    r     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   ro   r   r   r   r   r   r   r   r   r    r     s0    		z!TestQuotedNominalSpaces.test_dataNr   r   r   r   r    r   w  s   r   ):r   rH   rK   os.pathr   pjoinior   ZnumpyrM   Znumpy.testingr   r   r   r   Zpytestr   r]   Zscipy.io.arffr	   Zscipy.io.arff._arffreadr
   r   rI   dirname__file__rJ   r!   r#   r%   r   r"   r$   rb   ri   r   r   r&   r   r   r)   r+   r@   rq   nanZexpect_missing_rawemptyfloatrA   r   r?   rC   rR   rm   r   r   r   r   r   r   r   r    <module>   sV   













 .ED..