Skip to content
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

PEP 585: updates green-lighted by Lukasz #1289

Merged
merged 4 commits into from
Feb 6, 2020
Merged

PEP 585: updates green-lighted by Lukasz #1289

merged 4 commits into from
Feb 6, 2020

Conversation

gvanrossum
Copy link
Member

@gvanrossum gvanrossum commented Jan 30, 2020

  • Rename __parameters__ to __args__, for typing.py compatibility
  • Genericize, re.{Pattern,Match} and io.IO
  • list != list[int], but list[int] == list[int] (and list[str] != list[int])
  • Add a lazy __parameters__ that contains the unique type vars in __args__ (also for typing.py compatibility)
  • make dict[str][str] fail, but dict[T, str][int] return dict[int, str]
  • expose proxy type as types.GenericAlias
  • pickle and copy should work
  • link to implementation

- Rename __parameters__ to __args__, for typing.py compatibility
- Genericize, re.{Pattern,Match} and io.IO
- list != list[int], but list[int] == list[int] (and list[str] != list[int])
- Add a lazy __parameters__ that contains the unique type vars in __args__ (also for typing.py compatibility)
- make dict[str][str] fail, but dict[T, str][int] return dict[int, str]
- expose proxy type as types.GenericAlias
@@ -112,6 +112,9 @@ Python 3.9, the following collections become generic using
* ``collections.abc.ValuesView``
* ``contextlib.AbstractContextManager`` # typing.ContextManager
* ``contextlib.AbstractAsyncContextManager`` # typing.AsyncContextManager
* ``re.Pattern`` # typing.Pattern, typing.re.Pattern
* ``re.Match`` # typing.Match, typing.re.Match
* ``io.IO`` # typing.IO, typing.io.IO

Copy link
Contributor

Choose a reason for hiding this comment

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

I believe there are still other containers that should be made generic like queue.*Queue, should the PEP enumerate all of them?

Copy link
Member Author

Choose a reason for hiding this comment

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

Honestly I think the PEP should stick to things that are currently shadowed in typing.py. Once we have GenericAlias it's easy enough to make other classes generic.

Copy link
Contributor

Choose a reason for hiding this comment

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

Okay sounds good!

pep-0585.rst Outdated
@@ -112,6 +112,9 @@ Python 3.9, the following collections become generic using
* ``collections.abc.ValuesView``
* ``contextlib.AbstractContextManager`` # typing.ContextManager
* ``contextlib.AbstractAsyncContextManager`` # typing.AsyncContextManager
* ``re.Pattern`` # typing.Pattern, typing.re.Pattern
* ``re.Match`` # typing.Match, typing.re.Match
* ``io.IO`` # typing.IO, typing.io.IO
Copy link
Contributor

Choose a reason for hiding this comment

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

Oh also we decided this isn't similar to typing.IO, right?

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh, yeah. I'll scratch this line. (Now I'm wondering if perhaps we shouldn't have messed with IOBase in the code branch?)

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah I doubt people will have io.IOBase imported anyway, I'll make a PR to roll that back.

Copy link
Member Author

Choose a reason for hiding this comment

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

OK, that makes sense. io.IOBase is not generic in typeshed. I just goofed up here.

@ambv ambv merged commit 7f402ae into master Feb 6, 2020
@ambv ambv deleted the pep585-update branch February 6, 2020 16:37
mnm678 pushed a commit to mnm678/peps that referenced this pull request Oct 22, 2020
* Rename __parameters__ to __args__, for typing.py compatibility
* Genericize, re.{Pattern,Match} and io.IO
* list != list[int], but list[int] == list[int] (and list[str] != list[int])
* Add a lazy __parameters__ that contains the unique type vars in __args__ (also for typing.py compatibility)
* make dict[str][str] fail, but dict[T, str][int] return dict[int, str]
* expose proxy type as types.GenericAlias
* Link to implementation
* Explicitly state that pickling or copying should work
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants