Coverage for core / src / sensorkit / api / __init__.py: 86%
43 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-09-02 00:03 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-09-02 00:03 +0000
1# SPDX-License-Identifier: Apache-2.0
2# ruff: noqa: F401 E402
3from importlib.metadata import version as _pkg_version
5try:
6 VERSION = _pkg_version("sensorkit")
7except Exception:
8 VERSION = "0.0.0"
10from sensorkit.api.bootstrap import connect, import_modules, load_config, set_config_location
11from sensorkit.api.declarative import (
12 DeclaredController,
13 DeclaredDevice,
14 DeclaredEntity,
15 DeclaredProgram,
16 Service,
17 command_handler,
18 decl_for_instance,
19 declare_controller,
20 declare_device,
21 declare_entity,
22 declare_program,
23 entity_for_instance,
24 on_attach,
25 on_detach,
26 on_disable,
27 on_enable,
28 task_factory,
29 task_handler,
30)
31from sensorkit.api.entrypoint import service_entrypoint
32from sensorkit.backend.base import (
33 Backend,
34 BackendImpl,
35 Entity,
36 KVEntry,
37 KVError,
38 RevisionError,
39 SpecialProperty,
40 Subject,
41)
42from sensorkit.backend.event import Event, UnknownEvent
43from sensorkit.backend.request import CallContext, CallError, ExtendedResponse, Request
44from sensorkit.common.keyword import Keyword, KeywordDict, declare_keyword
45from sensorkit.config import config_json_schema, declare_config_section
46from sensorkit.core.client import SensorKit, ServiceContext, ServiceRecord, ServiceStatus
47from sensorkit.core.controller import ControllerClient, ControllerRef, ControllerState
48from sensorkit.core.device import (
49 Abort,
50 CommandDone,
51 CommandStarted,
52 DeviceClient,
53 DeviceCommand,
54 DeviceRef,
55)
56from sensorkit.core.entity import EntityClient, EntityRef
57from sensorkit.core.impl.controller import ControllerImpl
58from sensorkit.core.impl.device import DeviceImpl
59from sensorkit.core.impl.entity import EntityImpl
60from sensorkit.core.impl.program import ProgramImpl, ProgramOffers
61from sensorkit.core.program import (
62 OfferInterval,
63 ProgramClient,
64 ProgramOffering,
65 ProgramRef,
66 ProgramState,
67)
68from sensorkit.core.state import EventSourcedState
69from sensorkit.core.task import (
70 CalibrateTask,
71 CollectTask,
72 InitTask,
73 RecoverTask,
74 ShutdownTask,
75 StandbyTask,
76 Task,
77 TaskExecution,
78 TaskInfo,
79 TaskSubmission,
80)
81from sensorkit.core.trait import Archetype, Trait, declare_archetype, declare_trait
82from sensorkit.data.context import Context, ContextSubscription
83from sensorkit.data.graph import DataGraph
86def entity(obj=None) -> EntityImpl | None:
87 """Return the entity in the given or current execution context."""
88 if obj:
89 return entity_for_instance(obj)
90 else:
91 return EntityImpl.current.get()
94def program(obj=None) -> ProgramImpl | None:
95 """Return the program entity in the given or current execution context."""
96 if obj:
97 return entity_for_instance(obj)
98 else:
99 return ProgramImpl.current.get()
102def controller(obj=None) -> ControllerImpl | None:
103 """Return the controller entity in the given or current execution context."""
104 if obj:
105 return entity_for_instance(obj)
106 else:
107 return ControllerImpl.current.get()
110def device(obj=None) -> DeviceImpl | None:
111 """Return the device entity in the given or current execution context."""
112 if obj:
113 return entity_for_instance(obj)
114 else:
115 return DeviceImpl.current.get()