bec-lib 3.124.2__tar.gz → 3.124.4__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.
Files changed (143) hide show
  1. {bec_lib-3.124.2 → bec_lib-3.124.4}/PKG-INFO +1 -1
  2. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_report.py +11 -1
  3. {bec_lib-3.124.2 → bec_lib-3.124.4}/pyproject.toml +3 -1
  4. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_report.py +29 -0
  5. {bec_lib-3.124.2 → bec_lib-3.124.4}/.gitignore +0 -0
  6. {bec_lib-3.124.2 → bec_lib-3.124.4}/README.md +0 -0
  7. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/__init__.py +0 -0
  8. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/_print_versions.py +0 -0
  9. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/acl_login.py +0 -0
  10. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/actors.py +0 -0
  11. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/alarm_handler.py +0 -0
  12. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/atlas_models.py +0 -0
  13. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/bec_errors.py +0 -0
  14. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/bec_service.py +0 -0
  15. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/bec_yaml_loader.py +0 -0
  16. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/bl_state_manager.py +0 -0
  17. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/bl_states.py +0 -0
  18. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/callback_handler.py +0 -0
  19. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/channel_monitor.py +0 -0
  20. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/client.py +0 -0
  21. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/codecs.py +0 -0
  22. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/config_helper.py +0 -0
  23. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/configs/__init__.py +0 -0
  24. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/configs/demo_config.yaml +0 -0
  25. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/configs/openapi_schema.json +0 -0
  26. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/connector.py +0 -0
  27. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/dap_plugin_objects.py +0 -0
  28. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/dap_plugins.py +0 -0
  29. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/device.py +0 -0
  30. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/device_monitor_plugin.py +0 -0
  31. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/devicemanager.py +0 -0
  32. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/endpoints.py +0 -0
  33. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/file_utils.py +0 -0
  34. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/live_scan_data.py +0 -0
  35. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/lmfit_serializer.py +0 -0
  36. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/logbook_connector.py +0 -0
  37. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/logger.py +0 -0
  38. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/macro_update_handler.py +0 -0
  39. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/messages.py +0 -0
  40. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/messaging_services.py +0 -0
  41. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/metadata_schema.py +0 -0
  42. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/numpy_encoder.py +0 -0
  43. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/observer.py +0 -0
  44. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/pdf_writer.py +0 -0
  45. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/plugin_helper.py +0 -0
  46. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/procedures/__init__.py +0 -0
  47. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/procedures/helper.py +0 -0
  48. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/procedures/hli.py +0 -0
  49. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/procedures/status.py +0 -0
  50. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/queue_items.py +0 -0
  51. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/redis_connector.py +0 -0
  52. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/request_items.py +0 -0
  53. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_args.py +0 -0
  54. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_data_container.py +0 -0
  55. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_history.py +0 -0
  56. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_input_validator.py +0 -0
  57. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_items.py +0 -0
  58. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_manager.py +0 -0
  59. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_number_container.py +0 -0
  60. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scan_repeat.py +0 -0
  61. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scans.py +0 -0
  62. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/scibec_validator.py +0 -0
  63. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/script_executor.py +0 -0
  64. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/serialization.py +0 -0
  65. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/serialization_registry.py +0 -0
  66. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/service_config.py +0 -0
  67. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/signature_serializer.py +0 -0
  68. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/tests/__init__.py +0 -0
  69. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/tests/fixtures.py +0 -0
  70. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/tests/test_config.yaml +0 -0
  71. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/tests/test_service_config.yaml +0 -0
  72. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/tests/utils.py +0 -0
  73. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/user_macros.py +0 -0
  74. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/__init__.py +0 -0
  75. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/copier_jinja_filters.py +0 -0
  76. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/import_utils.py +0 -0
  77. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/json_extended.py +0 -0
  78. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/__init__.py +0 -0
  79. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/_constants.py +0 -0
  80. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/_util.py +0 -0
  81. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/create/__init__.py +0 -0
  82. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/create/device.py +0 -0
  83. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/create/scan.py +0 -0
  84. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/create/templates/v4_scan.py.jinja +0 -0
  85. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/plugin_manager/main.py +0 -0
  86. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/proxy.py +0 -0
  87. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/pydantic_pretty_print.py +0 -0
  88. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/rpc_utils.py +0 -0
  89. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/scan_utils.py +0 -0
  90. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/threading_utils.py +0 -0
  91. {bec_lib-3.124.2 → bec_lib-3.124.4}/bec_lib/utils/user_acls_test.py +0 -0
  92. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/__init__.py +0 -0
  93. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/_additional_for_signature_serializer_test.py +0 -0
  94. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/conftest.py +0 -0
  95. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_acl_login.py +0 -0
  96. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_alarm_handler.py +0 -0
  97. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_atlas_models.py +0 -0
  98. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_beamline_states.py +0 -0
  99. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_bec_logger.py +0 -0
  100. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_bec_messages.py +0 -0
  101. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_bec_service.py +0 -0
  102. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_callback_handler.py +0 -0
  103. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_channel_monitor.py +0 -0
  104. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_client.py +0 -0
  105. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_config_helper.py +0 -0
  106. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_core_utils.py +0 -0
  107. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_dap_plugins.py +0 -0
  108. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_data_container.py +0 -0
  109. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_device_hashing.py +0 -0
  110. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_device_manager.py +0 -0
  111. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_devices.py +0 -0
  112. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_file_utils.py +0 -0
  113. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_import_utils.py +0 -0
  114. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_jinja_plugins.py +0 -0
  115. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_lmfit_serializer.py +0 -0
  116. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_messaging_service.py +0 -0
  117. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_metadata_schema.py +0 -0
  118. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_observer.py +0 -0
  119. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_pdf_writer.py +0 -0
  120. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_plugin_helper.py +0 -0
  121. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_plugin_manager.py +0 -0
  122. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_plugin_system.py +0 -0
  123. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_pydantic_pretty_print.py +0 -0
  124. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_queue_items.py +0 -0
  125. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_redis_connector.py +0 -0
  126. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_redis_connector_fakeredis.py +0 -0
  127. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_context.py +0 -0
  128. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_data.py +0 -0
  129. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_history.py +0 -0
  130. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_items.py +0 -0
  131. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_manager.py +0 -0
  132. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_object.py +0 -0
  133. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scan_repeat.py +0 -0
  134. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_scibec_validator.py +0 -0
  135. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_script_executor.py +0 -0
  136. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_serializer.py +0 -0
  137. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_signature_serializer.py +0 -0
  138. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_signature_serializer_with_future_import.py +0 -0
  139. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_stream_subs.py +0 -0
  140. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_user_macros.py +0 -0
  141. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_utils.py +0 -0
  142. {bec_lib-3.124.2 → bec_lib-3.124.4}/tests/test_yaml_loader.py +0 -0
  143. {bec_lib-3.124.2 → bec_lib-3.124.4}/util_scripts/init_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_lib
3
- Version: 3.124.2
3
+ Version: 3.124.4
4
4
  Summary: BEC library
5
5
  Project-URL: Bug Tracker, https://github.com/bec-project/bec/issues
6
6
  Project-URL: Homepage, https://github.com/bec-project/bec
@@ -10,13 +10,14 @@ import traceback
10
10
  from math import inf
11
11
  from typing import TYPE_CHECKING
12
12
 
13
+ from bec_lib import messages
14
+ from bec_lib.alarm_handler import AlarmBase, Alarms
13
15
  from bec_lib.bec_errors import ScanAbortion
14
16
  from bec_lib.endpoints import MessageEndpoints
15
17
  from bec_lib.logger import bec_logger
16
18
  from bec_lib.scan_items import ScanItem
17
19
 
18
20
  if TYPE_CHECKING: # pragma: no cover
19
- from bec_lib import messages
20
21
  from bec_lib.client import BECClient
21
22
  from bec_lib.queue_items import QueueItem
22
23
  from bec_lib.request_items import RequestItem
@@ -111,6 +112,15 @@ class ScanReport:
111
112
  )
112
113
  if request_status is None:
113
114
  return False
115
+ for status_container in request_status:
116
+ if "data" not in status_container:
117
+ return False
118
+ status = status_container["data"]
119
+ if not status.success:
120
+ alarm_message = messages.AlarmMessage(
121
+ severity=Alarms.MAJOR, info=status.metadata["error_info"]
122
+ )
123
+ raise AlarmBase(alarm=alarm_message, severity=Alarms.MAJOR)
114
124
  if len(request_status) == len(motors):
115
125
  return True
116
126
  return False
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_lib"
7
- version = "3.124.2"
7
+ version = "3.124.4"
8
8
  description = "BEC library"
9
9
  requires-python = ">=3.11"
10
10
  classifiers = [
@@ -79,6 +79,8 @@ Homepage = "https://github.com/bec-project/bec"
79
79
 
80
80
 
81
81
 
82
+
83
+
82
84
  [tool.hatch.build.targets.wheel]
83
85
  include = ["*"]
84
86
 
@@ -3,6 +3,7 @@ from unittest import mock
3
3
  import pytest
4
4
 
5
5
  from bec_lib import messages
6
+ from bec_lib.alarm_handler import AlarmBase
6
7
  from bec_lib.bec_errors import ScanAbortion
7
8
  from bec_lib.scan_report import ScanReport
8
9
 
@@ -151,6 +152,34 @@ def test_scan_report_get_mv_status(scan_report, xread_return, expected):
151
152
  assert scan_report._get_mv_status() == expected
152
153
 
153
154
 
155
+ def test_scan_report_get_mv_status_raises_alarm_on_failed_move(scan_report):
156
+ error_info = messages.ErrorInfo(
157
+ error_message="Motor move failed",
158
+ compact_error_message="RuntimeError: Motor move failed",
159
+ exception_type="RuntimeError",
160
+ device="samx",
161
+ )
162
+ scan_report.request.request = messages.ScanQueueMessage(
163
+ scan_type="mv", parameter={"args": {"samx": [5]}}
164
+ )
165
+ with mock.patch.object(scan_report._client.device_manager.connector, "xread") as mock_xread:
166
+ mock_xread.return_value = [
167
+ {
168
+ "data": messages.DeviceReqStatusMessage(
169
+ device="samx",
170
+ success=False,
171
+ request_id="request-id",
172
+ metadata={"error_info": error_info},
173
+ )
174
+ }
175
+ ]
176
+ with pytest.raises(AlarmBase) as exc_info:
177
+ scan_report._get_mv_status()
178
+
179
+ assert exc_info.value.severity.name == "MAJOR"
180
+ assert exc_info.value.alarm.info == error_info
181
+
182
+
154
183
  def test_scan_report_file_written(scan_report):
155
184
  with mock.patch.object(scan_report.request, "scan") as mock_scan:
156
185
  mock_scan.public_files = {"/tmp/file1_master.h5": {"done_state": True, "success": True}}
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