fix: improved toggle switch behavior in reports#3623
Conversation
📝 WalkthroughWalkthroughThe changes update diagnostic and UI initialization logic. In the conda deployment module, warning messages now include subprocess error output on environment creation failure. In the HTML report's React components, toggle controls now initialize from a specified default value and correctly reflect the current state, with minor code cleanup. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant AbstractResults
participant Toggle
User->>AbstractResults: Load results component
AbstractResults->>AbstractResults: getInitToggleState()
AbstractResults->>Toggle: Render with defaultValue=current toggle state
Toggle->>Toggle: Initialize state.value = props.defaultValue
Possibly related PRs
Suggested labels
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
src/snakemake/deployment/conda.py (1)
624-627: Consider downgrading noisy subprocess output to debug levelAppending the full
e.outputdirectly to a warning can flood regular logs with hundreds of lines.
A common pattern is to keep the concise warning and push the verbose output tologger.debug, or add it only when a--verboseflag is enabled.logger.warning( f"Failed to install conda environment from pin file ({self.pin_file.get_path_or_uri()}). " - f"Trying regular environment definition file.{advice}\n" - f"Error message:\n{e.output}" + f"Trying regular environment definition file.{advice}" ) +logger.debug("Pin-file installation error output:\n%s", e.output)This preserves valuable diagnostics without overwhelming standard logs.
src/snakemake/report/html_reporter/template/components/toggle.js (1)
6-6: Gracefully handle missingdefaultValueIf the caller forgets to pass
defaultValue, the component will render withundefined, breaking thecheckedcomparison below.
A single-line fallback keeps previous behaviour intact:- this.state = { value: this.props.defaultValue }; + this.state = { value: this.props.defaultValue ?? this.props.values[0] };src/snakemake/report/html_reporter/template/components/abstract_results.js (1)
70-73: Make the “yes” preference case-insensitive and null-safeRelying on
value[1] === "yes"fails when the array is shorter than two elements or the casing differs. A defensive tweak avoids surprises:- // Prefer "yes" as initial value if present, otherwise use the first value. - let initialValue = value[1] === "yes" ? value[1] : value[0]; + // Prefer a second value that equals (case-insensitive) "yes", fall back to first. + const second = (value[1] || "").toLowerCase(); + let initialValue = second === "yes" ? value[1] : value[0];
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
src/snakemake/deployment/conda.py(1 hunks)src/snakemake/report/html_reporter/template/components/abstract_results.js(1 hunks)src/snakemake/report/html_reporter/template/components/toggle.js(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.py`: Do not try to improve formatting. Do not suggest type annotations for functions that are defined inside of functions or methods. Do not suggest type annotation of the `s...
**/*.py: Do not try to improve formatting.
Do not suggest type annotations for functions that are defined inside of functions or methods.
Do not suggest type annotation of theselfargument of methods.
Do not suggest type annotation of theclsargument of classmethods.
Do not suggest return type annotation if a function or method does not contain areturnstatement.
src/snakemake/deployment/conda.py
🧬 Code Graph Analysis (1)
src/snakemake/report/html_reporter/template/components/abstract_results.js (1)
src/snakemake/report/html_reporter/template/components/common.js (1)
e(1-1)
⏰ Context from checks skipped due to timeout of 90000ms (34)
- GitHub Check: tests (5, windows-latest, py312)
- GitHub Check: tests (8, ubuntu-latest, py312)
- GitHub Check: tests (10, windows-latest, py312)
- GitHub Check: tests (8, windows-latest, py312)
- GitHub Check: tests (9, ubuntu-latest, py311)
- GitHub Check: tests (10, ubuntu-latest, py312)
- GitHub Check: tests (10, ubuntu-latest, py311)
- GitHub Check: tests (3, ubuntu-latest, py312)
- GitHub Check: tests (8, ubuntu-latest, py311)
- GitHub Check: tests (4, ubuntu-latest, py311)
- GitHub Check: tests (4, windows-latest, py312)
- GitHub Check: tests (9, macos-latest, py312)
- GitHub Check: tests (9, ubuntu-latest, py312)
- GitHub Check: tests (3, windows-latest, py312)
- GitHub Check: tests (7, windows-latest, py312)
- GitHub Check: tests (7, ubuntu-latest, py311)
- GitHub Check: tests (9, windows-latest, py312)
- GitHub Check: tests (7, ubuntu-latest, py312)
- GitHub Check: tests (5, ubuntu-latest, py311)
- GitHub Check: tests (6, windows-latest, py312)
- GitHub Check: tests (3, ubuntu-latest, py311)
- GitHub Check: tests (5, ubuntu-latest, py312)
- GitHub Check: tests (4, ubuntu-latest, py312)
- GitHub Check: tests (6, ubuntu-latest, py312)
- GitHub Check: tests (2, ubuntu-latest, py312)
- GitHub Check: tests (2, macos-latest, py312)
- GitHub Check: tests (2, windows-latest, py312)
- GitHub Check: tests (3, macos-latest, py312)
- GitHub Check: tests (2, ubuntu-latest, py311)
- GitHub Check: tests (6, ubuntu-latest, py311)
- GitHub Check: tests (1, windows-latest, py312)
- GitHub Check: tests (1, ubuntu-latest, py311)
- GitHub Check: tests (1, ubuntu-latest, py312)
- GitHub Check: apidocs
🔇 Additional comments (1)
src/snakemake/report/html_reporter/template/components/abstract_results.js (1)
79-88: LGTM – state now flows explicitly into the Toggle componentCapturing
toggleStateonce per render avoids repeatedthis.statelook-ups and makes the intent ofdefaultValueclear.
🤖 I have created a release *beep* *boop* --- ## [9.6.0](v9.5.1...v9.6.0) (2025-06-16) ### Features * Prefer papermill to nbconvert ([#2857](#2857)) ([4263b03](4263b03)) ### Bug Fixes * DeprecationWarning when using snakemake.utils.validate ([#3420](#3420)) ([cf72427](cf72427)) * display group jobs on dryrun ([#3435](#3435)) ([3bebef4](3bebef4)) * expandvars for special profile keys ([#3597](#3597)) ([4020188](4020188)) * fix bug causing --precommand to not being executed before each remote job ([#3625](#3625)) ([e59d125](e59d125)) * improved toggle switch behavior in reports ([#3623](#3623)) ([0c4bd23](0c4bd23)) * pass envvars defined via the envvars directive to remote jobs ([#3626](#3626)) ([d4890b4](d4890b4)) * remove wms arg, update logging cli docs ([#3622](#3622)) ([3a9a5ac](3a9a5ac)) * typo in CondaEnvDirSpec.__eq__ (issue [#3192](#3192)) ([#3613](#3613)) ([f4c107f](f4c107f)) * Unclear handling of params overriding with inheritance ([#3624](#3624)) ([077ac4a](077ac4a)) ### Documentation * Added snakemake command to execute the rule plot_with_python ([#3608](#3608)) ([bd99c11](bd99c11)) * Updated Reporting Section of The Tutorial(Interaction, Visualization, and Reporting with Snakemake) ([#3606](#3606)) ([91e90ba](91e90ba)) * Updated Requirement Section of The Tutorial With Warning of Not Installing The Tools Manually ([#3607](#3607)) ([3bd114b](3bd114b)) * Updated Wrapper Version in Tutorial and Used Simple Rule For Consistency & Ease ([#3605](#3605)) ([b3bcc21](b3bcc21)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
<!--Add a description of your PR here--> ### QC <!-- Make sure that you can tick the boxes below. --> * [x] The PR contains a test case for the changes or the changes are already covered by an existing test case. * [x] The documentation (`docs/`) is updated to reflect the changes or this is not necessary (e.g. if the change does neither modify the language nor the behavior or functionalities of Snakemake). <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Enhancements** - Improved warning messages when conda environment installation fails, now including detailed error output for easier troubleshooting. - Toggle controls in reports now initialize to "yes" when specified and more accurately reflect the current state. - **Improvements** - Toggle components now use a dedicated default value for initial state, ensuring consistency. - **Style** - Removed unnecessary debugging output from toggle controls. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
🤖 I have created a release *beep* *boop* --- ## [9.6.0](snakemake/snakemake@v9.5.1...v9.6.0) (2025-06-16) ### Features * Prefer papermill to nbconvert ([snakemake#2857](snakemake#2857)) ([4263b03](snakemake@4263b03)) ### Bug Fixes * DeprecationWarning when using snakemake.utils.validate ([snakemake#3420](snakemake#3420)) ([cf72427](snakemake@cf72427)) * display group jobs on dryrun ([snakemake#3435](snakemake#3435)) ([3bebef4](snakemake@3bebef4)) * expandvars for special profile keys ([snakemake#3597](snakemake#3597)) ([4020188](snakemake@4020188)) * fix bug causing --precommand to not being executed before each remote job ([snakemake#3625](snakemake#3625)) ([e59d125](snakemake@e59d125)) * improved toggle switch behavior in reports ([snakemake#3623](snakemake#3623)) ([0c4bd23](snakemake@0c4bd23)) * pass envvars defined via the envvars directive to remote jobs ([snakemake#3626](snakemake#3626)) ([d4890b4](snakemake@d4890b4)) * remove wms arg, update logging cli docs ([snakemake#3622](snakemake#3622)) ([3a9a5ac](snakemake@3a9a5ac)) * typo in CondaEnvDirSpec.__eq__ (issue [snakemake#3192](snakemake#3192)) ([snakemake#3613](snakemake#3613)) ([f4c107f](snakemake@f4c107f)) * Unclear handling of params overriding with inheritance ([snakemake#3624](snakemake#3624)) ([077ac4a](snakemake@077ac4a)) ### Documentation * Added snakemake command to execute the rule plot_with_python ([snakemake#3608](snakemake#3608)) ([bd99c11](snakemake@bd99c11)) * Updated Reporting Section of The Tutorial(Interaction, Visualization, and Reporting with Snakemake) ([snakemake#3606](snakemake#3606)) ([91e90ba](snakemake@91e90ba)) * Updated Requirement Section of The Tutorial With Warning of Not Installing The Tools Manually ([snakemake#3607](snakemake#3607)) ([3bd114b](snakemake@3bd114b)) * Updated Wrapper Version in Tutorial and Used Simple Rule For Consistency & Ease ([snakemake#3605](snakemake#3605)) ([b3bcc21](snakemake@b3bcc21)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
QC
docs/) is updated to reflect the changes or this is not necessary (e.g. if the change does neither modify the language nor the behavior or functionalities of Snakemake).Summary by CodeRabbit