o
    iI
                     @   s   d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddl	mZ ddlmZ eeZdZG d	d
 d
ejZG dd deZe ZdddZdddZdS )z
FFE (Feature Flagging and Experimentation) product implementation.

This product receives feature flag configuration rules from Remote Configuration
and processes them through the native FFE processor.
    N)
get_logger)process_ffe_configuration)Payload)
RCCallback)remoteconfig_poller	FFE_FLAGSc                   @   s   e Zd ZdZdZdS )FFECapabilitiesz&FFE Remote Configuration capabilities.l          N)__name__
__module____qualname____doc__FFE_FLAG_CONFIGURATION_RULES r   r   e/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/openfeature/_remoteconfiguration.pyr      s    r   c                   @   s(   e Zd ZdZdeje ddfddZdS )FeatureFlagCallbackzMRemote Configuration callback for Feature Flagging and Experimentation (FFE).payloadsreturnNc                 C   s   |D ]T}|j du rtd|j qtd|j j |jdu r)td|j j|j qzt|j td|j jt|j W q t	yV } ztjd|dd W Y d}~qd}~ww dS )	z
        Process FFE configuration payloads from Remote Configuration.

        Args:
            payloads: Sequence of configuration payloads
        Nz7Ignoring invalid FFE payload with no metadata, path: %szReceived FFE config payload: %sz3Received FFE config deletion, product: %s, path: %sz,Processing FFE config ID: %s, size: %d bytesz'Error processing FFE config payload: %sT)exc_info)
metadatalogdebugpathidcontentproduct_namer   len	Exception)selfr   payloader   r   r   __call__!   s(   


zFeatureFlagCallback.__call__)r	   r
   r   r   tSequencer   r    r   r   r   r   r      s    r   r   c                   C   s8   t dt t  tjttt	j
gd tt d S )Nz/[%s][P: %s] Register FFE Remote Config Callback)capabilities)r   r   osgetpidgetppidr   register_callbackFFE_FLAGS_PRODUCT_featureflag_rc_callbackr   r   enable_productr   r   r   r   enable_featureflags_rcC   s   r+   c                   C   s   t t t t d S )N)r   unregister_callbackr(   disable_productr   r   r   r   disable_featureflags_rcM   s   
r.   )r   N)r   enumr$   typingr!   ddtrace.internal.loggerr   $ddtrace.internal.openfeature._nativer   ddtrace.internal.remoteconfigr   r   $ddtrace.internal.remoteconfig.workerr   r	   r   r(   IntFlagr   r   r)   r+   r.   r   r   r   r   <module>   s     "

