Typing tree.spans / tighten constructors#1960
Merged
Merged
Conversation
Annotate every signature in spans.py and remove the None-stripping casts by making the underlying types honest: - Timespan offset/endTime are required OffsetQL (no None, no -inf/inf defaults). - ElementTimespan requires an element (base.Music21Object); PitchedTimespan narrows element to note.GeneralNote so .pitches needs no cast. - parentage defaults to () (non-Optional). - Reorder ElementTimespan/PitchedTimespan __init__ and new() to match the parent Timespan(offset, endTime): (offset, endTime, element, *, parentOffset=None, parentEndTime=None, parentage=()); new() is keyword-only, removing the prior LSP # type: ignore[override]. - Three spans.py doctests updated to the new positional order; no construction outside music21/tree/ was affected. * Changed in v11: order of arguments matches parent class. (ElementTimespan, PitchedTimespan) mypy/ruff/pylint(10.00)/pytest all green. First module of the tree typing prerequisite (2A) of the Verticality plan. 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.
Preparing to use tree.verticality more, we need better typing for tree.spans.TimeSpan and its derived classes, ElementTimespan and PitchedTimespan.
AI-assisted (Claude).