Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Add skip decorator; A few clean ups #306

Open
wants to merge 2 commits into
base: feature/aip
Choose a base branch
from

Conversation

cloudw
Copy link
Collaborator

@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
Collaborator 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
Collaborator 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