o
    0j4$                     @   sb  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 ddlmZ eee
d	 Zejd
dd eD edZeeZejddd eD edZdee dee
 fddZeddZejdg dd	dQdeddfddZejddgd	dQdeeejddf deddfd d!Zejd"g d#d					dRd$eee ejd%d&df d'eedB ejd(df d)eedB ejd*d+df d,eee dB ejd-d.df d/eedB ejd0df deddfd1d2Zejd3g d4d					dRdeeejd5df d'eedB ejd6df d$eee dB ejd%d7df d,eee dB ejd-d8df d/eedB ejd9df deddfd:d;Z ejd<d=gd	dQdeeejd>df deddfd?d@Z!ejdAdBgd	dQdeeejdCdf deddfdDdEZ"ejdFdGdHgd	I	dSdeeejdJdf dKee#ejdLdMdNdf deddfdOdPZ$dS )Ta  Contains commands to manage webhooks on the Hugging Face Hub.

Usage:
    # list all webhooks
    hf webhooks ls

    # show details of a single webhook
    hf webhooks info <webhook_id>

    # create a new webhook
    hf webhooks create --url https://example.com/hook --watch model:bert-base-uncased

    # create a webhook watching multiple items and domains
    hf webhooks create --url https://example.com/hook --watch org:HuggingFace --watch model:gpt2 --domain repo

    # update a webhook
    hf webhooks update <webhook_id> --url https://new-url.com/hook

    # enable / disable a webhook
    hf webhooks enable <webhook_id>
    hf webhooks disable <webhook_id>

    # delete a webhook
    hf webhooks delete <webhook_id>
    N)	Annotatedget_argsget_type_hints)WEBHOOK_DOMAIN_T)WebhookWatchedItem   )TokenOpt
get_hf_apityper_factory)outtypeWatchedItemTypec                 C      i | ]}||qS  r   ).0tr   r   ]/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/huggingface_hub/cli/webhooks.py
<dictcomp>:       r   )r   WebhookDomainc                 C   r   r   r   r   dr   r   r   r   =   r   valuesreturnc              	   C   s   g }t t}| D ]9}d|vrtd| dd| d|dd\}}||vr8td| dd| d|t||d q|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:
        typer.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typerBadParameterjoinsplitappendr   )r   itemsZvalid_typesvkindr   r   r   r   _parse_watch@   s   r(   zManage webhooks on the Hub.)helpz	list | ls)zhf webhooks lszhf webhooks ls --format jsonzhf webhooks ls --format quiet)Zexamplestokenc                 C   s*   t | d}dd | D }t| dS )z'List all webhooks for the current user.r*   c                 S   s<   g | ]}|j |jp
d |j|jpg dd |jpg D dqS )z(job)c                 S   s   g | ]}|j  d |j qS )r   r   )r   Zwir   r   r   
<listcomp>r   s    z*webhooks_ls.<locals>.<listcomp>.<listcomp>idurldisableddomainswatchedr-   )r   wr   r   r   r,   l   s    zwebhooks_ls.<locals>.<listcomp>N)r	   Zlist_webhooksr   table)r*   apiresultsr   r   r   webhooks_ls_   s
   

r7   infozhf webhooks info abc123
webhook_idzThe ID of the webhook.c                 C   s"   t |d}|| }t| dS )z'Show full details for a single webhook.r+   N)r	   Zget_webhookr   dictr9   r*   r5   webhookr   r   r   webhooks_infoy   s   

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-cwatchz--watchzRItem to watch, in 'type:name' format (e.g. 'model:bert-base-uncased'). Repeatable.r/   zBURL to send webhook payloads to. Mutually exclusive with --job-id.job_idz--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           
      C   s   |dur|durt d|du r|du rt dt|d}t| }|r,dd |D nd}|j|||||d}	tjd|	jd	 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.
    Nz+Provide either --url or --job-id, not both.z!Provide either --url or --job-id.r+   c                 S      g | ]}|j qS r   valuer   r   r   r   r,      r   z#webhooks_create.<locals>.<listcomp>)r/   r@   r2   r1   rB   zWebhook createdr.   )r    r!   r	   r(   Zcreate_webhookr   resultr.   )
r?   r/   r@   rA   rB   r*   r5   watched_itemsr1   r<   r   r   r   webhooks_create   s   ,


rI   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 newsecretz The ID of the webhook to update.z$New URL to send webhook payloads to.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           
      C   sX   t |d}|rt|nd}|rdd |D nd}|j| ||||d}	tjd|	jd dS )z>Update an existing webhook. Only provided options are changed.r+   Nc                 S   rC   r   rD   r   r   r   r   r,      r   z#webhooks_update.<locals>.<listcomp>)r/   r2   r1   rB   zWebhook updatedrF   )r	   r(   Zupdate_webhookr   rG   r.   )
r9   r/   r?   rA   rB   r*   r5   rH   r1   r<   r   r   r   webhooks_update   s
   
&rK   enablezhf webhooks enable abc123z The ID of the webhook to enable.c                 C   (   t |d}|| }tjd|jd dS )zEnable a disabled webhook.r+   zWebhook enabledrF   N)r	   Zenable_webhookr   rG   r.   r;   r   r   r   webhooks_enable      

rN   disablezhf webhooks disable abc123z!The ID of the webhook to disable.c                 C   rM   )zDisable an active webhook.r+   zWebhook disabledrF   N)r	   Zdisable_webhookr   rG   r.   r;   r   r   r   webhooks_disable   rO   rQ   deletezhf webhooks delete abc123zhf webhooks delete abc123 --yesFz The ID of the webhook to delete.yesz--yesz-yzSkip confirmation prompt.c                 C   s<   t jd|  d|d t|d}||  t jd| d dS )zDelete a webhook permanently.z)Are you sure you want to delete webhook 'z'?)rS   r+   zWebhook deletedrF   N)r   Zconfirmr	   Zdelete_webhookrG   )r9   rS   r*   r5   r   r   r   webhooks_delete  s   

rT   )N)NNNNN)FN)%__doc__enumtypingr   r   r   r    Zhuggingface_hub.constantsr   Zhuggingface_hub.hf_apir   Z
_cli_utilsr   r	   r
   _outputr   r   Enumstrr   Z_DOMAIN_TYPESr   listr(   Zwebhooks_clicommandr7   ZArgumentr=   OptionrI   rK   rN   rQ   boolrT   r   r   r   r   <module>   sv  
	



/




%


