Repository navigation
Fix Printer Properties crash for None option values - #481
Merged
Merged
Conversation
Member
|
Looks good for me. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Printer Properties can crash when a printer option has an IPP
no-valuedefault.pycupsconverts an IPPno-valueattribute to PythonNone. This value can then reachoptions.OptionWidget(), where numeric and string option handling assumes the value is convertible to the expected type.This can result in an uncaught
TypeErrorwhile opening Printer Properties.The issue is not specific to
job-cancel-after; it is a generic handling problem forNoneoption values returned by CUPS.Root Cause
The value flow is:
The existing conversion fallback handles
ValueError, butNonecausesTypeErrorbefore that fallback can be used.Fix
Normalize
Noneto the existing empty-value representation at the beginning ofOptionWidget().This allows existing option handling and fallback behavior to process unset values without changing the behavior of valid option values.
The change is intentionally minimal and does not modify the Printer Properties UI logic or CUPS handling.
Tests
Added regression tests covering:
Nonevalue with a numeric range.Nonevalue without supported values.Nonevalue with supported choices.Relevant tests pass, along with Python syntax checks and whitespace validation.
Scope
Only the following files are changed:
options.pytest_options.pyNo unrelated behavior or code paths are modified.