def process_row()

in tools/cloud/firehose-to-html.py [0:0]


def process_row(vehicle_name, row, data, s3_links, include_list, exclude_list):
    expanded_data = {"time": row["time"]}
    if "measure_name" not in row or "time" not in row or "vehicleName" not in row:
        raise Exception("Unsupported format")
    if row["vehicleName"] != vehicle_name:
        return
    if "measure_value_BOOLEAN" in row:
        if not is_included(row["measure_name"], include_list, exclude_list):
            return
        expanded_data[row["measure_name"]] = 1 if row["measure_value_BOOLEAN"] else 0
    elif "measure_value_DOUBLE" in row and not math.isnan(row["measure_value_DOUBLE"]):
        if not is_included(row["measure_name"], include_list, exclude_list):
            return
        expanded_data[row["measure_name"]] = row["measure_value_DOUBLE"]
    elif "measure_value_BIGINT" in row:
        if not is_included(row["measure_name"], include_list, exclude_list):
            return
        expanded_data[row["measure_name"]] = row["measure_value_BIGINT"]
    elif "measure_value_VARCHAR" in row:
        if not is_included(row["measure_name"], include_list, exclude_list):
            return
        expanded_data[row["measure_name"]] = row["measure_value_VARCHAR"]
    elif "measure_value_STRUCT" in row and row["measure_value_STRUCT"] is not None:
        for struct_data in row["measure_value_STRUCT"].values():
            if struct_data is None:
                continue
            expand(
                struct_data,
                expanded_data,
                row["measure_name"],
                s3_links,
                include_list,
                exclude_list,
            )
            break
    else:
        raise Exception(f"Unsupported format: {row}")
    data.append(expanded_data)