
    xf\4                        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
Z
d dlmZmZmZmZ d dl
mZ d dlZd dlmZ d dlmZmZ  eej0                  j3                  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(g dZ)g dZ* eed      Z+ e	jX                  ddgddge	jZ                  e	jZ                  gg      Z. e	j^                  dde0fde0fg      Z1e.ddd f   e1d<   e.dddf   e1d<    G d  d!      Z2 G d" d#      Z3 ejh                         Z4e
jj                  jm                  e4d$k(  xs e4jo                  d%      xs e4d&k(  xs e4d'k(  d()       G d* d+             Z8 G d, d-      Z9 G d. d/      Z: G d0 d1      Z; G d2 d3      Z< G d4 d5      Z= G d6 d7      Z>y)8    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)numericr   r   r   nominalzmissing.arffr      r   r   r   yopyapc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestDatac                 .    | j                  t               y N)_testtest4selfs    C/usr/lib/python3/dist-packages/scipy/io/arff/tests/test_arffread.pytest1zTestData.test12       

5    c                 .    | j                  t               y r   )r   test5r    s    r"   test2zTestData.test26   r$   r%   c                 .    | j                  t               y r   )r   test6r    s    r"   test3zTestData.test3:   r$   r%   c                 .    | j                  t               y r   )r   test11r    s    r"   r   zTestData.test4>   s    

6r%   c                     t        |      \  }}t        t        |            D ].  }t        d      D ]  }t        t        |   |   ||   |            0 t        |j                         t               y )Nr   )r
   rangelenr   expect4_datar   typesexpected_types)r!   	test_filer   metaijs         r"   r   zTestData._testB   sl    i(
ds4y! 	JA1X J),q/!*<d1gajIJ	J 	TZZ\>2r%   c                 V   t        t              5 }t        |      \  }}d d d        t        t              5 }t        t        |j	                                     \  }}d d d        t        k(         t        t              t              k(         y # 1 sw Y   uxY w# 1 sw Y   DxY wr   )openr#   r
   r   readr   repr)r!   f1data1meta1f2data2meta2s          r"   test_filelikezTestData.test_filelikeI   s    %[ 	(B#B<LE5	(%[ 	9B#HRWWY$78LE5	9UtE{*+	( 	(	9 	9s   B&BBB(c                     ddl m} t        t              5 }t	        |      \  }}d d d        t	         |t                    \  }}t        |k(         t        t              t        |      k(         y # 1 sw Y   PxY w)Nr   )Path)pathlibrD   r9   r#   r
   r   r;   )r!   rD   r<   r=   r>   r@   rA   s          r"   	test_pathzTestData.test_pathR   se     %[ 	(B#B<LE5	(  U,uUtE{*+	( 	(s   A44A=N)
__name__
__module____qualname__r#   r(   r+   r   r   rB   rF    r%   r"   r   r   1   s%    3,
,r%   r   c                       e Zd Zd Zy)TestMissingDatac                 b    t        t              \  }}dD ]  }t        ||   t        |           y )N)r   r   )r
   missingr   expect_missing)r!   r   r5   r6   s       r"   test_missingzTestMissingData.test_missing`   s4    g&
d 	BA%d1g~a/@A	Br%   N)rG   rH   rI   rP   rJ   r%   r"   rL   rL   _   s    Br%   rL   s390xppcparisc64sparc64z=test known to fail on s390x, powerpc, ppc64, hppa and sparc64)reasonc                       e Zd Zd Zy)
TestNoDatac                 L   t         j                  j                  t        d      }t	        |      \  }}t
        j                  dk(  rd}nd}t        j                  d| dfd| dfd| dfd	| dfd
g      }t        |j                  |       t        |j                  d       y )Nznodata.arffbig><sepallengthf8
sepalwidthpetallength
petalwidth)classS15r   )ospathr   	data_pathr
   sys	byteordernpdtyper   size)r!   nodata_filenamer   r5   endexpected_dtypes         r"   test_nodatazTestNoData.test_nodatal   s     '',,y-@o.
d==E!CCMcU":#>$0SE*#=$1cU":#>$0SE*#=#3	#5 6
 	TZZ0TYY"r%   N)rG   rH   rI   rn   rJ   r%   r"   rW   rW   f   s    #r%   rW   c                   *    e Zd Zd Zd Zd Zd Zd Zy)
