isar 1.19.0__tar.gz → 1.19.1__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 (204) hide show
  1. {isar-1.19.0 → isar-1.19.1}/.github/workflows/project_automations.yml +5 -5
  2. {isar-1.19.0 → isar-1.19.1}/.github/workflows/publish_isar_base_image.yml +4 -4
  3. {isar-1.19.0 → isar-1.19.1}/.github/workflows/pythonpackage.yml +3 -3
  4. {isar-1.19.0 → isar-1.19.1}/.github/workflows/pythonpublish.yml +2 -2
  5. isar-1.19.1/.github/workflows/stale.yml +32 -0
  6. {isar-1.19.0 → isar-1.19.1}/Dockerfile +2 -2
  7. {isar-1.19.0 → isar-1.19.1}/PKG-INFO +2 -2
  8. {isar-1.19.0 → isar-1.19.1}/setup.py +1 -1
  9. isar-1.19.1/src/isar/__init__.py +6 -0
  10. {isar-1.19.0 → isar-1.19.1}/src/isar/config/log.py +4 -3
  11. {isar-1.19.0 → isar-1.19.1}/src/isar/config/settings.py +15 -11
  12. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +2 -2
  13. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +2 -2
  14. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/state_machine.py +13 -9
  15. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/uploader.py +8 -7
  16. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/utilities.py +3 -3
  17. {isar-1.19.0 → isar-1.19.1}/src/isar.egg-info/PKG-INFO +2 -2
  18. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/telemetry/mqtt_client.py +5 -7
  19. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/test_successful_mission.py +3 -3
  20. isar-1.19.0/.github/workflows/stale.yml +0 -33
  21. isar-1.19.0/src/isar/__init__.py +0 -6
  22. {isar-1.19.0 → isar-1.19.1}/.dockerignore +0 -0
  23. {isar-1.19.0 → isar-1.19.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  24. {isar-1.19.0 → isar-1.19.1}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  25. {isar-1.19.0 → isar-1.19.1}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  26. {isar-1.19.0 → isar-1.19.1}/.github/release.yml +0 -0
  27. {isar-1.19.0 → isar-1.19.1}/.gitignore +0 -0
  28. {isar-1.19.0 → isar-1.19.1}/.pre-commit-config.yaml +0 -0
  29. {isar-1.19.0 → isar-1.19.1}/LICENSE +0 -0
  30. {isar-1.19.0 → isar-1.19.1}/README.md +0 -0
  31. {isar-1.19.0 → isar-1.19.1}/SECURITY.md +0 -0
  32. {isar-1.19.0 → isar-1.19.1}/docker-compose-turtlebot.yml +0 -0
  33. {isar-1.19.0 → isar-1.19.1}/docker-compose.yml +0 -0
  34. {isar-1.19.0 → isar-1.19.1}/docs/Makefile +0 -0
  35. {isar-1.19.0 → isar-1.19.1}/docs/make.bat +0 -0
  36. {isar-1.19.0 → isar-1.19.1}/docs/rst_processing.py +0 -0
  37. {isar-1.19.0 → isar-1.19.1}/docs/source/conf.py +0 -0
  38. {isar-1.19.0 → isar-1.19.1}/docs/source/index.rst +0 -0
  39. {isar-1.19.0 → isar-1.19.1}/docs/source/readme_link.md +0 -0
  40. {isar-1.19.0 → isar-1.19.1}/docs/state_machine_diagram.png +0 -0
  41. {isar-1.19.0 → isar-1.19.1}/main.py +0 -0
  42. {isar-1.19.0 → isar-1.19.1}/pyproject.toml +0 -0
  43. {isar-1.19.0 → isar-1.19.1}/radixconfig.yml +0 -0
  44. {isar-1.19.0 → isar-1.19.1}/setup.cfg +0 -0
  45. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/__init__.py +0 -0
  46. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/api.py +0 -0
  47. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/models/__init__.py +0 -0
  48. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/models/models.py +0 -0
  49. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/models/start_mission_definition.py +0 -0
  50. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/schedule/__init__.py +0 -0
  51. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/schedule/scheduling_controller.py +0 -0
  52. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/security/__init__.py +0 -0
  53. {isar-1.19.0 → isar-1.19.1}/src/isar/apis/security/authentication.py +0 -0
  54. {isar-1.19.0 → isar-1.19.1}/src/isar/config/__init__.py +0 -0
  55. {isar-1.19.0 → isar-1.19.1}/src/isar/config/certs/ca-cert.pem +0 -0
  56. {isar-1.19.0 → isar-1.19.1}/src/isar/config/configuration_error.py +0 -0
  57. {isar-1.19.0 → isar-1.19.1}/src/isar/config/keyvault/__init__.py +0 -0
  58. {isar-1.19.0 → isar-1.19.1}/src/isar/config/keyvault/keyvault_error.py +0 -0
  59. {isar-1.19.0 → isar-1.19.1}/src/isar/config/keyvault/keyvault_service.py +0 -0
  60. {isar-1.19.0 → isar-1.19.1}/src/isar/config/logging.conf +0 -0
  61. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  62. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  63. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/default_map.json +0 -0
  64. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/klab_b.json +0 -0
  65. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/klab_compressor.json +0 -0
  66. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/klab_turtlebot.json +0 -0
  67. {isar-1.19.0 → isar-1.19.1}/src/isar/config/maps/turtleworld.json +0 -0
  68. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
  69. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
  70. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  71. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  72. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_missions/__init__.py +0 -0
  73. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_missions/default.json +0 -0
  74. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  75. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_poses/__init__.py +0 -0
  76. {isar-1.19.0 → isar-1.19.1}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
  77. {isar-1.19.0 → isar-1.19.1}/src/isar/config/settings.env +0 -0
  78. {isar-1.19.0 → isar-1.19.1}/src/isar/mission_planner/__init__.py +0 -0
  79. {isar-1.19.0 → isar-1.19.1}/src/isar/mission_planner/local_planner.py +0 -0
  80. {isar-1.19.0 → isar-1.19.1}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  81. {isar-1.19.0 → isar-1.19.1}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  82. {isar-1.19.0 → isar-1.19.1}/src/isar/mission_planner/task_selector_interface.py +0 -0
  83. {isar-1.19.0 → isar-1.19.1}/src/isar/models/__init__.py +0 -0
  84. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/__init__.py +0 -0
  85. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/message.py +0 -0
  86. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/queues/__init__.py +0 -0
  87. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/queues/queue_io.py +0 -0
  88. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  89. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/queues/queues.py +0 -0
  90. {isar-1.19.0 → isar-1.19.1}/src/isar/models/communication/queues/status_queue.py +0 -0
  91. {isar-1.19.0 → isar-1.19.1}/src/isar/models/mission_metadata/__init__.py +0 -0
  92. {isar-1.19.0 → isar-1.19.1}/src/isar/modules.py +0 -0
  93. {isar-1.19.0 → isar-1.19.1}/src/isar/services/__init__.py +0 -0
  94. {isar-1.19.0 → isar-1.19.1}/src/isar/services/auth/__init__.py +0 -0
  95. {isar-1.19.0 → isar-1.19.1}/src/isar/services/auth/azure_credentials.py +0 -0
  96. {isar-1.19.0 → isar-1.19.1}/src/isar/services/readers/__init__.py +0 -0
  97. {isar-1.19.0 → isar-1.19.1}/src/isar/services/readers/base_reader.py +0 -0
  98. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/__init__.py +0 -0
  99. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
  100. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  101. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/request_handler.py +0 -0
  102. {isar-1.19.0 → isar-1.19.1}/src/isar/services/service_connections/stid/__init__.py +0 -0
  103. {isar-1.19.0 → isar-1.19.1}/src/isar/services/utilities/__init__.py +0 -0
  104. {isar-1.19.0 → isar-1.19.1}/src/isar/services/utilities/queue_utilities.py +0 -0
  105. {isar-1.19.0 → isar-1.19.1}/src/isar/services/utilities/scheduling_utilities.py +0 -0
  106. {isar-1.19.0 → isar-1.19.1}/src/isar/services/utilities/threaded_request.py +0 -0
  107. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/__init__.py +0 -0
  108. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/__init__.py +0 -0
  109. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/idle.py +0 -0
  110. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/initialize.py +0 -0
  111. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/initiate.py +0 -0
  112. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/monitor.py +0 -0
  113. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/off.py +0 -0
  114. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/offline.py +0 -0
  115. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/paused.py +0 -0
  116. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states/stop.py +0 -0
  117. {isar-1.19.0 → isar-1.19.1}/src/isar/state_machine/states_enum.py +0 -0
  118. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/__init__.py +0 -0
  119. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/blob_storage.py +0 -0
  120. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/local_storage.py +0 -0
  121. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/slimm_storage.py +0 -0
  122. {isar-1.19.0 → isar-1.19.1}/src/isar/storage/storage_interface.py +0 -0
  123. {isar-1.19.0 → isar-1.19.1}/src/isar.egg-info/SOURCES.txt +0 -0
  124. {isar-1.19.0 → isar-1.19.1}/src/isar.egg-info/dependency_links.txt +0 -0
  125. {isar-1.19.0 → isar-1.19.1}/src/isar.egg-info/requires.txt +0 -0
  126. {isar-1.19.0 → isar-1.19.1}/src/isar.egg-info/top_level.txt +0 -0
  127. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/__init__.py +0 -0
  128. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/__init__.py +0 -0
  129. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/exceptions/__init__.py +0 -0
  130. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
  131. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/initialize/__init__.py +0 -0
  132. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/initialize/initialize_params.py +0 -0
  133. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/inspection/__init__.py +0 -0
  134. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/inspection/inspection.py +0 -0
  135. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/mission/__init__.py +0 -0
  136. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/mission/mission.py +0 -0
  137. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/mission/status.py +0 -0
  138. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/mission/step.py +0 -0
  139. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/mission/task.py +0 -0
  140. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/robots/__init__.py +0 -0
  141. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/models/robots/robot_model.py +0 -0
  142. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/robot_interface.py +0 -0
  143. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/telemetry/__init__.py +0 -0
  144. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/telemetry/payloads.py +0 -0
  145. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/test_robot_interface.py +0 -0
  146. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/utilities/__init__.py +0 -0
  147. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/utilities/json_service.py +0 -0
  148. {isar-1.19.0 → isar-1.19.1}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  149. {isar-1.19.0 → isar-1.19.1}/tests/__init__.py +0 -0
  150. {isar-1.19.0 → isar-1.19.1}/tests/conftest.py +0 -0
  151. {isar-1.19.0 → isar-1.19.1}/tests/integration/__init__.py +0 -0
  152. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/__init__.py +0 -0
  153. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/config/__init__.py +0 -0
  154. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
  155. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  156. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
  157. {isar-1.19.0 → isar-1.19.1}/tests/integration/turtlebot/config/missions/default.json +0 -0
  158. {isar-1.19.0 → isar-1.19.1}/tests/isar/__init__.py +0 -0
  159. {isar-1.19.0 → isar-1.19.1}/tests/isar/apis/__init__.py +0 -0
  160. {isar-1.19.0 → isar-1.19.1}/tests/isar/apis/scheduler/__init__.py +0 -0
  161. {isar-1.19.0 → isar-1.19.1}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
  162. {isar-1.19.0 → isar-1.19.1}/tests/isar/apis/security/__init__.py +0 -0
  163. {isar-1.19.0 → isar-1.19.1}/tests/isar/apis/security/test_authentication.py +0 -0
  164. {isar-1.19.0 → isar-1.19.1}/tests/isar/mission/__init__.py +0 -0
  165. {isar-1.19.0 → isar-1.19.1}/tests/isar/mission/test_mission.py +0 -0
  166. {isar-1.19.0 → isar-1.19.1}/tests/isar/models/__init__.py +0 -0
  167. {isar-1.19.0 → isar-1.19.1}/tests/isar/models/communication/__init__.py +0 -0
  168. {isar-1.19.0 → isar-1.19.1}/tests/isar/models/communication/test_queues.py +0 -0
  169. {isar-1.19.0 → isar-1.19.1}/tests/isar/models/example_mission_definition.json +0 -0
  170. {isar-1.19.0 → isar-1.19.1}/tests/isar/models/test_start_mission_definition.py +0 -0
  171. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/__init__.py +0 -0
  172. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/readers/__init__.py +0 -0
  173. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/readers/test_base_reader.py +0 -0
  174. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/readers/test_mission_reader.py +0 -0
  175. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/service_connections/__init__.py +0 -0
  176. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  177. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  178. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/utilities/__init__.py +0 -0
  179. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  180. {isar-1.19.0 → isar-1.19.1}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  181. {isar-1.19.0 → isar-1.19.1}/tests/isar/state_machine/__init__.py +0 -0
  182. {isar-1.19.0 → isar-1.19.1}/tests/isar/state_machine/states/__init__.py +0 -0
  183. {isar-1.19.0 → isar-1.19.1}/tests/isar/state_machine/states/test_monitor.py +0 -0
  184. {isar-1.19.0 → isar-1.19.1}/tests/isar/state_machine/test_state_machine.py +0 -0
  185. {isar-1.19.0 → isar-1.19.1}/tests/isar/storage/test_blob_storage.py +0 -0
  186. {isar-1.19.0 → isar-1.19.1}/tests/isar/storage/test_uploader.py +0 -0
  187. {isar-1.19.0 → isar-1.19.1}/tests/mocks/__init__.py +0 -0
  188. {isar-1.19.0 → isar-1.19.1}/tests/mocks/blob_storage.py +0 -0
  189. {isar-1.19.0 → isar-1.19.1}/tests/mocks/mission_definition.py +0 -0
  190. {isar-1.19.0 → isar-1.19.1}/tests/mocks/mqtt_client.py +0 -0
  191. {isar-1.19.0 → isar-1.19.1}/tests/mocks/pose.py +0 -0
  192. {isar-1.19.0 → isar-1.19.1}/tests/mocks/request.py +0 -0
  193. {isar-1.19.0 → isar-1.19.1}/tests/mocks/robot_interface.py +0 -0
  194. {isar-1.19.0 → isar-1.19.1}/tests/mocks/status.py +0 -0
  195. {isar-1.19.0 → isar-1.19.1}/tests/mocks/step.py +0 -0
  196. {isar-1.19.0 → isar-1.19.1}/tests/mocks/task.py +0 -0
  197. {isar-1.19.0 → isar-1.19.1}/tests/mocks/token.py +0 -0
  198. {isar-1.19.0 → isar-1.19.1}/tests/test_data/test_json_file.json +0 -0
  199. {isar-1.19.0 → isar-1.19.1}/tests/test_data/test_map_config/test_map_config.json +0 -0
  200. {isar-1.19.0 → isar-1.19.1}/tests/test_data/test_mission_not_working.json +0 -0
  201. {isar-1.19.0 → isar-1.19.1}/tests/test_data/test_mission_working.json +0 -0
  202. {isar-1.19.0 → isar-1.19.1}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  203. {isar-1.19.0 → isar-1.19.1}/tests/test_data/test_thermal_image_mission.json +0 -0
  204. {isar-1.19.0 → isar-1.19.1}/tests/test_modules.py +0 -0
@@ -19,7 +19,7 @@ jobs:
19
19
  if: github.event_name == 'issues' && github.event.action == 'opened' || github.event.action == 'reopened'
20
20
  steps:
21
21
  - name: 'Move issue to "Todo"'
22
- uses: leonsteinhaeuser/project-beta-automations@v1.0.2
22
+ uses: leonsteinhaeuser/project-beta-automations@v2.1.0
23
23
  with:
24
24
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
25
25
  organization: equinor
@@ -32,7 +32,7 @@ jobs:
32
32
  if: github.event_name == 'issues' && github.event.action == 'closed'
33
33
  steps:
34
34
  - name: 'Moved issue to "Done"'
35
- uses: leonsteinhaeuser/project-beta-automations@v1.0.2
35
+ uses: leonsteinhaeuser/project-beta-automations@v2.1.0
36
36
  with:
37
37
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
38
38
  organization: equinor
@@ -45,7 +45,7 @@ jobs:
45
45
  if: github.event_name == 'pull_request' && github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'review_requested'
46
46
  steps:
47
47
  - name: 'Move PR to "In Progress"'
48
- uses: leonsteinhaeuser/project-beta-automations@v1.0.2
48
+ uses: leonsteinhaeuser/project-beta-automations@v2.1.0
49
49
  with:
50
50
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
51
51
  organization: equinor
@@ -58,7 +58,7 @@ jobs:
58
58
  if: github.event_name == 'pull_request' && github.event.action == 'ready_for_review'
59
59
  steps:
60
60
  - name: 'Move PR to "Review"'
61
- uses: leonsteinhaeuser/project-beta-automations@v1.0.2
61
+ uses: leonsteinhaeuser/project-beta-automations@v2.1.0
62
62
  with:
63
63
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
64
64
  organization: equinor
@@ -71,7 +71,7 @@ jobs:
71
71
  if: github.event_name == 'pull_request' && github.event.action == 'closed'
72
72
  steps:
73
73
  - name: 'Move PR to "Done"'
74
- uses: leonsteinhaeuser/project-beta-automations@v1.0.2
74
+ uses: leonsteinhaeuser/project-beta-automations@v2.1.0
75
75
  with:
76
76
  gh_token: ${{ secrets.MY_GITHUB_TOKEN }}
77
77
  organization: equinor
@@ -27,10 +27,10 @@ jobs:
27
27
 
28
28
  steps:
29
29
  - name: Checkout repository
30
- uses: actions/checkout@v3
30
+ uses: actions/checkout@v4
31
31
 
32
32
  - name: Log in to the Container registry
33
- uses: docker/login-action@v2
33
+ uses: docker/login-action@v3
34
34
  with:
35
35
  registry: ${{ env.REGISTRY }}
36
36
  username: ${{ github.actor }}
@@ -38,12 +38,12 @@ jobs:
38
38
 
39
39
  - name: Extract metadata (tags, labels) for Docker
40
40
  id: meta
41
- uses: docker/metadata-action@v4
41
+ uses: docker/metadata-action@v5
42
42
  with:
43
43
  images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
44
44
 
45
45
  - name: Build and push Docker image
46
- uses: docker/build-push-action@v4
46
+ uses: docker/build-push-action@v5
47
47
  with:
48
48
  context: .
49
49
  file: Dockerfile
@@ -14,13 +14,13 @@ jobs:
14
14
  strategy:
15
15
  fail-fast: false
16
16
  matrix:
17
- python-version: ["3.10", "3.11", "3.12"]
17
+ python-version: ["3.11", "3.12"]
18
18
 
19
19
  steps:
20
- - uses: actions/checkout@v3
20
+ - uses: actions/checkout@v4
21
21
 
22
22
  - name: Set up Python ${{ matrix.python-version }}
23
- uses: actions/setup-python@v3
23
+ uses: actions/setup-python@v5
24
24
  with:
25
25
  python-version: ${{ matrix.python-version }}
26
26
 
@@ -8,9 +8,9 @@ jobs:
8
8
  deploy:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
- - uses: actions/checkout@v3
11
+ - uses: actions/checkout@v4
12
12
  - name: Set up Python
13
- uses: actions/setup-python@v3
13
+ uses: actions/setup-python@v5
14
14
  with:
15
15
  python-version: "3.x"
16
16
  - name: Install dependencies
@@ -0,0 +1,32 @@
1
+ # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
2
+ #
3
+ # You can adjust the behavior by modifying this file.
4
+ # For more information, see:
5
+ # https://github.com/actions/stale
6
+ name: Mark stale issues and pull requests
7
+
8
+ on:
9
+ workflow_dispatch:
10
+ schedule:
11
+ - cron: "35 8 * * *"
12
+
13
+ jobs:
14
+ stale:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ issues: write
18
+ pull-requests: write
19
+
20
+ steps:
21
+ - name: Close Stale Issues
22
+ uses: actions/stale@v9
23
+ with:
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
+ stale-issue-label: "stale"
28
+ 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
+ days-before-pr-stale: 30
32
+ days-before-close: -1
@@ -1,4 +1,4 @@
1
- FROM python:3.10-slim AS builder
1
+ FROM python:3.12-slim AS builder
2
2
 
3
3
  WORKDIR /app
4
4
  RUN apt-get update
@@ -15,7 +15,7 @@ RUN pip install .
15
15
  # Install the base isar-robot package
16
16
  RUN pip install isar-robot
17
17
 
18
- FROM python:3.10-slim
18
+ FROM python:3.12-slim
19
19
  WORKDIR /app
20
20
  COPY --from=builder /opt/venv /opt/venv
21
21
  ENV PATH="/opt/venv/bin:$PATH"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.19.0
3
+ Version: 1.19.1
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Home-page: https://github.com/equinor/isar
6
6
  Author: Equinor ASA
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python
12
12
  Classifier: Topic :: Scientific/Engineering
13
13
  Classifier: Topic :: Scientific/Engineering :: Physics
14
14
  Classifier: Topic :: Software Development :: Libraries
15
- Requires-Python: >=3.10
15
+ Requires-Python: >=3.11
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: alitra>=1.1.3
@@ -66,5 +66,5 @@ setup(
66
66
  "sphinx",
67
67
  ]
68
68
  },
