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.
- {labcode-0.10.0 → labcode-0.10.1}/CHANGELOG.md +19 -0
- {labcode-0.10.0 → labcode-0.10.1}/PKG-INFO +4 -4
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/PKG-INFO +4 -4
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/requires.txt +3 -3
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/scm_version.json +2 -2
- {labcode-0.10.0 → labcode-0.10.1}/pyproject.toml +12 -5
- {labcode-0.10.0 → labcode-0.10.1}/.github/workflows/ci.yml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/.github/workflows/publish.yml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/.gitignore +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/LICENSE +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/MANIFEST.in +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/README.md +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/docs/SPECIFICATIONS.md +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/README.md +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/lads_plate_cycle.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/lads_seal.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.observation.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.plan.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/plate_line.svg +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.observation.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.plan.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/shared_bench.svg +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.observation.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.plan.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/outputs/sila2_plate_cycle.svg +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/plate_line.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/plate_line.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/plate_line.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/preflight_sila2_env.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/render_plate_line.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/render_shared_bench.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/render_sila2_plate_cycle.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/run_all_lads_examples.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/run_all_sila2_examples.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/run_sila2_plate_cycle.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/run_sila2_plate_cycle_no_atc.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/run_sila2_seal.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.afternoon.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.morning.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.run.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/shared_bench.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle.wrapped.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle_no_atc.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle_no_atc.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_plate_cycle_no_atc.wrapped.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.boundary.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/examples/sila2_seal.wrapped.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/__init__.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/__main__.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/_child.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/backend.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/cli.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/connections.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/dialect.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/extension.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/idgen.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/lads.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/lads_commands.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/lads_unit.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/objectid.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/otel.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/otel_sila2.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/probe.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/py.typed +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/record.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/run_cli.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/runner.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/sila2.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/sila2_commands.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode/sila2_instrument.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/SOURCES.txt +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/dependency_links.txt +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/entry_points.txt +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/scm_file_list.json +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/labcode.egg-info/top_level.txt +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/setup.cfg +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/device_script.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/device_script.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/dispense_read.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/joint.run.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/replenishment.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/reroute_device.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/reroute_transporter.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/transport.env.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/fixtures/transport.workflow.yaml +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_backend.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_cli.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_dialect.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_joint.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_lads.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_lads_unit.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_objectid.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel_child.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel_grpc.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_otel_sila2.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_probe.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_record.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_recording.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_run_cli.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_sila2.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_sila2_commands.py +0 -0
- {labcode-0.10.0 → labcode-0.10.1}/tests/test_sila2_instrument.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|
|
@@ -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-
|
|
66
|
-
# together:
|
|
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.
|
|
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
|
|
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
|
|
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
|