def iterate()

in sdk/python/foundation-models/system/inference/text-to-image/scoring-files/score_online.py [0:0]


def iterate(obj, current_key=None):
    if isinstance(obj, dict):
        severity = 0
        for key, value in obj.items():
            obj[key], value_severity = iterate(value, key)
            severity = max(severity, value_severity)
        return obj, severity
    elif isinstance(obj, list) or isinstance(obj, np.ndarray):
        severity = 0
        for idx in range(len(obj)):
            obj[idx], value_severity = iterate(obj[idx])
            severity = max(severity, value_severity)
        return obj, severity
    elif isinstance(obj, pd.DataFrame):
        severity = 0
        columns = obj.columns
        for i in range(obj.shape[0]):  # iterate over rows
            for j in range(obj.shape[1]):  # iterate over columns
                obj.iloc[i][columns[j]], value_severity = iterate(
                    obj.iloc[i][columns[j]], columns[j]
                )
                severity = max(severity, value_severity)
        return obj, severity
    elif isinstance(obj, str):
        if _check_data_type_from_model_signature(current_key) == "binary":
            severity = analyze_image(obj)
        else:
            severity = analyze_text(obj)
        if severity >= aacs_threshold:
            return "", severity
        else:
            return obj, severity
    else:
        return obj, 0