File: //var/opt/nydus/ops/mysql/opentelemetry/baggage/propagation/__pycache__/__init__.cpython-39.pyc
a
�,�hY � @ s� d dl mZ d dlmZ d dlmZmZmZmZm Z d dl
mZmZ d dl
mZmZmZ d dlmZ d dlmZ d dlmZ d d lmZ ee�ZG d
d� dej�Zeeef ed�d
d�Zeeej eej d�dd�Z!dS )� )� getLogger)�split)�Iterable�List�Mapping�Optional�Set)�
quote_plus�unquote_plus)�_is_valid_pair�get_all�set_baggage)�get_current)�Context)�textmap)�_DELIMITER_PATTERNc @ s� e Zd ZdZdZdZdZdZdej fej
ee ej
ej
ed�dd �Zdejfej
ee ejej
dd
�dd�Zeee d
�dd��ZdS )�W3CBaggagePropagatorzAExtracts and injects Baggage which is used to annotate telemetry.i i � ZbaggageN)�carrier�context�getter�returnc
C s, |du rt � }t|�|| j��}|s(|S t|�| jkrFt�d|� |S tt |�}| j
}t|�| j
krpt�d|� |D ]�}t|�| jkr�t�d|� qt|s�qtz|�dd�\}} W n" ty� t�d|� Y qtY n0 t
|| �s�t�d|� qtt|��� }t| ��� } t|| |d �}|d8 }|d
krt �q(qt|S )z�Extract Baggage from the carrier.
See
`mysql.opentelemetry.propagators.textmap.TextMapPropagator.extract`
NzKBaggage header `%s` exceeded the maximum number of bytes per baggage-stringz?Baggage header `%s` exceeded the maximum number of list-memberszGBaggage entry `%s` exceeded the maximum number of bytes per list-member�=� z1Baggage list-member `%s` doesn't match the formatzInvalid baggage entry: `%s`�r r )r �_extract_first_element�get�_BAGGAGE_HEADER_NAME�len�_MAX_HEADER_LENGTH�_logger�warningr r �
_MAX_PAIRS�_MAX_PAIR_LENGTH� Exceptionr r
�stripr
)
�selfr r r �header�baggage_entriesZtotal_baggage_entries�entry�name�value� r, �c/opt/nydus/tmp/pip-target-wkfpz8uv/lib64/python/mysql/opentelemetry/baggage/propagation/__init__.py�extract% s` �
���
�zW3CBaggagePropagator.extract)r r �setterr c C s. t |d�}|sdS t|�}|�|| j|� dS )z�Injects Baggage into the carrier.
See
`mysql.opentelemetry.propagators.textmap.TextMapPropagator.inject`
r N)r �_format_baggage�setr )r&