def __init__(self, key=_ANONYMOUS, default=None, dynamic_default=None,
               required=False, help=None, type=str, private=False):
    if not callable(type):
      raise ValueError("%s: The type argument '%s()' is not callable" % (key, type))

    if default is not None and dynamic_default is not None:
      raise ValueError("Cannot specify both dynamic_default and default for key %s" % key)

    if dynamic_default is not None and not dynamic_default.__doc__ and not private:
      raise ValueError("Dynamic default '%s' must have __doc__ defined!" % (key,))

    if pytype(default) in (int, long, float, complex, bool) and \
          not isinstance(type(default), pytype(default)):
      raise ValueError("%s: '%s' does not match that of the default value %r (%s)"
                      % (key, type, default, pytype(default)))

    if type == bool:
      LOG.warn("%s is of type bool. Resetting it as type 'coerce_bool'."
               " Please fix it permanently" % (key,))
      type = coerce_bool

    self.key = key
    self.default_value = default
    self.dynamic_default = dynamic_default
    self.required = required
    self.help = help
    self.type = type
    self.private = private

    # It makes no sense to be required if you have a default,
    # since you'll never throw the "not set" error.
    assert not (self.required and self.default), \
           "Config cannot be required if it has a default."
Initialize a new Configurable variable.
dataset/ETHPy150Open cloudera/hue/desktop/core/src/desktop/lib/conf.py/Config.__init__