o
    Ö­j¡!  ã                   @   sø   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 e e¡d¡Zejdd	„ ƒZd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd„ Z$dS ) z$ Tests for fortran sequential files é    N)Úpath)Úiglob)Úassert_equalÚassert_allclose)ÚFortranFileÚ_test_fortranÚFortranEOFErrorÚFortranFormattingErrorÚdatac                   C   s   t  ¡ S )N)Ú	threadingÚLock© r   r   úX/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/io/tests/test_fortran.pyÚio_lock   s   r   c              	   C   sì   t t td¡ƒD ]k}t d|tj¡}|std|› d�ƒ‚t| 	d¡ƒt| 	d¡ƒt| 	d¡ƒf}| 	d¡ 
d	d
¡}| � t|ddƒ}|j|d�j|dd�}| ¡  W d   ƒ n1 s[w   Y  t t |¡¡ |¡ |¡}t||ƒ q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
   Úexpectedr   r   r   Útest_fortranfiles_read   s   (
ýñr5   c              	   C   s¶   t  td¡}| �# t|ddƒ�}| d¡}W d   ƒ n1 sw   Y  W d   ƒ n1 s.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   r0   r3   Úrecordr   r   r   Útest_fortranfiles_mixed_record0   s   ÿ€ÿr;   c            
   
   C   s,  t t td¡ƒD ]‹} t d| tj¡}|std| › d�ƒ‚t| 	d¡ƒt| 	d¡ƒt| 	d¡ƒf}| 	d¡ 
d	d
¡}t t |¡¡ |¡ |¡}t ¡ }zBt tt ¡ ƒ|t | ¡¡}t|ddƒ}| |j¡ | ¡  t| dƒ}t|dƒ}	t| ¡ |	 ¡ | d� | ¡  |	 ¡  W t |¡ qt |¡ 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(   r,   r-   r.   r*   r/   ÚtempfileÚmkdtempÚstrr   Úget_native_idÚbasenamer   Úwrite_recordÚTr+   Úopenr   ÚreadÚshutilÚrmtree)
r0   r1   r2   r   r
   ÚtmpdirÚtestFiler3   ÚoriginalfileÚnewfiler   r   r   Útest_fortranfiles_write<   s0   (
ÿ

ÿ
érN   c              	   C   sº   t  td¡}| �$ t|ddƒ�}| dd¡}W d   ƒ n1 s w   Y  W d   ƒ n1 s/w   Y  t d¡ dd¡ tj	¡}tj
dd	gtjd
�}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   rE   )r   r0   r3   r:   ÚaxÚbxr   r   r   Ú"test_fortranfile_read_mixed_recordW   s   ÿ€ÿrW   c              	   C   sR  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� dt 	d¡t 	d¡t 
d¡ff}dtjjd	d
gd� tj	¡tjjd	ddgd� tj	¡tjjd	dgd� tj
¡ff}||g}|D ]P\}}t|dƒ�}|j|Ž  W d   ƒ n1 sow   Y  t|dƒ�}|j|Ž }W d   ƒ n1 s‰w   Y  tt|ƒt|ƒƒ t||ƒD ]	\}	}
t|
|	ƒ qœqVd S )Nútest.datT©Úexist_ok)Úf4r[   Úi4r   r   éd   )Ú4f4z(3,3)f4Ú8i4éÿ   r   )Úsizeé   r<   r   )r   r    rA   r   rB   ÚosÚmakedirsÚdirnamer,   Úfloat32rT   ÚrandomÚrandintr/   r   rD   r)   r   ÚlenÚzip)rJ   ÚtfÚr1Úr2Úrecordsr   Úar3   ÚbÚaaÚbbr   r   r   Ú#test_fortranfile_write_mixed_recordo   s,    þÿÿÿÿ÷rs   c                 C   sæ  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� tj	 
d¡}d\}}}| |||¡}t|dƒ�}| |j¡ W d   ƒ n1 s?w   Y  |� t ||||¡}	W d   ƒ n1 sYw   Y  t|dƒ�}| d¡j}
W d   ƒ n1 stw   Y  t|	|ƒ t|
|ƒ d\}}}| |||¡ tj¡}t|dƒ�}| |j¡ W d   ƒ n1 s©w   Y  |� t ||||¡}	W d   ƒ n1 sÃw   Y  t|dƒ�}| d	¡j}
W d   ƒ n1 sÞw   Y  t|	|ƒ t|
|ƒ d\}}}| ||¡}| |¡ tj¡}t|dƒ�}| |j|j¡ W d   ƒ n	1 �sw   Y  |� t ||||¡\}	}W d   ƒ n	1 �s7w   Y  t|dƒ�}| d
d¡\}
}|
j}
W d   ƒ n	1 �sXw   Y  t|	|ƒ t|
|ƒ t||ƒ t||ƒ d S )NrX   TrY   r   )é   r   r   r<   r   z	(2,3,5)f8z	(2,3,5)i4z(3,5)f8Ú2i4)r   r    rA   r   rB   rc   rd   re   r,   rg   ÚRandomStateÚrandnr   rD   rE   r   Úread_unformatted_doubler)   r   r/   rT   Úread_unformatted_intÚintcÚread_unformatted_mixed)rJ   r   r0   Úrngr1   ÚnÚkro   r3   Úa2Úa3rp   Úb2Úb3r   r   r   Útest_fortran_roundtrip‡   s`   ÿ
ÿÿÿ


ÿÿÿ


ÿÿþ


rƒ   c              	   C   s  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� tj	 
d¡}t|dƒ�}| | d¡¡ | | d¡¡ W d   ƒ n1 s=w   Y  t|dƒ�>}t| ¡ ƒdksRJ ‚t| ¡ ƒdks\J ‚t t¡� | ¡  W d   ƒ n1 spw   Y  W d   ƒ d S W d   ƒ d S 1 sˆw   Y  d S )	NÚscratchTrY   r   r<   rt   r   r   )r   r    rA   r   rB   rc   rd   re   r,   rg   rv   r   rD   rw   ri   Ú
read_realsÚpytestÚraisesr   ©rJ   r0   r|   r3   r   r   r   Útest_fortran_eof_ok¸   s$   ÿþ
ÿý"ýr‰   c              	   C   sR  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� tj	 
d¡}t|dƒ�}| | d¡¡ | | d¡¡ W d   ƒ n1 s=w   Y  t|dƒ�}| d	¡ W d   ƒ n1 sWw   Y  t|d
ƒ�>}t| ¡ ƒdkslJ ‚t| ¡ ƒdksvJ ‚t t¡� | ¡  W d   ƒ n1 sŠw   Y  W d   ƒ d S W d   ƒ d S 1 s¢w   Y  d S )Nr„   TrY   r   r<   rt   r   Úabó   ÿr   )r   r    rA   r   rB   rc   rd   re   r,   rg   rv   r   rD   rw   rF   Úwriteri   r…   r†   r‡   r	   rˆ   r   r   r   Útest_fortran_eof_broken_sizeÇ   s*   ÿþÿ
ÿý"ýr�   c              	   C   s*  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� tj	 
d¡}t|dƒ�}| | d¡¡ | | d¡¡ W d   ƒ n1 s=w   Y  t|dƒ�}| d	¡ W d   ƒ n1 sWw   Y  t|d
ƒ�*}t t¡� | ¡  W d   ƒ n1 svw   Y  W d   ƒ d S W d   ƒ d S 1 sŽw   Y  d S )Nr„   TrY   r   r<   rt   r   zw+bs   ÿÿr   )r   r    rA   r   rB   rc   rd   re   r,   rg   rv   r   rD   rw   rF   rŒ   r†   r‡   r	   r…   rˆ   r   r   r   Útest_fortran_bogus_sizeØ   s&   ÿþÿ
ÿÿ"ÿrŽ   c              	   C   sH  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� tj	 
d¡}t|dƒ�}| | d¡¡ | | d¡¡ W d   ƒ n1 s=w   Y  t|dƒ�}| t  |¡d	 ¡ W d   ƒ n1 s\w   Y  t|d
ƒ�4}t| ¡ ƒdksqJ ‚t t¡� | ¡  W d   ƒ n1 s…w   Y  W d   ƒ d S W d   ƒ d S 1 s�w   Y  d S )Nr„   TrY   r   r<   rt   r   rŠ   é   r   )r   r    rA   r   rB   rc   rd   re   r,   rg   rv   r   rD   rw   rF   ÚtruncateÚgetsizeri   r…   r†   r‡   r	   rˆ   r   r   r   Útest_fortran_eof_broken_recordç   s(   ÿþÿ
ÿþ"þr’   c              	   C   sŽ  t  t| ƒtt ¡ ƒd¡}tjt  |¡dd� d\}}}t 	dtj
||ffg¡}tj||d�}t|dƒ�}| |d ¡ | |¡ | |¡ W d   ƒ n1 sPw   Y  t|d	ƒ�}| t  |¡d
 ¡ W d   ƒ n1 sow   Y  t|dƒ�D}t|j|d�ƒdks†J ‚t|j|d�ƒ|ks’J ‚t t¡� |j|d� W d   ƒ n1 s¨w   Y  W d   ƒ d S W d   ƒ d S 1 sÀw   Y  d S )Nr„   TrY   )r   rt   é   Úfieldr   r<   r   rŠ   r�   r   r   )r   r    rA   r   rB   rc   rd   re   r,   r   rR   Úzerosr   rD   rF   r�   r‘   ri   r)   r†   r‡   r	   )rJ   r0   r}   r1   ÚqÚdtro   r3   r   r   r   Ú!test_fortran_eof_multidimensional÷   s0   ÿ

ýÿÿý"ýr˜   )%Ú__doc__r?   rH   rc   r   Úglobr   r   r"   Únumpy.testingr   r   Únumpyr,   r†   Úscipy.ior   r   r   r	   r    re   Ú__file__r!   Úfixturer   r5   r;   rN   rW   rs   rƒ   r‰   r�   rŽ   r’   r˜   r   r   r   r   Ú<module>   s4    
1