isar 1.20.3__tar.gz → 1.22.0__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 (205) hide show
  1. {isar-1.20.3 → isar-1.22.0}/.github/workflows/pythonpackage.yml +6 -6
  2. {isar-1.20.3 → isar-1.22.0}/PKG-INFO +1 -1
  3. {isar-1.20.3 → isar-1.22.0}/requirements.txt +11 -11
  4. {isar-1.20.3 → isar-1.22.0}/src/isar/config/settings.py +4 -0
  5. {isar-1.20.3 → isar-1.22.0}/src/isar/script.py +3 -1
  6. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/state_machine.py +16 -0
  7. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/monitor.py +4 -1
  8. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/paused.py +5 -2
  9. {isar-1.20.3 → isar-1.22.0}/src/isar.egg-info/PKG-INFO +1 -1
  10. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/exceptions/robot_exceptions.py +14 -0
  11. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/robot_interface.py +38 -0
  12. {isar-1.20.3 → isar-1.22.0}/tests/mocks/robot_interface.py +6 -0
  13. {isar-1.20.3 → isar-1.22.0}/.dockerignore +0 -0
  14. {isar-1.20.3 → isar-1.22.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {isar-1.20.3 → isar-1.22.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  16. {isar-1.20.3 → isar-1.22.0}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  17. {isar-1.20.3 → isar-1.22.0}/.github/release.yml +0 -0
  18. {isar-1.20.3 → isar-1.22.0}/.github/workflows/compile_requirements.yml +0 -0
  19. {isar-1.20.3 → isar-1.22.0}/.github/workflows/project_automations.yml +0 -0
  20. {isar-1.20.3 → isar-1.22.0}/.github/workflows/publish_isar_base_image.yml +0 -0
  21. {isar-1.20.3 → isar-1.22.0}/.github/workflows/pythonpublish.yml +0 -0
  22. {isar-1.20.3 → isar-1.22.0}/.github/workflows/stale.yml +0 -0
  23. {isar-1.20.3 → isar-1.22.0}/.gitignore +0 -0
  24. {isar-1.20.3 → isar-1.22.0}/.pre-commit-config.yaml +0 -0
  25. {isar-1.20.3 → isar-1.22.0}/Dockerfile +0 -0
  26. {isar-1.20.3 → isar-1.22.0}/LICENSE +0 -0
  27. {isar-1.20.3 → isar-1.22.0}/README.md +0 -0
  28. {isar-1.20.3 → isar-1.22.0}/SECURITY.md +0 -0
  29. {isar-1.20.3 → isar-1.22.0}/docker-compose-turtlebot.yml +0 -0
  30. {isar-1.20.3 → isar-1.22.0}/docker-compose.yml +0 -0
  31. {isar-1.20.3 → isar-1.22.0}/docs/Makefile +0 -0
  32. {isar-1.20.3 → isar-1.22.0}/docs/make.bat +0 -0
  33. {isar-1.20.3 → isar-1.22.0}/docs/rst_processing.py +0 -0
  34. {isar-1.20.3 → isar-1.22.0}/docs/source/conf.py +0 -0
  35. {isar-1.20.3 → isar-1.22.0}/docs/source/index.rst +0 -0
  36. {isar-1.20.3 → isar-1.22.0}/docs/source/readme_link.md +0 -0
  37. {isar-1.20.3 → isar-1.22.0}/docs/state_machine_diagram.png +0 -0
  38. {isar-1.20.3 → isar-1.22.0}/main.py +0 -0
  39. {isar-1.20.3 → isar-1.22.0}/pyproject.toml +0 -0
  40. {isar-1.20.3 → isar-1.22.0}/radixconfig.yml +0 -0
  41. {isar-1.20.3 → isar-1.22.0}/setup.cfg +0 -0
  42. {isar-1.20.3 → isar-1.22.0}/src/isar/__init__.py +0 -0
  43. {isar-1.20.3/tests/mocks → isar-1.22.0/src/isar/apis}/__init__.py +0 -0
  44. {isar-1.20.3 → isar-1.22.0}/src/isar/apis/api.py +0 -0
  45. {isar-1.20.3 → isar-1.22.0}/src/isar/apis/models/__init__.py +0 -0
  46. {isar-1.20.3 → isar-1.22.0}/src/isar/apis/models/models.py +0 -0
  47. {isar-1.20.3 → isar-1.22.0}/src/isar/apis/models/start_mission_definition.py +0 -0
  48. {isar-1.20.3/tests/isar/state_machine/states → isar-1.22.0/src/isar/apis/schedule}/__init__.py +0 -0
  49. {isar-1.20.3 → isar-1.22.0}/src/isar/apis/schedule/scheduling_controller.py +0 -0
  50. {isar-1.20.3/tests/isar/state_machine → isar-1.22.0/src/isar/apis/security}/__init__.py +0 -0
  51. {isar-1.20.3 → isar-1.22.0}/src/isar/apis/security/authentication.py +0 -0
  52. {isar-1.20.3/tests/isar/services/utilities → isar-1.22.0/src/isar/config}/__init__.py +0 -0
  53. {isar-1.20.3 → isar-1.22.0}/src/isar/config/certs/ca-cert.pem +0 -0
  54. {isar-1.20.3 → isar-1.22.0}/src/isar/config/configuration_error.py +0 -0
  55. {isar-1.20.3/tests/isar/services/service_connections/echo → isar-1.22.0/src/isar/config/keyvault}/__init__.py +0 -0
  56. {isar-1.20.3 → isar-1.22.0}/src/isar/config/keyvault/keyvault_error.py +0 -0
  57. {isar-1.20.3 → isar-1.22.0}/src/isar/config/keyvault/keyvault_service.py +0 -0
  58. {isar-1.20.3 → isar-1.22.0}/src/isar/config/log.py +0 -0
  59. {isar-1.20.3 → isar-1.22.0}/src/isar/config/logging.conf +0 -0
  60. {isar-1.20.3 → isar-1.22.0}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  61. {isar-1.20.3 → isar-1.22.0}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  62. {isar-1.20.3 → isar-1.22.0}/src/isar/config/maps/default_map.json +0 -0
  63. {isar-1.20.3 → isar-1.22.0}/src/isar/config/maps/klab_b.json +0 -0
  64. {isar-1.20.3 → isar-1.22.0}/src/isar/config/maps/klab_compressor.json +0 -0
  65. {isar-1.20.3 → isar-1.22.0}/src/isar/config/maps/klab_turtlebot.json +0 -0
  66. {isar-1.20.3/tests/integration/turtlebot → isar-1.22.0/src/isar}/config/maps/turtleworld.json +0 -0
  67. {isar-1.20.3/tests/isar/services/service_connections → isar-1.22.0/src/isar/config/predefined_mission_definition}/__init__.py +0 -0
  68. {isar-1.20.3 → isar-1.22.0}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
  69. {isar-1.20.3 → isar-1.22.0}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  70. {isar-1.20.3 → isar-1.22.0}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  71. {isar-1.20.3/tests/isar/services/readers → isar-1.22.0/src/isar/config/predefined_missions}/__init__.py +0 -0
  72. {isar-1.20.3 → isar-1.22.0}/src/isar/config/predefined_missions/default.json +0 -0
  73. {isar-1.20.3 → isar-1.22.0}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  74. {isar-1.20.3/tests/isar/services → isar-1.22.0/src/isar/config/predefined_poses}/__init__.py +0 -0
  75. {isar-1.20.3 → isar-1.22.0}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
  76. {isar-1.20.3 → isar-1.22.0}/src/isar/config/settings.env +0 -0
  77. {isar-1.20.3/tests/isar/models/communication → isar-1.22.0/src/isar/mission_planner}/__init__.py +0 -0
  78. {isar-1.20.3 → isar-1.22.0}/src/isar/mission_planner/local_planner.py +0 -0
  79. {isar-1.20.3 → isar-1.22.0}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  80. {isar-1.20.3 → isar-1.22.0}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  81. {isar-1.20.3 → isar-1.22.0}/src/isar/mission_planner/task_selector_interface.py +0 -0
  82. {isar-1.20.3/tests → isar-1.22.0/src}/isar/models/__init__.py +0 -0
  83. {isar-1.20.3/tests/isar/mission → isar-1.22.0/src/isar/models/communication}/__init__.py +0 -0
  84. {isar-1.20.3 → isar-1.22.0}/src/isar/models/communication/message.py +0 -0
  85. {isar-1.20.3 → isar-1.22.0}/src/isar/models/communication/queues/__init__.py +0 -0
  86. {isar-1.20.3 → isar-1.22.0}/src/isar/models/communication/queues/queue_io.py +0 -0
  87. {isar-1.20.3 → isar-1.22.0}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  88. {isar-1.20.3 → isar-1.22.0}/src/isar/models/communication/queues/queues.py +0 -0
  89. {isar-1.20.3 → isar-1.22.0}/src/isar/models/communication/queues/status_queue.py +0 -0
  90. {isar-1.20.3/tests/isar/apis/security → isar-1.22.0/src/isar/models/mission_metadata}/__init__.py +0 -0
  91. {isar-1.20.3 → isar-1.22.0}/src/isar/modules.py +0 -0
  92. {isar-1.20.3/tests/isar/apis/scheduler → isar-1.22.0/src/isar/services}/__init__.py +0 -0
  93. {isar-1.20.3/tests/isar/apis → isar-1.22.0/src/isar/services/auth}/__init__.py +0 -0
  94. {isar-1.20.3 → isar-1.22.0}/src/isar/services/auth/azure_credentials.py +0 -0
  95. {isar-1.20.3/tests/isar → isar-1.22.0/src/isar/services/readers}/__init__.py +0 -0
  96. {isar-1.20.3 → isar-1.22.0}/src/isar/services/readers/base_reader.py +0 -0
  97. {isar-1.20.3/tests/integration/turtlebot/config/missions → isar-1.22.0/src/isar/services/service_connections}/__init__.py +0 -0
  98. {isar-1.20.3/tests/integration/turtlebot/config/maps → isar-1.22.0/src/isar/services/service_connections/mqtt}/__init__.py +0 -0
  99. {isar-1.20.3 → isar-1.22.0}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  100. {isar-1.20.3 → isar-1.22.0}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
  101. {isar-1.20.3 → isar-1.22.0}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
  102. {isar-1.20.3 → isar-1.22.0}/src/isar/services/service_connections/request_handler.py +0 -0
  103. {isar-1.20.3/tests/integration/turtlebot/config → isar-1.22.0/src/isar/services/service_connections/stid}/__init__.py +0 -0
  104. {isar-1.20.3/tests/integration/turtlebot → isar-1.22.0/src/isar/services/utilities}/__init__.py +0 -0
  105. {isar-1.20.3 → isar-1.22.0}/src/isar/services/utilities/queue_utilities.py +0 -0
  106. {isar-1.20.3 → isar-1.22.0}/src/isar/services/utilities/scheduling_utilities.py +0 -0
  107. {isar-1.20.3 → isar-1.22.0}/src/isar/services/utilities/threaded_request.py +0 -0
  108. {isar-1.20.3/tests/integration → isar-1.22.0/src/isar/state_machine}/__init__.py +0 -0
  109. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/__init__.py +0 -0
  110. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/idle.py +0 -0
  111. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/initialize.py +0 -0
  112. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/initiate.py +0 -0
  113. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/off.py +0 -0
  114. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/offline.py +0 -0
  115. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states/stop.py +0 -0
  116. {isar-1.20.3 → isar-1.22.0}/src/isar/state_machine/states_enum.py +0 -0
  117. {isar-1.20.3/tests → isar-1.22.0/src/isar/storage}/__init__.py +0 -0
  118. {isar-1.20.3 → isar-1.22.0}/src/isar/storage/blob_storage.py +0 -0
  119. {isar-1.20.3 → isar-1.22.0}/src/isar/storage/local_storage.py +0 -0
  120. {isar-1.20.3 → isar-1.22.0}/src/isar/storage/slimm_storage.py +0 -0
  121. {isar-1.20.3 → isar-1.22.0}/src/isar/storage/storage_interface.py +0 -0
  122. {isar-1.20.3 → isar-1.22.0}/src/isar/storage/uploader.py +0 -0
  123. {isar-1.20.3 → isar-1.22.0}/src/isar/storage/utilities.py +0 -0
  124. {isar-1.20.3 → isar-1.22.0}/src/isar.egg-info/SOURCES.txt +0 -0
  125. {isar-1.20.3 → isar-1.22.0}/src/isar.egg-info/dependency_links.txt +0 -0
  126. {isar-1.20.3 → isar-1.22.0}/src/isar.egg-info/entry_points.txt +0 -0
  127. {isar-1.20.3 → isar-1.22.0}/src/isar.egg-info/requires.txt +0 -0
  128. {isar-1.20.3 → isar-1.22.0}/src/isar.egg-info/top_level.txt +0 -0
  129. {isar-1.20.3/src/robot_interface/utilities → isar-1.22.0/src/robot_interface}/__init__.py +0 -0
  130. {isar-1.20.3/src/robot_interface/telemetry → isar-1.22.0/src/robot_interface/models}/__init__.py +0 -0
  131. {isar-1.20.3/src/robot_interface/models/robots → isar-1.22.0/src/robot_interface/models/exceptions}/__init__.py +0 -0
  132. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/initialize/__init__.py +0 -0
  133. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/initialize/initialize_params.py +0 -0
  134. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/inspection/__init__.py +0 -0
  135. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/inspection/inspection.py +0 -0
  136. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/mission/__init__.py +0 -0
  137. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/mission/mission.py +0 -0
  138. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/mission/status.py +0 -0
  139. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/mission/step.py +0 -0
  140. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/mission/task.py +0 -0
  141. {isar-1.20.3/src/robot_interface/models/exceptions → isar-1.22.0/src/robot_interface/models/robots}/__init__.py +0 -0
  142. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/models/robots/robot_model.py +0 -0
  143. {isar-1.20.3/src/robot_interface/models → isar-1.22.0/src/robot_interface/telemetry}/__init__.py +0 -0
  144. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/telemetry/mqtt_client.py +0 -0
  145. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/telemetry/payloads.py +0 -0
  146. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/test_robot_interface.py +0 -0
  147. {isar-1.20.3/src/robot_interface → isar-1.22.0/src/robot_interface/utilities}/__init__.py +0 -0
  148. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/utilities/json_service.py +0 -0
  149. {isar-1.20.3 → isar-1.22.0}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  150. {isar-1.20.3/src/isar/storage → isar-1.22.0/tests}/__init__.py +0 -0
  151. {isar-1.20.3 → isar-1.22.0}/tests/conftest.py +0 -0
  152. {isar-1.20.3/src/isar/state_machine → isar-1.22.0/tests/integration}/__init__.py +0 -0
  153. {isar-1.20.3/src/isar/services/utilities → isar-1.22.0/tests/integration/turtlebot}/__init__.py +0 -0
  154. {isar-1.20.3/src/isar/services/service_connections/stid → isar-1.22.0/tests/integration/turtlebot/config}/__init__.py +0 -0
  155. {isar-1.20.3/src/isar/services/service_connections/mqtt → isar-1.22.0/tests/integration/turtlebot/config/maps}/__init__.py +0 -0
  156. {isar-1.20.3/src/isar → isar-1.22.0/tests/integration/turtlebot}/config/maps/turtleworld.json +0 -0
  157. {isar-1.20.3/src/isar/services/service_connections → isar-1.22.0/tests/integration/turtlebot/config/missions}/__init__.py +0 -0
  158. {isar-1.20.3 → isar-1.22.0}/tests/integration/turtlebot/config/missions/default.json +0 -0
  159. {isar-1.20.3 → isar-1.22.0}/tests/integration/turtlebot/test_successful_mission.py +0 -0
  160. {isar-1.20.3/src/isar/services/readers → isar-1.22.0/tests/isar}/__init__.py +0 -0
  161. {isar-1.20.3/src/isar/services/auth → isar-1.22.0/tests/isar/apis}/__init__.py +0 -0
  162. {isar-1.20.3/src/isar/services → isar-1.22.0/tests/isar/apis/scheduler}/__init__.py +0 -0
  163. {isar-1.20.3 → isar-1.22.0}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
  164. {isar-1.20.3/src/isar/models/mission_metadata → isar-1.22.0/tests/isar/apis/security}/__init__.py +0 -0
  165. {isar-1.20.3 → isar-1.22.0}/tests/isar/apis/security/test_authentication.py +0 -0
  166. {isar-1.20.3/src/isar/models/communication → isar-1.22.0/tests/isar/mission}/__init__.py +0 -0
  167. {isar-1.20.3 → isar-1.22.0}/tests/isar/mission/test_mission.py +0 -0
  168. {isar-1.20.3/src → isar-1.22.0/tests}/isar/models/__init__.py +0 -0
  169. {isar-1.20.3/src/isar/mission_planner → isar-1.22.0/tests/isar/models/communication}/__init__.py +0 -0
  170. {isar-1.20.3 → isar-1.22.0}/tests/isar/models/communication/test_queues.py +0 -0
  171. {isar-1.20.3 → isar-1.22.0}/tests/isar/models/example_mission_definition.json +0 -0
  172. {isar-1.20.3 → isar-1.22.0}/tests/isar/models/test_start_mission_definition.py +0 -0
  173. {isar-1.20.3/src/isar/config/predefined_poses → isar-1.22.0/tests/isar/services}/__init__.py +0 -0
  174. {isar-1.20.3/src/isar/config/predefined_missions → isar-1.22.0/tests/isar/services/readers}/__init__.py +0 -0
  175. {isar-1.20.3 → isar-1.22.0}/tests/isar/services/readers/test_base_reader.py +0 -0
  176. {isar-1.20.3 → isar-1.22.0}/tests/isar/services/readers/test_mission_reader.py +0 -0
  177. {isar-1.20.3/src/isar/config/predefined_mission_definition → isar-1.22.0/tests/isar/services/service_connections}/__init__.py +0 -0
  178. {isar-1.20.3/src/isar/config/keyvault → isar-1.22.0/tests/isar/services/service_connections/echo}/__init__.py +0 -0
  179. {isar-1.20.3 → isar-1.22.0}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  180. {isar-1.20.3/src/isar/config → isar-1.22.0/tests/isar/services/utilities}/__init__.py +0 -0
  181. {isar-1.20.3 → isar-1.22.0}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  182. {isar-1.20.3 → isar-1.22.0}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  183. {isar-1.20.3/src/isar/apis/security → isar-1.22.0/tests/isar/state_machine}/__init__.py +0 -0
  184. {isar-1.20.3/src/isar/apis/schedule → isar-1.22.0/tests/isar/state_machine/states}/__init__.py +0 -0
  185. {isar-1.20.3 → isar-1.22.0}/tests/isar/state_machine/states/test_monitor.py +0 -0
  186. {isar-1.20.3 → isar-1.22.0}/tests/isar/state_machine/test_state_machine.py +0 -0
  187. {isar-1.20.3 → isar-1.22.0}/tests/isar/storage/test_blob_storage.py +0 -0
  188. {isar-1.20.3 → isar-1.22.0}/tests/isar/storage/test_uploader.py +0 -0
  189. {isar-1.20.3/src/isar/apis → isar-1.22.0/tests/mocks}/__init__.py +0 -0
  190. {isar-1.20.3 → isar-1.22.0}/tests/mocks/blob_storage.py +0 -0
  191. {isar-1.20.3 → isar-1.22.0}/tests/mocks/mission_definition.py +0 -0
  192. {isar-1.20.3 → isar-1.22.0}/tests/mocks/mqtt_client.py +0 -0
  193. {isar-1.20.3 → isar-1.22.0}/tests/mocks/pose.py +0 -0
  194. {isar-1.20.3 → isar-1.22.0}/tests/mocks/request.py +0 -0
  195. {isar-1.20.3 → isar-1.22.0}/tests/mocks/status.py +0 -0
  196. {isar-1.20.3 → isar-1.22.0}/tests/mocks/step.py +0 -0
  197. {isar-1.20.3 → isar-1.22.0}/tests/mocks/task.py +0 -0
  198. {isar-1.20.3 → isar-1.22.0}/tests/mocks/token.py +0 -0
  199. {isar-1.20.3 → isar-1.22.0}/tests/test_data/test_json_file.json +0 -0
  200. {isar-1.20.3 → isar-1.22.0}/tests/test_data/test_map_config/test_map_config.json +0 -0
  201. {isar-1.20.3 → isar-1.22.0}/tests/test_data/test_mission_not_working.json +0 -0
  202. {isar-1.20.3 → isar-1.22.0}/tests/test_data/test_mission_working.json +0 -0
  203. {isar-1.20.3 → isar-1.22.0}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  204. {isar-1.20.3 → isar-1.22.0}/tests/test_data/test_thermal_image_mission.json +0 -0
  205. {isar-1.20.3 → isar-1.22.0}/tests/test_modules.py +0 -0
@@ -27,15 +27,15 @@ jobs:
27
27
  - name: Install dependencies
28
28
  run: |
29
29
  python -m pip install --upgrade pip
30
- pip install -e .[dev]
31
-
32
- - name: Lint
33
- run: |
34
- black --check .
35
- mypy .
30
+ pip install -r requirements.txt -e .[dev]
36
31
 
37
32
  - name: Test with pytest
38
33
  run: |
39
34
  pytest
40
35
  env:
41
36
  ENVIRONMENT: local
37
+
38
+ - name: Lint
39
+ run: |
40
+ black --check .
41
+ mypy .
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.20.3
3
+ Version: 1.22.0
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
@@ -13,13 +13,13 @@ anyio==4.4.0
13
13
  # httpx
14
14
  # starlette
15
15
  # watchfiles
16
- azure-core==1.30.1
16
+ azure-core==1.30.2
17
17
  # via
18
18
  # azure-identity
19
19
  # azure-keyvault-secrets
20
20
  # azure-storage-blob
21
21
  # opencensus-ext-azure
22
- azure-identity==1.16.0
22
+ azure-identity==1.16.1
23
23
  # via
24
24
  # isar (pyproject.toml)
25
25
  # opencensus-ext-azure
@@ -58,7 +58,7 @@ dacite==1.8.1
58
58
  # isar (pyproject.toml)
59
59
  dnspython==2.6.1
60
60
  # via email-validator
61
- email-validator==2.1.1
61
+ email-validator==2.1.2
62
62
  # via fastapi
63
63
  fastapi==0.111.0
64
64
  # via
@@ -70,7 +70,7 @@ fastapi-cli==0.0.4
70
70
  # via fastapi
71
71
  google-api-core==2.19.0
72
72
  # via opencensus
73
- google-auth==2.29.0
73
+ google-auth==2.30.0
74
74
  # via google-api-core
75
75
  googleapis-common-protos==1.63.1
76
76
  # via google-api-core
@@ -106,13 +106,13 @@ markupsafe==2.1.5
106
106
  # via jinja2
107
107
  mdurl==0.1.2
108
108
  # via markdown-it-py
109
- msal==1.28.0
109
+ msal==1.28.1
110
110
  # via
111
111
  # azure-identity
112
112
  # msal-extensions
113
113
  msal-extensions==1.1.0
114
114
  # via azure-identity
115
- numpy==1.26.4
115
+ numpy==2.0.0
116
116
  # via
117
117
  # alitra
118
118
  # isar (pyproject.toml)
@@ -130,9 +130,9 @@ opencensus-ext-logging==0.1.1
130
130
  # via isar (pyproject.toml)
131
131
  opencensus-ext-requests==0.8.0
132
132
  # via isar (pyproject.toml)
133
- orjson==3.10.3
133
+ orjson==3.10.5
134
134
  # via fastapi
135
- packaging==24.0
135
+ packaging==24.1
136
136
  # via msal-extensions
137
137
  paho-mqtt==2.1.0
138
138
  # via isar (pyproject.toml)
@@ -155,14 +155,14 @@ pyasn1-modules==0.4.0
155
155
  # via google-auth
156
156
  pycparser==2.22
157
157
  # via cffi
158
- pydantic==2.7.3
158
+ pydantic==2.7.4
159
159
  # via
160
160
  # fastapi
161
161
  # isar (pyproject.toml)
162
162
  # pydantic-settings
163
163
  pydantic-core==2.18.4
164
164
  # via pydantic
165
- pydantic-settings==2.3.1
165
+ pydantic-settings==2.3.3
166
166
  # via isar (pyproject.toml)
167
167
  pygments==2.18.0
168
168
  # via rich
@@ -217,7 +217,7 @@ transitions==0.9.1
217
217
  # via isar (pyproject.toml)
218
218
  typer==0.12.3
219
219
  # via fastapi-cli
220
- typing-extensions==4.12.1
220
+ typing-extensions==4.12.2
221
221
  # via
222
222
  # azure-core
223
223
  # azure-keyvault-secrets
@@ -341,3 +341,7 @@ class RobotSettings(BaseSettings):
341
341
 
342
342
 
343
343
  robot_settings = RobotSettings()
344
+
345
+ if not settings.RUN_MISSION_STEPWISE: # If mission-wise, do not run localize missions
346
+ if "localize" in robot_settings.CAPABILITIES:
347
+ robot_settings.CAPABILITIES.remove("localize")
@@ -10,7 +10,7 @@ import isar
10
10
  from isar.apis.api import API
11
11
  from isar.config.keyvault.keyvault_service import Keyvault
12
12
  from isar.config.log import setup_loggers
13
- from isar.config.settings import settings
13
+ from isar.config.settings import robot_settings, settings
14
14
  from isar.models.communication.queues.queues import Queues
15
15
  from isar.modules import get_injector
16
16
  from isar.services.service_connections.mqtt.mqtt_client import MqttClient
@@ -72,6 +72,8 @@ def print_startup_info():
72
72
  print_setting("Plant code", settings.PLANT_CODE)
73
73
  print_setting("Plant name", settings.PLANT_NAME)
74
74
  print_setting("Plant shortname", settings.PLANT_SHORT_NAME)
75
+ print_setting(fillchar="-")
76
+ print_setting("Robot capabilities", robot_settings.CAPABILITIES)
75
77
  print_setting(fillchar="*")
76
78
  print()
77
79
 
@@ -122,6 +122,12 @@ class StateMachine(object):
122
122
  "dest": self.monitor_state,
123
123
  "before": self._initiated,
124
124
  },
125
+ {
126
+ "trigger": "pause_full_mission",
127
+ "source": [self.initiate_state, self.monitor_state],
128
+ "dest": self.paused_state,
129
+ "before": self._mission_paused,
130
+ },
125
131
  {
126
132
  "trigger": "pause",
127
133
  "source": [self.initiate_state, self.monitor_state],
@@ -166,6 +172,12 @@ class StateMachine(object):
166
172
  "dest": self.initiate_state,
167
173
  "before": self._resume,
168
174
  },
175
+ {
176
+ "trigger": "resume_full_mission",
177
+ "source": self.paused_state,
178
+ "dest": self.monitor_state,
179
+ "before": self._resume,
180
+ },
169
181
  {
170
182
  "trigger": "step_finished",
171
183
  "source": self.monitor_state,
@@ -282,6 +294,8 @@ class StateMachine(object):
282
294
  self.current_task.reset_task()
283
295
  self.update_current_step()
284
296
 
297
+ self.robot.resume()
298
+
285
299
  def _mission_finished(self) -> None:
286
300
  fail_statuses: List[TaskStatus] = [
287
301
  TaskStatus.Cancelled,
@@ -348,6 +362,8 @@ class StateMachine(object):
348
362
  self.publish_task_status(task=self.current_task)
349
363
  self.publish_step_status(step=self.current_step)
350
364
 
365
+ self.robot.pause()
366
+
351
367
  def _stop(self) -> None:
352
368
  self.stopped = True
353
369
 
@@ -59,7 +59,10 @@ class Monitor(State):
59
59
  break
60
60
 
61
61
  if self.state_machine.should_pause_mission():
62
- transition = self.state_machine.pause # type: ignore
62
+ if self.state_machine.stepwise_mission:
63
+ transition = self.state_machine.pause # type: ignore
64
+ else:
65
+ transition = self.state_machine.pause_full_mission # type: ignore
63
66
  break
64
67
 
65
68
  if not self.step_status_thread:
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  import time
3
- from typing import TYPE_CHECKING, Callable
3
+ from typing import Callable, TYPE_CHECKING
4
4
 
5
5
  from transitions import State
6
6
 
@@ -26,7 +26,10 @@ class Paused(State):
26
26
  break
27
27
 
28
28
  if self.state_machine.should_resume_mission():
29
- transition = self.state_machine.resume # type: ignore
29
+ if self.state_machine.stepwise_mission:
30
+ transition = self.state_machine.resume # type: ignore
31
+ else:
32
+ transition = self.state_machine.resume_full_mission # type: ignore
30
33
  break
31
34
 
32
35
  time.sleep(self.state_machine.sleep_time)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.20.3
3
+ Version: 1.22.0
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
@@ -21,6 +21,9 @@ class ErrorReason(str, Enum):
21
21
  RobotUnknownErrorException: str = "robot_unknown_error_exception"
22
22
  RobotDisconnectedException: str = "robot_disconnected_exception"
23
23
  RobotMissionNotSupportedException: str = "robot_mission_not_supported_exception"
24
+ RobotMissionMissingStartPoseException: str = (
25
+ "robot_mission_missing_start_pose_exception"
26
+ )
24
27
 
25
28
 
26
29
  @dataclass
@@ -244,3 +247,14 @@ class RobotMissionNotSupportedException(RobotException):
244
247
  )
245
248
 
246
249
  pass
250
+
251
+
252
+ # An exception which should be thrown by the robot package if the mission is missing start pose and it needed it
253
+ class RobotMissionMissingStartPoseException(RobotException):
254
+ def __init__(self, error_description: str) -> None:
255
+ super().__init__(
256
+ error_reason=ErrorReason.RobotMissionMissingStartPoseException,
257
+ error_description=error_description,
258
+ )
259
+
260
+ pass
@@ -142,6 +142,44 @@ class RobotInterface(metaclass=ABCMeta):
142
142
  """
143
143
  raise NotImplementedError
144
144
 
145
+ @abstractmethod
146
+ def pause(self) -> None:
147
+ """Pauses the execution of the current step and stops the movement of the robot.
148
+
149
+ Returns
150
+ -------
151
+ None
152
+
153
+ Raises
154
+ ------
155
+ RobotActionException
156
+ If the robot fails to perform the requested action to pause mission execution
157
+ the action to pause will be attempted again until a certain number of retries
158
+ RobotException
159
+ Will catch other RobotExceptions and retry to pause the mission
160
+
161
+ """
162
+ raise NotImplementedError
163
+
164
+ @abstractmethod
165
+ def resume(self) -> None:
166
+ """Resumes the execution of the current step and continues the rest of the mission.
167
+
168
+ Returns
169
+ -------
170
+ None
171
+
172
+ Raises
173
+ ------
174
+ RobotActionException
175
+ If the robot fails to perform the requested action to resume mission execution
176
+ the action to resume will be attempted again until a certain number of retries
177
+ RobotException
178
+ Will catch other RobotExceptions and retry to resume the mission
179
+
180
+ """
181
+ raise NotImplementedError
182
+
145
183
  @abstractmethod
146
184
  def get_inspections(self, step: InspectionStep) -> Sequence[Inspection]:
147
185
  """Return the inspections connected to the given step.
@@ -51,6 +51,12 @@ class MockRobot(RobotInterface):
51
51
  def stop(self) -> None:
52
52
  return
53
53
 
54
+ def pause(self) -> None:
55
+ return
56
+
57
+ def resume(self) -> None:
58
+ return
59
+
54
60
  def get_inspections(self, step: InspectionStep) -> Sequence[Inspection]:
55
61
  image: Image = Image(mock_image_metadata())
56
62
  image.data = b"Some binary image data"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes