ó
î&]\c           @` s-  d  Z  d d l m Z m Z m 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 d d	 l m Z d d
 l m Z m Z d d l m Z d d l  m! Z! e e	 e" ƒ d ƒ Z# d Z$ d Z% e d „  ƒ Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d  „  Z6 d! „  Z7 d" „  Z8 d# „  Z9 d$ „  Z: d% „  Z; d& „  Z< d' „  Z= d( „  Z> d) „  Z? d* „  Z@ d+ „  ZA d S(,   s    Tests for netcdf i    (   t   divisiont   print_functiont   absolute_importN(   t   joint   dirname(   t   BytesIO(   t   glob(   t   contextmanager(   t   assert_t   assert_allcloset   assert_equal(   t   raises(   t   netcdf_filet   IS_PYPY(   t   suppress_warnings(   t
   in_tempdirt   datai   t   bc          o` ss   t  |  | Ž  } d | _ | j d t ƒ | j d t d ƒ } t j t ƒ | (d | _ | j	 ƒ  | V| j
 ƒ  d  S(   Ns   Created for a testt   times   days since 2008-01-01(   R   (   R   t   historyt   createDimensiont   N_EG_ELSt   createVariablet
   VARTYPE_EGt   npt   aranget   unitst   flusht   close(   t   argst   kwargst   fR   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   make_simple   s    		
c         C` sY   t  |  j d ƒ |  j d } t  | j d ƒ t  | j t f ƒ t  | d t d ƒ d S(   s   Example fileobj tests s   Created for a testR   s   days since 2008-01-01iÿÿÿÿi   N(   R
   R   t	   variablesR   t   shapeR   (   t	   ncfileobjR   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   check_simple)   s
    c         C` s#   t  j j |  ƒ } t | | ƒ d S(   s®  
    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   t   mat   getmaskarrayR
   (   t   arrt   expected_maskt   mask(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   assert_mask_matches1   s    c          C` sÒ  t  j ƒ  }  yt j ƒ  } t  j | ƒ t d d ƒ  } Wd  QXt d d ƒ  } t | ƒ d | j d <Wd  QXt d ƒ 6 } t	 | j
 t ƒ t | ƒ t	 | j d d ƒ Wd  QXt d d ƒ 3 } t | j
 ƒ t | ƒ t	 | j d d ƒ Wd  QXt d d t ƒ } t | j
 ƒ t | ƒ Wd  QXt d d ƒ 4 } t | ƒ  } t | j
 ƒ t | ƒ Wd  QXWd  QXt ƒ  j } t r”| j t d ƒ n  t d d ƒ 9 } t | d t ƒ } t | j
 ƒ t | ƒ Wd  QXWd  QXWd  QXt d d	 ƒ c } t | d ƒ K } t | j
 ƒ t | ƒ | j d
 d ƒ | j d d d ƒ } d | (Wd  QXWd  QXt d ƒ & } t | ƒ t	 | j d d ƒ Wd  QXWn$ t  j |  ƒ t j | ƒ ‚  n Xt  j |  ƒ t j | ƒ d  S(   Ns	   simple.nct   wt   ai   t	   appendRant   mmapt   rbs2   Cannot close a netcdf_file opened with mmap=True.*s   r+bt   app_dimt   app_vart   ii*   (   R0   (   t   ost   getcwdt   tempfilet   mkdtempt   chdirR    R   R$   t   _attributesR
   t   use_mmapR   R   t   Falset   openR   t   filtert   RuntimeWarningt   TrueR   R   R!   t   shutilt   rmtree(   t   cwdt   tmpdirR   t   fobjt   supt   var(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_write_filesE   s`    


	


c          C` s-  t  ƒ  }  t |  d ƒ  } |  j ƒ  } Wd  QXt  | ƒ } t | ƒ  } t | ƒ Wd  QXt  | ƒ } t t t | d t ƒ t  ƒ  } t | d d d ƒ } | j ƒ  } Wd  QXt  | ƒ } t | ƒ ! } t | ƒ t | j	 d ƒ Wd  QXt  | ƒ } t | d d ƒ! } t | ƒ t | j	 d ƒ Wd  QXd  S(   NR+   t   rt   versioni   (
   R   R    t   getvalueR   R$   t   assert_raisest
   ValueErrorR>   R
   t   version_byte(   t   eg_sio1t   f1t   str_valt   eg_sio2t   f2t   eg_sio3t	   eg_sio_64t   f_64(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_write_sio‘   s&    		

c          C` sŒ   t  ƒ  }  t |  d d ƒ} d | _ | j d d ƒ | j d t j d ƒ } d | d <d	 | _ | j ƒ  |  j	 ƒ  } d
 } t
 | | ƒ d  S(   Nt   modeR+   R   t   dimi   RE   iñØÿÿi    t   ds|   CDF       
      dim             a         b            var                 c         d            xØñ€(   RW   (   R   R   R,   R   R   R   t   int16t   ct   syncRI   R
   (   t   raw_fileR   RE   t   actualt   expected(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt
   test_bytes­   s    		
	
 c          C` s’   t  t ƒ  d d ƒw }  |  j d d ƒ |  j d d d
 ƒ } t | j ƒ  d ƒ d | _ t | j ƒ  d ƒ d	 | _ t | j ƒ  d ƒ Wd  QXd  S(   NRV   R+   t   xi   RE   t   S1s    s   s     (   R`   (   R   R   R   R   R
   t   _get_encoded_fill_valuet
   _FillValue(   R   RE   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_encoded_fill_valueÞ   s    		c          C` sZ   xS t  t t d ƒ ƒ D]< }  t |  d ƒ  } Wd  QXt |  d d t ƒ } Wd  QXq Wd  S(   Ns   *.ncRG   R.   (   R   t   pjoint   TEST_DATA_PATHR   R:   (   t   fnameR   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_example_dataé   s
    c       
   C` ss   t  t d ƒ }  t ƒ  B } | j t d ƒ t |  d d t ƒ } | j d } Wd  QXWd  QXt t	 | j
 d ƒ d  S(   Ns   example_1.ncss   Cannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still existRG   R.   R   i*   (   Re   Rf   R   R<   R=   R   R>   R!   RJ   t   RuntimeErrort   assignValue(   t   filenameRD   R   t   time_var(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt$   test_itemset_no_segfault_on_readonlyò   s    	c          C` sª   t  ƒ  }  t |  d d ƒQ } | j d d ƒ | j d t d ƒ d | j d d <| j ƒ  |  j ƒ  } Wd  QXt  | ƒ }  t |  d d ƒ } d | j d d <Wd  QXd  S(	   NRV   R+   R`   i   i   .R,   (   R`   (	   R   R    R   R   t   floatR!   R   RI   R   (   t   streamR   t   contents(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_appending_issue_gh_8625  s    	
c          C` sµ   d d g }  t  j d ƒ j d k r4 |  j d ƒ n  t  j d ƒ j d k r\ |  j d ƒ n  t t ƒ  d ƒ A } | j d t ƒ x' |  D] } t t	 | j
 d | d ƒ qˆ WWd  QXd  S(	   Nt   int64t   uint64t   inti   t   uintR+   R   (   R   (   R   t   dtypet   itemsizet   appendR   R   R   R   RJ   RK   R   (   t   dtypesR   t   dt(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_write_invalid_dtype  s    c          C` s¡   t  ƒ  }  t |  d d ƒp } | j d d ƒ } | j d d d g ƒ } d | (| j ƒ  t |  j ƒ  ƒ } | j ƒ  t |  j ƒ  ƒ } Wd  QXt | | k ƒ d  S(   NRV   R+   R`   i   t   vt   i2i   (   R   R    R   R   R   t   lenRI   R   (   Ro   R   R`   R|   t
   len_singlet
   len_double(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_flush_rewind  s    	

c          C` sƒ   t  t ƒ  d d ƒh }  |  j d d ƒ |  j d d d g ƒ |  j d t j d g ƒ |  j d t j t j ƒ d g ƒ Wd  QXd  S(	   NRV   R+   R`   i   t   v1R}   t   v2t   v3(   R    R   R   R   R   RY   Rv   (   R   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_dtype_specifiers+  s
    c       
   C` s  t  ƒ  }  d d d d d d d d d	 d
 g
 } t |  d ƒ [ } d | _ | j d d ƒ | j d d d ƒ } | | (d | _ | j ƒ  |  j ƒ  } Wd  QXt  | ƒ }  t |  d ƒ R } t | j d ƒ | j	 d } t | j d ƒ t | j
 d ƒ t | | ƒ Wd  QXd  S(   Ni    gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?g      à?g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?R+   s   Created for a testt	   float_vari
   R   t   metresRG   (   R†   (   i
   (   R   R   R   R   R   R   R   RI   R
   R!   R"   R	   (   t   iot   itemsR   R†   Rp   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_ticket_17206  s"    	$		
c       
   ` s¬   t  t d ƒ ‰  t sd t j ƒ  > t j d ƒ t ˆ  d t ƒ }  |  j d } ~ Wd  QXWd  QXn  ‡  f d †  } t	 ƒ    } | j
 t d ƒ | ƒ  } Wd  QX| j ƒ  d  S(   Ns   example_1.nct   errorR.   t   latc          ` s+   t  ˆ  d t ƒ }  |  j d SWd  QXd  S(   NR.   RŒ   (   R   R>   R!   (   R   (   Rk   (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   doitX  s    ss   Cannot close a netcdf_file opened with mmap=True, when netcdf_variables or arrays referring to its data still exist(   Re   Rf   R   t   warningst   catch_warningst   simplefilterR   R>   R!   R   R<   R=   t   sum(   R   R`   R   RD   (    (   Rk   s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_mmaps_segfaultM  s    	c          C` sb   t  ƒ  }  t |  d ƒ D } | j d d g  ƒ } | j t k sN t | j ƒ ‚ | j ƒ  Wd  QXd  S(   NR+   t   zerodimR}   (   R   R    R   t   isrecR:   t   AssertionErrorR   (   Rˆ   R   R|   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_zero_dimensional_vard  s
    	c          C` sŽ   t  ƒ   d }  t |  d ƒ } d | j d <d | j d <| j ƒ  t |  d ƒ } t | j d d ƒ t | j d d ƒ | j ƒ  Wd  QXd  S(   Ns   g_byte_atts.ncR+   t   grailt   holyt   floatst   witchRG   (   R   R   R8   R   R
   (   Rk   R   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_byte_gattsn  s    

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 ƒ  Wd  QXd  S(	   Ns   append_dat.ncR+   s   was heret   KilroyR,   t   Zoott   naughtyRG   (   R   R   R8   R   R
   (   Rk   R   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_open_append}  s    


c          C` sš  d }  t  ƒ  …t d d ƒ Ç } | j d d  ƒ | j d d d ƒ | j d |  ƒ | j d d d ƒ } t j t |  ƒ ƒ | (| j d |  ƒ | j d d d ƒ } t j t |  ƒ ƒ | (| j d d	 d ƒ | j ƒ  | j	 ƒ  Wd  QXxLt d
 ƒ D]>} t d d ƒ p } t j
 | j d j | ƒ | j d _ t j |  |  f ƒ | | j d | d  d  … d  d  … f <| j ƒ  Wd  QXt 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 ƒ Wd  QXqõ Wt d ƒ K } t t ƒ  } | j d j d Wd  QX| j } t | j d d ƒ Wd  QXWd  QXd  S(   Nid   s   withRecordDimension.ncR+   R   RX   R`   t   yt   testDataR2   i   R,   iÿÿÿÿi    i   R   (   R   (   R`   (   R    (   R   R`   R    (   R   R   R   t   NoneR   R   t   arrayt   rangeR   R   Rx   R!   R   t   onesR
   t   copyR"   RJ   t   KeyErrorR8   t   valueR   (   t   dataSizeR   R`   R    R2   t   art   ex(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_append_recordDimension’  s:    

&9F",	c    	      C` sõ  t  j d d d ƒ }  d |  d <t  j j |  d ƒ } t t d ƒ } t | d t ƒ‚ } | j d	 } t	 | j
 d
 ƒ t	 | j d ƒ t	 | j t  j d ƒ ƒ | j ƒ  } ~ t  j | j ƒ  d ƒ } t | | ƒ Wd  QXt ƒ  d } t | d d t ƒ} | j d	 t | ƒ ƒ | j d	 d d ƒ } d
 | _
 d | _ d | _ | | (| j ƒ  t | d t ƒ‚ } | j d	 } t	 | j
 d
 ƒ t	 | j d ƒ t	 | j t  j d ƒ ƒ t  j | j ƒ  d ƒ } | j ƒ  } ~ t | | ƒ Wd  QXWd  QXd  S(   Ni   i   i   id   i   ic   s   example_2.nct   maskandscalet   Temperaturei'  g{®Gáz„?i   s   ms.ncR+   R2   (   R®   (   R   t   linspaceR%   t   masked_greaterRe   Rf   R   R>   R!   R
   t   missing_valuet
   add_offsett   scale_factort   float32t
   compressedt   roundR	   R   R   R~   R   R   (	   t   tt   tmRg   R   t   Tempt   foundR^   t   newfnamet   temp(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_maskandscaleº  s@    

			
c       	   C` sR   t  t d ƒ }  t |  d t ƒ+ } | j d } t | t t t g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   t   var1_fillval0(   Re   Rf   R   R>   R!   R*   R:   (   Rg   R   t   vardata(    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt!   test_read_withValuesNearFillValueã  s    c       	   C` sh   t  t d ƒ }  t |  d t ƒA } | j d } t | t t t g ƒ t | d d d g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   t   var2_noFillvali   i   i   (   Re   Rf   R   R>   R!   R*   R:   R
   (   Rg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_withNoFillValueê  s
    c       	   C` sn   d }  t  t d ƒ } t | d t ƒA } | j d } t | t t t g ƒ t | |  d d g ƒ Wd  QXd  S(   Ni'  s   example_3_maskedvals.ncR­   t   var3_fillvalAndMissingValuei   i   (   Re   Rf   R   R>   R!   R*   R:   R
   (   t   IRRELEVANT_VALUERg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt&   test_read_withFillValueAndMissingValueó  s    c       	   C` sR   t  t d ƒ }  t |  d t ƒ+ } | j d } t | t t t g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   t   var4_missingValue(   Re   Rf   R   R>   R!   R*   R:   (   Rg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_withMissingValueý  s    c       	   C` sR   t  t d ƒ }  t |  d t ƒ+ } | j d } t | t t t g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   t   var5_fillvalNaN(   Re   Rf   R   R>   R!   R*   R:   (   Rg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_withFillValNaN  s    c       	   C` sR   t  t d ƒ }  t |  d t ƒ+ } | j d } t | t t t g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   t	   var6_char(   Re   Rf   R   R>   R!   R*   R:   (   Rg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_withChar  s    c       
   C` sd   t  t d ƒ }  t |  d t ƒ= } | j d } t | t t g t t g t t g g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   t   var7_2d(   Re   Rf   R   R>   R!   R*   R:   (   Rg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_with2dVar  s    c       	   C` sn   t  t d ƒ }  t |  d t d t ƒA } | j d } t | t t t g ƒ t | d d d g ƒ Wd  QXd  S(   Ns   example_3_maskedvals.ncR­   R.   RÃ   i   i   i   (   Re   Rf   R   R:   R!   R*   R
   (   Rg   R   R¿   (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   test_read_withMaskAndScaleFalse  s
    (B   t   __doc__t
   __future__R    R   R   R3   t   os.pathR   Re   R   R?   R5   RŽ   Rˆ   R   R   t
   contextlibR   t   numpyR   t   numpy.testingR   R	   R
   t   pytestR   RJ   t   scipy.io.netcdfR   R   t   scipy._lib._numpy_compatR   t   scipy._lib._tmpdirsR   t   __file__Rf   R   R   R    R$   R*   RF   RU   R_   Rd   Rh   Rm   Rq   R{   R   R…   RŠ   R’   R–   R›   RŸ   R¬   R½   RÀ   RÂ   RÅ   RÇ   RÉ   RË   RÍ   RÎ   (    (    (    s9   lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyt   <module>   s\   			L		1											
			(	)				
				