labcode 0.10.5__tar.gz → 0.10.6__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.5 → labcode-0.10.6}/CHANGELOG.md +19 -0
- {labcode-0.10.5 → labcode-0.10.6}/PKG-INFO +3 -3
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/PKG-INFO +3 -3
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/requires.txt +2 -2
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/scm_version.json +2 -2
- {labcode-0.10.5 → labcode-0.10.6}/pyproject.toml +8 -3
- {labcode-0.10.5 → labcode-0.10.6}/.github/workflows/ci.yml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/.github/workflows/publish.yml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/.gitignore +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/LICENSE +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/MANIFEST.in +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/README.md +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/docs/SPECIFICATIONS.md +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/README.md +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/lads_plate_cycle.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/lads_seal.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/plate_line.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/plate_line.observation.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/plate_line.plan.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/plate_line.svg +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/shared_bench.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/shared_bench.observation.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/shared_bench.plan.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/shared_bench.svg +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/sila2_plate_cycle.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/sila2_plate_cycle.observation.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/sila2_plate_cycle.plan.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/outputs/sila2_plate_cycle.svg +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/plate_line.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/plate_line.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/plate_line.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/preflight_sila2_env.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/render_plate_line.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/render_shared_bench.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/render_sila2_plate_cycle.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/run_all_lads_examples.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/run_all_sila2_examples.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/run_sila2_plate_cycle.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/run_sila2_plate_cycle_no_atc.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/run_sila2_seal.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/shared_bench.afternoon.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/shared_bench.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/shared_bench.morning.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/shared_bench.run.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/shared_bench.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_plate_cycle.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_plate_cycle.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_plate_cycle.wrapped.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_plate_cycle_no_atc.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_plate_cycle_no_atc.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_plate_cycle_no_atc.wrapped.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_seal.boundary.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_seal.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_seal.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/examples/sila2_seal.wrapped.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/__init__.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/__main__.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/_child.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/backend.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/cli.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/connections.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/dialect.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/extension.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/idgen.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/lads.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/lads_commands.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/lads_unit.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/objectid.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/otel.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/otel_sila2.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/probe.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/py.typed +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/record.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/run_cli.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/runner.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/sila2.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/sila2_commands.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode/sila2_instrument.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/SOURCES.txt +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/dependency_links.txt +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/entry_points.txt +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/scm_file_list.json +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/labcode.egg-info/top_level.txt +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/setup.cfg +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/device_script.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/device_script.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/dispense_read.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/joint.run.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/replenishment.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/reroute_device.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/reroute_transporter.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/transport.env.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/fixtures/transport.workflow.yaml +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_backend.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_cli.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_dialect.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_joint.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_lads.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_lads_unit.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_objectid.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_otel.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_otel_child.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_otel_grpc.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_otel_sila2.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_probe.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_record.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_recording.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_run_cli.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_sila2.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_sila2_commands.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/tests/test_sila2_instrument.py +0 -0
- {labcode-0.10.5 → labcode-0.10.6}/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.6 — 2026-10-13
|
|
10
|
+
|
|
11
|
+
No code changes; the siblings move.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **A replan after a branch or loop decided during the run is always constructible.** A
|
|
16
|
+
branch decided on the arm not assumed, or a loop going on, used to leave the scheduler
|
|
17
|
+
with only a search; the plan it replaces, with that region's new work spliced in, is
|
|
18
|
+
now its starting point, and what a replan gets if the search runs out of time
|
|
19
|
+
(ofplang-schedule 0.18, ofplang-run 0.18, design.md D67).
|
|
20
|
+
|
|
21
|
+
### Fixed (already picked up by 0.10.5 through ofplang-schedule 0.17.1 and 0.17.2)
|
|
22
|
+
|
|
23
|
+
- A replan could come back infeasible -- stopping every job of a run -- when work that
|
|
24
|
+
ran late left an Object resting where an open branch keeps its spots, or when a branch
|
|
25
|
+
inside a loop was decided before the loop's own reading and another job took the spot
|
|
26
|
+
the loop's next invocation needs.
|
|
27
|
+
|
|
9
28
|
## 0.10.5 — 2026-10-13
|
|
10
29
|
|
|
11
30
|
No code changes; the siblings move.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: labcode
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.6
|
|
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
|
|
@@ -21,8 +21,8 @@ Requires-Python: >=3.10
|
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
Requires-Dist: ofplang-validate<0.5,>=0.4.1
|
|
24
|
-
Requires-Dist: ofplang-schedule<0.
|
|
25
|
-
Requires-Dist: ofplang-run<0.
|
|
24
|
+
Requires-Dist: ofplang-schedule<0.19,>=0.18
|
|
25
|
+
Requires-Dist: ofplang-run<0.19,>=0.18
|
|
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.6
|
|
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
|
|
@@ -21,8 +21,8 @@ Requires-Python: >=3.10
|
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
Requires-Dist: ofplang-validate<0.5,>=0.4.1
|
|
24
|
-
Requires-Dist: ofplang-schedule<0.
|
|
25
|
-
Requires-Dist: ofplang-run<0.
|
|
24
|
+
Requires-Dist: ofplang-schedule<0.19,>=0.18
|
|
25
|
+
Requires-Dist: ofplang-run<0.19,>=0.18
|
|
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,7 +62,12 @@ 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.
|
|
65
|
+
# `ofplang-schedule>=0.18` and `ofplang-run>=0.18` move together: a replan after a branch
|
|
66
|
+
# decided during the run on the arm not assumed, or a loop going on, is constructed from
|
|
67
|
+
# the plan it replaces, so a run whose solver runs out of budget no longer stops there
|
|
68
|
+
# (ofplang-schedule design.md D67); run 0.18 needs schedule 0.18.
|
|
69
|
+
#
|
|
70
|
+
# `ofplang-schedule>=0.17` and `ofplang-run>=0.17` moved together: a `do_while` whose
|
|
66
71
|
# condition a script reads during the run runs from these, and a branch or loop decided
|
|
67
72
|
# only during the run keeps the spots it may yet need while it is open, so jobs sharing a
|
|
68
73
|
# machine no longer lock on an assumed outcome (ofplang-schedule design.md D65, D66);
|
|
@@ -120,8 +125,8 @@ dependencies = [
|
|
|
120
125
|
# bounds cannot protect what is already on PyPI without one, which is why they go
|
|
121
126
|
# in now rather than at the first breakage.
|
|
122
127
|
"ofplang-validate>=0.4.1,<0.5",
|
|
123
|
-
"ofplang-schedule>=0.
|
|
124
|
-
"ofplang-run>=0.
|
|
128
|
+
"ofplang-schedule>=0.18,<0.19",
|
|
129
|
+
"ofplang-run>=0.18,<0.19",
|
|
125
130
|
]
|
|
126
131
|
|
|
127
132
|
[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
|