o
    Ö­jL  ã                   @   s²  d Z ddlZddlmZm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mZ ddlZddlmZmZmZmZmZmZ ddlZddlmZ dd	lmZ dd
lmZ eeeƒdƒZdZ dZ!ej"j#Z$e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%„ Z0d&d'„ Z1d(d)„ Z2d*d+„ Z3d,d-„ Z4d.d/„ Z5d0d1„ Z6d2d3„ Z7d4d5„ Z8d6d7„ Z9d8d9„ Z:d:d;„ Z;d<d=„ Z<d>d?„ Z=d@dA„ Z>dBdC„ Z?dDdE„ Z@dS )Fz Tests for netcdf é    N)ÚjoinÚdirname)ÚBytesIO)Úglob)Úcontextmanager)Úassert_Úassert_allcloseÚassert_equalÚbreak_cyclesÚsuppress_warningsÚIS_PYPY)Úraises)Únetcdf_file)Ú
in_tempdirÚdataé   Úbc                  o   sb   � t | i |¤Ž}d|_| dt¡ | dtd¡}t t¡|d d …< d|_| 	¡  |V  | 
¡  d S )NúCreated for a testÚtime©r   zdays since 2008-01-01)r   ÚhistoryÚcreateDimensionÚN_EG_ELSÚcreateVariableÚ
VARTYPE_EGÚnpÚarangeÚunitsÚflushÚclose)ÚargsÚkwargsÚfr   © r#   úW/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/io/tests/test_netcdf.pyÚmake_simple   s   €r%   c                 C   sF   t | jdƒ | jd }t |jdƒ t |jtfƒ t |d td ƒ dS )zExample fileobj tests ó   Created for a testr   s   days since 2008-01-01éÿÿÿÿé   N)r	   r   Ú	variablesr   Úshaper   )Ú	ncfileobjr   r#   r#   r$   Úcheck_simple*   s
   
r,   c                 C   s   t j | ¡}t||ƒ dS )a°  
    Asserts that the mask of arr is effectively the same as expected_mask.

    In contrast to numpy.ma.testutils.assert_mask_equal, this function allows
    testing the 'mask' of a standard numpy array (the mask in this case is treated
    as all False).

    Parameters
    ----------
    arr : ndarray or MaskedArray
        Array to test.
    expected_mask : array_like of booleans
        A list giving the expected mask.
    N)r   ÚmaÚgetmaskarrayr	   )ÚarrÚexpected_maskÚmaskr#   r#   r$   Úassert_mask_matches2   s   r2   c               
   C   sš  t  ¡ } �z³t ¡ }t  |¡ tddƒ�}W d   ƒ n1 sw   Y  tddƒ�}t|ƒ d|jd< W d   ƒ n1 s=w   Y  tdƒ�}t	|j
t ƒ t|ƒ t	|jd dƒ W d   ƒ n1 sdw   Y  tddƒ�}t|j
 ƒ t|ƒ t	|jd dƒ W d   ƒ n1 s‹w   Y  tddd��}t|j
 ƒ t|ƒ W d   ƒ n1 s«w   Y  tddƒ�&}t|ƒ�}t|j
 ƒ t|ƒ W d   ƒ n1 sÏw   Y  W d   ƒ n1 sÞw   Y  tƒ �F}trï| td	¡ tddƒ�(}t|d
d��}t|j
ƒ t|ƒ W d   ƒ n	1 �sw   Y  W d   ƒ n	1 �s w   Y  W d   ƒ n	1 �s0w   Y  tddƒ�;}t|dƒ�%}t|j
 ƒ t|ƒ | dd¡ | ddd¡}d|d d …< W d   ƒ n	1 �siw   Y  W d   ƒ n	1 �syw   Y  tdƒ�}t|ƒ t	|jd d d … dƒ W d   ƒ n	1 �sžw   Y  W t�r­tƒ  tƒ  t  | ¡ t |¡ d S t�rÂtƒ  tƒ  t  | ¡ t |¡ w )Nz	simple.ncÚwÚar(   Ú	appendRanF©ÚmmapÚrbz2Cannot close a netcdf_file opened with mmap=True.*Tzr+bÚapp_dimÚapp_varÚi)r9   é*   )ÚosÚgetcwdÚtempfileÚmkdtempÚchdirr%   r   r,   Ú_attributesr	   Úuse_mmapr   r   Úopenr   ÚfilterÚRuntimeWarningr   r   r)   r
   ÚshutilÚrmtree)ÚcwdÚtmpdirr"   ÚfobjÚsupÚvarr#   r#   r$   Útest_read_write_filesF   sŽ   
ÿý
üý
ý


ý€ÿÿ

þ€ÿ€ü
û€ÿ
	þ€
