The native tracer's span: it records its attributes, events and links in memory and exports nothing. Its trace id is its parent's, and its ids are made when first read.
Attributes#
| Attribute | Type | Description |
|---|---|---|
name | str = request.name | |
parent | AnySpan | None = request.parent | |
annotations | Context = request.annotations | |
links | list[SpanLink] = request.links | |
start_time | int = request.start_time | |
kind | SpanKind = request.kind | |
sampled | bool = request.sampled | |
status | SpanStatus = Started(request.start_time) | |
trace_id | str | |
span_id | str | |
attributes | dict[str, object] | |
events | list[SpanEvent] |
Functions#
__init__#
__init__(request) -> None| Parameter | Type | Description |
|---|---|---|
request | SpanRequest |
def __init__(self, request: SpanRequest) -> None:
self.name: str = request.name
self.parent: AnySpan | None = request.parent
self.annotations: Context = request.annotations
self.links: list[SpanLink] = request.links
self.start_time: int = request.start_time
self.kind: SpanKind = request.kind
self.sampled: bool = request.sampled
self.status: SpanStatus = Started(request.start_time)
self._trace_id: str | None = None
self._span_id: str | None = None
self._attributes: dict[str, object] | None = None
self._events: list[SpanEvent] | None = Noneend#
end(end_time, exit) -> None| Parameter | Type | Description |
|---|---|---|
end_time | int | |
exit | Exit[object, object] |
def end(self, end_time: int, exit: Exit[object, object], /) -> None:
if isinstance(self.status, Started):
self.status = Ended(self.status.start_time, end_time, exit)attribute#
attribute(key, value) -> None| Parameter | Type | Description |
|---|---|---|
key | str | |
value | object |
def attribute(self, key: str, value: object, /) -> None:
if isinstance(self.status, Started):
self.attributes[key] = valueevent#
event(name, start_time, attributes=None) -> None| Parameter | Type | Description |
|---|---|---|
name | str | |
start_time | int | |
attributes | Mapping[str, object] | None = None |
def event(
self, name: str, start_time: int, attributes: Mapping[str, object] | None = None, /
) -> None:
if isinstance(self.status, Started):
self.events.append((name, start_time, {} if attributes is None else attributes))add_links#
add_links(links) -> None| Parameter | Type | Description |
|---|---|---|
links | Sequence[SpanLink] |
def add_links(self, links: Sequence[SpanLink], /) -> None:
if isinstance(self.status, Started):
self.links.extend(links)