o
    wi                     @  s  U d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
mZ ddlmZmZmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZmZmZ dd
lmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z' edZ(G dd de Z)G dd deZ*G dd deZ+G dd deZ,G dd deddZ-G dd deddZ.G dd deddZ/eee*e-e.e/f e
e#eddf Z0ee0j1Z2de3d < G d!d" d"eZ4G d#d$ d$e4eZ5G d%d& d&e4eZ6G d'd( d(e4ed)dZ7eee5e6e7f e
e"ed*df Z8ee8j1Z9de3d+< dgd,d- e9D Z:d.S )/z.Actions that are triggered by W&B Automations.    )annotations)	AnnotatedAnyLiteralOptionalUnion)BeforeValidatorField)SelfTypeVarget_args)GQLBaseGQLIdnameof   )AlertSeverityGenericWebhookActionFieldsGenericWebhookActionInputNoOpActionFieldsNoOpTriggeredActionInputNotificationActionFieldsNotificationActionInputQueueJobActionFields)JsonEncodedLenientStrEnumdefault_if_noneparse_input_actionparse_saved_actionupper_if_str)SlackIntegrationWebhookIntegrationTc                   @  s    e Zd ZdZdZdZdZdZdS )
ActionTypez.The type of action triggered by an automation.	QUEUE_JOBNOTIFICATIONGENERIC_WEBHOOKNO_OPN)__name__
__module____qualname____doc__r$   r%   r&   r'    r,   r,   M/home/ubuntu/.local/lib/python3.10/site-packages/wandb/automations/actions.pyr#   %   s    r#   c                   @  s   e Zd ZU ejZded< dS )SavedLaunchJobActionzLiteral[ActionType.QUEUE_JOB]action_typeN)r(   r)   r*   r#   r$   r/   __annotations__r,   r,   r,   r-   r.   5   s   
 r.   c                   @  "   e Zd ZU dZded< ded< dS )_SlackIntegrationStubr    zZAnnotated[Literal['SlackIntegration'], Field(alias='__typename', frozen=True, repr=False)]
typename__r   idNr(   r)   r*   r3   r0   r,   r,   r,   r-   r2   C      
 
r2   c                   @  r1   )_WebhookIntegrationStubGenericWebhookIntegrationzcAnnotated[Literal['GenericWebhookIntegration'], Field(alias='__typename', frozen=True, repr=False)]r3   r   r4   Nr5   r,   r,   r,   r-   r7   K   r6   r7   c                   @  s<   e Zd ZU ejZded< ded< ded< ded< ded	< d
S )SavedNotificationAction Literal[ActionType.NOTIFICATION]r/   r2   integrationzOptional[str]titlemessagezOptional[AlertSeverity]severityN)r(   r)   r*   r#   r%   r/   r0   r,   r,   r,   r-   r9   S   s   
 r9   F)frozenc                   @  s0   e Zd ZU ejZded< ded< dZded< dS )SavedWebhookAction#Literal[ActionType.GENERIC_WEBHOOK]r/   r7   r;   N%Optional[JsonEncoded[dict[str, Any]]]request_payload)r(   r)   r*   r#   r&   r/   r0   rC   r,   r,   r,   r-   r@   \   s   
 r@   c                   @  s(   e Zd ZU ejZded< dZded< dS )SavedNoOpActionLiteral[ActionType.NO_OP]r/   TzQAnnotated[bool, BeforeValidator(default_if_none), Field(repr=False, frozen=True)]no_opN)r(   r)   r*   r#   r'   r/   r0   rF   r,   r,   r,   r-   rD   f   s
   
 
rD   r3   )discriminatorztuple[type, ...]SavedActionTypesc                   @  s   e Zd ZU ded< dS )_BaseActionInputz)Annotated[ActionType, Field(frozen=True)]r/   N)r(   r)   r*   r0   r,   r,   r,   r-   rI      s   
 rI   c                   @  sp   e Zd ZU dZejZded< ded< 	 dZded< 	 dZ	d	ed
< 	 e
jZded< 	 edde
jddddZdS )SendNotificationz?Defines an automation action that sends a (Slack) notification.r:   r/   r   integration_id strr<   z.Annotated[str, Field(validation_alias='text')]r=   zXAnnotated[AlertSeverity, BeforeValidator(upper_if_str), Field(validation_alias='level')]r>   )r<   textlevelr;   r    rN   rO   r   returnr
   c                C  s   | |j |||dS )zIDefine a notification action that sends to the given (Slack) integration.)rK   r<   r=   r>   r4   )clsr;   r<   rN   rO   r,   r,   r-   from_integration   s   

z!SendNotification.from_integrationN)
r;   r    r<   rM   rN   rM   rO   r   rP   r
   )r(   r)   r*   r+   r#   r%   r/   r0   r<   r=   r   INFOr>   classmethodrS   r,   r,   r,   r-   rJ      s"   
 
rJ   c                   @  sT   e Zd ZU dZejZded< ded< 	 edddZ	d	ed
< 	 e
dddddZdS )SendWebhookz:Defines an automation action that sends a webhook request.rA   r/   r   rK   NrequestPayload)defaultaliasrB   rC   )payloadr;   r!   rZ   rP   r
   c                C  s   | |j |dS )zFDefine a webhook action that sends to the given (webhook) integration.)rK   rC   rQ   )rR   r;   rZ   r,   r,   r-   rS      s   zSendWebhook.from_integration)r;   r!   rZ   rB   rP   r
   )r(   r)   r*   r+   r#   r&   r/   r0   r	   rC   rU   rS   r,   r,   r,   r-   rV      s   
 rV   c                   @  s,   e Zd ZU dZejZded< dZded< dS )	DoNothingz=Defines an automation action that intentionally does nothing.rE   r/   Tz1Annotated[bool, BeforeValidator(default_if_none)]rF   N)	r(   r)   r*   r+   r#   r'   r/   r0   rF   r,   r,   r,   r-   r[      s
   
 r[   Tr/   InputActionTypesc                 c  s    | ]}t |V  qd S )Nr   ).0rR   r,   r,   r-   	<genexpr>   s    r^   N);r+   
__future__r   typingr   r   r   r   r   pydanticr   r	   typing_extensionsr
   r   r   wandb._pydanticr   r   wandb._strutilsr   
_generatedr   r   r   r   r   r   r   r   _validatorsr   r   r   r   r   r   integrationsr    r!   r"   r#   r.   r2   r7   r9   r@   rD   SavedAction
__origin__rH   r0   rI   rJ   rV   r[   InputActionr\   __all__r,   r,   r,   r-   <module>   sf    ( 
	
%
