You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ka...@apache.org on 2020/12/29 23:49:49 UTC

[airflow] branch v1-10-stable updated: Fix Jinja undefined upgrade check for non-templated objects (#13373)

This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch v1-10-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v1-10-stable by this push:
     new 748d05f  Fix Jinja undefined upgrade check for non-templated objects (#13373)
748d05f is described below

commit 748d05f519c0e5427d2a46763591f03697c4d585
Author: Madison Bowden <52...@users.noreply.github.com>
AuthorDate: Tue Dec 29 15:49:33 2020 -0800

    Fix Jinja undefined upgrade check for non-templated objects (#13373)
---
 airflow/upgrade/rules/undefined_jinja_varaibles.py    | 9 +++++----
 tests/upgrade/rules/test_undefined_jinja_varaibles.py | 8 ++++++--
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/airflow/upgrade/rules/undefined_jinja_varaibles.py b/airflow/upgrade/rules/undefined_jinja_varaibles.py
index b97cfbc..100a31b 100644
--- a/airflow/upgrade/rules/undefined_jinja_varaibles.py
+++ b/airflow/upgrade/rules/undefined_jinja_varaibles.py
@@ -48,9 +48,6 @@ The user should do either of the following to fix this -
         if isinstance(rendered_content, six.string_types):
             return set(re.findall(r"{{(.*?)}}", rendered_content))
 
-        elif isinstance(rendered_content, (int, float, bool)):
-            return set()
-
         elif isinstance(rendered_content, (tuple, list, set)):
             debug_error_messages = set()
             for element in rendered_content:
@@ -63,11 +60,15 @@ The user should do either of the following to fix this -
                 debug_error_messages.update(self._check_rendered_content(value))
             return debug_error_messages
 
-        else:
+        elif hasattr(rendered_content, "template_fields"):
             if seen_oids is None:
                 seen_oids = set()
             return self._nested_check_rendered(rendered_content, seen_oids)
 
+        else:
+            # Rendered content is not actually rendered
+            return set()
+
     def _nested_check_rendered(self, rendered_content, seen_oids):
         debug_error_messages = set()
         if id(rendered_content) not in seen_oids:
diff --git a/tests/upgrade/rules/test_undefined_jinja_varaibles.py b/tests/upgrade/rules/test_undefined_jinja_varaibles.py
index 973801a..96cb30c 100644
--- a/tests/upgrade/rules/test_undefined_jinja_varaibles.py
+++ b/tests/upgrade/rules/test_undefined_jinja_varaibles.py
@@ -19,7 +19,6 @@ from tempfile import mkdtemp
 from unittest import TestCase
 
 import jinja2
-import pytest
 
 from airflow import DAG
 from airflow.models import DagBag
@@ -67,6 +66,12 @@ class TestUndefinedJinjaVariablesRule(TestCase):
                 "float": "{{ params.float }}",
                 "string": "{{ params.string }}",
                 "boolean": "{{ params.boolean }}",
+                "integer_direct": 1,
+                "float_direct": 1.0,
+                "string_direct": "test_string",
+                "boolean_direct": True,
+                "none_direct": None,
+                "object_direct": object(),
             },
             params={
                 "integer": 1,
@@ -156,7 +161,6 @@ class TestUndefinedJinjaVariablesRule(TestCase):
 
         assert len(messages) == 0
 
-    @pytest.mark.quarantined
     def test_invalid_check(self):
         dagbag = DagBag(dag_folder=self.empty_dir, include_examples=False)
         dagbag.dags[self.invalid_dag.dag_id] = self.invalid_dag