isar 1.23.2__tar.gz → 1.34.5__tar.gz

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.

Files changed (303) hide show
  1. isar-1.34.5/.env.test +3 -0
  2. isar-1.34.5/.github/PULL_REQUEST_TEMPLATE.md +11 -0
  3. {isar-1.23.2 → isar-1.34.5}/.github/workflows/compile_requirements.yml +2 -2
  4. isar-1.34.5/.github/workflows/execute_stale_labeler.yml +17 -0
  5. {isar-1.23.2 → isar-1.34.5}/.github/workflows/project_automations.yml +11 -5
  6. {isar-1.23.2 → isar-1.34.5}/.github/workflows/pythonpackage.yml +23 -7
  7. {isar-1.23.2 → isar-1.34.5}/.github/workflows/pythonpublish.yml +3 -0
  8. {isar-1.23.2 → isar-1.34.5}/.github/workflows/stale.yml +0 -4
  9. isar-1.34.5/.github/workflows/synchronize_labels.yml +13 -0
  10. isar-1.34.5/.github/workflows/trivy-config.yml +43 -0
  11. {isar-1.23.2 → isar-1.34.5}/.gitignore +3 -0
  12. isar-1.34.5/Makefile +23 -0
  13. {isar-1.23.2 → isar-1.34.5}/PKG-INFO +58 -99
  14. {isar-1.23.2 → isar-1.34.5}/README.md +40 -88
  15. isar-1.34.5/docs/full_state_machine_diagram.png +0 -0
  16. isar-1.34.5/docs/mission_state_machine_diagram.png +0 -0
  17. isar-1.34.5/docs/robot_status_state_machine_diagram.png +0 -0
  18. isar-1.34.5/docs/update_state_diagram.py +108 -0
  19. {isar-1.23.2 → isar-1.34.5}/pyproject.toml +15 -9
  20. isar-1.34.5/requirements.txt +324 -0
  21. {isar-1.23.2 → isar-1.34.5}/src/isar/apis/api.py +148 -77
  22. {isar-1.23.2 → isar-1.34.5}/src/isar/apis/models/models.py +19 -4
  23. isar-1.34.5/src/isar/apis/models/start_mission_definition.py +173 -0
  24. isar-1.34.5/src/isar/apis/robot_control/robot_controller.py +41 -0
  25. isar-1.34.5/src/isar/apis/schedule/scheduling_controller.py +292 -0
  26. {isar-1.23.2 → isar-1.34.5}/src/isar/apis/security/authentication.py +5 -5
  27. isar-1.34.5/src/isar/config/certs/ca-cert.pem +35 -0
  28. {isar-1.23.2 → isar-1.34.5}/src/isar/config/keyvault/keyvault_service.py +1 -1
  29. isar-1.34.5/src/isar/config/log.py +58 -0
  30. isar-1.34.5/src/isar/config/logging.conf +40 -0
  31. isar-1.34.5/src/isar/config/open_telemetry.py +102 -0
  32. {isar-1.23.2 → isar-1.34.5}/src/isar/config/predefined_mission_definition/default_exr.json +0 -2
  33. {isar-1.23.2 → isar-1.34.5}/src/isar/config/predefined_mission_definition/default_mission.json +1 -5
  34. {isar-1.23.2 → isar-1.34.5}/src/isar/config/predefined_mission_definition/default_turtlebot.json +4 -11
  35. {isar-1.23.2 → isar-1.34.5}/src/isar/config/predefined_missions/default.json +26 -28
  36. isar-1.23.2/src/isar/config/predefined_missions/default_turtlebot.json → isar-1.34.5/src/isar/config/predefined_missions/default_extra_capabilities.json +17 -16
  37. {isar-1.23.2 → isar-1.34.5}/src/isar/config/settings.py +74 -68
  38. isar-1.34.5/src/isar/eventhandlers/eventhandler.py +115 -0
  39. {isar-1.23.2 → isar-1.34.5}/src/isar/mission_planner/local_planner.py +6 -23
  40. {isar-1.23.2 → isar-1.34.5}/src/isar/mission_planner/mission_planner_interface.py +1 -1
  41. isar-1.34.5/src/isar/models/events.py +183 -0
  42. isar-1.34.5/src/isar/models/status.py +18 -0
  43. isar-1.34.5/src/isar/modules.py +133 -0
  44. isar-1.34.5/src/isar/robot/robot.py +348 -0
  45. isar-1.34.5/src/isar/robot/robot_battery.py +60 -0
  46. isar-1.34.5/src/isar/robot/robot_monitor_mission.py +415 -0
  47. isar-1.34.5/src/isar/robot/robot_pause_mission.py +74 -0
  48. isar-1.34.5/src/isar/robot/robot_resume_mission.py +67 -0
  49. isar-1.34.5/src/isar/robot/robot_start_mission.py +72 -0
  50. isar-1.34.5/src/isar/robot/robot_status.py +61 -0
  51. isar-1.34.5/src/isar/robot/robot_stop_mission.py +68 -0
  52. isar-1.34.5/src/isar/robot/robot_upload_inspection.py +75 -0
  53. {isar-1.23.2 → isar-1.34.5}/src/isar/script.py +54 -39
  54. {isar-1.23.2 → isar-1.34.5}/src/isar/services/service_connections/mqtt/mqtt_client.py +47 -11
  55. {isar-1.23.2 → isar-1.34.5}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +3 -0
  56. {isar-1.23.2 → isar-1.34.5}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -1
  57. isar-1.34.5/src/isar/services/service_connections/persistent_memory.py +69 -0
  58. isar-1.34.5/src/isar/services/utilities/robot_utilities.py +20 -0
  59. isar-1.34.5/src/isar/services/utilities/scheduling_utilities.py +563 -0
  60. isar-1.34.5/src/isar/state_machine/state_machine.py +344 -0
  61. isar-1.34.5/src/isar/state_machine/states/await_next_mission.py +108 -0
  62. isar-1.34.5/src/isar/state_machine/states/blocked_protective_stop.py +49 -0
  63. isar-1.34.5/src/isar/state_machine/states/going_to_lockdown.py +88 -0
  64. isar-1.34.5/src/isar/state_machine/states/going_to_recharging.py +81 -0
  65. isar-1.34.5/src/isar/state_machine/states/home.py +112 -0
  66. isar-1.34.5/src/isar/state_machine/states/intervention_needed.py +59 -0
  67. isar-1.34.5/src/isar/state_machine/states/lockdown.py +38 -0
  68. isar-1.34.5/src/isar/state_machine/states/maintenance.py +36 -0
  69. isar-1.34.5/src/isar/state_machine/states/monitor.py +131 -0
  70. isar-1.34.5/src/isar/state_machine/states/offline.py +49 -0
  71. isar-1.34.5/src/isar/state_machine/states/paused.py +90 -0
  72. isar-1.34.5/src/isar/state_machine/states/pausing.py +59 -0
  73. isar-1.34.5/src/isar/state_machine/states/pausing_return_home.py +59 -0
  74. isar-1.34.5/src/isar/state_machine/states/recharging.py +80 -0
  75. isar-1.34.5/src/isar/state_machine/states/resuming.py +57 -0
  76. isar-1.34.5/src/isar/state_machine/states/resuming_return_home.py +64 -0
  77. isar-1.34.5/src/isar/state_machine/states/return_home_paused.py +103 -0
  78. isar-1.34.5/src/isar/state_machine/states/returning_home.py +160 -0
  79. isar-1.34.5/src/isar/state_machine/states/stopping.py +58 -0
  80. isar-1.34.5/src/isar/state_machine/states/stopping_due_to_maintenance.py +61 -0
  81. isar-1.34.5/src/isar/state_machine/states/stopping_go_to_lockdown.py +59 -0
  82. isar-1.34.5/src/isar/state_machine/states/stopping_go_to_recharge.py +51 -0
  83. isar-1.34.5/src/isar/state_machine/states/stopping_return_home.py +73 -0
  84. isar-1.34.5/src/isar/state_machine/states/unknown_status.py +65 -0
  85. isar-1.34.5/src/isar/state_machine/states_enum.py +31 -0
  86. isar-1.34.5/src/isar/state_machine/transitions/functions/fail_mission.py +19 -0
  87. isar-1.34.5/src/isar/state_machine/transitions/functions/finish_mission.py +9 -0
  88. isar-1.34.5/src/isar/state_machine/transitions/functions/pause.py +9 -0
  89. isar-1.34.5/src/isar/state_machine/transitions/functions/resume.py +9 -0
  90. isar-1.34.5/src/isar/state_machine/transitions/functions/return_home.py +39 -0
  91. isar-1.34.5/src/isar/state_machine/transitions/functions/robot_status.py +36 -0
  92. isar-1.34.5/src/isar/state_machine/transitions/functions/start_mission.py +40 -0
  93. isar-1.34.5/src/isar/state_machine/transitions/functions/stop.py +33 -0
  94. isar-1.34.5/src/isar/state_machine/transitions/functions/utils.py +10 -0
  95. isar-1.34.5/src/isar/state_machine/transitions/mission.py +255 -0
  96. isar-1.34.5/src/isar/state_machine/transitions/return_home.py +172 -0
  97. isar-1.34.5/src/isar/state_machine/transitions/robot_status.py +84 -0
  98. isar-1.34.5/src/isar/state_machine/utils/common_event_handlers.py +98 -0
  99. isar-1.34.5/src/isar/storage/blob_storage.py +101 -0
  100. {isar-1.23.2 → isar-1.34.5}/src/isar/storage/local_storage.py +25 -12
  101. {isar-1.23.2 → isar-1.34.5}/src/isar/storage/storage_interface.py +28 -7
  102. isar-1.34.5/src/isar/storage/uploader.py +285 -0
  103. {isar-1.23.2 → isar-1.34.5}/src/isar/storage/utilities.py +31 -28
  104. {isar-1.23.2 → isar-1.34.5}/src/isar.egg-info/PKG-INFO +58 -99
  105. {isar-1.23.2 → isar-1.34.5}/src/isar.egg-info/SOURCES.txt +79 -51
  106. {isar-1.23.2 → isar-1.34.5}/src/isar.egg-info/requires.txt +14 -9
  107. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/models/exceptions/robot_exceptions.py +80 -43
  108. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/models/inspection/inspection.py +42 -33
  109. isar-1.34.5/src/robot_interface/models/mission/mission.py +25 -0
  110. isar-1.34.5/src/robot_interface/models/mission/status.py +30 -0
  111. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/models/mission/task.py +42 -79
  112. isar-1.34.5/src/robot_interface/models/robots/battery_state.py +6 -0
  113. isar-1.34.5/src/robot_interface/models/robots/media.py +13 -0
  114. isar-1.34.5/src/robot_interface/models/robots/robot_model.py +13 -0
  115. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/robot_interface.py +98 -57
  116. isar-1.34.5/src/robot_interface/telemetry/mqtt_client.py +151 -0
  117. isar-1.34.5/src/robot_interface/telemetry/payloads.py +161 -0
  118. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/utilities/json_service.py +7 -1
  119. isar-1.34.5/tests/conftest.py +211 -0
  120. isar-1.34.5/tests/integration/turtlebot/config/missions/default.json +89 -0
  121. {isar-1.23.2 → isar-1.34.5}/tests/integration/turtlebot/test_successful_mission.py +5 -72
  122. isar-1.34.5/tests/isar/apis/models/test_start_mission_definition.py +81 -0
  123. {isar-1.23.2 → isar-1.34.5}/tests/isar/apis/scheduler/test_scheduler_router.py +89 -149
  124. isar-1.34.5/tests/isar/apis/security/test_authentication.py +32 -0
  125. {isar-1.23.2 → isar-1.34.5}/tests/isar/mission/test_mission.py +6 -14
  126. isar-1.34.5/tests/isar/models/communication/test_events.py +44 -0
  127. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/readers/test_mission_reader.py +29 -40
  128. isar-1.34.5/tests/isar/services/utilities/test_queue_utilities.py +34 -0
  129. isar-1.34.5/tests/isar/services/utilities/test_scheduling_utilities.py +124 -0
  130. isar-1.34.5/tests/isar/state_machine/test_state_machine.py +1591 -0
  131. isar-1.34.5/tests/isar/storage/test_uploader.py +118 -0
  132. isar-1.34.5/tests/test_data/test_mission_not_working.json +45 -0
  133. isar-1.34.5/tests/test_data/test_mission_working.json +56 -0
  134. {isar-1.23.2 → isar-1.34.5}/tests/test_data/test_mission_working_no_tasks.json +1 -0
  135. {isar-1.23.2 → isar-1.34.5}/tests/test_data/test_thermal_image_mission.json +5 -4
  136. isar-1.34.5/tests/test_double/blob_storage.py +41 -0
  137. isar-1.34.5/tests/test_double/mission_definition.py +87 -0
  138. isar-1.34.5/tests/test_double/mqtt_client.py +37 -0
  139. {isar-1.23.2/tests/mocks → isar-1.34.5/tests/test_double}/pose.py +1 -1
  140. {isar-1.23.2/tests/mocks → isar-1.34.5/tests/test_double}/request.py +1 -1
  141. isar-1.34.5/tests/test_double/robot_interface.py +204 -0
  142. {isar-1.23.2/tests/mocks → isar-1.34.5/tests/test_double}/status.py +2 -2
  143. isar-1.34.5/tests/test_double/task.py +16 -0
  144. {isar-1.23.2/tests/mocks → isar-1.34.5/tests/test_double}/token.py +1 -1
  145. isar-1.34.5/tests/test_maintenance_mode.py +103 -0
  146. isar-1.23.2/.github/workflows/publish_isar_base_image.yml +0 -52
  147. isar-1.23.2/Dockerfile +0 -41
  148. isar-1.23.2/docker-compose-turtlebot.yml +0 -30
  149. isar-1.23.2/docker-compose.yml +0 -22
  150. isar-1.23.2/docs/state_machine_diagram.png +0 -0
  151. isar-1.23.2/requirements.txt +0 -195
  152. isar-1.23.2/src/isar/apis/models/__init__.py +0 -1
  153. isar-1.23.2/src/isar/apis/models/start_mission_definition.py +0 -224
  154. isar-1.23.2/src/isar/apis/schedule/scheduling_controller.py +0 -321
  155. isar-1.23.2/src/isar/config/certs/ca-cert.pem +0 -35
  156. isar-1.23.2/src/isar/config/log.py +0 -66
  157. isar-1.23.2/src/isar/config/logging.conf +0 -58
  158. isar-1.23.2/src/isar/config/predefined_poses/predefined_poses.py +0 -616
  159. isar-1.23.2/src/isar/config/settings.env +0 -25
  160. isar-1.23.2/src/isar/mission_planner/sequential_task_selector.py +0 -23
  161. isar-1.23.2/src/isar/mission_planner/task_selector_interface.py +0 -31
  162. isar-1.23.2/src/isar/models/communication/message.py +0 -12
  163. isar-1.23.2/src/isar/models/communication/queues/__init__.py +0 -4
  164. isar-1.23.2/src/isar/models/communication/queues/queue_io.py +0 -12
  165. isar-1.23.2/src/isar/models/communication/queues/queue_timeout_error.py +0 -2
  166. isar-1.23.2/src/isar/models/communication/queues/queues.py +0 -19
  167. isar-1.23.2/src/isar/models/communication/queues/status_queue.py +0 -20
  168. isar-1.23.2/src/isar/modules.py +0 -214
  169. isar-1.23.2/src/isar/services/readers/base_reader.py +0 -37
  170. isar-1.23.2/src/isar/services/utilities/queue_utilities.py +0 -39
  171. isar-1.23.2/src/isar/services/utilities/scheduling_utilities.py +0 -234
  172. isar-1.23.2/src/isar/state_machine/state_machine.py +0 -594
  173. isar-1.23.2/src/isar/state_machine/states/__init__.py +0 -8
  174. isar-1.23.2/src/isar/state_machine/states/idle.py +0 -87
  175. isar-1.23.2/src/isar/state_machine/states/initialize.py +0 -71
  176. isar-1.23.2/src/isar/state_machine/states/initiate.py +0 -142
  177. isar-1.23.2/src/isar/state_machine/states/monitor.py +0 -238
  178. isar-1.23.2/src/isar/state_machine/states/off.py +0 -18
  179. isar-1.23.2/src/isar/state_machine/states/offline.py +0 -63
  180. isar-1.23.2/src/isar/state_machine/states/paused.py +0 -37
  181. isar-1.23.2/src/isar/state_machine/states/stop.py +0 -95
  182. isar-1.23.2/src/isar/state_machine/states_enum.py +0 -15
  183. isar-1.23.2/src/isar/storage/blob_storage.py +0 -83
  184. isar-1.23.2/src/isar/storage/slimm_storage.py +0 -191
  185. isar-1.23.2/src/isar/storage/uploader.py +0 -168
  186. isar-1.23.2/src/robot_interface/models/initialize/__init__.py +0 -1
  187. isar-1.23.2/src/robot_interface/models/initialize/initialize_params.py +0 -9
  188. isar-1.23.2/src/robot_interface/models/inspection/__init__.py +0 -13
  189. isar-1.23.2/src/robot_interface/models/mission/mission.py +0 -28
  190. isar-1.23.2/src/robot_interface/models/mission/status.py +0 -28
  191. isar-1.23.2/src/robot_interface/models/robots/robot_model.py +0 -13
  192. isar-1.23.2/src/robot_interface/telemetry/media_connection_type.py +0 -5
  193. isar-1.23.2/src/robot_interface/telemetry/mqtt_client.py +0 -89
  194. isar-1.23.2/src/robot_interface/telemetry/payloads.py +0 -98
  195. isar-1.23.2/tests/conftest.py +0 -150
  196. isar-1.23.2/tests/integration/turtlebot/config/missions/default.json +0 -104
  197. isar-1.23.2/tests/isar/apis/security/test_authentication.py +0 -59
  198. isar-1.23.2/tests/isar/models/communication/test_queues.py +0 -49
  199. isar-1.23.2/tests/isar/models/test_start_mission_definition.py +0 -63
  200. isar-1.23.2/tests/isar/services/readers/test_base_reader.py +0 -23
  201. isar-1.23.2/tests/isar/services/utilities/test_queue_utilities.py +0 -38
  202. isar-1.23.2/tests/isar/services/utilities/test_scheduling_utilities.py +0 -55
  203. isar-1.23.2/tests/isar/state_machine/states/test_monitor.py +0 -51
  204. isar-1.23.2/tests/isar/state_machine/test_state_machine.py +0 -353
  205. isar-1.23.2/tests/isar/storage/test_blob_storage.py +0 -17
  206. isar-1.23.2/tests/isar/storage/test_uploader.py +0 -82
  207. isar-1.23.2/tests/mocks/__init__.py +0 -0
  208. isar-1.23.2/tests/mocks/blob_storage.py +0 -20
  209. isar-1.23.2/tests/mocks/mission_definition.py +0 -119
  210. isar-1.23.2/tests/mocks/mqtt_client.py +0 -10
  211. isar-1.23.2/tests/mocks/robot_interface.py +0 -98
  212. isar-1.23.2/tests/mocks/task.py +0 -16
  213. isar-1.23.2/tests/test_data/test_json_file.json +0 -227
  214. isar-1.23.2/tests/test_data/test_mission_not_working.json +0 -61
  215. isar-1.23.2/tests/test_data/test_mission_working.json +0 -93
  216. isar-1.23.2/tests/test_modules.py +0 -46
  217. {isar-1.23.2 → isar-1.34.5}/.dockerignore +0 -0
  218. {isar-1.23.2 → isar-1.34.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  219. {isar-1.23.2 → isar-1.34.5}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  220. {isar-1.23.2 → isar-1.34.5}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  221. {isar-1.23.2 → isar-1.34.5}/.github/release.yml +0 -0
  222. {isar-1.23.2 → isar-1.34.5}/.pre-commit-config.yaml +0 -0
  223. {isar-1.23.2 → isar-1.34.5}/LICENSE +0 -0
  224. {isar-1.23.2 → isar-1.34.5}/SECURITY.md +0 -0
  225. {isar-1.23.2 → isar-1.34.5}/docs/Makefile +0 -0
  226. {isar-1.23.2 → isar-1.34.5}/docs/make.bat +0 -0
  227. {isar-1.23.2 → isar-1.34.5}/docs/rst_processing.py +0 -0
  228. {isar-1.23.2 → isar-1.34.5}/docs/source/conf.py +0 -0
  229. {isar-1.23.2 → isar-1.34.5}/docs/source/index.rst +0 -0
  230. {isar-1.23.2 → isar-1.34.5}/docs/source/readme_link.md +0 -0
  231. {isar-1.23.2 → isar-1.34.5}/main.py +0 -0
  232. {isar-1.23.2 → isar-1.34.5}/radixconfig.yml +0 -0
  233. {isar-1.23.2 → isar-1.34.5}/setup.cfg +0 -0
  234. {isar-1.23.2 → isar-1.34.5}/src/isar/__init__.py +0 -0
  235. {isar-1.23.2 → isar-1.34.5}/src/isar/apis/__init__.py +0 -0
  236. {isar-1.23.2/src/isar/apis/schedule → isar-1.34.5/src/isar/apis/models}/__init__.py +0 -0
  237. {isar-1.23.2/src/isar/apis/security → isar-1.34.5/src/isar/apis/schedule}/__init__.py +0 -0
  238. {isar-1.23.2/src/isar/config → isar-1.34.5/src/isar/apis/security}/__init__.py +0 -0
  239. {isar-1.23.2/src/isar/config/keyvault → isar-1.34.5/src/isar/config}/__init__.py +0 -0
  240. {isar-1.23.2 → isar-1.34.5}/src/isar/config/configuration_error.py +0 -0
  241. {isar-1.23.2/src/isar/config/predefined_mission_definition → isar-1.34.5/src/isar/config/keyvault}/__init__.py +0 -0
  242. {isar-1.23.2 → isar-1.34.5}/src/isar/config/keyvault/keyvault_error.py +0 -0
  243. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  244. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  245. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/default_map.json +0 -0
  246. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/klab_b.json +0 -0
  247. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/klab_compressor.json +0 -0
  248. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/klab_turtlebot.json +0 -0
  249. {isar-1.23.2 → isar-1.34.5}/src/isar/config/maps/turtleworld.json +0 -0
  250. {isar-1.23.2/src/isar/config/predefined_missions → isar-1.34.5/src/isar/config/predefined_mission_definition}/__init__.py +0 -0
  251. {isar-1.23.2/src/isar/config/predefined_poses → isar-1.34.5/src/isar/config/predefined_missions}/__init__.py +0 -0
  252. {isar-1.23.2 → isar-1.34.5}/src/isar/mission_planner/__init__.py +0 -0
  253. {isar-1.23.2 → isar-1.34.5}/src/isar/models/__init__.py +0 -0
  254. {isar-1.23.2/src/isar/models/communication → isar-1.34.5/src/isar/services}/__init__.py +0 -0
  255. {isar-1.23.2/src/isar/models/mission_metadata → isar-1.34.5/src/isar/services/auth}/__init__.py +0 -0
  256. {isar-1.23.2 → isar-1.34.5}/src/isar/services/auth/azure_credentials.py +0 -0
  257. {isar-1.23.2/src/isar/services → isar-1.34.5/src/isar/services/service_connections}/__init__.py +0 -0
  258. {isar-1.23.2/src/isar/services/auth → isar-1.34.5/src/isar/services/service_connections/mqtt}/__init__.py +0 -0
  259. {isar-1.23.2 → isar-1.34.5}/src/isar/services/service_connections/request_handler.py +0 -0
  260. {isar-1.23.2/src/isar/services/readers → isar-1.34.5/src/isar/services/utilities}/__init__.py +0 -0
  261. {isar-1.23.2 → isar-1.34.5}/src/isar/services/utilities/threaded_request.py +0 -0
  262. {isar-1.23.2/src/isar/services/service_connections → isar-1.34.5/src/isar/state_machine}/__init__.py +0 -0
  263. {isar-1.23.2/src/isar/services/service_connections/mqtt → isar-1.34.5/src/isar/state_machine/states}/__init__.py +0 -0
  264. {isar-1.23.2/src/isar/services/service_connections/stid → isar-1.34.5/src/isar/storage}/__init__.py +0 -0
  265. {isar-1.23.2 → isar-1.34.5}/src/isar.egg-info/dependency_links.txt +0 -0
  266. {isar-1.23.2 → isar-1.34.5}/src/isar.egg-info/entry_points.txt +0 -0
  267. {isar-1.23.2 → isar-1.34.5}/src/isar.egg-info/top_level.txt +0 -0
  268. {isar-1.23.2/src/isar/services/utilities → isar-1.34.5/src/robot_interface}/__init__.py +0 -0
  269. {isar-1.23.2/src/isar/state_machine → isar-1.34.5/src/robot_interface/models}/__init__.py +0 -0
  270. {isar-1.23.2/src/isar/storage → isar-1.34.5/src/robot_interface/models/exceptions}/__init__.py +0 -0
  271. {isar-1.23.2/src/robot_interface → isar-1.34.5/src/robot_interface/models/initialize}/__init__.py +0 -0
  272. {isar-1.23.2/src/robot_interface/models → isar-1.34.5/src/robot_interface/models/inspection}/__init__.py +0 -0
  273. {isar-1.23.2/src/robot_interface/models/exceptions → isar-1.34.5/src/robot_interface/models/mission}/__init__.py +0 -0
  274. {isar-1.23.2/src/robot_interface/models/mission → isar-1.34.5/src/robot_interface/models/robots}/__init__.py +0 -0
  275. {isar-1.23.2/src/robot_interface/models/robots → isar-1.34.5/src/robot_interface/telemetry}/__init__.py +0 -0
  276. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/test_robot_interface.py +0 -0
  277. {isar-1.23.2/src/robot_interface/telemetry → isar-1.34.5/src/robot_interface/utilities}/__init__.py +0 -0
  278. {isar-1.23.2 → isar-1.34.5}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  279. {isar-1.23.2/src/robot_interface/utilities → isar-1.34.5/tests}/__init__.py +0 -0
  280. {isar-1.23.2/tests → isar-1.34.5/tests/integration}/__init__.py +0 -0
  281. {isar-1.23.2/tests/integration → isar-1.34.5/tests/integration/turtlebot}/__init__.py +0 -0
  282. {isar-1.23.2/tests/integration/turtlebot → isar-1.34.5/tests/integration/turtlebot/config}/__init__.py +0 -0
  283. {isar-1.23.2/tests/integration/turtlebot/config → isar-1.34.5/tests/integration/turtlebot/config/maps}/__init__.py +0 -0
  284. {isar-1.23.2 → isar-1.34.5}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  285. {isar-1.23.2/tests/integration/turtlebot/config/maps → isar-1.34.5/tests/integration/turtlebot/config/missions}/__init__.py +0 -0
  286. {isar-1.23.2/tests/integration/turtlebot/config/missions → isar-1.34.5/tests/isar}/__init__.py +0 -0
  287. {isar-1.23.2/tests/isar → isar-1.34.5/tests/isar/apis}/__init__.py +0 -0
  288. {isar-1.23.2/tests/isar/apis → isar-1.34.5/tests/isar/apis/models}/__init__.py +0 -0
  289. {isar-1.23.2/tests/isar → isar-1.34.5/tests/isar/apis}/models/example_mission_definition.json +0 -0
  290. {isar-1.23.2 → isar-1.34.5}/tests/isar/apis/scheduler/__init__.py +0 -0
  291. {isar-1.23.2 → isar-1.34.5}/tests/isar/apis/security/__init__.py +0 -0
  292. {isar-1.23.2 → isar-1.34.5}/tests/isar/mission/__init__.py +0 -0
  293. {isar-1.23.2 → isar-1.34.5}/tests/isar/models/__init__.py +0 -0
  294. {isar-1.23.2 → isar-1.34.5}/tests/isar/models/communication/__init__.py +0 -0
  295. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/__init__.py +0 -0
  296. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/readers/__init__.py +0 -0
  297. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/service_connections/__init__.py +0 -0
  298. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  299. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  300. {isar-1.23.2 → isar-1.34.5}/tests/isar/services/utilities/__init__.py +0 -0
  301. {isar-1.23.2 → isar-1.34.5}/tests/isar/state_machine/__init__.py +0 -0
  302. {isar-1.23.2 → isar-1.34.5}/tests/test_data/test_map_config/test_map_config.json +0 -0
  303. {isar-1.23.2/tests/isar/state_machine/states → isar-1.34.5/tests/test_double}/__init__.py +0 -0
isar-1.34.5/.env.test ADDED
@@ -0,0 +1,3 @@
1
+ ISAR_MQTT_ENABLED=true
2
+ ISAR_FSM_SLEEP_TIME=0.001
3
+ ISAR_UPLOAD_FAILURE_MAX_WAIT=3
@@ -0,0 +1,11 @@
1
+ ## Ready for review checklist:
2
+ - [ ] A self-review has been performed
3
+ - [ ] All commits run individually
4
+ - [ ] Temporary changes have been removed, like logging, TODO, etc.
5
+ - [ ] The PR has been tested locally
6
+ - [ ] A test has been written
7
+ - [ ] This change doesn't need a new test
8
+ - [ ] Relevant issues are linked
9
+ - [ ] Remaining work is documented in issues
10
+ - [ ] There is no remaining work from this PR that requires new issues
11
+ - [ ] The changes do not introduce dead code as unused imports, functions etc.
@@ -26,7 +26,7 @@ jobs:
26
26
  - name: Set up Python
27
27
  uses: actions/setup-python@v5
28
28
  with:
29
- python-version: "3.12"
29
+ python-version: "3.13"
30
30
 
31
31
  - name: Install pip-tools
32
32
  run: |
@@ -38,7 +38,7 @@ jobs:
38
38
  pip-compile --output-file=requirements.txt pyproject.toml --upgrade
39
39
 
40
40
  - name: Create Pull Request
41
- uses: peter-evans/create-pull-request@v6
41
+ uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e #v7
42
42
  with:
43
43
  commit-message: "GHA: Update dependencies"
44
44
  title: Update dependencies
@@ -0,0 +1,17 @@
1
+ name: Execute stale labeler
2
+ on:
3
+ workflow_dispatch:
4
+ schedule:
5
+ - cron: "35 6 * * *"
6
+
7
+ permissions:
8
+ contents: read
9
+ actions: write
10
+ issues: write
11
+ pull-requests: write
12
+
13
+ jobs:
14
+ labels:
15
+ uses: equinor/armada/.github/workflows/mark_issues_and_prs_as_stale.yml@main
16
+ secrets:
17
+ STALE_ISSUE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,4 +1,10 @@
1
1
  name: Project automations
2
+
3
+ permissions:
4
+ contents: read
5
+ issues: write
6
+ pull-requests: write
7
+
2
8
  on:
3
9
  issues:
4
10
  types:
@@ -19,7 +25,7 @@ jobs:
19
25
  if: github.event_name == 'issues' && github.event.action == 'opened' || github.event.action == 'reopened'
20
26
  steps:
21
27
  - name: 'Move issue to "Todo"'
22
- uses: leonsteinhaeuser/project-beta-automations@v2.1.0
28
+ uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 #Version 2.2.1
23
29
  with:
24
30
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
25
31
  organization: equinor
@@ -32,7 +38,7 @@ jobs:
32
38
  if: github.event_name == 'issues' && github.event.action == 'closed'
33
39
  steps:
34
40
  - name: 'Moved issue to "Done"'
35
- uses: leonsteinhaeuser/project-beta-automations@v2.1.0
41
+ uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 #Version 2.2.1
36
42
  with:
37
43
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
38
44
  organization: equinor
@@ -45,7 +51,7 @@ jobs:
45
51
  if: github.event_name == 'pull_request' && github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'review_requested'
46
52
  steps:
47
53
  - name: 'Move PR to "In Progress"'
48
- uses: leonsteinhaeuser/project-beta-automations@v2.1.0
54
+ uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 #Version 2.2.1
49
55
  with:
50
56
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
51
57
  organization: equinor
@@ -58,7 +64,7 @@ jobs:
58
64
  if: github.event_name == 'pull_request' && github.event.action == 'ready_for_review'
59
65
  steps:
60
66
  - name: 'Move PR to "Review"'
61
- uses: leonsteinhaeuser/project-beta-automations@v2.1.0
67
+ uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 #Version 2.2.1
62
68
  with:
63
69
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
64
70
  organization: equinor
@@ -71,7 +77,7 @@ jobs:
71
77
  if: github.event_name == 'pull_request' && github.event.action == 'closed'
72
78
  steps:
73
79
  - name: 'Move PR to "Done"'
74
- uses: leonsteinhaeuser/project-beta-automations@v2.1.0
80
+ uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 #Version 2.2.1
75
81
  with:
76
82
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
77
83
  organization: equinor
@@ -1,5 +1,8 @@
1
1
  name: Python package
2
2
 
3
+ permissions:
4
+ contents: read
5
+
3
6
  on:
4
7
  push:
5
8
  branches:
@@ -7,6 +10,7 @@ on:
7
10
  pull_request:
8
11
  branches:
9
12
  - main
13
+ - update-dependencies
10
14
 
11
15
  jobs:
12
16
  build:
@@ -14,7 +18,7 @@ jobs:
14
18
  strategy:
15
19
  fail-fast: false
16
20
  matrix:
17
- python-version: ["3.9", "3.10", "3.11", "3.12"]
21
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
18
22
 
19
23
  steps:
20
24
  - uses: actions/checkout@v4
@@ -28,13 +32,13 @@ jobs:
28
32
  run: |
29
33
  python -m pip install --upgrade pip
30
34
 
31
- - name: Install dependencies with the compiled requirements (for Python 3.12)
32
- if: ${{matrix.python-version == '3.12'}}
35
+ - name: Install dependencies with the compiled requirements (for Python 3.13)
36
+ if: ${{matrix.python-version == '3.13'}}
33
37
  run: |
34
38
  pip install -r requirements.txt -e .[dev]
35
39
 
36
- - name: Install dependencies based on the pyproject.toml file (for Python 3.9-3.11)
37
- if: ${{matrix.python-version != '3.12'}}
40
+ - name: Install dependencies based on the pyproject.toml file (for Python 3.9-3.12)
41
+ if: ${{matrix.python-version != '3.13'}}
38
42
  run: |
39
43
  pip install -e .[dev]
40
44
 
@@ -43,8 +47,20 @@ jobs:
43
47
  pytest
44
48
  env:
45
49
  ENVIRONMENT: local
50
+ ISAR_ENV: test
46
51
 
47
- - name: Lint
52
+ - name: Run black
48
53
  run: |
49
54
  black --check .
50
- mypy .
55
+
56
+ - name: Run isort
57
+ run: |
58
+ isort --check .
59
+
60
+ - name: Run mypy
61
+ run: |
62
+ mypy --disable-error-code=import-untyped --check-untyped-defs .
63
+
64
+ - name: Run ruff
65
+ run: |
66
+ ruff check .
@@ -1,5 +1,8 @@
1
1
  name: Upload Python Package
2
2
 
3
+ permissions:
4
+ contents: read
5
+
3
6
  on:
4
7
  release:
5
8
  types: [created]
@@ -22,11 +22,7 @@ jobs:
22
22
  uses: actions/stale@v9
23
23
  with:
24
24
  repo-token: ${{ secrets.STALE_ISSUE_TOKEN }}
25
- stale-issue-message: "This issue has automatically been marked as stale as there has been no activity for 60 days."
26
- stale-pr-message: "This pull request has automatically been marked as stale as there has been no activity for 30 days."
27
25
  stale-issue-label: "stale"
28
26
  stale-pr-label: "stale"
29
- close-issue-message: "This issue has been closed automatically due to a lack of activity."
30
- close-pr-message: "This pull request has been closed automatically due to a lack of activity."
31
27
  days-before-pr-stale: 30
32
28
  days-before-close: -1
@@ -0,0 +1,13 @@
1
+ name: Execute label synchronization
2
+ on:
3
+ workflow_dispatch:
4
+
5
+ permissions:
6
+ contents: read
7
+ issues: write
8
+
9
+ jobs:
10
+ labels:
11
+ uses: equinor/armada/.github/workflows/synchronize_labels.yml@main
12
+ secrets:
13
+ LABEL_SYNC_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,43 @@
1
+ # from https://github.com/equinor/appsec-ghas-examples/blob/main/.github/workflows/trivy-config.yml
2
+ name: Trivy IaC & Dockerfile Scanning
3
+ permissions: {}
4
+ on:
5
+ push:
6
+ branches: [ "main" ]
7
+ pull_request:
8
+ branches: [ "main" ]
9
+ schedule:
10
+ - cron: '36 0 * * 3'
11
+
12
+ jobs:
13
+ trivy-scan:
14
+ name: Scan on Main with Trivy
15
+ runs-on: ubuntu-latest
16
+ timeout-minutes: 30
17
+ permissions:
18
+ security-events: write
19
+
20
+ contents: read
21
+ actions: read
22
+
23
+ steps:
24
+ - name: Checkout code
25
+ uses: actions/checkout@v5
26
+ with:
27
+ persist-credentials: false
28
+
29
+ - name: Run Trivy vulnerability Scanner
30
+ uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8
31
+ with:
32
+ scan-type: 'config'
33
+ severity: 'CRITICAL,HIGH'
34
+ limit-severities-for-sarif: true
35
+ format: 'sarif'
36
+ output: 'trivy-results-iac.sarif'
37
+ exit-code: '0'
38
+
39
+ - name: Upload scan results to GitHub Security tab
40
+ uses: github/codeql-action/upload-sarif@v3
41
+ with:
42
+ sarif_file: 'trivy-results-iac.sarif'
43
+
@@ -137,3 +137,6 @@ dmypy.json
137
137
  # Temporary result folders
138
138
  results
139
139
  temp_results
140
+
141
+ # MacOs file system
142
+ .DS_Store
isar-1.34.5/Makefile ADDED
@@ -0,0 +1,23 @@
1
+ run:
2
+ isar-start
3
+
4
+ test:
5
+ ENVIRONMENT=local ISAR_ENV=test pytest .
6
+
7
+ format:
8
+ isort .
9
+ black .
10
+ ruff check . --fix
11
+
12
+ check:
13
+ mypy .
14
+
15
+ run-debug: # debug logs
16
+ API_LOG_LEVEL=DEBUG \
17
+ MAIN_LOG_LEVEL=DEBUG \
18
+ MQTT_LOG_LEVEL=DEBUG \
19
+ STATE_MACHINE_LOG_LEVEL=DEBUG \
20
+ UPLOADER_LOG_LEVEL=DEBUG \
21
+ CONSOLE_LOG_LEVEL=DEBUG \
22
+ ISAR_DEBUG_LOG_FORMATTER=True \
23
+ isar-start
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: isar
3
- Version: 1.23.2
3
+ Version: 1.34.5
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
@@ -95,6 +95,7 @@ Classifier: Programming Language :: Python :: 3.9
95
95
  Classifier: Programming Language :: Python :: 3.10
96
96
  Classifier: Programming Language :: Python :: 3.11
97
97
  Classifier: Programming Language :: Python :: 3.12
98
+ Classifier: Programming Language :: Python :: 3.13
98
99
  Classifier: Topic :: Scientific/Engineering
99
100
  Classifier: Topic :: Scientific/Engineering :: Physics
100
101
  Classifier: Topic :: Software Development :: Libraries
@@ -109,12 +110,9 @@ Requires-Dist: backoff
109
110
  Requires-Dist: click
110
111
  Requires-Dist: dacite
111
112
  Requires-Dist: fastapi-azure-auth
112
- Requires-Dist: fastapi
113
- Requires-Dist: injector
113
+ Requires-Dist: fastapi>=0.121.0
114
+ Requires-Dist: dependency-injector
114
115
  Requires-Dist: numpy
115
- Requires-Dist: opencensus-ext-azure
116
- Requires-Dist: opencensus-ext-logging
117
- Requires-Dist: opencensus-ext-requests
118
116
  Requires-Dist: paho-mqtt
119
117
  Requires-Dist: pydantic_settings
120
118
  Requires-Dist: pydantic
@@ -123,21 +121,30 @@ Requires-Dist: python-dotenv
123
121
  Requires-Dist: PyYAML
124
122
  Requires-Dist: requests-toolbelt
125
123
  Requires-Dist: requests
124
+ Requires-Dist: starlette>=0.49.1
126
125
  Requires-Dist: transitions
127
126
  Requires-Dist: uvicorn
127
+ Requires-Dist: opentelemetry-api
128
+ Requires-Dist: opentelemetry-sdk
129
+ Requires-Dist: opentelemetry-exporter-otlp
130
+ Requires-Dist: opentelemetry-instrumentation-fastapi
131
+ Requires-Dist: azure-monitor-opentelemetry
132
+ Requires-Dist: azure-monitor-opentelemetry-exporter>=1.0.0b38
133
+ Requires-Dist: pymysql
134
+ Requires-Dist: sqlalchemy
128
135
  Provides-Extra: dev
129
136
  Requires-Dist: black; extra == "dev"
130
- Requires-Dist: flake8; extra == "dev"
137
+ Requires-Dist: isort; extra == "dev"
131
138
  Requires-Dist: mypy; extra == "dev"
132
- Requires-Dist: myst-parser; extra == "dev"
133
139
  Requires-Dist: pip-tools; extra == "dev"
134
140
  Requires-Dist: pre-commit; extra == "dev"
135
- Requires-Dist: pytest-dotenv; extra == "dev"
136
141
  Requires-Dist: pytest-mock; extra == "dev"
137
142
  Requires-Dist: pytest-xdist; extra == "dev"
138
143
  Requires-Dist: pytest; extra == "dev"
139
144
  Requires-Dist: requests-mock; extra == "dev"
140
- Requires-Dist: sphinx; extra == "dev"
145
+ Requires-Dist: ruff; extra == "dev"
146
+ Requires-Dist: testcontainers[mysql]; extra == "dev"
147
+ Dynamic: license-file
141
148
 
142
149
  # ISAR
143
150
 
@@ -230,12 +237,21 @@ ISAR_ROBOT_PACKAGE = isar_turtlebot
230
237
  ISAR_DEFAULT_MAP = turtleworld
231
238
  ```
232
239
 
240
+ ### Run with make
241
+ Common commands for the project are in [Makefile](./Makefile).
242
+ This requires the CLI program `make`.
243
+
244
+ Usage:
245
+ ```bash
246
+ make <command-in-makefile> # for example: make run
247
+ ```
248
+
233
249
  ### Run ISAR server
234
250
 
235
251
  To run ISAR:
236
252
 
237
253
  ```bash
238
- python main.py
254
+ isar-start
239
255
  ```
240
256
 
241
257
  Note, running the full system requires that an implementation of a robot has been installed. See
@@ -255,21 +271,6 @@ In [this](./src/isar/config/predefined_missions) folder there are predefined def
255
271
  corresponding to `mission_id=1`. A new mission may be added by adding a new json-file with a mission description. Note,
256
272
  the mission IDs must be unique.
257
273
 
258
- ### Running with docker-compose
259
-
260
- ISAR may be started with an instance of the [isar-robot](https://github.com/equinor/isar-robot) package by
261
-
262
- ```shell
263
- docker-compose up --build
264
- ```
265
-
266
- Provided that the simulator from [isar-turtlebot](https://github.com/equinor/isar-turtlebot) is running ISAR may be
267
- started with the turtlebot by
268
-
269
- ```shell
270
- docker-compose -f docker-compose-turtlebot.yml up --build
271
- ```
272
-
273
274
  ### Configuration
274
275
 
275
276
  The system consists of many configuration variables which may alter the functionality. As an example, it is possible to
@@ -295,6 +296,20 @@ There are two methods of specifying configuration.
295
296
  By adding environment variables with the prefix `ISAR_` to the [settings.env](./src/isar/config/settings.env) file
296
297
  the configuration variables will be overwritten by the values in this file.
297
298
 
299
+ ### Setup for testing
300
+ To be able to execute the tests you need to set the `ISAR_ENV` environment variable beforehand. Depending on your operating system and the command line you are using you can use one of the following commands:
301
+
302
+ **Bash/Zsh**
303
+ ```bash
304
+ export ISAR_ENV=test
305
+ ```
306
+ **Windows Command prompt**
307
+ ```cmd
308
+ set ISAR_ENV=test
309
+ ```
310
+
311
+ Remember to set `ISAR_ENV` back to `None` when you want to run `isar-start` afterwards.
312
+
298
313
  ### Running tests
299
314
 
300
315
  After following the steps in [Development](#install), you can run the tests:
@@ -345,24 +360,29 @@ The system consists of two main components.
345
360
  The state machine handles interaction with the robots API and monitors the execution of missions. It also enables
346
361
  interacting with the robot before, during and after missions.
347
362
 
348
- The state machine is based on the [transitions](https://github.com/pytransitions/transitions) package for Python. An visualization of the state machine can be seen below:
349
- ![State Machine](./docs/state_machine_diagram.png)
363
+ The state machine is based on the [transitions](https://github.com/pytransitions/transitions) package for Python. The following are some visualizations of the state machine:
364
+
365
+ Mission behavior without the robot status changed transition that enable the resting states to transition between each other if the robot status changes:
366
+ ![State Machine extended](./docs/extended_state_machine_diagram.png)
367
+
368
+ Robot status changed transition:
369
+ ![State Machine robot status changed](./docs/robot_status_state_machine_diagram.png)
370
+
371
+ Full state machine:
372
+ ![State Machine full](./docs/full_state_machine_diagram.png)
350
373
 
351
374
  In general the states
352
375
 
353
376
  ```
354
- States.Off,
355
- States.Initialize,
356
- States.Initiate,
357
- States.Stop,
377
+ States.Stopping,
358
378
  States.Monitor,
359
379
  States.Paused,
360
380
  ```
361
381
 
362
- indicates that the state machine is already running. For running a mission the state machine need to be in the state
382
+ indicates that the state machine is already running. For running a mission the state machine need to be in the states
363
383
 
364
384
  ```
365
- States.Idle
385
+ States.Home, States.AwaitNextMission or States.ReturningHome
366
386
  ```
367
387
 
368
388
  ### FastAPI
@@ -384,10 +404,10 @@ overriding the configuration through an environment variable. It accepts a json
384
404
  in the list to retrieve the corresponding handler. The current options are
385
405
 
386
406
  ```
387
- ISAR_STORAGE = '["local", "blob", "slimm"]'
407
+ ISAR_STORAGE = '["local", "blob"]'
388
408
  ```
389
409
 
390
- Note that the `blob` and `slimm` options require special configuration to authenticate to these endpoints.
410
+ Note that the `blob` option requires special configuration to authenticate to these endpoints.
391
411
 
392
412
  ### Implement your own storage module
393
413
 
@@ -395,68 +415,6 @@ You can create your own storage module by implementing the [storage interface](.
395
415
  and adding your storage module to the selection [here](./src/isar/modules.py). Note that you must add your module as an
396
416
  option in the dictionary.
397
417
 
398
- ## Task selection
399
-
400
- The tasks of a mission are selected based on a task selector module, defined by the `TASK_SELECTOR` configuration variable. The default task selector is `sequential`. When using the default module, tasks are executed in sequential order defined by the current input mission.
401
-
402
- ### Implement you own task selector module
403
-
404
- Custom task selector modules may be added by implementing additional versions of the [task selector interface](./src/isar/mission_planner/task_selector_interface.py).
405
-
406
- For every custom module, the interface function `next_task()` must be implemented. All interface implementations by default have access to the list of tasks in the current mission through the member `self.tasks`, however additional variables may be supplied by adding arguments to `next_task()`. To comply with the interface definition, the function should return the next task upon every call, and raise the `TaskSelectorStop` exception when all tasks in the current mission have been completed:
407
-
408
- ```python
409
- class CustomTaskSelector(TaskSelectorInterface):
410
- ...
411
- def next_task(...) -> Task:
412
-
413
- # Add code here
414
- ...
415
-
416
- # Raise `TaskSelectorStop` when all tasks have been completed
417
- ...
418
- ```
419
-
420
- Optionally, the `initialize()` function may be extended by supplementing the parameter list or function body:
421
-
422
- ```python
423
- class CustomTaskSelector(TaskSelectorInterface):
424
- ...
425
- def initialize(self, tasks: List[Task], ...) -> None:
426
- super.initialize(tasks=tasks)
427
-
428
- # Add supplementary code here
429
- ...
430
- ```
431
-
432
- A custom task selector may be made available during [module selection](./src/isar/modules.py) by adding it to the series of options in the dictionary of injector modules. It can then be activated by overriding the task selector configuration variable:
433
-
434
- ```python
435
- # Add custom task selector module to `modules.py`
436
-
437
- class CustomTaskSelectorModule(Module):
438
- @provider
439
- @singleton
440
- def provide_task_selector(self) -> TaskSelectorInterface:
441
- return CustomTaskSelector()
442
-
443
- ...
444
-
445
- # Make it available to select during injector instantiation
446
-
447
- modules: dict[str, tuple[Module, Union[str, bool]]] = {
448
- ...
449
- "task_selector": (
450
- {
451
- "sequential": SequentialTaskSelectorModule,
452
- "custom": CustomTaskSelectorModule
453
- }
454
- ...
455
- )
456
- ...
457
- }
458
- ```
459
-
460
418
  ## API authentication
461
419
 
462
420
  The API has an option to include user authentication. This can be enabled by setting the environment variable
@@ -473,6 +431,7 @@ Enabling API authentication also requires the same environment variables. The re
473
431
  AZURE_CLIENT_ID
474
432
  AZURE_TENANT_ID
475
433
  AZURE_CLIENT_SECRET
434
+ ISAR_BLOB_STORAGE_ACCOUNT
476
435
  ```
477
436
 
478
437
  ## MQTT communication