69
- python_requires=">=3.10",
69
+ python_requires=">=3.11",
70
70
  )
@@ -0,0 +1,6 @@
1
+ from importlib.metadata import PackageNotFoundError, distribution
2
+
3
+ try:
4
+ __version__ = distribution(__name__).version
5
+ except PackageNotFoundError:
6
+ pass # package is not installed
@@ -1,6 +1,6 @@
1
- import importlib.resources as pkg_resources
2
1
  import logging
3
2
  import logging.config
3
+ from importlib.resources import as_file, files
4
4
 
5
5
  import yaml
6
6
  from opencensus.ext.azure.log_exporter import AzureLogHandler
@@ -14,8 +14,9 @@ from isar.config.settings import settings
14
14
 
15
15
  def setup_loggers(keyvault: Keyvault) -> None:
16
16
  log_levels: dict = settings.LOG_LEVELS
17
- with pkg_resources.path("isar.config", "logging.conf") as path:
18
- log_config = yaml.safe_load(open(path))
17
+ source = files("isar").joinpath("config").joinpath("logging.conf")
18
+ with as_file(source) as f:
19
+ log_config = yaml.safe_load(open(f))
19
20
 
20
21
  logging.config.dictConfig(log_config)
21
22
 
@@ -1,5 +1,5 @@
1
- import importlib.resources as pkg_resources
2
1
  import os
