Skip to content

Conversation

cloudw
Copy link

@cloudw cloudw commented Aug 19, 2024

Changes:

  • Added skip decorator with a test flow.
  • A few other minor clean-ups.

Fix AIP-8494

@cloudw cloudw self-assigned this Aug 19, 2024
@cloudw cloudw changed the title Add skip decorator; A few clean ups Draft: Add skip decorator; A few clean ups Aug 19, 2024
def __init__(self, check="", next=""):
super().__init__()
self.check = check
self.next = next
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The feature ask is to skip a step.
Introducing conditional branching (a conditional next step -> conditional branching) is out of scope.

There are valid deep reasons to not allow conditional branching; the mainly that upsteam Metaflow OSS has not implemented this feature because conditional branching introduces for complex DAG reasoning and branching that is difficult to test and reason over for the applied scientist. For example, this next conditional could goto any step.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@talebzeghmi talebzeghmi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for doing this. I think it's worth investigating whether this should be a true step decorator, or a normal pythonic decorator. I highly recommend keeping this simple by including the example @skip python function decorator and not a Metaflow decorator as exemplified here. That would limit the scope of this work item.

Introducing DAG conditionals is out of scope due to the complexities it introduces (and reduces portability of Metaflow) while diverges this branch (WFSDK) from Metaflow OSS.

self.check = check
self.next = next

def __call__(self, f):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How and when is __call__ invoke?
I believe that this conflating this Metaflow compiler step decorator with a python function decorator.

@cloudw
Copy link
Author

cloudw commented Aug 20, 2024

Thank you for doing this. I think it's worth investigating whether this should be a true step decorator, or a normal pythonic decorator. I highly recommend keeping this simple by including the example @skip python function decorator and not a Metaflow decorator as exemplified here. That would limit the scope of this work item.

Introducing DAG conditionals is out of scope due to the complexities it introduces (and reduces portability of Metaflow) while diverges this branch (WFSDK) from Metaflow OSS.

It does feel like the StepDecorator is complicating the implementation a bit, that's why I'm marking this PR as draft right now. I think the done criteria is not too clear either.

I'll keep this PR as draft for longer without working on it, until this becomes a priority.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants