§
    ìXÊj†(  ã                   ó&  — d Z ddlZddlmZmZmZ ddlZddlmZ ddl	m
Z
 ddlmZmZmZmZmZmZ ddlmZmZ dd	lmZ  e ee
¦  «        d
         ¦  «        Z ej        dd„ eD ¦   «         e¬¦  «        Z ee¦  «        Z ej        dd„ eD ¦   «         e¬¦  «        Zdee         dee
         fd„Zdee         dz  dedz  dedz  deeef         dz  fd„Z  ed¬¦  «        Z!e! "                    dg d¢¬¦  «        	 dMdeddfd„¦   «         Z#e! "                    ddg¬¦  «        	 dMd ee ed!¬¦  «        f         deddfd"„¦   «         Z$e! "                    d#g d$¢¬¦  «        	 	 	 	 	 	 	 dNd%eee          ed&d'¬¦  «        f         d(eedz   ed)¬¦  «        f         deedz   ed*d+¬¦  «        f         d,eee         dz   ed-d.¬¦  «        f         d/eedz   ed0¬¦  «        f         dedededdfd1„¦   «         Z%e! "                    d2g d3¢¬¦  «        	 	 	 	 	 	 	 	 dOd ee ed4¬¦  «        f         d(eedz   ed5¬¦  «        f         deedz   ed*d6¬¦  «        f         d%eee         dz   ed&d7¬¦  «        f         d,eee         dz   ed-d8¬¦  «        f         d/eedz   ed9¬¦  «        f         dedededdfd:„¦   «         Z&e! "                    d;d<g¬¦  «        	 dMd ee ed=¬¦  «        f         deddfd>„¦   «         Z'e! "                    d?d@g¬¦  «        	 dMd ee edA¬¦  «        f         deddfdB„¦   «         Z(e! "                    dCdDdEg¬¦  «        	 	 dPd ee edG¬¦  «        f         dHee) edIdJdK¬¦  «        f         deddfdL„¦   «         Z*dS )Qz=Contains commands to manage webhooks on the Hugging Face Hub.é    N)Ú	AnnotatedÚget_argsÚget_type_hints)ÚWEBHOOK_DOMAIN_T)ÚWebhookWatchedItemé   )ÚSecretsFileOptÚ
SecretsOptÚTokenOptÚ
get_hf_apiÚparse_env_mapÚtyper_factory)ÚArgumentÚOption)ÚoutÚtypeÚWatchedItemTypec                 ó   — i | ]}||“ŒS © r   )Ú.0Úts     úMC:\Projects\Historical\venv\Lib\site-packages\huggingface_hub/cli/webhooks.pyú
<dictcomp>r   &   s   € Ð/MÐ/MÐ/M¸°°1Ð/MÐ/MÐ/Mó    )r   ÚWebhookDomainc                 ó   — i | ]}||“ŒS r   r   ©r   Úds     r   r   r   )   s   € Ð+HÐ+HÐ+H°Q¨A¨qÐ+HÐ+HÐ+Hr   ÚvaluesÚreturnc           	      ó~  — g }t          t          ¦  «        }| D ]£}d|vr.t          j        d|› dd                     |¦  «        › d�¦  «        ‚|                     dd¦  «        \  }}||vr.t          j        d|› dd                     |¦  «        › d�¦  «        ‚|                     t          ||¬¦  «        ¦  «         Œ¤|S )	aY  Parse 'type:name' strings into WebhookWatchedItem objects.

    Args:
        values: List of strings in the format 'type:name'
            (e.g., 'model:bert-base-uncased', 'org:HuggingFace').

    Returns:
        List of WebhookWatchedItem objects.

    Raises:
        click.BadParameter: If any value doesn't match the expected format.
    ú:zCExpected format 'type:name' (e.g. 'model:bert-base-uncased'), got 'z'. Valid types: z, ú.r   zInvalid type '©r   Úname)ÚtupleÚ_WATCHED_TYPESÚclickÚBadParameterÚjoinÚsplitÚappendr   )r   ÚitemsÚvalid_typesÚvÚkindr%   s         r   Ú_parse_watchr1   ,   sï   € ð €EÝ�Ñ'Ô'€KØð 	?ð 	?ˆØ�aˆ<ˆ<ÝÔ$ð;ÐVWð ;ð ;Ø!%§¢¨;Ñ!7Ô!7ð;ð ;ð ;ñô ð ð —W’W˜S !‘_”_‰
