+
    &j                     b   ^ RI t ^ RIt^ RIHt ^ RIHtHt ^ RIt^ RIH	t	 ^ RI
Ht ^ RIHtHtHtHtHtHtHt ^ RIHtHtHtHtHt ^RIHt ^R	IHt ^R
IHtH t H!t! ] PD                  ! ]#4      t$]! ]%4      PL                  R,          R,          t']! ]%4      PL                  R,          R,          t(]PR                  ! R4      t* ! R R4      t+ ! R R]+4      t, ! R R]+4      t- ! R R]+4      t.R R lt/R R lt0R R lt1RRRRR RR!RR"RR#R/R$ R% llt2]!R&RR'RR(RR)RR*RR+RR,RR-R/R. R/ ll4       t3R# )0    N)Path)AnyLiteral)hf_hub_download)upload_file)CardDataDatasetCardData
EvalResultModelCardDataSpaceCardDataeval_results_to_model_indexmodel_index_to_eval_results)HfHubHTTPErrorget_sessionhf_raise_for_statusis_jinja_available	yaml_dump)	constants)EntryNotFoundError)SoftTemporaryDirectoryloggingvalidate_hf_hub_args	templateszmodelcard_template.mdzdatasetcard_template.mdz1^(\s*---[\r\n]+)([\S\s]*?)([\r\n]+---(\r\n|\n|$))c                     a  ] tR t^%t o ]t]tRtRV 3R lR llt	]
R 4       t]P                  V 3R lR l4       tR tV 3R lR	 lt]RV 3R lR ll4       tRV 3R lR lltRV 3R lR llt]RV 3R lR ll4       tRtV tR
# )RepoCardmodelc                &   < V ^8  d   QhRS[ RS[/# )   contentignore_metadata_errorsstrbool)format__classdict__s   "p/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/huggingface_hub/repocard.py__annotate__RepoCard.__annotate__*   s     # # #T #    c                    W n         Wn        R# )a  Initialize a RepoCard from string content. The content should be a
Markdown file with a YAML block at the beginning and a Markdown body.

Args:
    content (`str`): The content of the Markdown file.

Example:
    ```python
    >>> from huggingface_hub.repocard import RepoCard
    >>> text = '''
    ... ---
    ... language: en
    ... license: mit
    ... ---
    ...
    ... # My repo
    ... '''
    >>> card = RepoCard(text)
    >>> card.data.to_dict()
    {'language': 'en', 'license': 'mit'}
    >>> card.text
    '\n# My repo\n'

    ```
> [!TIP]
> Raises the following error:
>
>     - [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
>       when the content of the repo card metadata is not a dictionary.
N)r    r   )selfr   r    s   &&&r&   __init__RepoCard.__init__*   s    D '=#r)   c                    \        V P                  4      ;'       g    RpRV V P                  P                  WP                  R7       V RV V P
                   2# )zLThe content of the RepoCard, including the YAML block and the Markdown body.