ú
rN   c                  C   sV  t ƒ } t| dƒ� |  ¡ }W d   ƒ n1 sw   Y  t |ƒ}t|ƒ�}t|ƒ W d   ƒ n1 s3w   Y  t |ƒ}ttt|ddƒ t ƒ }t|ddd��}| ¡ }W d   ƒ n1 s]w   Y  t |ƒ}t|ƒ�}t|ƒ t|jdƒ W d   ƒ n1 sw   Y  t |ƒ}t|dd��}t|ƒ t|jdƒ W d   ƒ d S 1 s¤w   Y  d S )Nr3   ÚrTé   )Úversion)	r   r%   Úgetvaluer   r,   Úassert_raisesÚ
ValueErrorr	   Úversion_byte)Úeg_sio1Ústr_valÚeg_sio2Úf2Úeg_sio3Ú	eg_sio_64Úf_64r#   r#   r$   Útest_read_write_sio”   s0   
ÿ

ÿ
ÿ
þ"þr]   c                  C   sd   t ƒ } t| dd�}d|_| dd¡ | dtjd¡}d|d	< d
|_| ¡  |  	¡ }d}t
||ƒ d S )Nr3   ©Úmoder   Údimr(   rM   )r`   iñØÿÿr   Úds|   CDF       
      dim             a         b            var                 c         d            xØñ€)r   r   r4   r   r   r   Úint16ÚcÚsyncrR   r	   )Úraw_filer"   rM   ÚactualÚexpectedr#   r#   r$   Ú
test_bytes°   s    rh   c                  C   s„   t tƒ dd��1} |  dd¡ |  ddd¡}t| ¡ dƒ d	|_t| ¡ d	ƒ d
|_t| ¡ dƒ W d   ƒ d S 1 s;w   Y  d S )Nr3   r^   Úxr(   rM   ÚS1©ri   ó    ó   s     )r   r   r   r   r	   Ú_get_encoded_fill_valueÚ
_FillValue)r"   rM   r#   r#   r$   Útest_encoded_fill_valueá   s   "ùrp   c               	   C   sp   t ttdƒƒD ].} t| dƒ� W d   ƒ n1 sw   Y  t| ddd�� W d   ƒ n1 s0w   Y  qd S )Nz*.ncrO   Fr6   )r   ÚpjoinÚTEST_DATA_PATHr   )Úfnamer#   r#   r$   Útest_read_example_dataì   s   ÿÿ€ýrt   c               	   C   sŠ   t tdƒ} tƒ �,}d}| t|¡ t| ddd��}|jd }W d   ƒ n1 s(w   Y  W d   ƒ n1 s7w   Y  tt|j	dƒ d S )Núexample_1.ncúsCannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still existrO   Tr6   r   r<   )
rq   rr   r   rE   rF   r   r)   rS   ÚRuntimeErrorÚassignValue)ÚfilenamerL   Úmessager"   Útime_varr#   r#   r$   Ú$test_itemset_no_segfault_on_readonlyõ   s   
ÿ€ür|   c                  C   s²   t ƒ } t| dd��$}| dd¡ | dtd¡ d|jd d< | ¡  |  ¡ }W d   ƒ n1 s0w   Y  t |ƒ} t| dd��}d|jd d< W d   ƒ d S 1 sRw   Y  d S )	Nr3   r^   ri   rP   rk   r(   .r4   )	r   r%   r   r   Úfloatr)   r   rR   r   )Ústreamr"   Úcontentsr#   r#   r$   Útest_appending_issue_gh_8625  s   
û"ÿr€   c                  C   s–   ddg} t  d¡jdkr|  d¡ t  d¡jdkr|  d¡ ttƒ dƒ�}| dt¡ | D ]}tt	|j
d|dƒ q-W d   ƒ d S 1 sDw   Y  d S )	NÚint64Úuint64Úinté   Úuintr3   r   r   )r   ÚdtypeÚitemsizeÚappendr   r   r   r   rS   rT   r   )Údtypesr"   Údtr#   r#   r$   Útest_write_invalid_dtype  s   

ÿ"þr‹   c                  C   s’   t ƒ } t| dd��0}| dd¡ | dddg¡}d|d d …< | ¡  t|  ¡ ƒ}| ¡  t|  ¡ ƒ}W d   ƒ n1 s<w   Y  t||kƒ d S )Nr3   r^   ri   é   ÚvÚi2r(   )r   r%   r   r   r   ÚlenrR   r   )r~   r"   r�   Ú
len_singleÚ
len_doubler#   r#   r$   Útest_flush_rewind!  s   ù	r’   c                  C   sz   t tƒ dd��,} |  dd¡ |  dddg¡ |  dtjdg¡ |  dt tj¡dg¡ W d   ƒ d S 1 s6w   Y  d S )	Nr3   r^   ri   rŒ   Úv1rŽ   Úv2Úv3)r%   r   r   r   r   rb   r†   ©r"   r#   r#   r$   Útest_dtype_specifiers/  s   "ür—   c                  C   sò   t ƒ } g d¢}t| dƒ�)}d|_| dd¡ | ddd¡}||d d …< d|_| ¡  |  ¡ }W d   ƒ n1 s8w   Y  t |ƒ} t| d	ƒ�)}t|jd
ƒ |j	d }t|jdƒ t|j
dƒ t|d d … |ƒ W d   ƒ d S 1 srw   Y  d S )N)
r   gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?g      à?g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?r3   r   Ú	float_varé
   r"   )r˜   ÚmetresrO   r&   s   metres)r™   )r   r   r   r   r   r   r   rR   r	   r)   r*   r   )ÚioÚitemsr"   r˜   r   r#   r#   r$   Útest_ticket_1720:  s&   
ù	
"ûr�   c               	      sÔ   t tdƒ‰ ts@t ¡ �- t d¡ tˆ dd��} | jd d d … }~W d   ƒ n1 s,w   Y  W d   ƒ n1 s;w   Y  ‡ fdd„}tƒ �}d}| 	t
|¡ |ƒ }W d   ƒ n1 s_w   Y  | ¡  d S )	Nru   ÚerrorTr6   Úlatc                     sB   t ˆ dd��} | jd d d … W  d   ƒ S 1 sw   Y  d S )NTr6   rŸ   )r   r)   r–   ©ry   r#   r$   Údoit\  s   $ÿz!test_mmaps_segfault.<locals>.doitrv   )rq   rr   r   ÚwarningsÚcatch_warningsÚsimplefilterr   r)   r   rE   rF   Úsum)r"   ri   r¡   rL   rz   r#   r    r$   Útest_mmaps_segfaultQ  s"   


ý€þür¦   c                  C   s`   t ƒ } t| dƒ�}| ddg ¡}|jdu sJ |jƒ‚| ¡  W d   ƒ d S 1 s)w   Y  d S )Nr3   ÚzerodimrŽ   F)r   r%   r   Úisrecr   )r›   r"   r�   r#   r#   r$   Útest_zero_dimensional_vari  s   
"ûr©   c                  C   sˆ   t ƒ �7 d} t| dƒ}d|jd< d|jd< | ¡  t| dƒ}t|jd dƒ t|jd dƒ | ¡  W d   ƒ d S 1 s=w   Y  d S )	Nzg_byte_atts.ncr3   s   grailÚholyÚfloatsÚwitchrO   s   floats©r   r   rB   r   r	   ©ry   r"   r#   r#   r$   Útest_byte_gattss  s   




