def _serialize_config_for_card()

in yourbench/utils/dataset_engine.py [0:0]


def _serialize_config_for_card(config: dict[str, Any]) -> str:
    """
    Sanitize and serialize pipeline config to YAML for inclusion in dataset card.
    """
    try:
        import yaml
    except ImportError:
        raise ImportError("PyYAML is required for config serialization")
    from copy import deepcopy

    def _sanitize(obj, key=None):
        if isinstance(obj, dict):
            return {k: _sanitize(v, k) for k, v in obj.items()}
        if isinstance(obj, list):
            return [_sanitize(v) for v in obj]
        if isinstance(obj, str):
            # Keep placeholders
            if obj.startswith("$"):
                return obj
            # Mask only api_key arguments
            if key and "api_key" in key.lower():
                return "$API_KEY"
            # Mask OpenAI API keys
            if obj.startswith("sk-"):
                return "$OPENAI_API_KEY"
            # Mask HuggingFace tokens
            if obj.startswith("hf_"):
                return "$HF_TOKEN"
            return obj
        # Explicitly return boolean, integer, float, and None values unchanged
        if obj is None or isinstance(obj, (bool, int, float)):
            return obj
        return obj

    sanitized = _sanitize(deepcopy(config))
    return yaml.safe_dump(sanitized, sort_keys=False, default_flow_style=False)