TestHeaderc                     t        t              5 }t        |      \  }}d d d        g d}t        t	                    D ]   }t        ||   j                  ||   k(         " y # 1 sw Y   ExY w)N)
r   r   r   r   r   r   stringrr   r   r   )r9   r(   r   r/   r0   r   	type_name)r!   ofilerelattrsexpectedr6   s         r"   test_type_parsingzTestHeader.test_type_parsing   sk    %[ 	,E$U+JC	,I s5z" 	7AE!H&&(1+56	7	, 	,s   A##A,c                 *    d }t        t        |       y )Nc                  h    t        t              5 } t        |       \  }}d d d        y # 1 sw Y   y xY wr   )r9   r+   r   rt   _s     r"   badtype_readz5TestHeader.test_badtype_parsing.<locals>.badtype_read   .    e *"5)1* * *   (1)assert_raisesr   )r!   r}   s     r"   test_badtype_parsingzTestHeader.test_badtype_parsing   s    	* 	nl3r%   c                    t        t              5 }t        |      \  }}d d d        t        dk(         t        t	              dk(         t        d      D ];  }t        ||   j                  d|z  k(         t        ||   j                  dk(         = t        |d   j                  dk(         t        |d   j                  dk(         y # 1 sw Y   xY w)Nr#   r   r   zattr%dr   ra   )class0r   r   r   )	r9   r#   r   r   r0   r/   namers   values)r!   rt   ru   rv   r6   s        r"   test_fullheader1zTestHeader.test_fullheader1   s    %[ 	,E$U+JC	, 	w 	E
a q 	5AE!HMMX\12E!H&&)34	5
 	a()a#KKL	, 	,s   CCc                    t        t              5 }t        |      \  }}d d d        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(         y # 1 sw Y   >xY w)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)r9   r   r   r   r0   r   date_format)r!   rt   ru   rv   s       r"   test_dateheaderzTestHeader.test_dateheader   s,   %[ 	,E$U+JC	, 	wE
a a,-a$$,-a-.a$$/0a,-a$$
23a!667a$$(889a!889a$$(889)	, 	,s   EE%c                 *    d }t        t        |       y )Nc                  h    t        t              5 } t        |       \  }}d d d        y # 1 sw Y   y xY wr   )r9   test8r   r{   s     r"   read_dateheader_unsupportedzKTestHeader.test_dateheader_unsupported.<locals>.read_dateheader_unsupported   r~   r   )r   
ValueError)r!   r   s     r"   test_dateheader_unsupportedz&TestHeader.test_dateheader_unsupported   s    	* 	j"=>r%   N)rG   rH   rI   rx   r   r   r   r   rJ   r%   r"   rp   rp   ~   s    	74M$:.?r%   rp   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestDateAttributec                 <    t        t              \  | _        | _        y r   )r
   r   r   r5   r    s    r"   setup_methodzTestDateAttribute.setup_method       '	49r%   c                 h    t        j                  g dd      }t        | j                  d   |       y )N)199920041817210020131631zdatetime64[Y]ri   r   rh   arrayr   r   r!   rw   s     r"   test_year_attributez%TestDateAttribute.test_year_attribute   /    88 
 !" 	499[18<r%   c                 h    t        j                  g dd      }t        | j                  d   |       y )N)z1999-01z2004-12z1817-04z2100-09z2013-11z1631-10zdatetime64[M]r   r   r   r   s     r"   test_month_attributez&TestDateAttribute.test_month_attribute   s/    88 
 !" 	499\2H=r%   c                 h    t        j                  g dd      }t        | j                  d   |       y )N)
1999-01-31
2004-12-01
1817-04-28
2100-09-10
2013-11-30
1631-10-15datetime64[D]r   r   r   r   s     r"   test_date_attributez%TestDateAttribute.test_date_attribute   r   r%   c                    t        j                  t        j                  ddddd      t        j                  ddddd	      t        j                  d
dddd      t        j                  ddddd      t        j                  ddddd      t        j                  ddddd      gd      }t        | j                  d   |       y )Ni  r      r   )yearmonthdayhourminutei        ;   i  r         i4  	   
   i        7   i_        datetime64[m]r   r   )rh   r   datetimer   r   r   s     r"   test_datetime_local_attributez/TestDateAttribute.test_datetime_local_attribute   s    884qbqK4rqr"M4qbr!L4qbr!L4rr"M4rr1M
 !" 	499%:;XFr%   c                 h    t        j                  g dd      }t        | j                  d   |       y )N)natz2004-12-01T23:59r   r   z2013-11-30T04:55z1631-10-15T20:04r   r   r   r   r   s     r"   test_datetime_missingz'TestDateAttribute.test_datetime_missing   s0    88 
 !" 	499%<=xHr%   c                 6    t        t        t        t               y r   )r   r   r
   r   r    s    r"   test_datetime_timezonez(TestDateAttribute.test_datetime_timezone  s    nh6r%   N)
rG   rH   rI   r   r   r   r   r   r   r   rJ   r%   r"   r   r      s'    /
=
>
=
G
I7r%   r   c                       e Zd Zd Zd Zd Zy)TestRelationalAttributec                 <    t        t              \  | _        | _        y r   )r
   test9r   r5   r    s    r"   r   z$TestRelationalAttribute.setup_method  r   r%   c                 d   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	       y )
Nr   r   attr_date_number
relationalr   r   dateattr_numberr   	r   r0   r5   _attributeslistr   r   rs   
attributesr!   r   s     r"   test_attributesz'TestRelationalAttribute.test_attributes  s    S../3$))//6689!<
Z__&89Z))<8S../3Z**1-22 	"Z**1-77	Z**1-22"	$Z**1-77	 r%   c           	         ddt         j                  fg}t        j                  ddg|      t        j                  ddg|      t        j                  dg|      t        j                  g d	|      t        j                  d
g|      t        j                  dg|      g}t        t	        | j
                  d               D ]!  }t        | j
                  d   |   ||          # y )N)r   r   r   )r   r   )z
