bec-lib 4.4.0__tar.gz → 4.4.2__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 (166) hide show
  1. {bec_lib-4.4.0 → bec_lib-4.4.2}/PKG-INFO +1 -1
  2. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/codecs.py +2 -2
  3. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/redis_connector/managed_redis_connection.py +5 -5
  4. {bec_lib-4.4.0 → bec_lib-4.4.2}/pyproject.toml +1 -1
  5. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_redis_connector_fakeredis.py +30 -0
  6. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_serializer.py +8 -1
  7. {bec_lib-4.4.0 → bec_lib-4.4.2}/.gitignore +0 -0
  8. {bec_lib-4.4.0 → bec_lib-4.4.2}/README.md +0 -0
  9. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/__init__.py +0 -0
  10. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/_print_versions.py +0 -0
  11. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/acl_login.py +0 -0
  12. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/actors.py +0 -0
  13. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/alarm_handler.py +0 -0
  14. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/atlas_models.py +0 -0
  15. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/bec_errors.py +0 -0
  16. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/bec_service.py +0 -0
  17. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/bec_yaml_loader.py +0 -0
  18. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/bl_state_manager.py +0 -0
  19. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/bl_states.py +0 -0
  20. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/builtin_actor_hli.py +0 -0
  21. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/callback_handler.py +0 -0
  22. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/channel_monitor.py +0 -0
  23. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/client.py +0 -0
  24. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/config_helper.py +0 -0
  25. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/config_values.py +0 -0
  26. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/configs/__init__.py +0 -0
  27. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/configs/demo_config.yaml +0 -0
  28. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/configs/openapi_schema.json +0 -0
  29. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/connector.py +0 -0
  30. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/dap_plugin_objects.py +0 -0
  31. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/dap_plugins.py +0 -0
  32. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/device.py +0 -0
  33. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/devicemanager.py +0 -0
  34. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/endpoints.py +0 -0
  35. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/file_utils.py +0 -0
  36. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/live_scan_data.py +0 -0
  37. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/lmfit_serializer.py +0 -0
  38. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/logger.py +0 -0
  39. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/macro_update_handler.py +0 -0
  40. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/messages.py +0 -0
  41. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/messaging_hooks.py +0 -0
  42. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/messaging_services.py +0 -0
  43. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/metadata_schema.py +0 -0
  44. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/numpy_encoder.py +0 -0
  45. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/observer.py +0 -0
  46. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/path_optimization.py +0 -0
  47. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/pdf_writer.py +0 -0
  48. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/plugin_helper.py +0 -0
  49. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/position_generators.py +0 -0
  50. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/procedures/__init__.py +0 -0
  51. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/procedures/helper.py +0 -0
  52. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/procedures/hli.py +0 -0
  53. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/procedures/status.py +0 -0
  54. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/queue_items.py +0 -0
  55. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/redis_connector/__init__.py +0 -0
  56. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/redis_connector/constants.py +0 -0
  57. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/redis_connector/hli.py +0 -0
  58. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/redis_connector/streams.py +0 -0
  59. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/redis_connector/validation.py +0 -0
  60. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/request_context.py +0 -0
  61. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/request_items.py +0 -0
  62. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_args.py +0 -0
  63. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_data_container.py +0 -0
  64. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_history.py +0 -0
  65. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_input_validator.py +0 -0
  66. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_items.py +0 -0
  67. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_manager.py +0 -0
  68. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_number_container.py +0 -0
  69. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_preview.py +0 -0
  70. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_repeat.py +0 -0
  71. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scan_report.py +0 -0
  72. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scans.py +0 -0
  73. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/scibec_validator.py +0 -0
  74. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/script_executor.py +0 -0
  75. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/serialization.py +0 -0
  76. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/serialization_registry.py +0 -0
  77. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/service_config.py +0 -0
  78. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/signature_serializer.py +0 -0
  79. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/tests/__init__.py +0 -0
  80. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/tests/fixtures.py +0 -0
  81. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/tests/test_config.yaml +0 -0
  82. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/tests/test_service_config.yaml +0 -0
  83. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/tests/utils.py +0 -0
  84. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/user_macros.py +0 -0
  85. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/__init__.py +0 -0
  86. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/copier_jinja_filters.py +0 -0
  87. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/deprecation.py +0 -0
  88. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/import_utils.py +0 -0
  89. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/json_extended.py +0 -0
  90. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/__init__.py +0 -0
  91. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/_constants.py +0 -0
  92. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/_util.py +0 -0
  93. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/__init__.py +0 -0
  94. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/device.py +0 -0
  95. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/scan.py +0 -0
  96. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/templates/scan.py.jinja +0 -0
  97. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/main.py +0 -0
  98. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/proxy.py +0 -0
  99. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/pydantic_pretty_print.py +0 -0
  100. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/rpc_utils.py +0 -0
  101. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/scan_utils.py +0 -0
  102. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/threading_utils.py +0 -0
  103. {bec_lib-4.4.0 → bec_lib-4.4.2}/bec_lib/utils/user_acls_test.py +0 -0
  104. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/__init__.py +0 -0
  105. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/_additional_for_signature_serializer_test.py +0 -0
  106. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/conftest.py +0 -0
  107. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_acl_login.py +0 -0
  108. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_alarm_handler.py +0 -0
  109. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_atlas_models.py +0 -0
  110. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_beamline_states.py +0 -0
  111. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_bec_logger.py +0 -0
  112. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_bec_messages.py +0 -0
  113. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_bec_service.py +0 -0
  114. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_callback_handler.py +0 -0
  115. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_channel_monitor.py +0 -0
  116. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_client.py +0 -0
  117. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_config_helper.py +0 -0
  118. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_core_utils.py +0 -0
  119. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_dap_plugins.py +0 -0
  120. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_data_container.py +0 -0
  121. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_deprecation.py +0 -0
  122. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_device_hashing.py +0 -0
  123. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_device_manager.py +0 -0
  124. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_devices.py +0 -0
  125. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_file_utils.py +0 -0
  126. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_hli_connector_fakeredis.py +0 -0
  127. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_hli_redis_connector.py +0 -0
  128. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_import_utils.py +0 -0
  129. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_jinja_plugins.py +0 -0
  130. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_lmfit_serializer.py +0 -0
  131. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_managed_config_values.py +0 -0
  132. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_managed_redis_connection.py +0 -0
  133. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_messaging_hooks.py +0 -0
  134. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_messaging_service.py +0 -0
  135. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_metadata_schema.py +0 -0
  136. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_observer.py +0 -0
  137. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_path_optimization.py +0 -0
  138. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_pdf_writer.py +0 -0
  139. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_plugin_helper.py +0 -0
  140. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_plugin_manager.py +0 -0
  141. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_plugin_system.py +0 -0
  142. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_position_generators.py +0 -0
  143. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_procedure_submission.py +0 -0
  144. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_pydantic_pretty_print.py +0 -0
  145. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_queue_items.py +0 -0
  146. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_roi_endpoints.py +0 -0
  147. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_roi_messages.py +0 -0
  148. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_context.py +0 -0
  149. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_data.py +0 -0
  150. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_history.py +0 -0
  151. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_items.py +0 -0
  152. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_manager.py +0 -0
  153. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_object.py +0 -0
  154. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_preview.py +0 -0
  155. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_repeat.py +0 -0
  156. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scan_report.py +0 -0
  157. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_scibec_validator.py +0 -0
  158. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_script_executor.py +0 -0
  159. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_service_config.py +0 -0
  160. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_signature_serializer.py +0 -0
  161. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_signature_serializer_with_future_import.py +0 -0
  162. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_stream_subs.py +0 -0
  163. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_user_macros.py +0 -0
  164. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_utils.py +0 -0
  165. {bec_lib-4.4.0 → bec_lib-4.4.2}/tests/test_yaml_loader.py +0 -0
  166. {bec_lib-4.4.0 → bec_lib-4.4.2}/util_scripts/init_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: bec_lib