---)
line_breakoriginal_order)_detect_line_ending_contentdatato_yaml_original_ordertext)r+   r1   s   & r&   r   RepoCard.contentO   s}     )7??4
ZL!2!2jYmYm!2!n opzo{{~  @J  K  LP  LU  LU  KV  W  	Wr)   c                    < V ^8  d   QhRS[ /# )r   r   r"   )r$   r%   s   "r&   r'   r(   V   s     6 6s 6r)   c                   Wn         \        P                  V4      pV'       dg   VP                  ^4      pWP	                  4       R V n        \        P                  ! V4      pVf   / p\        V\        4      '       g   \        R4      hM\        P                  R4       / pWn        V P                  ! R/ VBRV P                  /B V n        \!        VP#                  4       4      V n        R# )z Set the content of the RepoCard.N)repo card metadata block should be a dictzBRepo card metadata block was not found. Setting CardData to empty.r     )r4   REGEX_YAML_BLOCKsearchgroupendr8   yaml	safe_load
isinstancedict
ValueErrorloggerwarningcard_data_classr    r5   listkeysr7   )r+   r   match
yaml_block	data_dicts   &&   r&   r   r9   U   s       ''0QJ		.DIz2I 	 i.. !LMM / NN_`II((i9iTMhMhi	#INN$45r)   c                    V P                   # N)r   )r+   s   &r&   __str__RepoCard.__str__p   s    ||r)   c                0   < V ^8  d   QhRS[ S[,          /# )r   filepath)r   r"   )r$   r%   s   "r&   r'   r(   s   s      TCZ r)   c                    \        V4      pVP                  P                  RRR7       \        VRRRR7      ;_uu_ 4       pVP	                  \        V 4      4       RRR4       R#   + '       g   i     R# ; i)a3  Save a RepoCard to a file.

Args:
    filepath (`Union[Path, str]`): Filepath to the markdown file to save.

Example:
    ```python
    >>> from huggingface_hub.repocard import RepoCard
    >>> card = RepoCard("---\nlanguage: en\n---\n# This is a test repo card")
    >>> card.save("/tmp/test.md")

    ```
T)parentsexist_okw utf-8modenewlineencodingN)r   parentmkdiropenwriter"   )r+   rU   fs   && r&   saveRepoCard.saves   sW     >dT:(b7CCqGGCI DCCCs    A%%A6	Nc                ^   < V ^8  d   QhRS[ S[,          RS[ R,          RS[ R,          RS[/# )r   repo_id_or_path	repo_typeNtokenr    )r"   r   r#   )r$   r%   s   "r&   r'   r(      sE     3P 3Pt3P :3P Tz	3P
 !%3Pr)   c           	        \        V4      P                  4       '       d   \        V4      pM`\        V\        4      '       d<   \        \	        T\
        P                  T;'       g    V P                  VR7      4      pM\        RV R24      hVP                  RRRR7      ;_uu_ 4       pV ! VP                  4       VR7      uuR	R	R	4       #   + '       g   i     R	# ; i)
a  Initialize a RepoCard from a Hugging Face Hub repo's README.md or a local filepath.

Args:
    repo_id_or_path (`Union[str, Path]`):
        The repo ID associated with a Hugging Face Hub repo or a local filepath.
    repo_type (`str`, *optional*):
        The type of Hugging Face repo to push to. Defaults to None, which will use "model". Other options
        are "dataset" and "space". Not used when loading from a local filepath. If this is called from a child
        class, the default value will be the child class's `repo_type`.
    token (`str`, *optional*):
        Authentication token, obtained with `huggingface_hub.HfApi.login` method. Will default to the stored token.
    ignore_metadata_errors (`str`):
        If True, errors while parsing the metadata section will be ignored. Some information might be lost during
        the process. Use it at your own risk.

Returns:
    [`huggingface_hub.repocard.RepoCard`]: The RepoCard (or subclass) initialized from the repo's
        README.md file or filepath.

Example:
    ```python
    >>> from huggingface_hub.repocard import RepoCard
    >>> card = RepoCard.load("nateraw/food")
    >>> assert card.data.tags == ["generated_from_trainer", "image-classification", "pytorch"]

    ```
)ri   rj   z.Cannot load RepoCard: path not found on disk (z).rrZ   r[   r\   )r    N)r   is_filerE   r"   r   r   REPOCARD_NAMEri   rG   rb   read)clsrh   ri   rj   r    	card_pathrd   s   &&&&&  r&   loadRepoCard.load   s    H  ((**_-I--#++'883==	I MoM^^`abb ^^b7^CCqqvvx8NO DCCCs   (CC	c                .   < V ^8  d   QhRS[ R,          /# )r   ri   Nr;   )r$   r%   s   "r&   r'   r(      s     # ##* #r)   c                   T;'       g    V P                   pRVR\        V 4      /pRR/p \        4       P                  RW#R7      p\	        V4       R#   \
         d.   pXP                  R8X  d   \        TP                  4      hThRp?ii ; i)	a  Validates card against Hugging Face Hub's card validation logic.
Using this function requires access to the internet, so it is only called
internally by [`huggingface_hub.repocard.RepoCard.push_to_hub`].

Args:
    repo_type (`str`, *optional*, defaults to "model"):
        The type of Hugging Face repo to push to. Options are "model", "dataset", and "space".
        If this function is called from a child class, the default will be the child class's `repo_type`.

