o
    i                      @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ ejddG dd dZeee	ef  Z
ejG d	d
 d
ZG dd de jZdS )    N)Any)Optional)SequenceT)unsafe_hashc                   @   sz   e Zd ZU dZeed< eed< ee ed< ee ed< ee ed< ej	ddd	Z
ee ed
< ej	ddd	Zee ed< dS )ConfigMetadataz+
    Configuration TUF target metadata
    idproduct_namesha256_hashlengthtuf_version   F)defaultcompareapply_stateNapply_error)__name__
__module____qualname____doc__str__annotations__r   intdataclassesfieldr   r    r   r   Z/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/remoteconfig/__init__.pyr      s   
 r   c                   @   s.   e Zd ZU eed< eed< eed< dd ZdS )Payloadmetadatapathcontentc                 C   s&   t | jtrtdi | j| _d S d S )Nr   )
isinstancer   dictr   selfr   r   r   __post_init__!   s   zPayload.__post_init__N)r   r   r   r   r   r   PayloadTyper$   r   r   r   r   r      s
   
 r   c                   @   s6   e Zd ZdZejdee ddfddZd	ddZ	dS )

RCCallbacka3  Base class for remote config callbacks.

    All remote config product callbacks should inherit from this class.
    Callbacks receive a sequence of payloads and process them accordingly.

    Subclasses can optionally override the periodic() method to perform
    operations at every polling interval.
    payloadsreturnNc                 C      dS )z{Process remote config payloads.

        Args:
            payloads: Sequence of configuration payloads to process
        Nr   )r#   r'   r   r   r   __call__0   s   zRCCallback.__call__c                 C   r)   )a;  Method called at every polling operation.

        This method is invoked at every polling interval, even when there are
        no payloads. Callbacks can override this to perform periodic maintenance
        tasks, state checks, or time-based operations.

        The default implementation does nothing.
        Nr   r"   r   r   r   periodic9   s   	zRCCallback.periodic)r(   N)
r   r   r   r   abcabstractmethodr   r   r*   r+   r   r   r   r   r&   &   s
    	r&   )r,   r   typingr   r   r   	dataclassr   r!   r   r%   r   ABCr&   r   r   r   r   <module>   s    

