isar 1.22.0__tar.gz → 1.22.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.
- {isar-1.22.0 → isar-1.22.1}/.github/workflows/pythonpackage.yml +11 -2
- {isar-1.22.0 → isar-1.22.1}/PKG-INFO +4 -2
- {isar-1.22.0 → isar-1.22.1}/pyproject.toml +3 -1
- {isar-1.22.0 → isar-1.22.1}/requirements.txt +37 -85
- {isar-1.22.0 → isar-1.22.1}/src/isar/apis/models/start_mission_definition.py +21 -15
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/settings.py +4 -1
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +2 -2
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +3 -2
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/state_machine.py +17 -15
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/monitor.py +75 -80
- {isar-1.22.0 → isar-1.22.1}/src/isar/storage/uploader.py +8 -6
- {isar-1.22.0 → isar-1.22.1}/src/isar/storage/utilities.py +3 -3
- {isar-1.22.0 → isar-1.22.1}/src/isar.egg-info/PKG-INFO +4 -2
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/mission/mission.py +2 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/mission/task.py +8 -5
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/telemetry/mqtt_client.py +2 -2
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/telemetry/payloads.py +7 -0
- {isar-1.22.0 → isar-1.22.1}/tests/integration/turtlebot/test_successful_mission.py +3 -3
- {isar-1.22.0 → isar-1.22.1}/tests/isar/state_machine/states/test_monitor.py +1 -1
- {isar-1.22.0 → isar-1.22.1}/.dockerignore +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/release.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/workflows/compile_requirements.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/workflows/project_automations.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/workflows/publish_isar_base_image.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/workflows/pythonpublish.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/.github/workflows/stale.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/.gitignore +0 -0
- {isar-1.22.0 → isar-1.22.1}/.pre-commit-config.yaml +0 -0
- {isar-1.22.0 → isar-1.22.1}/Dockerfile +0 -0
- {isar-1.22.0 → isar-1.22.1}/LICENSE +0 -0
- {isar-1.22.0 → isar-1.22.1}/README.md +0 -0
- {isar-1.22.0 → isar-1.22.1}/SECURITY.md +0 -0
- {isar-1.22.0 → isar-1.22.1}/docker-compose-turtlebot.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/docker-compose.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/Makefile +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/make.bat +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/rst_processing.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/source/conf.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/source/index.rst +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/source/readme_link.md +0 -0
- {isar-1.22.0 → isar-1.22.1}/docs/state_machine_diagram.png +0 -0
- {isar-1.22.0 → isar-1.22.1}/main.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/radixconfig.yml +0 -0
- {isar-1.22.0 → isar-1.22.1}/setup.cfg +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/__init__.py +0 -0
- {isar-1.22.0/tests/mocks → isar-1.22.1/src/isar/apis}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/apis/api.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/apis/models/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/apis/models/models.py +0 -0
- {isar-1.22.0/tests/isar/state_machine/states → isar-1.22.1/src/isar/apis/schedule}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/apis/schedule/scheduling_controller.py +0 -0
- {isar-1.22.0/tests/isar/state_machine → isar-1.22.1/src/isar/apis/security}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/apis/security/authentication.py +0 -0
- {isar-1.22.0/tests/isar/services/utilities → isar-1.22.1/src/isar/config}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/certs/ca-cert.pem +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/configuration_error.py +0 -0
- {isar-1.22.0/tests/isar/services/service_connections/echo → isar-1.22.1/src/isar/config/keyvault}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/keyvault/keyvault_error.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/keyvault/keyvault_service.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/log.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/logging.conf +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/maps/default_map.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/maps/klab_b.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/maps/klab_compressor.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/maps/klab_turtlebot.json +0 -0
- {isar-1.22.0/tests/integration/turtlebot → isar-1.22.1/src/isar}/config/maps/turtleworld.json +0 -0
- {isar-1.22.0/tests/isar/services/service_connections → isar-1.22.1/src/isar/config/predefined_mission_definition}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
- {isar-1.22.0/tests/isar/services/readers → isar-1.22.1/src/isar/config/predefined_missions}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/predefined_missions/default.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
- {isar-1.22.0/tests/isar/services → isar-1.22.1/src/isar/config/predefined_poses}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/config/settings.env +0 -0
- {isar-1.22.0/tests/isar/models/communication → isar-1.22.1/src/isar/mission_planner}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/mission_planner/local_planner.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/mission_planner/mission_planner_interface.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/mission_planner/sequential_task_selector.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/mission_planner/task_selector_interface.py +0 -0
- {isar-1.22.0/tests → isar-1.22.1/src}/isar/models/__init__.py +0 -0
- {isar-1.22.0/tests/isar/mission → isar-1.22.1/src/isar/models/communication}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/models/communication/message.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/models/communication/queues/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/models/communication/queues/queue_io.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/models/communication/queues/queues.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/models/communication/queues/status_queue.py +0 -0
- {isar-1.22.0/tests/isar/apis/security → isar-1.22.1/src/isar/models/mission_metadata}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/modules.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/script.py +0 -0
- {isar-1.22.0/tests/isar/apis/scheduler → isar-1.22.1/src/isar/services}/__init__.py +0 -0
- {isar-1.22.0/tests/isar/apis → isar-1.22.1/src/isar/services/auth}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/auth/azure_credentials.py +0 -0
- {isar-1.22.0/tests/isar → isar-1.22.1/src/isar/services/readers}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/readers/base_reader.py +0 -0
- {isar-1.22.0/tests/integration/turtlebot/config/missions → isar-1.22.1/src/isar/services/service_connections}/__init__.py +0 -0
- {isar-1.22.0/tests/integration/turtlebot/config/maps → isar-1.22.1/src/isar/services/service_connections/mqtt}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/service_connections/request_handler.py +0 -0
- {isar-1.22.0/tests/integration/turtlebot/config → isar-1.22.1/src/isar/services/service_connections/stid}/__init__.py +0 -0
- {isar-1.22.0/tests/integration/turtlebot → isar-1.22.1/src/isar/services/utilities}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/utilities/queue_utilities.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/utilities/scheduling_utilities.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/services/utilities/threaded_request.py +0 -0
- {isar-1.22.0/tests/integration → isar-1.22.1/src/isar/state_machine}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/idle.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/initialize.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/initiate.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/off.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/offline.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/paused.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states/stop.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/state_machine/states_enum.py +0 -0
- {isar-1.22.0/tests → isar-1.22.1/src/isar/storage}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/storage/blob_storage.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/storage/local_storage.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/storage/slimm_storage.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar/storage/storage_interface.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar.egg-info/SOURCES.txt +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar.egg-info/dependency_links.txt +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar.egg-info/entry_points.txt +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar.egg-info/requires.txt +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/isar.egg-info/top_level.txt +0 -0
- {isar-1.22.0/src/robot_interface/utilities → isar-1.22.1/src/robot_interface}/__init__.py +0 -0
- {isar-1.22.0/src/robot_interface/telemetry → isar-1.22.1/src/robot_interface/models}/__init__.py +0 -0
- {isar-1.22.0/src/robot_interface/models/robots → isar-1.22.1/src/robot_interface/models/exceptions}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/initialize/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/initialize/initialize_params.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/inspection/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/inspection/inspection.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/mission/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/mission/status.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/mission/step.py +0 -0
- {isar-1.22.0/src/robot_interface/models/exceptions → isar-1.22.1/src/robot_interface/models/robots}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/models/robots/robot_model.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/robot_interface.py +0 -0
- {isar-1.22.0/src/robot_interface/models → isar-1.22.1/src/robot_interface/telemetry}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/test_robot_interface.py +0 -0
- {isar-1.22.0/src/robot_interface → isar-1.22.1/src/robot_interface/utilities}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/utilities/json_service.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
- {isar-1.22.0/src/isar/storage → isar-1.22.1/tests}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/conftest.py +0 -0
- {isar-1.22.0/src/isar/state_machine → isar-1.22.1/tests/integration}/__init__.py +0 -0
- {isar-1.22.0/src/isar/services/utilities → isar-1.22.1/tests/integration/turtlebot}/__init__.py +0 -0
- {isar-1.22.0/src/isar/services/service_connections/stid → isar-1.22.1/tests/integration/turtlebot/config}/__init__.py +0 -0
- {isar-1.22.0/src/isar/services/service_connections/mqtt → isar-1.22.1/tests/integration/turtlebot/config/maps}/__init__.py +0 -0
- {isar-1.22.0/src/isar → isar-1.22.1/tests/integration/turtlebot}/config/maps/turtleworld.json +0 -0
- {isar-1.22.0/src/isar/services/service_connections → isar-1.22.1/tests/integration/turtlebot/config/missions}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/integration/turtlebot/config/missions/default.json +0 -0
- {isar-1.22.0/src/isar/services/readers → isar-1.22.1/tests/isar}/__init__.py +0 -0
- {isar-1.22.0/src/isar/services/auth → isar-1.22.1/tests/isar/apis}/__init__.py +0 -0
- {isar-1.22.0/src/isar/services → isar-1.22.1/tests/isar/apis/scheduler}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
- {isar-1.22.0/src/isar/models/mission_metadata → isar-1.22.1/tests/isar/apis/security}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/apis/security/test_authentication.py +0 -0
- {isar-1.22.0/src/isar/models/communication → isar-1.22.1/tests/isar/mission}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/mission/test_mission.py +0 -0
- {isar-1.22.0/src → isar-1.22.1/tests}/isar/models/__init__.py +0 -0
- {isar-1.22.0/src/isar/mission_planner → isar-1.22.1/tests/isar/models/communication}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/models/communication/test_queues.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/models/example_mission_definition.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/models/test_start_mission_definition.py +0 -0
- {isar-1.22.0/src/isar/config/predefined_poses → isar-1.22.1/tests/isar/services}/__init__.py +0 -0
- {isar-1.22.0/src/isar/config/predefined_missions → isar-1.22.1/tests/isar/services/readers}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/services/readers/test_base_reader.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/services/readers/test_mission_reader.py +0 -0
- {isar-1.22.0/src/isar/config/predefined_mission_definition → isar-1.22.1/tests/isar/services/service_connections}/__init__.py +0 -0
- {isar-1.22.0/src/isar/config/keyvault → isar-1.22.1/tests/isar/services/service_connections/echo}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
- {isar-1.22.0/src/isar/config → isar-1.22.1/tests/isar/services/utilities}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
- {isar-1.22.0/src/isar/apis/security → isar-1.22.1/tests/isar/state_machine}/__init__.py +0 -0
- {isar-1.22.0/src/isar/apis/schedule → isar-1.22.1/tests/isar/state_machine/states}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/state_machine/test_state_machine.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/storage/test_blob_storage.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/isar/storage/test_uploader.py +0 -0
- {isar-1.22.0/src/isar/apis → isar-1.22.1/tests/mocks}/__init__.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/blob_storage.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/mission_definition.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/mqtt_client.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/pose.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/request.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/robot_interface.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/status.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/step.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/task.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/mocks/token.py +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_data/test_json_file.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_data/test_map_config/test_map_config.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_data/test_mission_not_working.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_data/test_mission_working.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_data/test_mission_working_no_tasks.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_data/test_thermal_image_mission.json +0 -0
- {isar-1.22.0 → isar-1.22.1}/tests/test_modules.py +0 -0
|
@@ -14,7 +14,7 @@ jobs:
|
|
|
14
14
|
strategy:
|
|
15
15
|
fail-fast: false
|
|
16
16
|
matrix:
|
|
17
|
-
python-version: ["3.11", "3.12"]
|
|
17
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
20
|
- uses: actions/checkout@v4
|
|
@@ -24,11 +24,20 @@ jobs:
|
|
|
24
24
|
with:
|
|
25
25
|
python-version: ${{ matrix.python-version }}
|
|
26
26
|
|
|
27
|
-
- name:
|
|
27
|
+
- name: Upgrade pip
|
|
28
28
|
run: |
|
|
29
29
|
python -m pip install --upgrade pip
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies with the compiled requirements (for Python 3.12)
|
|
32
|
+
if: ${{matrix.python-version == '3.12'}}
|
|
33
|
+
run: |
|
|
30
34
|
pip install -r requirements.txt -e .[dev]
|
|
31
35
|
|
|
36
|
+
- name: Install dependencies based on the pyproject.toml file (for Python 3.9-3.11)
|
|
37
|
+
if: ${{matrix.python-version != '3.12'}}
|
|
38
|
+
run: |
|
|
39
|
+
pip install -e .[dev]
|
|
40
|
+
|
|
32
41
|
- name: Test with pytest
|
|
33
42
|
run: |
|
|
34
43
|
pytest
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: isar
|
|
3
|
-
Version: 1.22.
|
|
3
|
+
Version: 1.22.1
|
|
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
|
|
@@ -91,12 +91,14 @@ Classifier: Intended Audience :: Science/Research
|
|
|
91
91
|
Classifier: License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)
|
|
92
92
|
Classifier: Natural Language :: English
|
|
93
93
|
Classifier: Programming Language :: Python :: 3
|
|
94
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
95
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
94
96
|
Classifier: Programming Language :: Python :: 3.11
|
|
95
97
|
Classifier: Programming Language :: Python :: 3.12
|
|
96
98
|
Classifier: Topic :: Scientific/Engineering
|
|
97
99
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
98
100
|
Classifier: Topic :: Software Development :: Libraries
|
|
99
|
-
Requires-Python: >=3.
|
|
101
|
+
Requires-Python: >=3.9
|
|
100
102
|
Description-Content-Type: text/markdown
|
|
101
103
|
License-File: LICENSE
|
|
102
104
|
Requires-Dist: alitra>=1.1.3
|
|
@@ -7,7 +7,7 @@ name = "isar"
|
|
|
7
7
|
authors = [{ name = "Equinor ASA", email = "fg_robots_dev@equinor.com" }]
|
|
8
8
|
description = "Integration and Supervisory control of Autonomous Robots"
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.9"
|
|
11
11
|
license = { file = "LICENSE" }
|
|
12
12
|
classifiers = [
|
|
13
13
|
"Intended Audience :: Developers",
|
|
@@ -15,6 +15,8 @@ classifiers = [
|
|
|
15
15
|
"License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)",
|
|
16
16
|
"Natural Language :: English",
|
|
17
17
|
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3.9",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
18
20
|
"Programming Language :: Python :: 3.11",
|
|
19
21
|
"Programming Language :: Python :: 3.12",
|
|
20
22
|
"Topic :: Scientific/Engineering",
|
|
@@ -12,40 +12,38 @@ anyio==4.4.0
|
|
|
12
12
|
# via
|
|
13
13
|
# httpx
|
|
14
14
|
# starlette
|
|
15
|
-
# watchfiles
|
|
16
15
|
azure-core==1.30.2
|
|
17
16
|
# via
|
|
18
17
|
# azure-identity
|
|
19
18
|
# azure-keyvault-secrets
|
|
20
19
|
# azure-storage-blob
|
|
21
20
|
# opencensus-ext-azure
|
|
22
|
-
azure-identity==1.
|
|
21
|
+
azure-identity==1.17.1
|
|
23
22
|
# via
|
|
24
23
|
# isar (pyproject.toml)
|
|
25
24
|
# opencensus-ext-azure
|
|
26
25
|
azure-keyvault-secrets==4.8.0
|
|
27
26
|
# via isar (pyproject.toml)
|
|
28
|
-
azure-storage-blob==12.
|
|
27
|
+
azure-storage-blob==12.22.0
|
|
29
28
|
# via isar (pyproject.toml)
|
|
30
29
|
backoff==2.2.1
|
|
31
30
|
# via isar (pyproject.toml)
|
|
32
|
-
cachetools==5.
|
|
31
|
+
cachetools==5.5.0
|
|
33
32
|
# via google-auth
|
|
34
|
-
certifi==2024.
|
|
33
|
+
certifi==2024.8.30
|
|
35
34
|
# via
|
|
36
35
|
# httpcore
|
|
37
36
|
# httpx
|
|
38
37
|
# requests
|
|
39
|
-
cffi==1.
|
|
38
|
+
cffi==1.17.1
|
|
40
39
|
# via cryptography
|
|
41
40
|
charset-normalizer==3.3.2
|
|
42
41
|
# via requests
|
|
43
42
|
click==8.1.7
|
|
44
43
|
# via
|
|
45
44
|
# isar (pyproject.toml)
|
|
46
|
-
# typer
|
|
47
45
|
# uvicorn
|
|
48
|
-
cryptography==
|
|
46
|
+
cryptography==43.0.1
|
|
49
47
|
# via
|
|
50
48
|
# azure-identity
|
|
51
49
|
# azure-storage-blob
|
|
@@ -56,23 +54,17 @@ dacite==1.8.1
|
|
|
56
54
|
# via
|
|
57
55
|
# alitra
|
|
58
56
|
# isar (pyproject.toml)
|
|
59
|
-
|
|
60
|
-
# via email-validator
|
|
61
|
-
email-validator==2.1.2
|
|
62
|
-
# via fastapi
|
|
63
|
-
fastapi==0.111.0
|
|
57
|
+
fastapi==0.114.1
|
|
64
58
|
# via
|
|
65
59
|
# fastapi-azure-auth
|
|
66
60
|
# isar (pyproject.toml)
|
|
67
|
-
fastapi-azure-auth==
|
|
61
|
+
fastapi-azure-auth==5.0.1
|
|
68
62
|
# via isar (pyproject.toml)
|
|
69
|
-
|
|
70
|
-
# via fastapi
|
|
71
|
-
google-api-core==2.19.0
|
|
63
|
+
google-api-core==2.19.2
|
|
72
64
|
# via opencensus
|
|
73
|
-
google-auth==2.
|
|
65
|
+
google-auth==2.34.0
|
|
74
66
|
# via google-api-core
|
|
75
|
-
googleapis-common-protos==1.
|
|
67
|
+
googleapis-common-protos==1.65.0
|
|
76
68
|
# via google-api-core
|
|
77
69
|
h11==0.14.0
|
|
78
70
|
# via
|
|
@@ -80,39 +72,26 @@ h11==0.14.0
|
|
|
80
72
|
# uvicorn
|
|
81
73
|
httpcore==1.0.5
|
|
82
74
|
# via httpx
|
|
83
|
-
|
|
84
|
-
# via
|
|
85
|
-
|
|
86
|
-
# via
|
|
87
|
-
# fastapi
|
|
88
|
-
# fastapi-azure-auth
|
|
89
|
-
idna==3.7
|
|
75
|
+
httpx==0.27.2
|
|
76
|
+
# via fastapi-azure-auth
|
|
77
|
+
idna==3.8
|
|
90
78
|
# via
|
|
91
79
|
# anyio
|
|
92
|
-
# email-validator
|
|
93
80
|
# httpx
|
|
94
81
|
# requests
|
|
95
|
-
injector==0.
|
|
82
|
+
injector==0.22.0
|
|
96
83
|
# via isar (pyproject.toml)
|
|
97
84
|
isodate==0.6.1
|
|
98
85
|
# via
|
|
99
86
|
# azure-keyvault-secrets
|
|
100
87
|
# azure-storage-blob
|
|
101
|
-
|
|
102
|
-
# via fastapi
|
|
103
|
-
markdown-it-py==3.0.0
|
|
104
|
-
# via rich
|
|
105
|
-
markupsafe==2.1.5
|
|
106
|
-
# via jinja2
|
|
107
|
-
mdurl==0.1.2
|
|
108
|
-
# via markdown-it-py
|
|
109
|
-
msal==1.28.1
|
|
88
|
+
msal==1.31.0
|
|
110
89
|
# via
|
|
111
90
|
# azure-identity
|
|
112
91
|
# msal-extensions
|
|
113
|
-
msal-extensions==1.
|
|
92
|
+
msal-extensions==1.2.0
|
|
114
93
|
# via azure-identity
|
|
115
|
-
numpy==2.
|
|
94
|
+
numpy==2.1.1
|
|
116
95
|
# via
|
|
117
96
|
# alitra
|
|
118
97
|
# isar (pyproject.toml)
|
|
@@ -130,43 +109,37 @@ opencensus-ext-logging==0.1.1
|
|
|
130
109
|
# via isar (pyproject.toml)
|
|
131
110
|
opencensus-ext-requests==0.8.0
|
|
132
111
|
# via isar (pyproject.toml)
|
|
133
|
-
orjson==3.10.5
|
|
134
|
-
# via fastapi
|
|
135
|
-
packaging==24.1
|
|
136
|
-
# via msal-extensions
|
|
137
112
|
paho-mqtt==2.1.0
|
|
138
113
|
# via isar (pyproject.toml)
|
|
139
|
-
portalocker==2.
|
|
114
|
+
portalocker==2.10.1
|
|
140
115
|
# via msal-extensions
|
|
141
|
-
proto-plus==1.
|
|
116
|
+
proto-plus==1.24.0
|
|
142
117
|
# via google-api-core
|
|
143
|
-
protobuf==
|
|
118
|
+
protobuf==5.28.1
|
|
144
119
|
# via
|
|
145
120
|
# google-api-core
|
|
146
121
|
# googleapis-common-protos
|
|
147
122
|
# proto-plus
|
|
148
|
-
psutil==
|
|
123
|
+
psutil==6.0.0
|
|
149
124
|
# via opencensus-ext-azure
|
|
150
|
-
pyasn1==0.6.
|
|
125
|
+
pyasn1==0.6.1
|
|
151
126
|
# via
|
|
152
127
|
# pyasn1-modules
|
|
153
128
|
# rsa
|
|
154
|
-
pyasn1-modules==0.4.
|
|
129
|
+
pyasn1-modules==0.4.1
|
|
155
130
|
# via google-auth
|
|
156
131
|
pycparser==2.22
|
|
157
132
|
# via cffi
|
|
158
|
-
pydantic==2.
|
|
133
|
+
pydantic==2.9.1
|
|
159
134
|
# via
|
|
160
135
|
# fastapi
|
|
161
136
|
# isar (pyproject.toml)
|
|
162
137
|
# pydantic-settings
|
|
163
|
-
pydantic-core==2.
|
|
138
|
+
pydantic-core==2.23.3
|
|
164
139
|
# via pydantic
|
|
165
|
-
pydantic-settings==2.
|
|
140
|
+
pydantic-settings==2.5.2
|
|
166
141
|
# via isar (pyproject.toml)
|
|
167
|
-
|
|
168
|
-
# via rich
|
|
169
|
-
pyjwt[crypto]==2.8.0
|
|
142
|
+
pyjwt[crypto]==2.9.0
|
|
170
143
|
# via
|
|
171
144
|
# fastapi-azure-auth
|
|
172
145
|
# isar (pyproject.toml)
|
|
@@ -175,13 +148,8 @@ python-dotenv==1.0.1
|
|
|
175
148
|
# via
|
|
176
149
|
# isar (pyproject.toml)
|
|
177
150
|
# pydantic-settings
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
# via fastapi
|
|
181
|
-
pyyaml==6.0.1
|
|
182
|
-
# via
|
|
183
|
-
# isar (pyproject.toml)
|
|
184
|
-
# uvicorn
|
|
151
|
+
pyyaml==6.0.2
|
|
152
|
+
# via isar (pyproject.toml)
|
|
185
153
|
requests==2.32.3
|
|
186
154
|
# via
|
|
187
155
|
# azure-core
|
|
@@ -193,14 +161,10 @@ requests==2.32.3
|
|
|
193
161
|
# requests-toolbelt
|
|
194
162
|
requests-toolbelt==1.0.0
|
|
195
163
|
# via isar (pyproject.toml)
|
|
196
|
-
rich==13.7.1
|
|
197
|
-
# via typer
|
|
198
164
|
rsa==4.9
|
|
199
165
|
# via google-auth
|
|
200
|
-
scipy==1.
|
|
166
|
+
scipy==1.14.1
|
|
201
167
|
# via alitra
|
|
202
|
-
shellingham==1.5.4
|
|
203
|
-
# via typer
|
|
204
168
|
six==1.16.0
|
|
205
169
|
# via
|
|
206
170
|
# azure-core
|
|
@@ -211,34 +175,22 @@ sniffio==1.3.1
|
|
|
211
175
|
# via
|
|
212
176
|
# anyio
|
|
213
177
|
# httpx
|
|
214
|
-
starlette==0.
|
|
178
|
+
starlette==0.38.5
|
|
215
179
|
# via fastapi
|
|
216
|
-
transitions==0.9.
|
|
180
|
+
transitions==0.9.2
|
|
217
181
|
# via isar (pyproject.toml)
|
|
218
|
-
typer==0.12.3
|
|
219
|
-
# via fastapi-cli
|
|
220
182
|
typing-extensions==4.12.2
|
|
221
183
|
# via
|
|
222
184
|
# azure-core
|
|
185
|
+
# azure-identity
|
|
223
186
|
# azure-keyvault-secrets
|
|
224
187
|
# azure-storage-blob
|
|
225
188
|
# fastapi
|
|
226
189
|
# pydantic
|
|
227
190
|
# pydantic-core
|
|
228
|
-
|
|
229
|
-
ujson==5.10.0
|
|
230
|
-
# via fastapi
|
|
231
|
-
urllib3==2.2.1
|
|
191
|
+
urllib3==2.2.2
|
|
232
192
|
# via requests
|
|
233
|
-
uvicorn
|
|
234
|
-
# via
|
|
235
|
-
# fastapi
|
|
236
|
-
# isar (pyproject.toml)
|
|
237
|
-
uvloop==0.19.0
|
|
238
|
-
# via uvicorn
|
|
239
|
-
watchfiles==0.22.0
|
|
240
|
-
# via uvicorn
|
|
241
|
-
websockets==12.0
|
|
242
|
-
# via uvicorn
|
|
193
|
+
uvicorn==0.30.6
|
|
194
|
+
# via isar (pyproject.toml)
|
|
243
195
|
wrapt==1.16.0
|
|
244
196
|
# via opencensus-ext-requests
|
|
@@ -2,7 +2,7 @@ import time
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Any, Dict, List, Optional, Union
|
|
4
4
|
|
|
5
|
-
from alitra import
|
|
5
|
+
from alitra import Frame, Orientation, Pose, Position
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
7
7
|
|
|
8
8
|
from isar.apis.models.models import InputPose, InputPosition
|
|
@@ -62,6 +62,8 @@ class StartMissionDefinition(BaseModel):
|
|
|
62
62
|
id: Optional[str] = None
|
|
63
63
|
name: Optional[str] = None
|
|
64
64
|
start_pose: Optional[InputPose] = None
|
|
65
|
+
dock: Optional[bool] = None
|
|
66
|
+
undock: Optional[bool] = None
|
|
65
67
|
|
|
66
68
|
|
|
67
69
|
def to_isar_mission(mission_definition: StartMissionDefinition) -> Mission:
|
|
@@ -85,6 +87,9 @@ def to_isar_mission(mission_definition: StartMissionDefinition) -> Mission:
|
|
|
85
87
|
|
|
86
88
|
isar_mission: Mission = Mission(tasks=isar_tasks)
|
|
87
89
|
|
|
90
|
+
isar_mission.dock = mission_definition.dock
|
|
91
|
+
isar_mission.undock = mission_definition.undock
|
|
92
|
+
|
|
88
93
|
if mission_definition.name:
|
|
89
94
|
isar_mission.name = mission_definition.name
|
|
90
95
|
else:
|
|
@@ -127,20 +132,21 @@ def check_for_duplicate_ids(items: Union[List[Task], List[STEPS]]):
|
|
|
127
132
|
|
|
128
133
|
def generate_steps(task) -> List[STEPS]:
|
|
129
134
|
steps: List[STEPS] = []
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
135
|
+
|
|
136
|
+
if task.type == TaskType.Inspection:
|
|
137
|
+
steps.extend(generate_steps_for_inspection_task(task=task))
|
|
138
|
+
elif task.type == TaskType.DriveTo:
|
|
139
|
+
steps.append(generate_steps_for_drive_to_task(task=task))
|
|
140
|
+
elif task.type == TaskType.Localization:
|
|
141
|
+
steps.append(generate_steps_for_localization_task(task=task))
|
|
142
|
+
elif task.type == TaskType.ReturnToHome:
|
|
143
|
+
steps.append(generate_steps_for_return_to_home_task(task=task))
|
|
144
|
+
elif task.type == TaskType.Dock:
|
|
145
|
+
steps.append(generate_steps_for_dock_task())
|
|
146
|
+
else:
|
|
147
|
+
raise MissionPlannerError(
|
|
148
|
+
f"Failed to create task: '{task.type}' is not a valid"
|
|
149
|
+
)
|
|
144
150
|
|
|
145
151
|
return steps
|
|
146
152
|
|
|
@@ -8,7 +8,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
8
8
|
|
|
9
9
|
from isar.config import predefined_missions
|
|
10
10
|
from robot_interface.models.robots.robot_model import RobotModel
|
|
11
|
-
from robot_interface.telemetry.payloads import VideoStream
|
|
11
|
+
from robot_interface.telemetry.payloads import VideoStream, DocumentInfo
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Settings(BaseSettings):
|
|
@@ -190,6 +190,9 @@ class Settings(BaseSettings):
|
|
|
190
190
|
# Serial number of the robot ISAR is connected to
|
|
191
191
|
SERIAL_NUMBER: str = Field(default="0001")
|
|
192
192
|
|
|
193
|
+
# Info about robot documentation
|
|
194
|
+
DOCUMENTATION: List[DocumentInfo] = Field(default=[])
|
|
195
|
+
|
|
193
196
|
# Endpoints to reach video streams for the robot
|
|
194
197
|
VIDEO_STREAMS: List[VideoStream] = Field(
|
|
195
198
|
default=[
|
{isar-1.22.0 → isar-1.22.1}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import time
|
|
3
|
-
from datetime import
|
|
3
|
+
from datetime import datetime, timezone
|
|
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.now(
|
|
21
|
+
timestamp=datetime.now(timezone.utc),
|
|
22
22
|
)
|
|
23
23
|
|
|
24
24
|
self.mqtt_publisher.publish(
|
{isar-1.22.0 → isar-1.22.1}/src/isar/services/service_connections/mqtt/robot_info_publisher.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import time
|
|
3
|
-
from datetime import
|
|
3
|
+
from datetime import datetime, timezone
|
|
4
4
|
from queue import Queue
|
|
5
5
|
|
|
6
6
|
from isar.config.settings import robot_settings, settings
|
|
@@ -21,11 +21,12 @@ class RobotInfoPublisher:
|
|
|
21
21
|
robot_model=robot_settings.ROBOT_MODEL, # type: ignore
|
|
22
22
|
robot_serial_number=settings.SERIAL_NUMBER,
|
|
23
23
|
robot_asset=settings.PLANT_SHORT_NAME,
|
|
24
|
+
documentation=settings.DOCUMENTATION,
|
|
24
25
|
video_streams=settings.VIDEO_STREAMS,
|
|
25
26
|
host=settings.API_HOST_VIEWED_EXTERNALLY,
|
|
26
27
|
port=settings.API_PORT,
|
|
27
28
|
capabilities=robot_settings.CAPABILITIES,
|
|
28
|
-
timestamp=datetime.now(
|
|
29
|
+
timestamp=datetime.now(timezone.utc),
|
|
29
30
|
)
|
|
30
31
|
|
|
31
32
|
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
|
|
5
|
+
from datetime import datetime, timezone
|
|
6
6
|
from typing import Deque, List, Optional
|
|
7
7
|
|
|
8
8
|
from alitra import Pose
|
|
@@ -292,7 +292,7 @@ class StateMachine(object):
|
|
|
292
292
|
self.queues.resume_mission.output.put(resume_mission_response)
|
|
293
293
|
|
|
294
294
|
self.current_task.reset_task()
|
|
295
|
-
self.
|
|
295
|
+
self.iterate_current_step()
|
|
296
296
|
|
|
297
297
|
self.robot.resume()
|
|
298
298
|
|
|
@@ -337,12 +337,14 @@ class StateMachine(object):
|
|
|
337
337
|
else:
|
|
338
338
|
self.current_task.status = TaskStatus.InProgress
|
|
339
339
|
self.publish_task_status(task=self.current_task)
|
|
340
|
-
self.
|
|
340
|
+
self.iterate_current_step()
|
|
341
341
|
|
|
342
342
|
def _step_finished(self) -> None:
|
|
343
343
|
self.publish_step_status(step=self.current_step)
|
|
344
|
-
self.
|
|
345
|
-
self.
|
|
344
|
+
self.current_task.update_task_status()
|
|
345
|
+
self.publish_task_status(task=self.current_task)
|
|
346
|
+
self.iterate_current_task()
|
|
347
|
+
self.iterate_current_step()
|
|
346
348
|
|
|
347
349
|
def _full_mission_finished(self) -> None:
|
|
348
350
|
self.current_task = None
|
|
@@ -379,8 +381,10 @@ class StateMachine(object):
|
|
|
379
381
|
if self.stepwise_mission:
|
|
380
382
|
self.current_step.status = StepStatus.Failed
|
|
381
383
|
self.publish_step_status(step=self.current_step)
|
|
382
|
-
self.
|
|
383
|
-
self.
|
|
384
|
+
self.current_task.update_task_status()
|
|
385
|
+
self.publish_task_status(task=self.current_task)
|
|
386
|
+
self.iterate_current_task()
|
|
387
|
+
self.iterate_current_step()
|
|
384
388
|
|
|
385
389
|
def _mission_stopped(self) -> None:
|
|
386
390
|
self.current_mission.status = MissionStatus.Cancelled
|
|
@@ -427,10 +431,8 @@ class StateMachine(object):
|
|
|
427
431
|
"""
|
|
428
432
|
self.to_idle()
|
|
429
433
|
|
|
430
|
-
def
|
|
434
|
+
def iterate_current_task(self):
|
|
431
435
|
if self.current_task.is_finished():
|
|
432
|
-
self.current_task.update_task_status()
|
|
433
|
-
self.publish_task_status(task=self.current_task)
|
|
434
436
|
try:
|
|
435
437
|
self.current_task = self.task_selector.next_task()
|
|
436
438
|
self.current_task.status = TaskStatus.InProgress
|
|
@@ -439,7 +441,7 @@ class StateMachine(object):
|
|
|
439
441
|
# Indicates that all tasks are finished
|
|
440
442
|
self.current_task = None
|
|
441
443
|
|
|
442
|
-
def
|
|
444
|
+
def iterate_current_step(self):
|
|
443
445
|
if self.current_task != None:
|
|
444
446
|
self.current_step = self.current_task.next_step()
|
|
445
447
|
|
|
@@ -524,7 +526,7 @@ class StateMachine(object):
|
|
|
524
526
|
"error_description": (
|
|
525
527
|
error_message.error_description if error_message else None
|
|
526
528
|
),
|
|
527
|
-
"timestamp": datetime.now(
|
|
529
|
+
"timestamp": datetime.now(timezone.utc),
|
|
528
530
|
},
|
|
529
531
|
cls=EnhancedJSONEncoder,
|
|
530
532
|
)
|
|
@@ -557,7 +559,7 @@ class StateMachine(object):
|
|
|
557
559
|
"error_description": (
|
|
558
560
|
error_message.error_description if error_message else None
|
|
559
561
|
),
|
|
560
|
-
"timestamp": datetime.now(
|
|
562
|
+
"timestamp": datetime.now(timezone.utc),
|
|
561
563
|
},
|
|
562
564
|
cls=EnhancedJSONEncoder,
|
|
563
565
|
)
|
|
@@ -592,7 +594,7 @@ class StateMachine(object):
|
|
|
592
594
|
"error_description": (
|
|
593
595
|
error_message.error_description if error_message else None
|
|
594
596
|
),
|
|
595
|
-
"timestamp": datetime.now(
|
|
597
|
+
"timestamp": datetime.now(timezone.utc),
|
|
596
598
|
},
|
|
597
599
|
cls=EnhancedJSONEncoder,
|
|
598
600
|
)
|
|
@@ -612,7 +614,7 @@ class StateMachine(object):
|
|
|
612
614
|
"isar_id": settings.ISAR_ID,
|
|
613
615
|
"robot_name": settings.ROBOT_NAME,
|
|
614
616
|
"status": self._current_status(),
|
|
615
|
-
"timestamp": datetime.now(
|
|
617
|
+
"timestamp": datetime.now(timezone.utc),
|
|
616
618
|
},
|
|
617
619
|
cls=EnhancedJSONEncoder,
|
|
618
620
|
)
|