> [!TIP]
> Raises the following errors:
>
>     - [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
>       if the card fails validation checks.
>     - [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
>       if the request to the Hub API fails for any other reason.
repoTyper   Acceptz
text/plainz(https://huggingface.co/api/validate-yaml)jsonheadersi  N)	ri   r"   r   postr   r   status_coderG   r8   )r+   ri   bodyry   responseexcs   &&    r&   validateRepoCard.validate   s    ( //	 	s4y
 \*	"}))*T[_)qH) 	##s* //			s   &A B(BBc                   < V ^8  d   QhRS[ RS[ R,          RS[ R,          RS[ R,          RS[ R,          RS[ R,          RS[R,          R	S[ R,          /# )
r   repo_idrj   Nri   commit_messagecommit_descriptionrevision	create_prparent_commitr!   )r$   r%   s   "r&   r'   r(      sw     = == Tz= :	=
 d
=  $J= *= $;= Tz=r)   c	                   T;'       g    V P                   pV P                  VR7       \        4       ;_uu_ 4       p	\        V	4      \        P
                  ,          p
V
P                  \        V 4      RR7       \        \        V
4      \        P
                  VVVVVVVVR7
      pRRR4       V#   + '       g   i     X# ; i)ar  Push a RepoCard to a Hugging Face Hub repo.

Args:
    repo_id (`str`):
        The repo ID of the Hugging Face Hub repo to push to. Example: "nateraw/food".
    token (`str`, *optional*):
        Authentication token, obtained with `huggingface_hub.HfApi.login` method. Will default to
        the stored token.
    repo_type (`str`, *optional*, defaults to "model"):
        The type of Hugging Face repo to push to. Options are "model", "dataset", and "space". If this
        function is called by a child class, it will default to the child class's `repo_type`.
    commit_message (`str`, *optional*):
        The summary / title / first line of the generated commit.
    commit_description (`str`, *optional*)
        The description of the generated commit.
    revision (`str`, *optional*):
        The git revision to commit from. Defaults to the head of the `"main"` branch.
    create_pr (`bool`, *optional*):
        Whether or not to create a Pull Request with this commit. Defaults to `False`.
    parent_commit (`str`, *optional*):
        The OID / SHA of the parent commit, as a hexadecimal string. Shorthands (7 first characters) are also supported.
        If specified and `create_pr` is `False`, the commit will fail if `revision` does not point to `parent_commit`.
        If specified and `create_pr` is `True`, the pull request will be created from `parent_commit`.
        Specifying `parent_commit` ensures the repo has not changed before committing the changes, and can be
        especially useful if the repo is updated / committed too concurrently.
Returns:
    `str`: URL of the commit which updated the card metadata.
)ri   r[   )r_   )
path_or_fileobjpath_in_repor   rj   ri   r   r   r   r   r   N)	ri   r   r   r   r   rn   
write_textr"   r   )r+   r   rj   ri   r   r   r   r   r   tmpdirtmp_pathurls   &&&&&&&&&   r&   push_to_hubRepoCard.push_to_hub   s    R //	 		*#%%F|i&=&==HD	G< #H&44#-#5#!+C & 
 &% 
s   A)B..B?	c                H   < V ^8  d   QhRS[ RS[R,          RS[R,          /# r   	card_datatemplate_pathNtemplate_str)r   r"   )r$   r%   s   "r&   r'   r(   "  s1     + ++ Tz+ Dj	+r)   c                   \        4       '       d   ^ RIpM\        R4      hVP                  4       P	                  4       pVP                  V4       Ve   \        V4      P                  4       pVf$   \        V P                  4      P                  4       pVP                  V4      pVP                  ! RRVP                  4       /VB pV ! V4      # )a  Initialize a RepoCard from a template. By default, it uses the default template.

Templates are Jinja2 templates that can be customized by passing keyword arguments.

Args:
    card_data (`huggingface_hub.CardData`):
        A huggingface_hub.CardData instance containing the metadata you want to include in the YAML
        header of the repo card on the Hugging Face Hub.
    template_path (`str`, *optional*):
        A path to a markdown file with optional Jinja template variables that can be filled
        in with `template_kwargs`. Defaults to the default template.
    template_str (`str`, *optional*):
        A raw Jinja template string with optional variables. Used when neither `template_path`
        nor the default template is appropriate. Ignored if `template_path` is also provided.

Returns:
    [`huggingface_hub.repocard.RepoCard`]: A RepoCard instance with the specified card data and content from the
    template.
NzjUsing RepoCard.from_template requires Jinja2 to be installed. Please install it with `pip install Jinja2`.r   r>   )r   jinja2ImportErrorto_dictcopyupdater   	read_textdefault_template_pathTemplaterenderr6   )	rp   r   r   r   template_kwargsr   kwargstemplater   s	   &&&&,    r&   from_templateRepoCard.from_template!  s    6 9 
 ""$))+o&$.88:L 9 9:DDFL??<0//JI,=,=,?J6J7|r)   )r4   r7   r   r5   r    r8   )F)NNFrQ   )NNNNNNNNN)__name__
