Ë
    -Œ:j¾  ã                   óŠ   — d Z ddlmZ ddlmZ e G d„ d«      «       Zdee   deeeef      fd„Z	d	eeeef      dee   fd
„Z
y)zíEvaluation results utilities for the `.eval_results/*.yaml` format.

See https://huggingface.co/docs/hub/eval-results for more details.
Specifications are available at https://github.com/huggingface/hub-docs/blob/main/eval_results.yaml.
é    )Ú	dataclass)ÚAnyc                   óØ   — e Zd ZU dZeed<   eed<   eed<   dZedz  ed<   dZedz  ed<   dZ	edz  ed<   dZ
edz  ed	<   dZedz  ed
<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dd„Zy)ÚEvalResultEntrya
  
    Evaluation result entry for the `.eval_results/*.yaml` format.

    Represents evaluation scores stored in model repos that automatically appear on
    the model page and the benchmark dataset's leaderboard.

    For the legacy `model-index` format in `README.md`, use [`EvalResult`] instead.

    See https://huggingface.co/docs/hub/eval-results for more details.

    Args:
        dataset_id (`str`):
            Benchmark dataset ID from the Hub. Example: "cais/hle", "Idavidrein/gpqa".
        task_id (`str`):
            Task identifier within the benchmark. Example: "gpqa_diamond".
        value (`Any`):
            The metric value. Example: 20.90.
        dataset_revision (`str`, *optional*):
            Git SHA of the benchmark dataset.
        verify_token (`str`, *optional*):
            A signature that can be used to prove that evaluation is provably auditable and reproducible.
        date (`str`, *optional*):
            When the evaluation was run (ISO-8601 datetime). Defaults to git commit time.
        source_url (`str`, *optional*):
            Link to the evaluation source (e.g., https://huggingface.co/spaces/SaylorTwift/smollm3-mmlu-pro). Required if `source_name`, `source_user`, or `source_org` is provided.
        source_name (`str`, *optional*):
            Display name for the source. Example: "Eval Logs".
        source_user (`str`, *optional*):
            HF user name for attribution. Example: "celinah".
        source_org (`str`, *optional*):
            HF org name for attribution. Example: "cais".
        notes (`str`, *optional*):
            Details about the evaluation setup. Example: "tools", "no-tools", "chain-of-thought".

    Example:
        ```python
        >>> from huggingface_hub import EvalResultEntry
        >>> # Minimal example with required fields only
        >>> result = EvalResultEntry(
        ...     dataset_id="Idavidrein/gpqa",
        ...     task_id="gpqa_diamond",
        ...     value=0.412,
        ... )
        >>> # Full example with all fields
        >>> result = EvalResultEntry(
        ...     dataset_id="cais/hle",
        ...     task_id="default",
        ...     value=20.90,
        ...     dataset_revision="5503434ddd753f426f4b38109466949a1217c2bb",
        ...     verify_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
        ...     date="2025-01-15T10:30:00Z",
        ...     source_url="https://huggingface.co/datasets/cais/hle",
        ...     source_name="CAIS HLE",
        ...     source_org="cais",
        ...     notes="no-tools",
        ... )

        ```
    Ú
dataset_idÚtask_idÚvalueNÚdataset_revisionÚverify_tokenÚdateÚ
source_urlÚsource_nameÚsource_userÚ
source_orgÚnotesc                 ó|   — | j                   €| j                  €| j                  �| j                  €t	        d«      ‚y y )NzaIf `source_name`, `source_user`, or `source_org` is provided, `source_url` must also be provided.)r   r   r   r   Ú
ValueError)Úselfs    ú_/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/huggingface_hub/_eval_results.pyÚ__post_init__zEvalResultEntry.__post_init__U   sH   € à×ÑÐ(¨D×,<Ñ,<Ð,HÈDÏOÉOÐLgØ�o‰oÐ%ÜØsóð ð &ð Mhó    )ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r
   r   r   r   r   r   r   r   r   © r   r   r   r      s�   … ñ:ðx ƒOØƒLØƒJØ#'Ð�c˜D‘jÓ'Ø#€L�#˜‘*Ó#Ø€Dˆ#�‰*ÓØ!€J��d‘
Ó!Ø"€K��t‘Ó"Ø"€K��t‘Ó"Ø!€J��d‘
Ó!Ø€Eˆ3�‰:Óôr   r   Úentriesr   c                 óF  — g }| D �]  }|j                   |j                  dœ}|j                  �|j                  |d<   ||j                  dœ}|j                  �|j                  |d<   |j
                  �|j
                  |d<   |j                  �dd|j                  i}|j                  �|j                  |d<   |j                  �|j                  |d<   |j                  �|j                  |d	<   ||d
