Skip to content

Commit 1462692

Browse files
fix unsorted errors
1 parent fb42626 commit 1462692

5 files changed

Lines changed: 28 additions & 27 deletions

File tree

src/electripy/observability/ai_telemetry/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
from __future__ import annotations
2323

24-
from .adapters import JsonlTelemetrySinkAdapter, InMemoryTelemetryAdapter, OpenTelemetryAdapter
24+
from .adapters import InMemoryTelemetryAdapter, JsonlTelemetrySinkAdapter, OpenTelemetryAdapter
2525
from .domain import (
2626
CostRecord,
2727
HistogramObservation,

src/electripy/observability/ai_telemetry/adapters.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@
1818

1919
import json
2020
import threading
21+
from collections.abc import Callable
2122
from dataclasses import asdict, dataclass
22-
from datetime import datetime, timezone
23+
from datetime import UTC, datetime
2324
from hashlib import sha256
2425
from pathlib import Path
25-
from typing import Any, Callable
26+
from typing import Any
2627

2728
from electripy.core.logging import get_logger
2829

@@ -113,7 +114,7 @@ def __init__(
113114
self._previous_ctx: TelemetryContext | None = None
114115

115116
def __enter__(self) -> TelemetryContext:
116-
now = datetime.now(tz=timezone.utc)
117+
now = datetime.now(tz=UTC)
117118
base_ctx = self._ctx or self._get_current()
118119
if base_ctx is None:
119120
# Minimal context; caller can create richer contexts via
@@ -147,7 +148,7 @@ def __enter__(self) -> TelemetryContext:
147148
return ctx
148149

149150
def __exit__(self, exc_type, exc, tb) -> None: # type: ignore[override]
150-
end = datetime.now(tz=timezone.utc)
151+
end = datetime.now(tz=UTC)
151152
ctx = self._get_current()
152153
if self._start_time is not None and ctx is not None:
153154
duration_ms = (end - self._start_time).total_seconds() * 1000.0
@@ -200,7 +201,7 @@ def emit_event(self, event: TelemetryEvent) -> None:
200201
record = {
201202
"type": "event",
202203
"name": event.name,
203-
"timestamp": event.timestamp.astimezone(timezone.utc).isoformat(),
204+
"timestamp": event.timestamp.astimezone(UTC).isoformat(),
204205
"severity": event.severity.value,
205206
"context": asdict(event.context),
206207
"attributes": _sanitize_attributes(dict(event.attributes)),
@@ -215,7 +216,7 @@ def increment(
215216
attrs: dict[str, object] | None = None,
216217
ctx: TelemetryContext | None = None,
217218
) -> None:
218-
now = datetime.now(tz=timezone.utc)
219+
now = datetime.now(tz=UTC)
219220
record = CounterIncrement(
220221
name=name,
221222
value=value,
@@ -236,7 +237,7 @@ def observe(
236237
attrs: dict[str, object] | None = None,
237238
ctx: TelemetryContext | None = None,
238239
) -> None:
239-
now = datetime.now(tz=timezone.utc)
240+
now = datetime.now(tz=UTC)
240241
record = HistogramObservation(
241242
name=name,
242243
value=value,
@@ -309,7 +310,7 @@ def increment(
309310
value=value,
310311
attributes=_sanitize_attributes(attrs or {}),
311312
context=ctx,
312-
timestamp=datetime.now(tz=timezone.utc),
313+
timestamp=datetime.now(tz=UTC),
313314
)
314315
self.counters.append(record)
315316

@@ -326,7 +327,7 @@ def observe(
326327
value=value,
327328
attributes=_sanitize_attributes(attrs or {}),
328329
context=ctx,
329-
timestamp=datetime.now(tz=timezone.utc),
330+
timestamp=datetime.now(tz=UTC),
330331
)
331332
self.histograms.append(record)
332333

@@ -396,7 +397,7 @@ def increment(
396397
) -> None: # pragma: no cover - simple mapping
397398
# For now, model counters as events; a production deployment can
398399
# attach these to a metrics exporter.
399-
now = datetime.now(tz=timezone.utc)
400+
now = datetime.now(tz=UTC)
400401
event = TelemetryEvent(
401402
name=f"metric.counter.{name}",
402403
timestamp=now,
@@ -424,7 +425,7 @@ def observe(
424425
attrs: dict[str, object] | None = None,
425426
ctx: TelemetryContext | None = None,
426427
) -> None: # pragma: no cover - simple mapping
427-
now = datetime.now(tz=timezone.utc)
428+
now = datetime.now(tz=UTC)
428429
event = TelemetryEvent(
429430
name=f"metric.histogram.{name}",
430431
timestamp=now,
@@ -456,7 +457,7 @@ def span(
456457
# not automatically mapped; callers can still emit explicit
457458
# events if they need a bridge.
458459
class _OtelSpan(SpanContextManager):
459-
def __init__(self, adapter: "OpenTelemetryAdapter") -> None:
460+
def __init__(self, adapter: OpenTelemetryAdapter) -> None:
460461
self._adapter = adapter
461462
self._cm = adapter._tracer.start_as_current_span(name) # type: ignore[union-attr]
462463

src/electripy/observability/ai_telemetry/domain.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@
3131

3232
from __future__ import annotations
3333

34+
from collections.abc import MutableMapping
3435
from dataclasses import dataclass, field
3536
from datetime import datetime
3637
from enum import StrEnum
37-
from typing import Mapping, MutableMapping, TypeAlias
38+
from typing import TypeAlias
3839

3940
AttributeValue: TypeAlias = str | int | float | bool | None
4041
Attributes: TypeAlias = MutableMapping[str, AttributeValue]
@@ -95,7 +96,7 @@ class TelemetryContext:
9596
environment: str | None
9697
tags: dict[str, str] = field(default_factory=dict)
9798

98-
def child(self, *, span_id: str) -> "TelemetryContext":
99+
def child(self, *, span_id: str) -> TelemetryContext:
99100
"""Return a child context for a nested span.
100101
101102
Args:

src/electripy/observability/ai_telemetry/services.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313

1414
import contextlib
1515
import os
16+
from collections.abc import Iterator, Mapping, MutableMapping
1617
from contextvars import ContextVar
1718
from dataclasses import dataclass
18-
from datetime import datetime, timezone
19-
from typing import Iterator, Mapping, MutableMapping
19+
from datetime import UTC, datetime
2020

2121
from electripy.core.logging import get_logger
2222

@@ -209,7 +209,7 @@ def record_http_retry_attempt(
209209

210210
event = TelemetryEvent(
211211
name="http.retry_attempt",
212-
timestamp=datetime.now(tz=timezone.utc),
212+
timestamp=datetime.now(tz=UTC),
213213
context=ctx or current_telemetry_context() or create_telemetry_context(),
214214
attributes={
215215
"attempt": attempt,
@@ -232,7 +232,7 @@ def record_http_circuit_opened(
232232

233233
event = TelemetryEvent(
234234
name="http.breaker_opened",
235-
timestamp=datetime.now(tz=timezone.utc),
235+
timestamp=datetime.now(tz=UTC),
236236
context=ctx or current_telemetry_context() or create_telemetry_context(),
237237
attributes={"url": url},
238238
severity=Severity.WARNING,
@@ -268,7 +268,7 @@ def record_llm_call(
268268
)
269269
event = TelemetryEvent(
270270
name="llm.call",
271-
timestamp=datetime.now(tz=timezone.utc),
271+
timestamp=datetime.now(tz=UTC),
272272
context=context,
273273
attributes={
274274
"provider": provider,
@@ -295,7 +295,7 @@ def record_policy_decision(
295295

296296
event = TelemetryEvent(
297297
name="policy.decision",
298-
timestamp=datetime.now(tz=timezone.utc),
298+
timestamp=datetime.now(tz=UTC),
299299
context=ctx or current_telemetry_context() or create_telemetry_context(),
300300
attributes={
301301
"decision": decision,
@@ -317,7 +317,7 @@ def record_rag_experiment_started(
317317

318318
event = TelemetryEvent(
319319
name="rag_eval.experiment_started",
320-
timestamp=datetime.now(tz=timezone.utc),
320+
timestamp=datetime.now(tz=UTC),
321321
context=ctx or current_telemetry_context() or create_telemetry_context(),
322322
attributes={"experiment_id": experiment_id},
323323
severity=Severity.INFO,
@@ -336,7 +336,7 @@ def record_rag_experiment_finished(
336336

337337
event = TelemetryEvent(
338338
name="rag_eval.experiment_finished",
339-
timestamp=datetime.now(tz=timezone.utc),
339+
timestamp=datetime.now(tz=UTC),
340340
context=ctx or current_telemetry_context() or create_telemetry_context(),
341341
attributes={"experiment_id": experiment_id, **dict(metrics_summary)},
342342
severity=Severity.INFO,

tests/observability/ai_telemetry/test_ai_telemetry.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from __future__ import annotations
22

3-
from datetime import datetime, timezone
4-
from pathlib import Path
5-
63
import json
4+
from datetime import UTC, datetime
5+
from pathlib import Path
76

87
from electripy.observability.ai_telemetry import (
98
InMemoryTelemetryAdapter,
@@ -61,7 +60,7 @@ def test_jsonl_adapter_writes_events(tmp_path: Path) -> None:
6160

6261
event = TelemetryEvent(
6362
name="example",
64-
timestamp=datetime.now(tz=timezone.utc),
63+
timestamp=datetime.now(tz=UTC),
6564
context=ctx,
6665
attributes={"provider": "fake"},
6766
severity=Severity.INFO,

0 commit comments

Comments
 (0)