defer optional telemetry dependencies in perception graph
This commit is contained in:
@@ -8,14 +8,15 @@ from contextlib import AbstractContextManager
|
|||||||
from dataclasses import dataclass, replace
|
from dataclasses import dataclass, replace
|
||||||
from queue import Empty, Full, Queue
|
from queue import Empty, Full, Queue
|
||||||
from threading import Event, Lock, Thread
|
from threading import Event, Lock, Thread
|
||||||
from typing import TypeVar, cast
|
from typing import TYPE_CHECKING, TypeVar, cast
|
||||||
|
|
||||||
from k1link.compute.pipeline_telemetry import (
|
if TYPE_CHECKING:
|
||||||
PipelineStageOutcome,
|
from k1link.compute.pipeline_telemetry import (
|
||||||
PipelineTelemetryEmitter,
|
PipelineStageOutcome,
|
||||||
PipelineTelemetryIdentity,
|
PipelineTelemetryEmitter,
|
||||||
PipelineTelemetrySink,
|
PipelineTelemetryIdentity,
|
||||||
)
|
PipelineTelemetrySink,
|
||||||
|
)
|
||||||
|
|
||||||
from .baseline import BASELINE_PROFILE_ID, BASELINE_SOURCE_ID
|
from .baseline import BASELINE_PROFILE_ID, BASELINE_SOURCE_ID
|
||||||
from .contracts import (
|
from .contracts import (
|
||||||
@@ -763,6 +764,8 @@ class ReferencePerceptionGraphV1:
|
|||||||
def _run_emitter(self) -> PipelineTelemetryEmitter | None:
|
def _run_emitter(self) -> PipelineTelemetryEmitter | None:
|
||||||
if self.telemetry_identity is None or self.telemetry_sink is None:
|
if self.telemetry_identity is None or self.telemetry_sink is None:
|
||||||
return None
|
return None
|
||||||
|
from k1link.compute.pipeline_telemetry import PipelineTelemetryEmitter
|
||||||
|
|
||||||
return PipelineTelemetryEmitter(
|
return PipelineTelemetryEmitter(
|
||||||
identity=self.telemetry_identity,
|
identity=self.telemetry_identity,
|
||||||
sink=self.telemetry_sink,
|
sink=self.telemetry_sink,
|
||||||
@@ -772,6 +775,8 @@ class ReferencePerceptionGraphV1:
|
|||||||
def _frame_emitter(self, packet: SourcePacket) -> PipelineTelemetryEmitter | None:
|
def _frame_emitter(self, packet: SourcePacket) -> PipelineTelemetryEmitter | None:
|
||||||
if self.telemetry_identity is None or self.telemetry_sink is None:
|
if self.telemetry_identity is None or self.telemetry_sink is None:
|
||||||
return None
|
return None
|
||||||
|
from k1link.compute.pipeline_telemetry import PipelineTelemetryEmitter
|
||||||
|
|
||||||
identity = replace(
|
identity = replace(
|
||||||
self.telemetry_identity,
|
self.telemetry_identity,
|
||||||
request_id=packet.envelope.frame_id,
|
request_id=packet.envelope.frame_id,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
import threading
|
import threading
|
||||||
from collections.abc import Iterator
|
from collections.abc import Iterator
|
||||||
from dataclasses import replace
|
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:
|
def _status(available: bool = True) -> ModalityStatus:
|
||||||
return ModalityStatus(
|
return ModalityStatus(
|
||||||
available=available,
|
available=available,
|
||||||
|
|||||||
Reference in New Issue
Block a user