From 92dea6686d100abed68025b40af09c8b87b08f70 Mon Sep 17 00:00:00 2001 From: Dawei Date: Thu, 5 Feb 2026 17:38:18 -0800 Subject: [PATCH 1/3] Fix codegen crashes for intersection types and complex list inner typesCI --- src/replit_river/codegen/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/replit_river/codegen/client.py b/src/replit_river/codegen/client.py index e1a8d6cd..26f8afa9 100644 --- a/src/replit_river/codegen/client.py +++ b/src/replit_river/codegen/client.py @@ -633,7 +633,7 @@ def extract_props(tpe: RiverType) -> list[dict[str, RiverType]]: f"encode_{render_literal_type(type_name)}" ) encoder_names.add(encoder_name) - typeddict_encoder.append(f"{encoder_name}(x[{repr(name)}])") + typeddict_encoder.append(f"{render_literal_type(encoder_name)}(x[{repr(name)}])") elif isinstance(prop, RiverConcreteType): if name == "$kind": safe_name = "kind" From 0fbc4c4879eece43a739e8035afa22c7efb54e66 Mon Sep 17 00:00:00 2001 From: Dawei Date: Thu, 5 Feb 2026 17:38:29 -0800 Subject: [PATCH 2/3] Fix codegen crashes for intersection types and complex list inner typesCI --- src/replit_river/codegen/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/replit_river/codegen/client.py b/src/replit_river/codegen/client.py index 26f8afa9..b95bc7e6 100644 --- a/src/replit_river/codegen/client.py +++ b/src/replit_river/codegen/client.py @@ -407,7 +407,7 @@ def {_field_name}( encoder_parts.append(("isinstance(x, str)", "x")) elif t.type == "array": match type_name: - case ListTypeExpr(inner_type_name): + case ListTypeExpr(inner_type_name) if isinstance(inner_type_name, TypeName): # Primitives don't need encoding inner_type_str = render_literal_type(inner_type_name) if inner_type_str in ("str", "int", "float", "bool", "Any"): From 2bffecd3c3bf3ab6f415dbb61850443f4c35c8bd Mon Sep 17 00:00:00 2001 From: Dawei Date: Thu, 5 Feb 2026 17:44:37 -0800 Subject: [PATCH 3/3] ci --- src/replit_river/codegen/client.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/replit_river/codegen/client.py b/src/replit_river/codegen/client.py index b95bc7e6..d59936fe 100644 --- a/src/replit_river/codegen/client.py +++ b/src/replit_river/codegen/client.py @@ -407,7 +407,9 @@ def {_field_name}( encoder_parts.append(("isinstance(x, str)", "x")) elif t.type == "array": match type_name: - case ListTypeExpr(inner_type_name) if isinstance(inner_type_name, TypeName): + case ListTypeExpr(inner_type_name) if isinstance( + inner_type_name, TypeName + ): # Primitives don't need encoding inner_type_str = render_literal_type(inner_type_name) if inner_type_str in ("str", "int", "float", "bool", "Any"): @@ -633,7 +635,9 @@ def extract_props(tpe: RiverType) -> list[dict[str, RiverType]]: f"encode_{render_literal_type(type_name)}" ) encoder_names.add(encoder_name) - typeddict_encoder.append(f"{render_literal_type(encoder_name)}(x[{repr(name)}])") + typeddict_encoder.append( + f"{render_literal_type(encoder_name)}(x[{repr(name)}])" + ) elif isinstance(prop, RiverConcreteType): if name == "$kind": safe_name = "kind"