Skip to content

bpo-46414: Add typing.reveal_type - #30646

Merged
gvanrossum merged 6 commits into
python:mainfrom
JelleZijlstra:revealtype
Feb 2, 2022
Merged

bpo-46414: Add typing.reveal_type#30646
gvanrossum merged 6 commits into
python:mainfrom
JelleZijlstra:revealtype

Conversation

@JelleZijlstra

@JelleZijlstraJelleZijlstra commented Jan 17, 2022

Copy link
Copy Markdown
Member

Comment threadDoc/library/typing.rst Outdated
Comment threadLib/test/test_typing.py Outdated
Comment threadMisc/NEWS.d/next/Library/2022-01-17-10-00-02.bpo-46414.Ld0b_y.rst Outdated
@sobolevn

Copy link
Copy Markdown
Member

Thank you! This solves my old pain with redefining reveal_type as:

fromtypingimportTYPE_CHECKINGifnotTYPE_CHECKING:
reveal_type=print

@gvanrossum

Copy link
Copy Markdown
Member

Hold on. This feels awkward, since previously this was a builtin. I don’t want to have to import it.

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

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.

@gvanrossum

Copy link
Copy Markdown
Member

It needs more discussion. Please wait until I have a keyboard.

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

No hurry! I also opened a thread on typing-sig about this, that's probably the best place to discuss how it should work.

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

@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.

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

Wait, I didn't address Nikita's review yet.

@gvanrossum

Copy link
Copy Markdown
Member

Did we bikeshed yet whether it should write to stdout or stderr?

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

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.

@gvanrossum

Copy link
Copy Markdown
Member

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.

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

Pushed a change to make it write to stderr instead.

Comment threadDoc/library/typing.rst Outdated
Co-authored-by: Guido van Rossum <guido@python.org>
Comment threadLib/typing.py
sys.modules[re.__name__] = re


def reveal_type(obj: T, /) -> T:

Copy link
Copy Markdown
Member

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? 🤔

Copy link
Copy Markdown
MemberAuthor

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.

@AlexWaygoodAlexWaygoodJan 23, 2022

Copy link
Copy Markdown
Member

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:

defread(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 :)

@JelleZijlstra

Copy link
Copy Markdown
MemberAuthor

@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.

@gvanrossumgvanrossum left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@bedevere-bot

Copy link
Copy Markdown

@gvanrossum: Please replace # with GH- in the commit message next time. Thanks!

@gvanrossum

Copy link
Copy Markdown
Member

Should probably post the resolution to typing-sig.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@JelleZijlstra@sobolevn@gvanrossum@bedevere-bot@AlexWaygood@the-knights-who-say-ni@Fidget-Spinner