ˆˆdØ�{Ð"Ð"ÝÔ$Ð%e°dÐ%eÐ%eÈDÏIÊIÐVaÑLbÔLbÐ%eÐ%eÐ%eÑfÔfÐfØ�ŠÕ'¨T¸Ð=Ñ=Ô=Ñ>Ô>Ð>Ð>Ø€Lr   ÚsecretsÚsecrets_fileÚjob_idc                 ó’   — t          | |¦  «        }|sdS |€t          j        d¦  «        ‚d„ |                     ¦   «         D ¦   «         S )z^Parse `--secrets` / `--secrets-file` for the Job triggered by a webhook (requires `--job-id`).Nz.--secrets and --secrets-file require --job-id.c                 ó   — i | ]
\  }}||pd “ŒS )Ú r   )r   ÚkeyÚvalues      r   r   z&_parse_job_secrets.<locals>.<dictcomp>Q   s"   € ÐCÐCÐC¡  eˆC��˜"ÐCÐCÐCr   )r   r(   r)   r-   )r2   r3   r4   Úsecrets_maps       r   Ú_parse_job_secretsr;   H   sW   € õ   ¨Ñ6Ô6€KØð ØˆtØ€~ÝÔ Ð!QÑRÔRÐRØCÐC¨{×/@Ò/@Ñ/BÔ/BÐCÑCÔCÐCr   zManage webhooks on the Hub.)Úhelpz	list | ls)zhf webhooks lszhf webhooks ls --format jsonzhf webhooks ls --format quiet)ÚexamplesÚtokenc                 óŠ   — t          | ¬¦  «        }d„ |                     ¦   «         D ¦   «         }t          j        |¦  «         dS )z'List all webhooks for the current user.©r>   c                 óp   — g | ]3}|j         |j        pd |j        |j        pg d„ |j        pg D ¦   «         dœ‘Œ4S )z(job)c                 ó0   — g | ]}|j         › d |j        › �‘ŒS )r"   r$   )r   Úwis     r   ú
<listcomp>z*webhooks_ls.<locals>.<listcomp>.<listcomp>j   s*   € ÐKÐKÐK°2˜2œ7Ð.Ð. R¤WÐ.Ð.ÐKÐKÐKr   ©ÚidÚurlÚdisabledÚdomainsÚwatchedrE   )r   Úws     r   rD   zwebhooks_ls.<locals>.<listcomp>d   se   € ð 	ð 	ð 	ð ð ”$Ø”5Ð#˜GØœ
Ø”y� BØKÐK¸!¼)¸/ÀrÐKÑKÔKð	
ð 	
ð	ð 	ð 	r   N)r   Úlist_webhooksr   Útable)r>   ÚapiÚresultss      r   Úwebhooks_lsrP   W   sX   € õ ˜5Ð
!Ñ
!Ô
!€Cð	ð 	ð ×"Ò"Ñ$Ô$ð	ñ 	ô 	€Gõ „IˆgÑÔÐÐÐr   Úinfozhf webhooks info abc123Ú
webhook_idzThe ID of the webhook.c                 óx   — t          |¬¦  «        }|                     | ¦  «        }t          j        |¦  «         dS )z'Show full details for a single webhook.r@   N)r   Úget_webhookr   Údict©rR   r>   rN   Úwebhooks       r   Úwebhooks_inforX   q   s;   € õ ˜5Ð
!Ñ
!Ô
!€CØ�oŠo˜jÑ)Ô)€GÝ„HˆWÑÔÐÐÐr   Úcreate)zQhf webhooks create --url https://example.com/hook --watch model:bert-base-uncasedzjhf webhooks create --url https://example.com/hook --watch org:HuggingFace --watch model:gpt2 --domain repozJhf webhooks create --job-id 687f911eaea852de79c4a50a --watch user:julien-czghf webhooks create --job-id 687f911eaea852de79c4a50a --watch bucket:my-org/my-bucket --secrets HF_TOKENÚwatchz--watchzRItem to watch, in 'type:name' format (e.g. 'model:bert-base-uncased'). Repeatable.rG   zBURL to send webhook payloads to. Mutually exclusive with --job-id.z--job-idz]ID of a Job to trigger (from job.id) instead of pinging a URL. Mutually exclusive with --url.Údomainz--domainzNDomain to watch: 'repo' or 'discussions'. Repeatable. Defaults to all domains.Úsecretz.Optional secret used to sign webhook payloads.c                 óR  — |�|�t          j        d¦  «        ‚|€|€t          j        d¦  «        ‚t          |||¦  «        }t          |¬¦  «        }	t	          | ¦  «        }
|rd„ |D ¦   «         nd}|	                     |||
|||¬¦  «        }t          j        d|j        ¬¦  «         dS )	zéCreate a new webhook.

    Provide either --url (to ping a remote server) or --job-id (to trigger a Job), but not both.
    The source Job's secrets are not copied to the webhook: pass them again with --secrets / --secrets-file.
    Nú+Provide either --url or --job-id, not both.z!Provide either --url or --job-id.r@   c                 ó   — g | ]	}|j         ‘Œ
