mccode-plumber 0.13.1__tar.gz → 0.13.3__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 (46) hide show
  1. {mccode_plumber-0.13.1/src/mccode_plumber.egg-info → mccode_plumber-0.13.3}/PKG-INFO +3 -3
  2. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/pyproject.toml +2 -2
  3. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/orchestrate.py +2 -2
  4. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/splitrun.py +1 -1
  5. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3/src/mccode_plumber.egg-info}/PKG-INFO +3 -3
  6. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber.egg-info/requires.txt +2 -2
  7. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/tests/test_splitrun.py +28 -15
  8. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/.github/workflows/pip.yml +0 -0
  9. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/.github/workflows/wheels.yml +0 -0
  10. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/.gitignore +0 -0
  11. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/README.md +0 -0
  12. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/setup.cfg +0 -0
  13. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/__init__.py +0 -0
  14. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/conductor.py +0 -0
  15. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/epics.py +0 -0
  16. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/CommandChannel.py +0 -0
  17. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/CommandHandler.py +0 -0
  18. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/CommandStatus.py +0 -0
  19. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/InThreadStatusTracker.py +0 -0
  20. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/JobHandler.py +0 -0
  21. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/JobStatus.py +0 -0
  22. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/KafkaTopicUrl.py +0 -0
  23. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/StateExtractor.py +0 -0
  24. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/WorkerFinder.py +0 -0
  25. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/WorkerJobPool.py +0 -0
  26. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/WorkerStatus.py +0 -0
  27. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/WriteJob.py +0 -0
  28. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/file_writer_control/__init__.py +0 -0
  29. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/forwarder.py +0 -0
  30. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/kafka.py +0 -0
  31. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/__init__.py +0 -0
  32. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/efu.py +0 -0
  33. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/ensure.py +0 -0
  34. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/epics.py +0 -0
  35. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/forwarder.py +0 -0
  36. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/manager.py +0 -0
  37. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/manage/writer.py +0 -0
  38. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/mccode.py +0 -0
  39. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/utils.py +0 -0
  40. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber/writer.py +0 -0
  41. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber.egg-info/SOURCES.txt +0 -0
  42. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber.egg-info/dependency_links.txt +0 -0
  43. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber.egg-info/entry_points.txt +0 -0
  44. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/src/mccode_plumber.egg-info/top_level.txt +0 -0
  45. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/tests/test_epics.py +0 -0
  46. {mccode_plumber-0.13.1 → mccode_plumber-0.13.3}/tests/test_writer.py +0 -0
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mccode-plumber
3
- Version: 0.13.1
3
+ Version: 0.13.3
4
4
  Author-email: Gregory Tucker <gregory.tucker@ess.eu>
5
5
  Classifier: License :: OSI Approved :: BSD License
6
6
  Description-Content-Type: text/markdown
7
7
  Requires-Dist: p4p
8
8
  Requires-Dist: kafka-python>=2.2.11
9
9
  Requires-Dist: ess-streaming-data-types>=0.14.0
10
- Requires-Dist: restage>=0.8.1
10
+ Requires-Dist: restage>=0.8.2
11
11
  Requires-Dist: mccode-to-kafka>=0.2.2
12
- Requires-Dist: moreniius>=0.5.0
12
+ Requires-Dist: moreniius>=0.5.1
13
13
  Requires-Dist: icecream
14
14
  Requires-Dist: ephemeral-port-reserve
15
15
 
@@ -8,9 +8,9 @@ dependencies = [
8
8
  'p4p',
9
9
  'kafka-python>=2.2.11',
10
10
  'ess-streaming-data-types>=0.14.0',
11
- 'restage>=0.8.1',
11
+ 'restage>=0.8.2',
12
12
  'mccode-to-kafka>=0.2.2',
13
- 'moreniius>=0.5.0',
13
+ 'moreniius>=0.5.1',
14
14
  'icecream',
15
15
  'ephemeral-port-reserve',
16
16
  ]
@@ -357,9 +357,9 @@ def main():
357
357
  from restage.splitrun import parse_splitrun
358
358
  from mccode_plumber.splitrun import monitors_to_kafka_callback_with_arguments
359
359
  args, parameters, precision = parse_splitrun(make_splitrun_nexus_parser())
360
- instr = get_mcstas_instr(args.instrument[0])
360
+ instr = get_mcstas_instr(args.instrument)
361
361
 
362
- structure = load_file_json(args.structure if args.structure else Path(args.instrument[0]).with_suffix('.json'))
362
+ structure = load_file_json(args.structure if args.structure else Path(args.instrument).with_suffix('.json'))
363
363
  broker = 'localhost:9092'
364
364
  monitor_source = 'mccode-to-kafka'
365
365
  callback_topics = get_topics_json(structure) # all structure-topics might be monitor topics?
@@ -27,6 +27,6 @@ def main():
27
27
  from .mccode import get_mcstas_instr
28
28
  from restage.splitrun import splitrun_args, parse_splitrun
29
29
  args, parameters, precision = parse_splitrun(make_parser())
30
- instr = get_mcstas_instr(args.instrument[0])
30
+ instr = get_mcstas_instr(args.instrument)
31
31
  callback, callback_args = monitors_to_kafka_callback_with_arguments(args.broker, args.source, args.topic)
32
32
  return splitrun_args(instr, parameters, precision, args, callback=callback, callback_arguments=callback_args)
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mccode-plumber
3
- Version: 0.13.1
3
+ Version: 0.13.3
4
4
  Author-email: Gregory Tucker <gregory.tucker@ess.eu>
5
5
  Classifier: License :: OSI Approved :: BSD License
6
6
  Description-Content-Type: text/markdown
7
7
  Requires-Dist: p4p
8
8
  Requires-Dist: kafka-python>=2.2.11