__module____qualname____firstlineno__r   rJ   TEMPLATE_MODELCARD_PATHr   ri   r,   propertyr   setterrR   re   classmethodrr   r   r   r   __static_attributes____classdictcell__)r%   s   @r&   r   r   %   s     O3I# #J W W
 ^^6 64 ( 3P 3P 3Pj# #J= =~ + + +r)   r   c                   X   a a ] tR tRt o]t]tRt]	RV3R lV 3R lll4       t
RtVtV ;t# )	ModelCardiP  r   c                H   < V ^8  d   QhRS[ RS[R,          RS[R,          /# r   )r   r"   )r$   r%   s   "r&   r'   ModelCard.__annotate__V  s;     K` K` K` TzK` Dj	K`r)   c                (   < \         SV `  ! WV3/ VB # )a
  Initialize a ModelCard from a template. By default, it uses the default template, which can be found here:
https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/templates/modelcard_template.md

Templates are Jinja2 templates that can be customized by passing keyword arguments.

Args:
    card_data (`huggingface_hub.ModelCardData`):
        A huggingface_hub.ModelCardData instance containing the metadata you want to include in the YAML
        header of the model card on the Hugging Face Hub.
    template_path (`str`, *optional*):
        A path to a markdown file with optional Jinja template variables that can be filled
        in with `template_kwargs`. Defaults to the default template.
    template_str (`str`, *optional*):
        A raw Jinja template string with optional variables. Used when neither `template_path`
        nor the default template is appropriate. Ignored if `template_path` is also provided.

Returns:
    [`huggingface_hub.ModelCard`]: A ModelCard instance with the specified card data and content from the
    template.

Example:
    ```python
    >>> from huggingface_hub import ModelCard, ModelCardData, EvalResult

    >>> # Using the Default Template
    >>> card_data = ModelCardData(
    ...     language='en',
    ...     license='mit',
    ...     library_name='timm',
    ...     tags=['image-classification', 'resnet'],
    ...     datasets=['beans'],
    ...     metrics=['accuracy'],
    ... )
    >>> card = ModelCard.from_template(
    ...     card_data,
    ...     model_description='This model does x + y...'
    ... )

    >>> # Including Evaluation Results
    >>> card_data = ModelCardData(
    ...     language='en',
    ...     tags=['image-classification', 'resnet'],
    ...     eval_results=[
    ...         EvalResult(
    ...             task_type='image-classification',
    ...             dataset_type='beans',
    ...             dataset_name='Beans',
    ...             metric_type='accuracy',
    ...             metric_value=0.9,
    ...         ),
    ...     ],
    ...     model_name='my-cool-model',
    ... )
    >>> card = ModelCard.from_template(card_data)

    >>> # Using a Custom Template
    >>> card_data = ModelCardData(
    ...     language='en',
    ...     tags=['image-classification', 'resnet']
    ... )
    >>> card = ModelCard.from_template(
    ...     card_data=card_data,
    ...     template_path='./src/huggingface_hub/templates/modelcard_template.md',
    ...     custom_template_var='custom value',  # will be replaced in template if it exists
    ... )

    ```
superr   rp   r   r   r   r   	__class__s   &&&&,r&   r   ModelCard.from_templateU  s    X w$Y|___r)   r>   r   )r   r   r   r   r   rJ   r   r   ri   r   r   r   r   __classcell__r   r%   s   @@r&   r   r   P  s9     #O3IK` K` K` K`r)   r   c                   X   a a ] tR tRt o]t]tRt]	RV3R lV 3R lll4       t
RtVtV ;t# )DatasetCardi  datasetc                H   < V ^8  d   QhRS[ RS[R,          RS[R,          /# r   )r	   r"   )r$   r%   s   "r&   r'   DatasetCard.__annotate__  s6     ;` ;`";` Tz;` Dj	;`r)   c                (   < \         SV `  ! WV3/ VB # )aG  Initialize a DatasetCard from a template. By default, it uses the default template, which can be found here:
https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/templates/datasetcard_template.md

