3
PdJ                 @   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 ddlmZ dd	lmZmZ dd
lmZ eeedZdZd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% Z,d&d' Z-d(d) Z.d*d+ Z/d,d- Z0d.d/ Z1d0d1 Z2d2d3 Z3d4d5 Z4d6d7 Z5d8d9 Z6d:d; Z7d<d= Z8d>d? Z9d@dA Z:dBdC Z;dDdE Z<dS )Fz Tests for netcdf     N)joindirname)BytesIO)glob)contextmanager)assert_assert_allcloseassert_equalsuppress_warnings)raises)netcdf_fileIS_PYPY)
in_tempdirdata   bc              o   s\   t | |}d|_|jdt |jdtd}tjt|d d < d|_|j	  |V  |j
  d S )NzCreated for a testtimezdays since 2008-01-01)r   )r   historycreateDimensionN_EG_ELScreateVariable
VARTYPE_EGnpZarangeunitsflushclose)argskwargsfr    r   N/var/www/html/virt/lib64/python3.6/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 s   Created for a testr   s   days since 2008-01-01   N)r	   r   	variablesr   shaper   )Z	ncfileobjr   r   r   r    check_simple&   s
    
r&   c             C   s   t j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   maZgetmaskarrayr	   )ZarrZexpected_maskmaskr   r   r    assert_mask_matches.   s    r)   c           e   C   sv  t j } y0tj }t j| tdd}W d Q R X tdd}t| d|jd< W d Q R X td,}t	|j
t  t| t	|jd d W d Q R X tdd*}t|j
  t| t	|jd d W d Q R X tddd}t|j
  t| W d Q R X tdd.}t|}t|j
  t| W d Q R X W d Q R X t X}trT|jtd	 tdd0}t|d
