GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — [mypyc] Support iterating over a TypedDict by ichard26 · Pull Request #14747 · python/mypy

Conversation

@ichard26

@ichard26 ichard26 commented Feb 20, 2023

Copy link
Copy Markdown
Collaborator

An optimization to make iterating over dict.keys(), dict.values() and dict.items() faster caused mypyc to crash while compiling a TypedDict. This commit fixes Builder.get_dict_base_type to properly handle TypedDictType.

Fixes mypyc/mypyc#869.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ichard26
[mypyc] Support iterating over a TypedDict
cea9c54
An optimization to make iterating over dict.keys(), dict.values() and
dict.items() faster caused mypyc to crash while compiling a TypedDict.
This commit fixes `Builder.get_dict_base_type` to properly handle
TypedDictType.
JukkaL
JukkaL reviewed Feb 21, 2023
View reviewed changes
Comment thread test-data/unit/lib-stub/typing_extensions.pyi Outdated
def update(self: _T, __m: _T) -> None: ...
def items(self) -> dict_items[str, object]: ...
def keys(self) -> dict_keys[str, object]: ...
def values(self) -> dict_values[str, object]: ...

@JukkaL JukkaL Feb 21, 2023

Copy link
Copy Markdown
Collaborator

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.

The return types aren't imported anywhere. For some reason we don't generate errors even though these are undefined. Maybe we are ignoring errors in test stubs?

You should be able to use a less specific type. These are adapted from mypyc test stubs:

    def keys(self) -> Iterable[str]: pass
    def values(self) -> Iterable[object]: pass
    def items(self) -> Iterable[Tuple[str, object]]: pass

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@ichard26 ichard26 Feb 23, 2023

Copy link
Copy Markdown
Collaborator Author

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.

Ah, good catch! And yeah I have no idea what's up with the lack of errors. I opened an issue to note that we should investigate this later: mypyc/mypyc#976.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ichard26 ichard26 mentioned this pull request Feb 23, 2023
Referencing missing generic types in stubs doesn't generate errors mypyc/mypyc#976
Open
@ichard26
Use less specific return types in typing_extensions stub
c5fe32b
@ichard26
ichard26 requested a review from JukkaL February 23, 2023 20:26
JukkaL
JukkaL reviewed Feb 24, 2023
View reviewed changes
Comment thread test-data/unit/lib-stub/typing_extensions.pyi Outdated
def pop(self, k: NoReturn, default: _T = ...) -> object: ...
def update(self: _T, __m: _T) -> None: ...
def items(self) -> Iterable[str, object]: ...
def keys(self) -> Iterable[str, object]: ...

@JukkaL JukkaL Feb 24, 2023

Copy link
Copy Markdown
Collaborator

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.

The return types are still invalid. It seems quite important to report errors in test stubs, as otherwise tests might not be testing what we expect them to.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
ichard26 added 2 commits March 3, 2023 20:17
@ichard26
Actually fix the stubs
ab1a358
@ichard26
Update the irbuild test, ugh
c55c24d
JukkaL
JukkaL reviewed Mar 14, 2023
View reviewed changes

@JukkaL JukkaL left a comment

Copy link
Copy Markdown
Collaborator

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.

This looks good now! Could you also add a run test? The generated IR is pretty complex so it's a bit tricky to validate that it works right.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ichard26
Add run test
85e46ab
JukkaL
JukkaL approved these changes Mar 20, 2023
View reviewed changes

@JukkaL JukkaL left a comment

Copy link
Copy Markdown
Collaborator

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.

Thanks for the updates! Looks good.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@JukkaL
JukkaL merged commit 9944d5f into python:master Mar 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@JukkaL JukkaL JukkaL approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Using TypedDict in function triggers AssertionError during compilation

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@ichard26 @JukkaL
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.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.