Templates are Jinja2 templates that can be customized by passing keyword arguments.

Args:
    card_data (`huggingface_hub.DatasetCardData`):
        A huggingface_hub.DatasetCardData instance containing the metadata you want to include in the YAML
        header of the dataset card on the Hugging Face Hub.
    template_path (`str`, *optional*):
        A path to a markdown file with optional Jinja template variables that can be filled
        in with `template_kwargs`. Defaults to the default template.
    template_str (`str`, *optional*):
        A raw Jinja template string with optional variables. Used when neither `template_path`
        nor the default template is appropriate. Ignored if `template_path` is also provided.

Returns:
    [`huggingface_hub.DatasetCard`]: A DatasetCard instance with the specified card data and content from the
    template.

Example:
    ```python
    >>> from huggingface_hub import DatasetCard, DatasetCardData

    >>> # Using the Default Template
    >>> card_data = DatasetCardData(
    ...     language='en',
    ...     license='mit',
    ...     annotations_creators='crowdsourced',
    ...     task_categories=['text-classification'],
    ...     task_ids=['sentiment-classification', 'text-scoring'],
    ...     multilinguality='monolingual',
    ...     pretty_name='My Text Classification Dataset',
    ... )
    >>> card = DatasetCard.from_template(
    ...     card_data,
    ...     pretty_name=card_data.pretty_name,
    ... )

    >>> # Using a Custom Template
    >>> card_data = DatasetCardData(
    ...     language='en',
    ...     license='mit',
    ... )
    >>> card = DatasetCard.from_template(
    ...     card_data=card_data,
    ...     template_path='./src/huggingface_hub/templates/datasetcard_template.md',
    ...     custom_template_var='custom value',  # will be replaced in template if it exists
    ... )

    ```
r   r   s   &&&&,r&   r   DatasetCard.from_template  s    x w$Y|___r)   r>   r   )r   r   r   r   r	   rJ   TEMPLATE_DATASETCARD_PATHr   ri   r   r   r   r   r   r   s   @@r&   r   r     s5     %O5I;` ;` ;` ;`r)   r   c                   "    ] tR tRt]t]tRtRt	R# )	SpaceCardi  spacer>   N)
r   r   r   r   r   rJ   r   r   ri   r   r>   r)   r&   r   r     s    #O3Ir)   r   c                >    V ^8  d   QhR\         R\        R,          /# )r   r   return)r/   
N)r"   r   )r$   s   "r&   r'   r'     s        1I)J r)   c                    V P                  R4      pV P                  R4      pV P                  R4      pW,           ^ 8X  d   R# W18X  d	   W28X  d   R# W8  d   R# R# )zDetect the line ending of a string. Used by RepoCard to avoid making huge diff on newlines.

Uses same implementation as in Hub server, keep it in sync.

Returns:
    str: The detected line ending of the string.
r   r/   r   N)count)r   crlfcrlfs   &   r&   r3   r3     sQ     
t	B	t	B== D	w!|zdj	wr)   c                T    V ^8  d   QhR\         \        ,          R\        R,          /# )r   
local_pathr   Nr"   r   rF   )r$   s   "r&   r'   r'     s"     
 
cDj 
TD[ 
r)   c                    \        V 4      P                  4       p\        P                  V4      pV'       dO   VP	                  ^4      p\
        P                  ! V4      pVe   \        V\        4      '       d   V# \        R4      hR# )r   Nr=   )
