Skip to content

PEP 612 (Parameter Specification variables) tracker #4827

Description

@srittau

This issue is supposed to track when we can start to use parameter specification variables (PEP 612) in typeshed. Support is needed in released versions of:

Activity

  1. srittau commented on Dec 16, 2020

    @srittau
    CollaboratorAuthor

    @mrkmndz I assume pyre already supports these?

  2. mrkmndz commented on Dec 16, 2020

    @mrkmndz
    Contributor

    Yup!

  3. erictraut commented on Jan 4, 2021

    @erictraut
    Contributor

    Pyright has had full support for PEP 612 for a long time now.

  4. srittau commented on Jan 6, 2021

    @srittau
    CollaboratorAuthor

    @rchen152 Does pytype support PEP 612? If not, would you mind me creating a ticket that we can reference from here?

  5. rchen152 commented on Jan 7, 2021

    @rchen152
    Collaborator

    pytype does not yet support this. I opened google/pytype#786.

  6. srittau commented on Jan 25, 2021

    @srittau
    CollaboratorAuthor
  7. sproshev commented on Jan 25, 2021

    @sproshev
    Contributor

    Not yet planned :( Will post updates here.

  8. sproshev commented on Mar 31, 2021

    @sproshev
    Contributor
  9. erictraut commented on Jun 13, 2021

    @erictraut
    Contributor

    Is there any update on this issue? Has anyone started to work on the support in mypy? Pytype?

    I'm aware that full support for PEP 612 is not easy to implement, but perhaps some minimal support could be added that simply treats all ParamSpecs as Any? That would allow us to start using ParamSpec and Concatenate within typeshed without regressing the behavior for mypy users. This minimal support apparently was already implemented in pytype. It looks like @hauntsaninja made some progress on support in mypy in this PR, but there hasn't been any update in this tracking issue since Jan 2020.

    Maybe we need to think about ways to support declarations that are conditioned on support for specific type checking features. Perhaps something like a _typing_features.pyi file that defines symbols like __PEP612__. Type checkers that support specific features could assume these symbols are True and use the type declarations that take advantage of these features. Type checkers that don't support the feature would assume False and fall back on alternate declarations that don't use these features.

  10. JelleZijlstra commented on Jun 13, 2021

    @JelleZijlstra
    Member

    I think work on mypy support has stalled.

    Another, more forceful, approach could be that we simply start using them in typeshed (perhaps with a liberal sprinkling of type ignores). It would then be individual type checkers' responsibilities to add support for new features, and the ecosystem can move forward without having to wait for the slowest type checker to update itself. We could start doing this say six months or a year after a PEP has been accepted.

  11. srittau commented on Jun 14, 2021

    @srittau
    CollaboratorAuthor

    Could we just cheat and derive ParamSpec from Any in typing_extensions, until type checkers add support? That said, I'm also fine to just start using ParamSpec and use # type: ignore. Maybe we could have a draft PR that implements ParamSpec in a file where it's useful to judge the fallout?

    But in general I agree that we should be more aggressive about adding features, so as not to hold more up-to-date type checkers back.

  12. JelleZijlstra commented on Jun 14, 2021

    @JelleZijlstra
    Member

    Maybe we could have a draft PR that implements ParamSpec in a file where it's useful to judge the fallout?

    #5476

  13. srittau commented on Jun 14, 2021

    @srittau
    CollaboratorAuthor

    ParamSpec can now be used in argument and return type positions, although # type: ignore is necessary. It's still untested whether it works as part of a Generic class.

  14. srittau commented on Jun 28, 2021

    @srittau
    CollaboratorAuthor

    mypy still seems to have problems with Concatenate in Callable, see #5682.

  15. AlexWaygood commented on Dec 2, 2021

    @AlexWaygood
    Member

    According to this and this, it seems PyCharm now supports ParamSpec 🎉

  16. lancelote commented on Dec 2, 2021

    @lancelote
    Contributor

    Yeap, though there are some issues and limitations in PyCharm ParamSpec support atm. I organized the known problems in this meta ticket PY-51766. Feel free to report anything I've missed.

  17. srittau commented on Dec 22, 2021

    @srittau
    CollaboratorAuthor

    Now partly supported by mypy, no support for Concatenate yet.

  18. srittau commented on Dec 23, 2021

    @srittau
    CollaboratorAuthor

    I checkmarked pytype. While it doesn't support ParamSpec per se, it accepts it.

  19. srittau commented on May 21, 2022

    @srittau
    CollaboratorAuthor

    I think we can now use ParamSpec without limitations in typeshed.

  20. AlexWaygood commented on May 21, 2022

    @AlexWaygood
    Member

    I think we can now use ParamSpec without limitations in typeshed.

    There's still a mypy bug I'm waiting on: #7689 (comment). I'll add it to the tracker.

  21. mavidser commented on May 24, 2022

    @mavidser
  22. AlexWaygood commented on Feb 12, 2023

    @AlexWaygood
    Member

    I think we can now use ParamSpec without limitations in typeshed.

    There's still a mypy bug I'm waiting on: #7689 (comment). I'll add it to the tracker.

    The mypy issue has now been closed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    project: feature trackerTracks whether a typing feature can be used in typeshed stubs

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions