-
Notifications
You must be signed in to change notification settings - Fork 184
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
Add Robust Support for Callbacks at Task and TaskGroup Level #322
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #322 +/- ##
=======================================
Coverage 93.68% 93.69%
=======================================
Files 10 10
Lines 792 777 -15
=======================================
- Hits 742 728 -14
+ Misses 50 49 -1 ☔ View full report in Codecov by Sentry. |
@pankajastro, do you mind reviewing this, open to feedback? cc: @tatiana |
@jroach-astronomer please let me know once you'd like me to re-review/test the pull request. Could you please also update the PR description after the changes especially with the example for There seem to be a couple of conflicts, would be nice if you could resolve them too. We're planning on releasing DAG Factory on 10th Jan, so would be nice if we could get this change in by then. |
@pankajkoti, resolved MC's, updated PR docs. |
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.
This looks fantastic! Thank you for all the refactoring and for addressing my earlier questions and comments. I’ve shared an in-line thought in #322 (comment) about potentially dropping support for the file+name
approach of specifying callbacks. It would be great to revisit this idea later, and we can plan to work on it in the next release since it’s outside the scope of this PR.
dag_params["default_args"], "on_success_callback_file" | ||
): | ||
# Then, check at the DAG-level for a file path and name | ||
if utils.check_dict_key(dag_params, f"{callback_type}_name") and utils.check_dict_key( |
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.
I’m wondering if we should continue supporting the {callback_type}_name
+ {callback_type}_file
approach for callbacks. Are there scenarios where simply specifying {callback_type}
might be insufficient or lack necessary support?
Unifying the approach to a single, straightforward method seems more maintainable and less confusing for users. Additionally, what happens if a user specifies both on_success_callback
and on_success_callback_name + on_success_callback_file
? Currently, it appears that on_success_callback_name + on_success_callback_file
will override the on_success_callback
, which isn’t transparent to the end user and could cause confusion.
While this isn’t part of your changes and has been a pre-existing issue, it might be worth discussing whether we could drop support for the name+file
approach altogether or at least an error when users try to provide callbacks using both approaches. What do you think?
### Added - Propagate provided dag_display_name to built dag by @pankajkoti in #326 - Add incipient documentation tooling by @tatiana in #328 - Support loading `default_args` from shared `defaults.yml` by @pankajastro in #330 - Add security policy by @tatiana in #339 - Add Robust Support for Callbacks at Task and TaskGroup Level by @@jroach-astronomer in #322 - Support `ExternalTaskSensor` `execution_date_fn` and `execution_delta` by @tatiana in #354 - Refactor and add support for schedule conditions in DAG configuration by @ErickSeo in #320 ### Fixed - Handle gracefully exceptions during telemetry collection by @tatiana in #335 - Adjust `markdownlint` configuration to enforce 4-space indentation for proper `mkdocs` rendering by @pankajkoti in #345 ### Docs - Create initial documentation index by @tatiana in #325 - Use absolute URLs for failing links in docs/index.md by @pankajkoti in #331 - Add quick start docs by @pankajastro in #324 - Add docs comparing Python and YAML-based DAGs by @tatiana in #327 - Add docs about project contributors and their roles by @tatiana in #341 - Add documentation to support developers by @tatiana in #343 - Add docs for configuring workflows, environment variables and defaults by @pankajkoti in #338 - Add code of conduct for contributors and DAG factory community by @tatiana in #340 - Document Dynamic Task Mapping feature by @pankajkoti in #344 - Fix warning message 404 in code_of_conduct docs by @pankajastro in #346 - Update theme for documentation by @pankajastro in #348 - Fix markdownlint errors and some rendering improvements by @pankajastro in #356 - Reword content in documentation by @yanmastin-astro in #336 ### Others - Improve integration tests scripts by @tatiana in #316 - Add Markdown pre-commit checks by @tatiana in #329 - Remove Airflow <> 2.0.0 check by @pankajastro in #334 - Reduce telemetry timeout from 5 to 1 second by @tatiana in #337 - Add GH action job to deploy docs by @pankajastro in #342 - Enable Depandabot to scan outdated Github Actions dependencies by @tatiana in #347 - Improve docs deploy job by @pankajastro in #352 - Unify how we build dagfactory by @tatiana in #353 - Fix running make docker run when previous versions were run locally by @tatiana in #362 - Install `jq` in `dev` container by @pankajastro in #363 - Dependabot GitHub actions version upgrades in #349, #350, #351 Closes: #306
Pull request to address #253, which aims to provide enhanced support for callback types at the DAG,
default_args
, Task and TaskGroup level. There are now four different ways that callbacks can be defined viadag-factory
. Below, you'll also see an example of each.Passing a string that points to a callable
Passing a file path and file name that points to a callable
By providing a string that points to a callable, but with some parameters being provided at runtime
Using callbacks from providers
Unit-tests have been added and updated appropriately.