
    _Mh!                     "   d Z 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 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ej        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          j                    S )N)	threadingLock     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/io/tests/test_fortran.pyio_lockr      s    >r   c                 p   t          t          j        t          d                    D ]}t	          j        d|t          j                  }|st          d| d          t          |	                    d                    t          |	                    d                    t          |	                    d                    f}|	                    d          
                    d	d
          }| 5  t          |dd          }|                    |                              |d          }|                                 d d d            n# 1 swxY w Y   t          j        t          j        |                                        |                              |          }t'          ||           d S )Nfortran-*-*x*x*.dat%fortran-([^-]+)-(\d+)x(\d+)x(\d+).datCouldn't match  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   )r   filenamemdimsr!   fr   expecteds           r   test_fortranfiles_readr9      s   $)I/DEEFF % %I>"$OO 	OMMMMNNNAGGAJJQWWQZZ#aggajj//B

""3,, 	 	Hc511A==u=--55d#5FFDGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 9RWT]]++33D99@@GGT8$$$$% %s   0AEE	E	c                    t          j        t          d          }| 5  t          |dd          5 }|                    d          }d d d            n# 1 swxY w Y   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   r4   r7   records       r   test_fortranfiles_mixed_recordr@   0   sQ   y$788H	 7 73.. 	7!]]#566F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 a!$$$F4LOS)))a!$$$F4LOc3Z00000s4   A(AA(A	A(A	A((A,/A,c                     t          t          j        t          d                    D ]V} t	          j        d| t          j                  }|st          d|  d          t          |	                    d                    t          |	                    d                    t          |	                    d                    f}|	                    d          
                    d	d
          }t          j        t          j        |                                        |                              |          }t!          j                    }	 t          j        t%          t'          j                              |t          j        |                     }t-          |dd          }|                    |j                   |                                 t5          | d          }t5          |d          }	t7          |                                |	                                |            |                                 |	                                 t;          j        |           ?# t;          j        |           w xY wd S )Nr   r   r   r   r   r   r   r   r   r   wr   rb)err_msg)r   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r0   r1   r2   r.   r3   tempfilemkdtempstrr   get_native_idbasenamer   write_recordTr/   openr   readshutilrmtree)
r4   r5   r6   r!   r   tmpdirtestFiler7   originalfilenewfiles
             r   test_fortranfiles_writerT   <   s	   $)I/DEEFF " "I>"$OO 	OMMMMNNNAGGAJJQWWQZZ#aggajj//B

""3,,y''//55<<UCC!##	"yY%<%>%>!?!?!'h(?(?A AHHc%00ANN46"""GGIII$//L8T**G**,,gllnn!)+ + + +   MMOOOM&!!!!FM&!!!!/" "s   DI''I=c                 &   t          j        t          d          }| 5  t          |dd          5 }|                    dd          }d d d            n# 1 swxY w Y   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-   r0   r1   r.   r3   float64arrayint32r   rK   )r   r4   r7   r?   axbxs         r   "test_fortranfile_read_mixed_recordr^   W   sc    y$9::H	 7 73.. 	7!]]:v66F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
3		1	%	%	,	,RZ	8	8B	2r("(	+	+	+BBD!!!BD!!!!!s4   A)AA)A	A)A	A))A-0A-c                 P   t          j        t          |           t          t          j                              d          }t          j        t          j        |          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.datTexist_ok)f4rc   i4r   r   d   )4f4z(3,3)f48i4   r   )size   rB   r   )r   r$   rG   r   rH   osmakedirsdirnamer0   float32r[   randomrandintr3   r   rJ   r-   r   lenzip)rP   tfr1r2recordsr!   ar7   baabbs              r   #test_fortranfile_write_mixed_recordr{   o   s_   	3v;;I$;$=$= > >
	K	KBKR  40000
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$   FF	F	3G

G	G	c                    t          j        t          |           t          t          j                              d          }t          j        t          j        |          d           t          j	        
                    d          }d\  }}}|                    |||          }t          |d          5 }|                    |j                   d d d            n# 1 swxY w Y   |5  t          j        ||||          }	d d d            n# 1 swxY w Y   t          |d          5 }|                    d          j        }
