ó
šßÈ[c           @` s”   d  Z  d d l m Z m Z m Z m Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z d g Z d	 e e e	 e f d
 „  ƒ  YZ d S(   uA   
This module implements a class based on NDData with all Mixins.
i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsi   (   t   NDData(   t   NDSlicingMixin(   t   NDArithmeticMixin(   t	   NDIOMixinu	   NDDataReft	   NDDataRefc           B` s   e  Z d  Z RS(   u  Implements `NDData` with all Mixins.

    This class implements a `NDData`-like container that supports reading and
    writing as implemented in the ``astropy.io.registry`` and also slicing
    (indexing) and simple arithmetics (add, subtract, divide and multiply).

    Notes
    -----
    A key distinction from `NDDataArray` is that this class does not attempt
    to provide anything that was not defined in any of the parent classes.

    See also
    --------
    NDData
    NDArithmeticMixin
    NDSlicingMixin
    NDIOMixin

    Examples
    --------
    The mixins allow operation that are not possible with `NDData` or
    `NDDataBase`, i.e. simple arithmetics::

        >>> from astropy.nddata import NDDataRef, StdDevUncertainty
        >>> import numpy as np

        >>> data = np.ones((3,3), dtype=np.float)
        >>> ndd1 = NDDataRef(data, uncertainty=StdDevUncertainty(data))
        >>> ndd2 = NDDataRef(data, uncertainty=StdDevUncertainty(data))

        >>> ndd3 = ndd1.add(ndd2)
        >>> ndd3.data  # doctest: +FLOAT_CMP
        array([[2., 2., 2.],
               [2., 2., 2.],
               [2., 2., 2.]])
        >>> ndd3.uncertainty.array  # doctest: +FLOAT_CMP
        array([[1.41421356, 1.41421356, 1.41421356],
               [1.41421356, 1.41421356, 1.41421356],
               [1.41421356, 1.41421356, 1.41421356]])

    see `NDArithmeticMixin` for a complete list of all supported arithmetic
    operations.

    But also slicing (indexing) is possible::

        >>> ndd4 = ndd3[1,:]
        >>> ndd4.data  # doctest: +FLOAT_CMP
        array([2., 2., 2.])
        >>> ndd4.uncertainty.array  # doctest: +FLOAT_CMP
        array([1.41421356, 1.41421356, 1.41421356])

    See `NDSlicingMixin` for a description how slicing works (which attributes)
    are sliced.
    (   t   __name__t
   __module__t   __doc__(    (    (    s?   lib/python2.7/site-packages/astropy/nddata/nddata_withmixins.pyR      s   6N(   R   t
   __future__R    R   R   R   t   nddataR   t   mixins.ndslicingR   t   mixins.ndarithmeticR   t   mixins.ndioR   t   __all__R   (    (    (    s?   lib/python2.7/site-packages/astropy/nddata/nddata_withmixins.pyt   <module>   s   "	