§
    IR-e¬  ã                   ób   — d Z ddlmZ ddlmZ ddlmZ ddlmZ dgZ	 G d„ deeee¦  «        Z
dS )	zA
This module implements a class based on NDData with all Mixins.
é   )ÚNDArithmeticMixin)Ú	NDIOMixin)ÚNDSlicingMixin)ÚNDDataÚ	NDDataRefc                   ó   — e Zd ZdZdS )r   a  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 arithmetic (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 arithmetic::

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

        >>> data = np.ones((3,3), dtype=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.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú@lib/python3.11/site-packages/astropy/nddata/nddata_withmixins.pyr   r      s   € € € € € ð5ð 5ðn 	€Dr   N)r   Úmixins.ndarithmeticr   Úmixins.ndior   Úmixins.ndslicingr   Únddatar   Ú__all__r   r   r   r   ú<module>r      s›   ððð ð
 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø "Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð àˆ-€ð8	ð 8	ð 8	ð 8	ð 8	Ð! 9¨n¸fñ 8	ô 8	ð 8	ð 8	ð 8	r   