2
+ from importlib.resources import as_file, files
3
3
  from typing import Any, List, Optional
4
4
 
5
5
  from dotenv import load_dotenv
@@ -14,11 +14,12 @@ from robot_interface.telemetry.payloads import VideoStream
14
14
  class Settings(BaseSettings):
15
15
  def __init__(self) -> None:
16
16
  try:
17
- with pkg_resources.path(f"isar.config", "settings.env") as path:
18
- env_file_path = path
17
+ source = files("isar").joinpath("config").joinpath("settings.env")
18
+ with as_file(source) as eml:
19
+ env_file = eml
19
20
  except ModuleNotFoundError:
20
- env_file_path = None
21
- super().__init__(_env_file=env_file_path)
21
+ env_file = None
22
+ super().__init__(_env_file=env_file)
22
23
 
23
24
  # Determines which robot package ISAR will attempt to import
24
25
  # Name must match with an installed python package in the local environment
@@ -310,13 +311,16 @@ settings = Settings()
310
311
  class RobotSettings(BaseSettings):
311
312
  def __init__(self) -> None:
312
313
  try:
313
- with pkg_resources.path(
314
- f"{settings.ROBOT_PACKAGE}.config", "settings.env"
315
- ) as path:
316
- env_file_path = path
314
+ source = (
315
+ files(f"{settings.ROBOT_PACKAGE}")
316
+ .joinpath("config")
317
+ .joinpath("settings.env")
318
+ )
319
+ with as_file(source) as eml:
320
+ env_file = eml
317
321
  except ModuleNotFoundError:
