Repository navigation
Commit 32fed4b
authored
feat!: Bump openjd-* Rust crates to the openjd-model 0.11.0 release (#375)
* feat!: Bump openjd-* Rust crates to the openjd-model 0.11.0 release
openjd-rs released openjd-expr 0.10.1, openjd-model 0.10.1 and
openjd-sessions 0.7.2 on 2026-09-30 (OpenJobDescription/openjd-rs#416),
then openjd-model 0.11.0 and openjd-sessions 0.7.3 on 2026-10-03
(#420). This package pinned 0.10.0 / 0.10.0 / 0.7.1. Cargo.lock moves
only the three crates; no transitive dependency changed. openjd-sessions
has no source change in either release.
One public Rust API change breaks compilation: #419 makes
template::SimpleAction::script a FormatString. The constructor and the
getter of PySimpleAction were the two errors. Following #373's
capability-name precedent, the Python-facing SimpleAction.script is now
an openjd.expr.FormatString in both directions, like its args/timeout
siblings and the EmbeddedFile.data it desugars to. The new Rust-side
SimpleActionKind / simple_actions / simple_action helpers are not
exposed: nothing here consumes them, and step.bash..node already cover
introspection. resolve_syntax_sugar changed signature but the bindings
never call it.
Behaviour changes, each measured through this package's Python API
against both pins, with expectations copied from upstream assertions:
- #419: bash/python/cmd/powershell/node steps are validated at decode
with errors at the authored path (steps[0] -> bash -> args[1]). On
0.10.0, 17 of 21 upstream rejection cases decoded; 9 failed later at
create_job at the desugared path, 8 were never rejected. A malformed
script now fails at parse (DecodeValidationError). Non-ASCII step
names no longer raise PanicException (ASCII-only sanitizer, named in
the squash body but not the changelog).
- #419, also named only in the squash body: the comprehension-variable
check now covers a step script's authored embeddedFiles[].data. A
comprehension over a let-bound name in data decoded on 0.10.0 and is
now rejected at steps[0] -> script -> embeddedFiles[0] -> data. The
same check on command and args is unchanged. v0 agrees on outcome and
path in 4/4 cases.
- #421: LIST[PATH] defaults must be relative and stay inside the
template directory, are joined to it and normalized, element by
element; relative submitted PATH / LIST[PATH] values are joined and
normalized; defaults are constraint-checked after the join, including
environment-template parameters. Absolute submitted values are
returned as written. create_job without a preceding preprocess is
unchanged (measured, 7 cases identical on both pins).
- #410: a job environment's let failure now reads like a step script's
("script let binding 'q': ..."); the missing-extension message lists
extensions sorted.
- #410/#417/#418: openjd.expr memory accounting; every upstream byte
figure reproduces. Some expressions that fit now exceed the limit
(coercion to the target type, string slices, attribute base lookups)
and some that failed now fit. No existing Python test pinned a moved
figure.
Unreachable from Python: URI-allowed LIST[PATH] rows (the binding
hard-codes allow_uri_path_values=false, create_job_fns.rs:158; upstream
test_create_job.rs covers them). The Windows rows of #421 are added as
win32-only tests and were not run locally.
v0 divergence: v0 preprocess_job_parameters returns LIST[PATH] defaults
unjoined and does not normalize submitted '..'. openjd-specifications#191
(Template Schemas 2.2, 2.12) makes v1's behaviour normative. Recorded as
two strict xfails in test_known_gaps.py and in the model report; fixing
v0 is a separate change. On the #419 decode cases v0 agrees with v1 on
outcome in 22/24 and on field path in 16/24; the two outcome
differences are v0 rejecting Task.File.<step>_script, which predates
this bump.
Verified: 6323 passed / 26 skipped / 5 xfailed, coverage 94.22%. The +2
skipped are the Windows-only tests, the +2 xfailed the v0 gaps; no
strict xfail flipped. ruff, black, mypy, cargo fmt, build, clippy
-D warnings, test and test --doc clean. THIRD-PARTY-LICENSES.txt
regenerated (three version lines) and verify mode passes.
Mutants, each rebuilt, bytecode cleared, restored by checksum: reverting
the pins and the adaptation kills 62 of 79 new or edited cases (the 17
survivors are controls whose behaviour 0.10.0 shares); the getter
returning str kills 4; the constructor accepting str kills 4.
Not done: the three-auditor review of the new tests
(regression-workflow section 3) was not dispatched; the mutation
results above are the author's own. TestExtremeSliceSteps pins the #418
overflow fix only in a build with overflow checks; a hatch env install
of 0.10.0 already returned the right answer.
BREAKING CHANGE: SimpleAction.script is an openjd.expr.FormatString
instead of str, and SimpleAction(script=...) requires one. LIST[PATH]
defaults must be relative and are joined with the job template
directory; relative submitted PATH values are normalized.
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
* chore(deps): Bump pyo3 to 0.29.3 for clippy 1.99
Rust 1.99.0 (stable since 2026-10-01) makes clippy flag
clone_on_copy inside pyo3 0.29.2's #[pyclass(from_py_object)]
expansion on Copy enums: 13 errors, which fail Rust Quality's
clippy -D warnings step on every PR. pyo3 0.29.3 fixes the
generated code (PyO3/pyo3#6309).
Raise the floor in rust-bindings/Cargo.toml to 0.29.3 so a fresh
resolve cannot pick the affected release. THIRD-PARTY-LICENSES.txt
regenerated; only the four pyo3 version lines changed.
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
---------
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>1 parent 27ecd91 commit 32fed4b
13 files changed
Lines changed: 1200 additions & 36 deletions
File tree
- reports
- rust-bindings
- src/model
- specs
- src/openjd
- test/openjd
- expr
- model_v1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2741 | 2741 | | |
2742 | 2742 | | |
2743 | 2743 | | |
2744 | | - | |
2745 | | - | |
2746 | | - | |
| 2744 | + | |
| 2745 | + | |
| 2746 | + | |
2747 | 2747 | | |
2748 | 2748 | | |
2749 | 2749 | | |
2750 | | - | |
2751 | | - | |
2752 | | - | |
2753 | | - | |
| 2750 | + | |
| 2751 | + | |
| 2752 | + | |
| 2753 | + | |
2754 | 2754 | | |
2755 | 2755 | | |
2756 | 2756 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
345 | 345 | | |
346 | 346 | | |
347 | 347 | | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
348 | 356 | | |
349 | 357 | | |
350 | 358 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
17 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1288 | 1288 | | |
1289 | 1289 | | |
1290 | 1290 | | |
1291 | | - | |
| 1291 | + | |
1292 | 1292 | | |
1293 | 1293 | | |
1294 | 1294 | | |
| |||
1297 | 1297 | | |
1298 | 1298 | | |
1299 | 1299 | | |
1300 | | - | |
| 1300 | + | |
1301 | 1301 | | |
1302 | 1302 | | |
1303 | 1303 | | |
| |||
1306 | 1306 | | |
1307 | 1307 | | |
1308 | 1308 | | |
1309 | | - | |
1310 | | - | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
1311 | 1313 | | |
1312 | 1314 | | |
1313 | 1315 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
281 | 290 | | |
282 | 291 | | |
283 | 292 | | |
| |||
999 | 1008 | | |
1000 | 1009 | | |
1001 | 1010 | | |
1002 | | - | |
| 1011 | + | |
1003 | 1012 | | |
1004 | 1013 | | |
1005 | 1014 | | |
1006 | 1015 | | |
1007 | 1016 | | |
1008 | 1017 | | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
1009 | 1022 | | |
1010 | 1023 | | |
1011 | 1024 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2253 | 2253 | | |
2254 | 2254 | | |
2255 | 2255 | | |
2256 | | - | |
| 2256 | + | |
2257 | 2257 | | |
2258 | 2258 | | |
2259 | 2259 | | |
| |||
2267 | 2267 | | |
2268 | 2268 | | |
2269 | 2269 | | |
2270 | | - | |
| 2270 | + | |
2271 | 2271 | | |
2272 | 2272 | | |
2273 | 2273 | | |
| |||
0 commit comments