r   r   r?   r@   rA   rC   rD   rE   rF   rG   )r   r   rM   rN   r5   s   &    r&   metadata_loadr     sh    :((*G##G,E[[^
~~j)<:dD11KDEEr)   c                J    V ^8  d   QhR\         \        ,          R\        RR/# )r   r   r5   r   Nr   )r$   s   "r&   r'   r'     s%      cDj   r)   c                (   RpRp\         P                  P                  V 4      '       d   \        V RRR7      ;_uu_ 4       pVP	                  4       p\        VP                  \        4      '       d   VP                  ^ ,          pM,\        VP                  \        4      '       d   VP                  pRRR4       \        V RRRR7      ;_uu_ 4       p\        VRVR7      p\        P                  V4      pV'       d;   VRVP                  4        R	V V R	V 2,           W6P                  4       R ,           pMR	V V R	V V 2pVP                  V4       VP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
a  
Save the metadata dict in the upper YAML part Trying to preserve newlines as
in the existing file. Docs about open() with newline="" parameter:
https://docs.python.org/3/library/functions.html?highlight=open#open Does
not work with "^M" linebreaks, which are replaced by 

r/   rZ   utf8)r^   r_   NrY   F)	sort_keysr1   r0   )ospathexistsrb   ro   rE   newlinestupler"   r   r?   r@   startrB   rc   close)r   r5   r1   r   readme	data_yamlrM   outputs   &&      r&   metadata_saver     s;    JG	ww~~j!!*b6::fkkmG&//511#__Q/
FOOS11#__
 ; 
j#rF	;	;vde
K	 ''0_u{{}-#j\)CPZ|0\\_fgpgpgrgt_uuF:,ykZL	JFV 
<	; ;: 
<	;	;s    A1E-BF -E=	 F	metrics_configmetrics_verifiedFdataset_configdataset_splitdataset_revisionmetrics_verification_tokenc                   V ^8  d   QhR\         R\         R\         R\         R\         R\        R\         R\         R	\         R
,          R\        R\         R
,          R\         R
,          R\         R
,          R\         R
,          R\        /# )r   model_pretty_nametask_pretty_nametask_idmetrics_pretty_name
metrics_idmetrics_valuedataset_pretty_name
dataset_idr   Nr   r   r   r   r   r   )r"   r   r#   rF   )r$   s   "r&   r'   r'   0  s     } }} } 	}
 } } } } } $J} } $J} :} Dj} !$d
}  
!}r)   c                N    R\        V \        VVVVVVVVV	VV
VVR7      .R7      /# )u  
Creates a metadata dict with the result from a model evaluated on a dataset.

Args:
    model_pretty_name (`str`):
        The name of the model in natural language.
    task_pretty_name (`str`):
        The name of a task in natural language.
    task_id (`str`):
        Example: automatic-speech-recognition. A task id.
    metrics_pretty_name (`str`):
        A name for the metric in natural language. Example: Test WER.
    metrics_id (`str`):
        Example: wer. A metric id from https://hf.co/metrics.
    metrics_value (`Any`):
        The value from the metric. Example: 20.0 or "20.0 ± 1.2".
    dataset_pretty_name (`str`):
        The name of the dataset in natural language.
    dataset_id (`str`):
        Example: common_voice. A dataset id from https://hf.co/datasets.
    metrics_config (`str`, *optional*):
        The name of the metric configuration used in `load_metric()`.
        Example: bleurt-large-512 in `load_metric("bleurt", "bleurt-large-512")`.
    metrics_verified (`bool`, *optional*, defaults to `False`):
        Indicates whether the metrics originate from Hugging Face's [evaluation service](https://huggingface.co/spaces/autoevaluate/model-evaluator) or not. Automatically computed by Hugging Face, do not set.
    dataset_config (`str`, *optional*):
        Example: fr. The name of the dataset configuration used in `load_dataset()`.
    dataset_split (`str`, *optional*):
        Example: test. The name of the dataset split used in `load_dataset()`.
    dataset_revision (`str`, *optional*):
        Example: 5503434ddd753f426f4b38109466949a1217c2bb. The name of the dataset dataset revision
        used in `load_dataset()`.
    metrics_verification_token (`bool`, *optional*):
        A JSON Web Token that is used to verify whether the metrics originate from Hugging Face's [evaluation service](https://huggingface.co/spaces/autoevaluate/model-evaluator) or not.

