Allow annotated FlyteFile as task input argument#1632
Conversation
Using an annotated FlyteFile type as an input to a task was previously impossible due to an exception being raised in `FlyteFilePathTransformer.to_python_value`. This commit applies the fix previously used in `FlyteFilePathTransformer.to_literal` to permit using annotated FlyteFiles as either inputs and outputs of a task. Issue: flyteorg#3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com>
| if get_origin(t) is Annotated: | ||
| return get_args(t)[0] |
There was a problem hiding this comment.
we do this all the place in the type_engine.py.
flytekit/flytekit/core/type_engine.py
Lines 737 to 748 in a1636a8
could you move this function to
type_engine.py, and import it instead.
There was a problem hiding this comment.
Moved the function there and refactored type_engine.py quite a bit in 093536f. This should also make the handling of annotated types there more uniform (and added a few tests).
Is this what you had in mind?
Codecov Report
@@ Coverage Diff @@
## master #1632 +/- ##
=======================================
Coverage 71.02% 71.02%
=======================================
Files 336 336
Lines 30724 30736 +12
Branches 5567 5566 -1
=======================================
+ Hits 21821 21831 +10
- Misses 8360 8361 +1
- Partials 543 544 +1
|
Issue: flyteorg#3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com>
pingsutw
left a comment
There was a problem hiding this comment.
Thanks, LGTM. would you resolve branch conflict?
…ytefile-2 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> # Conflicts: # flytekit/core/type_engine.py
Sorry, was sick for the past days, just merged upstream |
pingsutw
left a comment
There was a problem hiding this comment.
@AdrianoKF hope you feel better.
Issue: flyteorg#3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com>
|
@AdrianoKF never mind. That's flaky test. |
* fix: Allow annotated FlyteFile as task input argument Using an annotated FlyteFile type as an input to a task was previously impossible due to an exception being raised in `FlyteFilePathTransformer.to_python_value`. This commit applies the fix previously used in `FlyteFilePathTransformer.to_literal` to permit using annotated FlyteFiles as either inputs and outputs of a task. Issue: flyteorg#3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * refactor: Unified handling of annotated types in type engine Issue: flyteorg#3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * fix: Use py3.8-compatible types in type engine tests Issue: flyteorg#3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> --------- Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> Signed-off-by: Arthur <atte.book@gmail.com>
…)" This reverts commit fe9434f.
* fix: Allow annotated FlyteFile as task input argument Using an annotated FlyteFile type as an input to a task was previously impossible due to an exception being raised in `FlyteFilePathTransformer.to_python_value`. This commit applies the fix previously used in `FlyteFilePathTransformer.to_literal` to permit using annotated FlyteFiles as either inputs and outputs of a task. Issue: #3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * refactor: Unified handling of annotated types in type engine Issue: #3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * fix: Use py3.8-compatible types in type engine tests Issue: #3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> --------- Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com>
* Multi arch imageSpec (#1630) Multi arch imageSpec (#1630) Signed-off-by: Eduardo Apolinario <eapolinario@users.noreply.github.com> * Add executor_path and applications_path to spark config (#1634) * Add executor_path and applications_path to spark config Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> --------- Signed-off-by: Kevin Su <pingsutw@apache.org> * Add support for env vars to pyflyte run (#1617) * Add support for env vars to pyflyte run Signed-off-by: Kevin Su <pingsutw@apache.org> * bump idl Signed-off-by: Kevin Su <pingsutw@apache.org> * update doc Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> --------- Signed-off-by: Kevin Su <pingsutw@apache.org> Signed-off-by: Eduardo Apolinario <eapolinario@users.noreply.github.com> * Fetch task executions in dynamic (#1636) * fetch task executions in dynamic Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * lint Signed-off-by: Kevin Su <pingsutw@apache.org> --------- Signed-off-by: Kevin Su <pingsutw@apache.org> * Added metrics command to pyflyte (#1513) Signed-off-by: Daniel Rammer <daniel@union.ai> * Add http_proxy to client & Fix deviceflow (#1611) * Add http_proxy to client & Fix deviceflow RB=3890720 Signed-off-by: byhsu <byhsu@linkedin.com> * nit Signed-off-by: byhsu <byhsu@linkedin.com> * lint! Signed-off-by: byhsu <byhsu@linkedin.com> --------- Signed-off-by: byhsu <byhsu@linkedin.com> Co-authored-by: byhsu <byhsu@linkedin.com> Signed-off-by: Eduardo Apolinario <eapolinario@users.noreply.github.com> * Improve variable names (#1642) Signed-off-by: byhsu <byhsu@linkedin.com> Co-authored-by: byhsu <byhsu@linkedin.com> * Address resolution (#1567) Signed-off-by: Yee Hing Tong <wild-endeavor@users.noreply.github.com> * pyflyte run supports pickle (#1646) Signed-off-by: Kevin Su <pingsutw@apache.org> * Wait for the pod plugin instead of flytekit (#1647) Signed-off-by: eduardo apolinario <eapolinario@users.noreply.github.com> Co-authored-by: eduardo apolinario <eapolinario@users.noreply.github.com> * Beautify deviceflow prompt (#1625) * Beautify deviceflow prompt Signed-off-by: byhsu <byhsu@linkedin.com> * lint! Signed-off-by: byhsu <byhsu@linkedin.com> * lint Signed-off-by: byhsu <byhsu@linkedin.com> --------- Signed-off-by: byhsu <byhsu@linkedin.com> Co-authored-by: byhsu <byhsu@linkedin.com> * Improve flytekit register (#1643) * Fix pyflyte register Signed-off-by: byhsu <byhsu@linkedin.com> * revert Signed-off-by: byhsu <byhsu@linkedin.com> * lint Signed-off-by: byhsu <byhsu@linkedin.com> --------- Signed-off-by: byhsu <byhsu@linkedin.com> Co-authored-by: byhsu <byhsu@linkedin.com> * Pass verify flag to all authenticators (#1641) Signed-off-by: byhsu <byhsu@linkedin.com> * Allow annotated FlyteFile as task input argument (#1632) * fix: Allow annotated FlyteFile as task input argument Using an annotated FlyteFile type as an input to a task was previously impossible due to an exception being raised in `FlyteFilePathTransformer.to_python_value`. This commit applies the fix previously used in `FlyteFilePathTransformer.to_literal` to permit using annotated FlyteFiles as either inputs and outputs of a task. Issue: #3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * refactor: Unified handling of annotated types in type engine Issue: #3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * fix: Use py3.8-compatible types in type engine tests Issue: #3424 Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> --------- Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> * Use logger instead of print statement in sqlalchemy plugin (#1651) * use logging info instead of print Signed-off-by: wirthual <wirthra@gmail.com> * isorted files Signed-off-by: wirthual <wirthra@gmail.com> * import root logger from flytekit Signed-off-by: wirthual <wirthra@gmail.com> --------- Signed-off-by: wirthual <wirthra@gmail.com> * Map over notebook task (#1650) * map over notebook Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * tests Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * add a flag Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * fix tests Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * lint Signed-off-by: Kevin Su <pingsutw@apache.org> * Fix tests Signed-off-by: Kevin Su <pingsutw@apache.org> * lint Signed-off-by: Kevin Su <pingsutw@apache.org> --------- Signed-off-by: Kevin Su <pingsutw@apache.org> * Support single literals in tiny url (#1654) Signed-off-by: Yee Hing Tong <wild-endeavor@users.noreply.github.com> * Add support overriding image (#1652) Signed-off-by: Kevin Su <pingsutw@apache.org> * Fix ability to pass None to task with Optional kwarg, add test (#1657) Signed-off-by: Fabio Grätz <fabiogratz@googlemail.com> Co-authored-by: Fabio Grätz <fabiogratz@googlemail.com> * Regenerate plugins requirements Signed-off-by: eduardo apolinario <eapolinario@users.noreply.github.com> * Regenerate plugins requirements and linting Signed-off-by: eduardo apolinario <eapolinario@users.noreply.github.com> * Regenerate whylogs requirements Signed-off-by: eduardo apolinario <eapolinario@users.noreply.github.com> --------- Signed-off-by: Eduardo Apolinario <eapolinario@users.noreply.github.com> Signed-off-by: Kevin Su <pingsutw@apache.org> Signed-off-by: Daniel Rammer <daniel@union.ai> Signed-off-by: byhsu <byhsu@linkedin.com> Signed-off-by: Yee Hing Tong <wild-endeavor@users.noreply.github.com> Signed-off-by: eduardo apolinario <eapolinario@users.noreply.github.com> Signed-off-by: Adrian Rumpold <a.rumpold@gmail.com> Signed-off-by: wirthual <wirthra@gmail.com> Signed-off-by: Fabio Grätz <fabiogratz@googlemail.com> Co-authored-by: Kevin Su <pingsutw@apache.org> Co-authored-by: Dan Rammer <daniel@union.ai> Co-authored-by: ByronHsu <byronhsu1230@gmail.com> Co-authored-by: byhsu <byhsu@linkedin.com> Co-authored-by: Yee Hing Tong <wild-endeavor@users.noreply.github.com> Co-authored-by: eduardo apolinario <eapolinario@users.noreply.github.com> Co-authored-by: Adrian Rumpold <a.rumpold@gmail.com> Co-authored-by: wirthual <wirthra@gmail.com> Co-authored-by: Fabio M. Graetz, Ph.D <fabiograetz@googlemail.com> Co-authored-by: Fabio Grätz <fabiogratz@googlemail.com>
TL;DR
This PR allows annotated FlyteFiles to be used as input arguments of a task, e.g., when calculating a custom hash using
Annotated[FlyteFile, HashMethod(...)].See the discussion on Slack for additional details.
Type
Are all requirements met?
Complete description
Using an annotated FlyteFile type as an input to a task was previously impossible due to an exception being raised in
FlyteFilePathTransformer.to_python_value.This MR applies the fix previously used in
FlyteFilePathTransformer.to_literalto permit using annotated FlyteFiles as either inputs or outputs of a task (see MR #1544), by unwrapping the origin type of the annotated type.Tracking Issue
flyteorg/flyte#3424
Follow-up issue
NA