isar 1.23.3__tar.gz → 1.23.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of isar might be problematic. Click here for more details.
- {isar-1.23.3 → isar-1.23.5}/PKG-INFO +1 -1
- {isar-1.23.3 → isar-1.23.5}/requirements.txt +17 -17
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/api.py +1 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/settings.py +3 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/script.py +17 -1
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/idle.py +1 -1
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/monitor.py +12 -5
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/offline.py +1 -1
- {isar-1.23.3 → isar-1.23.5}/src/isar.egg-info/PKG-INFO +1 -1
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/exceptions/robot_exceptions.py +1 -1
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/robot_interface.py +19 -1
- {isar-1.23.3 → isar-1.23.5}/tests/isar/state_machine/test_state_machine.py +4 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/robot_interface.py +6 -1
- {isar-1.23.3 → isar-1.23.5}/.dockerignore +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/release.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/workflows/compile_requirements.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/workflows/project_automations.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/workflows/publish_isar_base_image.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/workflows/pythonpackage.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/workflows/pythonpublish.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.github/workflows/stale.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/.gitignore +0 -0
- {isar-1.23.3 → isar-1.23.5}/.pre-commit-config.yaml +0 -0
- {isar-1.23.3 → isar-1.23.5}/Dockerfile +0 -0
- {isar-1.23.3 → isar-1.23.5}/LICENSE +0 -0
- {isar-1.23.3 → isar-1.23.5}/README.md +0 -0
- {isar-1.23.3 → isar-1.23.5}/SECURITY.md +0 -0
- {isar-1.23.3 → isar-1.23.5}/docker-compose-turtlebot.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/docker-compose.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/Makefile +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/make.bat +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/rst_processing.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/source/conf.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/source/index.rst +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/source/readme_link.md +0 -0
- {isar-1.23.3 → isar-1.23.5}/docs/state_machine_diagram.png +0 -0
- {isar-1.23.3 → isar-1.23.5}/main.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/pyproject.toml +0 -0
- {isar-1.23.3 → isar-1.23.5}/radixconfig.yml +0 -0
- {isar-1.23.3 → isar-1.23.5}/setup.cfg +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/models/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/models/models.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/models/start_mission_definition.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/schedule/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/schedule/scheduling_controller.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/security/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/apis/security/authentication.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/certs/ca-cert.pem +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/configuration_error.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/keyvault/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/keyvault/keyvault_error.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/keyvault/keyvault_service.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/log.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/logging.conf +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/default_map.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/klab_b.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/klab_compressor.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/klab_turtlebot.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/maps/turtleworld.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_missions/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_missions/default.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_poses/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/config/settings.env +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/mission_planner/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/mission_planner/local_planner.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/mission_planner/mission_planner_interface.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/mission_planner/sequential_task_selector.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/mission_planner/task_selector_interface.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/message.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/queues/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/queues/queue_io.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/queues/queues.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/communication/queues/status_queue.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/models/mission_metadata/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/modules.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/auth/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/auth/azure_credentials.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/readers/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/readers/base_reader.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/request_handler.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/stid/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/utilities/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/utilities/queue_utilities.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/utilities/scheduling_utilities.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/services/utilities/threaded_request.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/state_machine.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/initialize.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/initiate.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/off.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/paused.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states/stop.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/state_machine/states_enum.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/blob_storage.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/local_storage.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/slimm_storage.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/storage_interface.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/uploader.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar/storage/utilities.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar.egg-info/SOURCES.txt +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar.egg-info/dependency_links.txt +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar.egg-info/entry_points.txt +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar.egg-info/requires.txt +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/isar.egg-info/top_level.txt +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/exceptions/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/initialize/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/initialize/initialize_params.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/inspection/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/inspection/inspection.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/mission/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/mission/mission.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/mission/status.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/mission/task.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/robots/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/models/robots/robot_model.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/telemetry/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/telemetry/media_connection_type.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/telemetry/mqtt_client.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/telemetry/payloads.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/test_robot_interface.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/utilities/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/utilities/json_service.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/conftest.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/config/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/config/missions/default.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/integration/turtlebot/test_successful_mission.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/apis/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/apis/scheduler/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/apis/security/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/apis/security/test_authentication.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/mission/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/mission/test_mission.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/models/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/models/communication/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/models/communication/test_queues.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/models/example_mission_definition.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/models/test_start_mission_definition.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/readers/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/readers/test_base_reader.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/readers/test_mission_reader.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/service_connections/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/service_connections/echo/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/utilities/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/state_machine/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/state_machine/states/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/state_machine/states/test_monitor.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/storage/test_blob_storage.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/isar/storage/test_uploader.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/__init__.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/blob_storage.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/mission_definition.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/mqtt_client.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/pose.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/request.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/status.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/task.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/mocks/token.py +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_data/test_json_file.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_data/test_map_config/test_map_config.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_data/test_mission_not_working.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_data/test_mission_working.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_data/test_mission_working_no_tasks.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_data/test_thermal_image_mission.json +0 -0
- {isar-1.23.3 → isar-1.23.5}/tests/test_modules.py +0 -0
|
@@ -12,7 +12,7 @@ anyio==4.6.2.post1
|
|
|
12
12
|
# via
|
|
13
13
|
# httpx
|
|
14
14
|
# starlette
|
|
15
|
-
azure-core==1.
|
|
15
|
+
azure-core==1.32.0
|
|
16
16
|
# via
|
|
17
17
|
# azure-identity
|
|
18
18
|
# azure-keyvault-secrets
|
|
@@ -22,9 +22,9 @@ azure-identity==1.19.0
|
|
|
22
22
|
# via
|
|
23
23
|
# isar (pyproject.toml)
|
|
24
24
|
# opencensus-ext-azure
|
|
25
|
-
azure-keyvault-secrets==4.
|
|
25
|
+
azure-keyvault-secrets==4.9.0
|
|
26
26
|
# via isar (pyproject.toml)
|
|
27
|
-
azure-storage-blob==12.
|
|
27
|
+
azure-storage-blob==12.24.0
|
|
28
28
|
# via isar (pyproject.toml)
|
|
29
29
|
backoff==2.2.1
|
|
30
30
|
# via isar (pyproject.toml)
|
|
@@ -43,7 +43,7 @@ click==8.1.7
|
|
|
43
43
|
# via
|
|
44
44
|
# isar (pyproject.toml)
|
|
45
45
|
# uvicorn
|
|
46
|
-
cryptography==43.0.
|
|
46
|
+
cryptography==43.0.3
|
|
47
47
|
# via
|
|
48
48
|
# azure-identity
|
|
49
49
|
# azure-storage-blob
|
|
@@ -54,23 +54,23 @@ dacite==1.8.1
|
|
|
54
54
|
# via
|
|
55
55
|
# alitra
|
|
56
56
|
# isar (pyproject.toml)
|
|
57
|
-
fastapi==0.115.
|
|
57
|
+
fastapi==0.115.5
|
|
58
58
|
# via
|
|
59
59
|
# fastapi-azure-auth
|
|
60
60
|
# isar (pyproject.toml)
|
|
61
61
|
fastapi-azure-auth==5.0.1
|
|
62
62
|
# via isar (pyproject.toml)
|
|
63
|
-
google-api-core==2.
|
|
63
|
+
google-api-core==2.23.0
|
|
64
64
|
# via opencensus
|
|
65
|
-
google-auth==2.
|
|
65
|
+
google-auth==2.36.0
|
|
66
66
|
# via google-api-core
|
|
67
|
-
googleapis-common-protos==1.
|
|
67
|
+
googleapis-common-protos==1.66.0
|
|
68
68
|
# via google-api-core
|
|
69
69
|
h11==0.14.0
|
|
70
70
|
# via
|
|
71
71
|
# httpcore
|
|
72
72
|
# uvicorn
|
|
73
|
-
httpcore==1.0.
|
|
73
|
+
httpcore==1.0.7
|
|
74
74
|
# via httpx
|
|
75
75
|
httpx==0.27.2
|
|
76
76
|
# via fastapi-azure-auth
|
|
@@ -91,7 +91,7 @@ msal==1.31.0
|
|
|
91
91
|
# msal-extensions
|
|
92
92
|
msal-extensions==1.2.0
|
|
93
93
|
# via azure-identity
|
|
94
|
-
numpy==2.1.
|
|
94
|
+
numpy==2.1.3
|
|
95
95
|
# via
|
|
96
96
|
# alitra
|
|
97
97
|
# isar (pyproject.toml)
|
|
@@ -113,14 +113,14 @@ paho-mqtt==2.1.0
|
|
|
113
113
|
# via isar (pyproject.toml)
|
|
114
114
|
portalocker==2.10.1
|
|
115
115
|
# via msal-extensions
|
|
116
|
-
proto-plus==1.
|
|
116
|
+
proto-plus==1.25.0
|
|
117
117
|
# via google-api-core
|
|
118
|
-
protobuf==5.28.
|
|
118
|
+
protobuf==5.28.3
|
|
119
119
|
# via
|
|
120
120
|
# google-api-core
|
|
121
121
|
# googleapis-common-protos
|
|
122
122
|
# proto-plus
|
|
123
|
-
psutil==6.
|
|
123
|
+
psutil==6.1.0
|
|
124
124
|
# via opencensus-ext-azure
|
|
125
125
|
pyasn1==0.6.1
|
|
126
126
|
# via
|
|
@@ -137,9 +137,9 @@ pydantic==2.9.2
|
|
|
137
137
|
# pydantic-settings
|
|
138
138
|
pydantic-core==2.23.4
|
|
139
139
|
# via pydantic
|
|
140
|
-
pydantic-settings==2.
|
|
140
|
+
pydantic-settings==2.6.1
|
|
141
141
|
# via isar (pyproject.toml)
|
|
142
|
-
pyjwt[crypto]==2.
|
|
142
|
+
pyjwt[crypto]==2.10.0
|
|
143
143
|
# via
|
|
144
144
|
# fastapi-azure-auth
|
|
145
145
|
# isar (pyproject.toml)
|
|
@@ -174,7 +174,7 @@ sniffio==1.3.1
|
|
|
174
174
|
# via
|
|
175
175
|
# anyio
|
|
176
176
|
# httpx
|
|
177
|
-
starlette==0.
|
|
177
|
+
starlette==0.41.2
|
|
178
178
|
# via fastapi
|
|
179
179
|
transitions==0.9.2
|
|
180
180
|
# via isar (pyproject.toml)
|
|
@@ -189,7 +189,7 @@ typing-extensions==4.12.2
|
|
|
189
189
|
# pydantic-core
|
|
190
190
|
urllib3==2.2.3
|
|
191
191
|
# via requests
|
|
192
|
-
uvicorn==0.
|
|
192
|
+
uvicorn==0.32.0
|
|
193
193
|
# via isar (pyproject.toml)
|
|
194
194
|
wrapt==1.16.0
|
|
195
195
|
# via opencensus-ext-requests
|
|
@@ -140,6 +140,9 @@ class Settings(BaseSettings):
|
|
|
140
140
|
# Keyvault name
|
|
141
141
|
KEYVAULT_NAME: str = Field(default="IsarDevKv")
|
|
142
142
|
|
|
143
|
+
# Determines whether inspections are uploaded asynchronously or get_inspections in robotinterface
|
|
144
|
+
UPLOAD_INSPECTIONS_ASYNC: bool = Field(default=False)
|
|
145
|
+
|
|
143
146
|
# URL to storage account for Azure Blob Storage
|
|
144
147
|
BLOB_STORAGE_ACCOUNT_URL: str = Field(
|
|
145
148
|
default="https://eqrobotdevstorage.blob.core.windows.net"
|
|
@@ -2,7 +2,7 @@ import logging
|
|
|
2
2
|
import time
|
|
3
3
|
from logging import Logger
|
|
4
4
|
from threading import Thread
|
|
5
|
-
from typing import Any, List
|
|
5
|
+
from typing import Any, List, Tuple
|
|
6
6
|
|
|
7
7
|
from injector import Injector
|
|
8
8
|
|
|
@@ -20,6 +20,8 @@ from isar.services.service_connections.mqtt.robot_heartbeat_publisher import (
|
|
|
20
20
|
from isar.services.service_connections.mqtt.robot_info_publisher import (
|
|
21
21
|
RobotInfoPublisher,
|
|
22
22
|
)
|
|
23
|
+
from robot_interface.models.inspection.inspection import Inspection
|
|
24
|
+
from robot_interface.models.mission.mission import Mission
|
|
23
25
|
from isar.state_machine.state_machine import StateMachine, main
|
|
24
26
|
from isar.storage.uploader import Uploader
|
|
25
27
|
from robot_interface.robot_interface import RobotInterface
|
|
@@ -69,6 +71,7 @@ def print_startup_info():
|
|
|
69
71
|
print_setting("Using local storage", settings.STORAGE_LOCAL_ENABLED)
|
|
70
72
|
print_setting("Using blob storage", settings.STORAGE_BLOB_ENABLED)
|
|
71
73
|
print_setting("Using SLIMM storage", settings.STORAGE_SLIMM_ENABLED)
|
|
74
|
+
print_setting("Using async inspection uploading", settings.UPLOAD_INSPECTIONS_ASYNC)
|
|
72
75
|
print_setting("Plant code", settings.PLANT_CODE)
|
|
73
76
|
print_setting("Plant name", settings.PLANT_NAME)
|
|
74
77
|
print_setting("Plant shortname", settings.PLANT_SHORT_NAME)
|
|
@@ -103,6 +106,18 @@ def start():
|
|
|
103
106
|
target=uploader.run, name="ISAR Uploader", daemon=True
|
|
104
107
|
)
|
|
105
108
|
threads.append(uploader_thread)
|
|
109
|
+
|
|
110
|
+
if settings.UPLOAD_INSPECTIONS_ASYNC:
|
|
111
|
+
|
|
112
|
+
def inspections_callback(inspection: Inspection, mission: Mission):
|
|
113
|
+
message: Tuple[Inspection, Mission] = (
|
|
114
|
+
inspection,
|
|
115
|
+
mission,
|
|
116
|
+
)
|
|
117
|
+
state_machine.queues.upload_queue.put(message)
|
|
118
|
+
|
|
119
|
+
robot.register_inspection_callback(inspections_callback)
|
|
120
|
+
|
|
106
121
|
if settings.MQTT_ENABLED:
|
|
107
122
|
mqtt_client: MqttClient = MqttClient(mqtt_queue=queues.mqtt_queue)
|
|
108
123
|
|
|
@@ -137,6 +152,7 @@ def start():
|
|
|
137
152
|
robot_name=settings.ROBOT_NAME,
|
|
138
153
|
isar_id=settings.ISAR_ID,
|
|
139
154
|
)
|
|
155
|
+
|
|
140
156
|
if publishers:
|
|
141
157
|
threads.extend(publishers)
|
|
142
158
|
|
|
@@ -17,6 +17,7 @@ from robot_interface.models.exceptions.robot_exceptions import (
|
|
|
17
17
|
RobotException,
|
|
18
18
|
RobotRetrieveInspectionException,
|
|
19
19
|
RobotTaskStatusException,
|
|
20
|
+
RobotCommunicationException,
|
|
20
21
|
)
|
|
21
22
|
from robot_interface.models.inspection.inspection import Inspection
|
|
22
23
|
from robot_interface.models.mission.mission import Mission
|
|
@@ -75,8 +76,11 @@ class Monitor(State):
|
|
|
75
76
|
time.sleep(self.state_machine.sleep_time)
|
|
76
77
|
continue
|
|
77
78
|
|
|
78
|
-
except
|
|
79
|
-
|
|
79
|
+
except (
|
|
80
|
+
RobotCommunicationTimeoutException,
|
|
81
|
+
RobotCommunicationException,
|
|
82
|
+
) as e:
|
|
83
|
+
task_failed: bool = self._handle_communication_retry(e)
|
|
80
84
|
if task_failed:
|
|
81
85
|
status = TaskStatus.Failed
|
|
82
86
|
else:
|
|
@@ -111,7 +115,10 @@ class Monitor(State):
|
|
|
111
115
|
|
|
112
116
|
self.state_machine.current_task.status = status
|
|
113
117
|
|
|
114
|
-
if
|
|
118
|
+
if (
|
|
119
|
+
not settings.UPLOAD_INSPECTIONS_ASYNC
|
|
120
|
+
and self._should_upload_inspections()
|
|
121
|
+
):
|
|
115
122
|
get_inspection_thread = ThreadedRequest(
|
|
116
123
|
self._queue_inspections_for_upload
|
|
117
124
|
)
|
|
@@ -207,8 +214,8 @@ class Monitor(State):
|
|
|
207
214
|
)
|
|
208
215
|
self.state_machine.current_task.error_message = error_message
|
|
209
216
|
|
|
210
|
-
def
|
|
211
|
-
self, e: RobotCommunicationTimeoutException
|
|
217
|
+
def _handle_communication_retry(
|
|
218
|
+
self, e: Union[RobotCommunicationTimeoutException, RobotCommunicationException]
|
|
212
219
|
) -> bool:
|
|
213
220
|
self.state_machine.current_mission.error_message = ErrorMessage(
|
|
214
221
|
error_reason=e.error_reason, error_description=e.error_description
|
|
@@ -43,7 +43,7 @@ class RobotException(Exception):
|
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
# An exception which should be thrown by the robot package if it is unable to
|
|
46
|
-
# communicate with the robot API.
|
|
46
|
+
# communicate with the robot API. ISAR will retry the request.
|
|
47
47
|
class RobotCommunicationException(RobotException):
|
|
48
48
|
def __init__(self, error_description: str) -> None:
|
|
49
49
|
super().__init__(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from abc import ABCMeta, abstractmethod
|
|
2
2
|
from queue import Queue
|
|
3
3
|
from threading import Thread
|
|
4
|
-
from typing import List
|
|
4
|
+
from typing import Callable, List
|
|
5
5
|
|
|
6
6
|
from robot_interface.models.initialize import InitializeParams
|
|
7
7
|
from robot_interface.models.inspection.inspection import Inspection
|
|
@@ -180,6 +180,24 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
180
180
|
"""
|
|
181
181
|
raise NotImplementedError
|
|
182
182
|
|
|
183
|
+
@abstractmethod
|
|
184
|
+
def register_inspection_callback(
|
|
185
|
+
self, callback_function: Callable[[Inspection, Mission], None]
|
|
186
|
+
) -> None:
|
|
187
|
+
"""Register a function which should be run when inspection data is received
|
|
188
|
+
asynchronously. This function should expect to receive an Inspection from.
|
|
189
|
+
|
|
190
|
+
Parameters
|
|
191
|
+
----------
|
|
192
|
+
callback_function : Callable[[Inspection, Mission], None]
|
|
193
|
+
|
|
194
|
+
Returns
|
|
195
|
+
-------
|
|
196
|
+
None
|
|
197
|
+
|
|
198
|
+
"""
|
|
199
|
+
raise NotImplementedError
|
|
200
|
+
|
|
183
201
|
@abstractmethod
|
|
184
202
|
def initialize(self, params: InitializeParams) -> None:
|
|
185
203
|
"""Initializes the robot. The initialization needed is robot dependent and the
|
|
@@ -8,6 +8,8 @@ import pytest
|
|
|
8
8
|
from injector import Injector
|
|
9
9
|
from pytest_mock import MockerFixture
|
|
10
10
|
|
|
11
|
+
from isar.config.settings import settings
|
|
12
|
+
|
|
11
13
|
from isar.mission_planner.local_planner import LocalPlanner
|
|
12
14
|
from isar.models.communication.queues.queues import Queues
|
|
13
15
|
from isar.services.utilities.scheduling_utilities import SchedulingUtilities
|
|
@@ -31,6 +33,7 @@ from tests.mocks.task import MockTask
|
|
|
31
33
|
|
|
32
34
|
class StateMachineThread(object):
|
|
33
35
|
def __init__(self, injector) -> None:
|
|
36
|
+
settings.UPLOAD_INSPECTIONS_ASYNC = False
|
|
34
37
|
self.injector: Injector = injector
|
|
35
38
|
self.state_machine: StateMachine = injector.get(StateMachine)
|
|
36
39
|
self._thread: Thread = Thread(target=main, args=[self.state_machine])
|
|
@@ -42,6 +45,7 @@ class StateMachineThread(object):
|
|
|
42
45
|
|
|
43
46
|
class UploaderThread(object):
|
|
44
47
|
def __init__(self, injector) -> None:
|
|
48
|
+
settings.UPLOAD_INSPECTIONS_ASYNC = False
|
|
45
49
|
self.injector: Injector = injector
|
|
46
50
|
self.uploader: Uploader = Uploader(
|
|
47
51
|
queues=self.injector.get(Queues),
|
|
@@ -2,7 +2,7 @@ from dataclasses import field
|
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
from queue import Queue
|
|
4
4
|
from threading import Thread
|
|
5
|
-
from typing import List, Sequence
|
|
5
|
+
from typing import Callable, List, Sequence
|
|
6
6
|
|
|
7
7
|
from alitra import Frame, Orientation, Pose, Position
|
|
8
8
|
|
|
@@ -62,6 +62,11 @@ class MockRobot(RobotInterface):
|
|
|
62
62
|
image.data = b"Some binary image data"
|
|
63
63
|
return image
|
|
64
64
|
|
|
65
|
+
def register_inspection_callback(
|
|
66
|
+
self, callback_function: Callable[[Inspection, Mission], None]
|
|
67
|
+
) -> None:
|
|
68
|
+
return
|
|
69
|
+
|
|
65
70
|
def initialize(self, params: InitializeParams) -> None:
|
|
66
71
|
return
|
|
67
72
|
|
|
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
|
|
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
|
{isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_mission_definition/default_mission.json
RENAMED
|
File without changes
|
{isar-1.23.3 → isar-1.23.5}/src/isar/config/predefined_mission_definition/default_turtlebot.json
RENAMED
|
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
|
{isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py
RENAMED
|
File without changes
|
{isar-1.23.3 → isar-1.23.5}/src/isar/services/service_connections/mqtt/robot_info_publisher.py
RENAMED
|
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
|
|
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
|
|
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
|
{isar-1.23.3 → isar-1.23.5}/tests/isar/services/service_connections/test_base_request_handler.py
RENAMED
|
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
|