defer optional telemetry dependencies in perception graph

This commit is contained in:
DCCONSTRUCTIONS
2026-08-23 20:29:14 +03:00
parent cbbaea9148
commit bcda5d001a
2 changed files with 31 additions and 7 deletions
+12 -7
View File
@@ -8,14 +8,15 @@ from contextlib import AbstractContextManager
from dataclasses import dataclass, replace
from queue import Empty, Full, Queue
from threading import Event, Lock, Thread
from typing import TypeVar, cast
from typing import TYPE_CHECKING, TypeVar, cast
from k1link.compute.pipeline_telemetry import (
PipelineStageOutcome,
PipelineTelemetryEmitter,
PipelineTelemetryIdentity,
PipelineTelemetrySink,
)
if TYPE_CHECKING:
from k1link.compute.pipeline_telemetry import (
PipelineStageOutcome,
PipelineTelemetryEmitter,
PipelineTelemetryIdentity,
PipelineTelemetrySink,
)
from .baseline import BASELINE_PROFILE_ID, BASELINE_SOURCE_ID
from .contracts import (
@@ -763,6 +764,8 @@ class ReferencePerceptionGraphV1:
def _run_emitter(self) -> PipelineTelemetryEmitter | None:
if self.telemetry_identity is None or self.telemetry_sink is None:
return None
from k1link.compute.pipeline_telemetry import PipelineTelemetryEmitter
return PipelineTelemetryEmitter(
identity=self.telemetry_identity,
sink=self.telemetry_sink,
@@ -772,6 +775,8 @@ class ReferencePerceptionGraphV1:
def _frame_emitter(self, packet: SourcePacket) -> PipelineTelemetryEmitter | None:
if self.telemetry_identity is None or self.telemetry_sink is None:
return None
from k1link.compute.pipeline_telemetry import PipelineTelemetryEmitter
identity = replace(
self.telemetry_identity,
request_id=packet.envelope.frame_id,
+19
View File
@@ -1,6 +1,8 @@
from __future__ import annotations
import json
import subprocess
import sys
import threading
from collections.abc import Iterator
from dataclasses import replace
@@ -62,6 +64,23 @@ from k1link.perception.recorded_source import (
)
def test_graph_import_does_not_initialize_legacy_compute_dependencies() -> None:
result = subprocess.run(
[
sys.executable,
"-c",
(
"import sys; import k1link.perception.graph; "
"assert 'k1link.compute' not in sys.modules"
),
],
check=False,
capture_output=True,
text=True,
)
assert result.returncode == 0, result.stderr
def _status(available: bool = True) -> ModalityStatus:
return ModalityStatus(
available=available,