318
- env_file_path = None
319
- super().__init__(_env_file=env_file_path)
322
+ env_file = None
323
+ super().__init__(_env_file=env_file)
320
324
 
321
325
  # ISAR steps the robot is capable of performing
322
326
  # This should be set in the robot package settings.env file
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import time
3
- from datetime import datetime
3
+ from datetime import UTC, datetime
4
4
  from queue import Queue
5
5
 
6
6
  from isar.config.settings import settings
@@ -18,7 +18,7 @@ class RobotHeartbeatPublisher:
18
18
  payload: RobotHeartbeatPayload = RobotHeartbeatPayload(
19
19
  isar_id=settings.ISAR_ID,
20
20
  robot_name=settings.ROBOT_NAME,
21
- timestamp=datetime.utcnow(),
21
+ timestamp=datetime.now(UTC),
22
22
  )
23
23
 
24
24
  self.mqtt_publisher.publish(
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import time
3
- from datetime import datetime
3
+ from datetime import UTC, datetime
4
4
  from queue import Queue
5
5
 
6
6
  from isar.config.settings import robot_settings, settings
@@ -25,7 +25,7 @@ class RobotInfoPublisher:
25
25
  host=settings.API_HOST_VIEWED_EXTERNALLY,
26
26
  port=settings.API_PORT,
27
27
  capabilities=robot_settings.CAPABILITIES,
28
- timestamp=datetime.utcnow(),
28
+ timestamp=datetime.now(UTC),
29
29
  )