3
- Version: 4.4.0
3
+ Version: 4.4.2
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,7 +10,7 @@ from pydantic import BaseModel
10
10
  from bec_lib import messages as messages_module
11
11
  from bec_lib import numpy_encoder
12
12
  from bec_lib.device import DeviceBase
13
- from bec_lib.endpoints import EndpointInfo
13
+ from bec_lib.endpoints import EndpointInfo, MessageOp
14
14
  from bec_lib.messages import BECMessage, BECStatus
15
15
 
16
16
 
@@ -126,7 +126,7 @@ class EndpointInfoEncoder(BECCodec):
126
126
  return EndpointInfo(
127
127
  endpoint=data["endpoint"],
128
128
  message_type=getattr(messages_module, data["message_type"]),
129
- message_op=data["message_op"],
129
+ message_op=MessageOp(data["message_op"]),
130
130
  )
131
131
 
132
132
 
@@ -510,10 +510,7 @@ class ManagedRedisConnection:
510
510
  [(t, self._redis_conn.xrange(t, "-", end)) for t, end in topics_ids.items()],
511
511
  None,
512
512
  )
513
- return (
514
- self._redis_conn.xread(topics_ids, block=200) or [],
515
- None,
516
- ) # type: ignore strs are fine key and id types
513
+ return (self._redis_conn.xread(topics_ids, block=200) or [], None) # type: ignore strs are fine key and id types
517
514
  except redis.exceptions.ConnectionError:
