U
    dª/eV  ã                   @   s   G d d„ de ƒZdS )c                       s4   e Zd ZdZe dd¡Z‡ fdd„Zdd„ Z‡  Z	S )ÚOpenTelemetryTraceContextz7xx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx-xxZ1234567890abcdefZxxxxxxxxxxxxxxxxc                    s<   d | _ d | _|| _d | _|d k	r*|  |¡ tt| ƒ ¡  d S )N)Útrace_idÚspan_idÚ
tracestateÚtrace_flagsÚparse_traceparentÚsuperr   Ú__init__)ÚselfÚtraceparentr   ©Ú	__class__© úC/tmp/pip-unpacked-wheel-mds_o03w/clickhouse_driver/opentelemetry.pyr      s    
z"OpenTelemetryTraceContext.__init__c                 C   sÜ   |  ¡ }t|ƒt| jƒkr4td t|ƒt| jƒ¡ƒ‚| | j¡| jkrTtd |¡ƒ‚| d¡}t|d dƒ}|dkr†td |d ¡ƒ‚t|d dd … dƒd> t|d d d… dƒ | _	t|d	 dƒ| _
t|d
 dƒ| _d S )Nz!unexpected length {}, expected {}z Malformed traceparant header: {}ú-é    é   z"unexpected version {}, expected 00é   é@   é   é   )ÚlowerÚlenÚtraceparent_tplÚ
ValueErrorÚformatÚ	translateÚtranslationÚsplitÚintr   r   r   )r	   r
   ÚpartsÚversionr   r   r   r      s&     ÿÿ
ÿ2z+OpenTelemetryTraceContext.parse_traceparent)
Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ	maketransr   r   r   Ú__classcell__r   r   r   r   r      s   r   N)Úobjectr   r   r   r   r   Ú<module>   ó    