diff --git a/.github/workflows/build-common-expression-language.yml b/.github/workflows/build-common-expression-language.yml index c039b4c5a55..9da692de967 100644 --- a/.github/workflows/build-common-expression-language.yml +++ b/.github/workflows/build-common-expression-language.yml @@ -69,7 +69,10 @@ jobs: path: python-wheels persist-credentials: false + # <= 0.9.0 need the typing.Annotated backport; 0.10.0 ships it (upstream + # 212cf00), so later versions may have no patches/ directory at all. - name: Patch common-expression-language source + if: hashFiles(format('python-wheels/patches/common-expression-language/{0}/*.patch', env.CEL_VERSION)) != '' run: git apply python-wheels/patches/common-expression-language/${{ env.CEL_VERSION }}/*.patch - name: Build and test wheel diff --git a/docs/packages/common-expression-language.yaml b/docs/packages/common-expression-language.yaml index 76c8b85e188..57eb1a1ffc0 100644 --- a/docs/packages/common-expression-language.yaml +++ b/docs/packages/common-expression-language.yaml @@ -24,3 +24,5 @@ versions: - filename: common_expression_language-0.8.0-cp315-cp315t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl sha256: 665d9cfc86311ce26d1d1790f0a70c0aba5122d96294bc2f3e88064874376073 requires-python: '>=3.11' +- version: 0.9.0 +- version: 0.10.0 diff --git a/patches/common-expression-language/0.9.0/0001-cli-import-Annotated-from-typing.patch b/patches/common-expression-language/0.9.0/0001-cli-import-Annotated-from-typing.patch new file mode 100644 index 00000000000..60f0870d03f --- /dev/null +++ b/patches/common-expression-language/0.9.0/0001-cli-import-Annotated-from-typing.patch @@ -0,0 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Sun, 4 Oct 2026 11:30:00 +0000 +Subject: [PATCH] cli: import Annotated from typing, not typing_extensions + +Upstream-Status: Backport [https://github.com/hardbyte/python-common-expression-language/commit/212cf00c48b6dd1a7fe35ae092eee414b1825f01] + +cel/__init__.py imports cel.cli, which imports Annotated from +typing_extensions. typing_extensions is not a declared dependency; it +used to arrive transitively through typer, but typer 0.21.2 dropped it, +so `import cel` fails with "No module named 'typing_extensions'" in any +clean environment. This reproduces on every architecture, not just +riscv64. + +Upstream fixed it in 212cf00 ("Fix `import cel` failing in a clean +install", #44, released in 0.10.0) by importing Annotated from the +standard library's typing module (Python >= 3.9; the package requires +>= 3.11). This backports the python/cel/cli.py hunk of that commit. + +Signed-off-by: Ludovic Henry +--- + python/cel/cli.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/python/cel/cli.py b/python/cel/cli.py +index 22ea1e1..216cc38 100644 +--- a/python/cel/cli.py ++++ b/python/cel/cli.py +@@ -16,7 +16,7 @@ import sys + import time + from importlib.metadata import PackageNotFoundError, version + from pathlib import Path +-from typing import Any, Dict, Optional, Tuple ++from typing import Annotated, Any, Dict, Optional, Tuple + + import typer + +@@ -35,7 +35,6 @@ from rich.console import Console + from rich.panel import Panel + from rich.syntax import Syntax + from rich.table import Table +-from typing_extensions import Annotated + + # Import directly from relative modules to avoid circular imports + from .cel import Context, evaluate +-- +2.43.0