This is an automated email from the ASF dual-hosted git repository.
jedcunningham pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-3-test by this push:
new 9b714c8a0de [v3-3-test] Clean up comments and tests for the Dag
version inflation checker (#72028) (#72180)
9b714c8a0de is described below
commit 9b714c8a0def75a9bba2d9b2a30c2ba309ace1b9
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Aug 28 07:32:03 2026 -0600
[v3-3-test] Clean up comments and tests for the Dag version inflation
checker (#72028) (#72180)
The comments described how the code used to behave rather than what it does
now,
and the removed test covered the same case as the one above it.
(cherry picked from commit ee15456649aa6dfed1dd5385888d81d672bc21ad)
Co-authored-by: Jed Cunningham
<[email protected]>
---
.../airflow/utils/dag_version_inflation_checker.py | 2 -
.../utils/test_dag_version_inflation_checker.py | 45 ++++------------------
2 files changed, 8 insertions(+), 39 deletions(-)
diff --git a/airflow-core/src/airflow/utils/dag_version_inflation_checker.py
b/airflow-core/src/airflow/utils/dag_version_inflation_checker.py
index 06fa96a7faa..e9b415b255f 100644
--- a/airflow-core/src/airflow/utils/dag_version_inflation_checker.py
+++ b/airflow-core/src/airflow/utils/dag_version_inflation_checker.py
@@ -513,8 +513,6 @@ class AirflowRuntimeVaryingValueChecker(ast.NodeVisitor):
for body in node.body:
self.visit(body)
- # Only exit Dag with block if we entered it; unconditional exit would
prematurely
- # reset the context when a non-DAG with-statement is nested inside a
DAG with block.
if is_with_dag_context:
self.dag_detector.exit_dag_context()
diff --git
a/airflow-core/tests/unit/utils/test_dag_version_inflation_checker.py
b/airflow-core/tests/unit/utils/test_dag_version_inflation_checker.py
index 035375c01f3..91c468338ba 100644
--- a/airflow-core/tests/unit/utils/test_dag_version_inflation_checker.py
+++ b/airflow-core/tests/unit/utils/test_dag_version_inflation_checker.py
@@ -814,53 +814,25 @@ with DAG(
assert len(warnings) == 1
def test_nested_non_dag_with_does_not_exit_dag_context(self):
- """Regression test: a non-DAG with-statement nested inside a DAG
with-block must not
- prematurely exit the DAG context.
-
- Before the fix, visit_With() called exit_dag_context() unconditionally
regardless of
- whether a DAG context was entered. This meant any nested non-DAG
with-statement (e.g.,
- ``with open(...) as f``) would reset is_in_dag_context=False, causing
tasks that appear
- AFTER the nested with-statement (but still inside the DAG with-block)
to be missed.
- """
+ """A non-Dag with-statement nested inside a Dag with-block must not
exit the Dag context."""
code = """
from airflow import DAG
from datetime import datetime
from airflow.operators.bash import BashOperator
with DAG('my_dag') as dag:
- with open('some_file.txt') as f: # non-DAG with — must not exit DAG
context
+ with open('some_file.txt') as f:
data = f.read()
- # This task is still inside the DAG block and uses datetime.now() — must
be flagged
t1 = BashOperator(
task_id='test',
- bash_command=str(datetime.now()),
+ bash_command=str(datetime.now()), # !problem
)
-"""
- warnings = self._check_code(code)
- assert len(warnings) == 1, (
- "BashOperator after a nested non-DAG with-statement must still be
detected "
- "as inside the DAG context and flagged for using datetime.now()"
- )
-
- def test_multiple_nested_non_dag_withs_do_not_exit_dag_context(self):
- """Multiple successive non-DAG with-statements inside a DAG block must
not exit the context."""
- code = """
-from airflow import DAG
-from datetime import datetime
-from airflow.operators.bash import BashOperator
-
-with DAG('my_dag') as dag:
- with open('a.txt') as f1:
- pass
- with open('b.txt') as f2:
- pass
- t1 = BashOperator(task_id='t', bash_command=str(datetime.now()))
"""
warnings = self._check_code(code)
assert len(warnings) == 1
def test_task_inside_nested_non_dag_with_is_still_flagged(self):
- """A task constructed inside a nested non-DAG with-block is still in
DAG context."""
+ """A task constructed inside a nested non-Dag with-block is still in
Dag context."""
code = """
from airflow import DAG
from datetime import datetime
@@ -868,13 +840,13 @@ from airflow.operators.bash import BashOperator
with DAG('my_dag') as dag:
with open('a.txt') as f:
- t1 = BashOperator(task_id='t', bash_command=str(datetime.now()))
+ t1 = BashOperator(task_id='t', bash_command=str(datetime.now())) #
!problem
"""
warnings = self._check_code(code)
assert len(warnings) == 1
- def test_task_outside_dag_with_not_flagged_after_nested_fix(self):
- """Tasks genuinely outside any DAG block must not be flagged — the fix
must not over-flag."""
+ def test_task_outside_dag_with_not_flagged(self):
+ """Tasks genuinely outside any Dag block must not be flagged."""
code = """
from airflow import DAG
from datetime import datetime
@@ -884,8 +856,7 @@ with DAG('my_dag') as dag:
with open('a.txt') as f:
pass
-# This task is outside the DAG with block — should NOT be flagged
t_outside = BashOperator(task_id='outside', bash_command=str(datetime.now()))
"""
warnings = self._check_code(code)
- assert len(warnings) == 0, "A task constructed outside the DAG
with-block must not be flagged"
+ assert len(warnings) == 0