def _load_master_key_provider()

in src/aws_encryption_sdk_cli/internal/master_key_parsing.py [0:0]


def _load_master_key_provider(name):
    # type: (str) -> Callable
    """Find the correct master key provider entry point for the specified name.

    :param str name: Name for which to look up entry point
    :returns: Loaded entry point
    :rtype: callable
    :raises BadUserArgumentError: if entry point cannot be found
    """
    if PLUGIN_NAMESPACE_DIVIDER in name:
        package_name, entry_point_name = name.split(PLUGIN_NAMESPACE_DIVIDER, 1)
    else:
        package_name = ""
        entry_point_name = name

    entry_points = _entry_points()[entry_point_name]

    if not entry_points:
        raise BadUserArgumentError('Requested master key provider not found: "{}"'.format(entry_point_name))

    if not package_name:
        if len(entry_points) == 1:
            return list(entry_points.values())[0].load()

        raise BadUserArgumentError(
            "Multiple entry points discovered and no package specified. Packages discovered registered by: ({})".format(
                ", ".join([str(entry.dist) for entry in entry_points.values()])
            )
        )

    try:
        return entry_points[package_name].load()
    except KeyError:
        raise BadUserArgumentError(
            (
                'Requested master key provider not found: "{requested}".'
                ' Packages discovered for "{entry_point}" registered by: ({discovered})'
            ).format(
                requested=name,
                entry_point=entry_point_name,
                discovered=", ".join([str(entry.dist) for entry in entry_points.values()]),
            )
        )