
    Ugk                         d 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
 ddlZddlZddlmZmZmZmZ  ej         ej        e          d          Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z d Z!dS )z$ Tests for fortran sequential files     N)path)iglob)assert_equalassert_allclose)FortranFile_test_fortranFortranEOFErrorFortranFormattingErrordatac                  :   t          t          j        t          d                    D ]q} t	          j        d| t          j                  }|st          d| z            t          |	                    d                    t          |	                    d                    t          |	                    d                    f}|	                    d          
                    dd	          }t          | d
d          }|                    |                              |d          }|                                 t          j        t          j        |                                        |                              |          }t'          ||           sd S )Nfortran-*-*x*x*.dat%fortran-([^-]+)-(\d+)x(\d+)x(\d+).dat#Couldn't match %s filename to regex            s<r<u4dtypeF)order)r   r   join	DATA_PATHresearchIRuntimeErrorintgroupreplacer   read_recordreshapeclosenparangeprodastyper   )filenamemdimsr   fr   expecteds          Z/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/io/tests/test_fortran.pytest_fortranfiles_readr2      sH   $)I/DEEFF % %I>"$OO 	QDxOPPPAGGAJJQWWQZZ#aggajj//B

""3,,#u--}}5}))11$c1BB				9RWT]]++33D99@@GGT8$$$$% %    c                     t          j        t          d          } t          | dd          5 }|                    d          }d d d            n# 1 swxY w Y   t          |d         d         d           t          |d         d         d	           t          |d
         d         d           t          |d         d         ddg           d S )Nzfortran-mixed.datr   r   z<i4,<f4,<i8,2<f8f0r   r   f1gffffff@f2r   f3gffffff@g333333@)r   r   r   r   r%   r   r   )r,   r/   records      r1   test_fortranfiles_mixed_recordr:   (   s    y$788H	XsE	*	* 3a1223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 a!$$$F4LOS)))a!$$$F4LOc3Z00000s   AAAc                     t          t          j        t          d                    D ]6} t	          j        d| t          j                  }|st          d| z            t          |	                    d                    t          |	                    d                    t          |	                    d                    f}|	                    d          
                    dd	          }t          j        t          j        |                                        |                              |          }t!          j                    }	 t          j        |t          j        |                     }t'          |d
d          }|                    |j                   |                                 t/          | d          }t/          |d          }	t1          |                                |	                                |            |                                 |	                                 t5          j        |           # t5          j        |           w xY wd S )Nr   r   r   r   r   r   r   r   r   wr   rb)err_msg)r   r   r   r   r   r   r    r!   r"   r#   r$   r(   r)   r*   r&   r+   tempfilemkdtempbasenamer   write_recordTr'   openr   readshutilrmtree)
r,   r-   r.   r   r   tmpdirtestFiler/   originalfilenewfiles
             r1   test_fortranfiles_writerL   3   s   $)I/DEEFF " "I>"$OO 	QDxOPPPAGGAJJQWWQZZ#aggajj//B

""3,,y''//55<<UCC!##	"yh(?(?@@HHc%00ANN46"""GGIII$//L8T**G**,,gllnn!)+ + + +   MMOOOM&!!!!FM&!!!!-" "s   C$IIc                     t          j        t          d          } t          | dd          5 }|                    dd          }d d d            n# 1 swxY w Y   t          j        d                              dd                              t
          j	                  }t          j
        dd	gt
          j        
          }t          |d         |j                   t          |d         |j                   d S )Nzfortran-3x3d-2i.datr   r   z(3,3)<f8z2<i4	   r   r   r   r   )r   r   r   r   r%   r(   r)   r&   r+   float64arrayint32r   rC   )r,   r/   r9   axbxs        r1   "test_fortranfile_read_mixed_recordrV   M   s    y$9::H	XsE	*	* 3az6223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
