ó
Ë½÷Xc           @` 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 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 „  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: e; d' k r
e ƒ  n  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_raisest   assert_equalt   run_module_suite(   t   netcdf_file(   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(   s   time(   R   t   historyt   createDimensiont   N_EG_ELSt   createVariablet
   VARTYPE_EGt   npt   aranget   unitst   flusht   close(   t   argst   kwargst   fR   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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   /tmp/pip-build-7oUkmx/scipy/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   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   assert_mask_matches0   s    c          C` s£  t  j ƒ  }  yRt j ƒ  } t  j | ƒ t d d ƒ  } Wd  QXt d d ƒ  } t | ƒ d | j d <Wd  QXt d ƒ 2 } t	 | j
 ƒ 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 d d ƒ 9 } t | d t ƒ } t	 | j
 ƒ t | ƒ Wd  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   rbs   r+bt   app_dimt   app_vart   ii*   (   R/   (   t   ost   getcwdt   tempfilet   mkdtempt   chdirR   R   R#   t   _attributesR   t   use_mmapR   t   Falset   opent   TrueR   R   R    t   shutilt   rmtree(   t   cwdt   tmpdirR   t   fobjt   var(    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_read_write_filesD   sX    




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#   R
   t
   ValueErrorR;   R   t   version_byte(   t   eg_sio1t   f1t   str_valt   eg_sio2t   f2t   eg_sio3t	   eg_sio_64t   f_64(    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_read_write_sioŒ   s&    		

c          C` sZ   xS t  t t d ƒ ƒ D]< }  t |  d ƒ  } Wd  QXt |  d d t ƒ } Wd  QXq Wd  S(   Ns   *.ncRC   R-   (   R   t   pjoint   TEST_DATA_PATHR   R9   (   t   fnameR   (    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_read_example_data¨   s
    c       
   C` sk   t  j ƒ  Y t  j d ƒ t t d ƒ }  t |  d ƒ  } | j d } Wd  QXt t | j	 d ƒ Wd  QXd  S(   Nt   ignores   example_1.ncRC   R   i*   (
   t   warningst   catch_warningst   simplefilterRQ   RR   R   R    R
   t   RuntimeErrort   assignValue(   t   filenameR   t   time_var(    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt$   test_itemset_no_segfault_on_readonly±   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   (   s   time(   R   t   dtypet   itemsizet   appendR   R   R   R   R
   RF   R   (   t   dtypesR   t   dt(    (    s9   /tmp/pip-build-7oUkmx/scipy/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(   Nt   modeR*   t   xi   t   vt   i2i   (   R   R   R   R   R   t   lenRE   R   (   t   streamR   Ri   Rj   t
   len_singlet
   len_double(    (    s9   /tmp/pip-build-7oUkmx/scipy/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(	   NRh   R*   Ri   i   t   v1Rk   t   v2t   v3(   R   R   R   R   R   t   int16Rb   (   R   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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   metresRC   (   s	   float_var(   i
   (   R   R   R   R   R   R   R   RE   R   R    R!   R	   (   t   iot   itemsR   Rv   t   contents(    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_ticket_1720æ   s"    	$		
c       
   ` s¡   t  t d ƒ ‰  t j ƒ  > t j d ƒ t ˆ  d t ƒ }  |  j d } ~ Wd  QXWd  QX‡  f d †  } t j ƒ  % t j d ƒ | ƒ  } | j ƒ  Wd  QXd  S(   Ns   example_1.nct   errorR-   t   latc          ` s+   t  ˆ  d t ƒ }  |  j d SWd  QXd  S(   NR-   R}   (   R   R;   R    (   R   (   R[   (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   doit  s    RU   (	   RQ   RR   RV   RW   RX   R   R;   R    t   sum(   R   Ri   R~   (    (   R[   s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_mmaps_segfaultý   s    	c          C` sb   t  ƒ  }  t |  d ƒ D } | j d d g  ƒ } | j t k sN t | j ƒ ‚ | j ƒ  Wd  QXd  S(   NR*   t   zerodimRk   (   R   R   R   t   isrecR9   t   AssertionErrorR   (   Rx   R   Rj   (    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_zero_dimensional_var  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   witchRC   (   R   R   R7   R   R   (   R[   R   (    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_byte_gatts  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   naughtyRC   (   R   R   R7   R   R   (   R[   R   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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   t   dRi   t   yt   testDataR1   i   R+   iÿÿÿÿi    i   R   (   s   time(   Ri   (   R   (   s   timeRi   R   (   R   R   R   t   NoneR   R   t   arrayt   rangeR   R   Rd   R    R   t   onesR   t   copyR!   R
   t   KeyErrorR7   t	   exceptionR   (   t   dataSizeR   Ri   R   R1   t   art   ex(    (    s9   /tmp/pip-build-7oUkmx/scipy/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*   R1   (   R   (   R   t   linspaceR$   t   masked_greaterRQ   RR   R   R;   R    R   t   missing_valuet
   add_offsett   scale_factort   float32t
   compressedt   roundR	   R   R   Rl   R   R   (	   t   tt   tmRS   R   t   Tempt   foundt   expectedt   newfnamet   temp(    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_maskandscaleh  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(   RQ   RR   R   R;   R    R)   R9   (   RS   R   t   vardata(    (    s9   /tmp/pip-build-7oUkmx/scipy/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   (   RQ   RR   R   R;   R    R)   R9   R   (   RS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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   (   RQ   RR   R   R;   R    R)   R9   R   (   t   IRRELEVANT_VALUERS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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(   RQ   RR   R   R;   R    R)   R9   (   RS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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(   RQ   RR   R   R;   R    R)   R9   (   RS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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(   RQ   RR   R   R;   R    R)   R9   (   RS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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(   RQ   RR   R   R;   R    R)   R9   (   RS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/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   (   RQ   RR   R   R9   R    R)   R   (   RS   R   R¯   (    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   test_read_withMaskAndScaleFalseÅ  s
    t   __main__(<   t   __doc__t
   __future__R    R   R   R2   t   os.pathR   RQ   R   R<   R4   RV   Rx   R   R   t
   contextlibR   t   numpyR   t   numpy.testingR   R	   R
   R   R   t   scipy.io.netcdfR   t   scipy._lib._tmpdirsR   t   __file__RR   R   R   R   R#   R)   RB   RP   RT   R]   Rg   Rp   Ru   R{   R€   R„   R‰   R   R›   R­   R°   R²   Rµ   R·   R¹   R»   R½   R¾   t   __name__(    (    (    s9   /tmp/pip-build-7oUkmx/scipy/scipy/io/tests/test_netcdf.pyt   <module>   sV   (			H										
			(	)				
					