-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
feat(sdk): backport PipelineTaskFinalStatus change to sdk/release-1.8
branch
#7483
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -728,6 +728,13 @@ def _group_to_dag_spec( | |
deployment_config.executors[ | ||
importer_exec_label].importer.CopyFrom( | ||
subgroup.importer_spec) | ||
else: | ||
for input_spec in subgroup._metadata.inputs or []: | ||
if type_utils.is_task_final_status_type( | ||
input_spec.type): | ||
raise ValueError( | ||
'PipelineTaskFinalStatus can only be used in an exit task.' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit / personal preference: consider using |
||
) | ||
|
||
# Task level caching option. | ||
subgroup.task_spec.caching_options.enable_cache = subgroup.enable_caching | ||
|
@@ -1045,7 +1052,14 @@ def _create_pipeline_spec( | |
task_name = exit_handler_op.name | ||
display_name = exit_handler_op.display_name | ||
|
||
exit_handler_op.task_spec.task_info.name = display_name or task_name | ||
exit_handler_op.task_spec.task_info.name = ( | ||
display_name or task_name) | ||
for input_spec in exit_handler_op._metadata.inputs or []: | ||
if type_utils.is_task_final_status_type(input_spec.type): | ||
exit_handler_op.task_spec.inputs.parameters[ | ||
input_spec.name].task_final_status.producer_task = ( | ||
first_group.name) | ||
|
||
exit_handler_op.task_spec.dependent_tasks.extend( | ||
pipeline_spec.root.dag.tasks.keys()) | ||
exit_handler_op.task_spec.trigger_policy.strategy = ( | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,6 +21,7 @@ | |
from kfp import components | ||
from kfp.v2 import compiler | ||
from kfp.v2 import dsl | ||
from kfp.v2.dsl import PipelineTaskFinalStatus | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (duplicate) see other import path comments |
||
from kfp.dsl import types | ||
|
||
VALID_PRODUCER_COMPONENT_SAMPLE = components.load_component_from_text(""" | ||
|
@@ -451,6 +452,46 @@ def my_pipeline(): | |
compiler.Compiler().compile( | ||
pipeline_func=my_pipeline, package_path='result.json') | ||
|
||
def test_use_task_final_status_in_non_exit_op(self): | ||
|
||
@dsl.component | ||
def print_op(status: PipelineTaskFinalStatus): | ||
return status | ||
|
||
@dsl.pipeline(name='test-pipeline') | ||
def my_pipeline(): | ||
print_op() | ||
|
||
with self.assertRaisesRegex( | ||
ValueError, | ||
'PipelineTaskFinalStatus can only be used in an exit task.'): | ||
compiler.Compiler().compile( | ||
pipeline_func=my_pipeline, package_path='result.json') | ||
|
||
def test_use_task_final_status_in_non_exit_op_yaml(self): | ||
|
||
print_op = components.load_component_from_text(""" | ||
name: Print Op | ||
inputs: | ||
- {name: message, type: PipelineTaskFinalStatus} | ||
implementation: | ||
container: | ||
image: python:3.7 | ||
command: | ||
- echo | ||
- {inputValue: message} | ||
""") | ||
|
||
@dsl.pipeline(name='test-pipeline') | ||
def my_pipeline(): | ||
print_op() | ||
|
||
with self.assertRaisesRegex( | ||
ValueError, | ||
'PipelineTaskFinalStatus can only be used in an exit task.'): | ||
compiler.Compiler().compile( | ||
pipeline_func=my_pipeline, package_path='result.json') | ||
|
||
|
||
if __name__ == '__main__': | ||
unittest.main() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: update copyright to 2018-2022, I think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Applies to multiple files
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding current year is optional per https://opensource.google/documentation/reference/copyright
I'll skip that for this branch. :)