Source code for lsst.validate.base.datummixin
# See COPYRIGHT file at the top of the source tree.
from __future__ import print_function, division
import astropy.units
from .datum import Datum
__all__ = ['DatumAttributeMixin']
[docs]class DatumAttributeMixin(object):
"""Mixin that provides a `~lsst.validate.base.Datum`-like API to
non-`~lsst.validate.base.Datum` classes.
"""
def _register_datum_attribute(self, attribute, key, quantity=None,
label=None, description=None,
datum=None):
_value = None
_label = None
_description = None
if datum is not None:
assert isinstance(datum, Datum)
_value = datum.quantity
_label = datum.label
_description = datum.description
if quantity is not None and _value is None:
assert isinstance(quantity, astropy.units.Quantity) or \
isinstance(quantity, str) or isinstance(quantity, bool) or \
isinstance(quantity, int)
_value = quantity
if description is not None:
_description = description
if label is not None:
_label = label
# Use parameter name as label if necessary
if _label is None:
_label = key
attribute[key] = Datum(_value, label=_label, description=_description)