bpo-46066: Deprecate kwargs syntax for TypedDict definitions by 97littleleaf11 · Pull Request #31126 · python/cpython (original) (raw)

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 andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation46 Commits11 Checks0 Files changed

Conversation

This 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

[ Show hidden characters]({{ revealButtonHref }})

97littleleaf11

@97littleleaf11

@the-knights-who-say-ni

This comment was marked as resolved.

@AlexWaygood

Surely this is a breaking change — even if type-checkers only understand the literal-dict assignment-based syntax, I'm not sure we can change the runtime behaviour like this without a deprecation period.

@97littleleaf11

Yeah, it changes the typing module. However I seldom see this syntax in real-world projects since we already have class based one.

@97littleleaf11

I am not really familiar with the cpython developing period. It's not a big deal since neither mypy nor other widely-used type checkers implement this feature and I barely see this syntax in real world projects.

@AlexWaygood

Yeah, it changes the typing module. However I seldom see this syntax in real-world projects since we already have class based one.

I appreciate that — but given that this is a change to the stdlib, I think the standard deprecation policy probably still applies :)

@97littleleaf11

@AlexWaygood

For now, I think I would:

Here's an example of a previous PR deprecating features, that you could look to as an example: #23064

@97littleleaf11

JelleZijlstra

@97littleleaf11

AlexWaygood

@97littleleaf11 @AlexWaygood

Co-authored-by: AlexWaygood Alex.Waygood@Gmail.com

@97littleleaf11

@97littleleaf11 97littleleaf11 changed the titlebpo-46066: Remove kwargs syntax for TypedDict definition bpo-46066: Deprecate kwargs syntax for TypedDict definitions

Feb 8, 2022

AlexWaygood

@@ -1976,6 +1976,7 @@ Masayuki Yamamoto
Ka-Ping Yee
Chi Hsuan Yen
Jason Yeo
Jingchen Ye

Choose a reason for hiding this comment

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

It feels absurd to bring this up (sorry!!), but: I think "Jingchen Ye" should go before "Ka-Ping Yee", if we're keeping this list alphabetised.

@AlexWaygood

Also, it looks like there's some trailing whitespace in some of the documentation changes you've made, which is making the documentation-related tests fail -- could you possibly fix those issues?

@97littleleaf11

@97littleleaf11

@AlexWaygood Thanks for your reviews! btw, it seems that CI reports wrong line number about the trailing whitespace.

@AlexWaygood

@AlexWaygood Thanks for your reviews!

No worries, it's a good PR!

btw, it seems that CI reports wrong line number about the trailing whitespace.

Huh — no idea what might be causing that :)

AlexWaygood

Choose a reason for hiding this comment

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

LGTM

@97littleleaf11

@AlexWaygood

As this is a deprecation of an existing feature, I think it probably warrants a mention in "What's New in Python 3.11". I think @JelleZijlstra is planning on doing a PR for that document mentioning a bunch of recent changes to typing, though, so perhaps he'll be kind enough to include a mention of this as well :)

JelleZijlstra

@AlexWaygood

@gvanrossum, could we possibly get the full test suite run on this PR, please? :)

gvanrossum

Choose a reason for hiding this comment

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

I can't stand "firstly" and "secondly" for some reason. :-(

@97littleleaf11

I can't stand "firstly" and "secondly" for some reason. :-(

How about "The first one" and "The other one"?

@arhadthedev

How about "The first one" and "The other one"?

Probably, a bullet list will be better. Like this:

[...] syntactic forms:

Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})  
Point2D = TypedDict('Point2D', x=int, y=int, label=str)  

JelleZijlstra

Choose a reason for hiding this comment

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

Here's a concrete wording suggestion that avoids "Firstly" and "Secondly"

Comment on lines 1391 to 1393

support :pep:`526`, ``TypedDict`` supports two additional equivalent
syntactic forms::
syntactic forms. Firstly, using a literal :class:`dict` as the
second argument::

Choose a reason for hiding this comment

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

Choose a reason for hiding this comment

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

Thanks for this!

Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})
Secondly, using keyword arguments::

Choose a reason for hiding this comment

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

Secondly, using keyword arguments::
Keyword arguments may also be used::

@gvanrossum

I was just hoping to see “first“ and “second”. No “ly” needed, these are flat adverbs.

@97littleleaf11

@97littleleaf11

AlexWaygood

@97littleleaf11

@gvanrossum

In a few days Jelle can likely merge this himself. :-)

AlexWaygood

@97littleleaf11

AlexWaygood

gvanrossum

@gvanrossum

@AlexWaygood