<   |j                  �|j                  |d<   |j                  |«       �Œ |S )aÑ  Convert a list of [`EvalResultEntry`] objects to a YAML-serializable list of dicts.

    This produces the format expected in `.eval_results/*.yaml` files.

    Args:
        entries (`list[EvalResultEntry]`):
            List of evaluation result entries to serialize.

    Returns:
        `list[dict[str, Any]]`: A list of dictionaries ready to be dumped to YAML.

    Example:
        ```python
        >>> from huggingface_hub import EvalResultEntry, eval_result_entries_to_yaml
        >>> entries = [
        ...     EvalResultEntry(dataset_id="cais/hle", task_id="default", value=20.90),
        ...     EvalResultEntry(dataset_id="Idavidrein/gpqa", task_id="gpqa_diamond", value=0.412),
        ... ]
        >>> yaml_data = eval_result_entries_to_yaml(entries)
        >>> yaml_data[0]
        {'dataset': {'id': 'cais/hle', 'task_id': 'default'}, 'value': 20.9}

        ```

        To upload eval results to the Hub:
        ```python
        >>> import yaml
        >>> from huggingface_hub import upload_file, EvalResultEntry, eval_result_entries_to_yaml
        >>> entries = [
        ...     EvalResultEntry(dataset_id="cais/hle", task_id="default", value=20.90),
        ... ]
        >>> yaml_content = yaml.dump(eval_result_entries_to_yaml(entries))
        >>> upload_file(
        ...     path_or_fileobj=yaml_content.encode(),
        ...     path_in_repo=".eval_results/hle.yaml",
        ...     repo_id="your-username/your-model",
        ... )

        ```
    )Úidr   Úrevision)Údatasetr	   ÚverifyTokenr   ÚurlÚnameÚuserÚorgÚsourcer   )r   r   r
   r	   r   r   r   r   r   r   r   Úappend)r    ÚresultÚentryr$   Údatar*   s         r   Úeval_result_entries_to_yamlr/   ^   s*  € ðR €FØó ˆà).×)9Ñ)9ÀeÇmÁmÑ"TˆØ×!Ñ!Ð-Ø"'×"8Ñ"8ˆG�JÑà+2¸U¿[¹[ÑIˆØ×ÑÐ)Ø"'×"4Ñ"4ˆD�ÑØ�:‰:Ð!Ø Ÿ:™:ˆD�‰Là×ÑÐ'Ø&+¨U×-=Ñ-=Ð%>ˆFØ× Ñ Ð,Ø!&×!2Ñ!2��v‘Ø× Ñ Ð,Ø!&×!2Ñ!2��v‘Ø×ÑÐ+Ø %× 0Ñ 0��u‘Ø#ˆD�‰NØ�;‰;Ð"Ø!ŸK™KˆD�‰Mà�‰�dÖð1ð2 €Mr   r.   c                 óô  — g }| D ]ð  }|j                  d|«      }|j                  di «      }|j                  di «      }t        |d   |d   |d   |j                  d«      |j                  d«      |j                  d	«      |r|j                  d
«      nd|r|j                  d«      nd|r|j                  d«      nd|r|j                  d«      nd|j                  d«      ¬«      }|j                  |«       Œò |S )a€  Parse a list of dicts into [`EvalResultEntry`] objects.

    This parses the `.eval_results/*.yaml` format. For the legacy `model-index` format,
    use [`model_index_to_eval_results`] instead.

    Args:
        data (`list[dict[str, Any]]`):
            A list of dictionaries (e.g., parsed from YAML or API response).

    Returns:
        `list[EvalResultEntry]`: A list of evaluation result entry objects.

    Example:
        ```python
        >>> from huggingface_hub import parse_eval_result_entries
        >>> data = [
        ...     {"dataset": {"id": "cais/hle", "task_id": "default"}, "value": 20.90},
        ...     {"dataset": {"id": "Idavidrein/gpqa", "task_id": "gpqa_diamond"}, "value": 0.412},
        ... ]
        >>> entries = parse_eval_result_entries(data)
        >>> entries[0].dataset_id
        'cais/hle'
        >>> entries[0].value
        20.9

        ```
    r.   r$   r*   r"   r	   r   r#   r%   r   r&   Nr'   r(   r)   r   )r   r	   r   r
   r   r   r   r   r   r   r   )Úgetr   r+   )r.   r    ÚitemÚ
entry_datar$   r*   r-   s          r   Úparse_eval_result_entriesr4   ¤   sî   € ð8 €GØò ˆØ—X‘X˜f dÓ+ˆ
Ø—.‘. ¨BÓ/ˆØ—‘ ¨"Ó-ˆÜØ˜t‘}Ø˜WÑ%Ø˜IÑ&Ø$Ÿ[™[¨Ó4Ø#Ÿ™¨Ó6Ø—‘ Ó'Ù,2�v—z‘z %Ô(¸Ù.4˜Ÿ
™
 6Ô*¸$Ù.4˜Ÿ
™
 6Ô*¸$Ù,2�v—z‘z %Ô(¸Ø—.‘. Ó)ô
ˆð 	�‰�uÕð#ð$ €Nr   N)r   Údataclassesr   Útypingr   r   ÚlistÚdictr   r/   r4   r   r   r   ú<module>r9      s~   ðñõ "Ý ð ÷Oð Oó ðOðdC¨¨oÑ)>ð CÀ4ÈÈSÐRUÈXÉÑCWó CðL/ D¨¨c°3¨h©Ñ$8ð /¸TÀ/Ñ=Rô /r   