You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Upgrade to cel-rust 0.14.5, refresh dependencies, bump CI actions (#42)
## Why
cel-rust 0.14.4/0.14.5 change behaviour the wrapper has to follow, and the Python and Actions dependencies had drifted.
## Upstream behaviour now reflected
- **Reserved CEL words are rejected as identifiers** (`var`, `let`, `if`, ...). Spec-correct, but user-visible: `var == "x"` is now a parse-time `ValueError` even if the context defines `var`. Tests that used `var` are renamed; a parametrised test pins all 17 words. Called out first in the CHANGELOG.
- **`type()` is native** and returns a first-class type value, so `type(1u) == uint` and `type(null) == null_type` work inside expressions. Upstream converts a type value to its name when returning it, so Python receives `"int"`. The string-returning `type()` and identity `dyn()` shims are removed from `cel.stdlib` (built-ins already shadowed them). Visible differences: `uint` reports `"uint"` not `"int"`, `null` reports `"null_type"`.
- **`int()`/`uint()` reject out-of-range conversions.** Mapped to `OverflowError`, matching the existing arithmetic overflow mapping.
- Pinned: negative hex literals, stacked unary operators, bytes-literal escape rules, optional equality by content.
## Dependencies
- cel 0.14.3 → 0.14.5 (minimum now 0.14.5) plus in-range transitive bumps. 83 crates checked against OSV: no advisories.
- `tool.uv.dev-dependencies` → `dependency-groups.dev` (deprecation warning); `uv.lock` refreshed (ruff 0.16.6 stays inside the 0.16 pin).
- Actions: checkout v7, setup-python v7, upload-artifact v7, download-artifact v8 (digest mismatch now fails the job), setup-uv v10 (cache disabled on fork PRs and Dependabot rollups).
## Verification
`cargo fmt --check`, `cargo clippy -D warnings`, `cargo test`, pytest (510 passed, 1 skipped, 5 xfailed; was 482/6 xfailed), ruff format/check, mypy, `ty` probe, and the executed doc snippets all pass locally.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
7
7
**Fast, Safe, and Expressive evaluation of Google's Common Expression Language (CEL) in Python, powered by Rust.**
8
8
9
-
The Common Expression Language (CEL) is a non-Turing complete language designed for simplicity, speed, and safety. This Python package wraps the Rust implementation [cel](https://crates.io/crates/cel) v0.14.0, providing microsecond-level expression evaluation with seamless Python integration.
9
+
The Common Expression Language (CEL) is a non-Turing complete language designed for simplicity, speed, and safety. This Python package wraps the Rust implementation [cel](https://crates.io/crates/cel) v0.14.5, providing microsecond-level expression evaluation with seamless Python integration.
0 commit comments