'Initializer.
Args:
start: Start value for the range, inclusive.
end: End value for the range. exclusive.
Raises:
TypeError: If any of the parameters have invalid types, or an unknown
attribute is passed.
ValueError: If any of the parameters have invalid values.'

@datastore_rpc._positional(1)
def __init__(self, start=None, end=None):

    if ((start is None) and (end is None)):
        raise ValueError('Either    start    or    end    need    to    be    provided    for    a    facet    range.')
    none_or_numeric_type = (type(None), int, float, long)
    self._start = _CheckType(start, none_or_numeric_type, 'start')
    self._end = _CheckType(end, none_or_numeric_type, 'end')
    if (self._start is not None):
        NumberFacet._CheckValue(self._start)
    if (self._end is not None):
        NumberFacet._CheckValue(self._end)
