<#3884 [BUG] Running `map_task` with `partial` loc...
# flytekit
a
#3884 [BUG] Running `map_task` with `partial` locally Issue created by constanceferragu Describe the bug When running a
map_task
with
partial
locally this function does not recognise which inputs are fixed and which input is to be mapped. Expected behavior
map_task
with
partial
runs correctly when executed remotely (as long as the fixed inputs are not
list[...]
and the mapped input is not a
list[list[...]]
- I will follow up on this with another issue). There should be a clearer error message which indicates that the first argument of the task being mapped should be the mapped argument. Additional context to reproduce [This is code taken from your v1.5.0 milestone release]
Copy code
@task
def t1(x: int, y: float) -> float:
    return x + y

@workflow
def wf(y: List[float]) -> List[float]:
   partial_t1 = partial(t1, x=5)
   return map_task(partial_t1)(y=y)
The workflow above will raise a
TypeError
when run locally with the following inputs
wf(y=[0.1, 0.3, 0.5, 0.7])
for example. Error message:
Copy code
TypeError: Encountered error while executing workflow 'wf':
    Error encountered while executing 'wf':
    object of type 'int' has no len()
This function will consider the first input
x
, a fixed input, instead of the mapped input. The
TypeError
comes from
x
not being a List. The workflow will successfully run when executed remotely. The current fix is to ensure the mapped input is the first input of the task (switch
x
and
y
in
t1
), however this was not easy to find since the error message it not clear. Screenshots No response Are you sure this issue hasn't been raised already? ☑︎ Yes Have you read the Code of Conduct? ☑︎ Yes flyteorg/flyte