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

1# SPDX-License-Identifier: Apache-2.0 

2# ruff: noqa: F401 E402 

3from importlib.metadata import version as _pkg_version 

4 

5try: 

6 VERSION = _pkg_version("sensorkit") 

7except Exception: 

8 VERSION = "0.0.0" 

9 

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 

84 

85 

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() 

92 

93 

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() 

100 

101 

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() 

108 

109 

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()