30
30
 
31
31
  self.mqtt_publisher.publish(
@@ -2,7 +2,7 @@ import json
2
2
  import logging
3
3
  import queue
4
4
  from collections import deque
5
- from datetime import datetime
5
+ from datetime import UTC, datetime
6
6
  from typing import Deque, List, Optional
7
7
 
8
8
  from alitra import Pose
@@ -508,7 +508,7 @@ class StateMachine(object):
508
508
  "error_description": (
509
509
  error_message.error_description if error_message else None
510
510
  ),
511
- "timestamp": datetime.utcnow(),
511
+ "timestamp": datetime.now(UTC),
512
512
  },
513
513
  cls=EnhancedJSONEncoder,
514
514
  )
@@ -516,7 +516,8 @@ class StateMachine(object):
516
516
  self.mqtt_publisher.publish(
517
517
  topic=settings.TOPIC_ISAR_MISSION,
518
518
  payload=payload,
519
- retain=False,
519
+ qos=1,
520
+ retain=True,
520
521
  )
521
522
 
522
523
  def publish_task_status(self, task: Task) -> None:
@@ -540,7 +541,7 @@ class StateMachine(object):
540
541
  "error_description": (
541
542
  error_message.error_description if error_message else None
542
543
  ),
543
- "timestamp": datetime.utcnow(),
544
+ "timestamp": datetime.now(UTC),
544
545
  },
