bpo-46414: Add typing.reveal_type by JelleZijlstra · Pull Request #30646 · python/cpython
Thank you! This solves my old pain with redefining reveal_type as:
from typing import TYPE_CHECKING if not TYPE_CHECKING: reveal_type = print
Hold on. This feels awkward, since previously this was a builtin. I don’t want to have to import it.
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 reveal_type() means.
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 reveal_locals() in a separate PR.
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.
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.
| sys.modules[re.__name__] = re | ||
|
|
||
|
|
||
| def reveal_type(obj: T, /) -> T: |
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? 🤔
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.
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:
| 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
@gvanrossum: Please replace # with GH- in the commit message next time. Thanks!
This was referenced
Feb 3, 2022This 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