'Initializer.
Args:
name: The name of the facet.
value_limit: Number of values to return if values is not specified.
ranges: Range of values to return. Cannot be set with values.
values: Specific values to return. Cannot be set with ranges.
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(2)
def __init__(self, name, value_limit=10, ranges=None, values=None):

    self._name = _CheckFacetName(_ConvertToUnicode(name))
    self._value_limit = _CheckFacetValueLimit(value_limit)
    if ((ranges is not None) and (values is not None)):
        raise ValueError('Cannot    specify    both    ranges    and    values.')
    self._ranges = _ConvertToListAndCheckType(ranges, FacetRange, 'ranges')
    self._values = _ConvertToListAndCheckType(values, (basestring, int, float, long), 'values')
    for value in self._values:
        if isinstance(value, (int, float, long)):
            NumberFacet._CheckValue(value)
