isar 1.30.2__py3-none-any.whl → 1.30.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of isar might be problematic. Click here for more details.

@@ -1,187 +1,24 @@
1
- import logging
2
- from queue import Queue
3
- from typing import TYPE_CHECKING, Optional
1
+ from typing import TYPE_CHECKING
4
2
 
5
3
  from transitions import State
6
4
 
7
- from isar.models.communication.message import StartMissionMessage
8
- from isar.models.communication.queues.queue_utils import (
9
- check_for_event,
10
- check_for_event_without_consumption,
11
- trigger_event,
5
+ from isar.state_machine.generic_states.ongoing_mission import (
6
+ OngoingMission,
7
+ OngoingMissionStates,
12
8
  )
13
- from robot_interface.models.exceptions.robot_exceptions import ErrorMessage
14
- from robot_interface.models.mission.status import TaskStatus
15
- from robot_interface.models.mission.task import Task
16
9
 
17
10
  if TYPE_CHECKING:
18
11
  from isar.state_machine.state_machine import StateMachine
19
12
 
20
13
 
21
- class ReturningHome(State):
14
+ class ReturningHome(State, OngoingMission):
22
15
  def __init__(self, state_machine: "StateMachine") -> None:
23
- super().__init__(name="returning_home", on_enter=self.start, on_exit=self.stop)
24
- self.state_machine: "StateMachine" = state_machine
25
-
26
- self.logger = logging.getLogger("state_machine")
27
- self.events = self.state_machine.events
28
-
29
- self.awaiting_task_status: bool = False
30
- self.signal_state_machine_to_stop = state_machine.signal_state_machine_to_stop
31
-
32
- def start(self) -> None:
33
- self.state_machine.update_state()
34
- self._run()
35
-
36
- def stop(self) -> None:
37
- self.state_machine.mission_ongoing = False
38
- return
39
-
40
- def _check_and_handle_stop_mission_event(self, event: Queue) -> bool:
41
- if check_for_event(event):
42
- self.state_machine.stop() # type: ignore
43
- return True
44
- return False
45
-
46
- def _check_and_handle_mission_started_event(self, event: Queue) -> bool:
47
- if self.state_machine.mission_ongoing:
48
- return False
49
-
50
- if check_for_event(event):
51
- self.state_machine.mission_ongoing = True
52
- return False
53
-
54
- return True
55
-
56
- def _check_and_handle_mission_failed_event(self, event: Queue) -> bool:
57
- mission_failed: Optional[ErrorMessage] = check_for_event(event)
58
- if mission_failed is not None:
59
- self.state_machine.logger.warning(
60
- f"Failed to initiate mission "
61
- f"{str(self.state_machine.current_mission.id)[:8]} because: "
62
- f"{mission_failed.error_description}"
63
- )
64
- self.state_machine.current_mission.error_message = ErrorMessage(
65
- error_reason=mission_failed.error_reason,
66
- error_description=mission_failed.error_description,
67
- )
68
-
69
- self.state_machine.mission_failed_to_start() # type: ignore
70
- return True
71
- return False
72
-
73
- def _check_and_handle_task_status_failed_event(self, event: Queue) -> bool:
74
- task_failure: Optional[ErrorMessage] = check_for_event(event)
75
- if task_failure is not None:
76
- self.awaiting_task_status = False
77
- self.state_machine.current_task.error_message = task_failure
78
- self.logger.error(
79
- f"Monitoring task {self.state_machine.current_task.id[:8]} failed "
80
- f"because: {task_failure.error_description}"
81
- )
82
- return self._handle_new_task_status(TaskStatus.Failed)
83
- elif not self.awaiting_task_status:
84
- trigger_event(
85
- self.events.state_machine_events.task_status_request,
86
- self.state_machine.current_task.id,
87
- )
88
- self.awaiting_task_status = True
89
- return False
90
-
91
- def _check_and_handle_task_status_event(self, event: Queue) -> bool:
92
- status: Optional[TaskStatus] = check_for_event(event)
93
- if status is not None:
94
- self.awaiting_task_status = False
95
- return self._handle_new_task_status(status)
96
- elif not self.awaiting_task_status:
97
- trigger_event(
98
- self.events.state_machine_events.task_status_request,
99
- self.state_machine.current_task.id,
100
- )
101
- self.awaiting_task_status = True
102
- return False
103
-
104
- def _handle_new_task_status(self, status: TaskStatus) -> bool:
105
- if self.state_machine.current_task is None:
106
- self.state_machine.iterate_current_task()
107
-
108
- self.state_machine.current_task.status = status
109
-
110
- if self.state_machine.current_task.is_finished():
111
- self._report_task_status(self.state_machine.current_task)
112
- self.state_machine.publish_task_status(task=self.state_machine.current_task)
113
-
114
- self.state_machine.iterate_current_task()
115
- if self.state_machine.current_task is None:
116
- if status != TaskStatus.Successful:
117
- self.state_machine.return_home_failed() # type: ignore
118
- return True
119
- self.state_machine.returned_home() # type: ignore
120
- return True
121
-
122
- # Report and update next task
123
- self.state_machine.current_task.update_task_status()
124
- self.state_machine.publish_task_status(task=self.state_machine.current_task)
125
- return False
126
-
127
- def _check_and_handle_start_mission_event(
128
- self, event: Queue[StartMissionMessage]
129
- ) -> bool:
130
- if check_for_event_without_consumption(event):
131
- self.state_machine.stop() # type: ignore
132
- return True
133
-
134
- return False
135
-
136
- def _run(self) -> None:
137
- while True:
138
- if self.signal_state_machine_to_stop.is_set():
139
- self.logger.info(
140
- "Stopping state machine from %s state", self.__class__.__name__
141
- )
142
- break
143
-
144
- if self._check_and_handle_stop_mission_event(
145
- self.events.api_requests.stop_mission.input
146
- ):
147
- break
148
-
149
- if self._check_and_handle_mission_started_event(
150
- self.events.robot_service_events.mission_started
151
- ):
152
- continue
153
-
154
- if self._check_and_handle_task_status_event(
155
- self.events.robot_service_events.task_status_updated
156
- ):
157
- break
158
-
159
- if self._check_and_handle_start_mission_event(
160
- self.events.api_requests.start_mission.input
161
- ):
162
- break
163
-
164
- if self._check_and_handle_mission_failed_event(
165
- self.events.robot_service_events.mission_failed
166
- ):
167
- break
168
-
169
- if self._check_and_handle_task_status_failed_event(
170
- self.events.robot_service_events.task_status_failed
171
- ):
172
- break
173
-
174
- if self._check_and_handle_task_status_event(
175
- self.events.robot_service_events.task_status_updated
176
- ):
177
- break
178
-
179
- def _report_task_status(self, task: Task) -> None:
180
- if task.status == TaskStatus.Failed:
181
- self.logger.warning(
182
- f"Task: {str(task.id)[:8]} was reported as failed by the robot"
183
- )
184
- elif task.status == TaskStatus.Successful:
185
- self.logger.info(
186
- f"{type(task).__name__} task: {str(task.id)[:8]} completed"
187
- )
16
+ State.__init__(
17
+ self, name="returning_home", on_enter=self.start, on_exit=self.stop
18
+ )
19
+
20
+ OngoingMission.__init__(
21
+ self,
22
+ state_machine=state_machine,
23
+ state=OngoingMissionStates.ReturningHome,
24
+ )
@@ -1,100 +1,20 @@
1
- import logging
2
- import time
3
- from queue import Queue
4
- from typing import TYPE_CHECKING, Optional
1
+ from typing import TYPE_CHECKING
5
2
 
6
3
  from transitions import State
7
4
 
8
- from isar.models.communication.message import StartMissionMessage
9
- from isar.models.communication.queues.queue_io import QueueIO
10
- from isar.models.communication.queues.queue_utils import (
11
- check_for_event,
12
- check_shared_state,
13
- )
14
- from isar.models.communication.queues.status_queue import StatusQueue
15
- from robot_interface.models.mission.status import RobotStatus
16
-
17
5
  if TYPE_CHECKING:
18
6
  from isar.state_machine.state_machine import StateMachine
19
7
 
8
+ from isar.state_machine.generic_states.idle import Idle, IdleStates
9
+
20
10
 
21
- class RobotStandingStill(State):
11
+ class RobotStandingStill(State, Idle):
22
12
  def __init__(self, state_machine: "StateMachine") -> None:
23
- super().__init__(
24
- name="robot_standing_still", on_enter=self.start, on_exit=self.stop
13
+ State.__init__(
14
+ self, name="robot_standing_still", on_enter=self.start, on_exit=self.stop
15
+ )
16
+ Idle.__init__(
17
+ self,
18
+ state_machine=state_machine,
19
+ state=IdleStates.RobotStandingStill,
25
20
  )
26
- self.state_machine: "StateMachine" = state_machine
27
- self.logger = logging.getLogger("state_machine")
28
- self.events = self.state_machine.events
29
- self.shared_state = self.state_machine.shared_state
30
- self.signal_state_machine_to_stop = state_machine.signal_state_machine_to_stop
31
-
32
- def start(self) -> None:
33
- self.state_machine.update_state()
34
- self._run()
35
-
36
- def stop(self) -> None:
37
- return
38
-
39
- def _check_and_handle_stop_mission_event(self, event: Queue) -> bool:
40
- if check_for_event(event):
41
- self.state_machine.stop() # type: ignore
42
- return True
43
- return False
44
-
45
- def _check_and_handle_start_mission_event(
46
- self, event: Queue[StartMissionMessage]
47
- ) -> bool:
48
- start_mission: Optional[StartMissionMessage] = check_for_event(event)
49
- if start_mission:
50
- self.state_machine.start_mission(mission=start_mission.mission)
51
- self.state_machine.request_mission_start() # type: ignore
52
- return True
53
- return False
54
-
55
- def _check_and_handle_return_home_event(self, event: QueueIO) -> bool:
56
- if check_for_event(event.input):
57
- event.output.put(True)
58
- self.state_machine.request_return_home() # type: ignore
59
- return True
60
- return False
61
-
62
- def _check_and_handle_robot_status_event(
63
- self, event: StatusQueue[RobotStatus]
64
- ) -> bool:
65
- robot_status: RobotStatus = check_shared_state(event)
66
- if robot_status != RobotStatus.Available:
67
- self.state_machine.robot_status_changed() # type: ignore
68
- return True
69
-
70
- return False
71
-
72
- def _run(self) -> None:
73
- while True:
74
- if self.signal_state_machine_to_stop.is_set():
75
- self.logger.info(
76
- "Stopping state machine from %s state", self.__class__.__name__
77
- )
78
- break
79
-
80
- if self._check_and_handle_stop_mission_event(
81
- self.events.api_requests.stop_mission.input
82
- ):
83
- break
84
-
85
- if self._check_and_handle_start_mission_event(
86
- self.events.api_requests.start_mission.input
87
- ):
88
- break
89
-
90
- if self._check_and_handle_return_home_event(
91
- self.events.api_requests.return_home
92
- ):
93
- break
94
-
95
- if self._check_and_handle_robot_status_event(
96
- self.shared_state.robot_status
97
- ):
98
- break
99
-
100
- time.sleep(self.state_machine.sleep_time)
@@ -106,7 +106,7 @@ def get_mission_transitions(state_machine: "StateMachine") -> List[dict]:
106
106
  },
107
107
  {
108
108
  "trigger": "mission_failed_to_start",
109
- "source": state_machine.monitor_state,
109
+ "source": [state_machine.monitor_state, state_machine.returning_home_state],
110
110
  "dest": state_machine.robot_standing_still_state,
111
111
  "before": def_transition(state_machine, report_failed_mission_and_finalize),
112
112
  },
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: isar
3
- Version: 1.30.2
3
+ Version: 1.30.3
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Author-email: Equinor ASA <fg_robots_dev@equinor.com>
6
6
  License: Eclipse Public License version 2.0
@@ -15,7 +15,7 @@ isar/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  isar/config/configuration_error.py,sha256=rO6WOhafX6xvVib8WxV-eY483Z0PpN-9PxGsq5ATfKc,46
16
16
  isar/config/log.py,sha256=SzEWbzXU1DpN7YONIRT8k0zBOGm_qVkXlJuuZtb8STc,2300
17
17
  isar/config/logging.conf,sha256=mYO1xf27gAopEMHhGzY7-mwyfN16rwRLkPNMvy3zn2g,1127
18
- isar/config/settings.py,sha256=IYnL8aMOIlEIKzVMtJVFM1LlNlNdmW-VxiEEvvnhcqk,12324
18
+ isar/config/settings.py,sha256=M8Licz8HfVH46nh8dmUwVyi-4MqWD-1sYBOYNoorae0,12379
19
19
  isar/config/certs/ca-cert.pem,sha256=qoNljfad_qcMxhXJIUMLd7nT-Qwf_d4dYSdoOFEOE8I,2179
20
20
  isar/config/keyvault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  isar/config/keyvault/keyvault_error.py,sha256=zvPCsZLjboxsxthYkxpRERCTFxYV8R5WmACewAUQLwk,41
@@ -50,8 +50,8 @@ isar/models/communication/queues/queue_utils.py,sha256=wg6bIR3NS35Ek9hnGR5eN8z6i
50
50
  isar/models/communication/queues/status_queue.py,sha256=on8kvlNsG6MJjEVsyqtBswIpmOdOggQiKr7F5x0T3jw,514
51
51
  isar/models/mission_metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  isar/robot/robot.py,sha256=h-Z_1xCACekHvaj-vPJAhdzixSlcW4zMpe9__ui0zv8,5490
53
- isar/robot/robot_start_mission.py,sha256=jTTTAA_S3fIdzN57BsfVm_kgDzZZNMCn9UY5MkEncu8,2859
54
- isar/robot/robot_status.py,sha256=j5fGq5FzpEscmqUL6i8jRWCZEJ56b2g_DUpAgWpE1YI,1935
53
+ isar/robot/robot_start_mission.py,sha256=vQKsKnrWQuY70jEK-qeeaZYpXxQH4vElorczYZheXTQ,3423
54
+ isar/robot/robot_status.py,sha256=FpkTIAA-O5vKuyU7fnWn2YXtbstq5qbk9XSxbn_0MXU,2015
55
55
  isar/robot/robot_stop_mission.py,sha256=jUyfemvbyigxrlIp9aKPn-PvarhagJEgajQPS_LgJ7g,2442
56
56
  isar/robot/robot_task_status.py,sha256=71SYPnoqaFbTe1bELLTvAUigAJ-McpomC2sjYQNQs_A,3290
57
57
  isar/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -70,20 +70,23 @@ isar/services/utilities/robot_utilities.py,sha256=J3miRs0t74HNBoMIzVMceMCibp5Doz
70
70
  isar/services/utilities/scheduling_utilities.py,sha256=SVmpAuU7101FVUx6x4tcMDrxYaWBPhgOkntFxX_d6Zc,10179
71
71
  isar/services/utilities/threaded_request.py,sha256=py4G-_RjnIdHljmKFAcQ6ddqMmp-ZYV39Ece-dqRqjs,1874
72
72
  isar/state_machine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- isar/state_machine/state_machine.py,sha256=EvPTMTWkJuZlrr65cDsNXiyxvjk-B_81Q9U1O_ipS00,12864
73
+ isar/state_machine/state_machine.py,sha256=onPjxGqDGSSvjHxCosKxIyiTw0X01FLwJX9rJArqfXg,13152
74
74
  isar/state_machine/states_enum.py,sha256=Z3dO6k6JmQAZ1lzcR58oVCxoCky_-ZS9MaL3RSaNbZ4,434
75
+ isar/state_machine/generic_states/idle.py,sha256=T_LSadQ8Eu9egYPgL43WKDYv27MwFu-dqIxDazVE_KU,4359
76
+ isar/state_machine/generic_states/ongoing_mission.py,sha256=NTYQIddTG0Nsq_ZjcWWBSe9KsQp_7zQcKH_0HYW18SQ,10850
77
+ isar/state_machine/generic_states/robot_unavailable.py,sha256=pHmed1uRPwCWAR4uBJmdnxi9WX8veTbGG9ephmROhm0,1851
75
78
  isar/state_machine/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- isar/state_machine/states/await_next_mission.py,sha256=Afmg2mtWQrlGLlsHJuHLeLWm0RT1lngN8MfRQrGUvXA,3227
77
- isar/state_machine/states/blocked_protective_stop.py,sha256=Se7ZkZEb2TUYMWBwBDfetNnRH9vkmIwHlsHMqZhmDxg,1714
78
- isar/state_machine/states/home.py,sha256=YKcOuoj_Z4Z61l_74mOnNQl0mKjRnfuJSl2nk1d6wXE,2956
79
- isar/state_machine/states/monitor.py,sha256=FLXJEXyD5GJBwffeHF-ykaEe9lXL8XqMN-C61eIVtYQ,9631
80
- isar/state_machine/states/offline.py,sha256=aqHv8EH68pfq4yTIxOxxDW7VMkPWcQZX3fNgz90_EbE,1503
81
- isar/state_machine/states/paused.py,sha256=NgEl48GjLvnqGfPipYZZ6Yj8vdTb-fFLAK2tUu8i9j8,1461
82
- isar/state_machine/states/returning_home.py,sha256=m0tjDaIC5Pi6WqjyZbAqCgA5hDP8iVzIvJQFLHFlTm4,7005
83
- isar/state_machine/states/robot_standing_still.py,sha256=h2a0CTxXIjE8YKT9_8hkU80q0caq4TYCxHaOYB54cKc,3378
79
+ isar/state_machine/states/await_next_mission.py,sha256=U0oGi-O05S-ZvdhpQRuirrY3ZBbblURo5U95PsscMlQ,573
80
+ isar/state_machine/states/blocked_protective_stop.py,sha256=KDux2lm5kwEEarnDt9FG4MFrWbYUzs1_DX5hu2ILIlI,675
81
+ isar/state_machine/states/home.py,sha256=2v7BFQn4QZ0npOrXpWLWCoHD5IpSyAJr-vQCS3MQWJs,514
82
+ isar/state_machine/states/monitor.py,sha256=1PMirQaaQa_V-DEmbv-4dqlrB5q_XTg1Q1Gt--F1Bgw,655
83
+ isar/state_machine/states/offline.py,sha256=vZnBMVDnehZ-0gPsHNVRpZtb8OBBFkeEnq2olo_Ep6M,609
84
+ isar/state_machine/states/paused.py,sha256=IgnWBM6WXj3wjFZMARAPWIpzWGyUSW35DVBvNHuiNP8,1460
85
+ isar/state_machine/states/returning_home.py,sha256=BBQo3PoNP-THlvJa5gQr0fNBhInh_Ox1L2OeH8evUq8,638
86
+ isar/state_machine/states/robot_standing_still.py,sha256=RbOZSiQz72tWAJID5ksgzcb4lND6OniiG35IE1wMUHk,579
84
87
  isar/state_machine/states/stopping.py,sha256=Y44kEw-xB9_63eP6utAMY0RegrIz_1nL5cSI3cfaXEg,2838
85
88
  isar/state_machine/states/unknown_status.py,sha256=tOwfHW_4bKKkUTpKD7qc5gIwGT_fTXaCNxXcogGw-wo,2416
86
- isar/state_machine/transitions/mission.py,sha256=JJt_v84xFS60cMDIz_MsE6GRLBwpxx2JM5BTIB2O05Q,4867
89
+ isar/state_machine/transitions/mission.py,sha256=Sb_D9i1orV_I_eCDI0c8ZvhCU89peUqTfHI5-G36d08,4905
87
90
  isar/state_machine/transitions/return_home.py,sha256=LeOMnckUUQYzBYRidD2ge6M0KdxGDTgo-ioXR7_9r8A,2714
88
91
  isar/state_machine/transitions/robot_status.py,sha256=c1ceyWRGCtx-KTDtxHXRD7oPbt8TQ2ej24A0wyim8vc,2720
89
92
  isar/state_machine/transitions/functions/fail_mission.py,sha256=_6HqBMALDinFZ4yh5GMpeqqgV5tw5i8OVMj5UDdqesg,495
@@ -101,9 +104,9 @@ isar/storage/local_storage.py,sha256=Bnmoi5gyN8r-oRh0aHrOdGqaH3JqRScFKMRXYojW5kY
101
104
  isar/storage/storage_interface.py,sha256=DYDry4I7aZpDHJhsBF6s8zrgokFAc7fdKJKfA8AvL7o,828
102
105
  isar/storage/uploader.py,sha256=HAC3ssuPQCQ1xH4aTQfHIaq-ZoEzKwONWmsAOpNXOzw,9523
103
106
  isar/storage/utilities.py,sha256=oLH0Rp7UtrQQdilfITnmXO1Z0ExdeDhBImYHid55vBA,3449
104
- isar-1.30.2.dist-info/licenses/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
107
+ isar-1.30.3.dist-info/licenses/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
105
108
  robot_interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- robot_interface/robot_interface.py,sha256=9I6c_7Qi8lOwb8M96p12iX2KwrRhcAXz1Ug_tnBEKcU,7821
109
+ robot_interface/robot_interface.py,sha256=Miout0IRX7QniUNu_upyNzkB8KDUWin7GGCqIeMh83E,8195
107
110
  robot_interface/test_robot_interface.py,sha256=FV1urn7SbsMyWBIcTKjsBwAG4IsXeZ6pLHE0mA9EGGs,692
108
111
  robot_interface/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
112
  robot_interface/models/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -125,8 +128,8 @@ robot_interface/telemetry/payloads.py,sha256=78EVedDyRhYIquwXWdwjhA3RntMboCcuPWE
125
128
  robot_interface/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
129
  robot_interface/utilities/json_service.py,sha256=qkzVkb60Gi_pto-b5n1vNzCrQze2yqgIJqSLNLYj1Fg,1034
127
130
  robot_interface/utilities/uuid_string_factory.py,sha256=_NQIbBQ56w0qqO0MUDP6aPpHbxW7ATRhK8HnQiBSLkc,76
128
- isar-1.30.2.dist-info/METADATA,sha256=olWUSdkBtmv0INgMAqJYIS3IB7VzBdCMQ96SH3Z8lZ4,31063
129
- isar-1.30.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
130
- isar-1.30.2.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
131
- isar-1.30.2.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
132
- isar-1.30.2.dist-info/RECORD,,
131
+ isar-1.30.3.dist-info/METADATA,sha256=wJcwLK3BoorZOiqr_4dYD_sdppvRkl8qIHazybd1Ml0,31063
132
+ isar-1.30.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
133
+ isar-1.30.3.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
134
+ isar-1.30.3.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
135
+ isar-1.30.3.dist-info/RECORD,,
@@ -48,6 +48,9 @@ class RobotInterface(metaclass=ABCMeta):
48
48
 
49
49
  Raises
50
50
  ------
51
+ RobotCommunicationTimeoutException or RobotCommunicationException
52
+ If the robot package is unable to communicate with the robot API the fetching
53
+ of task status will be attempted again until a certain number of retries
51
54
  RobotException
52
55
  If the task status could not be retrieved.
53
56
 
@@ -56,7 +59,7 @@ class RobotInterface(metaclass=ABCMeta):
56
59
 
57
60
  @abstractmethod
58
61
  def stop(self) -> None:
59
- """Stops the execution of the current task and stops the movement of the robot.
62
+ """Stops the execution of the current task and corresponding mission.
60
63
 
61
64
  Returns
62
65
  -------
@@ -121,8 +124,8 @@ class RobotInterface(metaclass=ABCMeta):
121
124
 
122
125
  Returns
123
126
  -------
124
- Sequence[Inspection]
125
- List containing all the inspection connected to the given task.
127
+ Inspection
128
+ The inspection connected to the given task.
126
129
  get_inspection has responsibility to assign the inspection_id of the task
127
130
  to the inspection that it returns.
128
131
 
@@ -188,6 +191,7 @@ class RobotInterface(metaclass=ABCMeta):
188
191
  -------
189
192
  MediaConfig
190
193
  An object containing the connection information for a media stream connection
194
+
191
195
  """
192
196
  raise NotImplementedError
193
197
 
@@ -210,6 +214,7 @@ class RobotInterface(metaclass=ABCMeta):
210
214
  -------
211
215
  List[Thread]
212
216
  List containing all threads that will be started to publish telemetry.
217
+
213
218
  """
214
219
  raise NotImplementedError
215
220
 
@@ -229,13 +234,16 @@ class RobotInterface(metaclass=ABCMeta):
229
234
  Raises
230
235
  -------
231
236
  RobotCommunicationException
232
- Raised if the robot package is unable to communicate with the robot API
237
+ Raised if the robot package is unable to communicate with the robot API.
238
+ The fetching of robot status will be attempted again until success
233
239
  RobotAPIException
234
240
  Raised if the robot package is able to communicate with the API but an error
235
- occurred while interpreting the response
241
+ occurred while interpreting the response. The fetching of robot status will
242
+ be attempted again until success
236
243
  RobotException
237
244
  Catches other RobotExceptions that may have occurred while retrieving the
238
- robot status
239
- At this point ISAR will attempt to request the robot status again
245
+ robot status. The fetching of robot status will be attempted again until
246
+ success
247
+
240
248
  """
241
249
  raise NotImplementedError
File without changes