PipelineController parameters always default to string
Author: HJJ256Created Jul 20, 2026Updated Jul 20, 2026
Labelsbug
Describe the bug
When creating a pipeline using PipelineController, the pipeline parameters are always read as raw strings, even if param_type has been provided in add_parameter.
According to https://clear.ml/docs/latest/docs/references/sdk/automation_controller_pipelinecontroller
param_type (Optional[str]) – Optional, parameter type information (to be used as hint for casting and description)
My assumption was the setting param_type would cast the parameter into respective data type.
To reproduce
Try this
from clearml.automation.controller import PipelineController
def add_two(x: int):
return x+2
pipe = PipelineController(name="test", project="test_project")
pipe.add_parameter(
"x",
120,
param_type="int",
description="HTTP timeout for signature API calls",
)
pipe.add_function_step(
name="add_two",
function=add_two,
function_kwargs={"x": "${pipeline.x}"}
)
if __name__ == "__main__":
pipe.start_locally(run_pipeline_steps_locally=True)Expected behaviour
The parameter x should have been automatically type-casted to an int and pipeline run should have been successful.
Environment
- Server type (self hosted \ app.clear.ml) - Self Hosted
- ClearML SDK Version - 2.1.10
- ClearML Server Version (Only for self hosted). Can be found on the bottom right corner of the settings screen. - 2.2.0-690
- Python Version - 3.10.18
- OS (Windows \ Linux \ Macos) - Linux
Related Discussion
If this continues a slack thread, please provide a link to the original slack thread.
Source: clearml/clearml