def METHOD_NAME(config_path=None, default_config=None, validator_callback=None):
    """Initialize the config.
    First, read config overrides from ``config_path``. Apply over
    ``default_config``. Send to ``validator_config``, then return a immutabledict
    of the config.
    Args:
        config_path (str, optional): the path to the config file. Defaults to
            ``sys.argv[1]``.
        default_config (dict, optional): the config defaults. These are the
            config values if not overridden in ``config_path``. Defaults to
            ``{}``.
        validator_callback (function, optional): a function that takes a single
            arg (``config``), and raises an exception if invalid. If ``None``,
            don't validate the config. Defaults to ``None``.
    Raises:
        Exception: if the config doesn't pass the ``validator_callback``.
    Returns:
        immutabledict: the config.
    """
    if config_path is None:
        if len(sys.argv) != 2:
            _usage()
        config_path = sys.argv[1]
    config = {} if default_config is None else dict(default_config)
    config.update(load_json_or_yaml(config_path, file_type="yaml", is_path=True))
    validator_callback and validator_callback(config)
    return immutabledict(config)