Returns:
    `dict`: a metadata dict with the result from a model evaluated on a dataset.

Example:
    ```python
    >>> from huggingface_hub import metadata_eval_result
    >>> results = metadata_eval_result(
    ...         model_pretty_name="RoBERTa fine-tuned on ReactionGIF",
    ...         task_pretty_name="Text Classification",
    ...         task_id="text-classification",
    ...         metrics_pretty_name="Accuracy",
    ...         metrics_id="accuracy",
    ...         metrics_value=0.2662102282047272,
    ...         dataset_pretty_name="ReactionJPEG",
    ...         dataset_id="julien-c/reactionjpeg",
    ...         dataset_config="default",
    ...         dataset_split="test",
    ... )
    >>> results == {
    ...     'model-index': [
    ...         {
    ...             'name': 'RoBERTa fine-tuned on ReactionGIF',
    ...             'results': [
    ...                 {
    ...                     'task': {
    ...                         'type': 'text-classification',
    ...                         'name': 'Text Classification'
    ...                     },
    ...                     'dataset': {
    ...                         'name': 'ReactionJPEG',
    ...                         'type': 'julien-c/reactionjpeg',
    ...                         'config': 'default',
    ...                         'split': 'test'
    ...                     },
    ...                     'metrics': [
    ...                         {
    ...                             'type': 'accuracy',
    ...                             'value': 0.2662102282047272,
    ...                             'name': 'Accuracy',
    ...                             'verified': False
    ...                         }
    ...                     ]
    ...                 }
    ...             ]
    ...         }
    ...     ]
    ... }
    True

    ```
model-index)	task_name	task_typemetric_namemetric_typemetric_valuedataset_namedataset_typemetric_configverifiedverify_tokenr   r   r   )
model_nameeval_results)r   r
   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   $$$$$$$$$$$$$$r&   metadata_eval_resultr  0  sQ    R 	2(.% 3 *!.!4!+"0-!;#1"/%5
 r)   ri   	overwriterj   r   r   r   r   r   c                    V ^8  d   QhR\         R\        R\         R,          R\        R\         R,          R\         R,          R\         R,          R	\         R,          R
\        R\         R,          R\         /# )r   r   metadatari   Nr  rj   r   r   r   r   r   r   )r"   rF   r#   )r$   s   "r&   r'   r'     s     R RRR Tz	R
 R :R $JR d
R DjR R :R 	Rr)   c                   Ve   TMRpVe   VR8X  d   \         p
M*VR8X  d   \        p
MVR8X  d   \        p
M\        RV 24      h V
P	                  WVR7      pVP                  4        EF  w  rVR8X  EdM   R	V^ ,          9  d   \        VR
V 4      V^ ,          R	&   \        V4      w  rVP                  P                  f#   WP                  n        WP                  n        Kz  VP                  P                  pV F  pRpV F  pVP                  V4      '       g   K  VV8w  d/   V'       g'   \        RVP                   RVP                    R24      hRpVP"                  Vn        VP$                  RJ g   Kv  VP&                  Vn        K  	  V'       d   K  VP                  P                  P)                  V4       K  	  EKZ  VP                  P+                  V4      e8   V'       g0   VP                  P+                  V4      V8w  d   \        RV R24      hWP                  V&   EK  	  VP-                  V VVVVVVV	R7      #   \
         d0    TR8X  d   \        R4      hT
P                  \        4       4      p EL#i ; i)a  
Updates the metadata in the README.md of a repository on the Hugging Face Hub.
If the README.md file doesn't exist yet, a new one is created with metadata and
the default ModelCard or DatasetCard template. For `space` repo, an error is thrown
as a Space cannot exist without a `README.md` file.

