Repository navigation
feat!: Bump openjd-* Rust crates to the openjd-model 0.13.0 release - #378
Merged
leongdl merged 3 commits intoOct 15, 2026
Merged
Conversation
openjd-expr 0.10.1 -> 0.12.0, openjd-model 0.11.0 -> 0.13.0 and openjd-sessions 0.7.3 -> 0.8.1. The bindings compile unchanged. Tests that pinned old upstream behaviour now assert the new one: syntax errors use CPython's wording (openjd-rs#429), incompatible list types read "int and string" (#434), and a create_job let failure is a ModelValidationError at the binding's path (#428). New tests cover and/or typing after an unresolved operand (#435) and one-letter URI schemes treated as paths (#424); each fails on the old pins. BREAKING CHANGE: create_job raises ModelValidationError instead of ExpressionError for a let-binding failure. Some templates that decoded before are now rejected: and/or after an unresolved operand types as a union (#435), nested lists with mismatched element types (#434), and parameter-dependent invalid timeouts (#428). Building from source needs Rust 1.97. Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
|
Claude review · advisory Reviewed Open: 0 blocking · 0 should-fix · 0 nit. ✅ Nothing blocking. Fix or reply to each thread; the next revision's review re-checks open threads and resolves those it agrees are handled. Resolving a thread yourself also closes it. Later revisions review only what changed. |
pydantic 2.14 types FieldInfo.annotation as TypeForm[Any], so mypy 2.3 rejects passing it to two walkers declared `model: Type`. They already take Unions and generic aliases and dispatch on typing.get_origin, so `Type` was never accurate. No runtime change. Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
The default path format follows the host, so on Windows the drive-letter cases render with backslashes. Assert both formats explicitly. Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
leongdl
enabled auto-merge (squash)
October 15, 2026 20:02
jericht
approved these changes
Oct 15, 2026
AlexTranAmz
approved these changes
Oct 15, 2026
wyongzhi
approved these changes
Oct 15, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes: n/a (dependency bump for OpenJobDescription/openjd-rs#425 and #438)
What was the problem/requirement? (What/Why)
openjd-rs released openjd-expr 0.11.0, openjd-model 0.12.0 and openjd-sessions 0.8.0 on 2026-10-07 (#425), then openjd-expr 0.12.0, openjd-model 0.13.0 and openjd-sessions 0.8.1 on 2026-10-15 (#438). This package pinned 0.10.1 / 0.11.0 / 0.7.3. openjd-sessions has no source change in either release.
What was the solution? (How)
Bump the three pins. The bindings compile unchanged, and
cargo clippy --all-targets -- -D warningsis clean.Cargo.lockadds 20 transitive crates, mostly ICU crates pulled in byrustpython-ruff_*0.16.10.THIRD-PARTY-LICENSES.txtwas regenerated withscripts/check_third_party_licenses.sh --update. It addsUnicode-3.0, whichdeny.tomlalready allows, and also moves pydantic to 2.14.1 because the script resolves Python dependencies fresh.What is the impact of this change?
letfailure increate_jobisModelValidationErroratsteps[0] -> script -> let[0](orjobEnvironments[i] -> ...), with the caret under the full binding. All carried-forward check failures are reported together.'(' was never closed,unterminated string literal (detected at line 1). MSRV 1.97.int and string. Nested lists with mismatched element types are rejected.10 // (X or Z)withZ = 0no longer raises;(F and S).upper()now validates.C://scenes/a.mais a path, not a URI with schemec.s3://is unchanged.How was this change tested?
hatch run test: 6330 passed, 26 skipped, 5 xfailed, coverage 94.20%. No strict xfail flipped.hatch run lintclean (ruff, black, mypy). Regenerating the licences resolved pydantic 2.14.1, which typesFieldInfo.annotationasTypeForm[Any]. mypy 2.3 then rejected passing it to two walkers in_internal/_variable_reference_validation.pydeclaredmodel: Type. They already handle Unions and generic aliases, so the second commit typesmodelasAny. No runtime change.cargo build --all-targets,cargo clippy --all-targets -- -D warningsandcargo testclean on Rust 1.99.0.Tests updated (they pinned the old upstream behaviour):
TestSyntaxErrorCarets(3),TestUnknownListLiterals::test_incompatible_types_error,TestCreateJobLetFailureMessages(2). New:TestBoolOpAfterAnUnresolvedOperandintest_unresolved_eval.py,TestSingleLetterSchemeIsAPathintest_uri_paths.py.Mutation check: with the pins reverted and the extension rebuilt from source, all 6 updated tests and 6 of 7 new tests fail; the survivor is the
s3://control.What could NOT be verified
timeout/notifyPeriodInSecondshas no new Python test.Was this change documented?
No spec text describes
create_job's let-failure exception type.evaluate_let_bindings, whichspecs/python-model-interface.mddocuments, is unchanged upstream.Is this a breaking change?
Yes. Callers catching
ExpressionErrorfromcreate_jobfor aletfailure now getModelValidationError. Templates may now be rejected that were accepted before: and/or expressions after an unresolved operand that fail for some member of the union (#435), list literals of lists with mismatched element types (#434), and parameter-dependent invalid timeouts, notify periods or cancelation modes (#428).Does this change impact security?
No.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.