Skip to content

Commit 6a0bbbc

Browse files
authored
chore: add clear error message when value type is not annotated (#519)
1 parent 9b5ec51 commit 6a0bbbc

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

python/cocoindex/flow.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -718,9 +718,11 @@ async def _build_flow_info_async(self) -> TransformFlowInfo:
718718
for (param_name, param), param_type in zip(sig.parameters.items(), self._flow_arg_types):
719719
if param.kind not in (inspect.Parameter.POSITIONAL_OR_KEYWORD,
720720
inspect.Parameter.KEYWORD_ONLY):
721-
raise ValueError(f"Parameter {param_name} is not a parameter can be passed by name")
722-
engine_ds = flow_builder_state.engine_flow_builder.add_direct_input(
723-
param_name, encode_enriched_type(param_type))
721+
raise ValueError(f"Parameter `{param_name}` is not a parameter can be passed by name")
722+
encoded_type = encode_enriched_type(param_type)
723+
if encoded_type is None:
724+
raise ValueError(f"Parameter `{param_name}` has no type annotation")
725+
engine_ds = flow_builder_state.engine_flow_builder.add_direct_input(param_name, encoded_type)
724726
kwargs[param_name] = DataSlice(_DataSliceState(flow_builder_state, engine_ds))
725727

726728
output = self._flow_fn(**kwargs)
@@ -780,8 +782,13 @@ def _transform_flow_wrapper(fn: Callable[..., DataSlice[T]]):
780782
for (param_name, param) in sig.parameters.items():
781783
if param.kind not in (inspect.Parameter.POSITIONAL_OR_KEYWORD,
782784
inspect.Parameter.KEYWORD_ONLY):
783-
raise ValueError(f"Parameter {param_name} is not a parameter can be passed by name")
784-
arg_types.append(_get_data_slice_annotation_type(param.annotation))
785+
raise ValueError(f"Parameter `{param_name}` is not a parameter can be passed by name")
786+
value_type_annotation = _get_data_slice_annotation_type(param.annotation)
787+
if value_type_annotation is None:
788+
raise ValueError(
789+
f"Parameter `{param_name}` for {fn} has no value type annotation. "
790+
"Please use `cocoindex.DataSlice[T]` where T is the type of the value.")
791+
arg_types.append(value_type_annotation)
785792

786793
_transform_flow = TransformFlow(fn, arg_types)
787794
functools.update_wrapper(_transform_flow, fn)

0 commit comments

Comments
 (0)