ó
šßÈ[c           @` s–  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l m	 Z	 d d l
 m Z m Z m Z m Z d d l m Z d d l m Z d	 e f d
 „  ƒ  YZ e j j d e e e g ƒ d „  ƒ Z e j j d e e e g ƒ d „  ƒ Z e j j d e e e g ƒ d „  ƒ Z e j j d e e e g ƒ d „  ƒ Z e j j d e e e g ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z  d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   assert_array_equali   (   t   StdDevUncertaintyt   NDUncertaintyt"   IncompatibleUncertaintiesExceptiont   UnknownUncertainty(   t   NDDatai   (   t   unitst   FakeUncertaintyc           B` s;   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s   d S(   Nu   fake(    (   t   self(    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   uncertainty_type*   s    c         C` s   d  S(   N(    (   R   t   datat
   final_data(    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   _propagate_add.   s    c         C` s   d  S(   N(    (   R   R   R   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   _propagate_subtract1   s    c         C` s   d  S(   N(    (   R   R   R   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   _propagate_multiply4   s    c         C` s   d  S(   N(    (   R   R   R   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   _propagate_divide7   s    (   t   __name__t
   __module__t   propertyR   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyR   (   s
   			u   UncertClassc         C` s“   |  d d d g ƒ } t  | j t j d d d g ƒ ƒ |  d d d g d t j ƒ} t  | j t j d d d g ƒ ƒ | j t j k s t ‚ d  S(   Ni   i   i   t   unit(   R   t   arrayt   npt   ut   aduR   t   AssertionError(   t   UncertClasst   fake_uncert(    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_init_fake_with_list=   s
    ""c         C` sÉ   t  j d ƒ j d d ƒ } |  | ƒ } t | j | ƒ | j | k	 sL t ‚ |  | d t ƒ} | j | k ss t ‚ |  | d t j ƒ} t | j | ƒ | j | k	 s­ t ‚ | j	 t j k sÅ t ‚ d  S(   Nid   i
   t   copyR   (
   R   t   aranget   reshapeR   R   R   t   FalseR   R   R   (   R   t   uncertR   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_init_fake_with_ndarrayJ   s    c         C` s  t  j d ƒ j d d ƒ t j } |  | ƒ } t | j | j ƒ | j | j k	 sY t ‚ | j	 t j k sq t ‚ |  | d t
 ƒ} | j | j k	 s› t ‚ | j	 t j k s³ t ‚ |  | d t j ƒ} t | j | j ƒ | j | j k	 só t ‚ | j	 t j k st ‚ d  S(   Ni
   i   i   R    R   (   R   R!   R"   R   R   R   R   t   valueR   R   R#   t   m(   R   R$   R   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_init_fake_with_quantity\   s    "c         C` s€  t  j d ƒ j d d ƒ } |  | ƒ } |  | ƒ } t | j | ƒ | j | k	 sX t ‚ |  | d t ƒ} |  | d t ƒ} t | j | j ƒ | j | j k s§ t ‚ t  j d ƒ j d d ƒ t j } |  | ƒ } |  | ƒ } t | j | j	 ƒ | j | j	 k	 st ‚ | j
 t j k s$t ‚ |  | d t j ƒ} t | j | j	 ƒ | j | j	 k	 sdt ‚ | j
 t j k s|t ‚ d  S(   Ni   i   R    R   (   R   R!   R"   R   R   R   R#   R   R   R&   R   t   cm(   R   R$   t   fake_uncert1t   fake_uncert2(    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_init_fake_with_fakep   s&    "c         C` sÀ   i d d 6d d 6} |  | ƒ } | j  | k s5 t ‚ |  | d t j ƒ} | j  | k s_ t ‚ | j t j k sw t ‚ |  | d t ƒ} | j  | k sž t ‚ t | ƒ t | ƒ k s¼ t ‚ d  S(   Ng333333@u   rdnoiseg333333ã?u   gainR   R    (   R   R   R   t   sR   R#   t   id(   R   R$   R   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt!   test_init_fake_with_somethingElse‹   s    c          C` sw   t  j d ƒ j d d ƒ }  t |  ƒ } t j t ƒ  t | ƒ Wd  QXt |  ƒ } t j t ƒ  t | ƒ Wd  QXd  S(   Ni   i   (   R   R!   R"   R   t   pytestt   raisesR   R   (   R$   t
   std_uncertR   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt%   test_init_fake_with_StdDevUncertaintyŸ   s    c          C` sR   t  d d g ƒ }  |  j d k s' t ‚ t d d g ƒ } | j d k sN t ‚ d  S(   Ni
   i   u   fakeu   std(   R   R   R   R   (   R   R2   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_uncertainty_type¬   s    c          C` sG   t  d d g ƒ }  |  j s" t ‚ t d d g ƒ } | j sC t ‚ d  S(   Ni
   i   (   R   t   supports_correlatedR   R   (   R   R2   (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_uncertainty_correlated³   s    c          ` s­   d d l  m ‰ d d l m ‰ d  ‡ ‡ f d † }  d „  } d „  } |  | t ƒ |  | t ƒ d d l m ‰  ‡  f d	 †  } ‡  f d
 †  } |  | ˆ  ƒ |  | ˆ  ƒ d  S(   Ni    (   t   defaultdict(   t   get_objectsc         ` sÉ   ˆ t  ƒ ‰ x' ˆ ƒ  D] } ˆ t | ƒ c d 7<q W|  ƒ  ˆ t  ƒ ‰  x' ˆ ƒ  D] } ˆ  t | ƒ c d 7<qS W| d k r§ t ‡  ‡ f d †  ˆ  Dƒ ƒ sÅ t ‚ n ˆ  | ˆ | d k sÅ t ‚ d S(   uý   Function based on gc.get_objects to determine if any object or
        a specific object leaks.

        It requires a function to be given and if any objects survive the
        function scope it's considered a leak (so don't return anything).
        i   c         3` s'   |  ] } ˆ  | ˆ | d  k Vq d S(   i    N(    (   t   .0t   k(   t   aftert   before(    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pys	   <genexpr>Ò   s    i    N(   t   intt   typet   Nonet   allR   (   t   funct   specific_objectst   i(   R7   R8   (   R;   R<   sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt	   test_leakÀ   s    (c           S` s   t  t j d ƒ ƒ d  S(   Nid   (   R	   R   t   ones(    (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   non_leaker_nddataÖ   s    c           S` s,   t  t j d ƒ d t t j d ƒ ƒ ƒd  S(   Nid   t   uncertainty(   R	   R   RE   R   (    (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   leaker_nddataÛ   s    i   (   t   NDDataArrayc           ` s   ˆ  t  j d ƒ ƒ d  S(   Nid   (   R   RE   (    (   RI   (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   non_leaker_nddataarrayæ   s    c           ` s,   ˆ  t  j d ƒ d t t  j d ƒ ƒ ƒd  S(   Nid   RG   (   R   RE   R   (    (   RI   (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   leaker_nddataarrayé   s    (   t   collectionsR7   t   gcR8   R?   R	   t   compatRI   (   RD   RF   RH   RJ   RK   (    (   RI   R7   R8   sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_for_leak_with_uncertaintyº   s    		c          C` sI   t  d d d ƒ}  t  d d |  j ƒ} |  j j j |  j k sE t ‚ d  S(   Ni   RG   i   (   R	   RG   t   parent_nddataR   R   (   t   ndd1t   ndd2(    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   test_for_stolen_uncertaintyð   s    (!   t
   __future__R    R   R   R   R0   t   numpyR   t   numpy.testingR   t   nduncertaintyR   R   R   R   t   nddataR	   t    R
   R   R   t   markt   parametrizeR   R%   R(   R,   R/   R3   R4   R6   RO   RS   (    (    (    sF   lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyt   <module>   s,   ""				6