#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Generic Scan HDF5-like data model
=================================

.. note:: the word *scan* here does not mean only an experimental thing where
one or more axes are moved while one or more signals are collected, the scan can
also be something generated by a simulation/calculation or data analysis.

- The scan is the base thing. It is composed of:

    - *axes*: single or multiple variables changed over time, like a set of
        motors following a trajectory
            *type*: 1D arrays, all the same shape

    - *signals*: signals read by detectors during movent of the axes or
        generated by analysis, that is, for each point in the axes, corresponds
        a point in the signals. Differently that axes, signals may refer to
        multi-dimensional data like images or MCA datasets
            *type*: 1D, 2D or ND arrays for each element in axes

    - *scalars*: key-value type data (0D) not changing over the scan shape.


BaseScan
--------


"""
from .baseh5 import EntryGroup
from .baseh5 import BaseDataset


class Axis(BaseDataset):
    """Axis"""

    def __init__(self):
        pass


class Signal(BaseDataset):
    """Signal"""

    def __init__(self):
        pass


class BaseScan(EntryGroup):
    """HDF5-like representation of a scan

    Example
    -------

    - BaseScan (Group/NXentry):
        - attrs: curve attributes
            - label: curve label
            - ...
        - 'axes' (Group/NXentry):
            - attrs: all axes attributes
                - default: 'axN_name'
                - ...
            - 'ax1_name' (Dataset/NXdata): array
                - attrs: all axes attributes
                    - label: 'ax1_label'
                    - ...
            - ...
        - 'signals' (Group/NXentry):
            - attrs: all signals attributes
                - default: 'sigX_name'
                - ...
            - 'sig1_name' (Dataset/NXdata): array
                - attrs: y attributes
                - label: 'y_label'

    """

    def __init__(self, x_dict, y_dict, parent=None):
        pass
        # super(BaseCurve, self).__init__(name, attrs=attrs, parent=parent)
