-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bpo-46414: Add typing.reveal_type #30646
Conversation
Part of the documentation was taken from mypy: https://mypy.readthedocs.io/en/stable/common_issues.html#reveal-type
Misc/NEWS.d/next/Library/2022-01-17-10-00-02.bpo-46414.Ld0b_y.rst
Outdated
Show resolved
Hide resolved
Thank you! This solves my old pain with redefining from typing import TYPE_CHECKING
if not TYPE_CHECKING:
reveal_type = print |
Co-authored-by: Nikita Sobolev <[email protected]>
Hold on. This feels awkward, since previously this was a builtin. I don’t want to have to import it. |
Type checkers would still allow using it without the import. You'll have the option to import it if you want to run your code or document to readers what |
It needs more discussion. Please wait until I have a keyboard. |
No hurry! I also opened a thread on typing-sig about this, that's probably the best place to discuss how it should work. |
@gvanrossum based on the discussion on typing-sig, are you satisfied with this change now? I'm planning to also add |
Wait, I didn't address Nikita's review yet. |
Did we bikeshed yet whether it should write to stdout or stderr? |
No, though there have been some suggestions about the output format; I just sent a typing-sig email about that too. Personally I don't care much but I'd like to keep it simple. |
I'm just thinking that sending the output to stderr would be more in line with the debug nature of the API. |
Pushed a change to make it write to stderr instead. |
Co-authored-by: Guido van Rossum <[email protected]>
@@ -2667,3 +2668,23 @@ class re(metaclass=_DeprecatedType): | |||
|
|||
re.__name__ = __name__ + '.re' | |||
sys.modules[re.__name__] = re | |||
|
|||
|
|||
def reveal_type(obj: T, /) -> T: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we use type hints in typing.py
? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this is merged, we will :). I don't see any reason not to, especially in cases like this where the type is simple and helps document the behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are type annotations in a few lines of typing.py
:
Line 2531 in 270a091
def read(self, n: int = -1) -> AnyStr: |
It's just about the only module in the stdlib in which I've spotted any type annotations other than importlib :)
@gvanrossum do you think this is ready to merge now? The discussion on typing-sig has died down. (You added the "Do not merge" label a while ago.) I think the other new function PRs are also ready, but I can ping you on those later. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
@gvanrossum: Please replace |
Should probably post the resolution to typing-sig. |
Part of the documentation was taken from mypy:
https://mypy.readthedocs.io/en/stable/common_issues.html#reveal-type
https://bugs.python.org/issue46414