def createCDSRequest()

in src/guclimate/core/requests.py [0:0]


def createCDSRequest(config: dict) -> CDSRequest:
    if "product" not in config:
        raise ValueError("Missing product for request")

    product = config["product"]

    def parseParams(acc, key):
        # exclude product and output from request params
        if key in ["product", "output"]:
            return acc

        if key in NUMERIC_PARAMS:
            acc[key] = parseNumeric(config[key])
        elif key == "time":
            acc[key] = parseTime(config[key])
        else:
            acc[key] = config[key]

        return acc

    params = reduce(parseParams, config, {})
    return CDSRequest(product, params)