Add typing for context managers and methods returning Self
in non-generated python code
#2674
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 is a smaller, conservative PR that doesn't step on the toes of #2668.
It adds a return type annotation for
typing.Self
, introduced in Python 3.11, or coming fromtyping_extensions
otherwise. https://typing-extensions.readthedocs.io/en/latest/#typing_extensions.Selfhttps://docs.python.org/3/library/typing.html#typing.Self
It is for non-generated files.
I did an attempt to generate it for all the context managers via the etg scripts, but while it worked, it imported multiple times the
Self
throughout the files (the runtime ones, not only pyi), as I only found how to usec.addPyCode()
, which isn't exactly appropriate to define an import that should be deduplicated and placed at top. Maybe SIP has a more specialized directive for that that would allow deduplicating these imports when combining different files together. So I simply did not include it yet.Something like this, where the imports are not deduplicated, and can appear multiple times: