ENH: Add a typing protocol for representing nested sequences #19894
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.
This PR introduces a protocol representing a recursive version of
collections.abc.Sequence
(going up to arbitrary levels of nesting), thus allowing for the replacement of the older, more verbose union, the latter of which went to 4 levels of nesting.The last time it was attempted to introduce such a protocol (#18155 (comment)) there were still a couple of detrimental mypy bugs related recursive objects, thus preventing its introduction. Fortunately, most of these issues were fixed in python/mypy#9663, though recursive objects in combinations typevars seems to be a combination that's still broken (see below).
Examples