Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Split airflowctl dags state argument into run_id and --logical-date by FrankYang0529 · Pull Request #69915 · apache/airflow · GitHub
Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Split airflowctl dags state argument into run_id and --logical-date by FrankYang0529 · Pull Request #69915 · apache/airflow · GitHub
Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Split airflowctl dags state argument into run_id and --logical-date by FrankYang0529 · Pull Request #69915 · apache/airflow · GitHub
Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Split airflowctl dags state argument into run_id and --logical-date by FrankYang0529 · Pull Request #69915 · apache/airflow · GitHub
Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Split airflowctl dags state argument into run_id and --logical-date by FrankYang0529 · Pull Request #69915 · apache/airflow · GitHub
Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Split airflowctl dags state argument into run_id and --logical-date by FrankYang0529 · Pull Request #69915 · apache/airflow · GitHub
Skip to content

Split airflowctl dags state argument into run_id and --logical-date - #69915

Merged
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state
Jul 24, 2026
Merged

Split airflowctl dags state argument into run_id and --logical-date#69915
Lee-W merged 1 commit into
apache:mainfrom
FrankYang0529:airflow-dags-state

Conversation

@FrankYang0529

Copy link
Copy Markdown
Member

Why

  • Followup from Add airflowctl tasks failed-deps command #69397 (comment).
  • The core airflow dags state used single field logical_date_or_run_id for two different values. The airflowctl dags state inherited it.
  • If the input is a logical_date, it spends an extra request trying it as a run_id first. That request is bound to 404, and the CLI then uses the list API to retrieve the dag_run. An unknown run_id has a similar issue: the 404 is followed by a list call issued only to check that the Dag exists.

How

  • Add --logical-date and make run_id an optional positional. Exactly one of the two is required.
  • run_id goes straight to dag_runs.get and --logical-date goes to dag_runs.list.

Verification

  • uv run --project airflow-ctl pytest airflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py airflow-ctl/tests/airflow_ctl/api/test_operations.py

Was generative AI tooling used to co-author this PR?
  • Yes - Claude Code

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/src/airflowctl/ctl/commands/dag_command.py Outdated
Comment threadairflow-ctl/tests/airflow_ctl/ctl/commands/test_dag_command.py Outdated
@Lee-W

Copy link
Copy Markdown
Member

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

@bugraoz93bugraoz93 added the full tests needed We need to run full set of tests for this PR to merge label Jul 23, 2026
@bugraoz93bugraoz93 reopened this Jul 23, 2026
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Since we've not yet released 1.0.0, I think we don't need to worry about breaking change?

Exactly @Lee-W, good to go. Thanks for checking!

Discussion still needs attention from community for 1.0. We will release 0.1.x versions until we agree on 1.0 maturity

@bugraoz93

Copy link
Copy Markdown
Contributor

Let see CI integration tests and merge :)

@Lee-W
Lee-W merged commit b33558e into apache:mainJul 24, 2026
249 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: airflow-ctl/v0-1-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
airflow-ctl/v0-1-testPR Link

Lee-W pushed a commit that referenced this pull request Jul 24, 2026
…_id and --logical-date (#69915) (#70352)
Co-authored-by: PoAn Yang <payang@apache.org>
Signed-off-by: PoAn Yang <payang@apache.org>
@FrankYang0529
FrankYang0529 deleted the airflow-dags-state branch July 24, 2026 02:37
Lee-W added a commit to astronomer/airflow that referenced this pull request Aug 3, 2026
The dags state backport (apache#69915, apache#70352) brought the caller and the tests
but dropped suppress_error_log from DagRunOperations.list(), which main
has. dag_command.py:147 passes it, so the command raised:
TypeError: DagRunOperations.list() got an unexpected keyword
argument 'suppress_error_log'
Restore the keyword-only parameter and forward it to the client as the
airflowctl_suppress_error_log extension, matching the sibling get().
The broken caller only exists on this test branch, so no released
airflowctl is affected and no newsfragment is needed.
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:airflow-ctlbackport-to-airflow-ctl/v0-1-testfull tests neededWe need to run full set of tests for this PR to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@FrankYang0529@Lee-W@bugraoz93