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()]),
)
)