1935-11-27r   r   )r   r   )z
1942-08-13r   )r   r   ))r   r   )z
1957-04-17(   )z
1721-01-14i  )r   r   )r      r   )rh   float_r   r/   r0   r   r   )r!   dtype_instancerw   r6   s       r"   	test_dataz!TestRelationalAttribute.test_data  s    8("))46 HH');<)+HH');<)+HH'()+HH +)+ HH'()+HH'()+
  s499%789: 	,Atyy);<Q?'{,	,r%   NrG   rH   rI   r   r   r   rJ   r%   r"   r   r     s    / ",r%   r   c                       e Zd Zd Zd Zd Zy)TestRelationalAttributeLongc                 <    t        t              \  | _        | _        y r   )r
   test10r   r5   r    s    r"   r   z(TestRelationalAttributeLong.setup_method6  s    '/	49r%   c                    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       y )Nr   r   attr_relationalr   r   r   r   r   s     r"   r   z+TestRelationalAttributeLong.test_attributes9  s    S../3$))//6689!<
Z__&78Z))<8S../3Z**1-22"	$Z**1-77Cr%   c                     dt         j                  fg}t        j                  t        d      D cg c]  }|f c}|      }t	        | j
                  d   d   |       y c c}w )Nr   i0u  r   r   r   )rh   r   r   r/   r   r   )r!   r   nrw   s       r"   r   z%TestRelationalAttributeLong.test_dataE  sZ    ("))45885<8aaT8"02 	499%67:#	% 9s   
A Nr   rJ   r%   r"   r   r   5  s    0
D%r%   r   c                   "    e Zd ZdZd Zd Zd Zy)TestQuotedNominalb
    Regression test for issue #10232 : Exception in loadarff with quoted nominal attributes.
    c                 <    t        t              \  | _        | _        y r   )r
   test_quoted_nominalr   r5   r    s    r"   r   zTestQuotedNominal.setup_methodT  s    '(;<	49r%   c                    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       y )Nr   ager   smokerr   yesnor   r0   r5   r   r   r   rs   r!   r   r   s      r"   r   z!TestQuotedNominal.test_attributesW  s    S../3ii++224VSXXu%S]]I.V[[(+V%%y1V]]UDM2r%   c                     t         j                  }d}t        j                  g d|      }t        j                  g d|      }t        | j                  d   |       t        | j                  d   |       y )Nz<S3      ,   8   Y   r   r   )r   r   r   r   r   r   r   r   rh   r   r   r   r   r!   age_dtype_instancesmoker_dtype_instanceage_expectedsmoker_expecteds        r"   r   zTestQuotedNominal.test_datab  l    YY %xx !
 $% (( $
 '( 	499U+\:499X.@r%   NrG   rH   rI   __doc__r   r   r   rJ   r%   r"   r   r   O  s    =	3Ar%   r   c                   "    e Zd ZdZd Zd Zd Zy)TestQuotedNominalSpacesr   c                 <    t        t              \  | _        | _        y r   )r
   test_quoted_nominal_spacesr   r5   r    s    r"   r   z$TestQuotedNominalSpaces.setup_method  s    '(BC	49r%   c                    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       y )Nr   r   r   r   r     yesno  r   r   s      r"   r   z'TestQuotedNominalSpaces.test_attributes  s    S../3ii++224VSXXu%S]]I.V[[(+V%%y1V]]Wf$56r%   c                     t         j                  }d}t        j                  g d|      }t        j                  g d|      }t        | j                  d   |       t        | j                  d   |       y )Nz<S5r   r   )r  r  r  r  r  r  r   r   r   r   s        r"   r   z!TestQuotedNominalSpaces.test_data  r  r%   Nr  rJ   r%   r"   r	  r	  }  s    D	7Ar%   r	  )?r   rc   rf   os.pathr   pjoinior   numpyrh   pytestnumpy.testingr   r   r   r   r	   r   platformscipy.io.arffr
   scipy.io.arff._arffreadr   r   rd   dirname__file__re   r#   r(   r+   r   r'   r*   r   r   r   r   r-   r   r  r1   r3   rN   r   nanexpect_missing_rawemptyfloatrO   r   rL   machinemarkskipif
startswithrW   rp   r   r   r   r   r	  rJ   r%   r"   <module>r#     sQ    	 
 !   F F *  " ? "''//(+V4	i&i&i&i&i&i&i&i&i&	y-	(	y-	(I'<= "9.JK ( I
	>
*RXX1v1v/?@A !uenuen=>*1a40u *1a40u +, +,\B B 	GW$ *))%0*
** 	)Z	  \
# #\
#&B? B?JA7 A7H+, +,\% %4+A +A\+A +Ar%   