Description:
When converting a Python module with optional parameters that have default values, qtype convert module generates invalid type references like PrimitiveTypeEnum.text? instead of text?.
Reproduction:
Create a simple Python module:
# example_tools.py
def my_function(required_param: str, optional_param: str = "default") -> str:
"""Example function with optional parameter."""
return f"{required_param}-{optional_param}"
Convert it:
qtype convert module example_tools -o output.yaml
Expected Output:
- inputs:
- id: required_param
type: text
- id: optional_param
type: text?
Actual Output:
- inputs:
- id: required_param
type: text
- id: optional_param
type: PrimitiveTypeEnum.text?
Impact:
The generated YAML fails validation:
❌ Validation Error: Invalid type reference 'PrimitiveTypeEnum.text?'
Root Cause:
The type conversion logic is incorrectly serializing the enum type for optional parameters instead of using the string value.
Workaround:
Manually edit the generated YAML to replace PrimitiveTypeEnum.text? with text?.