3		1	%	%	,	,RZ	8	8B	2r("(	+	+	+BBD!!!BD!!!!!s   AAAc                    t          j        t          |           d          }dt          j        d          t          j        d          t          j        d          ff}dt          j                            ddg	                              t          j                  t          j                            dddg	                              t          j                  t          j                            dd
g	                              t          j                  ff}||g}|D ]\  }}t          |d          5 } |j
        |  d d d            n# 1 swxY w Y   t          |d          5 } |j        | }d d d            n# 1 swxY w Y   t          t          |          t          |                     t          ||          D ]\  }	}
t          |
|	           d S )Ntest.dat)f4rY   i4r   r   d   )4f4z(3,3)f48i4   r   )size   r<   r   )r   r   strr(   float32rS   randomrandintr+   r   rB   r%   r   lenzip)rH   tfr1r2recordsr   ar/   baabbs              r1   #test_fortranfile_write_mixed_recordro   d   s-   	3v;;
	+	+B
rz!}}bjmmRXc]]K	LB
#9Ss++222:>>9S1v..55bjAA9Ss++2228<<>
?B 2hG 
! 
!qS!! 	QANA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 S!! 	&Qu%A	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	SVVSVV$$$!Qii 	! 	!FBR    	!
! 
!s$   :EE	E	,FF	
F	c                    t          j        t          |           d          }t          j                            d           d\  }}}t          j                            |||          }t          |d          5 }|                    |j	                   d d d            n# 1 swxY w Y   t          j        ||||          }t          |d          5 }|                    d          j	        }d d d            n# 1 swxY w Y   t          ||           t          ||           d\  }}}t          j                            |||                              t          j                  }t          |d          5 }|                    |j	                   d d d            n# 1 swxY w Y   t          j        ||||          }t          |d          5 }|                    d          j	        }d d d            n# 1 swxY w Y   t          ||           t          ||           d\  }}}t          j                            ||          }t          j                            |                              t          j                  }	t          |d          5 }|                    |j	        |	j	                   d d d            n# 1 swxY w Y   t          j        ||||          \  }}
t          |d          5 }|                    dd	          \  }}|j	        }d d d            n# 1 swxY w Y   t          ||           t          ||           t          |
|	           t          ||	           d S )
NrX   r   )   r   r   r<   r   z	(2,3,5)f8z	(2,3,5)i4z(3,5)f82i4)r   r   ra   r(   rc   seedrandnr   rB   rC   r   read_unformatted_doubler%   r   r+   rS   read_unformatted_intintcread_unformatted_mixed)rH   r,   r-   nkrk   r/   a2a3rl   b2b3s               r1   test_fortran_roundtripr   {   sj   yVj11HINN1 GAq!
	1a  A	Xs	#	# q	qs              		.q!Q	A	AB	Xs	#	# *q]];'')* * * * * * * * * * * * * * *QQ GAq!
	1a  ''11A	Xs	#	# q	qs              		+Aq!X	>	>B	Xs	#	# *q]];'')* * * * * * * * * * * * * * *QQ GAq!
	1A
	!!"'**A	Xs	#	# !q	qsAC   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1!Q8DDFB	Xs	#	# qy%00BT               QQQQsl   9B  B$'B$C99C= C=8FF#&F#G88G<?G<!KK	K7!L$$L(+L(c                    t          j        t          |           d          }t          j                            d           t          |d          5 }|                    t          j                            d                     |                    t          j                            d                     d d d            n# 1 swxY w Y   t          |d          5 }t          |
                                          dk    sJ t          |
                                          dk    sJ t          j        t                    5  |
                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nscratchr   r<   rq   r   r   )r   r   ra   r(   rc   rs   r   rB   rt   re   
read_realspytestraisesr	   rH   r,   r/   s      r1   test_fortran_eof_okr      s   yVi00HINN1	Xs	#	# +q	ryq))***	ryq))***+ + + + + + + + + + + + + + + 
Xs	#	# q1<<>>""a''''1<<>>""a'''']?++ 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sJ   A%CC
CA(E?E'E?'E+	+E?.E+	/E??FFc                    t          j        t          |           d          }t          j                            d           t          |d          5 }|                    t          j                            d                     |                    t          j                            d                     d d d            n# 1 swxY w Y   t          |d          5 }|
                    d           d d d            n# 1 swxY w Y   t          |d          5 }t          |                                          dk    sJ t          |                                          dk    sJ t          j        t                    5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   r<   rq   r   ab   r   )r   r   ra   r(   rc   rs   r   rB   rt   rD   writere   r   r   r   r
   r   s      r1   test_fortran_eof_broken_sizer      sk   yVi00HINN1	Xs	#	# +q	ryq))***	ryq))***+ + + + + + + + + + + + + + + 
