mccode-plumber 0.15.1__tar.gz → 0.16.0__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 (53) hide show
  1. {mccode_plumber-0.15.1/src/mccode_plumber.egg-info → mccode_plumber-0.16.0}/PKG-INFO +1 -1
  2. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/forwarder.py +14 -4
  3. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/writer.py +8 -0
  4. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0/src/mccode_plumber.egg-info}/PKG-INFO +1 -1
  5. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/test_writer.py +5 -2
  6. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/.github/dependabot.yml +0 -0
  7. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/.github/workflows/pip.yml +0 -0
  8. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/.github/workflows/wheels.yml +0 -0
  9. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/.gitignore +0 -0
  10. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/README.md +0 -0
  11. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/mypy.ini +0 -0
  12. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/pyproject.toml +0 -0
  13. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/setup.cfg +0 -0
  14. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/__init__.py +0 -0
  15. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/conductor.py +0 -0
  16. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/epics.py +0 -0
  17. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/epics_watcher.py +0 -0
  18. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/CommandChannel.py +0 -0
  19. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/CommandHandler.py +0 -0
  20. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/CommandStatus.py +0 -0
  21. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/InThreadStatusTracker.py +0 -0
  22. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/JobHandler.py +0 -0
  23. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/JobStatus.py +0 -0
  24. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/KafkaTopicUrl.py +0 -0
  25. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/StateExtractor.py +0 -0
  26. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/WorkerFinder.py +0 -0
  27. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/WorkerJobPool.py +0 -0
  28. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/WorkerStatus.py +0 -0
  29. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/WriteJob.py +0 -0
  30. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/file_writer_control/__init__.py +0 -0
  31. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/kafka.py +0 -0
  32. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/__init__.py +0 -0
  33. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/efu.py +0 -0
  34. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/ensure.py +0 -0
  35. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/epics.py +0 -0
  36. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/forwarder.py +0 -0
  37. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/manager.py +0 -0
  38. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/orchestrate.py +0 -0
  39. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/manage/writer.py +0 -0
  40. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/mccode.py +0 -0
  41. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/splitrun.py +0 -0
  42. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber/utils.py +0 -0
  43. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber.egg-info/SOURCES.txt +0 -0
  44. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber.egg-info/dependency_links.txt +0 -0
  45. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber.egg-info/entry_points.txt +0 -0
  46. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber.egg-info/requires.txt +0 -0
  47. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/src/mccode_plumber.egg-info/top_level.txt +0 -0
  48. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/fake_efu.py +0 -0
  49. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/fake_manager.py +0 -0
  50. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/test_epics.py +0 -0
  51. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/test_management.py +0 -0
  52. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/test_orchestration_utils.py +0 -0
  53. {mccode_plumber-0.15.1 → mccode_plumber-0.16.0}/tests/test_splitrun.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mccode-plumber
3
- Version: 0.15.1
3
+ Version: 0.16.0
4
4
  Author-email: Gregory Tucker <gregory.tucker@ess.eu>
5
5
  Classifier: License :: OSI Approved :: BSD License
6
6
  Classifier: Programming Language :: Python :: 3
@@ -7,6 +7,7 @@ list of EPICS PVs to monitor.
7
7
  Alternatively, the same functionality can be accessed from Python using the configure_forwarder and reset_forwarder
8
8
  functions. Which take PV information and Forwarder/Kafka configuration as arguments.
9
9
  """
10
+ from mccode_antlr.common import InstrumentParameter
10
11
 
11
12
 
12
13
  def normalise_pvs(pvs: list[dict], config=None, prefix=None, topic=None):
@@ -59,10 +60,19 @@ def reset_forwarder(pvs: list[dict], config=None, prefix=None, topic=None):
59
60
  return pvs
60
61
 
61
62
 
62
- def forwarder_partial_streams(prefix, topic, parameters):
63
- names = [p.name for p in parameters]
64
- if 'mcpl_filename' not in names:
65
- names.append("mcpl_filename")
63
+ def forwarder_partial_streams(prefix: str, topic: str, parameters: list[InstrumentParameter]):
64
+ from mccode_antlr.common import DataType
65
+ # The streaming-data-type f144 only supports numeric data, so we need to
66
+ # filter out string-valued data types to avoid annoying error messages in the
67
+ # forwarder's log output.
68
+ names = [p.name for p in parameters if p.value.data_type is not DataType.str]
69
+
70
+ # splitrun adds an instrument parameter named 'mcpl_filename', but we also
71
+ # can not forward this since it is a string-valued parameter.
72
+ #
73
+ #if 'mcpl_filename' not in names:
74
+ # names.append("mcpl_filename")
75
+
66
76
  # Minimal information used by the forwarder for stream setup:
67
77
  partial = [dict(source=f'{prefix}{n}', module='f144', topic=topic) for n in names]
68
78
  return partial
@@ -311,8 +311,16 @@ def construct_writer_pv_dicts(instr: Path | str, prefix: str, topic: str):
311
311
 
312
312
 
313
313
  def construct_writer_pv_dicts_from_parameters(parameters, prefix: str, topic: str):
314
+ from mccode_antlr.common import DataType
315
+
314
316
  def strip_quotes(s):
315
317
  return s[1:-1] if s is not None and len(s) > 2 and (s[0] == s[-1] == '"' or s[0] == s[-1] == "'") else s
318
+
319
+ # Remove string-valued parameters from the provided list since they are not
320
+ # supported by streaming-data-type f144. In the future we could specify a different
321
+ # module for them instead.
322
+ parameters = [p for p in parameters if p.value.data_type is not DataType.str]
323
+
316
324
  return [dict(name=p.name, dtype=p.value.data_type.name, source=f'{prefix}{p.name}', topic=topic,
317
325
  description=parameter_description(p), module='f144', unit=strip_quotes(p.unit)) for p in parameters]
318
326
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mccode-plumber
3
- Version: 0.15.1
3
+ Version: 0.16.0
4
4
  Author-email: Gregory Tucker <gregory.tucker@ess.eu>
5
5
  Classifier: License :: OSI Approved :: BSD License
6
6
  Classifier: Programming Language :: Python :: 3
@@ -61,10 +61,13 @@ class WriterUnitsTestCase(unittest.TestCase):
61
61
  def test_parse(self):
62
62
  from mccode_plumber.writer import construct_writer_pv_dicts_from_parameters
63
63
  params = construct_writer_pv_dicts_from_parameters(self.instr.parameters, 'mcstas:', 'topic')
64
- self.assertEqual(len(params), 4)
65
- for p, x in zip(params, [('a', 'Hz'), ('b', 'm'), ('c', None), ('d', None)]):
64
+ # Only non-string valued parameters should be extracted since f144 only
65
+ # supports numeric-valued data
66
+ self.assertEqual(len(params), 3)
67
+ for p, x in zip(params, [('a', 'Hz'), ('b', 'm'), ('c', None)]):
66
68
  self.assertEqual(p['name'], x[0])
67
69
  self.assertEqual(p['unit'], x[1])
70
+ self.assertEqual(p['module'], 'f144')
68
71
 
69
72
 
70
73
  if __name__ == '__main__':