
    (ph!                     ,   S r SSKrSSKrSSKrSSKJr  SSKJr  SSKrSSKrSSK	J
r
Jr  SSKrSSKrSSKJrJrJrJr  \R(                  " \R*                  " \5      S5      r\R0                  S 5       rS	 rS
 rS rS rS rS rS r S r!S r"S r#S r$g)z#Tests for fortran sequential files     N)path)iglob)assert_equalassert_allclose)FortranFile_test_fortranFortranEOFErrorFortranFormattingErrordatac                  ,    [         R                  " 5       $ )N)	threadingLock     N/var/www/html/venv/lib/python3.13/site-packages/scipy/io/tests/test_fortran.pyio_lockr      s    >>r   c                    [        [        R                  " [        S5      5       GHG  n[        R
                  " SU[        R                  5      nU(       d  [        SU S35      e[        UR                  S5      5      [        UR                  S5      5      [        UR                  S5      5      4nUR                  S5      R                  S	S
5      nU    [        USS5      nUR                  US9R                  USS9nUR                  5         S S S 5        [        R                   " [        R"                  " U5      5      R                  U5      R%                  U5      n['        WU5        GMJ     g ! , (       d  f       Nh= f)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FII>"$$O
:LMNNAGGAJQWWQZ#aggaj/B
""3,Hc51A==u=-55d#5FDGGI 
 99RWWT]+33D9@@GT8$ G Ws   ;E22
F 	c                 v   [         R                  " [        S5      nU    [        USS5       nUR	                  S5      nS S S 5        S S S 5        [        WS   S   S5        [        US   S   S	5        [        US
   S   S5        [        US   S   SS/5        g ! , (       d  f       Na= f! , (       d  f       Nj= f)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   s    yy$78H	3.!]]#56F / 
 a!$F4LOS)a!$F4LOc3Z0 /. 
s!   B*BB*
B'	#B**
B8c                     [        [        R                  " [        S5      5       GH  n [        R
                  " SU [        R                  5      nU(       d  [        SU  S35      e[        UR                  S5      5      [        UR                  S5      5      [        UR                  S5      5      4nUR                  S5      R                  S	S
5      n[        R                  " [        R                  " U5      5      R                  U5      R                  U5      n[         R"                  " 5       n [        R                  " [%        [&        R(                  " 5       5      U[        R*                  " U 5      5      n[-        USS5      nUR/                  UR0                  5        UR3                  5         [5        U S5      n[5        US5      n	[7        UR9                  5       U	R9                  5       U S9  UR3                  5         U	R3                  5         [:        R<                  " U5        GM     g ! [:        R<                  " U5        f = f)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FII>"$$O
:LMNNAGGAJQWWQZ#aggaj/B
""3,yy'//5<<UC!!#	"yyY%<%<%>!?!'h(?AHHc%0ANN466"GGI$/L8T*G**,glln!)+ MMOMM&!/ G. MM&!s   1CH,,Ic                    [         R                  " [        S5      nU    [        USS5       nUR	                  SS5      nS S S 5        S S S 5        [
        R                  " S5      R                  SS5      R                  [
        R                  5      n[
        R                  " SS	/[
        R                  S
9n[        WS   UR                  5        [        US   UR                  5        g ! , (       d  f       N= f! , (       d  f       N= f)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   s     yy$9:H	3.!]]:v6F / 
 
3		1	%	,	,RZZ	8B	2r("((	+BBDD!BDD! /. 
s!   C;C*C;*
C8	4C;;
D	c                 ,   [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  S[        R                  " S5      [        R                  " S5      [        R                  " S5      44nS[        R                  R                  S	S
/S9R                  [        R                  5      [        R                  R                  S	SS/S9R                  [        R                  5      [        R                  R                  S	S/S9R                  [        R                  5      44nX#/nU H  u  pV[        US5       nUR                  " U6   S S S 5        [        US5       nUR                   " U6 nS S S 5        [#        [%        U5      [%        W5      5        ['        Xh5       H  u  p[#        X5        M     M     g ! , (       d  f       Nt= f! , (       d  f       Na= f)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$;$;$= >
	KBKKR 40
rzz!}bjjmRXXc]K	LB
#99Ss+222::>99S1v.55bjjA99Ss+22288<>
?B hGS!QNNA " S!Qu%A " 	SVSV$!iFB    !! "!s   6G4H4
H	
H	c                 T   [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  [        R                  R                  S5      nSu  pEnUR                  XEU5      n[        US5       nUR                  UR                  5        S S S 5        U   [        R                   " XEXb5      n	S S S 5        [        US5       nUR#                  S5      R                  n
S S S 5        [%        W	U5        [%        W
U5        Su  pEnUR                  XEU5      R'                  [        R(                  5      n[        US5       nUR                  UR                  5        S S S 5        U   [        R*                  " XEXb5      n	S S S 5        [        US5       nUR#                  S	5      R                  n
S S S 5        [%        X5        [%        X5        Su  pEnUR                  XE5      nUR                  U5      R'                  [        R,                  5      n[        US5       nUR                  UR                  UR                  5        S S S 5        U   [        R.                  " XEXb5      u  pS S S 5        [        US5       nUR#                  S
S5      u  pU
R                  n
S S S 5        [%        X5        [%        X5        [%        WU5        [%        WU5        g ! , (       d  f       GNL= f! , (       d  f       GN<= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)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   yyVc)*A*A*C&D#%HKKX&6
))


"C GA!		!A	Xs	#q	qss 
$	221E 
 
Xs	#q]];')) 
$QQ GA!		!!!"((+A	Xs	#q	qss 
$	//aB 
	Xs	#q]];')) 
$ GA!		!A		!BGG$A	Xs	#q	qssACC  
$	55aAH 
	Xs	#qy%0TT 
$ QQI 
$	#	 
$	# 
$	#		#	# 
$	#		#	#sl   )L
L;L.7M M	M$'M6N2!N

L
L+.
L= 
M
M!$
M36
N
N
N'c                 *   [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  [        R                  R                  S5      n[        US5       nUR                  UR                  S5      5        UR                  UR                  S5      5        S S S 5        [        US5       n[        UR                  5       5      S:X  d   e[        UR                  5       5      S:X  d   e[         R"                  " [$        5         UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)	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
   yyVc)*A*A*C&D"$HKKX&6
))


"C	Xs	#q	syy|$	syy|$ 
$ 
Xs	#q1<<>"a'''1<<>"a''']]?+LLN , 
$	# 
$	# ,+ 
$	#s2   AE"'AF E3F"
E03
F	=F
Fc                    [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  [        R                  R                  S5      n[        US5       nUR                  UR                  S5      5        UR                  UR                  S5      5        S S S 5        [        US5       nUR                  S	5        S S S 5        [        US
5       n[!        UR#                  5       5      S:X  d   e[!        UR#                  5       5      S:X  d   e[$        R&                  " [(        5         UR#                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)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      s1   yyVc)*A*A*C&D"$HKKX&6
))


"C	Xs	#q	syy|$	syy|$ 
$ 
h		 
	Xs	#q1<<>"a'''1<<>"a''']]12LLN 3 
$	# 
$	# 
	
 32 
$	#s>   AF'FAF;&F*7F;
F
F'*
F8	4F;;
G	c                    [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  [        R                  R                  S5      n[        US5       nUR                  UR                  S5      5        UR                  UR                  S5      5        S S S 5        [        US5       nUR                  S	5        S S S 5        [        US
5       n[         R"                  " [$        5         UR'                  5         S S S 5        S S S 5        g ! , (       d  f       N}= f! , (       d  f       Nh= f! , (       d  f       N9= f! , (       d  f       g = f)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      s    yyVc)*A*A*C&D"$HKKX&6
))


"C	Xs	#q	syy|$	syy|$ 
$ 
h	!	 
	Xs	#q]]12LLN 3 
$	# 
$	# 
	 32 
$	#s=   AE
'EE=(E,9E=

E
E),
E:	6E==
Fc                    [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  [        R                  R                  S5      n[        US5       nUR                  UR                  S5      5        UR                  UR                  S5      5        S S S 5        [        US5       nUR                  [         R                   " U5      S	-
  5        S S S 5        [        US
5       n[#        UR%                  5       5      S:X  d   e[&        R(                  " [*        5         UR%                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)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&   yyVc)*A*A*C&D"$HKKX&6
))


"C	Xs	#q	syy|$	syy|$ 
$ 
h		

4<<)",- 
	Xs	#q1<<>"a''']]12LLN 3 
$	# 
$	# 
	 32 
$	#s=   AF ')F$:F3F"/F3 
F
F"
F0	,F33
Gc                    [         R                  " [        U 5      [        [        R                  " 5       5      S5      n[
        R                  " [         R                  " U5      SS9  Su  p#n[        R                  " S[        R                  X#44/5      n[        R                  " XES9n[        US5       nUR                  US   5        UR                  U5        UR                  U5        S S S 5        [        US	5       nUR                  [         R                   " U5      S
-
  5        S S S 5        [        US5       n[#        UR%                  US95      S:X  d   e[#        UR%                  US95      U:X  d   e[&        R(                  " [*        5         UR%                  US9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)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      so   yyVc)*A*A*C&D"$HKKX&6GA!	GRZZ!01	2B
A	Xs	#q	qt	q	q 
$ 
h		

4<<)",- 
	Xs	#q1==r=*+q0001==r=*+q000]]12MMM# 3 
$	# 
$	# 
	
 32 
$	#s=   57F5 )G=AG(G$G(5
G
G
G%	!G((
G6)%__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  . . IIdll8,f5	  %&	1"6"0!0.b" $r   