Args:
    repo_id (`str`):
        The name of the repository.
    metadata (`dict`):
        A dictionary containing the metadata to be updated.
    repo_type (`str`, *optional*):
        Set to `"dataset"` or `"space"` if updating to a dataset or space,
        `None` or `"model"` if updating to a model. Default is `None`.
    overwrite (`bool`, *optional*, defaults to `False`):
        If set to `True` an existing field can be overwritten, otherwise
        attempting to overwrite an existing field will cause an error.
    token (`str`, *optional*):
        The Hugging Face authentication token.
    commit_message (`str`, *optional*):
        The summary / title / first line of the generated commit. Defaults to
        `f"Update metadata with huggingface_hub"`
    commit_description (`str` *optional*)
        The description of the generated commit
    revision (`str`, *optional*):
        The git revision to commit from. Defaults to the head of the
        `"main"` branch.
    create_pr (`boolean`, *optional*):
        Whether or not to create a Pull Request from `revision` with that commit.
        Defaults to `False`.
    parent_commit (`str`, *optional*):
        The OID / SHA of the parent commit, as a hexadecimal string. Shorthands (7 first characters) are also supported.
        If specified and `create_pr` is `False`, the commit will fail if `revision` does not point to `parent_commit`.
        If specified and `create_pr` is `True`, the pull request will be created from `parent_commit`.
        Specifying `parent_commit` ensures the repo has not changed before committing the changes, and can be
        especially useful if the repo is updated / committed too concurrently.
Returns:
    `str`: URL of the commit which updated the card metadata.

Example:
    ```python
    >>> from huggingface_hub import metadata_update
    >>> metadata = {'model-index': [{'name': 'RoBERTa fine-tuned on ReactionGIF',
    ...             'results': [{'dataset': {'name': 'ReactionGIF',
    ...                                      'type': 'julien-c/reactiongif'},
    ...                           'metrics': [{'name': 'Recall',
    ...                                        'type': 'recall',
    ...                                        'value': 0.7762102282047272}],
    ...                          'task': {'name': 'Text Classification',
    ...                                   'type': 'text-classification'}}]}]}
    >>> url = metadata_update("hf-internal-testing/reactiongif-roberta-card", metadata)

    ```
z$Update metadata with huggingface_hubr   r   r   zUnknown repo_type: )rj   ri   zJCannot update metadata on a Space that doesn't contain a `README.md` file.r   namer   Fz6You passed a new value for the existing metric 'name: z, type: z6'. Set `overwrite=True` to overwrite existing metrics.Tz9You passed a new value for the existing meta data field 'z7'. Set `overwrite=True` to overwrite existing metadata.)rj   ri   r   r   r   r   r   )r   r   r   rG   rr   r   r   r   itemsgetattrr   r5   r   r   is_equal_except_valuer   r   r   r   r   appendgetr   )r   r  ri   r  rj   r   r   r   r   r   
card_classcardkeyvaluer   new_resultsexisting_results
new_resultresult_foundexisting_results   &&$$$$$$$$          r&   metadata_updater    ss   H (6'A^GmN I0
	i	 
	g	
.yk:;;4wyI nn&
-U1X%#*4w#Ga &A%&H#Jyy%%-)4		&'1		$#'99#9#9  #.J#(L+;%;;OLL)_<Y&0%//9/E/E.Fh'1'='=&> ?F%F'" !" ,0L;E;R;RO8.774??I?V?V < ,< (<		..55jA! #.& yy}}S!-iDIIMMRUDVZ_D_ OPSu UL L 
 "'		#W 'Z %-#  	 	k  4ijj ''
34s   I 6I=<I=)4r   repathlibr   typingr   r   rC   huggingface_hub.file_downloadr   huggingface_hub.hf_apir   huggingface_hub.repocard_datar   r	   r
   r   r   r   r   huggingface_hub.utilsr   r   r   r   r   rZ   r   errorsr   utilsr   r   r   
get_loggerr   rH   __file__r`   r   r   compiler?   r   r   r   r   r3   r   r   r  r  r>   r)   r&   <module>r"     s   	 	    9 .   r q  & H H 
		H	% x.//+=@WW  N11K?B[[  ::RS h hV	Q` Q`hA`( A`H *
@} "&} #} "&} !%} $(} .2}@ R !	R
 R R "&R &*R  R R !%R Rr)   