545
546
  cls=EnhancedJSONEncoder,
546
547
  )
@@ -548,7 +549,8 @@ class StateMachine(object):
548
549
  self.mqtt_publisher.publish(
549
550
  topic=settings.TOPIC_ISAR_TASK,
550
551
  payload=payload,
551
- retain=False,
552
+ qos=1,
553
+ retain=True,
552
554
  )
553
555
 
554
556
  def publish_step_status(self, step: Step) -> None:
@@ -574,7 +576,7 @@ class StateMachine(object):
574
576
  "error_description": (
575
577
  error_message.error_description if error_message else None
576
578
  ),
577
- "timestamp": datetime.utcnow(),
579
+ "timestamp": datetime.now(UTC),
578
580
  },
579
581
  cls=EnhancedJSONEncoder,
580
582
  )
@@ -582,7 +584,8 @@ class StateMachine(object):
582
584
  self.mqtt_publisher.publish(
583
585
  topic=settings.TOPIC_ISAR_STEP,
584
586
  payload=payload,
585
- retain=False,
587
+ qos=1,
588
+ retain=True,
586
589
  )
587
590
 
588
591
  def publish_status(self) -> None:
@@ -593,7 +596,7 @@ class StateMachine(object):
593
596
  "isar_id": settings.ISAR_ID,