518
515
  return None, self.connection_error_str
519
516
  except redis.exceptions.NoPermissionError:
@@ -556,11 +553,14 @@ class ManagedRedisConnection:
556
553
  # Then read all the normal streams
557
554
  with self._stream_subs.lock:
558
555
  normal_topics = self._stream_subs.topic_ids()
559
- normal_subs = self._stream_subs.normal_subs
560
556
  normal_error = None
561
557
  if normal_topics:
562
558
  response, normal_error = self._try_read_streams(normal_topics)
563
559
  if normal_error is None:
560
+ # Take the subscribers after the blocking read so that sub changes during the
561
+ # read take immediate effect
562
+ with self._stream_subs.lock:
563
+ normal_subs = self._stream_subs.normal_subs
564
564
  updated_ids = self._handle_stream_msg_list(response, normal_subs)
565
565
  else:
566
566
  updated_ids = {}
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_lib"
7
- version = "4.4.0"
7
+ version = "4.4.2"
8
8
  description = "BEC library"
9
9
  requires-python = ">=3.11"
10
10
  classifiers = [
@@ -427,6 +427,36 @@ def test_redis_connector_register_stream(connected_connector):
427
427
  assert connector._stream_subs.all_topics == []
428
428
 
429
429
 
430
+ @pytest.mark.timeout(5)
431
+ def test_redis_connector_stream_cb_swapped_during_blocking_read(connected_connector):
432
+ """Callbacks (un)registered while the listener is blocked in xread must (not) receive the
433
+ messages that read returns."""
434
+ connector = connected_connector
435
+ cb_mock1 = mock.Mock(spec=[])
436
+ cb_mock2 = mock.Mock(spec=[])
437
+ in_read = threading.Event()
438
+ proceed = threading.Event()
439
+ orig_read = connector._try_read_streams
440
+
441
+ def blocking_read(topics_ids, from_start=False):
442
+ if not from_start:
443
+ in_read.set()
444
+ proceed.wait(timeout=2)
445
+ return orig_read(topics_ids, from_start)
446
+
447
+ with mock.patch.object(connector, "_try_read_streams", blocking_read):
448
+ connector.register(TestStreamEndpoint, cb=cb_mock1, start_thread=False)
449
+ assert in_read.wait(timeout=2)
450
+ connector.unregister("test", cb=cb_mock1)
451
+ connector.register(TestStreamEndpoint, cb=cb_mock2, start_thread=False)
452
+ connector.xadd("test", {"data": 1})
453
+ proceed.set()
454
+ # raises TimeoutError if the message was dropped instead of delivered to cb_mock2
455
+ connector.poll_messages(timeout=2)
456
+ cb_mock1.assert_not_called()
457
+ cb_mock2.assert_called_once_with({"data": 1})
458
+
459
+
430
460
  @pytest.mark.timeout(10)
431
461
  def test_redis_connector_register_stream_identical(connected_connector):
432
462
  connector = connected_connector
@@ -12,7 +12,7 @@ from bec_lib import messages
12
12
  from bec_lib.codecs import BECCodec
13
13
  from bec_lib.device import DeviceBase
14
14
  from bec_lib.devicemanager import DeviceManagerBase
15
- from bec_lib.endpoints import MessageEndpoints
15
+ from bec_lib.endpoints import MessageEndpoints, MessageOp
16
16
  from bec_lib.serialization import MsgpackSerialization, json_ext, msgpack
17
17
 
18
18
 
@@ -214,6 +214,13 @@ def test_enum_serializer(serializer):
214
214
  assert serializer.loads(serializer.dumps(CustomEnum.VALUE1)) == "value1"
215
215
 
216
216
 
217
+ def test_endpoint_info_decodes_to_enum(serializer):
218
+ endpoint = MessageEndpoints.scan_interlock_enabled()
219
+ restored = serializer.loads(serializer.dumps(endpoint))
220
+ assert restored == endpoint
221
+ assert restored.message_op is MessageOp.STREAM
222
+
223
+
217
224
  def test_serializer_encoding_on_failure():
218
225
  """
219
226
  Test that an exception raised during serialization is caught and the original object is returned.
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