pep612: add semanal for paramspec#9339
Conversation
This allows checkexpr to recognise the call to typing.ParamSpec as producing a special form
JukkaL
left a comment
There was a problem hiding this comment.
Thanks! Looks good, just left a few minor comments. Feel free to merge without waiting for another review round.
(Feel free to ping me on Gitter or send an email if you have a new PR up -- I want to prioritize reviewing PEP 612 related PRs, since this is an important new feature.)
mypy/semanal.py
Outdated
|
|
||
| In the future, ParamSpec may accept bounds and variance arguments, in which | ||
| case more aggressive sharing of code with process_typevar_declaration should be pursued. | ||
|
|
There was a problem hiding this comment.
Nit: redundant empty line at the end of docstring.
|
|
||
| TParams = ParamSpec('TParams') | ||
| TP = ParamSpec('?') # E: String argument 1 '?' to ParamSpec(...) does not match variable name 'TP' | ||
| TP2: int = ParamSpec('TP2') # E: Cannot declare the type of a parameter specification |
There was a problem hiding this comment.
Optionally, you can add a test case to test-data/unit/semanal-symtable.test and/or test-data/unit/semanal-types.test (these are not super high signal test cases, but on the other hand they don't require a lot of maintenance).
|
Thanks, made the changes. Had to add two visitors to get the test working. Also got around to recognising |
eba44b4 to
7b9a052
Compare
Linking #8645 Like #9339, much of this is in #9250. However, this PR is a little less self contained, in that it causes several future TODOs. A lot of the changes here are necessitated by changing the type of CallableType.variables to Sequence[TypeVarLikeDef]. This is nice, because it informs me where I need to make changes in the future / integrates a little bit better with existing type var stuff.
Linking #8645
Taking Jukka's suggestion from #9250 and splitting up the PR so we can merge and review a piece at a time. If you've read what's been pushed to #9250, this is the first bit of it, except I've changed mypy_extensions to typing_extensions since PEP 612 has been accepted.