594
597
  "robot_name": settings.ROBOT_NAME,
595
598
  "status": self._current_status(),
596
- "timestamp": datetime.utcnow(),
599
+ "timestamp": datetime.now(UTC),
597
600
  },
598
601
  cls=EnhancedJSONEncoder,
599
602
  )
@@ -601,7 +604,8 @@ class StateMachine(object):
601
604
  self.mqtt_publisher.publish(
602
605
  topic=settings.TOPIC_ISAR_STATUS,
603
606
  payload=payload,
604
- retain=False,
607
+ qos=1,
608
+ retain=True,
605
609
  )
606
610
 
607
611
  def _current_status(self) -> RobotStatus:
@@ -1,7 +1,7 @@
1
1
  import json
2
2
  import logging
3
3
  from dataclasses import dataclass
4
- from datetime import datetime, timedelta
4
+ from datetime import UTC, datetime, timedelta
5
5
  from queue import Empty, Queue
6
6
  from typing import List, Union
7
7
 
@@ -22,12 +22,12 @@ class UploaderQueueItem:
22
22
  mission: Mission
23
23
  storage_handler: StorageInterface
24
24
  _retry_count: int
25
- _next_retry_time: datetime = datetime.utcnow()
25
+ _next_retry_time: datetime = datetime.now(UTC)
26
26
 
27
27
  def increment_retry(self, max_wait_time: int) -> None:
28
28
  self._retry_count += 1
29
29
  seconds_until_retry: int = min(2**self._retry_count, max_wait_time)
30
- self._next_retry_time = datetime.utcnow() + timedelta(
30
+ self._next_retry_time = datetime.now(UTC) + timedelta(
31
31
  seconds=seconds_until_retry
32
32
  )
33
33
 
@@ -35,10 +35,10 @@ class UploaderQueueItem:
35
35
  return self._retry_count
36
36
 
37
37
  def is_ready_for_upload(self) -> bool:
38
- return datetime.utcnow() >= self._next_retry_time
38
+ return datetime.now(UTC) >= self._next_retry_time
39
39
 
40
40
  def seconds_until_retry(self) -> int:
41
- return max(0, int((self._next_retry_time - datetime.utcnow()).total_seconds()))
41
+ return max(0, int((self._next_retry_time - datetime.now(UTC)).total_seconds()))
42
42
 
43
43
 
44
44
  class Uploader:
@@ -154,12 +154,13 @@ class Uploader:
154
154
  "inspection_id": inspection.id,
155
155
  "inspection_path": inspection_path,
156
156
  "analysis_type": inspection.metadata.analysis_type,
157
- "timestamp": datetime.utcnow(),
157
+ "timestamp": datetime.now(UTC),
158
158
  },
159
159
  cls=EnhancedJSONEncoder,
160
160
  )
161
161
  self.mqtt_publisher.publish(
162
162
  topic=settings.TOPIC_ISAR_INSPECTION_RESULT,
163
163
  payload=payload,
164
- retain=False,
164
+ qos=1,
165
+ retain=True,
165
166
  )
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import time
3
- from datetime import datetime
3
+ from datetime import UTC, datetime
4
4
  from pathlib import Path
5
5
  from typing import Tuple
6
6
 