S r   ©r9   r   s     r   rD   z#webhooks_create.<locals>.<listcomp>¸   ó   € Ð'Ð'Ð'˜1ˆqŒwÐ'Ð'Ð'r   ©rG   r4   rJ   rI   r\   r2   zWebhook created©rF   )	r(   r)   r;   r   r1   Úcreate_webhookr   ÚresultrF   )rZ   rG   r4   r[   r\   r2   r3   r>   Újob_secretsrN   Úwatched_itemsrI   rW   s                r   Úwebhooks_createrh   �   sÔ   € ð` €˜6Ð-ÝÔ Ð!NÑOÔOÐOØ
€{�v�~ÝÔ Ð!DÑEÔEÐEÝ$ W¨l¸FÑCÔC€KÝ
˜5Ð
!Ñ
!Ô
!€CÝ  Ñ'Ô'€MØ+1Ð;Ð'Ð' Ð'Ñ'Ô'Ð'°t€GØ× Ò ØØØØØØð !ñ ô €Gõ „JÐ  W¤ZÐ0Ñ0Ô0Ð0Ð0Ð0r   Úupdate)z8hf webhooks update abc123 --url https://new-url.com/hookz:hf webhooks update abc123 --watch model:gpt2 --domain repoz,hf webhooks update abc123 --secret newsecretzNhf webhooks update abc123 --job-id 687f911eaea852de79c4a50a --secrets HF_TOKENz The ID of the webhook to update.z$New URL to send webhook payloads to.zcID of the source Job to trigger (can be the current one). Required with --secrets / --secrets-file.ziNew list of items to watch, in 'type:name' format. Repeatable. Replaces the entire existing watched list.zBNew list of domains to watch: 'repo' or 'discussions'. Repeatable.z)New secret used to sign webhook payloads.c	           	      ó,  — |�|�t          j        d¦  «        ‚t          |||¦  «        }	t          |¬¦  «        }
|rt	          |¦  «        nd}|rd„ |D ¦   «         nd}|
                     | ||||||	¬¦  «        }t          j        d|j        ¬¦  «         dS )z¥Update an existing webhook. Only provided options are changed.

    Job secrets passed with --secrets replace stored values with the same name; others are kept.
    Nr^   r@   c                 ó   — g | ]	}|j         ‘Œ