d d d            n# 1 swxY w Y   t%          |	|           t%          |
|           d\  }}}|                    |||                              t          j                  }t          |d          5 }|                    |j                   d d d            n# 1 swxY w Y   |5  t          j        ||||          }	d d d            n# 1 swxY w Y   t          |d          5 }|                    d	          j        }
d d d            n# 1 swxY w Y   t%          |	|           t%          |
|           d\  }}}|                    ||          }|                    |                              t          j                  }t          |d          5 }|                    |j        |j                   d d d            n# 1 swxY w Y   |5  t          j        ||||          \  }	}d d d            n# 1 swxY w Y   t          |d          5 }|                    d
d          \  }
}|
j        }
d d d            n# 1 swxY w Y   t%          |	|           t%          |
|           t%          ||           t%          ||           d S )Nr`   Tra   r   )   r   r   rB   r   z	(2,3,5)f8z	(2,3,5)i4z(3,5)f82i4)r   r$   rG   r   rH   rk   rl   rm   r0   ro   RandomStaterandnr   rJ   rK   r   read_unformatted_doubler-   r   r3   r[   read_unformatted_intintcread_unformatted_mixed)rP   r   r4   rngr5   nkrw   r7   a2a3rx   b2b3s                 r   test_fortran_roundtripr      s   yVc)*A*C*C&D&D#% %HKX&&6666
)


"
"C GAq!		!QA	Xs	#	# q	qs              	 F F21aHEEF F F F F F F F F F F F F F F 
Xs	#	# *q]];'')* * * * * * * * * * * * * * *QQ GAq!		!Q!!"(++A	Xs	#	# q	qs              	 C C/1aBBC C C C C C C C C C C C C C C	Xs	#	# *q]];'')* * * * * * * * * * * * * * *QQ GAq!		!QA		!BG$$A	Xs	#	# !q	qsAC   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	 I I5aAxHHBI I I I I I I I I I I I I I I	Xs	#	# qy%00BT               QQQQs   6CC!$C!*DDD)EEEG,,G03G09HH!$H!8II#&I#(!LLL"M		MM$!NNNc                 ~   t          j        t          |           t          t          j                              d          }t          j        t          j        |          d           t          j	        
                    d          }t          |d          5 }|                    |                    d                     |                    |                    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scratchTra   r   rB   r}   r   r   )r   r$   rG   r   rH   rk   rl   rm   r0   ro   r   r   rJ   r   rq   
read_realspytestraisesr	   rP   r4   r   r7   s       r   test_fortran_eof_okr      s&   yVc)*A*C*C&D&D"$ $HKX&&6666
)


"
"C	Xs	#	# %q	syy||$$$	syy||$$$% % % % % % % % % % % % % % % 
Xs	#	# q1<<>>""a''''1<<>>""a'''']?++ 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sJ   AC66C:=C:A(F29FF2F	F2!F	"F22F69F6c                    t          j        t          |           t          t          j                              d          }t          j        t          j        |          d           t          j	        
                    d          }t          |d          5 }|                    |                    d                     |                    |                    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   Tra   r   rB   r}   r   ab   r   )r   r$   rG   r   rH   rk   rl   rm   r0   ro   r   r   rJ   r   rL   writerq   r   r   r   r
   r   s       r   test_fortran_eof_broken_sizer      s   yVc)*A*C*C&D&D"$ $HKX&&6666
)


"
"C	Xs	#	# %q	syy||$$$	syy||$$$% % % % % % % % % % % % % % % 
h		 	              	Xs	#	# q1<<>>""a''''1<<>>""a'''']122 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s\   AC66C:=C:D33D7:D7A(G/6GG/G	G/G	G//G36G3c                 \   t          j        t          |           t          t          j                              d          }t          j        t          j        |          d           t          j	        
                    d          }t          |d          5 }|                    |                    d                     |                    |                    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   Tra   r   rB   r}   r   zw+bs   r   )r   r$   rG   r   rH   rk   rl   rm   r0   ro   r   r   rJ   r   rL   r   r   r   r
   r   r   s       r   test_fortran_bogus_sizer      sY   yVc)*A*C*C&D&D"$ $HKX&&6666
)


"
"C	Xs	#	# %q	syy||$$$	syy||$$$% % % % % % % % % % % % % % % 
h		 !	              	Xs	#	# q]122 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s[   AC66C:=C:D33D7:D7F!(F	=F!	F	F!F	F!!F%(F%c                    t          j        t          |           t          t          j                              d          }t          j        t          j        |          d           t          j	        
                    d          }t          |d          5 }|                    |                    d                     |                    |                    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   Tra   r   rB   r}   r   r      r   )r   r$   rG   r   rH   rk   rl   rm   r0   ro   r   r   rJ   r   rL   truncategetsizerq   r   r   r   r
   r   s       r   test_fortran_eof_broken_recordr      s   yVc)*A*C*C&D&D"$ $HKX&&6666
)


"
"C	Xs	#	# %q	syy||$$$	syy||$$$% % % % % % % % % % % % % % % 
h		 .	

4<))",---. . . . . . . . . . . . . . .	Xs	#	# q1<<>>""a'''']122 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s\   AC66C:=C:+EEE#AG$G9GG			GG		GG!$G!c                 Z   t          j        t          |           t          t          j                              d          }t          j        t          j        |          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   Tra   )r   r}      fieldr    rB   r   r   r   r   r   )r   r$   rG   r   rH   rk   rl   rm   r0   r!   rY   zerosr   rJ   rL   r   r   rq   r-   r   r   r
   )rP   r4   r   r5   qdtrw   r7   s           r   !test_fortran_eof_multidimensionalr      s   yVc)*A*C*C&D&D"$ $HKX&&6666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\   :ADDD'+EE"%E"9A,H %H<H H	H H	H  H$'H$)%__doc__rE   rN   rk   r   globr   r   r&   numpy.testingr   r   numpyr0   r   scipy.ior   r   r	   r
   r$   rm   __file__r%   fixturer   r9   r@   rT   r^   r{   r   r   r   r   r   r   r   r   r   <module>r      s   * *   				                 				 7 7 7 7 7 7 7 7     . . . . . . . . . . . . DIldl8,,f55	   % % %&	1 	1 	1" " "6" " "0! ! !0. . .b    "     $ $ $ $ $r   