Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter
, '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

Drop vmin/vmax kwargs across all render functions - #652

Merged
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax
May 8, 2026
Merged

Drop vmin/vmax kwargs across all render functions#652
timtreis merged 2 commits into
mainfrom
fix/issue-612-remove-vmin-vmax

Conversation

@timtreis

@timtreistimtreis commented May 8, 2026

Copy link
Copy Markdown
Member

Closes#612.

Summary

  • The vmin/vmax deprecation guard (added in Fix clims when plotting shapes element annotations with matplotlib rendering #368, Oct 2024) lived in render_shapes, render_points, and render_labels and relied on **kwargs. render_images has a closed signature, so the same call crashed with TypeError: got an unexpected keyword argument 'vmin' on that one function only.
  • Resolves the asymmetry by removing support rather than adding **kwargs to render_images. The deprecation has been in place for over a year; users should migrate to norm=Normalize(vmin=..., vmax=...).
  • Promotes the two parameters that were actually being smuggled through **kwargs (datashader_reduction, transfunc) to explicit keyword-only params with proper docstrings. Behaviour unchanged; ergonomics improved (autocomplete, type checking).

After this PR, all four render_* functions reject vmin/vmax (and any other unsupported kwarg) with a uniform TypeError from Python.

Breaking changes

  • vmin= / vmax= are no longer accepted on any render_* function. Migration: norm=matplotlib.colors.Normalize(vmin=..., vmax=...).
  • Typo'd kwargs that were previously silently swallowed by **kwargs (e.g. color_map=...) now raise TypeError. This is the intended outcome of closing the signatures.

Removes the long-standing vmin/vmax deprecation guard from render_shapes,
render_points, and render_labels (deprecated since #368, Oct 2024). The
guard relied on **kwargs and never existed on render_images, so the same
call worked on three functions and crashed with TypeError on the fourth.
Resolves the asymmetry by dropping support entirely rather than adding
**kwargs to render_images. The two parameters previously smuggled through
**kwargs (datashader_reduction, transfunc) are now explicit keyword-only
params with proper docstrings. After this, all four render functions
reject vmin/vmax (and any other unsupported kwarg) with a uniform
TypeError. Users migrate to norm=Normalize(vmin=..., vmax=...).
These calls passed `table=` to `render_labels`, which has no such
parameter (it's `table_name=`). Previously silently swallowed by
`**kwargs`; surfaced as a TypeError after the signature was closed.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (27728a1) to head (a4b67ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #652 +/- ##
==========================================
+ Coverage 76.86% 77.07% +0.20% 
==========================================
Files 11 11 Lines 3277 3276 -1 Branches 774 772 -2 ==========================================
+ Hits 2519 2525 +6 + Misses 457 453 -4 + Partials 301 298 -3 
Files with missing linesCoverage Δ
src/spatialdata_plot/pl/basic.py86.37% <100.00%> (+0.96%)⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@timtreis
timtreis merged commit 29b1cc1 into mainMay 8, 2026
7 of 8 checks passed
@timtreis
timtreis deleted the fix/issue-612-remove-vmin-vmax branch May 8, 2026 18:02
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.

vmin/vmax deprecated kwargs work on 3 render functions but crash on render_images

2 participants

@timtreis@codecov-commenter