') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Bugfix/remove global from breeze by jscheffl · Pull Request #58866 · apache/airflow · GitHub
Skip to content

Bugfix/remove global from breeze - #58866

Merged
potiuk merged 3 commits into
apache:mainfrom
jscheffl:bugfix/remove-global-from-breeze
Nov 30, 2025
Merged

Bugfix/remove global from breeze#58866
potiuk merged 3 commits into
apache:mainfrom
jscheffl:bugfix/remove-global-from-breeze

Conversation

@jscheffl

Copy link
Copy Markdown
Contributor

Another small increment to remove global statements for PR #58116

This removes all leftover global statements in breeze. In most cases global was mis-used for some minor flags.

global is evil. Also in breeze :-D

@amoghrajeshamoghrajesh left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jscheffl I think this one can be done much cleaner using function attributes: https://www.pythonmorsels.com/storing-attributes-on-functions-in-python/

@jscheffl
jschefflforce-pushed the bugfix/remove-global-from-breeze branch from d80adca to 46ff0beCompareNovember 30, 2025 14:01
@jscheffl

Copy link
Copy Markdown
ContributorAuthor

@jscheffl I think this one can be done much cleaner using function attributes: https://www.pythonmorsels.com/storing-attributes-on-functions-in-python/

Okay, good idea. At least for "ci_group" made this as feedback. For the others I think it is not making it better.

Unfortunately the ci_group is wrapped by @contextmanager and my pylint did not accepted setting attributes so made it via setattr+getattr.

WDYT?

@potiuk

Copy link
Copy Markdown
Member

Looks great! we can improve it in the future if we find a better way.

@potiuk
potiuk merged commit fc70635 into apache:mainNov 30, 2025
224 of 225 checks passed
github-actionsBot pushed a commit that referenced this pull request Nov 30, 2025
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
(cherry picked from commit fc70635)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

potiuk pushed a commit that referenced this pull request Nov 30, 2025
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
(cherry picked from commit fc70635)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Comment on lines -54 to +51
global _in_ci_group
if _in_ci_group or skip_group_output():
if getattr(ci_group, "__in_ci_group__", False) or skip_group_output():

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect @jscheffl! This is what I was suggesting

ephraimbuddy pushed a commit that referenced this pull request Dec 3, 2025
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
(cherry picked from commit fc70635)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
RoyLee1224 pushed a commit to RoyLee1224/airflow that referenced this pull request Dec 3, 2025
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
CopilotAI pushed a commit to jason810496/airflow that referenced this pull request Dec 5, 2025
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
itayweb pushed a commit to itayweb/airflow that referenced this pull request Dec 6, 2025
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Remove global from breeze modules
* Remove global from breeze modules
* Review feedback, use function attributes
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

@jscheffl@potiuk@amoghrajesh