S r   r`   r   s     r   rD   z#webhooks_update.<locals>.<listcomp>ü   ra   r   rb   zWebhook updatedrc   )	r(   r)   r;   r   r1   Úupdate_webhookr   re   rF   )rR   rG   r4   rZ   r[   r\   r2   r3   r>   rf   rN   rg   rI   rW   s                 r   Úwebhooks_updaterm   Ä   sÆ   € ðf €˜6Ð-ÝÔ Ð!NÑOÔOÐOÝ$ W¨l¸FÑCÔC€KÝ
˜5Ð
!Ñ
!Ô
!€CØ+0Ð:•L Ñ'Ô'Ð'°d€MØ+1Ð;Ð'Ð' Ð'Ñ'Ô'Ð'°t€GØ× Ò ØØØØØØØð !ñ ô €Gõ „JÐ  W¤ZÐ0Ñ0Ô0Ð0Ð0Ð0r   Úenablezhf webhooks enable abc123z The ID of the webhook to enable.c                 ó†   — t          |¬¦  «        }|                     | ¦  «        }t          j        d|j        ¬¦  «         dS )zEnable a disabled webhook.r@   zWebhook enabledrc   N)r   Úenable_webhookr   re   rF   rV   s       r   Úwebhooks_enablerq   	  sE   € õ ˜5Ð
!Ñ
!Ô
!€CØ× Ò  Ñ,Ô,€GÝ„JÐ  W¤ZÐ0Ñ0Ô0Ð0Ð0Ð0r   Údisablezhf webhooks disable abc123z!The ID of the webhook to disable.c                 ó†   — t          |¬¦  «        }|                     | ¦  «        }t          j        d|j        ¬¦  «         dS )zDisable an active webhook.r@   zWebhook disabledrc   N)r   Údisable_webhookr   re   rF   rV   s       r   Úwebhooks_disableru     sE   € õ ˜5Ð
!Ñ
!Ô
!€CØ×!Ò! *Ñ-Ô-€GÝ„JÐ! g¤jÐ1Ñ1Ô1Ð1Ð1Ð1r   Údeletezhf webhooks delete abc123zhf webhooks delete abc123 --yesFz The ID of the webhook to delete.Úyesz--yesz-yzSkip confirmation prompt.c                 ó°   — t          j        d| › d�|¬¦  «         t          |¬¦  «        }|                     | ¦  «         t          j        d| ¬¦  «         dS )zDelete a webhook permanently.z)Are you sure you want to delete webhook 'z'?)rw   r@   zWebhook deletedrc   N)r   Úconfirmr   Údelete_webhookre   )rR   rw   r>   rN   s       r   Úwebhooks_deleter{   )  sf   € õ( „KÐJ¸JÐJÐJÐJÐPSÐTÑTÔTÐTÝ
˜5Ð
!Ñ
!Ô
!€CØ×Ò�zÑ"Ô"Ð"Ý„JÐ  ZÐ0Ñ0Ô0Ð0Ð0Ð0r   )N)NNNNNNN)NNNNNNNN)FN)+Ú__doc__ÚenumÚtypingr   r   r   r(   Úhuggingface_hub.constantsr   Úhuggingface_hub.hf_apir   Ú
_cli_utilsr	   r
   r   r   r   r   Ú
_frameworkr   r   Ú_outputr   r'   ÚEnumÚstrr   Ú_DOMAIN_TYPESr   Úlistr1   rU   r;   Úwebhooks_cliÚcommandrP   rX   rh   rm   rq   ru   Úboolr{   r   r   r   ú<module>r‹      sü  ðð DÐ Cà €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à €€€à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð �˜.˜.Ð);Ñ<Ô<¸VÔDÑEÔE€Ø�$”)Ð-Ð/MÐ/M¸nÐ/MÑ/MÔ/MÐTWÐXÑXÔX€à�Ð)Ñ*Ô*€Ø�”	˜/Ð+HÐ+H¸-Ð+HÑ+HÔ+HÈsÐSÑSÔS€ð˜˜cœð  tÐ,>Ô'?ð ð ð ð ð8	DØ�#ŒY˜Ñð	DØ-0°4©Zð	DØADÀtÁð	Dà	ˆ#ˆsˆ(„^�dÑð	Dð 	Dð 	Dð 	Dð ˆ}Ð"?Ð@Ñ@Ô@€ð ×ÒØðð ð ð ñ ô ð ðð Øðà	ðð ð ñô ðð$ ×ÒØ
à!ðð ñ ô ð ðð Ø˜#˜x˜xÐ-EÐFÑFÔFÐFÔGðàðð 
ðð ð ñô ðð ×ÒØðð ð ð ñ ô ð( 	ð 	ð 	ð 	ØØ#'ØðA71ð 71ØØˆSŒ	ØˆØØeð	
ñ 	
ô 	
ð	ôð71ð 
Øˆd‰
ØˆÐXÐYÑYÔYð	[ô
ð71ð Øˆd‰
ØˆØØpð	
ñ 	
ô 	
ð	ôð71ð& Øˆ]Ô˜dÑ"ØˆØØað	
ñ 	
ô 	
ð	ôð'71ð4 Øˆd‰
ØˆÐDÐEÑEÔEð	Gôð571ð< ð=71ð> !ð?71ð@ ðA71ðB 
ðC71ð 71ð 71ñô ð71ðt ×ÒØðð ð ð ñ ô ð 	ð 	ð 	ð 	ð 	ØØ#'ØðI91ð 91Ø˜#˜x˜xÐ-OÐPÑPÔPÐPÔQð91à	Øˆd‰
ØˆÐ:Ð;Ñ;Ô;ð	=ô
ð91ð Øˆd‰
ØˆØØvð	
ñ 	
ô 	
ð	ôð91ð ØˆSŒ	�DÑØˆØðIð	
ñ 	
ô 	
ð	ô	ð91ð. Øˆ]Ô˜dÑ"ØˆØØUð	
ñ 	
ô 	
ð	ôð/91ð< Øˆd‰
ØˆÐ?Ð@Ñ@Ô@ð	Bôð=91ðD ðE91ðF !ðG91ðH ðI91ðJ 
ðK91ð 91ð 91ñô ð91ðx ×ÒØà#ðð ñ ô ð ð1ð 1Ø˜#˜x˜xÐ-OÐPÑPÔPÐPÔQð1àð1ð 
ð1ð 1ð 1ñô ð1ð ×ÒØà$ðð ñ ô ð ð2ð 2Ø˜#˜x˜xÐ-PÐQÑQÔQÐQÔRð2àð2ð 
ð2ð 2ð 2ñô ð2ð ×ÒØà#Ø)ðð ñ ô ð  	Øð1ð 1Ø˜#˜x˜xÐ-OÐPÑPÔPÐPÔQð1à	ØØˆØØØ,ð	
ñ 	
ô 	
ð	ô
ð1ð ð1ð 
ð1ð 1ð 1ñô ð1ð 1ð 1r   