
    e!h!                     ,   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j0                  d        Zd	 Zd
 Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$y)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     c/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/io/tests/test_fortran.pyio_lockr      s    >>r   c                    t        t        j                  t        d            D ]D  }t	        j
                  d|t        j                        }|st        d| d      t        |j                  d            t        |j                  d            t        |j                  d            f}|j                  d      j                  d	d
      }| 5  t        |dd      }|j                  |      j                  |d      }|j                          d d d        t        j                   t        j"                  |            j                  |      j%                  |      }t'        |       G y # 1 sw Y   _xY w)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$%	 	s   AE--E6	c                 `   t        j                  t        d      }| 5  t        |dd      5 }|j	                  d      }d d d        d d d        t        d   d   d       t        |d   d   d	       t        |d
   d   d       t        |d   d   ddg       y # 1 sw Y   \xY w# 1 sw Y   `xY w)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	 73. 	7!]]#56F	77 a!$F4LOS)a!$F4LOc3Z0	7 	77 7s!   B$BB$B!	B$$B-c                  r   t        t        j                  t        d            D ]  } t	        j
                  d| t        j                        }|st        d|  d      t        |j                  d            t        |j                  d            t        |j                  d            f}|j                  d      j                  d	d
      }t        j                  t        j                  |            j                  |      j                  |      }t!        j"                         }	 t        j                  t%        t'        j(                               |t        j*                  |             }t-        |dd      }|j/                  |j0                         |j3                          t5        | d      }t5        |d      }	t7        |j9                         |	j9                         |        |j3                          |	j3                          t;        j<                  |        y # t;        j<                  |       w xY w)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&!/". MM&!s   'CHH6c                    t        j                  t        d      }| 5  t        |dd      5 }|j	                  dd      }d d d        d d d        t        j                  d      j                  dd      j                  t
        j                        }t        j                  dd	gt
        j                  
      }t        d   |j                         t        |d   |j                         y # 1 sw Y   xY w# 1 sw Y   xY w)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	 73. 	7!]]:v6F	77 
3		1	%	,	,RZZ	8B	2r("((	+BBDD!BDD!	7 	77 7s!   C6C*C6*C3	/C66C?c                 $   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                  j                  d	d
g      j                  t        j                        t        j                  j                  d	ddg      j                  t        j                        t        j                  j                  d	dg      j                  t        j                        ff}||g}|D ]  \  }}t        |d      5 } |j                  |  d d d        t        |d      5 } |j                   | }d d d        t#        t%        |      t%                     t'        ||      D ]  \  }	}
t#        |
|	         y # 1 sw Y   nxY w# 1 sw Y   VxY w)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 2hG 
!qS! 	QANNA	 S! 	&Qu%A	& 	SVSV$!Qi 	!FBR 	!
!	 		& 	&s   =G:!H:H	H	c                    t        j                  t        |       t        t        j                               d      }t        j                  t        j                  |      d       t        j                  j                  d      }d\  }}}|j                  |||      }t        |d      5 }|j                  |j                         d d d        |5  t        j                   ||||      }	d d d        t        |d      5 }|j#                  d      j                  }
d d d        t%        	|       t%        
|       d\  }}}|j                  |||      j'                  t        j(                        }t        |d      5 }|j                  |j                         d d d        |5  t        j*                  ||||      }	d d d        t        |d      5 }|j#                  d	      j                  }
d d d        t%        |	|       t%        |
|       d\  }}}|j                  ||      }|j                  |      j'                  t        j,                        }t        |d      5 }|j                  |j                  |j                         d d d        |5  t        j.                  ||||      \  }	}d d d        t        |d      5 }|j#                  d
d      \  }
}|
j                  }
d d d        t%        |	|       t%        |
|       t%        |       t%        |       y # 1 sw Y   TxY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)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 GAq!		!QA	Xs	# q	qss	 F221aHEF 
Xs	# *q]];'))*QQ GAq!		!Q!!"((+A	Xs	# q	qss	 C//1aBC	Xs	# *q]];'))*QQ GAq!		!QA		!BGG$A	Xs	# !q	qssACC !	 I55aAxHBI	Xs	# qy%0BTT QQQQI F F* * C C* *! !I I sl   *LL%=L2;L?!MM'M&M2="M>L"%L/2L<?M	MM#&M/2M;>Nc                    t        j                  t        |       t        t        j                               d      }t        j                  t        j                  |      d       t        j                  j                  d      }t        |d      5 }|j                  |j                  d             |j                  |j                  d             d d d        t        |d      5 }t        |j                               dk(  sJ t        |j                               dk(  sJ t!        j"                  t$              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	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E6<E*E6E'*E3	/E66E?c                 h   t        j                  t        |       t        t        j                               d      }t        j                  t        j                  |      d       t        j                  j                  d      }t        |d      5 }|j                  |j                  d             |j                  |j                  d             d d d        t        |d      5 }|j                  d	       d d d        t        |d
      5 }t!        |j#                               dk(  sJ t!        |j#                               dk(  sJ t%        j&                  t(              5  |j#                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)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      sO   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	 % % 
	 	 s>   AF&FAF("F3F(FFF%	!F((F1c                    t        j                  t        |       t        t        j                               d      }t        j                  t        j                  |      d       t        j                  j                  d      }t        |d      5 }|j                  |j                  d             |j                  |j                  d             d d d        t        |d      5 }|j                  d	       d d d        t        |d
      5 }t!        j"                  t$              5  |j'                          d d d        d d d        y # 1 sw Y   wxY w# 1 sw Y   ]xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)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	 % % 	 	 s=   AE&EE,&E 7E,EE E)	%E,,E5c                 X   t        j                  t        |       t        t        j                               d      }t        j                  t        j                  |      d       t        j                  j                  d      }t        |d      5 }|j                  |j                  d             |j                  |j                  d             d d d        t        |d      5 }|j                  t        j                   |      d	z
         d d d        t        |d
      5 }t#        |j%                               dk(  sJ t'        j(                  t*              5  |j%                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)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      sD   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	 % %. .	 	 s=   AE<&(F"8F F+F <FFF	F  F)c                    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 }|j                  |d          |j                  |       |j                  |       d d d        t        |d	      5 }|j                  t        j                   |      d
z
         d d d        t        |d      5 }t#        |j%                  |            dk(  sJ t#        |j%                  |            |k(  sJ t'        j(                  t*              5  |j%                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)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   yyVc)*A*A*C&D"$HKKX&6GAq!	GRZZ!Q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#	$$ $ . .
	$ 	$$ $s=   87F=(G	?AG!G,G!=G	GG	G!!G*)%__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  . . DIIldll8,f5	  %&	1"6"0!0.b" $r   