labcode 0.10.0__tar.gz → 0.10.1__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 (112) hide show
  1. {labcode-0.10.0 → labcode-0.10.1}/CHANGELOG.md +19 -0
  2. {labcode-0.10.0 → labcode-0.10.1}/PKG-INFO +4 -4
  3. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/PKG-INFO +4 -4
  4. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/requires.txt +3 -3
  5. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/scm_version.json +2 -2
  6. {labcode-0.10.0 → labcode-0.10.1}/pyproject.toml +12 -5
  7. {labcode-0.10.0 → labcode-0.10.1}/.github/workflows/ci.yml +0 -0
  8. {labcode-0.10.0 → labcode-0.10.1}/.github/workflows/publish.yml +0 -0
  9. {labcode-0.10.0 → labcode-0.10.1}/.gitignore +0 -0
  10. {labcode-0.10.0 → labcode-0.10.1}/LICENSE +0 -0
  11. {labcode-0.10.0 → labcode-0.10.1}/MANIFEST.in +0 -0
  12. {labcode-0.10.0 → labcode-0.10.1}/README.md +0 -0
  13. {labcode-0.10.0 → labcode-0.10.1}/docs/SPECIFICATIONS.md +0 -0
  14. {labcode-0.10.0 → labcode-0.10.1}/examples/README.md +0 -0
  15. {labcode-0.10.0 → labcode-0.10.1}/examples/lads_plate_cycle.env.yaml +0 -0
  16. {labcode-0.10.0 → labcode-0.10.1}/examples/lads_seal.env.yaml +0 -0
  17. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.boundary.yaml +0 -0
  18. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.observation.yaml +0 -0
  19. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.plan.yaml +0 -0
  20. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.svg +0 -0
  21. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.boundary.yaml +0 -0
  22. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.observation.yaml +0 -0
  23. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.plan.yaml +0 -0
  24. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.svg +0 -0
  25. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.boundary.yaml +0 -0
  26. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.observation.yaml +0 -0
  27. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.plan.yaml +0 -0
  28. {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.svg +0 -0
  29. {labcode-0.10.0 → labcode-0.10.1}/examples/plate_line.boundary.yaml +0 -0
  30. {labcode-0.10.0 → labcode-0.10.1}/examples/plate_line.env.yaml +0 -0
  31. {labcode-0.10.0 → labcode-0.10.1}/examples/plate_line.workflow.yaml +0 -0
  32. {labcode-0.10.0 → labcode-0.10.1}/examples/preflight_sila2_env.py +0 -0
  33. {labcode-0.10.0 → labcode-0.10.1}/examples/render_plate_line.py +0 -0
  34. {labcode-0.10.0 → labcode-0.10.1}/examples/render_shared_bench.py +0 -0
  35. {labcode-0.10.0 → labcode-0.10.1}/examples/render_sila2_plate_cycle.py +0 -0
  36. {labcode-0.10.0 → labcode-0.10.1}/examples/run_all_lads_examples.py +0 -0
  37. {labcode-0.10.0 → labcode-0.10.1}/examples/run_all_sila2_examples.py +0 -0
  38. {labcode-0.10.0 → labcode-0.10.1}/examples/run_sila2_plate_cycle.py +0 -0
  39. {labcode-0.10.0 → labcode-0.10.1}/examples/run_sila2_plate_cycle_no_atc.py +0 -0
  40. {labcode-0.10.0 → labcode-0.10.1}/examples/run_sila2_seal.py +0 -0
  41. {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.afternoon.boundary.yaml +0 -0
  42. {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.env.yaml +0 -0
  43. {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.morning.boundary.yaml +0 -0
  44. {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.run.yaml +0 -0
  45. {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.workflow.yaml +0 -0
  46. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle.boundary.yaml +0 -0
  47. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle.workflow.yaml +0 -0
  48. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle.wrapped.env.yaml +0 -0
  49. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle_no_atc.boundary.yaml +0 -0
  50. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle_no_atc.workflow.yaml +0 -0
  51. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle_no_atc.wrapped.env.yaml +0 -0
  52. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.boundary.yaml +0 -0
  53. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.env.yaml +0 -0
  54. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.workflow.yaml +0 -0
  55. {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.wrapped.env.yaml +0 -0
  56. {labcode-0.10.0 → labcode-0.10.1}/labcode/__init__.py +0 -0
  57. {labcode-0.10.0 → labcode-0.10.1}/labcode/__main__.py +0 -0
  58. {labcode-0.10.0 → labcode-0.10.1}/labcode/_child.py +0 -0
  59. {labcode-0.10.0 → labcode-0.10.1}/labcode/backend.py +0 -0
  60. {labcode-0.10.0 → labcode-0.10.1}/labcode/cli.py +0 -0
  61. {labcode-0.10.0 → labcode-0.10.1}/labcode/connections.py +0 -0
  62. {labcode-0.10.0 → labcode-0.10.1}/labcode/dialect.py +0 -0
  63. {labcode-0.10.0 → labcode-0.10.1}/labcode/extension.py +0 -0
  64. {labcode-0.10.0 → labcode-0.10.1}/labcode/idgen.py +0 -0
  65. {labcode-0.10.0 → labcode-0.10.1}/labcode/lads.py +0 -0
  66. {labcode-0.10.0 → labcode-0.10.1}/labcode/lads_commands.py +0 -0
  67. {labcode-0.10.0 → labcode-0.10.1}/labcode/lads_unit.py +0 -0
  68. {labcode-0.10.0 → labcode-0.10.1}/labcode/objectid.py +0 -0
  69. {labcode-0.10.0 → labcode-0.10.1}/labcode/otel.py +0 -0
  70. {labcode-0.10.0 → labcode-0.10.1}/labcode/otel_sila2.py +0 -0
  71. {labcode-0.10.0 → labcode-0.10.1}/labcode/probe.py +0 -0
  72. {labcode-0.10.0 → labcode-0.10.1}/labcode/py.typed +0 -0
  73. {labcode-0.10.0 → labcode-0.10.1}/labcode/record.py +0 -0
  74. {labcode-0.10.0 → labcode-0.10.1}/labcode/run_cli.py +0 -0
  75. {labcode-0.10.0 → labcode-0.10.1}/labcode/runner.py +0 -0
  76. {labcode-0.10.0 → labcode-0.10.1}/labcode/sila2.py +0 -0
  77. {labcode-0.10.0 → labcode-0.10.1}/labcode/sila2_commands.py +0 -0
  78. {labcode-0.10.0 → labcode-0.10.1}/labcode/sila2_instrument.py +0 -0
  79. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/SOURCES.txt +0 -0
  80. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/dependency_links.txt +0 -0
  81. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/entry_points.txt +0 -0
  82. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/scm_file_list.json +0 -0
  83. {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/top_level.txt +0 -0
  84. {labcode-0.10.0 → labcode-0.10.1}/setup.cfg +0 -0
  85. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/device_script.env.yaml +0 -0
  86. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/device_script.workflow.yaml +0 -0
  87. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/dispense_read.workflow.yaml +0 -0
  88. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/joint.run.yaml +0 -0
  89. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/replenishment.env.yaml +0 -0
  90. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/reroute_device.env.yaml +0 -0
  91. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/reroute_transporter.env.yaml +0 -0
  92. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/transport.env.yaml +0 -0
  93. {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/transport.workflow.yaml +0 -0
  94. {labcode-0.10.0 → labcode-0.10.1}/tests/test_backend.py +0 -0
  95. {labcode-0.10.0 → labcode-0.10.1}/tests/test_cli.py +0 -0
  96. {labcode-0.10.0 → labcode-0.10.1}/tests/test_dialect.py +0 -0
  97. {labcode-0.10.0 → labcode-0.10.1}/tests/test_joint.py +0 -0
  98. {labcode-0.10.0 → labcode-0.10.1}/tests/test_lads.py +0 -0
  99. {labcode-0.10.0 → labcode-0.10.1}/tests/test_lads_unit.py +0 -0
  100. {labcode-0.10.0 → labcode-0.10.1}/tests/test_objectid.py +0 -0
  101. {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel.py +0 -0
  102. {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel_child.py +0 -0
  103. {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel_grpc.py +0 -0
  104. {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel_sila2.py +0 -0
  105. {labcode-0.10.0 → labcode-0.10.1}/tests/test_probe.py +0 -0
  106. {labcode-0.10.0 → labcode-0.10.1}/tests/test_record.py +0 -0
  107. {labcode-0.10.0 → labcode-0.10.1}/tests/test_recording.py +0 -0
  108. {labcode-0.10.0 → labcode-0.10.1}/tests/test_run_cli.py +0 -0
  109. {labcode-0.10.0 → labcode-0.10.1}/tests/test_sila2.py +0 -0
  110. {labcode-0.10.0 → labcode-0.10.1}/tests/test_sila2_commands.py +0 -0
  111. {labcode-0.10.0 → labcode-0.10.1}/tests/test_sila2_instrument.py +0 -0
  112. {labcode-0.10.0 → labcode-0.10.1}/tests/test_structured_labcode.py +0 -0
@@ -6,6 +6,25 @@ specification the section numbers refer to is [`docs/SPECIFICATIONS.md`](docs/SP
6
6
  Releases before 0.9.0 are described in the messages of their `Release vX.Y.Z` commits
7
7
  (`git log --grep '^Release v'`).
8
8
 
9
+ ## 0.10.1 — 2026-10-07
10
+
11
+ labcode follows specification revision 0.5. No code changes; the siblings move.
12
+
13
+ ### Changed — may need your attention
14
+
15
+ - **A composite returns every output it declares.** An output port with no `returns`
16
+ entry is now `output_not_returned`, and a `returns` entry naming no output port is
17
+ `return_port_not_found` (ofplang-validate 0.4). Until now a Pure Data output could go
18
+ unreturned.
19
+ - **The `scheduling` section is gone from the language.** It is now an unknown key, and
20
+ `scheduling_policies` in `features` an unknown feature. Delete the section and the
21
+ feature name; nothing else depended on them, and no plan used them.
22
+ - An Object that comes in at the boundary and is returned as it came is now planned and
23
+ run, moved to the spot its output is bound to (ofplang-schedule 0.13.1, ofplang-run
24
+ 0.13.1).
25
+
26
+ Requires ofplang-validate 0.4, ofplang-schedule 0.13.1 and ofplang-run 0.13.1.
27
+
9
28
  ## 0.10.0 — 2026-10-05
10
29
 
11
30
  labcode runs a protocol repeated over every plate (`map` / `fold`), and stops making up
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labcode
3
- Version: 0.10.0
3
+ Version: 0.10.1
4
4
  Summary: labcode -- a dialect wrapper over the Object-Flow Programming Language toolchain
5
5
  Author-email: Kazunari Kaizu <kwaizu@gmail.com>
6
6
  License-Expression: MIT
@@ -20,9 +20,9 @@ Classifier: Typing :: Typed
20
20
  Requires-Python: >=3.10
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
- Requires-Dist: ofplang-validate<0.4,>=0.3
24
- Requires-Dist: ofplang-schedule<0.14,>=0.13
25
- Requires-Dist: ofplang-run<0.14,>=0.13
23
+ Requires-Dist: ofplang-validate<0.5,>=0.4
24
+ Requires-Dist: ofplang-schedule<0.14,>=0.13.1
25
+ Requires-Dist: ofplang-run<0.14,>=0.13.1
26
26
  Provides-Extra: test
27
27
  Requires-Dist: pytest>=7.0; extra == "test"
28
28
  Requires-Dist: opentelemetry-sdk>=1.20; extra == "test"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labcode
3
- Version: 0.10.0
3
+ Version: 0.10.1
4
4
  Summary: labcode -- a dialect wrapper over the Object-Flow Programming Language toolchain
5
5
  Author-email: Kazunari Kaizu <kwaizu@gmail.com>
6
6
  License-Expression: MIT
@@ -20,9 +20,9 @@ Classifier: Typing :: Typed
20
20
  Requires-Python: >=3.10
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
- Requires-Dist: ofplang-validate<0.4,>=0.3
24
- Requires-Dist: ofplang-schedule<0.14,>=0.13
25
- Requires-Dist: ofplang-run<0.14,>=0.13
23
+ Requires-Dist: ofplang-validate<0.5,>=0.4
24
+ Requires-Dist: ofplang-schedule<0.14,>=0.13.1
25
+ Requires-Dist: ofplang-run<0.14,>=0.13.1
26
26
  Provides-Extra: test
27
27
  Requires-Dist: pytest>=7.0; extra == "test"
28
28
  Requires-Dist: opentelemetry-sdk>=1.20; extra == "test"
@@ -1,6 +1,6 @@
1
- ofplang-validate<0.4,>=0.3
2
- ofplang-schedule<0.14,>=0.13
3
- ofplang-run<0.14,>=0.13
1
+ ofplang-validate<0.5,>=0.4
2
+ ofplang-schedule<0.14,>=0.13.1
3
+ ofplang-run<0.14,>=0.13.1
4
4
 
5
5
  [dev]
6
6
  pytest>=7.0
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.10.0",
2
+ "tag": "0.10.1",
3
3
  "distance": 0,
4
- "node": "geaede720f48ffdbbeec2c2e2500d2ca2242094ee",
4
+ "node": "g1787216e03cd07ec2fe1ed38539ba7006be08494",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-06"
@@ -62,8 +62,15 @@ classifiers = [
62
62
  # every real-lab example already happens on it, and run's own floor requires it anyway
63
63
  # (an older scheduler reports a running refill free before it is).
64
64
  #
65
- # `ofplang-schedule>=0.13`, `ofplang-run>=0.13` and `ofplang-validate>=0.3` are required
66
- # together: a `map` / `fold` over an Array of plates runs from these (the scheduler expands
65
+ # `ofplang-validate>=0.4`, `ofplang-schedule>=0.13.1` and `ofplang-run>=0.13.1` are
66
+ # required together: they implement specification revision 0.5, and `lc` validates at its
67
+ # front door with the one validate and plans and runs with the others, so the three have
68
+ # to agree on what is valid. Under validate 0.3 a composite could leave an output
69
+ # unreturned that the scheduler's reader now refuses, and a `scheduling` section passed
70
+ # that 0.4 calls an unknown key.
71
+ #
72
+ # The `ofplang-schedule>=0.13`, `ofplang-run>=0.13` and `ofplang-validate>=0.3` floors they
73
+ # replace were required together: a `map` / `fold` over an Array of plates runs from these (the scheduler expands
67
74
  # it, the runner reads the expansion and takes an Array of Objects at the boundary one
68
75
  # element per spot, and specification revision 0.4 is what they validate against), and
69
76
  # labcode keys each plate's `_id` by its element. `RunResult.run_warnings`, which `lc run`
@@ -88,9 +95,9 @@ dependencies = [
88
95
  # would pick up the next such sibling and start refusing its own examples. The
89
96
  # bounds cannot protect what is already on PyPI without one, which is why they go
90
97
  # in now rather than at the first breakage.
91
- "ofplang-validate>=0.3,<0.4",
92
- "ofplang-schedule>=0.13,<0.14",
93
- "ofplang-run>=0.13,<0.14",
98
+ "ofplang-validate>=0.4,<0.5",
99
+ "ofplang-schedule>=0.13.1,<0.14",
100
+ "ofplang-run>=0.13.1,<0.14",
94
101
  ]
95
102
 
96
103
  [project.urls]
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