def to_boto()

in src/sagemaker/apiutils/_boto_functions.py [0:0]


def to_boto(member_vars, member_name_to_boto_name, member_name_to_type):
    """Convert a dict of of snake case names to values into a boto UpperCamelCase representation.

    Args:
        member_vars dict[str, ?]: A map from snake case name to value.
        member_name_to_boto_name dict[str, ?]: A map from snake_case name to boto name.

     Returns:
         dict: boto dict converted to snake case

    """
    to_boto_values = {}
    # Strip out all entries in member_vars that have a None value. None values are treated as
    # not having a value
    # set, required as API operations can have optional parameters that may not take a null value.
    member_vars = {k: v for k, v in member_vars.items() if v is not None}

    # Iterate over each snake_case name and its value and map to a camel case name. If the value
    # is an ApiObject subclass then recursively map its entries.
    for member_name, member_value in member_vars.items():
        boto_name = member_name_to_boto_name.get(member_name, to_camel_case(member_name))
        api_type, is_api_collection_type = member_name_to_type.get(member_name, (None, None))
        if is_api_collection_type and isinstance(member_value, dict):
            boto_value = {
                k: api_type.to_boto(v) if api_type else v for k, v in member_value.items()
            }
        elif is_api_collection_type and isinstance(member_value, list):
            boto_value = [api_type.to_boto(v) if api_type else v for v in member_value]
        else:
            boto_value = api_type.to_boto(member_value) if api_type else member_value
        to_boto_values[boto_name] = boto_value
    return to_boto_values