d}t|j
 t| W d Q R X W d Q R X W d Q R X tddV}t|d@}t|j
  t| |jdd |jddd}d|d d < W d Q R X W d Q R X td&}t| t	|jd d d  d W d Q R X W n"   t j|  tj|  Y nX t j|  tj| d S )Nz	simple.ncwar"   Z	appendRanF)mmaprbz2Cannot close a netcdf_file opened with mmap=True.*Tzr+bapp_dimZapp_vari*   )r.   )osgetcwdtempfilemkdtempchdirr!   r   r&   _attributesr	   Zuse_mmapr   r   openr
   filterRuntimeWarningr   r   r$   shutilrmtree)cwdZtmpdirr   Zfobjsupvarr   r   r    test_read_write_filesB   s`    




& 
&


r?   c           &   C   s   t  } t| d | j }W d Q R X t |}t|}t| W d Q R X t |}ttt|dd t  }t|ddd}|j }W d Q R X t |}t|}t| t|jd W d Q R X t |}t|dd}t| t|jd W d Q R X d S )Nr*   rT   )version)	r   r!   getvaluer   r&   assert_raises
ValueErrorr	   Zversion_byte)Zeg_sio1Zstr_valZeg_sio2f2Zeg_sio3Z	eg_sio_64Zf_64r   r   r    test_read_write_sio   s&    

rG   c              C   sd   t  } t| dd}d|_|jdd |jdtjd}d|d< d	|_|j  | j	 }d
}t
|| d S )Nr*   )moder   dimr"   r>   i'  r   ds|   CDF       
      dim             a         b            var                 c         d            x)rI   i)r   r   r+   r   r   r   int16csyncrC   r	   )Zraw_filer   r>   actualexpectedr   r   r    
test_bytes   s     rP   c              C   sn   t t ddV} | jdd | jddd
}t|j d d|_t|j d d	|_t|j d W d Q R X d S )Nr*   )rH   xr"   r>   ZS1       s     )rQ   )r   r   r   r   r	   Z_get_encoded_fill_valueZ
_FillValue)r   r>   r   r   r    test_encoded_fill_value   s    rT   c              C   sL   xFt ttdD ]4} t| d W d Q R X t| ddd W d Q R X qW d S )Nz*.ncr@   F)r,   )r   pjoinTEST_DATA_PATHr   )fnamer   r   r    test_read_example_data   s
    
rX   c              C   s^   t td} t 6}|jtd t| ddd}|jd }W d Q R X W d Q R X tt|j	d d S )Nzexample_1.nczsCannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still existr@   T)r,   r   r0   )
rU   rV   r
   r8   r9   r   r$   rD   RuntimeErrorZassignValue)filenamer=   r   Ztime_varr   r   r    $test_itemset_no_segfault_on_readonly   s    
r[   c              C   s   t  } t| dd>}|jdd |jdtd d|jd d< |j  | j }W d Q R X t |} t| dd}d|jd d< W d Q R X d S )	Nr*   )rH   rQ   rA   r"   .r+   )rQ   )	r   r!   r   r   floatr$   r   rC   r   )streamr   contentsr   r   r    test_appending_issue_gh_8625   s    r_   c              C   s   ddg} t jdjdkr"| jd t jdjdkr<| jd tt d2}|jdt x| D ]}tt	|j
d|d q\W W d Q R X d S )	NZint64Zuint64int   Zuintr*   r   )r   )r   dtypeitemsizeappendr   r   r   r   rD   rE   r   )Zdtypesr   dtr   r   r    test_write_invalid_dtype  s    


rf   c              C   s~   t  } t| ddV}|jdd}|jdddg}d|d d < |j  t| j }|j  t| j }W d Q R X t||k d S )Nr*   )rH   rQ      vi2r"   )r   r!   r   r   r   lenrC   r   )r]   r   rQ   rh   Z
len_singleZ
len_doubler   r   r    test_flush_rewind  s    rk   c              C   sd   t t ddL} | jdd | jdddg | jdtjdg | jdtjtjdg W d Q R X d S )	Nr*   )rH   rQ   rg   v1ri   v2Zv3)r!   r   r   r   r   rK   rb   )r   r   r   r    test_dtype_specifiers(  s
    rn   c              C   s   t  } ddddddddd	d
g
}t| dH}d|_|jdd |jddd}||d d < d|_|j  | j }W d Q R X t |} t| dF}t|jd |j	d }t|jd t|j
d t|d d  | W d Q R X d S )Nr   g?g?g333333?g?g      ?g333333?gffffff?g?g?r*   zCreated for a test	float_var
   r   Zmetresr@   s   Created for a tests   metres)ro   )rp   )r   r   r   r   r   r   r   rC   r	   r$   r%   r   )ioitemsr   ro   r^   r   r   r    test_ticket_17203  s"    
rs   c                 s   t td tsXtj < tjd t dd} | jd d d  }~W d Q R X W d Q R X  fdd}t }|j	t
d | }W d Q R X |j  d S )	Nzexample_1.ncerrorT)r,   latc           
      s*   t  dd} | jd d d  S Q R X d S )NT)r,   ru   )r   r$   )r   )rZ   r   r    doitU  s    z!test_mmaps_segfault.<locals>.doitzsCannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still exist)rU   rV   r   warningscatch_warningssimplefilterr   r$   r
   r8   r9   sum)r   rQ   rv   r=   r   )rZ   r    test_mmaps_segfaultJ  s    


r{   c              C   sJ   t  } t| d0}|jddg }|jdks4t|j|j  W d Q R X d S )Nr*   Zzerodimri   F)r   r!   r   ZisrecAssertionErrorr   )rq   r   rh   r   r   r    test_zero_dimensional_vara  s
    r}   c           
   C   sr   t  b d} t| d}d|jd< d|jd< |j  t| d}t|jd d t|jd d |j  W d Q R X d S )	Nzg_byte_atts.ncr*   s   grailZholyZfloatsZwitchr@   s   floats)r   r   r6   r   r	   )rZ   r   r   r   r    test_byte_gattsk  s    



r~   c           
   C   s   t   d} t| d}d|jd< |j  t| d}t|jd d d|jd< |j  t| d	}t|jd d t|jd d |j  W d Q R X d S )
Nzappend_dat.ncr*   zwas hereZKilroyr+   s   was heres   ZootZnaughtyr@   )r   r   r6   r   r	   )rZ   r   r   r   r    test_open_appendz  s    




r   c           #   C   s   d} t  
 tdd}|jdd  |jddd |jd|  |jddd}tjt| |d d < |jd|  |jddd}tjt| |d d < |jdd	d |j  |j  W d Q R X xtd
D ]}tddR}tj	|j
d j||j
d _tj| | f||j
d |d d d d f< |j  W d Q R X td}t|j
d d | t|j
d dd d d d f j tj| | f| t|j
d jjd |d  t|j
d jjd |d  W d Q R X qW td@}tt}|j
d jd  W d Q R X |j}t|jd d W d Q R X W d Q R X d S )Nd   zwithRecordDimension.ncr*   r   rJ   rQ   yZtestDatar/   rA   r+   r"   r   r   )r   )rQ   )r   )r   rQ   r   r#   r#   )r   r   r   r   r   arrayranger   r   rd   r$   r   fullr	   copyr%   rD   KeyErrorr6   valuer   )ZdataSizer   rQ   r   r/   arexr   r   r    test_append_recordDimension  s:    
(
2*

r   c        	      C   s  t jddd} d| d< t jj| d}ttd}t|dd	f}|jd
 }t|j	d t|j
d t|jt jd |d d  j }~t j|j d}t|| W d Q R X t  d}t|ddd	}|jd
t| |jd
dd}d|_	d|_d|_
||d d < |j  t|dd	f}|jd
 }t|j	d t|j
d t|jt jd t j|j d}|d d  j }~t|| W d Q R X W d Q R X d S )N         r      c   zexample_2.ncT)maskandscaleTemperaturei'  g{Gz?rA   zms.ncr*   r/   )r   )r   Zlinspacer'   Zmasked_greaterrU   rV   r   r$   r	   Zmissing_valueZ
add_offsetZscale_factorZfloat32
compressedroundr   r   r   rj   r   r   )	ttmrW   r   ZTempfoundrO   Znewfnametempr   r   r    test_maskandscale  s@    


r   c              C   sH   t td} t| dd(}|jd d d  }t|dddg W d Q R X d S )Nzexample_3_maskedvals.ncT)r   Zvar1_fillval0F)rU   rV   r   r$   r)   )rW   r   vardatar   r   r    !test_read_withValuesNearFillValue  s    
r   c              C   sX   t td} t| dd8}|jd d d  }t|dddg t|dddg W d Q R X d S )	Nzexample_3_maskedvals.ncT)r   Zvar2_noFillvalFr"   rA   r   )rU   rV   r   r$   r)   r	   )rW   r   r   r   r   r    test_read_withNoFillValue  s
    
r   c              C   s\   d} t td}t|dd8}|jd d d  }t|dddg t|| ddg W d Q R X d S )	Ni'  zexample_3_maskedvals.ncT)r   var3_fillvalAndMissingValueFrA   r   )rU   rV   r   r$   r)   r	   )ZIRRELEVANT_VALUErW   r   r   r   r   r    &test_read_withFillValueAndMissingValue  s    
r   c              C   sH   t td} t| dd(}|jd d d  }t|dddg W d Q R X d S )Nzexample_3_maskedvals.ncT)r   Zvar4_missingValueF)rU   rV   r   r$   r)   )rW   r   r   r   r   r    test_read_withMissingValue  s    
r   c              C   sH   t td} t| dd(}|jd d d  }t|dddg W d Q R X d S )Nzexample_3_maskedvals.ncT)r   Zvar5_fillvalNaNF)rU   rV   r   r$   r)   )rW   r   r   r   r   r    test_read_withFillValNaN  s    
r   c              C   sH   t td} t| dd(}|jd d d  }t|dddg W d Q R X d S )Nzexample_3_maskedvals.ncT)r   Z	var6_charF)rU   rV   r   r$   r)   )rW   r   r   r   r   r    test_read_withChar  s    
r   c              C   sT   t td} t| dd4}|jd d d  }t|ddgddgddgg W d Q R X d S )Nzexample_3_maskedvals.ncT)r   Zvar7_2dF)rU   rV   r   r$   r)   )rW   r   r   r   r   r    test_read_with2dVar  s    
r   c              C   sZ   t td} t| ddd8}|jd d d  }t|dddg t|dddg W d Q R X d S )Nzexample_3_maskedvals.ncF)r   r,   r   r"   rA   r   )rU   rV   r   r$   r)   r	   )rW   r   r   r   r   r    test_read_withMaskAndScaleFalse  s
    
r   )=__doc__r1   os.pathr   rU   r   r:   r3   rw   rq   r   r   
contextlibr   Znumpyr   Znumpy.testingr   r   r	   r
   Zpytestr   rD   Zscipy.io.netcdfr   r   Zscipy._lib._tmpdirsr   __file__rV   r   r   r!   r&   r)   r?   rG   rP   rT   rX   r[   r_   rf   rk   rn   rs   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    <module>   sX   L1	
()	
