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

1"""Trace context variables for distributed tracing. 

2 

3Provides context variables for trace_id, span_id, and trace_flags 

4following W3C Trace Context specification. 

5""" 

6 

7from __future__ import annotations 

8 

9import contextvars 

10import secrets 

11 

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) 

24 

25 

26def new_trace_id() -> str: 

27 """Generate a new trace ID (32 hex chars).""" 

28 return secrets.token_hex(16) 

29 

30 

31def new_span_id() -> str: 

32 """Generate a new span ID (16 hex chars).""" 

33 return secrets.token_hex(8) 

34 

35 

36__all__ = [ 

37 "new_span_id", 

38 "new_trace_id", 

39 "span_id_var", 

40 "trace_flags_var", 

41 "trace_id_var", 

42]