Check GCSToGCSOperator deprecation warnings after template rendering - #70621
Check GCSToGCSOperator deprecation warnings after template rendering#70621bramhanandlingala wants to merge 1 commit into
Conversation
|
Thanks for this — the change is correct and the diagnosis is right: these three deprecation warnings were firing against un-rendered template values in Unfortunately it duplicates #70449, which makes the same change to the same file and was opened on 25 July, three days before this one. Airflow does allow parallel work on the same problem — "better PR wins" — but the convention is to check for an existing PR first and build on it rather than open a second one, precisely to avoid two people doing the same work. Comparing the two honestly: #70449 extracts the warnings into a named Genuinely though — the analysis here was sound. If you want to stay involved, a review on #70449 would be welcome, and there are still several operators listed in Drafted-by: Claude Code (Opus 5); reviewed by @potiuk before posting |
Fixes the google provider's GCSToGCSOperator entry from the #70296 exemption-list burn-down.
source_object,source_objects, anddelimiterare template fields, but__init__inspected their content (checking for a wildcard character, or truthiness ofdelimiter) to decide whether to emit a deprecation warning — so these checks ran on the un-rendered Jinja expression instead of the actual rendered value.Moved all three deprecation-warning checks from
__init__intoexecute(), right before the fields are used.__init__now only does plain assignments.warnings.warn(...)blocks from__init__.execute(), now readingself.source_object/self.source_objects/self.delimiter(rendered values) instead of the constructor arguments.test_get_openlineage_facets_on_complete,test_execute_returns_list_of_destination_uris_multiple_files) to expect the warning on.execute()instead of construction.pytestmark = pytest.mark.filterwarnings("ignore::airflow.exceptions.AirflowProviderDeprecationWarning")at module level in the test file, since this repo'sforbidden_warningspytest config turns this warning into a hard error by default, and ~15 other existing tests exercise wildcard/delimiter inputs incidentally without testing the deprecation itself. This mirrors the existing pattern used intest_bigquery.pyandtest_kubernetes_engine.pyfor the same warning class.validate_operators_init_exemptions.txt.Verified locally that
scripts/ci/prek/validate_operators_init.pyreports zero findings for this class after the change, and that the full existing test suite intest_gcs_to_gcs.pypasses.Related to #70296
Gen-AI disclosure: I used a generative AI tool to help identify the root
cause, write tests, and draft the PR description. I reviewed, tested, and
verified all changes locally before submitting.
Was generative AI tooling used to co-author this PR?
Generated-by: Claude following the guidelines