-
Notifications
You must be signed in to change notification settings - Fork 934
Open
Description
When using FlowMutator to add parameters to a base flow class with multi-level inheritance (grandchild classes), Metaflow throws an error indicating that the parameter already exists, even though it was added by the mutator on a parent class.
Error Message
Metaflow 2.19.5 executing FlowGrandChild for user:skumar
Flow failed:
Flow 'FlowGrandChild' already has a class member 'triggered_by' -- set overwrite=True in add_parameter to overwrite it.
Environment
- Metaflow Version: 2.19.5
- Python Version: 3.11.10
Reproduction Steps
Run this code
from metaflow import (
FlowMutator,
Parameter,
FlowSpec,
step,
)
from metaflow.user_decorators.mutable_flow import MutableFlow
class TriggeredByParameter(FlowMutator):
def pre_mutate(self, mutable_flow: MutableFlow):
mutable_flow.add_parameter(
"triggered_by",
Parameter(
"triggered_by",
default="ci-cd",
type=str,
help="Username of the user triggering the flow",
),
)
@TriggeredByParameter()
class BaseFlow(FlowSpec):
def dummy_method(self):
pass
class BaseFlowChild(BaseFlow):
def child_method(self):
pass
class FlowGrandChild(BaseFlowChild):
"""Final Flow."""
msg: str = Parameter( # type: ignore
"msg",
type=str,
help="Error message to log",
)
@step
def start(self):
print("BaseFlowError:", self.msg)
self.next(self.end)
@step
def end(self):
pass
if __name__ == "__main__":
FlowGrandChild()Metadata
Metadata
Assignees
Labels
No labels