@@ -37,7 +37,7 @@ def construct_metadata_file(
37
37
  "mission_id": mission.id,
38
38
  "mission_name": mission.name,
39
39
  "plant_name": settings.PLANT_NAME,
40
- "mission_date": datetime.utcnow().date(),
40
+ "mission_date": datetime.now(UTC).date(),
41
41
  "isar_id": settings.ISAR_ID,
42
42
  "robot_name": settings.ROBOT_NAME,
43
43
  "analysis_type": (
@@ -80,4 +80,4 @@ def get_filename(
80
80
 
81
81
  def get_foldername(mission: Mission) -> str:
82
82
  mission_name: str = mission.name.replace(" ", "-")
83
- return f"{datetime.utcnow().date()}__{settings.PLANT_SHORT_NAME}__{mission_name}__{mission.id}"
83
+ return f"{datetime.now(UTC).date()}__{settings.PLANT_SHORT_NAME}__{mission_name}__{mission.id}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.19.0
3
+ Version: 1.19.1
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Home-page: https://github.com/equinor/isar
6
6
  Author: Equinor ASA
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python
12
12
  Classifier: Topic :: Scientific/Engineering
13
13
  Classifier: Topic :: Scientific/Engineering :: Physics
14
14
  Classifier: Topic :: Software Development :: Libraries
15
- Requires-Python: >=3.10
15
+ Requires-Python: >=3.11
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: alitra>=1.1.3
@@ -1,13 +1,11 @@
1
+ import json
1
2
  import time
2
3
  from abc import ABCMeta, abstractmethod
4
+ from datetime import UTC, datetime
3
5
  from queue import Queue
4
- from typing import Callable, Tuple, Type
5
- from datetime import datetime
6
- import json
6
+ from typing import Callable, Tuple
7
7
 
8
- from robot_interface.models.exceptions.robot_exceptions import (
9
- RobotTelemetryException,
10
- )
8
+ from robot_interface.models.exceptions.robot_exceptions import RobotTelemetryException
11
9
  from robot_interface.telemetry.payloads import CloudHealthPayload
12
10
  from robot_interface.utilities.json_service import EnhancedJSONEncoder
13
11
 
@@ -75,7 +73,7 @@ class MqttTelemetryPublisher(MqttClientInterface):
75
73
  topic = self.topic
76
74
  except RobotTelemetryException:
77
75
  payload = json.dumps(
78
- CloudHealthPayload(isar_id, robot_name, datetime.utcnow()),
76
+ CloudHealthPayload(isar_id, robot_name, datetime.now(UTC)),
79
77
  cls=EnhancedJSONEncoder,
80
78
  )
81
79
  topic = self.cloud_healt_topic
@@ -1,7 +1,7 @@
1
1
  import shutil
2
2
  import time
3
3
  from copy import deepcopy
4
- from datetime import datetime, timedelta
4
+ from datetime import UTC, datetime, timedelta
5
5
  from pathlib import Path
6
6
  from typing import List
7
7
 
@@ -102,9 +102,9 @@ def test_successful_mission(
102
102
  mission_id: str = state_machine_thread.state_machine.current_mission.id
103
103
  mission: Mission = deepcopy(state_machine_thread.state_machine.current_mission)
104
104
 
105
- start_time: datetime = datetime.utcnow()
105
+ start_time: datetime = datetime.now(UTC)
106
106
  while state_machine_thread.state_machine.current_state != States.Idle:
107
- if (datetime.utcnow() - start_time) > integration_test_timeout:
107
+ if (datetime.now(UTC) - start_time) > integration_test_timeout:
108
108
  raise TimeoutError
109
109
  time.sleep(5)
110
110
 
@@ -1,33 +0,0 @@
1
- # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
2
- #
3
- # You can adjust the behavior by modifying this file.
4
- # For more information, see:
5
- # https://github.com/actions/stale
6
- name: Mark stale issues and pull requests
7
-
8
- on:
9
- workflow_dispatch:
10
- schedule:
11
- - cron: '35 8 * * *'
12
-
13
- jobs:
14
- stale:
15
-
16
- runs-on: ubuntu-latest
17
- permissions:
18
- issues: write
19
- pull-requests: write
20
-
21
- steps:
22
- - name: Close Stale Issues
23
- uses: actions/stale@v9.0.0
24
- with:
25
- repo-token: ${{ secrets.STALE_ISSUE_TOKEN }}
26
- stale-issue-message: 'This issue has automatically been marked as stale as there has been no activity for 60 days.'
27
- stale-pr-message: 'This pull request has automatically been marked as stale as there has been no activity for 30 days.'
28
- stale-issue-label: 'stale'
29
- stale-pr-label: 'stale'
30
- close-issue-message: 'This issue has been closed automatically due to a lack of activity.'
31
- close-pr-message: 'This pull request has been closed automatically due to a lack of activity.'
32
- days-before-pr-stale: 30
33
- days-before-close: -1
@@ -1,6 +0,0 @@
1
- from pkg_resources import DistributionNotFound, get_distribution
2
-
3
- try:
4
- __version__ = get_distribution(__name__).version
5
- except DistributionNotFound:
6
- pass # package is not installed
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