Skip to content

question: how to type compatibility-only args / kwargs? #1168

Open
@MarcoGorelli

Description

@MarcoGorelli

I'm trying to use pyright --verifytypes to check which public methods are untyped, and a lot of the results come from kwargs and args.

There seem to be 3 cases for them:

  1. they're undocumented, and just silently exist to allow for numpy-compatible code. For example: Series.std
  2. they get passed down to a third-party function. For example: most plotting funtions
  3. when they get passed to other pandas functions which have known args/kwargs. For example, the kwargs in Series.pct_change.

How should kwargs and args get typed in these cases? I'm thinking:
1., 2.: use Any
3.: make a Protocol with only the args/kwargs which can be accepted

I think if we can get these typed (even if just with Any) then pyright's verifytypes should become a lot more useful to identify missing parts of the public API surface

repo where I'm developing this type-coverage-measurement functionality: https://github.com/MarcoGorelli/measuring-pandas-type-completeness (note: it's currently quite patchy, but I've already found it useful to decide what to focus on)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions