def validate_input()

in source/src/molecule-unfolding/lambda/TaskParametersLambda/app.py [0:0]


def validate_input(input_dict: dict):
    log.info('validate_input')
    log.info("input_dict: {input_dict}")

    valid_keys = ['version', 'runMode', 'molFile', 'modelVersion', 'optParams',
                  'experimentName', 'modelParams', 'devicesArns', 'hpcResources', 'Comment']
    valid_keys_str = "|".join(valid_keys)
    errors = []

    if '!' in json.dumps(input_dict):
        errors.append("invalid char '!' in input")

    try:
        for k in input_dict.keys():
            if k not in valid_keys:
                errors.append(
                    f"invalid field: {k}, support fields: {valid_keys_str}")
            if 'version' == k:
                if input_dict['version'] not in ['1']:
                    errors.append(
                        f"invalid version, current only support value: '1' ")
            if 'devicesArns' == k:
                if not isinstance(input_dict[k], list):
                    errors.append(f"devicesArns must be an array")

                for arn in list(input_dict[k]):
                    if arn not in default_devices_arns:
                        errors.append(f"unknown devices arn: {arn}")
            if 'modelParams' == k:
                validate_modelParams(input_dict, errors)
            if 'hpcResources' == k:
                validate_hpcResources(input_dict, errors)
            if 'optParams' == k:
                validate_optParams(input_dict, errors)
    except Exception as e:
        errors.append(repr(e))

    log.info(errors)
    return errors