h		 	              	Xs	#	# q1<<>>""a''''1<<>>""a'''']122 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s\   A%CC
CD  DDA(F<F$F<$F(	(F<+F(	,F<<G G c                    t          j        t          |           d          }t          j                            d           t          |d          5 }|                    t          j                            d                     |                    t          j                            d                     d d d            n# 1 swxY w Y   t          |d          5 }|
                    d           d d d            n# 1 swxY w Y   t          |d          5 }t          j        t                    5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   r<   rq   r   zw+bs   r   )r   r   ra   r(   rc   rs   r   rB   rt   rD   r   r   r   r
   r   r   s      r1   test_fortran_bogus_sizer      s)   yVi00HINN1	Xs	#	# +q	ryq))***	ryq))***+ + + + + + + + + + + + + + + 
h		 !	              	Xs	#	# q]122 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s[   A%CC
CD  DDE.5E
E.E	E.E	E..E25E2c                 n   t          j        t          |           d          }t          j                            d           t          |d          5 }|                    t          j                            d                     |                    t          j                            d                     d d d            n# 1 swxY w Y   t          |d          5 }|
                    t          j        |          dz
             d d d            n# 1 swxY w Y   t          |d          5 }t          |                                          dk    sJ t          j        t                     5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   r<   rq   r   r      r   )r   r   ra   r(   rc   rs   r   rB   rt   rD   truncategetsizere   r   r   r   r
   r   s      r1   test_fortran_eof_broken_recordr      sY   yVi00HINN1	Xs	#	# +q	ryq))***	ryq))***+ + + + + + + + + + + + + + + 
h		 .	

4<))",---. . . . . . . . . . . . . . .	Xs	#	# q1<<>>""a'''']122 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s\   A%CC
C+DDD0AF*1FF*F	F*F	F**F.1F.c                    t          j        t          |           d          }d\  }}}t          j        dt          j        ||ffg          }t          j        ||          }t          |d          5 }|                    |d                    |                    |           |                    |           d d d            n# 1 swxY w Y   t          |d          5 }|
                    t          j        |          dz
             d d d            n# 1 swxY w Y   t          |d	          5 }t          |                    |                    d
k    sJ t          |                    |                    |k    sJ t          j        t                     5  |                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   )r   rq      fieldr   r<   r   r   r   r   r   )r   r   ra   r(   r   rQ   zerosr   rB   rD   r   r   re   r%   r   r   r
   )rH   r,   ry   r-   qdtrk   r/   s           r1   !test_fortran_eof_multidimensionalr      s   yVi00HGAq!	GRZ!Q01	2	2B
"A	Xs	#	# q	qt	q	q               
h		 .	

4<))",---. . . . . . . . . . . . . . .	Xs	#	# $q1==r=**++q00001==r=**++q0000]122 	$ 	$MMM###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s\   3ACC	C	 +DDD2A,GG5GG	GG		GG G)"__doc__r?   rF   osr   globr   r   numpy.testingr   r   numpyr(   r   scipy.ior   r   r	   r
   r   dirname__file__r   r2   r:   rL   rV   ro   r   r   r   r   r   r    r3   r1   <module>r      s   * *               				 7 7 7 7 7 7 7 7     . . . . . . . . . . . . DIldl8,,f55	% % %$1 1 1" " "4" " ".! ! !.( ( (V
 
 
  
 
 
  $ $ $ $ $r3   