'The base object to define the option(s) to be stored in the DB.
:param option_id: The ID of the option. This will be used to lookup
the option value from the DB and should not be
changed once defined as the values will no longer
be correctly mapped to the keys in the user_ref when
retrieving the data from the DB.
:type option_id: str
:param option_name: The name of the option. This value will be used
to map the value from the user request on a
resource update to the correct option id to be
stored in the database. This value should not be
changed once defined as it will change the
resulting keys in the user_ref.
:type option_name: str
:param validator: A callable that raises TypeError if the value to be
persisted is incorrect. A single argument of the
value to be persisted will be passed to it. No return
value is expected.
:type validator: callable
:param json_schema_validation: Dictionary defining the JSON schema
validation for the option itself. This
is used to generate the JSON Schema
validator(s) used at the API layer
:type json_schema_validation: dict'

def __init__(self, option_id, option_name, validator=_validator, json_schema_validation=None):

    if ((not isinstance(option_id, six.string_types)) and (len(option_id) == 4)):
        raise TypeError((_('`option_id`    must    be    a    string,    got    %r') % option_id))
    elif (len(option_id) != 4):
        raise ValueError((_('`option_id`    must    be    4    characters    in    length.    Got    %r') % option_id))
    if (not isinstance(option_name, six.string_types)):
        raise TypeError((_('`option_name`    must    be    a    string.    Got    %r') % option_name))
    self._option_id = option_id
    self._option_name = option_name
    self.validator = validator
    self._json_schema_validation = json_schema_validation
