Coverage for src / lexigram / contracts / core / trace_context.py: 0%
11 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:57 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:57 +0800
1"""Trace context variables for distributed tracing.
3Provides context variables for trace_id, span_id, and trace_flags
4following W3C Trace Context specification.
5"""
7from __future__ import annotations
9import contextvars
10import secrets
12trace_id_var: contextvars.ContextVar[str | None] = contextvars.ContextVar(
13 "trace_id",
14 default=None,
15)
16span_id_var: contextvars.ContextVar[str | None] = contextvars.ContextVar(
17 "span_id",
18 default=None,
19)
20trace_flags_var: contextvars.ContextVar[str | None] = contextvars.ContextVar(
21 "trace_flags",
22 default=None,
23)
26def new_trace_id() -> str:
27 """Generate a new trace ID (32 hex chars)."""
28 return secrets.token_hex(16)
31def new_span_id() -> str:
32 """Generate a new span ID (16 hex chars)."""
33 return secrets.token_hex(8)
36__all__ = [
37 "new_span_id",
38 "new_trace_id",
39 "span_id_var",
40 "trace_flags_var",
41 "trace_id_var",
42]