
    5[gk                         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!y)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 ]8  } t	        j
                  d| t        j                        }|st        d| z        t        |j                  d            t        |j                  d            t        |j                  d            f}|j                  d      j                  dd	      }t        | d
d      }|j                  |      j                  |d      }|j                          t        j                   t        j"                  |            j                  |      j%                  |      }t'        ||       ; y )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          V/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/io/tests/test_fortran.pytest_fortranfiles_readr2      s    $))I/DEFII>"$$ODxOPPAGGAJQWWQZ#aggaj/B
""3,#u-}}5})11$c1B		99RWWT]+33D9@@GT8$ G    c                  2   t        j                  t        d      } t        | dd      5 }|j	                  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   Tx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,   r/   records      r1   test_fortranfiles_mixed_recordr:   (   s    yy$78H	XsE	*a12 
+ a!$F4LOS)a!$F4LOc3Z0 
+	*s   BBc                  8   t        t        j                  t        d            D ]  } t	        j
                  d| t        j                        }|st        d| z        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        j$                  |             }t'        |d
d      }|j)                  |j*                         |j-                          t/        | d      }t/        |d      }	t1        |j3                         |	j3                         |        |j-                          |	j-                          t5        j6                  |        y # t5        j6                  |       w xY w)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   sy   $))I/DEFII>"$$ODxOPPAGGAJQWWQZ#aggaj/B
""3,yy'//5<<UC!!#	"yyh(?@HHc%0ANN466"GGI$/L8T*G**,glln!)+ MMOMM&!- G, MM&!s   &CHHc                     t        j                  t        d      } t        | dd      5 }|j	                  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)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     yy$9:H	XsE	*az62 
+ 
3		1	%	,	,RZZ	8B	2r("((	+BBDD!BDD! 
+	*s   CC(c                    t        j                  t        |       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.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   se   	3v;
	+B
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$!QiFBR    !! "!s   7F4G 4F=	 G		c                 j   t        j                  t        |       d      }t        j                  j                  d       d\  }}}t        j                  j                  |||      }t        |d      5 }|j                  |j                         d d d        t        j                  ||||      }t        |d      5 }|j                  d      j                  }d d d        t        ||       t        |       d\  }}}t        j                  j                  |||      j                  t        j                        }t        |d      5 }|j                  |j                         d d d        t        j                   ||||      }t        |d      5 }|j                  d      j                  }d d d        t        ||       t        ||       d\  }}}t        j                  j                  ||      }t        j                  j                  |      j                  t        j"                        }	t        |d      5 }|j                  |j                  |	j                         d d d        t        j$                  ||||      \  }}
t        |d      5 }|j                  dd	      \  }}|j                  }d d d        t        ||       t        ||       t        |
|	       t        |	       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   hxY w# 1 sw Y   xY w# 1 sw Y   zxY w)
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   {   sm   yyVj1HIINN1 GAq!
		1a A	Xs	#q	qss 
$		.	.q!Q	AB	Xs	#q]];')) 
$QQ GAq!
		1a ''1A	Xs	#q	qss 
$		+	+Aq!X	>B	Xs	#q]];')) 
$QQ GAq!
		1A
		!!"''*A	Xs	#q	qssACC  
$11!Q8DFB	Xs	#qy%0BTT 
$ QQQQA 
$	# 
$	# 
$	# 
$	# 
$	# 
$	#sH   2K):K6LL8'L"L))K36L LLL&)L2c                    t        j                  t        |       d      }t        j                  j                  d       t        |d      5 }|j                  t        j                  j                  d             |j                  t        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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    yyVi0HIINN1	Xs	#q	ryyq)*	ryyq)* 
$ 
Xs	#q1<<>"a'''1<<>"a''']]?+LLN , 
$	# 
$	# ,+ 
$	#s2   AD4<AEE #E4D= E		EEc                    t        j                  t        |       d      }t        j                  j                  d       t        |d      5 }|j                  t        j                  j                  d             |j                  t        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   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      s   yyVi0HIINN1	Xs	#q	ryyq)*	ryyq)* 
$ 
h		 
	Xs	#q1<<>"a'''1<<>"a''']]12LLN 3 
$	# 
$	# 
	
 32 
$	#s>   AE<E&"AE>8E2	E>E#&E/2E;	7E>>Fc                    t        j                  t        |       d      }t        j                  j                  d       t        |d      5 }|j                  t        j                  j                  d             |j                  t        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   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    yyVi0HIINN1	Xs	#q	ryyq)*	ryyq)* 
$ 
h	!	 
	Xs	#q]]12LLN 3 
$	# 
$	# 
	 32 
$	#s=   AD<D*"E<D6ED'*D36D?	;EEc                    t        j                  t        |       d      }t        j                  j                  d       t        |d      5 }|j                  t        j                  j                  d             |j                  t        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   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      s   yyVi0HIINN1	Xs	#q	ryyq)*	ryyq)* 
$ 
h		

4<<)",- 
	Xs	#q1<<>"a''']]12LLN 3 
$	# 
$	# 
	 32 
$	#s=   AE<(E88E60E*E6EE'*E3	/E66E?c                 N   t        j                  t        |       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   )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      sK   yyVi0H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# 3 
$	# 
$	# 
	
 32 
$	#s=   27E7=(F9AFF&F7F FF	FF$)"__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  . . DIIldll8,f5	%$1"4".!.(V

$r3   