9
9
  Requires-Dist: ess-streaming-data-types>=0.14.0
10
- Requires-Dist: restage>=0.8.1
10
+ Requires-Dist: restage>=0.8.2
11
11
  Requires-Dist: mccode-to-kafka>=0.2.2
12
- Requires-Dist: moreniius>=0.5.0
12
+ Requires-Dist: moreniius>=0.5.1
13
13
  Requires-Dist: icecream
14
14
  Requires-Dist: ephemeral-port-reserve
15
15
 
@@ -1,8 +1,8 @@
1
1
  p4p
2
2
  kafka-python>=2.2.11
3
3
  ess-streaming-data-types>=0.14.0
4
- restage>=0.8.1
4
+ restage>=0.8.2
5
5
  mccode-to-kafka>=0.2.2
6
- moreniius>=0.5.0
6
+ moreniius>=0.5.1
7
7
  icecream
8
8
  ephemeral-port-reserve
@@ -1,27 +1,20 @@
1
1
  import unittest
2
+ from mccode_plumber.splitrun import make_parser
3
+ from restage.splitrun import args_fixup
2
4
 
3
- # FIXME These tests exercise internal details of the splitrun parser,
4
- # which we don't depend on since we _always_ call `parse_splitrun({our parser}`)
5
- # which rearranges ArgParse's results before returning
6
- # (args, parameters, precision) therefore, directly checking the ArgParse result
7
- # is fraught and these tests may fail at any internal change in restage
8
- # TODO A future restage release will include an `args_fixup` function that can be used
9
- # to get the correct output args of `parse_splitrun` in our testing here.
10
5
 
11
6
  class SplitrunTestCase(unittest.TestCase):
12
7
  def test_parsing(self):
13
- from mccode_plumber.splitrun import make_parser
14
8
  parser = make_parser()
15
- args = parser.parse_args(['--broker', 'l:9092', '--source', 'm', '-n', '10000', 'inst.h5', '--', 'a=1:4', 'b=2:5'])
9
+ args = args_fixup(parser.parse_args(['--broker', 'l:9092', '--source', 'm', '-n', '10000', 'inst.h5', '--', 'a=1:4', 'b=2:5']))
16
10
  self.assertEqual(args.instrument, 'inst.h5')
17
11
  self.assertEqual(args.broker, 'l:9092')
18
12
  self.assertEqual(args.source, 'm')
19
- self.assertEqual(args.ncount, (None, 10000, None))
13
+ self.assertEqual(args.ncount, 10000)
20
14
  self.assertEqual(args.parameters, ['a=1:4', 'b=2:5'])
21
15
  self.assertFalse(args.parallel)
22
16
 
23
17
  def test_mixed_order_throws(self):
24
- from mccode_plumber.splitrun import make_parser
25
18
  parser = make_parser()
26
19
  parser.prog = "{{This failed before but works now? Why did it stop throwing?}}"
27
20
  pa = parser.parse_args
@@ -39,18 +32,38 @@ class SplitrunTestCase(unittest.TestCase):
39
32
  self.assertEqual(sort_args(['inst.h5', '-n', '10000', 'a=1:4', 'b=2:5']), ['-n', '10000', 'inst.h5', 'a=1:4', 'b=2:5'])
40
33
 
41
34
  def test_sorted_mixed_order_does_not_throw(self):
42
- from mccode_plumber.splitrun import make_parser
43
35
  from mccode_antlr.run.runner import sort_args
44
36
  parser = make_parser()
45
- args = parser.parse_args(sort_args(['inst.h5', '--broker', 'www.github.com:9093', '--source', 'dev/null',
46
- '-n', '123', '--parallel', '--', 'a=1:4', 'b=2:5']))
37
+ args = args_fixup(parser.parse_args(sort_args(['inst.h5', '--broker', 'www.github.com:9093', '--source', 'dev/null',
38
+ '-n', '123', '--parallel', '--', 'a=1:4', 'b=2:5'])))
47
39
  self.assertEqual(args.instrument, 'inst.h5')
48
40
  self.assertEqual(args.broker, 'www.github.com:9093')
49
41
  self.assertEqual(args.source, 'dev/null')
50
- self.assertEqual(args.ncount, (None, 123, None))
42
+ self.assertEqual(args.ncount, 123)
51
43
  self.assertEqual(args.parameters, ['a=1:4', 'b=2:5'])
52
44
  self.assertTrue(args.parallel)
53
45
 
46
+ def test_ncount_limits(self):
47
+ args = args_fixup(make_parser().parse_args([
48
+ 'inst.json', '--broker', 'l:9092', '--source', 'm',
49
+ '-n', '1M', '--nmin', '100k', '--nmax', '1G'
50
+ ]))
51
+ self.assertEqual(args.ncount, 10**6)
52
+ self.assertEqual(args.nmin, 100000)
53
+ self.assertEqual(args.nmax, 10**9)
54
+ args = args_fixup(make_parser().parse_args([
55
+ 'inst.json', '--broker', 'l:9092', '--source', 'm', '-n', '100k]1M[1G'
56
+ ]))
57
+ self.assertEqual(args.ncount, 10 ** 6)
58
+ self.assertEqual(args.nmin, 100000)
59
+ self.assertEqual(args.nmax, 10 ** 9)
60
+ args = args_fixup(make_parser().parse_args([
61
+ 'inst.json', '--broker', 'l:9092', '--source', 'm', '-n', '1-1Ki+Mi'
62
+ ]))
63
+ self.assertEqual(args.ncount, 2**10)
64
+ self.assertEqual(args.nmin, 1)
65
+ self.assertEqual(args.nmax, 2**20)
66
+
54
67
 
55
68
  if __name__ == '__main__':
56
69
  unittest.main()