Conversation
77c8944 to
b7f8077
Compare
107fbaf to
be31b19
Compare
- 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
be31b19 to
1480aee
Compare
| * ``re.Pattern`` # typing.Pattern, typing.re.Pattern | ||
| * ``re.Match`` # typing.Match, typing.re.Match | ||
| * ``io.IO`` # typing.IO, typing.io.IO | ||
|
|
There was a problem hiding this comment.
I believe there are still other containers that should be made generic like queue.*Queue, should the PEP enumerate all of them?
There was a problem hiding this comment.
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.
pep-0585.rst
Outdated
| * ``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 |
There was a problem hiding this comment.
Oh also we decided this isn't similar to typing.IO, right?
There was a problem hiding this comment.
Oh, yeah. I'll scratch this line. (Now I'm wondering if perhaps we shouldn't have messed with IOBase in the code branch?)
There was a problem hiding this comment.
Yeah I doubt people will have io.IOBase imported anyway, I'll make a PR to roll that back.
There was a problem hiding this comment.
OK, that makes sense. io.IOBase is not generic in typeshed. I just goofed up here.
* 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
__parameters__to__args__, for typing.py compatibilityand io.IO__parameters__that contains the unique type vars in__args__(also for typing.py compatibility)