"÷r¯   c                  C   sª   t ƒ �H d} t| dƒ}d|jd< | ¡  t| dƒ}t|jd dƒ d|jd< | ¡  t| d	ƒ}t|jd dƒ t|jd dƒ | ¡  W d   ƒ d S 1 sNw   Y  d S )
Nzappend_dat.ncr3   zwas hereÚKilroyr4   s   was heres   ZootÚnaughtyrO   r­   r®   r#   r#   r$   Útest_open_append‚  s   





"ðr²   c               
   C   sª  d} t ƒ ��D tddƒ�T}| dd ¡ | ddd¡ | d| ¡ | ddd¡}t t| ƒ¡|d d …< | d	| ¡ | d	dd
¡}t t| ƒ¡|d d …< | ddd¡ | ¡  | ¡  W d   ƒ n1 scw   Y  tdƒD ]�}tddƒ�.}t 	|j
d j|¡|j
d _t | | f|¡|j
d |d d …d d …f< | ¡  W d   ƒ n1 s¤w   Y  tdƒ�G}t|j
d d |ƒ t|j
d dd d …d d …f  ¡ t | | f|¡ƒ t|j
d jjd |d ƒ t|j
d jjd |d ƒ W d   ƒ n1 s÷w   Y  qltdƒ�0}ttƒ�}|j
d jd  W d   ƒ n	1 �sw   Y  |j}t|jd dƒ W d   ƒ n1 �s5w   Y  W d   ƒ d S W d   ƒ d S 1 �sNw   Y  d S )Néd   zwithRecordDimension.ncr3   r   ra   r   ri   rk   Úy)r´   ÚtestDatar;   )r   ri   r´   rP   r4   r'   r   r(   r   )r   r   r   r   r   ÚarrayÚranger   r   rˆ   r)   r   Úfullr	   Úcopyr*   rS   ÚKeyErrorrB   Úvaluer    )ÚdataSizer"   ri   r´   r;   ÚarÚexr#   r#   r$   Útest_append_recordDimension—  sP   

