Make create_memory_object_stream
generic
#495
Merged
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 supports annotating memory object streams with uninstantiable types that the current
item_type
hack currently does not work for, e.g.(See also the discussion around https://matrix.to/#/!JfFIjeKHlqEVmAsxYP:gitter.im/$sGb5WyohiQVFuiPdfb0GZ54h-CqN76sxeKKiCWovCdY?via=gitter.im&via=matrix.org)
@agronholm it turns out I was mistaken—due to a bug(?) in mypy, what I thought was a way to do this in a backwards compatible way isn't quite backwards compatible. While c93f3ec (note: not in this PR) is backwards-compatible at runtime (emitting a deprecation warning currently, but v3 could skip this) and backwards compatible in the sense that mypy will correctly infer types for e.g.
it would be a breaking change since it makes unannotated calls emit
on mypy. Note that mypy does infer a default item type of
Any
fors1
andr1
, but it still wants a type annotation. This is not affected by--allow-any-generic
or--disallow-any-generic
. It appears to be a known problem, see python/mypy#3737 (comment).Given that c93f3ec would produce spurious
var-annotated
on anyio 4 too, I think you are right that this has to be a breaking change in v4.