Simplify boolean comparisons - #2006
Merged
Merged
Conversation
`x is not True` and `x is not False` are negations; fcdb678 rewrote both as bare truthiness tests, flipping their sense. m21ToXml.noteToXml: `d.isGrace is not True` became `d.isGrace`, so <duration> was written only for grace notes -- where MusicXML forbids it -- and omitted from every ordinary note. All MusicXML output was invalid. recording.samplesFromRecording: `storeFile is not False` became `not storeFile`, so the wave file was written only when the caller asked for no file, and the `isinstance(storeFile, str)` filename branch became unreachable. Annotation widened to bool|str to match that branch; the function is `# pragma: no cover`, so nothing caught this. AI-assisted (Claude)
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.
Replaces
x is True/x is Falsecomparisons with plain truthiness tests across the codebase, plus a few incidental typing annotations and comment typo fixes.Two of the rewrites were sign flips —
is not Trueandis not Falseare negations, not truthiness tests — and are fixed in the second commit:m21ToXml.noteToXml:d.isGrace is not True→d.isGracemeant<duration>was written only for grace notes (where MusicXML forbids it) and omitted from every ordinary note, making all MusicXML output invalid. 13 tests caught this.recording.samplesFromRecording:storeFile is not False→not storeFilemeant the wave file was written only when the caller asked for no file. Not covered by tests (# pragma: no cover).Full suite passes (5298 tests),
ruff checkandmypyclean.AI-assisted (Claude)