õ(
ý
 ÿû€
	
ÿ üà $àr¿   c            	   	   C   sØ  t  ddd¡} d| d< t j | d¡}ttdƒ}t|dd	��8}|jd
 }t|j	dƒ t|j
dƒ t|jt  d¡ƒ |d d …  ¡ }~t  | ¡ d¡}t||ƒ W d   ƒ n1 sXw   Y  tƒ �‚ d}t|ddd	�}| d
t|ƒ¡ | d
dd¡}d|_	d|_d|_
||d d …< | ¡  t|dd	��8}|jd
 }t|j	dƒ t|j
dƒ t|jt  d¡ƒ t  | ¡ d¡}|d d …  ¡ }~t||ƒ W d   ƒ n1 sÍw   Y  W d   ƒ d S W d   ƒ d S 1 såw   Y  d S )Né   é   é   r³   é   éc   zexample_2.ncT©ÚmaskandscaleÚTemperatureé'  g{®Gáz„?rP   zms.ncr3   r;   )rÇ   )r   Úlinspacer-   Úmasked_greaterrq   rr   r   r)   r	   Úmissing_valueÚ
add_offsetÚscale_factorÚfloat32Ú
compressedÚroundr   r   r   r�   r   r   )	ÚtÚtmrs   r"   ÚTempÚfoundrg   ÚnewfnameÚtempr#   r#   r$   Útest_maskandscaleÀ  sJ   

ø

øõ"õr×   c                  C   ó\   t tdƒ} t| dd��}|jd d d … }t|g d¢ƒ W d   ƒ d S 1 s'w   Y  d S )Núexample_3_maskedvals.ncTrÅ   Úvar1_fillval0©FTF©rq   rr   r   r)   r2   ©rs   r"   Úvardatar#   r#   r$   Ú!test_read_withValuesNearFillValueé  s
   
"þrß   c                  C   sj   t tdƒ} t| dd�� }|jd d d … }t|g d¢ƒ t|g d¢ƒ W d   ƒ d S 1 s.w   Y  d S )NrÙ   TrÅ   Úvar2_noFillval©FFF©r(   rP   rÃ   ©rq   rr   r   r)   r2   r	   rÝ   r#   r#   r$   Útest_read_withNoFillValueð  s   
"ýrä   c                  C   sp   d} t tdƒ}t|dd��!}|jd d d … }t|g d¢ƒ t|| ddgƒ W d   ƒ d S 1 s1w   Y  d S )	NrÈ   rÙ   TrÅ   Úvar3_fillvalAndMissingValue)TFFrP   rÃ   rã   )ÚIRRELEVANT_VALUErs   r"   rÞ   r#   r#   r$   Ú&test_read_withFillValueAndMissingValueù  s   
"ýrç   c                  C   rØ   )NrÙ   TrÅ   Úvar4_missingValuerÛ   rÜ   rÝ   r#   r#   r$   Útest_read_withMissingValue  s
   
"þré   c                  C   rØ   )NrÙ   TrÅ   Úvar5_fillvalNaNrÛ   rÜ   rÝ   r#   r#   r$   Útest_read_withFillValNaN  ó
   
"þrë   c                  C   rØ   )NrÙ   TrÅ   Ú	var6_charrÛ   rÜ   rÝ   r#   r#   r$   Útest_read_withChar  rì   rî   c                  C   sj   t tdƒ} t| dd�� }|jd d d … }t|ddgddgddggƒ W d   ƒ d S 1 s.w   Y  d S )NrÙ   TrÅ   Úvar7_2dFrÜ   rÝ   r#   r#   r$   Útest_read_with2dVar  s
   
"þrð   c                  C   sl   t tdƒ} t| ddd�� }|jd d d … }t|g d¢ƒ t|g d¢ƒ W d   ƒ d S 1 s/w   Y  d S )NrÙ   F)rÆ   r7   rå   rá   râ   rã   rÝ   r#   r#   r$   Útest_read_withMaskAndScaleFalse  s   
"ýrñ   )AÚ__doc__r=   Úos.pathr   rq   r   rG   r?   r¢   r›   r   r   Ú
contextlibr   Únumpyr   Únumpy.testingr   r   r	   r
   r   r   Úpytestr   rS   Úscipy.ior   Úscipy._lib._tmpdirsr   Ú__file__rr   r   r   ÚmarkÚthread_unsafeÚ
pytestmarkr%   r,   r2   rN   r]   rh   rp   rt   r|   r€   r‹   r’   r—   r�   r¦   r©   r¯   r²   r¿   r×   rß   rä   rç   ré   rë   rî   rð   rñ   r#   r#   r#   r$   Ú<module>   s`     
N1	
))	
