Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@shahar1@Lee-W@potiuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@shahar1@Lee-W@potiuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@shahar1@Lee-W@potiuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@shahar1@Lee-W@potiuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@shahar1@Lee-W@potiuk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Implement default language (English) freeze pre-commit - #55119

Merged
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit
Sep 1, 2025
Merged

Implement default language (English) freeze pre-commit#55119
shahar1 merged 5 commits into
apache:mainfrom
shahar1:default-language-freeze-pre-commit

Conversation

@shahar1

@shahar1shahar1 commented Aug 31, 2025

Copy link
Copy Markdown
Contributor

Following the recent dev call, this PR introduces a pre-commit to prevent changes in the default language during freeze time. The current freeze will be between Sep. 1 to Sep 9 (inc.); all times are arbitrarily measured in UTC AoE time.
This pre-commit should be reused in later freezes simply by changing the dates (I'll add it to the i18n policy).


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

did a quick fix for the missing import

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

@shahar1
shahar1force-pushed the default-language-freeze-pre-commit branch from faecc2f to 8b6a6e2CompareSeptember 1, 2025 05:02
@shahar1

shahar1 commented Sep 1, 2025

Copy link
Copy Markdown
ContributorAuthor

did a quick fix for the missing import

Thanks! I also realized that it didn't actually check if there was a difference in the files during these dates, so I added a "git diff" call :)

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

It would be great if we can get #55041 merged before this

The idea of the freeze is to align all translations against a constant source, so translation owners would be able to complete the gaps without "chasing" after the new changes every day until the release. To avoid blocking new features during this time, we could create an "exemption list" in a separate JSON file with the file names as keys. The translation owners won't be required to translate changes from this file and it will also be excluded from the completeness calculation. By the end of the freeze - we should relocate the terms from this file to their appropriate place. The trade-off for this flexibility is that terms might be missing from translations in the upcoming release, and we create a small debt to handle the list afterwards (we could relatively easily automate that).

@Lee-W@kaxil@potiuk@jscheffl@bbovenzi What do you all think?

Works for me :)

After a second thought, should we set time zone as AoE instead?

I wasn't aware that this term exists :D I'm ok with that, I assume that few hours to here and there won't make a significant difference.

I learned this from the Python community, probably EuroPython. I find it very inclusive and it makes everyone's day easier, especially in a cross-timezone community. That's why I'm kinda a promoter of this idea haha

@potiuk

Copy link
Copy Markdown
Member

After a second thought, should we set time zone as AoE instead?

Nice :)

Comment: do we need the dates here at ALL ?

I think it will be enough if we just enable "freeze" in this commit and then "disable" it by a second commit after we unfroze it.

While the dates are nice from informational point of view (and we should leave them in in the messages, this one gives us extra flexibility - because we can unfreeze it deliberately rather than automatically

@potiuk

potiuk commented Sep 1, 2025

Copy link
Copy Markdown
Member

Another comment. Maybe a better way would be to add the mechanism to fail and unfreeze in selective checks. We already done that in the past and it has a few nice properties:

  1. It can fail FAST -> if selective checks check fails, no other job runs, the PR fails almost immediately
  2. we already have "changed files" built in and we can use it from there
  3. we can use "labels" to make exemptions ("allow to modify translations" for example) rather than commit "exemptions file". How it works (we do it already) - we need to set a specified label on the PR to skip the check for modified translations. So rather than finding out how to modify exemptions files,a committer has to deliberately set "allow to modify translations") to let the PR pass the selective checks.
  4. you can unit test is with test_selective_checks.py

It's also very easy to test:

breeze ci selective-checks --commit-ref <HASH> --pr-labels "label"`

We do it already a very similar way if suspended providers are affected:

https://github.com/apache/airflow/blob/main/dev/breeze/src/airflow_breeze/utils/selective_checks.py#L1376

Some pointers how we can do it:

@Lee-W

Lee-W commented Sep 1, 2025

Copy link
Copy Markdown
Member

sounds like a good idea 🤔

@shahar1

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, Jarek! As we discussed on Slack, converting it into a selective check would be a follow up :)

@shahar1
shahar1 merged commit 4579a38 into apache:mainSep 1, 2025
107 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-0-test. View the failure log Run details

StatusBranchResult
v3-0-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 4579a38 v3-0-test

This should apply the commit to the v3-0-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

potiuk added a commit to potiuk/airflow that referenced this pull request Sep 1, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
@potiuk

Copy link
Copy Markdown
Member

The simpler freeze here #55154

bggwak pushed a commit to bggwak/airflow that referenced this pull request Sep 2, 2025
* Implement default language (English) freeze pre-commit
* fix: fix missing import
* Add git diff
* Create freeze exemptions
* Change to AoE
---------
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 4, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit to potiuk/airflow that referenced this pull request Sep 6, 2025
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
potiuk added a commit that referenced this pull request Sep 6, 2025
This is follow-up after #55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
mangal-vairalkar pushed a commit to mangal-vairalkar/airflow that referenced this pull request Sep 7, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
RoyLee1224 added a commit to RoyLee1224/airflow that referenced this pull request Sep 8, 2025
)
This is follow-up after apache#55119 - implements the translation freeze
quite a bit simpler and faster:
* uses selective checks (fail fast)
* does not check the dates (we will set the flag to False when freeze
time passes
* you can bypass the freeze with a label rather than having to
commit exemption file
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@shahar1@Lee-W@potiuk